Tuesday, April 29, 2025
7 changes · 18.0
Enhancements to existing features
Odoo can now restart its main server more smoothly when configured for graceful reload, helping reduce service interruptions during maintenance or deployments. The change also improves compatibility with system-managed startup setups, making operations more reliable for hosted environments.
Original PR description
Before, the only reload option that existed was the `server_phoenix` mode that reexecuted the server upon receival of the SIGHUP signal. This came with a consequential downtime while the server was…
Before, the only reload option that existed was the `server_phoenix` mode that reexecuted the server upon receival of the SIGHUP signal. This came with a consequential downtime while the server was restarting.
We introduce the new flag
--graceful-reload
when starting odoo-bin that allows to reload the server with no downtime. (POSIX + Prefork mode)
When this flag is set and a SIGHUP signal is sent to the main server, it will initiate the shutdown procedure in a separate process that will first wait until the main process has finished restarting and is ready to handle new incoming HTTP requests.
The reexecuted server will reuse the same socket to ensure no connections are dropped and notify its stopping fork with a SIGHUP signal, which will then proceed with the shutdown procedure. It will not be able to reap the children processes, so it will monitor them closely in a slightly different way. The newly restarted server will reap them without consequence.
Note: the gevent longpolling server is not handled gracefully and a very unlikely race condition could put a traceback in the logs should the longpolling server start before it's stopped (address already in use), but it'll retry to start it continuously so it won't cause any issue.
We also add support for systemd's socket activation with the prefork server.Product images sent to UrbanPiper are now converted to a more compatible format, reducing the chance of missing or broken menu images on connected delivery platforms. Tax code formatting for Swiggy and Zomato has also been corrected, helping orders and menu data carry the right tax information.
Original PR description
*: pos_urban_piper_swiggy, pos_urban_piper_zomato In this commit: === - Added _get_jpeg_datas method to convert WebP images to JPEG using QWeb for better compatibility with UrbanPiper. - Updated _get_public_image_url to use the new JPEG conversion logic and improve attachment handling. - Removed convert_to_webp image option from product form view to ensure JPEG usage. - Corrected tax code generation logic for Swiggy and Zomato to avoid incorrect string interpolation.
Resolved issues and error corrections
Withholding calculations now use the correct company or branch records when determining taxable amounts and prior withholdings. This prevents payments or vendor bills made in a branch from being incorrectly affected by the parent company's accounting entries.
Original PR description
When calculating earnings-based withholdings in company-branch setups, the logic incorrectly referenced accounting entries from the mother company if the user belonged to a branch. This led to incorrect accumulation of taxable base amounts and previously withheld amounts, especially when vendor bills or payments were made in a branch. This fix ensures that: - The accumulation logic in `_tax_compute_all_helper` correctly scopes move line searches using the user's company. As a result, withholding retention now behaves correctly in company-branch environments. opw-4581579 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Multi-page PDF quotes using the Bubble or Boxed document layouts now display the totals table correctly on the final page. This prevents totals from being cut off at the bottom of the previous page, improving the readability and professionalism of customer-facing quotes.
Original PR description
## Version: 18.0+ ## Issue: PDF quotes on multiple pages having only the total table on the last page encounter a display issue. The total table is cut and partially displayed at the bottom of the…
## Version:
18.0+
## Issue:
PDF quotes on multiple pages having only the total table on the last page encounter a display issue. The total table is cut and partially displayed at the bottom of the penultimate page.
## Steps to reproduce:
- Install Sales app;
- Navigate to the Settings app:
- Under the `Companies` section, configure the document layout: - Ensure the `Bubble` (or `Boxed`) layout is selected;
- Navigate to the Sales app:
- Create a new quote with 8x `Chair floor protection`;
- Via the `Actions` gear button, print the `PDF Quote`.
## Cause:
Complete code refactoring for documents layouts styles introduced by https://github.com/odoo/odoo/pull/169512 has probably not been tested on that use case.
## Fix:
<img width="1105" alt="Capture d’écran 2025-04-03 à 10 25 58" src="https://github.com/user-attachments/assets/67bce15e-c5e9-40f8-9fbf-7721afc98ae5" />
opw-4624623
opw-4627809
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-prBelgian payroll declarations now support the updated Dimona V2 requirements. This helps companies remain compliant when submitting employee contract information to the Belgian authorities.
Salary attachments, such as garnishments or deductions, are now applied only when the employee's payslip uses the appropriate input-based salary structure. This prevents incorrect payroll calculations in cases where a different salary structure is used, helping ensure employees are paid accurately.
Original PR description
task-4751862
Customer statement PDFs sent for multiple partners now use the correct company information when generated in the background. This prevents wrong addresses, footers, and other company details from appearing on statements in multi-company setups.
Original PR description
### Steps to reproduce: - Accounting > Reporting > Partner Ledger - Select multiple partners - Select "Customer Statements" as report - Click "Send" - Go to the one of the partner in question and open the generated PDF - The address is not the one of the company, the footer doesn't show the right company, etc ### Cause: When sending to multiple partners, the action is dispatched with cron so a new `env` is created. This `env` has all companies active and the first one as main company. So in the end the wrong company is used to generate the report. ### Solution: In the cron when calling `_process_send_and_print` we give `report.with_company(company)` to make sure that the value the report will us are the one from the correct company. Also revert the small [fix](https://github.com/odoo/enterprise/pull/82320/files) that was made before, which is no longer needed. opw-4635283