Daily updates from Odoo
Monday, January 12, 2026
12 changes · master
New functionality added to Odoo
This update introduces a new Employer Category model within the Odoo Enterprise payroll system. This allows for more granular control over payroll calculations based on the specific type of employer, improving accuracy and compliance with Belgian tax regulations. The changes support better reporting and configuration related to employee compensation.
This update streamlines HSBC payment reporting by introducing a common module for generating reports. It replaces outdated wizard processes with a standardized approach, improving efficiency and consistency in payment report generation for HSBCnet transactions. This change ensures accurate and reliable reporting for HSBC payments.
Original PR description
task-5044716
Enhancements to existing features
This update modifies the Vietnamese chart of accounts to align with recent accounting regulations (Circular 99/2025). This change is necessary to ensure compliance with updated Vietnamese accounting standards, taking effect in January 2026. It impacts financial reporting for Vietnamese businesses using the Odoo Enterprise system.
Original PR description
Update the COA for the vietnamese localization, which is based on the circular 200/2014 by the new one based on the circular 99/2025. This new COA applies starting in Jan. 2026 task-5357470 Forward-Port-Of: odoo/enterprise#103823 Forward-Port-Of: odoo/enterprise#102843
This update enhances the skills evolution report by comparing each employee's last appraisal for every year, providing a more complete historical view. If a specific year lacks an appraisal, the report now defaults to the previous year's data, ensuring a more robust and accurate report. This change improves reporting accuracy and provides more comprehensive insights into employee skill development.
Original PR description
Repurposed the report, to compare the last appraisal per year for each employee, instead of only the last two appraisals. In case some year does not have an appraisal, fallback to the previous appraisal. Task-5106696
This update enhances the user experience for payrun management by organizing payslips and displaying total monetary amounts. It also introduces a system for flagging potential issues during payrun creation, providing clearer warnings and errors that escalate as needed.
Original PR description
### [IMP] hr_payroll: Payrun UX improvement - Order payslips by state then by employee name. - Show total amounts of monetary columns in the payslip list. ### [IMP] \*hr_payroll\*: unify payslip…
### [IMP] hr_payroll: Payrun UX improvement
- Order payslips by state then by employee name.
- Show total amounts of monetary columns in the payslip list.
### [IMP] \*hr_payroll\*: unify payslip issue computation using issue definitions
- Replace `_get_errors_by_slip` and `_get_warnings_by_slip` methods with a unified `_get_issue_definitions()`.
- Each issue is now defined as a generator function (`generate_issues`) that receives a payslip and an optional context, returning either a single issue or a list of issues.
- `context` (optional): Precomputed context data needed for evaluating the issue, e.g., related payslips for negative net reporting.
- `is_error` (optional callable): A function that receives the slip and context and returns True if the issue should be treated as an error (`danger`), False otherwise. This enables to show the issue as a warning or an error conditionally.
- Each issue dictionary can include the following keys:
- `message` (str): The descriptive message to display for the issue. (required)
- `action_text` (str, optional): Label for a link/action related to the issue.
- `action` (dict or recordset, optional): Target action to open or navigate to the related record(s).
Issues show starting from Payrun creation:
Errors by default show up as warnings from the start till a specific stage or a condition is met, they turn into blocking errors.
Task-5156866This update streamlines the calculation of SA salary allowances by introducing a dedicated category. Previously, allowances were summed individually, which was inefficient. This change ensures accurate and optimized allowance totals for Saudi Arabian employees.
Original PR description
purpose: optimizing and cleaning the way to get allowances in SA salary rules to get the total allowance instead of calling all allowances and taking their sum each time they are needed. current behavior: - add a salary rule category for SA allowances - replaced the occurrences where the all allowances are used with the category for SA allowances task-id: 5170229
This update allows procurement specialists to order replenishment stock from any partner, not just vendors listed in the pricelist. Previously, users had to manually add partners or create purchase orders. This change streamlines the replenishment process and offers greater purchasing flexibility.
Original PR description
Description of the issue/feature this PR addresses: When using the replenish wizard, and the route is buy, as a procurement specialist, I can only use vendors in the product pricelist. However, as a…
Description of the issue/feature this PR addresses: When using the replenish wizard, and the route is buy, as a procurement specialist, I can only use vendors in the product pricelist. However, as a procurement specialist, I should be able to order a replenishment from any partner (and if the PO is confirmed this partner will be added to vendor list automatically) . Current behavior before PR: To replenish a product from a partner that is not in vendor pricelist from the replenish wizard, currently I must either add him to the pricelist or make a purchase order. Desired behavior after PR is merged: 1 Allow replenishement from any partner in the replenishement wizard, by changing the supplier search box from vendor list only to vendor first, in blue, and then all partners in normal display. 2 Allow to create and edit partner from the supplier search box (no-quick create) 3 Make sure that the logic of selecting the right vendor pricelist based on quantity logic is unaltered. Community PR: https://github.com/odoo/odoo/pull/213488 task: [4314668](https://www.odoo.com/odoo/project/966/tasks/4314668) I confirm I have signed the CLA and read the PR guidelines at [www.odoo.com/submit-pr](http://www.odoo.com/submit-pr)
This update addresses persistent warning displays on pay runs, reducing user confusion and preventing 'warning fatigue'. It also restricts access to validate pay runs containing errors to authorized Officers and Managers, strengthening compliance and security.
Original PR description
Purpose ======= Users reported "infinite warnings" on Pay Runs: warnings persist visually even after a manager explicitly validates the run, leading to "warning fatigue" where users stop checking…
Purpose
=======
Users reported "infinite warnings" on Pay Runs: warnings persist visually even after a manager explicitly validates the run, leading to "warning fatigue" where users stop checking them entirely. Additionally, Payroll Assistants currently have the ability to validate Pay Runs containing errors or warnings, which poses a compliance risk. Validation of risky runs should be restricted to Officers and Managers.
Specification
=============
1. **Visuals (Status Bubble):** When a Pay Run reaches a final state ('Done', 'Paid', 'Cancelled'), the status bubble should no longer display "Warning" or "Error" colors/labels. It should revert to the standard "Done" or "Paid" state (green/purple) to indicate the process is complete.
2. **Access Control:** Restrict the `action_validate` method on `hr.payslip.run`. Users with only the "Payroll Assistant" role (who do not have the "Officer" group) must be prevented from validating runs that contain warnings or errors. Officers and Managers retain the ability to override these warnings.
Changes
=======
* **JS (`StatusBubble`):** Modified `get selection()` to ignore warning/error counters if the state is in `['02_close', '03_paid', '04_cancel']`.
* **XML (`StatusBubble` template):** Updated conditional classes (`bg-warning`, `bg-danger`, `fa-exclamation`) to suppress warning styles when in final states.
* **Python (`hr.payslip.run`):** Overridden `action_validate` to raise a `UserError` if the current user lacks the `hr_payroll.group_hr_payroll_officer` group AND the run contains warnings or errors.
task-5476175Resolved issues and error corrections
This update prevents users from deleting visitors who are currently Checked-In or Checked-Out, safeguarding visitor tracking data and ensuring accurate records. The system now displays a 'Set as Planned' button for these visitor states and provides a clear error message if deletion is attempted. This improves data integrity and operational efficiency.
Original PR description
Purpose: - The purpose of this change is to prevent accidental deletion of visitors who are currently Checked-In or Checked-Out, ensuring data integrity and proper tracking of visitor activity. This PR includes: - Prevented deletion of visitors unless they are in Planned or Cancelled state. - Added a clear error message when deleting Checked-In or Checked-Out visitors. - Displayed the 'Set as Planned' button for Checked-In, Checked-Out, and Cancelled states. - Added test cases for visitor deletion restrictions. task-5380323
This update resolves a technical error that was preventing users from correctly accessing and editing sign templates linked to certain templates. The fix corrects record rules within the sign.item.role module, ensuring proper access rights are enforced. This improves the usability and reliability of the sign template functionality.
Original PR description
Fix record rules on sign.item.role that prevented users from reading and creating item roles linked to accessible templates, causing access errors when opening or editing sign templates. task-5428886
This update corrects a problem with importing WinBooks tax data. Previously, the import process incorrectly included tax tags with signs, leading to inaccurate tax reporting. This change removes the sign from tax tags during import, ensuring correct tax calculations and reporting.
Original PR description
Import a WinBooks file on a fresh database (a sample can be found in the test files of test_winbooks_import). In the imported taxes, we can see that the tax_tags contain signs. However, since https://github.com/odoo/odoo/pull/225252 , tax tags should no longer store a sign. This causes issues with imported entries in the tax reports: they are not included. This commit adapts the import for WinBooks tax_tags to remove their sign before importing them. opw-5345933 Forward-Port-Of: odoo/enterprise#103691 Forward-Port-Of: odoo/enterprise#101459
This update adjusts how taxes are processed on sales orders and invoices, specifically aligning with fiscal position requirements. Previously, taxes not directly linked to the fiscal position were retained; now, they are automatically removed. This change ensures accurate reporting and compliance with tax regulations, primarily impacting financial reporting modules.
Original PR description
In linked community commit, if a tax is set on a sale order or invoice, and the tax is not an original or replacement tax on the fiscal position of the SO or invoice, the tax is removed. Therefor : - Addapt nl xaf & gt test cases to reflect FP behavior change. Tests had a case where : > a tax_a with fiscal_pos_a, > a tax_b with fiscal_pos_b replace tax_a, > an invoice with fiscal_pos_a with a line with taxes tax_a & tax_b. Before both taxes were kept, now tax_b is removed. As we see no reason to support the previous behavior, the expected result of the test is changed. - Update cls.tax_sale_b fp in TestGtFlow to prevent removal of tax_sale_b Task: 5017278