Daily updates from Odoo
Monday, January 12, 2026
22 changes
8 changes
Enhancements to existing features
This update modifies the chart of accounts for Odoo's Vietnamese localization to align with new accounting regulations (Circular 99/2025). These changes are necessary to ensure compliance with current Vietnamese tax laws, taking effect in January 2026. This update impacts financial reporting for Vietnamese businesses using the Odoo 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 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#243078 Forward-Port-Of: odoo/odoo#238983
This update modifies the chart of accounts for Odoo's Vietnamese localization to align with recent accounting regulations (Circular 99/2025). This change is necessary to ensure compliance with updated Vietnamese accounting standards, effective January 2026. It impacts financial reporting within the Vietnamese Odoo implementation.
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 way Odoo fetches invoices from Nilvera. Previously, only recent documents were retrieved, but now the system supports pagination and resuming interrupted downloads, ensuring all invoices are fetched in the correct order and without duplication. This improves data accuracy and efficiency.
Original PR description
Nilvera returns documents in pages of 30 items and, when no date range is provided, only returns documents created within the last week. As a result, _l10n_tr_nilvera_get_documents only processed the first page of recent documents. This commit introduces a full pagination and incremental-fetching mechanism: - Provide explicit StartDate and EndDate parameters. - Store the last successfully fetched CreatedDate per company in an ir.config_parameter to allow resuming after interruptions. - Fetch pages in ascending CreationDateTime order. This ensures all documents are fetched, in order, without duplication and without reprocessing previously downloaded data. task-5186428 Forward-Port-Of: odoo/odoo#239536
This update enhances the user experience by allowing new lines within tooltip strings displayed in tree views. Previously, tooltips were limited in their formatting, making it difficult to convey complex information. This change ensures clearer and more informative tooltips for users interacting with the Odoo application.
Original PR description
we need to add this: https://github.com/odoo/odoo/pull/239198/changes/b3b2ea48f0e8dc7c709e0e1bc5ad23750dc3cb91 in tree view as well. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update optimizes the calculation of work time in Odoo's payroll system. Previously, the same calculation was performed repeatedly, leading to slower processing times. This change eliminates redundant calculations, resulting in a performance improvement.
Original PR description
Before the work time was calculated inside a for loop of worked_days, because this function can be called and is usually called by all worked_day_line_ids of a payslip, the same calculation is done multiple times.
This update streamlines the process for importing product data across key Odoo modules like Sales, Purchase, and Inventory. The product import template and download button have been updated, ensuring a smoother experience for users updating their product information.
Original PR description
This commit updates the product import template and the button to download it. The change impacts all products 'import data' views such as the ones in Sales, Purchase, Inventory and Accounting. part of task-4874693 task-4925525
This update enhances the ‘Looking for Help’ sidebar by displaying the live chat conversation description alongside the visitor’s name. This allows support agents to quickly understand the context of conversations, leading to faster and more efficient customer support. The change improves agent workflow and customer experience.
Original PR description
*= im_livechat **Purpose of this PR:** Before this PR, the discuss sidebar only showed the visitor’s name, making it difficult to know the context of a conversation without opening it. This PR displays the livechat conversation description in the sidebar so agents can quickly understand the context of a conversation. Before/After: <img width="321" height="120" alt="image" src="https://github.com/user-attachments/assets/b3ce2a84-96cf-49e7-9c31-2c078f3859d5" /> <img width="330" height="125" alt="image" src="https://github.com/user-attachments/assets/d4a9aa0a-d827-4b43-ba72-0fa8e2d45eb4" /> task-5404924
This update enhances the user experience for managing discuss categories within Odoo. The changes include a simplified creation form, a search function for easier category discovery, and updated descriptions for clarity. These improvements streamline communication workflows and improve organization.
Original PR description
1. Improve the creation form of discuss categories. 2. Add channel in search view for discuss categories. 3. Update discuss category settings view and the text description. task-5486664 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
1 change
Enhancements to existing features
This update strengthens Odoo's PDF/A compliance, moving from version 3B to 3A to meet stricter industry standards. The changes address previous validation failures and ensure our documents are compatible with a wider range of PDF/A systems. This improves the reliability of generated documents.
Original PR description
This commit upgrades our PDF/A compliance from 3B to 3A, and fixes a few issues previously undetected due to the different PyPDF libraries we're currently supporting that made the previous PDF fails…
This commit upgrades our PDF/A compliance from 3B to 3A, and fixes a few issues previously undetected due to the different PyPDF libraries we're currently supporting that made the previous PDF fails even the 3B validation. Improvement 1: PDFA validators were previously detecting our file as 3B. Hence we update the metadata content `conformance` to `A`. Issue 2: When using `._pypdf` library, we failed the 6.1.2-2 and 6.8-1 rule even though we have implemented them on the previous version. It seems that this is caused by the `if SUBMOD...` check only ensuring it's not equal to `_pypdf2_2` (which makes it trigger for the new `_pypdf`). Hence, we reclarify the comments and fix the IF check. Issue 3: After implementing issue 2, it seems that a traceback occurs every time we're using `._pypdf` and calling the pdf write method. This is because the added characters on the header can't be decoded with `UTF-8`. Hence we change it to other greater-than-127-bytes characters that can still be decoded with `UTF-8`. (The actual character used here doesn't matter). Improvement 4: To be compliant with the new 3A rules (additional rules not there in 3B when we first implemented them), we add a minimal mark info dictionary and document structure on the PDF catalog object (`_root_object`). task-None Forward-Port-Of: odoo/odoo#242382 Forward-Port-Of: odoo/odoo#234960
10 changes
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 adds tests to ensure users can successfully attach documents from the Documents app directly into Chatter via the Powerbox command. The previous issue prevented the 'Add from Documents' option from appearing, due to an incorrect check for new records. This fix ensures the feature functions correctly and reliably.
Original PR description
Add Tests for the recently added documents feature, where in Chatter, The user can attach a file directly from the Documents app, either using a button or the powerbox cmd. REF: https://github.com/odoo/enterprise/pull/72806
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 enhances the document version management modal by clarifying deletion messages and removing a redundant notification. The changes improve clarity for users when managing different versions of documents, ensuring a smoother and more intuitive experience.
Original PR description
Improve documents version management modal by: - removing an unnecessary message - enhancing the version deletion message to better differentiate between deleting the current or a previous version. Task-5347541
This 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 clarifies the language used in the salary configuration popup and alert messages within the Odoo Enterprise HR module. The change replaces the outdated 'Net Calculation' title with the more accurate 'Salary Calculation' and improves the overall clarity of the configuration messages. This ensures users understand the salary calculation process more effectively.
Original PR description
* = hr_contract_salary_payroll - Change the Popup title from 'Net Calculation' to 'Salary Calculation'. - Change Salary Config alert message for better clarity in. Task - 5438487
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 adds a test flow to verify the correct calculation of overtime pay based on new overtime rulesets. The test involves creating a specific employee and attendance record to ensure the payroll system accurately adds overtime hours and amounts to the payslip. This ensures accurate payroll processing for overtime scenarios.
Original PR description
Added an overtime ruleset flow tour Tour Steps: Freeze time to 1/12/2025: - Go to Payroll app and create a new Work Entry Type "TEST" with 200% rate - Go to Attendances app and create a new Overtime Ruleset with one rule using the "TEST" Work Entry Type - Create a new employee "TEST" with wage $3100 and assign the overtime ruleset - Create a 10-hour attendance for the employee on 1/12/2025. - Go to Payroll app, regenerate work entries for the employee - Create a payslip run for December 2025 Then verify work entries durations and amounts within the payslip, to ensure overtime has been added correctly. Task-5130649
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-54761751 change
Enhancements to existing features
This pull request introduces basic testing for the Odoo runbot. It's a foundational step to ensure the runbot's reliability and stability, which is crucial for automated processes within Odoo. This change primarily focuses on internal testing and doesn't directly impact user-facing features.
Original PR description
using this commit we are just checking the odoo runbot
2 changes
Enhancements to existing features
This update ensures our Brazilian tax calculations comply with the latest regulations. The NCM (National Customs) code list has been revised to include new codes and mark expiring codes with 'DEPRECATED' to avoid future issues. This change supports accurate tax reporting for Brazilian operations.
Original PR description
This **PR** updates the NCM code list as per latest requirement. It appends `DEPRECATED` at the end of expires codes. Also it introduces a few new codes. **task**-5381617
This update adds two new unit of measure (UoM) codes – MIN (Minute) and KWH (Kilowatt hour) – to Odoo, aligning with UNECE Recommendation No. 20 for Peppol. Previously, Odoo relied on a default 'Units' code, leading to issues with UBL/CII electronic invoices. This change ensures broader compatibility and supports localization modules that require these specific UoMs.
Original PR description
**Issue:** 2 UoM that is in the UNECE Recommendation No.20 for Peppol don't exist in Odoo: - MIN: Minute - KWH: Kilowatt hour Even if they are created manually, they are not used in the UBL/CII electronic invoices. Instead, the default code (i.e. "C62" for "Units" is used). Some localization modules create the "Kilowatt hour" UoM as they need it. (l10n_cl and l10n_tr_nilvera) So it's better to have a "generic" one available for every module. opw-5269119 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr