Friday, October 17, 2025
12 changes · 19.0
Enhancements to existing features
Small bank statement imports are now reconciled immediately, while larger imports are still processed in the background to avoid delays. This improves responsiveness for everyday small imports without slowing down heavier accounting workloads.
Original PR description
When doing an import, to avoid taking too much time we decided to trigger the cron directly but for small files it's not really efficient. When the file has less than 80 statement lines we do the auto reconcile otherwise we trigger the cron. task-5162686
Payroll users can now view and manage contract offers directly from the employee form without needing recruitment permissions. This improves day-to-day payroll workflows by giving the right teams access to offer information where they need it.
Original PR description
Previously, the "Offers" smart button on the employee form was only available to recruitment users. This limited visibility for payroll officers who also need access to contract offers. This commit: - Changes the button visibility to `hr_payroll.group_hr_payroll_user` in `hr_employee_views.xml`. - Adds missing access rights in `ir.model.access.csv` for `hr.group_hr_user` (inherited by payroll users). - Updates the module manifest to include the new security CSV. The goal is to ensure payroll users can access and manage offers directly without requiring recruitment rights. task-5085078
The German tax report has been reorganized to better match the official ELSTER VAT return structure. This makes the report easier for German businesses and advisors to review and align with expected filing categories.
Original PR description
Rework the structure of the German Tax Report according to the very well detailed structure https://sevdesk.de/ratgeber/buchhaltung-finanzen/ustva/formular-elster/ task-5046641 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
The German tax report has been reworked after removing a balance column, ensuring the report logic continues to match the new layout. This helps maintain accurate German tax reporting and reduces the risk of reporting issues after the layout change.
Original PR description
After removing the balance column, we need to refactor the code that depends on it task-5046641
The Hong Kong payroll Manulife MPF report is easier to use, with a button to populate employees and safeguards that preserve manual changes. It also corrects how new employee contribution data is split across months, improving report accuracy and reducing manual rework.
Original PR description
Improve the report UX, replacing the compute that didn't really work by a button to populate the employee list, avoid overriding changes done on generated lines, and avoiding to block the feature if some settings are not set to instead display fields for these to relevant users. Also fixes an issue with how the data is recorded for new employees, which would sum the first few months in a single line instead of spreading the data correctly. Precomputation is added to the lines in the report to ensure that the lines appear when the form is opened and do not require to play with the date for it. task-5091533
Refreshing webhooks from the settings now disconnects existing POS product links and sends a fresh menu update to UrbanPiper. This helps ensure the external delivery platform receives the latest product/menu setup after a webhook refresh.
Original PR description
Following this commit: - On refreshing webhooks from settings, products will be unlinked from pos. - Fresh menu will be updated to Urbanpiper platform task-5163764 Forward-Port-Of: odoo/enterprise#97000
Italian electronic invoices are now processed one at a time when sent through the external exchange service, reducing timeout issues when large batches are submitted. This helps prevent scheduled invoice processing from getting stuck and improves reliability for customers sending many invoices at once.
Original PR description
Some clients reported that when they send a full batch size=20 invoices at once, they get a timeout response and the cron job get's stuck. Processing invoices one by one instead of a full batch. IAP-apps PR: https://github.com/odoo/iap-apps/pull/1230 Task [link](https://www.odoo.com/odoo/project.task/5045529) task-5045529 Forward-Port-Of: odoo/odoo#231742 Forward-Port-Of: odoo/odoo#230146
This update prepares Point of Sale IoT connections for upcoming Chrome local network access rules. It helps ensure Odoo can continue communicating with local IoT devices, such as connected hardware, when accessed from secure browser sessions.
Original PR description
Enterprise PR: https://github.com/odoo/enterprise/pull/96850 Local Network Access restrictions will start shipping by default in Chrome 142. As part of this change, local requests will be allowed to use HTTP in an HTTPS context (gated by a browser permission prompt). This will work automatically when the IP is provided directly, however in the case of IoT we often use the odoo-iot DNS domain to resolve the IP. In this case, you must specify the option `targetAddressSpace: "local"` in the `fetch` request. This commit simply adds this change where appropriate. task-5157145 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#231644 Forward-Port-Of: odoo/odoo#231014
This update prepares Odoo’s Point of Sale IoT connections for upcoming Chrome browser restrictions on local network access. It helps ensure local IoT devices can still be reached reliably when using the odoo-iot address, reducing the risk of disruption for stores using connected hardware.
Original PR description
Community PR: https://github.com/odoo/odoo/pull/231014 Local Network Access restrictions will start shipping by default in Chrome 142. As part of this change, local requests will be allowed to use HTTP in an HTTPS context (gated by a browser permission prompt). This will work automatically when the IP is provided directly, however in the case of IoT we often use the odoo-iot DNS domain to resolve the IP. In this case, you must specify the option `targetAddressSpace: "local"` in the `fetch` request. This PR simply adds this change where appropriate. As part of this we have also backported the change from jquery -> fetch. task-5157145 Forward-Port-Of: odoo/enterprise#97224 Forward-Port-Of: odoo/enterprise#96850
Warehouse teams can now choose which IoT printer is used for shipping labels instead of the system automatically picking the first suitable printer. This helps businesses route labels to the right printer by operation type and avoids confusing errors when a printer is not configured.
Original PR description
Printing shipping labels is performed from the backend, once the shipping info are received in the chatter. The printing command is sent to the frontend via the user bus, then though longpolling to the iot box. This commit adds the possibility to select a printer instead of choosing automatically the first (with the right report associated) on the list. As the change is made on a stable version, we are using system parameters to store the selected printer without adding a new field. We associate a printer with the picking type, in order for to be able to have different printers by default on different picking types. backport of odoo/enterprise#86818 Task: 4792491 Forward-Port-Of: odoo/enterprise#97396 Forward-Port-Of: odoo/enterprise#95794
Point of Sale settings now include a test button for Epson receipt printers, helping staff confirm printer setup before using it in daily operations. The test prints a sample receipt or shows a clear error, such as no paper or printer unreachable, and printing now has a 15-second timeout to avoid long waits.
Original PR description
This PR adds a test button to all the views in point of sale where the epos printer can be configured (pos config / res config and preparation printer) When clicked a test receipt is printed on the epos printer or else an error is shown like "no paper" / "failed to reach printer" etc. Finally it adds a timeout of 15s to Epos printing which isn't there now Task-5153542
Project action buttons now remain available for users who have not yet set up their own top bar preferences. When a user's configuration is missing, Odoo reuses the project manager's configuration so teams see the expected project actions without extra setup.
Original PR description
If the current user doesn't have a top bar configuration yet for a given project, we fallback on the top bar configuration of the project manager to show the actions. task-5072899 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr