Daily updates from Odoo
Monday, March 16, 2026
14 changes · saas-18.3
Resolved issues and error corrections
This update fixes an issue where changing the lot number of a combo product in Point of Sale (POS) would reset the order total price. The fix ensures that the price remains consistent with the combo product's defined price, regardless of lot changes. This improves the accuracy of POS transactions.
Original PR description
Step to reproduce: - have a lot tracked product, product 1 (price = 10) - create a combo product with product 1, with price (100) - start a pos, add combo product in order, - notice total price is 100 - change lot number of product 1, - notice order price reset to 10. Cause: - When the lot number is changed, `set_quantity_by_lot` is triggered. - This calls `set_quantity`, which resets the price and loses the combo pricing. Fix: - use `keep_price` = true parameter when calling `set_quantity` if orderline has combo_parent_id opw-5495409 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#251460 Forward-Port-Of: odoo/odoo#246252
This update resolves an issue that was causing errors during upgrades related to fetching archived warehouse picking types in the Point of Sale system. The fix ensures that only active warehouse types are considered, preventing conflicts and improving system stability. This was triggered by an upgrade process and avoids unnecessary data retrieval.
Original PR description
revert the commit as when we fetch archived warehouse's pos type it will raise error for other source or destination loction for newly created stock operation type like even functinally also there is…
revert the commit
as when we fetch archived warehouse's pos type
it will raise error for other source or destination loction for newly created stock operation type like
even functinally also there is no need to fetch
archived warehouse's operation type.
```
quality Control
cross Dock,
Storage type
```
we got this error during upgrade :
```
File "/home/odoo/src/odoo/saas-17.4/odoo/sql_db.py", line 347, in execute
res = self._obj.execute(query, params)
psycopg2.errors.NotNullViolation: null value in column "default_location_src_id" of relation "stock_picking_type" violates not-null constraint
DETAIL: Failing row contains (33, 0, 28, 56, null, null, null, 4, null, null, 1, 1, 1, QC, internal, at_confirm, FBAQC, ask, {"en_US": "Quality Control"}, null, f, f, t, null, f, null, 2024-10-16 05:14:53.18448, 2024-10-16 05:14:53.18448, optional, optional, no, optional, null, null, t, null, null, 2x7xprice, 4x12_lots, pdf, null, null, null, null, null, null, null, null, null, t, null).
```
due to this two fix:
https://github.com/odoo/odoo/pull/151719/commits
https://github.com/odoo/odoo/pull/175838/files
so we need to avoid to fetch archived warehouse's picking type.
ref:
odoo/upgrade#6631
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
Forward-Port-Of: odoo/odoo#191652
Forward-Port-Of: odoo/odoo#185244This update resolves a limitation in the Odoo Enterprise system by enabling users to select 'Other Expenses' as a valid expense account option when creating loans. Previously, this option was restricted, which could have prevented accurate tracking of certain loan expenses. This change improves the flexibility and accuracy of loan expense reporting.
Original PR description
Allow accounts with the "Other Expenses" type to be selected in the Expense Account field of Loans. task-5946452
This update prevents users from copying data directly from the public Odoo spreadsheet. Previously, users could easily copy and paste information, which posed a risk to data integrity and consistency. This change ensures that data within the spreadsheet remains controlled and accurate.
Original PR description
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 update fixes an issue where unbuilding a manufactured order resulted in invalid stock move lines. The fix ensures accurate quantity calculations, preventing backorders and allowing the system to properly process unbuild requests when more product is unbuilt than originally manufactured. This improves the reliability of the MRP process.
Original PR description
# How to reproduce - Create a BOM for a product - Create a MO for a set quantity (Exemple: 1) for that product - Unbuild that MO and ask to unbuild more than what was manufactured (Exemple: 3) -…
# How to reproduce - Create a BOM for a product - Create a MO for a set quantity (Exemple: 1) for that product - Unbuild that MO and ask to unbuild more than what was manufactured (Exemple: 3) - Confirm the unbuild - Go to the stock moves of that unbuild via the smart button # The problem 3 stock move lines are created, 2 in the 'Done' state and 1 in the 'Available' state. This last move line is stuck and cannot be validated # Why The cause of this issue is due to a discrepency between the quantity set for the move lines and the quantity set for their respective moves. When creating the move lines for the produce move, we use the original move of the MO (this is done to keep Lots consistent). If the quantity of product to unbuild is more than the quantity of product built by the MO, the quantity of the move lines will be less than expected. This will then create a backorder when the produce move is set to done. This backorder will then be unvalidatable because the unbuild it is linked to will be set to 'Done'. opw-5915981 opw-5449109 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#248056
This update addresses a persistent issue where temporary report files were accumulating on systems due to a misconfigured test. The root cause was a test that didn't properly clean up these files, leading to unnecessary storage usage. This fix ensures reports are cleaned up correctly during testing and operation.
Original PR description
Followup to #253053 which assumed it was some sort of race in the report code which would sometimes fail to cleanup the temp files, but after hitting a test failure in #253816 the true culprit was revealed: it was the test #186547 added all along and I didn't even think to run it! Because `test_report_error_cleanup` mocks the `os.unlink` call the `os.unlink` call never happens during that test, so none of the temporary files get deleted, and this is what added a full set of report files to my /tmp every day as I'd run the entire test suite in the morning. To be clear the race was still there and resolving it was reasonable it, but that was not the cause of the leftover temporary files, or if so extremely rarely. Forward-Port-Of: odoo/odoo#253853
This update resolves a performance issue where replacing background images in the media dialog could cause the website to hang. The fix replaces a fragile, slow regex-based approach with a more efficient method using CSSOM to remove transform styles. This improves website responsiveness and overall user experience.
Original PR description
__Before commit__ Transform-related CSS properties are removed from an image element by manipulating the raw `style` attribute string with a regex which is fragile and costly in performance. __Steps to reproduce (saas-19.2)__ This regex was added in [18.0][1] but is only a real issue since `resetImageTransformation` was called in `on_will_save_media_dialog_handlers` in [saas-19.2][2]: 1. Add a section block. 2. Add a background image. 3. Open the media dialog and replace the background image. => The website will hang for a while. __Fix:__ Use `.style.removeProperty()` instead to speed up the process and to make it less error prone. [1]: https://github.com/odoo/odoo/commit/85698bf4f591fc9280f054b9a255a7d [2]: https://github.com/odoo/odoo/commit/781c0ae77de01f0df8667e0191f6c34 Forward-Port-Of: odoo/odoo#253843
This update fixes a persistent problem where Chrome was creating unnecessary temporary files, leading to potential performance issues. By directing Chrome to use its temporary directory as its data directory and then cleaning up this directory during testing, we've eliminated this file clutter.
Original PR description
It's unclear since when or under what configuration exactly, but Chrome(ium?) seems prone to creating directories called `org.chromium.Chromium.*` (or some variant thereof) in the temp dir (some people report them to be prefixed by a `.`) and never clean them. By telling chromium that its tempdir is its data dir, it creates its litter in there, and we remove the entire thing during cleanup, solving the littering. Forward-Port-Of: odoo/odoo#253350
This update resolves an issue where adding attributes to archived product templates caused errors. The fix ensures all variants (active and archived) are considered, preventing template deletion and maintaining archived product options when a template is archived.
Original PR description
When adding attributes to an archived product template, an error was raised because the template was incorrectly deleted. This happened because variant counting only considered active variants. Now counts all variants (active and archived) to prevent template deletion, and filters variants before activation to keep them archived when their template is archived. @qrtl QT6449 Forward-Port-Of: odoo/odoo#252927
This update fixes an issue where follow-up emails were incorrectly sending a generic attachment instead of the actual invoice PDF. Now, the system automatically sends the correct invoice PDF, ensuring users receive the accurate documentation for their invoices. This improves the clarity and accuracy of invoice follow-up communications.
Original PR description
Before, the followup emails used the Invoice's main attachment. This is not correct because a user might have uploaded an arb PDF. Only the actual PDF should be sent. Use `invoice_pdf_report_id` instead of `message_main_attachment_id`. opw-5126420 Forward-Port-Of: odoo/enterprise#98820
This update fixes a usability issue on mobile devices when creating new loans. Previously, a button was hidden and difficult to access, requiring scrolling. The fix ensures a smoother, more intuitive experience for users creating loans on their smartphones or tablets.
Original PR description
Forward-Port-Of: odoo/enterprise#110120
This update resolves a critical issue where users could cancel documents after all parties had signed, potentially compromising legal records. Now, the cancel button disappears automatically after signing is complete, and backend cancellations are blocked to ensure document permanence and security. This strengthens legal proof of agreements and protects data integrity.
Original PR description
Before this commit, users could cancel documents after everyone had signed. This weakened legal records and proof of agreement. After this commit, the cancel button disappears once signing is complete. We also blocked backend cancellations to keep finished documents permanent and secure. task-5980337 Forward-Port-Of: odoo/enterprise#109353
Previously, when users uploaded multiple files to a WhatsApp Discuss channel, only the first file was delivered. This update corrects this issue by ensuring that all uploaded files are sent to the recipient. The fix prevents data loss and improves the reliability of file sharing within WhatsApp.
Original PR description
Multiple attachments uploaded simultaneously to a WhatsApp Discuss channel result in only the first being delivered to the recipient. ### Steps to reproduce 1. Drag and drop multiple files into a…
Multiple attachments uploaded simultaneously to a WhatsApp Discuss channel result in only the first being delivered to the recipient. ### Steps to reproduce 1. Drag and drop multiple files into a WhatsApp Discuss channel. 2. Send the message. -> Odoo shows all files, but only the first reaches the destination. ### Cause WhatsApp's API permits only one media object per message. Odoo's "Composer" enforces this by blocking uploads if an attachment is already present. However, it only evaluates the *current* state; dropping multiple files into an empty composer passes the check because the count is zero. On the server, the WhatsApp backend (constrained by the API) is hardcoded to send only the first attachment, silently discarding the rest. ### Fix Updated frontend validation to inspect the incoming file list during drop and paste actions. The process is now blocked if the total of existing plus incoming files exceeds one, ensuring the user is notified and preventing silent data loss. opw-5889035 Forward-Port-Of: odoo/enterprise#107424
This update fixes errors in the Dutch SBR and ICP report exports, specifically correcting incorrect VAT identifiers and date formats. It also cleans up the XML formatting for improved readability, ensuring accurate reporting for tax compliance.
Original PR description
Descriptions of the issues this commit addresses: The xbrli:identifier tags in the exported sbr and sbr icp files are wrong. They should always contain the company's vat without country code . The DateTimeCreation tag currently shows a date in a wrong format. It it YYYYMMDDhhmm but should be YYYY-MM-DDThh:mm:ss. Also the outputted xml is weirdly indented with many whitespaces and it makes it hard to read for no reason. --- Desired behavior after the commit is merged: This commit changes the values in the exported file to address those issues and adds the use of a cleanup helper to make the file human readable. --- task-5998939 Forward-Port-Of: odoo/enterprise#109359