Tuesday, October 14, 2025
6 changes · saas-18.4
Enhancements to existing features
The Peru localization now includes the required withholding tax and tax group by default. This helps identify customers who are withholding agents and supports upcoming invoice XML compliance updates.
Original PR description
Withholding taxes are required to indentify if a customer is a withholding agent. This PR introduces the tax and tax group for the enterprise PR that will generate the changes for the Invoice XML. task-4989463
Peruvian invoices can now include the required withholding reference when the customer is a withholding agent. This helps companies meet local electronic invoicing requirements for these customers while keeping the withholding amounts out of invoice totals as required.
Original PR description
Some customers in Peru are considered "agentes de retención", and as such have special considerations that are necessary. We must perform specific actions when working with these customers, when selling to them we must: - recieve a specific document from the customer (A followup task will add this support for companies to generate this document) - Include a retention reference in our XML. This is represented as a specific `AllowanceCharge` node that is the sum of all of the Withholding taxes on the lines with the specific code of 62. We know an invoice is to a withholding customer because all lines must have a tax that is a part of the withholding tax group. This withholding tax is not included in the monetarytotals, tax totals, or invoice line values. And there can be only one AllowanceCharge node per invoice, not one per line. task-4989463
The account merge process now gathers existing account codes in one database query instead of checking each company one by one. This reduces waiting time during account merges, especially in databases with many companies.
Original PR description
The merge wizard needs to collect the account codes of the accounts we are merging in order to write them on the merged account as the final step of the merging process. At the moment, collecting the account codes is done in Python and loops over all the existing root companies, retrieving the code of the account for each company. On a recent l10n [runbot](https://runbot.odoo.com/runbot/build/90542336) (with 146 companies), this was causing the merging step to take ~4.5 seconds per account, most of this time being taken just by collecting the account codes. Instead, we collect the codes in a single SQL query. Flamegraphs: [before.json](https://github.com/user-attachments/files/22726956/before.json) [after.json](https://github.com/user-attachments/files/22726960/after.json) task-none Forward-Port-Of: odoo/odoo#230158
This update adds clearer internal documentation for the website builder's action system. It helps developers understand and maintain the builder more easily, reducing the risk of future errors without changing how users work with the product.
Original PR description
This commit adds JSDoc for `BuilderAction` and related concepts.
Companies using Austrian POS integration can now automatically invite their configured company email to access the Fiskaly dashboard. If the email changes, a new invitation is sent, and existing Fiskaly organization details are kept up to date.
Original PR description
In this commit: ------------------ - If a company email is set in the company information, we send an invitation to that email, allowing the user to access their company data on the Fiskaly dashboard by logging in using the company email. - If the email is later updated, access invitation will automatically be sent to the new email. - If the fiskaly organization exists, we should update the organization data even if the authentication is remaining to keep the data uptodate. Related PR: https://github.com/odoo/iap-apps/pull/1098 Task: 4881786 Forward-Port-Of: odoo/enterprise#88106
UAE payroll now excludes unpaid sick leave and out-of-contract unpaid leave when calculating end-of-service payments and provisions. End-of-service payslips also show the total unpaid leave days, making the calculation clearer for payroll teams and employees.
Original PR description
This commit excludes the Out Of Contract Unpaid Leaves and Unpaid Sick Leave days from the EoS and EoS Provision Salary Rule Calculations. We also show the total number of unpaid leave days on the EoS payslip. task-4886104 Forward-Port-Of: odoo/enterprise#96965 Forward-Port-Of: odoo/enterprise#95465