Daily updates from Odoo
Monday, January 19, 2026
18 changes · 18.0
Enhancements to existing features
This update improves the Ecuadorian accounting setup by streamlining expense accounts and adding support for 8% VAT. Specifically, redundant expense categories have been consolidated, and expense accounts like salaries and travel expenses are now automatically closed at the end of each accounting period, reducing reconciliation efforts.
Original PR description
Improve the distribution of expense and cost of revenue accounts in Ecuadorian localization We avoided not creating subcategories of expenses by eliminating the group called "Other employee benefit plan expense", which generated duplicity in the accounts. We fixed this by merging the accounts into the main "Employee benefit plan expense" group. Additionally, the account "Other employee benefits' was added to record any other benefits granted directly by the Ecuadorian companies. This ensures a better organization of the accounting setup. Mark as non-reconcilable the expense accounts (salaries and wages, travel expenses, contributions, etc) to avoid unnecessary reconciliation processes, these accounts are income statements and they are not accounts payable/receivable, therefore, they are closed at the end of the accounting period ### opw-4846355
This change updates the source of lead mining data within Odoo from Clearbit to Dun & Bradstreet. This aligns with existing data usage for partner autocomplete and ensures we're leveraging a reliable provider for improved lead insights. This update is part of a larger IAP migration.
Original PR description
Before this commit: - Lead mining data was fetched from `clearbit` provider on IAP which is now going to be removed for discovery service After this Commit: - Data will now be fetched from `dun_and_bradstreet` provider on IAP which we are already using for the `partner_autocomplete` IAP PR: https://github.com/odoo/iap-apps/pull/1274 task-4873238 Forward-Port-Of: odoo/odoo#235521
Resolved issues and error corrections
This update ensures Odoo correctly handles the LeitwegID requirement for X-Rechnungen (German electronic invoices) when using the Peppol Endpoint. Previously, the LeitwegID was incorrectly placed in the 'Reference' field, leading to invoice rejections. Now, the system automatically populates the BT-10 field with the LeitwegID when this Peppol Endpoint setting is active, ensuring compliance with German regulations.
Original PR description
Description of the issue/feature this PR addresses: German regulations specify that the LeitwegID appears in the field BT-10. However, this field is usually filled with the value of the "ref" field…
Description of the issue/feature this PR addresses: German regulations specify that the LeitwegID appears in the field BT-10. However, this field is usually filled with the value of the "ref" field of the customer, potentially creating a situation where the Odoo user thinks they have entered the data into Odoo correctly (Having set the Peppol Endpoint Type to "Leitweg ID" and entered the Leitweg-ID into the Peppol Endpoint field), but their invoice is still rejected because the Leiweg ID does not appear in the correct spot. Current behavior before PR: To generate a valid X-Rechnung to a German government office, the Leitweg-ID has to be put into the "Reference" field of the contact, conflicting with other potential uses for that field. Desired behavior after PR is merged: If the Peppol Endpoint is set to be a LeitwegID, the X-Rechnung also fills it into the BT-10 Field to ensure conformity to the German regulations. References: [German FAQ regarding Leitweg-ID](https://e-rechnung-bund.de/faq/#leitweg-id) [Specification of the LeitwegID](https://xeinkauf.de/app/uploads/2022/11/Leitweg-ID-Formatspezifikation-v2-0-2-1.pdf) --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update fixes an error in the reporting of key Balance Sheet codes (420.1 and 420.2), ensuring accurate calculations of undistributed profit. The changes involved correcting formulas and preventing double-counting, resulting in more reliable financial reporting.
Original PR description
The formulas for 'Undistributed profit after tax brought forward' (420.1) and 'Undistributed profit after tax for the current year' (420.2) were calculating incorrect values. Issues fixed: - Changed date_scope from `from_fiscalyear`/`to_beginning_of_fiscalyear` to `from_beginning` where historical cumulative values are needed. - Added missing negative signs to account code formulas (`-4211`, `-4212`, `-911`) to correctly display credit balances as positive equity. - Removed unnecessary `py_balance` expression with conditional logic. - Added subtraction of `UPATCY.balance` from `UPATBF.balance` to prevent double-counting when aggregating to parent line 420. - Added missing `py_account_codes` expression (`-4212`) to `UPATCY`. task-5492884
This update resolves an issue where the map component wasn't displaying correctly within the Odoo Studio. The fix ensures the map renders properly, but further work is needed to enable user interaction with the map. This improves the usability of the Studio for creating and managing maps.
Original PR description
Before this commit, the map did not render in studio. This was because the container did not have a size. After this commit, the map renders correctly, but it is still not clickable or interactable. task-5432169
This update fixes an issue where LATAM invoices with numeric sequence prefixes would incorrectly restart the invoice sequence, leading to duplicate document numbers. The change adjusts how invoice sequences are generated to properly handle the specific formatting requirements of LATAM legal invoicing, ensuring unique invoice numbers are always assigned.
Original PR description
**Issue:** When invoices in a journal enabled to "Use Documents" for LATAM legal invoicing have a sequence prefix with numbers, the next invoice will restart the sequence and try to use already-used…
**Issue:** When invoices in a journal enabled to "Use Documents" for LATAM legal invoicing have a sequence prefix with numbers, the next invoice will restart the sequence and try to use already-used sequences. **Steps to Reproduce:** - Install l10n_pe_edi - Change to PE Company - Duplicate the Customer Invoice journal, give it shortcode "01A" - Create an invoice in dupe journal, set customer to "Comercial Constructora los Patitos S.A.", set product and tax, Document Type = (01) Factura - Confirm the invoice, it will have name "F F01-00000001" - Duplicate the invoice -> The new invoice has the same sequence number, and the document number is visible Expected: Invoice is called "Draft" (/), document number is not visible, and upon confirming the invoice, it will have the name "F F01-00000002" **Cause:** - LATAM invoices do not follow the standard formats in sequence_mixin.py, so _deduce_sequence_number_reset will always return "never" - However, the result of this method is used in _get_last_sequence_domain, and assumes that the sequence follows the corresponding format to "never" (_sequence_fixed_regex) - This isn't the case if the prefix has numbers, it will be captured in the _sequence_yearly_regex - anti-regex is used to filter sequences that aren't _sequence_fixed_regex, but this causes prefixes with numbers to never be found, and always restart the sequence **Solution:** - Add context value "no_anti_regex" to skip sequence exclusion - If the invoice is LATAM, call _get_last_sequence_domain with context "no_anti_regex" = True so no sequences are excluded. - Because LATAM invoices are always in a fixed format, we don't need to filter out sequences in other formats opw-5111844 Forward-Port-Of: odoo/odoo#235000
This update fixes an issue where LATAM invoices with numeric sequence prefixes would incorrectly restart the invoice sequence, leading to duplicate document numbers. The fix temporarily bypasses a sequence filtering rule to ensure correct invoice numbering for LATAM legal invoicing, ensuring accurate invoice generation.
Original PR description
**Issue:** When invoices in a journal enabled to "Use Documents" for LATAM legal invoicing have a sequence prefix with numbers, the next invoice will restart the sequence and try to use already-used…
**Issue:** When invoices in a journal enabled to "Use Documents" for LATAM legal invoicing have a sequence prefix with numbers, the next invoice will restart the sequence and try to use already-used sequences. **Steps to Reproduce:** - Install l10n_pe_edi - Change to PE Company - Duplicate the Customer Invoice journal, give it shortcode "01A" - Create an invoice in dupe journal, set customer to "Comercial Constructora los Patitos S.A.", set product and tax, Document Type = (01) Factura - Confirm the invoice, it will have name "F F01-00000001" - Duplicate the invoice -> The new invoice has the same sequence number, and the document number is visible Expected: Invoice is called "Draft" (/), document number is not visible, and upon confirming the invoice, it will have the name "F F01-00000002" **Cause:** - LATAM invoices do not follow the standard formats in sequence_mixin.py, so _deduce_sequence_number_reset will always return "never" - However, the result of this method is used in _get_last_sequence_domain, and assumes that the sequence follows the corresponding format to "never" (_sequence_fixed_regex) - This isn't the case if the prefix has numbers, it will be captured in the _sequence_yearly_regex - anti-regex is used to filter sequences that aren't _sequence_fixed_regex, but this causes prefixes with numbers to never be found, and always restart the sequence **Solution:** - Add context value "no_anti_regex" to skip sequence exclusion - If the invoice is LATAM, call _get_last_sequence_domain with context "no_anti_regex" = True so no sequences are excluded. - Because LATAM invoices are always in a fixed format, we don't need to filter out sequences in other formats opw-5111844 Forward-Port-Of: odoo/enterprise#101620
This update fixes an issue where foreign currency rates weren't correctly applied when generating Datev CSV export reports. Now, the system accurately uses the specified currency rate, ensuring accurate financial reporting for Datev integration. This improves the reliability of data exported to Datev.
Original PR description
When we set the foreign currency rate on invoices, it won't be used when exporting the report. Make sure to use the correct currency rate. task-5404816 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update fixes an issue where foreign currency rates weren't correctly applied when generating Datev CSV reports. Now, the system accurately reflects the invoice's foreign currency rate during report export, ensuring accurate financial reporting for Datev. This improves the reliability of data sent to Datev.
Original PR description
When we set the foreign currency rate on invoices, it won't be used when exporting the report. Make sure to use the correct currency rate. task-5404816
This update fixes an issue where invoices could be incorrectly linked to DIAN documents due to a previous fix that didn't account for legitimate DIAN error messages. Now, the system verifies key invoice details (customer, date) before linking to the DIAN document, ensuring accurate reporting and compliance.
Original PR description
**Steps to reproduce:** (only reproducible in production) - Install accountant and l10n_co_dian - Switch to a Colombian company (e.g. CO Company) - In Accounting settings, configure the Colombian…
**Steps to reproduce:** (only reproducible in production) - Install accountant and l10n_co_dian - Switch to a Colombian company (e.g. CO Company) - In Accounting settings, configure the Colombian localization with valid DIAN credentials - Create an invoice for a Colombian customer - Confirm the invoice - Send the invoice to DIAN - Cancel and delete the invoice - Create another invoice for another Colombian customer with the same name (sequence) than the previously deleted invoice - Confirm the invoice - Send the invoice to DIAN **Issue:** A previous fix (https://github.com/odoo/enterprise/commit/4d782030631350cfaa8f2993e68f33c9f66929e4) had been made to sync together a DIAN document from Odoo and DIAN when the following error was returned by DIAN: "Regla: 90, Rechazo: Documento procesado anteriormente." It can happen when an invoice is sent to DIAN but due to a connection issue, the DIAN response is not received and the invoice is flagged as rejected. In that case, the "Regla: 90" error is returned by DIAN when trying to send the invoice again and the fix is linking the identifier returned by the DIAN error with the invoice to prevent this issue. However, the fix wasn't taking into account the case in which the error returned by DIAN is legit and the identifier is linked to another document. It results of having an invoice that is linked to an incorrect document in DIAN. The customer, date and other info, completely different. **Solution:** When "Regla: 90" error is returned by DIAN, a check is performed to make sure that the customer, the issue date and time on the document in Odoo and on the XML from DIAN are the same before assigning the identifier from DIAN to the document in Odoo. opw-5095212
This update resolves a problem where Odoo invoices exported to the SII system (Chile) were being rejected due to incorrect decimal formatting. The fix ensures the `<TotClauVenta>` tag always uses a maximum of two decimal places, aligning with SII requirements and preventing validation errors. This ensures accurate export invoices and avoids potential rejection by the SII system.
Original PR description
Before this PR: Everything works fine, but if the user change the decimal precision for foreign currency (i.e. USD, usually needed for export invoices, for example to three decimals), the SII system…
Before this PR: Everything works fine, but if the user change the decimal precision for foreign currency (i.e. USD, usually needed for export invoices, for example to three decimals), the SII system rejects the invoice. The rejectment cause is cryptic, and difficult to undertand, since it says: That is expecting a `<Documento>` tag, while this tag is not used in Exports invoices (the correct tag is `<Exportaciones>`. The real cause of the error is that if the `<TotClauVenta>` tag has more than 2 decimals is ignored, and if it is ignored, the SII system assumes that the invoice is not an export invoice, and that's why an incorrect tag is expected by the validator. After this PR: We simply forced the decimals of the tag `<TotClauVenta>`to 2. This definitely solves the issue. Source: https://www.sii.cl/factura_electronica/formato_dte.pdf Capture of this portion of the normative: <img width="626" height="118" alt="Captura de pantalla 2026-01-07 a la(s) 18 21 06" src="https://github.com/user-attachments/assets/3b9ec8f0-d343-4819-8589-67afeeeba807" /> Forward-Port-Of: odoo/enterprise#103600
This update resolves an issue where the 1099 report incorrectly identified the payer company when generating reports with multiple companies. The fix ensures that each line item in the 1099 report accurately reflects the correct payer company, improving the accuracy of tax reporting for businesses using a multi-company configuration. This resolves a previous bug impacting 1099 report generation.
Original PR description
When generating 1099 report with multicompany setup, the payer company is wrongly assigned in the csv file. Steps: - Have 2 companies - Make one bill per company with one different 1099 vendor for each one - With both companies selected, generate the 1099 report - open the csv file -> Payer name is the same for both line opw-5442190 Forward-Port-Of: odoo/enterprise#103805
This update fixes an issue where the TTC (Tax Total Charge) value was incorrect for taxes with negative tax rates. It also prevents a potential error related to missing payment method information, ensuring accurate financial reporting. This improves the reliability of tax calculations within the Odoo Enterprise system.
Original PR description
This PR complete the fix in the following PR: https://github.com/odoo/enterprise/pull/104619 The TTC value was incorrect for taxes with negative tax rate An error may be raised if bill_data['payment_method'] is None opw-5002779
This update fixes a bug where merging tables in POS restaurants would cause orders to be duplicated and sent to the kitchen, leading to wasted food. The fix prevents the order from being deleted and re-created, ensuring accurate order processing and reducing potential losses. This improves restaurant efficiency and accuracy.
Original PR description
**Problem:** When merging two tables in the middle of their service, the moving table's order would be deleted and then made again. The problem is that this order would be sent to the kitchen, making…
**Problem:** When merging two tables in the middle of their service, the moving table's order would be deleted and then made again. The problem is that this order would be sent to the kitchen, making the order cancelled and displaying another one with the same content. This would lead to food wastage as the order would be made twice. **Steps to reproduce:** - Open the restaurant, chose two tables and make an order for the two of them. - Confirm the order. - Drag and drop the tables next to each other to merge them. - The dragged table's order will be deleted and made again in the kitchen. **Why the fix** https://github.com/odoo/odoo/blob/cf525d2a981515d39a126c6dfb5a612338cc8d14/addons/pos_restaurant/static/src/overrides/models/pos_store.js#L349 The order was deleted, causing the kitchen to receive the same order two times. It was done because when merging the tables, the order would be cancelled, and put in the new table's orders that need to be confirmed (order button). It was only when pressing this button that the order was sent again to the kitchen. This was done in two steps, because we needed to first cancel the order and then manually confirm it again. The order is no longer cancelled, the kitchen doesn't get the order twice, as the order is not replaced. opw-4654226
This update fixes an issue where merging tables in the POS system would create duplicate orders sent to the kitchen, leading to wasted food. The change prevents the order from being deleted and re-created, ensuring accurate order processing and reducing potential losses. This improves operational efficiency and minimizes food waste.
Original PR description
**Problem:** When merging two tables in the middle of their service, the moving table's order would be deleted and then made again. The problem is that this order would be sent to the kitchen, making…
**Problem:** When merging two tables in the middle of their service, the moving table's order would be deleted and then made again. The problem is that this order would be sent to the kitchen, making the order cancelled and displaying another one with the same content. This would lead to food wastage as the order would be made twice. **Steps to reproduce:** - Open the restaurant, chose two tables and make an order for the two of them. - Confirm the order. - Drag and drop the tables next to each other to merge them. - The dragged table's order will be deleted and made again in the kitchen. **Why the fix** https://github.com/odoo/odoo/blob/cf525d2a981515d39a126c6dfb5a612338cc8d14/addons/pos_restaurant/static/src/overrides/models/pos_store.js#L349 The order was deleted, causing the kitchen to receive the same order two times. It was done because when merging the tables, the order would be cancelled, and put in the new table's orders that need to be confirmed (order button). It was only when pressing this button that the order was sent again to the kitchen. This was done in two steps, because we needed to first cancel the order and then manually confirm it again. The order is no longer cancelled, the kitchen doesn't get the order twice, as the order is not replaced. The deleteOrders function would make those two steps, first sending another ticket in the kitchen, then deleting the one that was duplicated and just sent to the kitchen. opw-4654226
This update corrects a flaw in how commission averages are calculated when grouping sales data. Previously, all commissions were treated equally, which inaccurately reflected the value of larger commissions. The fix now uses a weighted average, ensuring that higher-value commissions have a greater influence on the reported average, leading to more reliable reporting.
Original PR description
**Problem:** When grouping the commissions, the achieved_rate field was computed by making the average of the achieved_rates, making a regular average. This average doesn't really make sense as a…
**Problem:** When grouping the commissions, the achieved_rate field was computed by making the average of the achieved_rates, making a regular average. This average doesn't really make sense as a commission of 1 euros would have the same weight as a commission of 1000 euros. It made sense to compute the average of the achieved rate as a weighted average, so that the commissions worth more would have more weight in the computed result. **Steps to reproduce:** - Go to commissions in the sales app - Make the achieved rate field visible by clicking on the dots on the right - Make a Group By - The average of the achieved rate is not computed correctly **Cause of the issue:** https://github.com/odoo/enterprise/blob/7d52febd7d870d381c887e171217b9a13fed4b4a/sale_commission/report/commission_report.py#L19 The default average aggregator was given, but didn't take into account that some commissions should weight more in the average result. **Fix:** The read_group function was overrided to compute the achieved_rate depending on the achieved and the target_amount fields. opw-4512739
This update corrects a limitation in how Odoo updates electronic invoices for Mexico (l10n_mx_edi). Previously, updates were limited, leading to inaccurate tracking. Now, the system is forced to update the document's write date, ensuring accurate record-keeping and compliance.
Original PR description
Before the commit 8b118a7, the search of the documents to update has been limited and ordered. With the actual domain the records to update will be most of the time the same because is not being updated. To fix this issue we force to update it. OPW-5368047
This update resolves an issue that occurred when users attempted to 'Show', 'Force CFDI', or 'Retry' actions on MX electronic invoices. The problem stemmed from a payment being deleted or cancelled, leading to an error. This fix ensures a smoother process for generating and submitting CFDI invoices.
Original PR description
When user is clicking any of the `Show`, `Force CFDI`, or `Retry` buttons in l10n_mx_edi.document error occurs. Steps to reproduce: - Install `l10n_mx_edi` module > Switch to `MX Company` - Setup `MX Electronic invoicing` in settings - Create a New Invoice > Send > Select `CFDI` > `Pay` > `Update Payments` - Payment > Cancel that Payment > Back to Invoice > CFDI(Notebook page) > Click on `Show` or `Force CFDI` or `Retry` Traceback: `ValueError: Expected singleton: account.move()` This error occurs when a payment is created and later deleted or cancelled, which results in an empty `move_id` in l10n_mx_edi.document. sentry-7113267386