Daily updates from Odoo
Saturday, August 30, 2025
14 changes
1 change
Resolved issues and error corrections
Users switching a server action away from “update with AI” will no longer see a validation warning that no longer applies. This prevents confusion and makes configuring automated actions smoother.
Original PR description
Bug === When setting a server action "update with AI", and switching to a different type of action, the validation error could be raised because we didn't check the `state`. Task-4989962 Forward-Port-Of: odoo/enterprise#92516
9 changes
Resolved issues and error corrections
Resending documents for multiple payslips no longer fails when the system prepares the related email templates. This helps payroll teams process batches reliably without needing to resend each payslip one by one.
Original PR description
since https://github.com/odoo/enterprise/commit/a2829976f5ec0c8c31fc63d931ce2bae44429560, if the action is called on multiple records, the ensure_one of _get_email_template of documents_l10n_ch_hr_payroll module will make it crash. This commit calls the get_template method on each payslip instead. Task-5051591
This fix ensures the correct company is used when applying exchange or rate information in bank statement processing. It helps prevent accounting calculations from using the wrong company context in multi-company setups.
Original PR description
In this commit: https://github.com/odoo/enterprise/commit/92b06bd5bf4084066a03f8b98e2c66e40bf9a64b we added a with company but at a wrong place since it should be on the rate. no task id
Website previews will temporarily stop generating footers because a supporting configuration option was removed. This prevents preview issues while the team prepares a longer-term replacement for footer customization.
Original PR description
Since `website.snippet_options` has been removed, we need an alternative to add a new option for the footer. In the meantime (for previews of 19.0) we temporarily fix this issue by disabling footer generation.
The rental sales return flow was adjusted so the 'Return for Exchange' button keeps the correct visibility rules. This helps prevent users from seeing or using the button in situations where it should remain hidden.
Original PR description
Adapt the xpath to make sure the invisible condition on the 'Return for Exchange' button is not overriden. tasks 4748294 & 4778066 Forward-Port-Of: odoo/enterprise#93456 Forward-Port-Of: odoo/enterprise#89090
Invoices created after customers pay subscriptions through the portal now correctly generate the required signed electronic documents. This restores compliance-related invoice processing for affected localizations, including Mexican electronic invoicing, and prevents missing government signatures after online payments.
Original PR description
## Steps to reproduce: - Make sure the Mexican localization is installed and properly set up for signing invoices - Make sure the payment providers are set up (it can be demo, the customer uses…
## Steps to reproduce: - Make sure the Mexican localization is installed and properly set up for signing invoices - Make sure the payment providers are set up (it can be demo, the customer uses Stripe but it can be reproduced with any - Make sure the online payment setting is active - Go to subscription module - Do a new order - In other info, add the online payment checkmark - Confirm the order - Generate the payment link or go into the preview - Make the payment ## Issue: The invoice is generated, but is not signed by the government (no edi is generated), as it used to. ## Cause: The flow works in 17.0 but for the wrong reason. Before this [commit](https://github.com/odoo/enterprise/pull/70562), two mails were sent. And during the chain of triggers of the second email, edi document was generated with `orders._send_success_mail(tx.invoice_ids, tx)`. https://github.com/odoo/enterprise/pull/70562/files#diff-8778c8dce7ca1c24de19f26f11ac0c5410c6c2a4d121c3815682a2323cbb09c2L177 After the removal of the method, it should still work since we still have `payment.transaction._send_invoice` which calls `_generate_and_send_invoices` and should trigger the sub calls necessary for generating the edi stuff. But in `_create_or_link_to_invoice`, we check that the transaction has no invoice_ids linked (make sense with the name of the method). However, at this stage, we already created the invoice in https://github.com/odoo/enterprise/blob/2f3698b250092ad376344e959d46bdc0eebf1a81/sale_subscription/controllers/portal.py#L419-L424 And unfortunately, it will be effectively possible to "let the post process of transaction create" the invoices only in Master (the code is not ready yet). For now it would be too risky for a stable version to make such change. ## Solution: We ensure EDI documents are generated whenever a `subscription_action` is set. To achieve this, modify the `_post_subscription_action` hook to call `_subscription_post_success_payment` for any `subscription_action`, including `assign_token`. From `_subscription_post_success_payment`, we can call `_generate_and_send_invoices` on any invoice that has an EDI associated with it, which sends & signs the required EDI documents. opw-4648189 Forward-Port-Of: odoo/enterprise#93231 Forward-Port-Of: odoo/enterprise#84815
Stopping a timesheet timer now matches entries using the user's local date instead of UTC. This prevents time from being added to the previous or next day's timesheet for users in different time zones.
Original PR description
Before this commit, if you were to log time on a timesheet using the timer start and stop buttons, you could potentially log time for the previous day's or the upcoming day's timesheet entry. This is because we were searching for previously-created timesheet entries based on the UTC Date of the timer's "stop" time. This fix uses the client's local time to get the Date of the timer stop. With this, we'll only find timesheet entries with the `date` field matching the client's local Date. opw-4967487 Forward-Port-Of: odoo/enterprise#93356 Forward-Port-Of: odoo/enterprise#92569
Switching a server action away from “update with AI” no longer triggers an irrelevant validation warning. This prevents confusion and keeps action configuration smoother for users changing action types.
Original PR description
Bug === When setting a server action "update with AI", and switching to a different type of action, the validation error could be raised because we didn't check the `state`. Task-4989962 Forward-Port-Of: odoo/enterprise#92516
The Hong Kong payroll IR56B report now works more reliably by restoring XML generation and allowing the populate action to be run more than once. This helps payroll teams complete required tax reporting without errors caused by disabled or outdated report fields.
Original PR description
Fixes a few issues with the IR56B report: - Fix the populate button so that it can be pressed multiple times without errors. - Add back the generate XML button in the view. - Fixes an issue in the IRD report model where a renamed field wasn't updated. This re-adds the existing functionality that was wrongly disabled; other improvements are planned for the next version. task-5027501
This fixes Swiss payroll sheet calculation so it no longer unnecessarily recalculates wage-related values after occupation periods are recomputed. As a result, manual adjustments entered by payroll teams are preserved instead of being overwritten.
Original PR description
Following changes in 18.4, compute sheet introduces a recomputation of occupation period which introduces a recomputation of wages, this recomputation is not necessary as it overrides all introduced manual change. Forward-Port-Of: odoo/enterprise#93367
4 changes
Resolved issues and error corrections
This update corrects the Spanish Canary Islands tax configuration for Odoo 18 by using the current field name. It helps ensure tax data loads properly and avoids setup errors caused by an outdated field reference.
Original PR description
Description of the issue/feature this PR addresses: In version 18 of Canary Islands taxes, the “price_include” field no longer exists. It is now called “price_include_override.” 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
This update fixes an internal payroll accounting test that would start failing in 2026 because it depended on the current year. The test now uses a fixed car acquisition date, helping keep payroll validation reliable without changing user-facing behavior.
Original PR description
Some tests will fail in 2026. This adds a freeze time to prevent this failing. Task: 5034173 Forward-Port-Of: odoo/enterprise#92983
Subscription totals now correctly use amounts provided by external tax calculators instead of being recalculated internally. This prevents incorrect recurring totals on externally taxed subscription orders and keeps billing amounts aligned with the external tax provider.
Original PR description
sale_subscription now uses `account.tax` to recalculate the tax amounts [1], thus bypassing amounts set by external calculators. For externally calculated orders, we override the recurring_total calculation to restore the previous behavior of calculating the amount using `price_subtotal` on the lines. This field will contain the amount returned by the external calculator. [1] https://github.com/odoo/enterprise/commit/70376f94e9f26e631890312edc0857d9ff37dc7b opw-4964610
This fix updates Belgian POS compliance checks so product tax validation works as intended. It helps prevent incorrect blocking or validation issues when configuring products for Belgian blackbox fiscal requirements.
Original PR description
Backport of https://github.com/odoo/enterprise/pull/86807