Daily updates from Odoo
Thursday, April 16, 2026
23 changes
2 changes
Enhancements to existing features
This update enhances the Point of Sale system by adding sound feedback during barcode scans. A pleasant beep confirms successful product identification, while a distinct error sound alerts staff to scanning failures. This improves user experience and reduces potential errors during transactions.
Original PR description
Play a beep sound when a barcode scan successfully finds a product, partner, or GS1 barcode. Play a distinct error sound when the scan fails to match any record. task-id: 5969010 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#250434
This update improves the Odoo Gantt view by displaying progress bars for all employees, not just those on leave. This provides a more complete and accurate representation of employee work hours, enhancing visibility and reporting.
Original PR description
…hose without leaves Previously, the gantt view only showed the progress bars (the number of worked hours) for employees who had leaves. Now, this PR shows the progress bars for all employees, even those without leaves. Task-5999717
6 changes
Enhancements to existing features
This update enhances the Point of Sale system by providing audible feedback during barcode scans. A pleasant beep confirms successful product identification, while a distinct error sound alerts users to scanning failures. This improves the user experience and reduces potential errors during transactions.
Original PR description
Play a beep sound when a barcode scan successfully finds a product, partner, or GS1 barcode. Play a distinct error sound when the scan fails to match any record. task-id: 5969010 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#250434
This update fixes an issue where product names on the Replenishment dashboard were being cut off, leading to a poor user experience. The team adjusted column sizes to maximize space and ensure product names are fully visible, improving usability.
Original PR description
Purpose: the name of the product in the replenishment dashboard often gets truncated which is bad for UX. Adjust column widths to make better use of space. task-5097352 Forward-Port-Of: odoo/odoo#253384
This update simplifies the balance sheet structure in both the generic and US versions of Odoo. It clearly separates 'Earnings' and 'Equity' accounts, making it easier to track financial performance and improve reporting accuracy. This change enhances the clarity of financial statements.
Original PR description
Simplifying the structure of the Balance Sheet in order to distinguish clearly **Earnings** and **Equity**, in the generic and US balance sheet. Improving the generic and us charts of accounts to better highlight the account pair for the allocation of earnings. task-6053852 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#256674
This update simplifies the Balance Sheet report to clearly separate Earnings and Equity, enhancing financial reporting for both the standard and US versions of Odoo. The changes improve the presentation of key financial accounts, making it easier to understand and analyze financial performance.
Original PR description
Simplifying the structure of the Balance Sheet in order to distinguish clearly **Earnings** and **Equity**, in the generic and US balance sheet. Improving the generic and us charts of accounts to better highlight the account pair for the allocation of earnings. task-6053852 Forward-Port-Of: odoo/enterprise#112499
This update enhances the process of updating German Point of Sale certification orders by ensuring consistent and reliable transaction handling. The team removed redundant UI validation steps, streamlining the user experience. This change improves order accuracy and stability for our German customers.
Original PR description
In this commit: ------------------- - We have added logic to execute API calls using a mutex for order updates (such as line updates and removals). This ensures that each update is processed (sequentially), allowing us to properly track and maintain order consistency. - We removed the ZIP and address validation on the UI since the backend already assigns default values if they are missing. So, there’s no need to restrict the user on the UI. task:5941742 Forward-Port-Of: odoo/enterprise#113969 Forward-Port-Of: odoo/enterprise#108694
This update enhances how offers are managed by automatically treating contract start dates within existing periods as amendments, creating new versions instead of new contracts. It also proactively archives outdated versions and provides a warning to users, ensuring data accuracy and preventing conflicts.
Original PR description
**Contract Amendment & Versioning Logic** * When an offer's contract start date falls within an existing contract period, it is treated as a contract amendment (new version) rather than a new…
**Contract Amendment & Versioning Logic** * When an offer's contract start date falls within an existing contract period, it is treated as a contract amendment (new version) rather than a new contract. * For contract amendments, the offer's contract end date is read-only and automatically inherited from the existing contract. * When creating a new offer, any existing versions with effective dates **on or after** the new offer's contract start date are automatically archived, as they likely contain outdated data. * Added a warning to notify users when a new offer will replace existing future versions. **Technical Refactoring** * Simplified the `employee_version_id` computation by delegating to the existing `_get_version` method on the employee model. This ensures the selected employee version correctly matches the contractual state effective at the new offer's * Ensured cache invalidation after rollback savepoints to prevent stale data. The overridden `_get_version` in `hr_contract_salary_payroll` writes to `employee.version_id` and the `contract_template_id`; although rolled back, it polluted the cache. We now always invalidate the cache after rollbacks to avoid inconsistencies, including later module installation. **Simulation & Chatter** * Inside the simulation, when calling `_get_version`, we need to adjust the contract dates of the version being simulated. The main challenge is allocating this simulated version between existing employee versions without creating contract overlaps, since overlaps raise validation errors. * To avoid this issue, we move to a new approach. We archive all versions after `employee.version_id` and set `employee.version_id.contract_date_end = False`. * Then, instead of replacing the active version, we create the simulation version as an amendment to `employee.version_id`. The amendment's effective date is set to `max(fields.Date.today(), employee.version_id.contract_date_start, self.contract_start_date)` + 1 day. This ensures the current version remains unchanged, avoids contract overlaps, and prevents chatter pollution. task: 5408192 Forward-Port-Of: odoo/enterprise#103846
2 changes
Enhancements to existing features
This update simplifies the generation of Spanish tax reports (303 and 347) by automatically displaying key fields. Specifically, the 'exonerated from 390' option is now available on the print wizard for recent periods, and a new grouping is added for auditing annual reports, streamlining the reporting process.
Original PR description
In this PR: - In tax report 303, the 'exonerated from 390' boolean field is now visible on the print BOE wizard , when period is either last month or last quarter so that user does not have to enable it manually on the AEAT page. - In the annual tax report 347, when a user clicks to audit the operations of the entity, a new group by is added in context to group the reports by move type and date(quarter). task-5863744 Forward-Port-Of: odoo/enterprise#113644 Forward-Port-Of: odoo/enterprise#108057
This update enhances the process of updating German Point of Sale (POS) certification orders by ensuring sequential updates through a new locking mechanism. Additionally, unnecessary UI validation for ZIP codes and addresses has been removed, streamlining the user experience. This improves order consistency and reduces complexity.
Original PR description
In this commit: ------------------- - We have added logic to execute API calls using a mutex for order updates (such as line updates and removals). This ensures that each update is processed (sequentially), allowing us to properly track and maintain order consistency. - We removed the ZIP and address validation on the UI since the backend already assigns default values if they are missing. So, there’s no need to restrict the user on the UI. task:5941742 Forward-Port-Of: odoo/enterprise#113809 Forward-Port-Of: odoo/enterprise#108694
10 changes
Enhancements to existing features
This update improves the Social Balance Sheet report by adding key data points like overtime and streamlining the report's structure. The changes also include updated translations for French, Dutch, and German, ensuring accurate reporting across multiple languages. This enhancement provides more comprehensive financial data for business analysis.
This update improves the Gantt view by displaying progress bars for all employees, regardless of whether they have scheduled leave. Previously, the Gantt only showed progress for employees with leaves. This enhancement provides a more complete and accurate view of employee work hours.
Original PR description
…hose without leaves Previously, the gantt view only showed the progress bars (the number of worked hours) for employees who had leaves. Now, this PR shows the progress bars for all employees, even those without leaves. Task-5999717
This update enhances the self-order point-of-sale system by adding a country prefix selector for phone numbers. This simplifies the process for customers entering their contact information, improving the user experience and reducing potential errors. The change aligns with recent community updates for a consistent user flow.
Original PR description
In this commit we adapt a tour such that it follows the changes done in the corresponding community commit. Task: 5913205
This update simplifies the holiday scheduling view within the Enterprise module. The outdated custom popover has been replaced with the standard dialog used in other views, creating a more consistent and user-friendly experience. This change improves usability for HR staff managing employee time off.
Original PR description
- removed the custom popover for the timeoff gantt view and replaced it with the same dialog that appears in other views task-id: 5473334
This update enhances the reliability of tests within Odoo's enterprise modules by ensuring consistent handling of company environments. The changes address a limitation where simply specifying the company wasn't enough to filter tests correctly, leading to inconsistent results. This improves the overall stability and accuracy of the testing process.
Original PR description
More information on the related community commits.
This update clarifies the capacity settings within the appointment scheduling feature. The changes involve updating labels for both users and resources, making the system easier to understand and use. Additionally, a minor simplification was made to the timezone settings, improving code efficiency.
Original PR description
This commit improves and clarifies the capacity feature on the form view of the appointment type model by changing some labels for both users and resources. Also takes the opportunity to simplify the syntax of the timezone setting in the controller by removing unnecessary code. task-5173341
This update introduces a system to track payrun closing dates specifically for different employee types within the payroll system. The system now provides a warning to users when payrun closing dates are not set for particular employee types, ensuring accurate payroll processing and compliance. This improves payroll management and reduces potential errors.
Original PR description
In this commit, we added a payroll_closing_date for the employee type model. We added a warning to notify the user when the payrun closing date for that employee type. task-5922782
This update allows users to add rentable products directly to sales orders, automatically converting them into rental orders. To revert to a standard sales order, users must remove the rental dates. This simplifies the process of managing rental products within sales transactions.
Original PR description
Before this commit, rentable products could only be added to rental orders. This makes sense because the sales price of a rentable product is actually the rental price. Adding a rentable product to a standard sales order would undervalue the product. For example, a bike rented for $100/week should not be sold for $100, but rather $1000. After this commit, adding a rentable product to a sales order automatically converts it to a rental order. To convert a rental order back to a sales order, users must remove both the start and return rental dates. task-6003684
This update enhances the Discuss interface by displaying phone call status icons, providing a clearer picture of user availability. It automatically tracks active calls and prioritizes leave status when the HR Holidays module is enabled, ensuring accurate presence information. This improves communication and coordination.
Original PR description
Display phone status icons in Discuss when a user is on a call. Compute phone_* IM status on active calls and notify presence updates. Ensure leave status keeps precedence when hr_holidays is installed. community PR: https://github.com/odoo/odoo/pull/254136 task-5478885
This update aligns the self-order POS tour with recent community changes, streamlining the user experience. It involves adapting the delivery distance calculation to ensure accurate estimations for self-order transactions, enhancing the overall functionality of the POS system.
Original PR description
In this commit we adapt a tour such that it follows the changes done in the corresponding community commit. Task: 4177086
2 changes
Enhancements to existing features
This update simplifies the generation of Spanish tax reports (303 and 347) by automatically displaying key fields. Specifically, the 'exonerated from 390' field is now visible on the print BOE wizard for relevant periods, and a new grouping is added for audit operations in report 347, streamlining the reporting process.
Original PR description
In this PR: - In tax report 303, the 'exonerated from 390' boolean field is now visible on the print BOE wizard , when period is either last month or last quarter so that user does not have to enable it manually on the AEAT page. - In the annual tax report 347, when a user clicks to audit the operations of the entity, a new group by is added in context to group the reports by move type and date(quarter). task-5863744 Forward-Port-Of: odoo/enterprise#113644 Forward-Port-Of: odoo/enterprise#108057
This update enhances the process of updating German Point of Sale certification transactions by ensuring order updates are processed sequentially. Additionally, unnecessary ZIP and address validation checks on the user interface have been removed, streamlining the user experience. This change improves order consistency and reduces complexity.
Original PR description
In this commit: ------------------- - We have added logic to execute API calls using a mutex for order updates (such as line updates and removals). This ensures that each update is processed (sequentially), allowing us to properly track and maintain order consistency. - We removed the ZIP and address validation on the UI since the backend already assigns default values if they are missing. So, there’s no need to restrict the user on the UI. task:5941742 Forward-Port-Of: odoo/enterprise#113809 Forward-Port-Of: odoo/enterprise#108694
1 change
Enhancements to existing features
This update switches from a problematic VIES check to a more reliable IAP server for validating EU Tax IDs. This resolves frequent errors, particularly for French partners, and ensures accurate intra-com status updates. Security measures, including HMACs and cron polling, are implemented for secure data transfer.
Original PR description
Currently, when changing the Tax ID of a partner that is another EU country, we perform a VIES check to know whether it is valid (i.e. can do intra-com). However, it is often the case that the VIES check fails because of an internal error on their side (timeout, max concurrent update, ...), especially for France. Instead, we will now use the IAP server which stores the validity of a Tax ID for some time. If the IAP server does not have the info (because VIES is down), we will not actively wait. Instead, IAP will perform a push to a webhook on the client database once it has the information. For security purposes, an HMAC is generated and sent to IAP so that only IAP can contact the db with the up-to-date info, and not anyone on the internet that calls this new webhook. There is also a cron for polling for OnPrem instances that cannot be contacted via the webhook. task-5977584 Forward-Port-Of: odoo/odoo#258155