Wednesday, February 4, 2026
8 changes · 19.0
Enhancements to existing features
This update ensures Odoo complies with Mexican tax regulations (SAT) regarding the description of refunded products. Specifically, for global invoices, the refund description now includes the return amount, discounts, or bonuses, as required by the SAT. The change adjusts how Odoo handles credit notes to align with these requirements.
Original PR description
The SAT specifies how the description of refunded product should be set and specifically for refunds of global invoices it should contain the amount of the return, discount or bonus and why. Currently, Odoo when a credit note of a global invoice is issued, it sets an specific label for the description. To keep with what SAT asks for, we will keep that label only for credit notes of pos global invoices, and for the others, we keep from what the user put as an input on the line task-5170675 target: 19.0 -> master
Resolved issues and error corrections
This update resolves an issue where invoices generated from subscriptions with sections and subsections were missing the section line. The fix adjusts how the system identifies pending invoice lines, ensuring all sections and subsections are accurately reflected on the invoice. This improves the accuracy of subscription billing.
Original PR description
### Issue: Due to this issue, creating invoice from a SO that has a section with a subsection in the following line, will not include section line. #### Steps to reproduce: 1- Create a SO 2- Add section 3- Add subsection 4- Add line with a product 5- Confirm the SO and create an invoice Expected invoice lines: section, subsection, product line Current invoice lines: subsection, product line ### Cause: This is due to only considering latest section as pending section in `_get_invoiceable_lines`: https://github.com/odoo/enterprise/blob/b748b5d7e1b74657ac4c69d6843821cf30505b99/sale_subscription/models/sale_order.py#L1285-L1308 opw-5450365
This update resolves a payment error that occurred when using Avatax with the Point of Sale (POS) module. The issue stemmed from an outdated method that was no longer supported. Removing this method ensures smoother payment processing and a better user experience.
Original PR description
Step to reproduce: - configure pos for Avatax from settings - open pos and settle a order - notice a error message on payment page Cause: - error is due to usage of `replaceDataByKey` which is removed in [1] [1] https://github.com/odoo/odoo/commit/3e94fe90ded58d498f0098cd9ed8679cbe500b8f Fix: - we removed the method as now we do not rely on it. opw-5089351 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/enterprise#106135 Forward-Port-Of: odoo/enterprise#102101
This update resolves an issue where a reordering rule would incorrectly attempt to update a manufacturing order (MO) that had been locked due to a quality check. The fix ensures that new MOs are created when a reordering rule is triggered after a quality point is completed, preventing errors and maintaining accurate inventory tracking. This improves the reliability of the MRP process.
Original PR description
### Issue: In 18.0-18.2, for product with a Manufacturing BoM containing a Component, a WO and a Quality Point If a Reordering Rule is triggered, odoo try to add the newly ordered quantity to an…
### Issue: In 18.0-18.2, for product with a Manufacturing BoM containing a Component, a WO and a Quality Point If a Reordering Rule is triggered, odoo try to add the newly ordered quantity to an existing MO But if the MO is "locked" because a quality check has been performed, a Error is raised: ``` Odoo Warning You cannot update the quantity to do of an ongoing manufacturing order for which quality checks have been performed. ``` ### Steps to reproduce: - Create a product tracked by quantity - Add a BoM (1 component tracked by Quantity, 1 Operation with 1 Quality Point) - Create a Reordering Rule (Route: Manufacture, Trigger: Manual, Min/Max: 1) - Click on Order - Open the created MO and the Shop Floor (Remove the filters to see the WO) - Complete the Quality Point - Modify the Reordering Rule (Min/Max: 2) - Click on Order - the error should be raised ### Cause: The MO to update is retrieved here: https://github.com/odoo/odoo/blob/45184da06cf7b92a48e3e4e90bf8b285bdd9ad6a/addons/mrp/models/stock_rule.py#L53-L57 Using a domain defined in this function: https://github.com/odoo/odoo/blob/45184da06cf7b92a48e3e4e90bf8b285bdd9ad6a/addons/mrp/models/stock_rule.py#L130-L153 In 18.0-18.2, when validating a `quality check` from the Shop Floor while the WO is in `waiting` state, the MO remains in `confirmed` state This makes the domain match the current WO and MO, triggering `change_prod_qty` even though the MO is locked In 18.3–18.4, a similar issue can occur with multiple WOs when the first blocks the second and a `quality check` is performed on the latter The `blocked` state behaves like `waiting`, but the issue is avoided when using the Shop Floor because this commit ensures that clicking a card starts the timer and changes the state to `progress`: https://github.com/odoo/enterprise/pull/84425/commits/67c2127424ef3a1eb4794edd2c262b94ef186561 However, it could still theoretically be triggered under specific conditions In 19.0, the new stock.reference system (https://github.com/odoo/odoo/pull/212679) ensures the MO is detected as different, so a new one is always created opw-5012588 Forward-Port-Of: odoo/enterprise#104070 Forward-Port-Of: odoo/enterprise#101313
A client reported issues processing payments via Bankgiro (Swedish bank giro). This update corrects a typo and adjusts the order of financial data fields, ensuring Bankgiro payments now process successfully. This resolves a critical payment processing error.
Original PR description
After PR: https://github.com/odoo/enterprise/pull/104777 The client reported that payment with bankgiro account doesn't works. Here are the problems found: - Typo : Should be `RfrdDocAmt` instead of `RfdDocAmt` - RfrdDocAmt should be inserted before CdtrRefInf - CdtNoteAmt should be before RmtdAmt opw-5427505 Forward-Port-Of: odoo/enterprise#106272
This update fixes an error in the calculation of secondary contract payslips for Kenyan companies. The issue stemmed from a missing variable, which has now been corrected to ensure accurate tax and deduction calculations for employees on secondary contracts. This ensures payroll compliance for our Kenyan clients.
Original PR description
Steps to reproduce: With a Kenyan company, create an employee. Check the "Secondary Contract" on the employee form view. Create a payslip and compute. There is an error in the payslip computation. Cause: There is an undefined variable "remaining_gross". Fix: Replace it by the total taxable gross. Task: 5462310 Forward-Port-Of: odoo/enterprise#106055 Forward-Port-Of: odoo/enterprise#103229
This update resolves a bug where invoice users were inadvertently viewing subscription details within the Odoo Enterprise system. The change filters access to subscription information, ensuring that only authorized users (e.g., subscription managers) can see these sensitive data. This improves data security and prevents unauthorized access to subscription information.
This update fixes an issue where annual returns incorrectly used a fiscal year filter when a company's fiscal year differed from the calendar year. Now, returns always adhere to the correct civil year, ensuring accurate reporting and a better user experience. This improves the reliability of financial data presented in reports.
Original PR description
When a company fiscal year differs from the civil year, the annual return incorrectly falls back to the report’s FY-aligned year filter. The return should always follow the civil year, so the fallback is skipped and the return period filter is shown instead. task-5511074