Daily updates from Odoo
Friday, April 10, 2026
47 changes · master
New functionality added to Odoo
This update introduces electronic invoicing functionality for Dominican Republic businesses, fulfilling a key client request. Users can now generate invoices in XML format for submission to DGII, with automated status checks and email notifications upon acceptance. It streamlines the invoice process and ensures compliance with local regulations.
Original PR description
Purpose: - Support electronic invoicing for Dominican Republic which was a highly requested feature from clients - Generate XML files to send to Infile to send to DGII - Document types supported: 31,…
Purpose: - Support electronic invoicing for Dominican Republic which was a highly requested feature from clients - Generate XML files to send to Infile to send to DGII - Document types supported: 31, 32, 33, 34 Additions: - Scheduled action, Dominican Republic EDI: Update DGII Status, to request DGII status of the sent invoices - Model: l10n_do_edi.document.type.range - Stores the authorized sequence range of the document type Expected Workflow: - Users will provide their Infile credentials in company settings - Users will need to set the authorized sequence range on document types - Users will be able to create invoices with the supported document types and confirm and send to Infile for validation, either Infile accepts or rejects the invoice and its xml - Once Infile accepts the invoice and its xml, the user will need to click on the 'Request DGII Status' button to get the final verdict from DGII or they can automate the process via the scheduled action - Once the DGII accepts the invoice and its xml, an email with the invoice pdf and its xml attached will be sent to the partner task-5468081
This update expands the capabilities of our AI agents by allowing them to execute client actions, previously restricted to opening standard views. The change introduces a new system for agents to interact with the frontend, improving their responsiveness and ability to perform tasks. This enhances the agent's functionality within the Odoo platform.
Original PR description
Before this commit, the agents were only able to open views of type `ir.actions.act_window`. With this change, the `ir.actions.client` are made available to the agent in the `_get_available_menus()` of the `AIAgent`. This implies the following changes: - Addition of the `ir.actions.client` menus to the `_get_available_menus()`, - Addition of a new tool `_run_client_action` allowing the agent to execute client actions. This method takes the id of the selected action in argument, and then forwards it to the frontend via the bus, - Addition of a new event `AI_CLIENT_ACTION` for the bus to send information to the front-end to execute the selected client action. task-5960556
This update introduces sample data for the planning field service application, allowing developers and testers to work with a realistic scenario. The addition of roles, customers, and tasks improves the ability to thoroughly test the application's functionality and workflows. This enhances the quality assurance process.
Original PR description
This PR adds demo data for the planning field service app, in order to be able to test the application with a realistic dataset. More precisely, it adds some planning roles, customers, descriptions, projects and tasks to the existing planning slots (interventions). task-5955800
This update introduces a new accounting rule within the Belgian payroll module to accurately reflect the 'ONSS TOTAL' calculation required by Belgian tax regulations. This ensures that payroll reports align with official reporting standards, improving compliance and financial accuracy. The change impacts how salary data is processed and accounted for.
Original PR description
Task: 6072450
This update adds a convenient button to CRM leads, allowing sales teams to quickly access and respond to ongoing WhatsApp conversations. The button appears only when a WhatsApp conversation is active, streamlining follow-up and improving lead engagement. This enhancement simplifies the sales process by integrating WhatsApp directly into the lead management system.
Original PR description
Adds a smart button on CRM leads to quickly access ongoing WhatsApp conversations related to the lead. The button is displayed only when a conversation exists, allowing seamless follow-up directly from the Lead. Task-5240269
Enhancements to existing features
This update replaces the traditional helpdesk knowledge section with an AI live chat widget when both the live chat and helpdesk modules are installed. The ‘Odoo Compliance Assistant’ AI agent is automatically assigned when demo data is available, ensuring a seamless customer experience. This change improves customer support by providing instant AI-powered assistance.
Original PR description
Currently, when the website_helpdesk_knowledge module is installed, customers can use the knowledge form and help section for assistance. Now, when both ai_website_livechat and helpdesk modules are…
Currently, when the website_helpdesk_knowledge module is installed, customers can use the knowledge form and help section for assistance. Now, when both ai_website_livechat and helpdesk modules are installed,
the knowledge section is replaced with the AI live chat widget.
When demo data is available, the **“Odoo Compliance Assistant”** AI agent is set by default.
Technical Details:
----------
1)
When we update AI agent, placeholder, or live chat channel values from the snippet, we need to allow those attributes by adding them to the **_get_allowed_root_attrs** method.
2)
file: demo.xml
```xml
<odoo>
<data noupdate="1">
<template id="ai_helpdesk_knowledge_demo" inherit_id="ai_website_helpdesk.ai_helpdesk_knowledge">
<xpath expr="//section[hasclass('s_ai_livechat')]" position="attributes">
<attribute name="t-att-data-agent-id">request.env.ref('ai.ai_agent_1').id</attribute>
</xpath>
</template>
</data>
</odoo>
```
However, when we set the AI agent from demo data, the snippet does not update correctly.This happens because the **replace_arch_section()** method does not update `t-att-data-agent-id` in inherited views. As a result, the snippet updates the data-agent-id in the main view, but when the page loads, the inherited view’s agent value takes priority. so, I have to use this demo data **(Odoo Compliance Assistant)** AI agent in the controller.
task-5166174This update enhances the way time off is displayed on pay runs, providing a clearer view of pending requests. It ensures the Gantt chart accurately reflects the pay run period and includes a notification to quickly approve outstanding time off. This improves payroll accuracy and reporting.
Original PR description
- Added a styled "X to approve" notification pill to the Pay Run Kanban card that dynamically hides when 0, and redirects to a pre-filtered list of pending time offs. - Updated the time off window actions to pass `initialDate` and a mapped `default_scale` in the context, forcing the Gantt chart to perfectly match the pay run's specific period. - [WIP] Refactored `_gantt_progress_bar` in `hr.leave` to calculate actual daily working hours by subtracting time off intervals from the employee's `resource.calendar` schedule. - Injected a hidden `span` containing the computed daily working hours into the Gantt chart cells (`web_gantt.GanttRenderer.RowContent`), laying the structural groundwork for CSS hover effects. task-5965514
This update allows users to control duplex printing within the report printer selection wizard. This provides greater flexibility in how reports are printed, catering to different user preferences and output requirements. The change was driven by a request to enhance the user experience and printing capabilities.
Original PR description
We now allow users to disable duplex printing in report printer selection wizard. see odoo/odoo#257843 task-6089016
This update streamlines the calculation of prices for subscription-based sales (sale_subscription) by optimizing how pricelist rules are applied. It allows for faster filtering of rules based on minimal quantities, improving efficiency and reducing processing time. This change enhances the overall performance of subscription sales pricing.
Original PR description
*= sale_subscription, website_sale_subscription * This change introduces batching of price computation by product periodicity to enable early filtering of pricelist rules based on minimal quantities directly in SQL through `_get_applicable_rules` and `_get_applicable_rules_domain`. * It also aligns method overrides with the main method signatures to ensure consistency and maintainability. task-4875803 Co-authored-by: Victor Feyens (vfe) <vfe@odoo.com> See Also: - https://github.com/odoo/odoo/pull/234935
This update enhances the Odoo Enterprise spreadsheet edition by allowing users to directly link cells to data sources. This provides a more seamless way to integrate spreadsheet data with other Odoo modules, streamlining reporting and analysis. It's an improvement to the spreadsheet functionality.
Original PR description
Task-5932139
This update optimizes how the system searches for calendar resources, specifically when filtering by user. Adding an index on `planning.calendar.resource.user_id` speeds up these searches, leading to faster response times for calendar-related operations. This improves overall system performance.
Original PR description
This commit adds an index on `planning.calendar.resource.user_id`, as it's the only criteria used in `get_calendar_filters` for the `search_count` and the `search_read` done after. Forward-Port-Of: odoo/enterprise#113304
This update introduces geo-fencing to control where employees can check in and out. It prevents check-ins outside designated workplace areas, improving accuracy and potentially reducing errors in attendance tracking. The system now flags and warns employees if check-ins occur outside of their defined work locations.
Original PR description
-Currently, employees can check in and check out from any location, which may not always be desirable. This commit introduces a geo-fencing mechanism to restrict attendances to a defined workplace area. -Established geo_fence functionality on configuration. -Refined '_attendance_action_change' logic to handle check-in from various work location. Also implemented the warnings to be displayed if the check-in is not as per the defined work location. -Added the method _calculate_employee_distance_from_workplace to find the distance between workplace and employee's location. -Added the filter to fetch offsite and conflicting attendance. task-4963427
This update standardizes the messages displayed in Odoo's drop zones across different modules. Previously, instructions varied, leading to potential confusion for users. Now, all drop zones use consistent language, making it clearer where elements should be placed and improving the overall user experience.
Original PR description
This commit changes the messages shown in some drop zones to indicate where dropped elements will appear, for example: "Drag blocks here, apply to all blogs". Before this commit, the messages used different wording depending on the module. After this commit, the messages are standardized to use the same wording across all modules. task-5921283
This update allows administrators to set a default joint committee for new employees. Employees can now be assigned a committee based on a pre-defined type or fall back to the company's main committee. This simplifies the process of setting up employee committees and ensures consistency across the organization.
Original PR description
This commit adds the possibility to set a default joint committee on a newly created employee from a JC defined on the employee type or a fallback to the company's main JC. TaskID-5972507
This update enhances the user experience of the Salary Attachment form by simplifying labels and button text, moving the priority indicator, and adjusting the layout. These changes aim to improve usability and clarity for HR staff managing salary adjustments.
Original PR description
This commit introduces some UI/UX changes to the form view of Salary Attachments. The changes are: - The text under Salary Adjustment in the top is not "Type + Durantion Type" anymore but "Type + Employee Display Name". - The "Mark as completed" button now instead reads "Done". - The "closed" state text is now "Done" instead of "Closed". - The priority widget (3 stars) has been moved to the top right of the form. - The Type selection menu has been shrinked to half width. - The date_end or date_estimated_end are no longer editable. Task: 5959289
This update removes unnecessary code overrides within the Odoo Enterprise system. These cleanup efforts streamline the application, reducing potential complexity and improving performance. The changes contribute to a more efficient and stable user experience.
Original PR description
Some overrides were unused and could be removed. This commit cleans them up.
This update aligns the Odoo spreadsheet functionality with a recent upgrade to the underlying library. Specifically, several actions previously disabled on locked spreadsheets have been re-enabled, and new datasource links have been added to cells. This improves usability and expands the capabilities of the spreadsheet feature.
This update streamlines the booking process in our Point of Sale system by improving calendar views and adding new functionality for managing table reservations. Specifically, users can now easily add or update bookings through various interfaces, confirm table assignments, and filter bookings based on key criteria, leading to more efficient operations.
Original PR description
In this commit: --------- - We are improving the calendar event views on the booking page in PoS. - Added a flow to add or update resources on clicking the kanban/gantt popover `check in` button, on kanban state change to `check in`, and on clicking the list view `Set Table` button. - Added a flow to update table booking on long press on a table in the floor plan. - Introduced a new search view with filters based on booking states, booking start time, etc. - Added a confirmation pop-up when opening a table with an appointment, allowing the user to confirm and link the order to the calendar event or automatically change the appointment resource. - Updated the calendar event form view. - Removed the calendar view from the booking page in PoS. Related PRs: - Community: https://github.com/odoo/odoo/pull/255217 - Upgrade: https://github.com/odoo/upgrade/pull/9746 Task-6018428
This update adapts various Odoo modules to the recent catalog refactor, improving its design and extensibility. Specifically, it prepares for future changes in unit of measure handling and simplifies data transmission to the frontend, leading to more efficient product catalog updates. This change enhances the overall product catalog experience.
Original PR description
In https://github.com/odoo/odoo/pull/209316, The catalog was refactored to have a better and an easier to extend design. As well as adding a feature that shows the price per product unit, if the line's unit or seller's unit is different In this commit, uom was added to the parameters passed to `update_order_line_info` in order to prepare it for the upcoming PR that will allow the change of the UoM directly from the catalog. New method was introduced in the catalog refactor, and the modules needed to be adapted to use the new method, which would make sending new props to the frontend much easier without having to loop over all the products everytime.
This update enhances financial reporting by providing a 'coverage ratio' for each analytic plan. This allows users to easily identify if journal items are fully distributed across their planned analytics, which is crucial for accurate audit trails and financial analysis. It addresses discrepancies in P&L and BS reports caused by partial analytic distributions.
Original PR description
The objective is to bridge the gap between journal items and analytic items in the reporting. As Odoo allows for partial analytic distribution, this creates discrepancies in the P&L and BS when filtered by an analytic plan. This features aims to provide users with a clear 'coverage ratio' per plan to identify incomplete distributions during audits. task-5887978 Forward-Port-Of: odoo/enterprise#106750
Resolved issues and error corrections
This update resolves a technical issue that was preventing accurate invoice calculations for subscription sales orders. The fix ensures that the system correctly handles cases where the next invoice date is not specified, preventing a potential error. This ensures reliable invoice generation and accurate financial reporting for subscription customers.
Original PR description
Fix a TypeError when `next_invoice_date` is unset by guarding the date comparison against a falsy value. Community PR: odoo/odoo#252198
This update corrects a previous issue where the Amazon fulfillment channel in the sales module was not editable for users. The fix ensures that users can now properly manage their Amazon fulfillment options, streamlining the order fulfillment process. This resolves a reported usability problem.
Original PR description
Commit 67c45d6494f082e2ee83b9a84611e8b8fe8f4fd5 intended to make `amazon_channel` editable by users. However, the field was displayed with the `badge` widget, which is read-only, so it remained uneditable. Use an editable display for `amazon_channel` so the original fix works as intended. Forward-Port-Of: odoo/enterprise#113196 Forward-Port-Of: odoo/enterprise#112866
This update fixes an issue where rental products displayed an 'out of stock' ribbon even when they had available quantity. The change ensures that rental products are not flagged as out of stock, aligning with their time-based stock management. This improves the customer experience for rental orders.
Original PR description
Currently, when a rental product's quantity on hand drops to 0, the out-of-stock ribbon is displayed on the website for that product. Steps to produce: --- - Install the `eCommerce Rental with Stock…
Currently, when a rental product's quantity on hand drops to 0, the out-of-stock ribbon is displayed on the website for that product. Steps to produce: --- - Install the `eCommerce Rental with Stock Management` module. - Create a rental product and set Quantity On Hand to 1. - Under the Sales tab, disable `Sell when Out of Stock`. - Under the Rental Prices tab, add pricing. - Go to `website > ecommerce > products > product ribbons`. - Open `out of stock` ribbon > set assign as `when out of stock`. - Create and Confirm a rental order for that product and validate the pickup. - The product's Quantity On Hand drops to 0. - Opening the product on the website Observation: --- - The product shows the out-of-stock ribbon. Cause: --- - At [1], the or condition evaluates to True because the ribbon is configured as `when out of stock`, `Sell when Out of Stock` is disabled under the Sales tab, and `_is_sold_out` also returns True since the quantity dropped to 0 after the pickup was validated. As all conditions are met, the ribbon is returned and displayed without ever checking whether the product is a rental. Skip the out-of-stock ribbon assignment for rental products, since their stock availability is time-based. [1]: https://github.com/odoo/odoo/blob/12dd03fb678870ddd3f1f8dca66aa3f934aa7985/addons/website_sale_stock/models/product_ribbon.py#L21-L28 opw-6081483 --- Forward-Port-Of: odoo/enterprise#113280 Forward-Port-Of: odoo/enterprise#112660
This update fixes a limitation in Odoo Enterprise's delivery carrier options. Previously, cash on delivery was unavailable for UPS (legacy), UPS REST, and Shiprocket carriers. Now, these carriers will display the cash on delivery checkbox, providing users with more flexible payment choices.
Original PR description
*: delivery_ups,delivery_ups_rest,delivery_shiprocket Override `_compute_supports_cash_on_delivery` so that UPS (legacy), UPS REST, and Shiprocket carriers expose the cash on delivery checkbox. task-none See also: - https://github.com/odoo/odoo/pull/254459
This update fixes an issue where failed quality checks didn't correctly route items to their designated failure locations. Now, when a user marks an item as failed, a wizard appears to select the correct location, ensuring accurate stock management and preventing misdirected transfers. This improves efficiency and data consistency.
Original PR description
Currently, when a user clicks the 'FAIL' button on a quality check form with available failure locations for a control point, the quality check is directly marked as failed, and the user is not allowed to select the failure location. This leads to inconsistencies in stock management, as the failed items may be transferred to an incorrect location instead of the intended failure location. This improvement ensures that when the 'FAIL' button is clicked, and if failure locations are defined for the control point, a wizard is triggered, allowing the user to select the appropriate failure location. Once confirmed, the chosen failure location is set as the destination for the move. This change improves stock management for failed items and resolves inconsistencies in the transfer process. Task Id: 5367964
This update fixes an issue where the canteen cost was incorrectly calculated for Belgian employees, even when they had no attendance recorded. The fix ensures that the canteen cost is only applied when the employee has worked during the payslip period, aligning with accurate payroll processing. This improves the reliability of the Belgian payroll module.
Original PR description
[FIX] l10n_be_payroll: fix canteen cost computation
Bug reproduction: belgium company -> create a new employee -> new contract (payroll wage > 0) -> canteen_cost = 50 -> create payslip -> allocate time off for full month (such that there will be no attendance) -> recompute payslip -> still canteen cost is calculated
Bug cause:
1 - If l10n_be_canteen_cost is > 0 it was computing the canteen cost line for sure
2 - If result_rules['BASIC']['total'] is > 0 then the canteen cost was 50.
Bug solution:
1 - I add worked_days['WORK100'].amount != 0 to the computation condition.
2 - If there is any earned money from attendance or working in that payslip duration, the canteen cost should be deducted completely
3 - If the employee is absent during the payslip, the employee should not pay the canteen cost.
task - 6045406
Forward-Port-Of: odoo/enterprise#112462
Forward-Port-Of: odoo/enterprise#110991This update resolves an error that occurred during the registration of super payments in the Australian payroll system. By initializing the error message to an empty string, the system now correctly handles payment processing without returning NULL values. Associated tests have been added to ensure this fix functions as expected.
Original PR description
. Initialize the error message with an empty string to avoid returning NULL. . Add corresponding tests task-6091444 Forward-Port-Of: odoo/enterprise#113202 Forward-Port-Of: odoo/enterprise#112930
A technical glitch in the UrbanPiper test order wizard was causing errors. This update removes a feature that was incorrectly attempting to open product forms, preventing the error and ensuring the wizard functions correctly. This improves the stability of the test order process.
Original PR description
Steps to Reproduce ---------- - Make an UrbanPiper Test Order - Select a product - Click the external-link (open) icon - POS traceback appears Issue ----------- Clicking the “open product” icon triggered a traceback because the POS attempted to load the missing hr_expense_product_form view. Fix -------------- Disable form open/create for the product field to remove the quick-open product icon, as there is no need to open the product form from this wizard. Task-6089707 Forward-Port-Of: odoo/enterprise#112819
This update fixes a problem where users weren't receiving clear error messages when the SendCloud delivery service failed. A helpful hint has been added to the system, guiding users to resolve delivery issues more effectively. This improves the user experience and reduces potential delays.
Original PR description
Add hint with error message. ----- Ticket: opw-6072855 Forward-Port-Of: odoo/enterprise#112463
This update resolves a technical problem where the Knowledge editor wasn't properly initializing its features. By ensuring the editor calls the parent implementation of `onEditorReady`, this fix restores the expected functionality and prevents missing initialization logic. This improves the overall stability and reliability of the Knowledge module.
Original PR description
Problem: The Knowledge editor overrides `onEditorReady` but does not call the parent implementation, which leads to missing initialization logic. opw-5266687
This update fixes a technical issue that was causing upgrade testing to fail for the Dimona payroll module. Specifically, a check was preventing the loading of menus during the upgrade process when the company wasn't set to Belgian. The fix moves the check to a safer location, ensuring proper functionality during upgrades while maintaining the intended business rule.
Original PR description
The Dimona models were raising an exception in get_views() when the current company was not Belgian. This caused upgrade mock crawl tests to fail, since opening the related menus after upgrade triggered the error and made them appear as broken. This commit moves the check to default_get() instead, so the restriction is still enforced when creating records, while keeping menu/view loading safe during upgrade crawling.
This fix resolves an issue where the bank reconciliation process would fail when using the liquidity account as an outstanding payment account. The update prevents automatic reconciliation attempts in this scenario, ensuring data integrity and preventing the form from becoming unsavable.
Original PR description
# How to reproduce - Create a new Journal - Go to the Configuration of the Journal > Outgoing Payments > Set the Outstanding Payment accounts for the Manual payment Payment Method to the liquidity…
# How to reproduce - Create a new Journal - Go to the Configuration of the Journal > Outgoing Payments > Set the Outstanding Payment accounts for the Manual payment Payment Method to the liquidity account - Go to the Transactions of the Journal - Add a new Transaction for partner X and amount Y - Add a second Transaction also for partner X and amount Y # The issue A popup appears that can never be saved # Cause When we click on "Add & New" or "Add & Close", we run the `validate()` function : https://github.com/odoo/enterprise/blob/9abb50b9b29e01897b4fb90ae228beecbdfcd5af/account_accountant/static/src/components/bank_reconciliation/quick_create/quick_create.xml#L14-L16 Which tries to do a model save, but it fails so it show the Form dialog : https://github.com/odoo/odoo/blob/6e77d840a2876e45544b21a911be05b2f32b8afb/addons/web/static/src/views/kanban/kanban_record_quick_create.js#L159-L163 The save fails because : This commit (https://github.com/odoo/enterprise/commit/e2b3439dcda26f84b9a290c8d5fb819dd3250825) changed the the logic behind auto-reconcilation with an outstanding account. When there is an outstanding account, we try to auto-reconcile the bank statement with that account and succesfully do so : https://github.com/odoo/enterprise/blob/e2b3439dcda26f84b9a290c8d5fb819dd3250825/account_accountant/models/account_bank_statement.py#L381-L385 https://github.com/odoo/enterprise/blob/e2b3439dcda26f84b9a290c8d5fb819dd3250825/account_accountant/models/account_bank_statement.py#L245 But this should not happen when the outstanding account is the liquidity account, because it will end up throwing an error when the amount is matched more than once: https://github.com/odoo/odoo/blob/6e77d840a2876e45544b21a911be05b2f32b8afb/addons/account/models/account_bank_statement_line.py#L727-L737 opw-6063654 Forward-Port-Of: odoo/enterprise#113358 Forward-Port-Of: odoo/enterprise#112750
This update prevents the 'Plan Services' field from appearing on product forms when 'Sales' functionality isn't enabled. This ensures that users only see relevant options based on their business needs, streamlining the product selection process. The change improves data consistency and user experience.
Original PR description
In the product form, the plan services field was visible even if 'sales' was not enabled on the product. We therefore fix the visibility conditions not to show the field if sales is not enabled. Upgrade PR: https://github.com/odoo/upgrade/pull/9214 task-4886404
This update resolves a bug preventing users with sign access from editing custom fields created by other users. The fix ensures authorized users can correctly access and modify shared custom fields within sign templates, improving collaboration and usability. This change enhances the functionality of the sign process.
Original PR description
Steps to Reproduce: Create a custom field as User A. Log in as User B (with sign user access). Try to use the same field in a template or open its configuration. Attempt to edit the field. Issue: Users were facing access errors when interacting with custom fields created by other users in sign templates, limiting usability and collaboration. Current Behavior: Users cannot edit custom fields created by other users even if they are shared. Expected Behavior: Authorized users can use shared custom fields without any errors. Shared fields can be edited when access conditions are satisfied. Fix: Modified the backend flow so shared items are authorized during sign item creation instead of loosening record rule for shared templates and tests task id - 6102273
This update reverts a recent change to the Belgian payroll accounting rules, specifically related to ONSS total calculations. The change was rolled back to ensure accurate reporting and compliance with Belgian tax regulations. This ensures consistent and reliable payroll processing for our Belgian clients.
This update resolves a technical issue where incorrect HTML messages were appearing in the ‘chat’ feature when creating asset bills. This ensures that all bill-related information is displayed correctly, improving the clarity and accuracy of communication within the system. It’s a minor fix that enhances the user experience.
Original PR description
This commit fixes the broken message in chatter posted during asset creation when confirming bill. task-6103974
This update removes unnecessary visual elements from the settings forms, streamlining the user interface. The change was made to address an issue caused by a previous project and simplifies the layout for a cleaner experience. This improves usability and reduces visual clutter.
Original PR description
Before this commit, some unwanted boxes appeared due to the m3 project. This commit removes them from certain settings forms. To do so, we simplified the view by removing ´<group>´ elements, as the labels were not needed. This avoids the issue.
This update resolves issues with inconsistent tour experiences by refining the triggers used in various Odoo modules. The changes ensure tours run reliably and predictably, leading to a smoother user experience. This primarily impacts the visual onboarding and guidance provided within Odoo.
Original PR description
Fix undeterministic tours by making some triggers more precise in a few steps.
This update enhances the security of Odoo's core modules by making compute methods private. Previously, these methods were accessible via RPC, which wasn't appropriate and could pose a security risk. This change ensures that compute methods only access internal data, improving overall system stability and security.
Original PR description
Compute methods should be private (via prefixing it with '_'). Without that, and with no `@api.private` defined on it, they are publicly exposed for RPC, which doesn't make sense for a compute method, reading instead of reading the computed field instead.
This update corrects a minor technical issue where a previously removed code reference persisted in a reporting module. The change ensures the system functions correctly and avoids potential inconsistencies. It's a routine maintenance update to improve the stability of the Odoo Enterprise platform.
Original PR description
The account_return_type record 'KMD INF Report (EE)' (l10n_ee_reports.ee_kmd_inf_tax_return_type) was removed [here](https://github.com/odoo/enterprise/pull/98471/changes#diff-73727ce6b3fc23788e37d59fb9160d29158b84e7f082db85b6732a731e814a42L11), but its reference code still existed in the condition. opw- 6056471 Forward-Port-Of: odoo/enterprise#113401
This update resolves an issue where material resources with assigned roles were still visible when filtering by employees in the Planning app. The fix improved the filter logic to accurately exclude these resources, ensuring that only employee-type resources and those without assigned roles are displayed. This improves the accuracy of the Planning view.
Original PR description
Steps to Reproduce: 1. Open the Planning app. 2. Go to Configuration -> Materials. 3. Set a role on either the demo material resource laptop or toolkit. 4. Go back to the Planning view. 5. Apply the view filter employee (filter by Employees). Issue: The material resource with a role should not be visible, but it is still present. Current behaviour: When filtering the Planning view by Employees, material resources with an assigned role remain visible. Expected behaviour: Material resources with an assigned role should be excluded from the Planning view when filtered by Employees — only employee-type resources and resources on which role is not set should appear. Fix: Improved the filter domain so unnecessary data are excluded. Task-4526989 Forward-Port-Of: odoo/enterprise#113477 Forward-Port-Of: odoo/enterprise#92816
This update fixes an issue where rental order confirmations didn't properly update the status of related shifts in the planning system. Now, shifts are automatically marked as 'published' when a rental order is created, ensuring accurate status tracking and consistency with other actions. This improves the reliability of rental planning workflows.
Original PR description
**Issue 1** **Steps to Reproduce:** Create a shift in Planning. Click New Order. Save and confirm the rental order. Check the shift in Planning it is still in draft. **Issue:** The shift stays in draft even after the rental order is confirmed. **Cause** When creating a rental order from a shift, the shift is not marked as planned. It only gets linked to the order after saving, so it never updates its status. **Fix:** Mark the shift as published when confirming a new rental order. This makes the shift show the correct status right away and keeps it consistent with the “Add to Last Order” button. task-5075839 Forward-Port-Of: odoo/enterprise#113286 Forward-Port-Of: odoo/enterprise#99642
This update resolves an issue where the payment report screen incorrectly attempted to create a new Company Autopay Account without a properly configured partner. The fix disables this automatic creation to ensure accurate bank account setup. Adding a new field to always use the company partner was considered but deemed unnecessary for this specific workflow.
Original PR description
Disable creating a new Company Autopay Account from the payment report screen, as it doesn't work without a default partner in the context. Setting the partner to the company one would be another solution, but it requires adding a new related field which may not be worth it for this flow only. task-6098463 Forward-Port-Of: odoo/enterprise#113252
This update fixes an error in the Pakistan localization payroll calculation. Previously, tax was being calculated incorrectly for employees with annual salaries exceeding PKR 2,200,000. The fix ensures accurate tax calculations based on official Pakistani tax regulations, preventing overpayment of taxes.
Original PR description
Currently, payslip computation for Pakistan localization calculates incorrect tax when the yearly cost exceeds 2,200,000. ### **Steps to Reproduce:** 1) Install…
Currently, payslip computation for Pakistan localization calculates incorrect tax when the yearly cost exceeds 2,200,000. ### **Steps to Reproduce:** 1) Install `l10n_pk_hr_payroll_account`,`hr_contract_salary` with demo data. 2) Switch to PK company. 3) Create an employee and a running contract with yearly cost 2,200,001 4) Create a payslip and compute it from the Salary Computation tab. ### **Observed Behavior:** 'Tax Bracket Yearly' is computed as `122000.24` ### **Expected Behavior:** 'Tax Bracket Yearly' should be `116000.24` ### **Root Cause:** since [commit](https://github.com/odoo/enterprise/pull/98345/commits/62f5e216518d83317618d7dbc0be4db92d1881a3), the tax computation relies on [_l10n_pk_get_tax](https://github.com/odoo/enterprise/blob/a9656336583a4d5c5b12d4d6120ec62ba1cf9151/l10n_pk_hr_payroll/models/hr_payslip.py#L9-L20) , In this method, the `result` is incorrectly accumulated with `fix` when iterating through brackets, leading to an inflated tax value. [official pakistan document](https://download1.fbr.gov.pk/Docs/20258181281745641WHT-RateCard.pdf) ### **Fix:** Use `result = fix` instead of `result += fix` so that the cumulative tax is correctly reset at each bracket. **opw-5979265** Forward-Port-Of: odoo/enterprise#112875 Forward-Port-Of: odoo/enterprise#110939
This update corrects a technical issue where payroll data was being unintentionally transmitted in non-production (test) environments. This change ensures that sensitive payroll information remains isolated to testing, improving data security and preventing potential errors in live operations. The fix focuses on a specific module within the Odoo Enterprise platform.
Original PR description
Forward-Port-Of: odoo/enterprise#113504
This update fixes an issue where the filter for unfinished workorders would disappear after marking an operation as complete. The fix prevents the filter from being unintentionally erased during the process of marking operations as done, ensuring users can accurately track remaining tasks. This improves the usability of the shopfloor operations module.
Original PR description
While working on a workorder from the shopfloor, if there is several operation when closing the first one, the filter will disapear Steps to reproduce: ------------------- * Create a Product * Create a BoM for that product with two operation * Create a MO for this product * Click on the smart button "Shop Floor" * Open the Operations * Mark as Done one of the operation -> the filter disappears Observation: ------------- When cliking on "mark as done" or "closing production" both goes through validate(), At the end of this function the filter is erased: https://github.com/odoo/enterprise/blob/85bd9d80a1a784f1baff1493b2eaec4a17ea9c9b/mrp_workorder/static/src/mrp_display/mrp_display_record.js#L384 opw-5959166 Forward-Port-Of: odoo/enterprise#111333
Code cleanup and technical improvements
This update replaces a risky, older method of evaluating expressions with a safer, dedicated system. It simplifies calculations within Odoo reports, specifically in the account_report module, and reduces potential security vulnerabilities. This change improves the stability and maintainability of our reporting features.
Original PR description
Replace the legacy eval-based expr_eval with an AST evaluator for simple expressions, that now also supports variables and context
The new `expr_eval` has a small subset of python syntax: arithmetic, comparisons, boolean operators, literals, lists, tuples, dicts, sets, variables passed as context, subscripting, and min/max.
This works for simple formulas and simple domain expressions and avoids ever going through `eval` for these
(https://github.com/odoo/enterprise/pull/107659 already deprecates `const_eval` btw)
community: https://github.com/odoo/odoo/pull/255216