Daily updates from Odoo
Tuesday, January 13, 2026
17 changes · saas-18.4
Enhancements to existing features
This update adjusts the Brazilian tax code list to comply with the latest regulatory requirements. Specifically, it adds a 'DEPRECATED' marker to expiring codes and incorporates new tax codes for Brazil. This ensures continued compliance and accurate tax reporting.
Original PR description
This **PR** updates the NCM code list as per latest requirement. It appends `DEPRECATED` at the end of expires codes. Also it introduces a few new codes. **task**-5381617 Forward-Port-Of: odoo/enterprise#102009
Resolved issues and error corrections
This update resolves an issue where the POS system in Ecuador would crash when a customer was removed from the partner list after selecting 'Consumidor Final'. The fix ensures a customer is always selected, either a specific customer or 'Consumidor Final', improving stability and accuracy for Ecuadorian retail operations.
Original PR description
Step to reproduce: - install `l10n_ec_edi_pos` - open pos - ensure "Consumidor Final" is selected as partner - open partner list and deselect the partner Observation: - we get a traceback Cause: - we try to set a partner, without proper checks - Also, in the Ecuadorian localization there should always be a customer selected Fix: - rewrote `selectPartner` function to allow following things for EC localization 1. ensure a customer is always selected, a specific one or "consumidor final" 2. when refunding with "consumidor final" customer, changing partner is allowed opw-5350570 Forward-Port-Of: odoo/enterprise#103868 Forward-Port-Of: odoo/enterprise#102221
This update ensures eTIMS configuration warnings are only displayed for companies operating in Kenya, resolving confusion for users in other locales. The change streamlines validation and maintains the correct eTIMS behavior for Kenyan businesses. This improves the user experience and data accuracy.
Original PR description
Before: In multi-company setups, the eTIMS configuration warning was shown even when working in companies that are not based in Kenya. This resulted in confusing and irrelevant warnings for users using other localizations. After: The eTIMS configuration warning is now limited to Kenyan companies only. Non-Kenyan companies are no longer impacted, keeping the validation relevant while preserving the intended eTIMS behavior. task-5462334 Forward-Port-Of: odoo/enterprise#103291
This update ensures that thumbnails are correctly updated on document shortcuts, even when accessed by public users. Previously, public users lacked thumbnail updates due to a permission restriction, leading to inconsistencies. This change resolves a bug where public access to a document shortcut didn't reflect thumbnail updates.
Original PR description
Bug === 1. Create a request 2. Create a shortcut to that request 3. Share it to public 4. Public upload => The thumbnail is updated on the document, but not on the request. The reason is that the public user has `user_permission = none`, because he has only access with the token, and so we skip the thumbnail propagation. This has no sense, because if we don't have access on the document, we loose the access on the shortcut (even if we are the owner). Task-5485511 Forward-Port-Of: odoo/enterprise#102888
This update resolves an error that occurred when users deleted the 'Balance' line from the General Ledger Report. The fix prevents the report from crashing when this configuration is removed, ensuring consistent and reliable report generation. This improves the user experience and data accuracy.
Original PR description
Currently an error is generated when the user deletes the `Balance` line of `Column` tab from the General Ledger Report as in the below steps: - Install accountant with demo data - Go to Accounting >…
Currently an error is generated when the user deletes the `Balance` line of `Column` tab from the General Ledger Report as in the below steps: - Install accountant with demo data - Go to Accounting > Configuration > Accounting (section) > Accounting Reports - Open the General Ledger report - Delete the balance line from the Column tab - Go to Reporting > General ledger >> Error occurs (If an error does not occur, try opening the detailed view of the journal in the report.) Error: `KeyError: 'balance'` This issue was generated because at code line [1] tries to access `balance` key from the `colname_to_idx[col_group_key]` but since the user deleted `balance` it will not fount there and we got an error. This commit fixes the issue by preventing the processing of `line_balance` when the balance key is not present in `colname_to_idx[col_group_key]`. [1]: https://github.com/odoo/enterprise/blob/340abdc1b00df4d3d6130b26650519ae8354d199/account_reports/models/account_general_ledger.py#L326 sentry-7105657812
This update fixes a potential issue with how Odoo tours mock the Clipboard API, particularly in headless environments like Chrome. By delaying cleanup steps, the system now ensures the API call is fully processed before attempting to mock it, preventing delays or errors. This improves tour reliability and performance.
Original PR description
Reliably mocking Clipboard API calls in tours should be done in two steps: - the step that will actually do the call should do the patching, followed by the actual action. - the cleanup should only be done in the following step to ensure the action's listener has actually finished. This commit applies this principle to avoid the "cleanup" to be executed before the action's listener has actually reached the call to the Clipboard API (because of slower processing, slower network...), which would defeat the mocking purpose (and either get the browser to indefinitely wait for the user's clipboard usage approval or a permission error depending on the browser's default behavior). Note: this was mainly brought to light by the new Chrome 143+ default policy which revoke all permissions in headless mode. Forward-Port-Of: odoo/enterprise#103971
This update automatically calculates and transmits the 2050 pension contribution amount for employees in Switzerland using the Swissdec standard. This ensures accurate and compliant payroll processing, addressing a previous issue with manual calculations and data transmission.
Original PR description
task-5166226 Forward-Port-Of: odoo/enterprise#103542 Forward-Port-Of: odoo/enterprise#103453
This update corrects a technical issue in the Accounts Coverage Report that was incorrectly flagging duplicate report lines. The fix ensures accurate reporting by ignoring identical report names and codes, preventing misleading error messages. This improves the reliability of financial reporting data.
Original PR description
Reproduce the bug: -Install Ireland(ie) reports -Enable debug mode -Go to Reporting>Balance Sheet>Accounts Coverage Report -The generated sheet should have false positive duplicates error Fix: Ignore the report lines that has the same name and the same code task: 5373732 Forward-Port-Of: odoo/enterprise#101311
This update resolves an issue where the year field in certain reports was incorrectly formatted with a comma. Removing this comma ensures accurate reporting data and consistent calculations for payroll and tax reporting in Belgium. This change improves the reliability of financial reports.
Original PR description
. Remove the comma on the year filed on the crossponding reports task-5417861 Forward-Port-Of: odoo/enterprise#102143
This update resolves an error that occurred when users configured custom grouping in the General Ledger report. The fix ensures the report correctly handles custom grouping by accessing the relevant data, preventing a crash and allowing users to generate reports as intended. This improves report functionality and user experience.
Original PR description
Currently an error is generated when the user tries to open the `General Ledger` report after following the below steps: - Install `Accounting(accountant)` with demo data - Go to Accounting > Configuration > Accounting > Accounting Reports - Open `General Ledger` report > click `General Ledger` in lines - Set `account_code` instead of `account_or_unaff_id` in Group By - Save and again save report - Go to `Reporting` > `General Ledger` This is because the user added a custom group by `account_code` in the account report, but this key is not avaliable in the row; it will generate an error. This commit will fix the above issue by accessing the groupby key in the row when it exists. sentry-7139160856
This update corrects minor errors in the 2026 balance sheet and profit & loss reports for Danish accounting. The changes, identified as logical fixes, ensure accurate financial reporting. This is a low-impact fix improving the reliability of these reports.
Original PR description
In this commit: https://github.com/odoo/enterprise/commit/0d431fe2cc6556a040888ecc5d6a71be4a435447 we introduce a new balance sheet report for 2026 but there was a mistake in the sign of a formula and in the text of a line. Same for the profit and loss, some errors in sign of accounts and naming. The errors don't come from a ticket but more of a logical fix, those errors were probably an oversight during development. no task id Forward-Port-Of: odoo/enterprise#103830
This update resolves an issue where country-based filtering on payslips and payroll runs wasn't functioning properly, leading to errors. The fix ensures accurate country filtering, preventing module loading problems and improving payroll reporting.
Original PR description
Issue: The country_id related field on payslip and payslip run was not stored, causing domain filters and search on this field to fail and triggering client-side errors. Fix: Use search parameter to write function so field can be used safely in search domains and filters. Impact: Country-based filtering now works correctly without triggering module loader errors. Task: 5406904 Forward-Port-Of: odoo/enterprise#103318
This update corrects a visual inconsistency in the Odoo Enterprise application. Previously, the subtitle color within the 'Recent' tab differed from other tabs. This commit ensures all tab subtitles have the same color, improving the overall user experience and maintaining a consistent look and feel.
Original PR description
Since commit [1], the subtitle color has been changed but not for the "Recent" tab, which creates inconsistencies. This commit ensures that the subtitle color is consistent across all tabs. [1]: https://github.com/odoo/enterprise/commit/568d29af1e1d792642f0dc288d57871fc7781f38 task-5485493 | Before | After | |--------|--------| | <img width="800" height="662" alt="Capture d’écran 2026-01-12 à 11 19 34" src="https://github.com/user-attachments/assets/8beb175a-27c8-4d73-899c-6fc3ab22c0e6" /> | <img width="800" height="657" alt="Capture d’écran 2026-01-12 à 11 19 49" src="https://github.com/user-attachments/assets/e2542822-6b05-4b15-b3e8-a4aa7c1b611c" /> |
This update fixes an issue where Manufacturing Orders weren't being created correctly when using the Barcode app. Specifically, disabling tracking caused a problem with quantity calculations, leading to incorrect component additions. The fix ensures the correct flow for creating MOs through the Barcode app, improving production efficiency.
Original PR description
Fix an incorrect flow when creating a Manufacturing Order through the Barcode app. Steps to reproduce: - Disable tracking in Settings - Create a BOM for product Table with components Wood and Screws…
Fix an incorrect flow when creating a Manufacturing Order through the Barcode app. Steps to reproduce: - Disable tracking in Settings - Create a BOM for product Table with components Wood and Screws - In the Barcode app, go to Manufacturing - Click New > Add product and select Table - Click Confirm -> Components are not added after the Table line The issue occurs because `set_qty_producing` is called even when `lot_producing_id` is undefined, leading to a call to `_set_quantity_done` who will delete Stock Move Line since quantity done is 0. So, since SML was deleted, the `move_raw_line_ids` will also be affected. This happens when tracking is disabled, causing the condition `lineRecord.data.lot_producing_id != this.env.model.record.lot_producing_id` to evaluate as true (undefined != false), which triggers `set_qty_producing`. This fix ensures that `lot_producing_id` is defined before performing the comparison. opw-5165163 Forward-Port-Of: odoo/enterprise#103849 Forward-Port-Of: odoo/enterprise#98440
This update resolves an issue where a reordering rule would incorrectly attempt to update a manufacturing order (MO) that was locked due to a quality check. The fix ensures that the system correctly handles locked MOs, preventing errors and maintaining data integrity during the manufacturing process. This improves the reliability of order fulfillment.
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
This update resolves an issue where attachments weren't being properly filtered based on localization settings. The change adds a private method to handle this filtering logic, aligning with enterprise-level functionality. This ensures consistent attachment handling across different Odoo environments.
Original PR description
Add private method to support filtering out unwanted attachments based on specific localization logic (added in enterprise branch) opw-5362664
This update resolves an issue where user avatars in the Odoo Chat UI were appearing distorted or incorrectly sized. The fix applies a standard image scaling method ('object-fit: cover') to ensure all avatars display correctly and consistently. This improves the user experience by providing a professional and accurate representation of each user.
Original PR description
Before this commit, user avatars in the Chater UI were not displayed using the object-fit: cover style, causing distorted or improperly scaled images. Current behavior before PR: <img width="671" height="380" alt="image" src="https://github.com/user-attachments/assets/a4b7ef3a-0c69-4fec-bf2a-70c9bd89236e" /> Desired behavior after PR is merged: <img width="663" height="384" alt="image" src="https://github.com/user-attachments/assets/479586c8-a01c-45fb-9e46-9246616e1329" /> --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#243181 Forward-Port-Of: odoo/odoo#242320