Monday, March 23, 2026
10 changes · saas-18.4
Resolved issues and error corrections
Spreadsheet map charts now show more complete geographic data, including Russia on the Asia map and a new Oceania map. This improves reporting accuracy for users who visualize business data by region.
Original PR description
- Fix Asia map (russia was missing) - Added Oceania map Task-5224009 Description of the issue/feature this PR addresses: Current behavior before PR: Desired behavior after PR is merged: --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#248847
Payslips now use the employee’s first real contract date within the company, even when there are gaps between employments. This prevents payroll records from incorrectly treating separate employment periods as continuous.
Original PR description
…te in payslips - refactored `_get_first_version_date()` by splitting it into two functions: `_get_first_version()` which now returns the actual version record and a new `_get_first_version_date()`. - updated the logic to ignore versions with no contracts when detecting gaps; previously, these versions filled the timeline because their start and end dates were stretched to bridge the gap between real contracts, making non-continuous employments appear continuous. Task: 5368029
When a sales order triggers a purchase for a make-to-order product, its analytic cost allocation is now kept on the resulting purchase order line. This helps businesses maintain accurate cost tracking and reporting across sales, inventory, and purchasing workflows.
Original PR description
Steps to reproduce: - Enable analytic distribution in Accounting settings - Create a storable product "P1": - Routes: MTO + Buy - Vendor: add any supplier - Create a Sale Order: - Add 1 unit of P1 -…
Steps to reproduce: - Enable analytic distribution in Accounting settings - Create a storable product "P1": - Routes: MTO + Buy - Vendor: add any supplier - Create a Sale Order: - Add 1 unit of P1 - Set any analytic distribution - Confirm the Sale Order Result: A Purchase Order is created, but the analytic distribution is not propagated to the purchase order line. Problem: When the Sale Order is confirmed, `_action_launch_stock_rule()` is triggered. It creates and confirms the corresponding stock move with values from the sale order line. Since the product uses the MTO route, the procurement rule is executed. The rule prepares procurement values from the stock move, but the analytic distribution is not included in these values: https://github.com/odoo/odoo/blob/18.0/addons/stock/models/stock_move.py#L1539 Later, `_run_buy` is triggered. It uses the procurement values coming from the stock move to find an existing purchase order line candidate or to create a new one. Because the analytic distribution is missing from the values, the created (or matched) purchase order line does not contain the analytic distribution: https://github.com/odoo/odoo/blob/621a93b7b723999d943f1c4da78547763498c008/addons/purchase_stock/models/stock_rule.py#L113 Solution: Propagate the analytic distribution from the sale order line through the stock move so it can be included in the procurement values and correctly applied to the purchase order line. opw-5936971 Forward-Port-Of: odoo/odoo#254741 Forward-Port-Of: odoo/odoo#252292
Saudi electronic invoices now include cash rounding adjustments when calculating the amount due. This prevents ZATCA validation warnings and helps businesses submit compliant invoices when cash rounding is used.
Original PR description
Currently the generated ZATCA XML is not accounting for invoice cash rounding, leading to an invoice validation issue due to a mismatch in the calculation of PayableAmount. Steps to reproduce: - Have a SA Company setup - Create a [cash rounding] with strategy 'Add invoice line' and rounding 1.00 (UP) - Create an invoice for 99.55 + 15% Tax - Set Cash Rounding Method to [cash rounding] - Confirm and send xml for validation Issue: Validation will issue the following warning `[202] BR-CO-16 : Amount due for payment (BT-115) = Invoice total amount with VAT (BT-112) -Pre-Paid amount (BT-113) + Rounding amount (BT-114).` Analysis: The ZATCA implementation was calculating the payable amount strictly as (TaxInclusiveAmount - PrepaidAmount). This change ensures the rounding amount is fetched and added to the total payable calculation opw-5939550 Forward-Port-Of: odoo/odoo#254450 Forward-Port-Of: odoo/odoo#253555
Fixes an issue where time off accrual processing could use an unreliable stored value instead of the current calculated leave amount. This helps ensure employee leave balances are calculated correctly and avoids possible processing problems during accrual updates.
Original PR description
## Issue Oblivion regarding community-239836 The field `leaves_taken` (which shouldn't be accessed from the `_process_accrual_plans` method because it is inconsistent/can lead to infinite loop, see the related PR explanation) is used instead of the variable `leaves_taken`. robodoo up to saas-18.4 included Forward-Port-Of: odoo/odoo#253076
This update corrects a bug where payslip dates were incorrectly using the employee's start date instead of their first contract date within the company. The system now uses the employee's initial contract date, ensuring accurate payroll reporting and compliance. This change was implemented as a fix to improve data consistency.
Original PR description
…irst contract date in payslips - `first_contract_in_company` is now a computed field instead of being manually populated in the departure notice wizard. - `first_contract_in_company` is now used for the first contract date in payslip reports instead of using the current version's start date. - in departure notice wizard fixed how `first_contract` is calculated by using the refactored `_get_first_version()` function. - removed manual update of `first_contract_in_company` in the departure wizard as it is now handled by the compute. Task: 5368029
This update automatically calculates and transmits the required perception commission for Swiss employees' payrolls. This ensures accurate tax reporting to the Swiss tax authorities, addressing a previous reporting issue. The change improves compliance and reduces the risk of errors related to commission calculations.
Original PR description
Forward-Port-Of: odoo/enterprise#111143
This update fixes an issue where the SDWorx payroll report didn't account for public holidays. The change ensures that employee attendance is accurately calculated, reflecting actual working days as defined by public holidays. This improves the reliability of payroll reporting.
Original PR description
### Steps to reproduce: - Setup a public holiday in a month January for example - Add a leave for an employee for the whole Month of January - Export the SDworx report - Notice for the day of the public holiday, it is shown as a normal attendance ### Cause: When checking leaves for the SDWorx report we only check hr.leave we don't check resource.calendar.leaves ### Fix: We take resource.calendar.leaves now into account to make sure we add public holidays to the report when exporting it opw-5500070 Forward-Port-Of: odoo/enterprise#106065
This update fixes an issue where repositioning a signature within the PDF viewer caused inconsistent resizing behavior due to multiple event listeners. The change ensures only one resize listener is attached, resulting in a more reliable and predictable resizing experience for users. This improves the overall usability of the signature feature.
Original PR description
Previously, repositioning a sign item inside the PDF iframe would attach multiple resize event listeners. This led to inconsistent and unintuitive resizing behavior. This commit ensures that only a single resize listener is registered per item, avoiding duplicated handlers and restoring stable interaction. task-6048759 Forward-Port-Of: odoo/enterprise#111520 Forward-Port-Of: odoo/enterprise#111146
This update fixes an issue where multi-select rectangles on scaled PDF signature pages were inaccurately drawn, leading to incorrect selections. Additionally, the fix addresses a potential error when dropping elements and ensures helper lines align properly during dragging. This enhances the reliability and usability of the signature process.
Original PR description
When drawing the multi-select rectangle on scaled PDF pages, the rectangle corner was not properly synchronized with the mouse pointer, leading to inaccurate selection. Additional fixes: - An uncaught error could be triggered when dropping elements on the page. - Helper lines during dragging were not accurately aligned around sign items. task-6049004 Forward-Port-Of: odoo/enterprise#111156