Daily updates from Odoo
Tuesday, June 23, 2026
17 changes · master
Enhancements to existing features
This update simplifies the process of creating company cars within the Odoo Enterprise system. It now automatically transfers information from the employee's existing car details to the company car creation form, eliminating a manual step. Furthermore, the quick create option has been removed, ensuring only authorized users can create and edit company car records.
Original PR description
This PR expected to pass input value from inventory car field in Employee Form to license plate field in create company car form and also remove quick create, only allowed create & edit task:6307500
This update implements the required NSSO reduction for elderly employees in Belgium (Brussels and Wallonia), aligning with recent regulations and ONSS guidelines. The changes improve the accuracy of these deductions, particularly regarding part-time worker calculations and wage caps. The update also addresses a critical issue with the µ calculation, ensuring it aligns with ONSS instructions for structural and target-group reductions.
Original PR description
Implements the NSSO elderly-worker reduction for Brussels (codes 7320) and Wallonia (8320/8321/8322), including the Wallonia 2023 reform and the 2026-04-01 hire-date sub-rule. Adds: * A monthly…
Implements the NSSO elderly-worker reduction for Brussels (codes
7320) and Wallonia (8320/8321/8322), including the Wallonia
2023 reform and the 2026-04-01 hire-date sub-rule.
Adds:
* A monthly salary rule producing an estimation of the quarterly G1
reduction prorated on the current slip, for payslip visibility.
* Dated hr.rule.parameter records holding the per-region bracket tables
(age_min, age_max, dmfa_code, G), the quarterly wage caps, and the
βg breakpoints.
* DMFAOccupationDeductionElderly in hr_dmfa.py: P = G × µ × βg per
matching bracket per occupation, with µ from declared service hours
and βg from the worker-level µ_global.
* Tests covering region/age/hire-date branching, the wage cap, part-time
µ rounding, and payslip-vs-DMFA parity.
Payslip estimation takes shortcuts that make it informational only: it
sums all worked-days hours instead of filtering DMFA service codes,
extrapolates one month × 3 instead of aggregating the real quarter,
uses the slip's own µ as µ_global, ignores multi-occupation aggregation,
checks the wage cap on ONSS_BASE × 3 instead of the proper ss_quarter,
and prorates the quarterly result flatly across months.
Shared bracket / βg / age helpers live on hr.payslip rather than in
hr_dmfa.py because the salary rule needs them at slip computation time
(before any DMFA export exists)
task - 6131498This update introduces a new NISS (National Identification Number) field to the Belgium salary configurator, aligning with local regulations. Previously, the identification_id field was removed, and now the system accepts an empty NISS value during validation. This ensures accurate employee data matching within the Odoo system for Belgian payroll.
Original PR description
[IMP] l10n_be_hr_contract_salary: NISS in salary configurator
1 - For Belgium salary configurator, identification_id field is deleted and NISS field is added
1.1 - NISS field is added to the version of l10n_be_hr_payroll as a related field (from employee), salary configurator applies on version and makes the matching
2 - Empty NISS in validation is accepted as well now (in the UI of salary configurator)
task - 6147359This update enhances the Odoo Enterprise mail system by incorporating new syntax for OWL 3 (part 3) properties. This improves the system's ability to handle complex data and relationships within Odoo's various modules, particularly those related to documents, accounting, and HR. It’s an important update to ensure continued compatibility and functionality.
Original PR description
Enterprise counter-part. task-6255532 https://github.com/odoo/odoo/pull/270123
This update improves the user experience by automatically notifying users via email and Odoo notifications when a document request is fulfilled. This ensures users are promptly informed about the status of their document requests, streamlining workflows and improving transparency.
Original PR description
When a document is requested from any user/partner, it is helpful to be notified when the document is uploaded. This commit does the same. The requester is notified with email/push notification when the document request is fulfilled. Some tests are also modified to verify the behaviour. Task-5446939
This update allows users to group and filter POS orders based on their DIAN transmission status, which was previously unavailable. Previously, it was difficult to identify rejected or failed orders, hindering visibility into the daily synchronization process. This change enhances reporting and provides better insights into POS order health.
Original PR description
The DIAN transmission status (l10n_co_edi_pos_dian_state) is a non-stored computed field, so it could not be used to group, filter or sort the POS Orders list: users had no way to isolate rejected or failed orders, nor to get an overview of daily sync health. Provide a compute_sql for the field so the ORM can express it in SQL, making it groupable/searchable/sortable without storing it. This avoids a schema change while keeping the value derived from the most recent DIAN document. task-6273842 Forward-Port-Of: odoo/enterprise#120929
This update removes the outdated 'reception report' feature and integrates changes from the community to improve barcode scanning and product allocation tracking. Specifically, it highlights unusual product locations and adds a button to print operation reports for allocated items, ensuring accurate inventory management.
Original PR description
*: industry_fsm_stock, stock_barcode, stock_barcode_picking_batch This commit adapts code to changes made in community: - Remove `stock.group_reception_report`; - Set `auto_show_reception_report` in picking type if needed. task-4894566 **Community PR:** odoo/odoo#264299 **Upgrade PR:** odoo/upgrade#10320
This update streamlines the loading process for Odoo's registry, resulting in a 7% performance improvement. The change removes an unnecessary check that slowed down loading times, particularly for the planning module. This translates to a quicker startup experience for the system.
Original PR description
has_group for superuser during module loading is slow and unnecessary (``@api.depends(lambda self: self._display_name_fields())``) This commit bypasses the check and improves the loading time by 7% for the registry (assume all modules are loaded in other registries) <img width="1504" height="382" alt="image" src="https://github.com/user-attachments/assets/94da0b4a-f728-4783-8883-5d7925dcb34b" />
This update streamlines the process for filing the 273S report, aligning with government regulations. It introduces a clear lifecycle for reports and proactive warnings to ensure accurate data submission, reducing potential errors and improving compliance.
Original PR description
This commit introduces a comprehensive management system for the 273S report, enhancing its lifecycle, data integrity, and user experience. It's important to note that filing a 237S report can…
This commit introduces a comprehensive management system for the 273S report, enhancing its lifecycle, data integrity, and user experience. It's important to note that filing a 237S report can involve one of the following declarations: 1. Initial declaration 2. Modification declaration 3. Cancellation declaration **After contacting the Service Public Federal (SPF) Finances, we have clarified that only Initial declarations are used in practice, and that modification and cancellation declarations are not used.** **Initial Declarations are used to modify reports that have already been declared** Ideally, a maximum of 12 Initial declarations should be used, but since modifications can also happen, a system is implemented to report the payslips of the year using the minimal amount of declared and corrected reports possible throughout the year by reporting each payslip that's not included in any ready/done report that exists in the period starting from the beginning of the year until the end of the month of the report. **Lifecycle & Structure** * 273S reports are now persistent documents with a clear lifecycle (Draft, Ready, Done, Cancelled) rather than transient pop-ups. * In the draft state, all fields are editable except Year and Month in the type `correction` since they are inherited from the original report. The original report is a required field for the correction type. Payslips are auto-populated if any of the fields (Year, Month, Original, Type) are updated. Populating a report differs based on its type; if it's an original declaration, then the report is populated by all payslips that are in a ready/done state that were issued starting from the current year and until the end of the declared month; if it's a correction report, then it's populated with payslips that aren't in a **finalised report**. **A finalised report is a report that is in a ready/done state and not one of its parent correction reports. Once the report has payslips in it, a button appears to generate the PDF (for the user) and XML (to be submitted) files.** * Once generated, the report moves to the Ready state, allowing users to review the data before final submission. In this state, all fields become non-editable except for the Reference field, which should be used to add the reference of the declaration received from the government after submission. The report can be set back to draft if any changes are needed. If a report that needs to be corrected was set to draft, it will no longer be considered in the first warning type since its `is_correction_needed` will be set to False. * Done state is the next state after Ready, which is achieved by the action `Mark as done` and requires the Reference field to be filled. Since the Reference field is important for the traceability of the declaration report, it's set to be tracked in the chatter. Done state and Ready state are alike except for the fact that Done state is for reports that are already declared to the government and have the reference of the declaration while Ready state is for reports that are generated but not yet declared to the government that's why a `Set to draft` action is allowed for Ready state and the Done state cannot be reached without filling the Reference field. The action `Correct` is shown for Done reports to allow creating a new correction report with the same period and payslips as the original report. * Cancelled state is the last state in the lifecycle and can be reached from any of the previous states. Once a report is cancelled, it cannot be set back to any other state, and all its data becomes non-editable except the Reference field. **UI & Proactive Warnings** * Two warnings are also added to the dashboard to alert the user when some reports are outdated and need to be corrected, or when some payslips are missing from the declaration of the previous year. * For the first warning, a report is considered outdated when one of its payslips has been cancelled after the report was generated. * For the second warning, a payslip is considered missing from last year's declaration when it belongs to the previous year and is not included in any ready/done report of the previous year. Missing payslips will be declared in December's Initial Declaration report of the previous year or a correction report if December's report is already declared. The warning for missing payslips of only one previous year is shown. Task: 5473528
This update enhances the accuracy of withholding tax calculations for Belgian employees. The changes incorporate more detailed criteria, such as residency status and employment duration, to ensure compliance with Belgian tax regulations and improve the precision of tax deductions.
Original PR description
In this commit, we improved the bareme computation in withholding tax, by taking into consideration more conditions (Resident, Frontalier, contract covering the full year, works in belgium for >= 75%, ..) task-6231497
This update allows administrators to directly adjust the total amounts for individual lines within payroll calculations. Previously, these totals were fixed, leading to potential discrepancies. This change improves payroll accuracy and provides greater control for financial teams.
Original PR description
Task: 6292521
This update enhances the timesheet assistant by allowing administrators to precisely control which employees receive suggestions based on new 'Applies To' settings. It also introduces a threshold feature, ensuring activity suggestions are only displayed when a specific usage level is reached, optimizing efficiency. This change improves the relevance and usability of the timesheet assistant.
Original PR description
- Replace the "Shared With" mechanism with an "Applies To" field to control which employees a rule applies to. - Add threshold support so activity suggestions are only displayed when the configured threshold is reached. task-6186073
This update enhances employee record management by adding a certificate column to employee profiles, allowing easy viewing and download. Additionally, uploaded certificates are now automatically stored in the Documents folder, streamlining the process for both new and existing certificates.
Original PR description
This PR includes some changes related to the certificates in hr_skills. First of all, we add a column in the list view found in the Certificates tab on the employee profile that shows the certificate that has been uploaded. This also allows the downloading of the certificate. Secondly, we make it so that if documents is installed, the uploaded certificates are uploaded to the Certificate folder in Documents. Task: 6210153
This update enhances the visual design of the call debrief transcription layout, making it more user-friendly. Specifically, it adds an 'active' state to the timeline markers, providing clearer visual cues for key moments during the call. This improves clarity and usability of the call debrief feature.
Original PR description
This commit refines the design of the call debrief transcription layout. It also adds an active state to the timeline markers. task-6119464 Requires: - https://github.com/odoo/odoo/pull/271103 --- |…
This commit refines the design of the call debrief transcription layout. It also adds an active state to the timeline markers. task-6119464 Requires: - https://github.com/odoo/odoo/pull/271103 --- | Header | Header | |--------|--------| | <img width="955" height="440" alt="Screenshot 2026-06-19 at 16 38 12" src="https://github.com/user-attachments/assets/114819c7-8bec-4a65-af13-9f834e692053" /> | <img width="947" height="820" alt="Screenshot 2026-06-19 at 16 39 24" src="https://github.com/user-attachments/assets/62374140-6819-4557-8181-6fd36b006cc5" /> | | <img width="960" height="247" alt="Screenshot 2026-06-19 at 16 38 28" src="https://github.com/user-attachments/assets/b25368c8-b545-4fc7-8211-907faed28926" /> | <img width="954" height="368" alt="Screenshot 2026-06-19 at 16 39 45" src="https://github.com/user-attachments/assets/1836c801-c383-43cb-aa11-ef2ec3e496cb" /> | | <img width="955" height="449" alt="Screenshot 2026-06-19 at 16 38 49" src="https://github.com/user-attachments/assets/983dd118-a3dd-4055-8af4-703217047e8b" /> | <img width="957" height="614" alt="Screenshot 2026-06-19 at 16 40 08" src="https://github.com/user-attachments/assets/5b22f3e4-9af7-4ce9-b3fd-b997964c5794" /> |
This update significantly improves Clickbot's logging capabilities by providing detailed context around errors during automated testing. Now, when a Clickbot error occurs, the logs include information about the specific application, menu, and view being used, making it much easier for developers to quickly identify and resolve issues. This reduces troubleshooting time and improves the stability of automated testing.
Original PR description
This commit enhances the Clickbot logging mechanism to make it much easier to pinpoint exactly where an error occurs during an automated run. The major improvements include: * Contextual Tracebacks: For each error, the log now prints the active application, menu, view, and filter currently being tested. * Console Interception: It intercepts all standard console errors and warnings, automatically appending this contextual application data to them. * Reduced Noise: To keep the overall log size manageable, routine click events are no longer logged unless required. task-6325836
This update enhances the timesheet grid by aligning color indicators with employee schedules. Now, the grid accurately reflects whether hours worked meet expected targets, considering different schedule types (flexible, fully flexible, and weekly totals). This ensures a clearer and more reliable view of employee time tracking.
Original PR description
Improve timesheet grid color logic to align with employee working schedules. - Fixed & flexible (with hours per day): green when hours are >= expected, red when < expected - Flexible without daily hours & fully flexible: no color on daily values - Weekly totals: green when total >= expected, red when < expected - Fully flexible schedules: no color applied task-6035150
This update enhances the stock barcode configuration process by providing a real-time preview of the scanning instructions directly within the operation type setup. This allows users to better understand and configure scanning settings in real-time, improving accuracy and efficiency. A clarification was also made regarding the 'no' scan source location setting.
Original PR description
This commit adds the instructions preview directly in the operation types' form view. The purpose is to have a preview of the scanning step in real-time while configuring the operation type. [task-5073172](https://www.odoo.com/odoo/966/tasks/5073172)