Friday, August 29, 2025
13 changes · master
Enhancements to existing features
This update adds automated checks across barcode lookup features to confirm product data is fetched and applied correctly. It helps reduce the risk of issues when creating products through point of sale, inventory barcode scanning, and website flows.
Original PR description
*: pos_barcodelookup, stock_barcode_barcodelookup, website_product_barcodelookup In this commit: ------------------- - Added tests for barcodelookup to check whether the data fetched and set properly. - Added tests in respective modules to check the flow and creation of the products using barcodelookup. task - 3920661 Forward-Port-Of: odoo/enterprise#93175 Forward-Port-Of: odoo/enterprise#69120
VoIP call status messages are now more consistent between call records and the softphone history. This makes it easier for users to understand call outcomes across the VoIP interface without seeing mismatched wording.
Original PR description
Aim of this commit is to harmonize call status messages in voip.call and softphone history. Task-4915054
Subscription products now prioritize the currently payable price in the cart, aligning their presentation with rental items. The order summary also shows the subscription period correctly, reducing confusion during checkout.
Original PR description
At the moment the subscription is displaying the price period under the price, which is not consistent with what we do for rental items. The emphasis should be on the current paid price not the subscription period. Additionnaly fixes the subscription period in the order summary. task-4512956
If website generation fails, the error is now sent back to the website support service. This makes it easier for support teams to see what went wrong and resolve issues faster.
Original PR description
When an error occurs during generation, send the error back through report_ko to be able to see the logs on the WSS. Forward-Port-Of: odoo/enterprise#93176
The payroll setup screen for salary rule parameters has been simplified by removing less-used fields from the main form and placing the description where users see it sooner. This makes payroll configuration easier to read and navigate for HR teams.
Original PR description
-Removed value and valid since from form view -Move the description field below the code. -Remove description tab. task-5043887
Resolved issues and error corrections
Fixed an issue where previewing a sales order could fail after switching from a subscription quotation template to a regular one. The preview now only shows subscription-specific information when the order is actually a subscription, preventing an error and keeping the sales workflow uninterrupted.
Original PR description
Steps to reproduce: 1. Go to Sales > Configuration > Settings. 2. Set Subscription Template as default Quotation Template e.g.(Yearly Cleaning) 3. Create a new Sales Order 4. Switch the quotation…
Steps to reproduce: 1. Go to Sales > Configuration > Settings. 2. Set Subscription Template as default Quotation Template e.g.(Yearly Cleaning) 3. Create a new Sales Order 4. Switch the quotation template from a Subscription one to a non-subscription template e.g.(Office Furnitures) 5. Click Preview on the Sales Order. Issue: A traceback is raised: `TypeError: unsupported operand type(s) for +: 'datetime.date' and 'bool'` Cause: In the portal template, the following expression is evaluated without checking if value is falsy or empty: https://github.com/odoo/enterprise/blob/36f419e4604a2adc946f3a6828e69fba7584d2df/sale_subscription/views/sale_subscription_portal_templates.xml#L66 The portal template contained expressions referencing subscription-specific fields (like plan_id.billing_period) without checking whether the sales order was actually a subscription. When the quotation template is non-subscription, these fields may be False, leading to the error. Solution: Guard all subscription-related blocks with condition: `<t t-if="sale_order.is_subscription">` opw-4980869 Forward-Port-Of: odoo/enterprise#92845
Code cleanup and technical improvements
The spreadsheet filter editor side panel now uses a shared footer area for save, delete, and cancel actions. This streamlines the interface implementation and should make future updates to these controls more consistent across filter types.
Original PR description
This commit adds a new component called GlobalFilterFooter, which is used to render the footer of the global filter editor side panel. The footer includes buttons for saving, deleting, and canceling changes to the filter. Task: 5042717
Fixed an issue where the Timesheet Leaderboard could crash when the current employee was not shown because their billing rate was very low. Users can now open the widget reliably, even when their own record is filtered out of the billing rate view.
Original PR description
**Issue:** A traceback occurs when clicking the Timesheet Leaderboard widget. **Cause:** The template `timesheet_leaderboard_dialog.xml` assumes that `state.current_employee` is always defined. However, when the current user's employee has a billing rate ≤ 0.5%, they are filtered out from the leaderboard. As a result, `setCurrentEmployeeIndexFromLeaderboard` returns `undefined`, causing the widget to crash. https://github.com/odoo/enterprise/blob/70ed91ba1ebb94cb1919df49a4d95fad26935d03/sale_timesheet_enterprise/static/src/services/timesheet_leaderboard_service.js#L18-L31 **Steps to reproduce:** 1. Set up a company with 4+ employees having billing targets. 2. Ensure the current user's employee has a billing rate ≤ 0.5% (e.g., 0.3 hours logged / 100 hours target). 3. Switch the leaderboard to "Billing Rate" mode. 4. Click the Timesheet Leaderboard widget. opw-4875410 Forward-Port-Of: odoo/enterprise#93339
This fix prevents duplicate records from being created when the stock fleet module is upgraded. It helps keep upgrades reliable and avoids unnecessary duplicate interface entries for inventory delivery operations.
Original PR description
Commit a7f2a2cf9c96 changed the window action to take a specific view xmlid by creating a new `view_ids` entry. As the action is `noupdate=0`, upgrading the module will try to create a new record with the same name. This commit adds the `noupdate` tag around those record to avoid creating new view at update. runbot-230819 Forward-Port-Of: odoo/enterprise#92611
Customers who reorder past sales orders will no longer have appointment-related calendar events added back into their cart. This prevents confusing cart contents and avoids inconsistent behavior when previous appointment orders are reordered.
Original PR description
Steps to reproduce: - Create an appointment that generates a sale order on confirmation. - Confirm the order. - Navigate to `/my/orders` and attempt to reorder the sale order. - Calendar events are added to the cart. Issue: - Calendar events shouldn't be added to the cart - Reordering such lines can lead to inconsistent behavior. Root Cause: - The base `_is_reorder_allowed()` method does not filter out sale order lines that originate from appointments. Solution: - Override `_is_reorder_allowed()` in the `website_sale_appointment` modules. - Filter out lines with `calendar_event_id` set. See also: https://github.com/odoo/odoo/pull/198070 https://github.com/odoo/upgrade/pull/7633 affected version-master task-4472286
A redundant internal marker was removed from the payroll payslip run screen definition. This does not change how the feature works, but makes the code clearer and easier to maintain.
Original PR description
This directive allows to declare a template, so using it inside a template is useless. It doesn't cause any issue, it simply has no effect. This commit removes it for the sake of clarity.
This fixes how Swiss payroll accounting handles negative payslip lines by reversing the accounts when needed. It helps ensure payroll entries are posted to the correct accounts, reducing accounting corrections and improving reliability for Swiss payroll processing.
Original PR description
…r 2050 Invert accounts for negative payslip line Forward-Port-Of: odoo/enterprise#93142 Forward-Port-Of: odoo/enterprise#93074
The VoIP CRM integration now includes needed user permission details when the web session starts. This avoids extra background calls during startup, helping the interface load more efficiently without changing user-facing features.
Original PR description
Since the VoIP app use some groups at startup[1], it's made sense to adds it inside the session_info bundle to avoid RPCs at webclient startup. [1]: https://github.com/odoo/enterprise/commit/9d3a13e9adae3a6b1c44b70a52b2fd74ef9dcc1a#diff-e8144e1aa7d3b4933985de5693d78e8c392bce8f7150ad186a04b8c87c7cd32aR14-R16 Forward-Port-Of: odoo/enterprise#93419