Daily updates from Odoo
Friday, May 23, 2025
11 changes · 18.0
New functionality added to Odoo
This update adds support for Spain's TicketBAI/Batuz reporting requirements for vendor bills under the agriculture, stock breeding, and fishing special regime. Businesses using this regime should be able to send the affected bills electronically instead of being blocked by unsupported tax reporting rules.
Original PR description
Description of the issue/feature this PR addresses: ticketbai don't support agriculture special regime in batuz LROE 240. Current behavior before PR: don't sent vendor bills with agriculture, stock breeding and fishing special regime. Desired behavior after PR is merged: support for this special regime --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Adds Balance Sheet and Profit and Loss reports for the Chinese localization. This helps companies using Chinese accounting standards produce key financial statements directly in Odoo for both ASBE and ASSBE requirements.
Original PR description
Add BS and P&L for the chinese localisation, both are added for ASBE and ASSBE. task-3386893
Enhancements to existing features
The China localization updates its accounting chart templates to better match the official ASBE and ASSBE account lists. This helps businesses using the China localization start with more accurate accounting structures and tax/demo data aligned with local standards.
Original PR description
Improve both chart templates by reworking them to better follow the ASBE and ASSBE account lists. task-3386893 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Resolved issues and error corrections
Manufacturing order overviews now show costs only for the selected product variant instead of adding costs from all possible variants. This prevents inflated production cost figures and gives teams a more accurate view of margins and component costs.
Original PR description
**Problem:** For products with variants and differents steps for the BoM depending on the variant, the Manufacturing Order overview for a given product with a given variant would display the sum of…
**Problem:** For products with variants and differents steps for the BoM depending on the variant, the Manufacturing Order overview for a given product with a given variant would display the sum of the cost of all variants possible for this product. If we had a product "Drawer" with a color variant "Black" and "White", which cost 10 and 20 euros respectively, the Manufacturing Order overview of a Black Drawer would display the cost of the drawer + **30** euros (10+20), instead of being the cost of the drawer + **10** euros. The display cost is the sum of the price of every variants for this product, instead of being the price of the current variant of the product. **Steps to reproduce:** - Create a product with variants - Change the BoM and make some components needed only for certain variants and add a price for them - Go to the MO overview - The Cost BoM cost total is the sum of all prices AND variants **Cause of the issue:** https://github.com/odoo/odoo/blob/d3ab7b2c3ceddbb4cb8d8e91fac0d60e28e5673a/addons/mrp/report/mrp_report_mo_overview.py#L85 This treats every remaining lines of the BoM as a missing component, thus adding it's price to the total price. Some lines should only be applied if a specific variant is selected, but with this code, every line that has a condition depending on variants will be taken in. **Fix:** Before adding the product of a BoM line to the missing components, we check that the BoM line should be applied to the current variant. The missing components are still used and can be not empty in the case where the BoM includes a line that was deleted from the MO, making the MO cost and the BoM cost different. In this case, the missing components will not be empty and will still work as intended without taking the unwanted variants into account. opw-4557169
Websites using non-ASCII domain names, such as city names with accents, can now be matched correctly. This prevents visitors from being routed incorrectly or failing to reach the intended website when internationalized domains are used.
Original PR description
Since [1], domain name matching in get_current_website did not account for IDNA (punycode) encoding, making it impossible to use non-ASCII domain names (e.g., düsseldorf.localhost). This commit fixes the issue by normalizing the incoming domain to Unicode, then encoding it to punycode for comparison with stored website domains, ensuring correct resolution of websites with internationalized domain names. [1]: https://github.com/odoo/odoo/commit/4a202440b8d9bbe8e93e1ae47b68159330c8836d task-4756915
Bills with multiple payment installments now show in the Overdue filter as soon as any unpaid installment is past due. This helps accounting teams spot and act on partially overdue vendor bills earlier, instead of waiting until every installment is late.
Original PR description
Issue ---- Invoice/Bills with multiple installments would only appear in the "Overdue" filter when all installments were past due, making it hard to track partially overdue bills. Step to reproduce ---- Navigate to Accounting > Vendors > Bills. Create a bill with `Payment terms` (e.g., "30% Now, Balance 60 Days"). Apply the `Overdue` filter in the Bills view. Fix ---- The overdue filter now uses `next_payment_date`, which reflects the earliest due date of the remaining unpaid installments. As a result, a bill will be shown as overdue as soon as any of its installments are late. ---- opw-4661825
The self-ordering product screen now uses the active currency settings to round and display variant price differences. This fixes cases where small price adjustments on product variants were hidden, helping customers see accurate prices before ordering.
Original PR description
Steps to reproduce: ------------------- 1. Create a PoS product with variants, one of the variant with a `price_extra` less than 0.5 2. Activate self ordering and open that interface 3. Choose the product we created in step 1 Observation: the variant that have an `price_extra` less than 0.5 does not show that price different. Reason: ------- We are using the config `decimal_places`, which existed prior to version 17.4, but it has since been removed in 17.4+, but we still reference this config field in pos_self_order !! Fix: ---- Use the precision field from `currency.decimal_places` instead. opw-4706506
When a company contact is reassigned to a different main partner with the same VAT number, related accounting entries are now updated to match. This helps prevent inconsistent accounting documents during partner merges or commercial entity reorganizations.
Original PR description
…ith identical VAT When changing the `commercial_partner_id` of a partner, ensure that related `account.move.line` and `account.move` records are updated to reflect the new partner association — but only if the new main partner shares the same VAT. This prevents data inconsistency in accounting documents and ensures that moves and move lines remain correctly linked when merging or reassigning commercial entities. task-4707491 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
The Documents cleanup process now avoids deleting signed documents that must be retained, preventing background errors and preserving important signed records. Users still receive a clear validation message if they try to delete a protected signed document manually.
Original PR description
When a signed document is moved to trash in the documents app, when the cron tries to delete the said document it should raise a foreign key violation error in the terminal not in UI. **Steps to…
When a signed document is moved to trash in the documents app, when the cron tries to delete the said document it should raise a foreign key violation error in the terminal not in UI. **Steps to reproduce:** * Install document and sign * Document App> all> click `Employment contract.pdf`. * Select sign>drag and drop Signature>Sign now * Sign the document>validate and send completed document * Documents>certificate of completion or the signed document>actions>trash * The error will be produced when cron deletes the document. * You can delete the document from trash to see what error will be displayed by cron. `ERROR: update or delete on table "ir_attachment" violates foreign key constraint "sign_request_completed_document_rel_ir_attachment_id_fkey" on table "sign_request_completed_document_rel"` **Solution:** * Modifying the domain for `_gc_clear_bin` via a new function called overridden `_gc_documents_domain` in `documents_sign` this will allow for cron to skip over signed required document during unlink process. * This will still throw an `Validation Error` when the user tries to delete it from the GUI letting them know it cannot be deleted. Sentry-6225030131
Generating Indian payroll payment reports now works even when an employee's bank record does not include a Bank Identifier Code. This prevents a blocking error during payslip processing and supports normal payroll workflows when optional bank details are incomplete.
Original PR description
Currently a traceback is occurring when the user tries to generate a payslip report. To reproduce this issue: 1) Install `l10n_in_hr_payroll` and shift to Indian company 2) Create an employee and a bank account in the private information of employee 3) Remove the `Bank Identifier Code` from the `Bank` while creating a bank record 4) Create a new `payslip` record with a `running contract` 5) Confirm the payslip and click the `Create Payment Report` Error:- ``` TypeError: expected string or bytes-like object, got 'bool' ``` As the `bank_bic` is not a required field, user can removes it. if there is no `bank_bic`, it leads to the above traceback from the below line. https://github.com/odoo/enterprise/blob/e2a9442ac33579c9833f65f59cf8341b3c6eafc8/l10n_in_hr_payroll/models/hr_employee.py#L24 sentry-6199042870
POS orders in the Mexican localization now keep a default CFDI usage even when no invoice is created at checkout. This lets users select or adjust the CFDI usage later in the backend when manually generating an invoice.
Original PR description
**Issue** In the Mexican localization, the CFDI usage (`l10n_mx_edi_usage`) field is not visible on POS orders in the backend. This prevents users from selecting or modifying the usage when manually…
**Issue** In the Mexican localization, the CFDI usage (`l10n_mx_edi_usage`) field is not visible on POS orders in the backend. This prevents users from selecting or modifying the usage when manually generating an invoice from the POS order. **Steps to Reproduce** 1. Install the Point of Sale app and the Mexican localization (l10n_mx) 2. Complete a POS order without generating an invoice 3. In the backend, go to Point of Sale > Orders > Orders 4. Open the newly created order 5. Notice that the CFDI Usage field is missing **Root Cause** The usage field is given a default value at the model level: https://github.com/odoo/enterprise/blob/bc3db24f83473d5646f7c2cfca8ed1c5b064ea2e/l10n_mx_edi_pos/models/pos_order.py#L65-L70 However, this value gets lost during the order processing flow. When an invoice is requested directly from the POS UI, the usage is explicitly set in the `sync_from_ui` method: https://github.com/odoo/enterprise/blob/bc3db24f83473d5646f7c2cfca8ed1c5b064ea2e/l10n_mx_edi_pos/models/pos_order.py#L110-L112 But if no invoice is requested at the time of the order, the usage is not preserved or restored in the backend. **Fix** Explicitly set the CFDI usage to its default value when an invoice is not requested during the POS flow. This ensures the usage field is retained and displayed properly in the backend, allowing users to create invoices manually. opw-4776487