Daily updates from Odoo
Tuesday, July 14, 2026
7 changes · master
Resolved issues and error corrections
Belgian payroll DMFA reports now only include contribution entries that actually appear on the employee's validated payslips for the quarter. This prevents incorrect contribution codes from being reported, improving payroll declaration accuracy and reducing manual correction work.
Original PR description
Steps to reproduce: Setup an employee, then compute and validate 3 months of payslips to close a calendar quarter, then generate the quarterly DMFA report. Got: Contribution entries generated for codes 255, 256, 809, 810, 831, 856, and 859 even though these lines are not on the employee's payslips. Expected: Only real contributions from the quarter's payslips. Task 6352241
This fix prevents Obox camera checks from breaking when the IoT module is installed. It also avoids showing an IoT action when no IoT device is configured, reducing confusion for users during quality checks.
Original PR description
Steps to reproduce: - Install `obox_quality_control` but do not install `iot`. - Configure a quality check to take a picture with an Obox camera. - Validate a receipt an confirm the camera works as expected. - Now install the `iot` module, and try to take a picture again. Expected behaviour: The camera still works as expected. Actual behaviour: There is a 'Camera not found' error. This issue is caused by both the Obox and IoT quality modules adding an `identifier` field to the quality control wizard. The fix is simply to use a different name for the Obox field. In addition, we now hide the IoT button in the wizard if the IoT device is not set. task-6329066
Belgian payroll now uses the official daily Partena amount for private car reimbursements in CP 200 and CP 302 instead of estimating it from a monthly train subscription. This helps produce more accurate payslips for affected employees while preserving the previous calculation for other sectors or older periods.
Original PR description
Previously, the private car reimbursement for CP 200 and CP 302 was calculated by dividing a monthly train subscription price into a daily rate. This commit changes the logic to take the exact daily amount from Partena instead of converting a monthly price, while keeping the old train method for other sectors or past dates. Task-6357956
Belgian payroll structural deductions now use the correct contribution rate based on whether the person is classified as a worker or employee. This prevents deductions from being calculated with a zero rate when the default lookup does not find the right payroll contribution type.
Original PR description
For structural deduction computation, getting onns rates via `_get_onss_rates()` sometimes default to zero if no rate was found using the default contribution type. Now passing the appropriate contribution type depending on the version status (worker/employee). Task: 6313510
POS users can now access the Kitchen Display directly from the main dashboard without encountering an access error. This removes an unnecessary blocker and makes the dashboard entry point consistent with access from within the POS app.
Original PR description
**Description of the issue/feature this PR addresses:** When a POS user attempts to open the Kitchen Display app from the main dashboard, they are blocked by an Access Error, despite being able to…
**Description of the issue/feature this PR addresses:**
When a POS user attempts to open the Kitchen Display app from the main dashboard, they are blocked by an Access Error, despite being able to access the interface from within the POS app's sub-menu.
This occurs because the dashboard menu triggers a server action (`action_pos_preparation_display_kitchen_display`) to route the user. When a server action has no explicitly defined `group_ids`, Odoo's `_can_execute_action_on_records` method falls back to requiring `write` access on the underlying model (`pos.prep.display`) to execute the code. Since standard POS users do not have 'write' access to this model, the execution engine blocks the routing attempt.
This commit resolves the issue by explicitly appending the POS User group to the server action's `group_ids`.
opw-6305014
**Steps to reproduce:**
- As Mitchell Admin:
- Settings > Users & Companies > Users > Marc Demo > Access Rights > Sales > set POS to User
- As Marc Demo:
- Attempt to access Kitchen Display app > observe Access Error
- POS > Orders > Preparation Display > observe no error
**Current behavior before PR:**
- POS Users receive an Access Error when attempting to access the Kitchen Display app from the main dashboard
**Desired behavior after PR is merged:**
- No Access Error when POS Users access the Kitchen Display app
Forward-Port-Of: odoo/enterprise#122531
Forward-Port-Of: odoo/enterprise#121419Mexican payroll documents now correctly show holiday bonuses and their related tax in payslips and CFDI XML files. This prevents mismatches between payroll calculations and reported totals, improving accuracy for employees and compliance reporting.
Original PR description
Currently, the holiday bonus exemption is calculated correctly internally, but it is not displayed on the payslip PDF or the CFDI (XML) file because it lacks dedicated concepts. This causes amount…
Currently, the holiday bonus exemption is calculated correctly internally, but it is not displayed on the payslip PDF or the CFDI (XML) file because it lacks dedicated concepts. This causes amount discrepancies between the calculation and the totals reported. Error: For an employee with a 50,000 MXN monthly salary (pays 9,107.82 MXN ISR and 1,462.78 MXN IMSS). On their first anniversary, they receive a 5,000 MXN holiday bonus and pay 762.13 MXN ISR for it. The PDF and XML files show a perception total of 50,000 MXN and a deduction total of 10,570.60 MXN, completely ignoring the holiday bonus and its specific tax. In the PDF, the calculation is correct: 50,000.00 + 5,000.00 - 10,570.60 - 762.13 = 43,667.27 MXN. However, the XML net total reports: 50,000.00 - 10,570.60 = 39,429.40 MXN (ignoring the bonus amounts). Solution: Add a new salary rule and perception concept to properly separate and display the taxable and exempted amounts on the PDF and the CFDI. Add a new deduction concept to report the holiday bonus ISR. This ensures complete synchronization across the payslip, PDF, and XML. target: master task-6255412
The Analytic Items grid now keeps the same sectioned layout when users apply grouping options. This makes the view more predictable and easier to read, avoiding a confusing switch between flat and hierarchical rows.
Original PR description
Prior to this commit, the Analytic Items grid view exhibited inconsistent layout behavior. Applying a single custom group-by resulted in flat rows, while applying two or more group-bys (or using the default XML) triggered a sectioned hierarchy. This commit ensures a consistent UX by intercepting the grid metadata in `AnalyticLineGridModel.loadData`. If no section field is defined by the base model, the first grouping is now forcefully promoted to `sectionField`. Task-6321646