Friday, August 14, 2026
3 changes · saas-18.3
Enhancements to existing features
Signer email addresses on signature requests can now only be changed by the person who created the request. This helps prevent unauthorized or unintended changes to recipients, improving trust and control in the signing process.
Original PR description
Forward-Port-Of: odoo/enterprise#126675
Resolved issues and error corrections
Odoo now correctly recognizes Brazilian electronic invoice XML files even when the main invoice tag has no extra attributes. This prevents valid vendor bills from being skipped during import, reducing manual handling and import failures for Brazilian accounting teams.
Original PR description
### Issue before this commit: Certain valid Brazilian NF-e (electronic invoice) XML files fail to import because the system silently ignores them during the initial EDI recognition phase. ### Steps to reproduce the issue: 1. Download Accounting and l10n_br_edi 2. Go to Vendor > Bills 3. Try to import both xmls in the ticket 4. One of the two will not be imported correctly ### Cause of the issue: https://github.com/odoo/enterprise/blob/3ed1721b702555e96c9774969927f6517e855704/l10n_br_edi/models/account_move.py#L819-L827 This function relies on a strict byte string search for b"<NFe " while it's also correct if the tag is only `<NFe>`. ### Reason to introduce the fix: To make the initial NF-e file recognition more robust and compliant with standard XML namespace rules, ensuring Odoo successfully processes all valid Brazilian invoices regardless of attribute formatting. opw-6402843 Forward-Port-Of: odoo/enterprise#126881
Luxembourg payroll now calculates indexed wages using the wage index that was active at the payslip period end date, rather than today's index. This helps ensure historical payslips and payroll records remain accurate when wage indexes change over time.
Original PR description
Historical payslips incorrectly used today's wage index instead of the index active during the payslip period. Now, salary rules evaluate the indexed wage using `payslip.date_to` via the new `_get_l10n_lu_indexed_wage(date)` contract method. Task: 6395557 Forward-Port-Of: odoo/enterprise#125861