Wednesday, September 10, 2025
5 changes · saas-18.3
Enhancements to existing features
The invoice form now shows a helpful placeholder for the Incoterm field based on the company’s default setting. If no default Incoterm is configured, users still see clear guidance text, making data entry easier and more consistent.
Original PR description
This commit adds a dynamic placeholder to incoterm field form view in `account.move`. The placeholder is dynamically set as the default incoterm value in setting. If no default is chosen, a default text is shown. task-4788236 Current behavior before PR: No placeholder is set to incoterm field in account move form view. Desired behavior after PR is merged: Dynamic placeholder set to incoterm field in account move form view with default incoterm value chosen in setting. If no default incoterm is chosen, a default text placeholder is shown. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
The Peppol registration wizard now includes more helpful explanations for certain company information fields. This helps users understand why the requested details are needed and reduces confusion during electronic invoicing setup.
Original PR description
…ion wizard. Give move information on what the registration information are used for. task-none Forward-Port-Of: odoo/odoo#225730
Mexican CFDI e-invoices are now generated from invoice lines in the same way the SAT validates them, reducing the risk of rejection due to rounding or total mismatches. Any small difference from the original document is handled through discounts where possible, or by adding an adjustment line when needed.
Original PR description
Simplify the CFDI generation. Now the totals are always computed from the lines. That way, it's impossible for the SAT to refuse a CFDI since it's built in the way the SAT checks the validity of the file. The difference between the CFDI total and the original documents is put using the discount if available. If not, we add a fake line in the CFDI. task-id: 4926200
IoT boxes now receive a clear unauthorized error when they try to download drivers but are not recognized by the database. This makes connection or setup issues easier to diagnose instead of failing with an unclear empty response.
Original PR description
When an iot box tries to download drivers from the database, but the db doesn't have a record corresponding to the IoT Box, the IoT Box receives an empty string, making it hard to debug why it couldn't download handlers. We now raise an unauthorized error to make it clearer. Forward-Port-Of: odoo/enterprise#93813
Users with Invoicing & Banks access can now start an online bank synchronization when a bank journal is configured for online feeds and not yet connected. This makes bank connection setup available to the right finance users directly from the journal dashboard, reducing reliance on higher-access users.
Original PR description
Before this commit: - Users with "Invoicing & Banks" access rights could not create a bank synchronization, and the "Connect Bank" button was not visible. After this commit: - Users with "Invoicing & Banks" access rights can now create a bank synchronization if the journal has "Bank Feeds = Online Synchronization" and the bank is not yet connected. - The "Connect Bank" button is now visible to them. task-4840544 Forward-Port-Of: odoo/enterprise#87408