Daily updates from Odoo
Thursday, May 21, 2026
8 changes · master
Resolved issues and error corrections
This update fixes an issue where project update descriptions incorrectly showed inflated budget totals after budget revisions. The fix ensures that only the active, confirmed budget revision is used, providing accurate budget information for project updates. This improves the reliability of project cost tracking.
Original PR description
**Problem:** When a project analytic budget is revised, the project update description shows an inflated total budget — the sum of both the original and the revised amounts — instead of reflecting…
**Problem:** When a project analytic budget is revised, the project update description shows an inflated total budget — the sum of both the original and the revised amounts — instead of reflecting only the active (confirmed) revision. **Steps to reproduce:** 1. Create a project with an analytic account 2. Create an analytic budget of $10,000 and confirm it 3. Create a revision of that budget for $15,000 and confirm it 4. Create a new project update 5. The update shows "$25,000" as the total budget instead of "$15,000" **Current behavior:** The project update displays the sum of all budget revisions ($25,000), regardless of their state. **Expected behavior:** Only the active confirmed budget ($15,000) should be used. **Cause of the issue:** `_compute_budget` queries all `budget.line` records matching the project's analytic account without filtering by the parent `budget.analytic` state. When a budget is revised, the original transitions to state `revised` while the new one becomes `confirmed`. Because `_compute_budget` has no state filter, it sums both, producing an inflated `total_budget_amount`. This field is then used in the project update template to compute the displayed budget total and percentage. By contrast, `_get_budget_items` — used for the detail rows — already applies `state in ['confirmed', 'done']`, so the two methods were inconsistent. **Fix:** Applying the same state filter to `_compute_budget` as already present in `_get_budget_items` ensures both methods draw from the same set of active budgets, keeping the project update totals consistent with the budget detail rows. opw-6128855 Forward-Port-Of: odoo/enterprise#117490 Forward-Port-Of: odoo/enterprise#115285
This update fixes an issue where the Point of Sale (PoS) displayed incorrect order totals due to delays in price calculations. By manually triggering the price calculation process during order validation, the system now accurately displays the total amount on the feedback screen. This ensures accurate pricing and a better user experience for PoS transactions.
Original PR description
We now call manually `setOrderPrices` on order validation to ensure `amount_total` is set on the order before displaying the feedback screen which depends on it. The issue is that requests to the FdM delay the call to this method, making the PoS display `0` as the amount is `undefined` in the meantime. We also ensure the PoS doesn't finalize the validation if an error occurs. see odoo/odoo#244298 Forward-Port-Of: odoo/enterprise#117767 Forward-Port-Of: odoo/enterprise#104468
This update ensures consistent and accurate MPF contribution eligibility for employees in Hong Kong. The changes align the age criteria for mandatory contributions and reporting, resolving a previous inconsistency that impacted contribution calculations and reporting accuracy for employees under 18. This improves payroll compliance and reporting.
Original PR description
### Before: - Mandatory MPF rules only checked the upper age bound (< 65 from period start). - Employees under 18 could still be considered eligible for EEMC/ERMC contributions. - eMPF reporting had a separate 16-year age check. - Employees younger than 16 were excluded from the eMPF report, even when they had voluntary contributions. ### After: - Mandatory MPF rules now apply a full age gate (18 to under 65) across the payslip period. - EEMC and ERMC use the same eligibility condition for consistent contribution behavior. - The eMPF reporting age check is now aligned to 18. - Employees under 18 remain excluded from eMPF reporting unless they have actual MPF contributions. - Under-18 employees with voluntary contributions are now included in the eMPF report, matching the existing over-65 voluntary contribution behavior. --- Task-6141664 Forward-Port-Of: odoo/enterprise#117205
This update fixes an issue where salary adjustments weren't being properly calculated after a pay run was temporarily set to 'draft' and then rerun. The fix automatically recomputes input lines and now displays a warning message on the payslip to indicate a salary attachment has been created, ensuring accurate payroll calculations.
Original PR description
**Steps to Reproduce**: 1. Run the pay run for a specific month 2. Validate the payslip 3. Create a salary adjustment starting within this month. 4. Set the pay run to draft 5. Rerun the pay run for this month The salary adjustment is not computed. **Fix**: Recompute input lines when payrun is set to draft. Show Warning message on payslip that salary attachment is created. **task**-6148499
This update resolves an issue where selecting multiple resources in the Planning app's resource field would cause an error. The fix ensures that the system correctly handles multiple resource selections, improving usability and preventing data entry problems. This change allows users to efficiently manage resources within the Planning module.
Original PR description
Currently, selecting multiple resources in planning causes an error. ### **Steps to reproduce:** 1) Install Planning with demo data 2) Go to the Planning app and click on `New` 3) In the Resource field, open the dropdown, click Search More, select multiple records, then click Select ### **Error:** ``` TypeError: ResourceResource.get_materials_assigned_to_human_resources() takes 1 positional argument but 18 were given ``` ### **Root Cause:** At [1], a single argument is passed to `get_materials_assigned_to_human_resources`, but the field allows selecting multiple records, which leads to the error. [1]: https://github.com/odoo/enterprise/blob/8a843b69a59bc915fb6163aab03b144c2c93ac6b/planning/static/src/views/fields/many2many_avatar_resource/many2many_avatar_resource_field.js#L46C16-L50 ### **Fix:** Handle multiple records when calling `get_materials_assigned_to_human_resources`. **opw-6192072** Forward-Port-Of: odoo/enterprise#116580
This update resolves an issue where order synchronization with Lazada was failing due to incorrect package data. The fix ensures that the system skips package synchronization when package information is missing, preventing errors and allowing orders to be processed smoothly. This improves the reliability of Lazada order imports.
Original PR description
orders can omit package data in the API payload if the package id doesn't match. When a picking still had a package_extern_id, filtering order_items by that id produced an empty list, and max() on the resulting timestamps raised ValueError and blocked order sync. Return early when no matching package lines exist so sync can continue. taskId - 6195507 Forward-Port-Of: odoo/enterprise#117194
This update corrects a problem where the ABA file generated for payroll payments was blank. The fix ensures the payslip batch is assigned before payment validation, guaranteeing the ABA file contains the correct payment information. This resolves a previous issue and improves the reliability of payroll reporting.
Original PR description
Payslip batch needs to be assgned before the payment batch is validated, otherwise the ABA file will be blank. This commit ensures that flow and the test ensure both aba flows generate the same file content. task-6123029 Forward-Port-Of: odoo/enterprise#117674 Forward-Port-Of: odoo/enterprise#114970
This update fixes an issue where Fedex delivery labels were missing a crucial 'REF' field, which is required by the shipping carrier. The fix ensures that all necessary information is included on the label, preventing potential delivery delays or errors. This improves the accuracy and reliability of our shipping process.
Original PR description
Issue ----- `REF` field of Fedex labels is missing. Steps to reproduce ----- - Setup Fedex - Create a product (set weight) - Create a delivery for the product - Set carrier as Fedex - Validate…
Issue
-----
`REF` field of Fedex labels is missing.
Steps to reproduce
-----
- Setup Fedex
- Create a product (set weight)
- Create a delivery for the product
- Set carrier as Fedex
- Validate delivery
- Opend the label
> REF field is empty
Cause
-----
When filling the `CustomerReferences`, we only specify the SO
https://github.com/odoo/enterprise/blob/aae680f5b86fa87193ba6616e8431eed985b2ee7/delivery_fedex_rest/models/fedex_request.py#L309-L313
The `REF` field is populated using `CUSTOMER_REFERENCE` references, which is not present in this case.
Excerpt of the API DOC
-----
```
"CustomerReference": {
"type": "object",
"properties": {
"customerReferenceType": {
"type": "string",
"description": [...],
"example": "DEPARTMENT_NUMBER",
"enum": [
"CUSTOMER_REFERENCE",
"DEPARTMENT_NUMBER",
"INVOICE_NUMBER",
"P_O_NUMBER",
"INTRACOUNTRY_REGULATORY_REFERENCE",
"RMA_ASSOCIATION"
]
},
"value": {
"type": "string",
"description": [...],
"example": "3686"
}
}
},
```
[...] replaces long description strings, refer to API for full documentation.
Result after fix
-----
<img width="477" height="738" alt="image" src="https://github.com/user-attachments/assets/0d3a0786-5b7d-41cc-8548-2dc7b0f379ab" />
-----
Ticket:
opw-6101620
Forward-Port-Of: odoo/enterprise#116870