Thursday, December 18, 2025
6 changes · saas-18.4
Resolved issues and error corrections
This update fixes an error in how sales margins are calculated for orders using multiple currencies. The previous calculation was producing an incorrect margin figure. The fix uses brackets to ensure the correct formula is applied, resulting in a more accurate margin calculation.
Original PR description
Step to reproduce: - create new journal and a pricelist with different currency (here TWD i.e 36.833 * USD) - set that pricelist and journal in a pos - have a product with sales (here 1000$) and cost…
Step to reproduce: - create new journal and a pricelist with different currency (here TWD i.e 36.833 * USD) - set that pricelist and journal in a pos - have a product with sales (here 1000$) and cost price (300$) - create pos and finalize the order with that product - go to sales > reporting > sales > pivot view - check margin for that order Observation: - the margin is calculated wrong due to improper brackets - current calculation ( for TWD currency , multiply with currency rate) sale price - ( cost price / currency rate) i.e. `1000 * 36.833 - (300* 36.833 / 36.833) = 36833 - 300 = 36533` Fix: - fixed the calculation, used brackets - actual calculation - `(1000 * 36.833 - 300 * 36.833) / 36.833 = 1000 - 300 = 700` Before <img width="687" height="97" alt="image" src="https://github.com/user-attachments/assets/3a821a5c-eb12-4eae-9465-1702e9d4ac97" /> After <img width="679" height="110" alt="image" src="https://github.com/user-attachments/assets/d62dbb1d-6839-4099-90b1-6f9a19576721" /> opw-5166714 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#239407
This update resolves an issue where ECO applications incorrectly linked product documents to attachments, leading to database errors. The fix ensures that ECOs correctly reference the associated attachments, preventing potential data inconsistencies and application failures. This improves the reliability of ECO implementation.
Original PR description
When applying an ECO, the system incorrectly sets the origin_attachment_id of a product.document to a product.document record itself instead of its related ir.attachment. As a result, if the incorrectly referenced ir.attachment is missing, the ECO will attempt to reference a record that does not exist, leading to a foreign key violation during action_apply. Steps to reproduce: 1.) Create an mrp.eco record 2.) Upload a document, take note of the product.document ID 3.) Unlink the ir.attachment with ID = (document ID + 1) (+1 is to account for the .copy within action_apply) 4.) Run eco.action_apply 5.) Observe SQL Constraint Expected result: The ECO should correctly link the product.document to its related ir.attachment. Actual result: origin_attachment_id may point to an unrelated ir.attachment, causing constraint violations when those attachments do not exist. opw-5050263 Forward-Port-Of: odoo/enterprise#94958
This update resolves a bug where copying and pasting within the website builder could cause unexpected duplication of content and rendering errors. The fix prevents the copying of unnecessary elements, ensuring accurate website updates and a stable editing experience.
Original PR description
When the user copies a range of the html in the page, they may copy nodes with attributes that mark them to be saved. This happens if they select around a savable node, or if they select inside a…
When the user copies a range of the html in the page, they may copy nodes with attributes that mark them to be saved. This happens if they select around a savable node, or if they select inside a savable node and the format plugin include clones of the ancestors (to keep matching style). This commit prevents that by not copying clones at the ancestor which sets `contenteditable` to true (if any), and by treating copy with a selection outside of `contenteditable` the same as a foreign copy (for which any non-whitelisted attributes are removed). Steps to reproduce: - Open website builder - Select a link of the menu in the header - Copy - Move the selection to "normal" text (like in the footer) - Paste - Save - Bug: the website cannot render ### - Open website builder in translate mode, on a blog post - Select a word in the middle of a paragraph - Copy - Paste - Bug: The paragraph gets replicated inside itself ### - Open website builder in translate mode, on a blog post - Select from the author name to the first paragraph - Copy - Paste inside the paragraph - Bug: The paragraph gets replicated inside itself opw-5053872 task-5222402
This update ensures that downpayments on invoices now correctly use the company's designated downpayment account, regardless of product category. Previously, invoices defaulted to the income account, causing inconsistencies with tax calculations and standard downpayment behavior. This fix aligns with expected accounting practices.
Original PR description
**Problem:** When calculating taxes externally (such as Avatax) and a downpayment is made, the line on the invoice will always use the default income account, regardless of the downpayment account set as a company default. This issue can also happen in the case where products have no category set. This is inconsistent with the standard behavior of downpayments, which will use the downpayment account set on the product's category instead of the income account (which themselves may come from company defaults). **Solution:** If there's no product category set, fall back to the company's default downpayment account. opw-5171067 Forward-Port-Of: odoo/odoo#239085
This update resolves an issue where assigned values in project task properties would disappear after saving. The fix ensures that property values are correctly saved and displayed, improving the usability of project task configuration. This change was made to enhance data integrity and prevent data loss.
Original PR description
**Steps to produce:** - Install project module. - Go to project > Open any project > Open any task > Click on gear icon. - Click on Add properies > Set Field type as `Many2one` and Model as…
**Steps to produce:** - Install project module. - Go to project > Open any project > Open any task > Click on gear icon. - Click on Add properies > Set Field type as `Many2one` and Model as `Contact`. - Now assign value to Property 1 > Click on `External button` > Click on `Save & Close`. **Issue:** - The assigned value disappears after saving. **Root cause:** - At [1], since `id` is not an active field (see [2]), it is not present in record.data, which is expected. However, record.data is then passed to m2oTupleFromData, which assumes that the data includes an id because it is normally used on data coming directly from the ORM. - Additionally, since display_name is also not present, m2oTupleFromData falls back to record.data.name, which is not proper. **Solution:** - Use an ORM read to retrieve the proper display_name of the record before constructing the Many2one tuple. [1]: https://github.com/odoo-dev/odoo/blob/24ccc3faf14ade70b21bf253af16a534df726fc8/addons/web/static/src/views/fields/properties/property_value.js#L87-L89 [2]: https://github.com/odoo/odoo/blob/369ca1e5a154235e80b9ea6af7b3f10442c0939f/addons/web/static/src/model/relational_model/record.js#L793-L795 Before: <img width="589" height="68" alt="bef" src="https://github.com/user-attachments/assets/b2aeba0c-1c52-4663-9f94-5c7808a882db" /> After: <img width="613" height="81" alt="after1" src="https://github.com/user-attachments/assets/a3b3d733-929d-4a24-9e17-c73d9569e9b7" /> **opw-5257819** --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#238052
This update simplifies the task management interface on mobile devices. The changes consolidate dropdown options and present action menus in a cleaner, more user-friendly list format. This enhances the overall mobile experience and improves task management efficiency.
Original PR description
After this commit: - A single combined dropdown is used in mobile view to avoid overlapping sliders. - The "Show Sub-Tasks" button is placed at the top of this dropdown. - Embedded action menu items are displayed directly below, as flat list items. - This improves mobile usability and ensures a cleaner, unified UI experience. task-4971617