Tuesday, February 25, 2025
11 changes · 18.0
Enhancements to existing features
Point of Sale customer displays connected through an IoT Box are now configured directly when selecting the display, removing extra settings steps. The customer display can also open automatically on the IoT Box when Point of Sale starts, while the separate customer display setting remains available for using an additional window.
Original PR description
To configure the RPI display as customer display we needed: **Before this commit:** - Go to configuration, - Check "IoT Box" checkbox, - Select a display, - Go to "Configuration -> Settings", - Scroll until "Customer Display" then select "An IoT-connected system. **After this commit:** - Go to configuration, - Check "IoT Box" checkbox, - Select a display. **Note:** the "Customer Display" setting is now only used for a second display. That means that customer display can now be opened on both an IoT Display and a new window. The Customer Display now also opens automatically on the IoT Box display while opening PoS. Task: 4585446
Resolved issues and error corrections
This fixes an issue where some account records were missing from search results when their companies were not among the user's accessible companies, even with elevated access. Searches now keep those accounts visible where appropriate, reducing the risk of incomplete account lists and related reporting gaps.
Original PR description
Bug: At the moment, searching on `account.account` does not return accounts whose `company_ids` does not contain any of the companies accessible to the current user, even in sudo mode. Diagnosis: The default `_order` on `account.account` includes `placeholder_code`. When we call `_field_to_sql` for `placeholder_code`, we do a JOIN, which excludes any accounts for which a value could not be computed on `placeholder_code`. These are the accounts that are not accessible to the current user. Solution: We change `_field_to_sql` for `placeholder_code` to perform a LEFT JOIN rather than a JOIN on the first account company accessible to the user. If none of the account's companies are accessible to the user, `placeholder_code` will simply be NULL. We add tests that check this behaviour and ensure that no accounts are excluded from a `search` in `sudo` mode. opw-4393854
Invoice PDFs with multi-line legal notes now render those notes without covering the payment total section when the notes start on a new page. This improves readability and prevents confusion in customer invoice documents.
Original PR description
Behaviour Before the Commit: When an invoice pdf has more than 1 page and legal notes(multiline notes) section is the first thing on next page, wkhtmltopdf fails to handle page-break for legal notes…
Behaviour Before the Commit: When an invoice pdf has more than 1 page and legal notes(multiline notes) section is the first thing on next page, wkhtmltopdf fails to handle page-break for legal notes text. First line of legal notes overwrites on the total amount section resulting in overflow of contents. It works fine if legal notes are not the first thing on page. Behaviour After the Commit: Legal notes(multiline notes) text does not overwrite on total payment summary anymore. Fix: Add 'overflow-auto' class to div with id='payment-term' and has clearfix class to ensure it handles overflow. Steps to reproduce: 1. Create a multiline legal notes for any tax. 2. Open Customer-Invoices, create an invoice by adding multiple products with the tax which has multiline legal notes. 3. Make sure to add specific number of products/sections so that invoice expands to 2 pages. 4. Legal notes section must be the first thing on second page, otherwise it will not overwrite text. Feel free to look at the ticket number 4416845 for detailed understanding of the bug. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fix helps Odoo recover when inventory records and reservation details become out of sync. It prevents invalid negative reserved quantities and adds automated cleanup so users are less likely to be blocked by stock reservation inconsistencies.
Original PR description
It happens due to many reasons that the `stock.quant` object and `stock.move.line` loose their synchronisation and it could have a difference between the sum of `stock.move.line` and the…
It happens due to many reasons that the `stock.quant` object and `stock.move.line` loose their synchronisation and it could have a difference between the sum of `stock.move.line` and the quantity/reserved quantity on the `stock.quant` It's important to keep tracking why the desycnh happens and to fix all the root causes of it. However, it's hard for the user to clean the data himself or even worst to lock him when it happens (as before 18.0). For quantity: It's not a big deal to have a huge difference between the quantity and all the long time history. As in real life, the inventory adjustement can help to clean the data. For reserved quantity: It's a bigger problem since the user can't edit it. A first step would be to never write it to a negative value (since it should never happen). That way when the user empty the stock, it will also probably clean the reserved quantity. But in case where there is more reservation than on `stock.move.line`. We should also clean it to be able to reserve them. Currently, we will try in the scheduler for that part A last step, could be to create a constraint during test that ensure the synch is never broken and it could raise directly if the developer made a mistake Description of the issue/feature this PR addresses: Current behavior before PR: Desired behavior after PR is merged: --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fix prevents recruitment database upgrades from failing when the SMS app has been uninstalled. It moves SMS-specific recruitment actions into a dedicated bridge module so customers can upgrade reliably without needing unused SMS features installed.
Original PR description
Backport of odoo#194647 Basically, starting from `saas~16.4` we have action window in `hr_recruitment` which is pointing at `sms` module. If client does this steps: 1. Install `hr_recruitment` in…
Backport of odoo#194647
Basically, starting from `saas~16.4` we have action window in `hr_recruitment` which is pointing at `sms` module.
If client does this steps:
1. Install `hr_recruitment` in version 18.0
2. Uninstall the module `sms`
3. Try to upgrade db to `saas~18.1`
We will have the issue similar to this:
```
Traceback (most recent call last):
File "/home/odoo/src/odoo/saas-18.1/odoo/service/server.py", line 1295, in preload_registries
registry = Registry.new(dbname, update_module=update_module)
File "<decorator-gen-13>", line 2, in new
File "/home/odoo/src/odoo/saas-18.1/odoo/tools/func.py", line 98, in locked
return func(inst, *args, **kwargs)
File "/home/odoo/src/odoo/saas-18.1/odoo/orm/registry.py", line 143, in new
load_modules(registry, force_demo, update_module=update_module)
File "/home/odoo/src/odoo/saas-18.1/odoo/modules/loading.py", line 528, in load_modules
processed_modules += load_marked_modules(
File "/home/odoo/src/odoo/saas-18.1/odoo/modules/loading.py", line 405, in load_marked_modules
loaded, processed = load_module_graph(
File "/home/odoo/src/odoo/saas-18.1/odoo/modules/loading.py", line 251, in load_module_graph
load_data(env, idref, mode, kind='data', package=package)
File "/home/odoo/src/odoo/saas-18.1/odoo/modules/loading.py", line 84, in load_data
tools.convert_file(env, package.name, filename, idref, mode, noupdate, kind)
File "/home/odoo/src/odoo/saas-18.1/odoo/tools/convert.py", line 622, in convert_file
convert_xml_import(env, module, fp, idref, mode, noupdate)
File "/home/odoo/src/odoo/saas-18.1/odoo/tools/convert.py", line 694, in convert_xml_import
obj.parse(doc.getroot())
File "/home/odoo/src/odoo/saas-18.1/odoo/tools/convert.py", line 608, in parse
self._tag_root(de)
File "/home/odoo/src/odoo/saas-18.1/odoo/tools/convert.py", line 562, in _tag_root
raise ParseError(msg) from None # Restart with "--log-handler odoo.tools.convert:DEBUG" for complete traceback
odoo.tools.convert.ParseError: while parsing /home/odoo/src/odoo/saas-18.1/addons/hr_recruitment/views/hr_candidate_views.xml:220
Invalid model name “sms.composer” in action definition.
View error context:
'-no context-'
```
Th bridge module was intrdocued in odoo#194647 targeting to version `saas~18.2`, but we need it for `17.0, 18.0, saas~18.1` as you see in the example above. This PR will only target to `18.0` and `saas~18.1`.
Description of the issue/feature this PR addresses:
Current behavior before PR:
Desired behavior after PR is merged:
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-prCustomers can now use their eWallet in the Point of Sale after their barcode is scanned. This fixes a checkout issue where the customer was recognized but available loyalty or eWallet rewards were not refreshed, preventing eWallet payment use.
Original PR description
Description of the issue/feature this PR addresses: Steps to reproduce: - Create a POS - Enable discount, promo & loyalty - Create a customer, set the PoS barcode information - Create an eWallet for a customer - Scan the barcode in POS - Partner is set but then no eWallet could be applied Current behavior before PR: Cannot use eWallet payment after scanning partner barcode Desired behavior after PR is merged: Will be able to use eWallet payment after scanning partner barcode task: opw-4572313 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fixes Norway VAT reporting so purchases from abroad include both outgoing and incoming VAT where required. It also standardizes VAT tag and code names and uses the correct receivable VAT account, helping businesses produce more accurate Norwegian tax reports.
Original PR description
This PR fixes errors in VAT for Norway. VAT for purchase from abroad: code 81, 83, 86, 88, 91 needs both outgoing and incoming VAT. All VAT codes and tags have got names with "base", "out" or "in" instead of "base" and "tax". - Tags: number **+** Base / VAT Out / VAT In - Codes: BASE / OUT / IN **_** number Outgoing VAT for purchases is reported with positive number by having opposite +/-. Receivable VAT account is 1640. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fix prevents an error when users reload Point of Sale store sample data after archiving or deleting a previously created store. It clears old combo product links before recreating the sample products, making the setup flow more reliable for Point of Sale and restaurant scenarios.
Original PR description
*=point_of_sale,pos_restaurant Currently an exception was generated when the user clicked on "Furnitures" in the Choose Your Store section after following the below steps: - Created database without…
*=point_of_sale,pos_restaurant Currently an exception was generated when the user clicked on "Furnitures" in the Choose Your Store section after following the below steps: - Created database without demo and install 'Point of Sale' - Open 'Point of Sale' > Click on "Furnitures" in the Choose Your Store - Archive "Furniture Shop" POS - Click on "Furnitures" in the Choose Your Store - Delete "Furniture Shop" POS - Again, click on "Furnitures" in the Choose Your Store » error generated This is because [1] tries to create a combo product, but it was already created the first time when we loaded data by clicking "furniture", so it generates a validation error from [2] because we cannot link the same product in a combo. This commit solves the above issue by using 'Command.clear()' at [1], which is clear linked combo product before creating it, so it always sets product from data when user loads data. [1] - https://github.com/odoo/odoo/blob/64515f56b3987ffdea6618eb14b6062f95542ac6/addons/product/data/product_demo.xml#L619-L638 [2] - https://github.com/odoo/odoo/blob/64515f56b3987ffdea6618eb14b6062f95542ac6/addons/product/models/product_combo.py#L73 sentry-6101630952
This update brings the embedded spreadsheet engine up to its latest version, improving reliability in collaborative editing, sheet duplication, pivots, tables, and charts. Users should see fewer crashes or inconsistent spreadsheet results, plus a new LOG calculation function and better chart behavior.
Original PR description
### Contains the following commits: https://github.com/odoo/o-spreadsheet/commit/2ee4347c0 [REL] 18.0.17 Task: 0 https://github.com/odoo/o-spreadsheet/commit/6f7a9b8cc [FIX] uuid: remove black magic…
### Contains the following commits: https://github.com/odoo/o-spreadsheet/commit/2ee4347c0 [REL] 18.0.17 Task: 0 https://github.com/odoo/o-spreadsheet/commit/6f7a9b8cc [FIX] uuid: remove black magic to generate uuid Task: 4574102 https://github.com/odoo/o-spreadsheet/commit/5f4172ddf [IMP] monkey party: add a command to run monkey party test Task: 0 https://github.com/odoo/o-spreadsheet/commit/d49bdc409 [FIX] tests: remove mock uuid Task: 0 https://github.com/odoo/o-spreadsheet/commit/2bd8a6c50 [FIX] data: migration 14.5 never run Task: 0 https://github.com/odoo/o-spreadsheet/commit/9466887a1 [IMP] functions: add LOG function Task: 4547230 https://github.com/odoo/o-spreadsheet/commit/5ee8d30f0 [FIX] Charts: Hide datasets instead of filtering them Task: 4577744 https://github.com/odoo/o-spreadsheet/commit/0e2ec1186 [IMP] tests: improve toHaveSynchronizedExportedData perf Task: 0 https://github.com/odoo/o-spreadsheet/commit/271263608 [FIX] tables: duplicate table in deterministic order Task: 4567308 https://github.com/odoo/o-spreadsheet/commit/800b49183 [FIX] pivot: deep copy pivot data Task: 4567308 https://github.com/odoo/o-spreadsheet/commit/8a3df400e [FIX] table: reject cmd with range on invalid sheet Task: 4567308 https://github.com/odoo/o-spreadsheet/commit/355119795 [FIX] pivot: reject command with invalid pivot id Task: 4567308 https://github.com/odoo/o-spreadsheet/commit/8e5c69d19 [FIX] evaluation: re-trigger evaluation after DUPLICATE_SHEET Task: 4567308 https://github.com/odoo/o-spreadsheet/commit/14df1301f [FIX] evaluation: invalidate on concurrent dropped command Task: 4567308 https://github.com/odoo/o-spreadsheet/commit/fb7f1e4ce [FIX] header_position: compute only existing sheets Task: 4567308 https://github.com/odoo/o-spreadsheet/commit/691b98d03 [IMP] jest: add toHaveSynchronizedEvaluation matcher Task: 4567308 https://github.com/odoo/o-spreadsheet/commit/622bf5ad5 [FIX] charts: duplicate chart in deterministic order Task: 4567308 https://github.com/odoo/o-spreadsheet/commit/847087f88 [FIX] header_positions: compute positions for concurrent new sheets Task: 4567308 https://github.com/odoo/o-spreadsheet/commit/4d89445c8 [FIX] data_validation: don't crash `allowDispatch` Task: 4567308 https://github.com/odoo/o-spreadsheet/commit/46f067621 [FIX] collaborative: rebase pending concurrently with undo Task: 4567308 https://github.com/odoo/o-spreadsheet/commit/4fc85398d [FIX] sheet: concurrently create sheet with the same id Task: 4567308 https://github.com/odoo/o-spreadsheet/commit/d55daeb27 [FIX] sheet: prevent duplicating with the same id Task: 4567308 https://github.com/odoo/o-spreadsheet/commit/be0a36dad [FIX] cell: delete cells on sheet deletion Task: 4567308 https://github.com/odoo/o-spreadsheet/commit/42ab04fb8 [FIX] CF: reject invalid range sheet Task: 4567308 https://github.com/odoo/o-spreadsheet/commit/2b7e74ea7 [IMP] tests: collaborative monkey party Task: 4567308 https://github.com/odoo/o-spreadsheet/commit/0938e4d81 [FIX] pie_chart: use chart background for border color Task: 4570603 Co-authored-by: Anthony Hendrickx (anhe) <anhe@odoo.com> Co-authored-by: Alexis Lacroix (laa) <laa@odoo.com> Co-authored-by: Lucas Lefèvre (lul) <lul@odoo.com> Co-authored-by: Dhrutik Patel (dhrp) <dhrp@odoo.com> Co-authored-by: Adrien Minne (adrm) <adrm@odoo.com> Co-authored-by: Mehdi Rachico (mera) <mera@odoo.com> Co-authored-by: Florian Damhaut (flda) <flda@odoo.com> Co-authored-by: Rémi Rahir (rar) <rar@odoo.com> Co-authored-by: Pierre Rousseau (pro) <pro@odoo.com> Co-authored-by: Vincent Schippefilt (vsc) <vsc@odoo.com>
This fixes how Odoo handles server actions that run several steps together. It helps ensure these automated actions use the correct processing approach, reducing the risk of errors or incomplete business workflows.
Original PR description
la la la
Spreadsheet pivot tables now use the correct day of the week when users work in languages or locales where the week does not start on Sunday. This prevents mismatches between the day shown in the spreadsheet and the records opened from that pivot value.
Original PR description
Steps to reproduce: - change your language to French (or any language which doesn't the week on Sundays) - insert a pivot into a spreadsheet - insert the dynamic version with =PIVOT(1) - change the row groups to "Day of week" - right click on any pivot value and "See records" => the day of week displayed in spreadsheet doesn't match the records. Task: 4591993 Description of the issue/feature this PR addresses: Current behavior before PR: Desired behavior after PR is merged: --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr