Daily updates from Odoo
Monday, June 1, 2026
64 changes · master
New functionality added to Odoo
This update introduces a new module, `obox_pos`, to seamlessly integrate Obox connected scales into the Point of Sale (PoS) system. This allows for accurate weight-based product tracking and order processing within Obox, improving operational efficiency and data accuracy.
Original PR description
We add a new `obox_pos` module to integrate Obox connected scales to PoS.
This update integrates Obox receipt printers into the Point of Sale (POS) system. Leveraging the Obox's ePOS format compatibility, the change simplifies printer configuration and utilizes existing EpsonPrinter code, improving POS functionality. This allows for seamless printing of receipts from Obox printers.
Original PR description
See: odoo/obox#152 This commit adds support for Obox receipt printers in the POS. Since the Obox now supports the ePOS format, most of the ePOS code can be reused. Configuring an Obox printer simply prefills the IP with the correct path and the POS just uses the same EpsonPrinter class as normal. task-6241706
This update introduces a new Kanban view within the Obox app, allowing users to easily manage and track all connected devices grouped by their respective Obox. When an Obox is paired, the system automatically initiates a device discovery process, streamlining device setup and management. This improves the overall user experience for Obox device integration.
Original PR description
This commit adds a 'Devices' menu item to the Obox app, which links to a Kanban view of all the devices grouped by Obox. In addition, a device discovery is automatically started once an Obox has been paired. <img width="892" height="340" alt="image" src="https://github.com/user-attachments/assets/42d4a421-0185-4cdf-982f-55eb241e60de" /> task-6241705
This update introduces support for calculating the 'Cotisation Wijninckx,' a Belgian payroll tax related to group insurance. Eligibility is determined by a government letter and the tax rate is 12.5% of the declared amount. This ensures accurate tax reporting for employees with qualifying group insurance.
Original PR description
Purpose: When you have a group insurance and the amount of the group insurance is exceeding a specific amount, you'll be eligible to the "Cotisation Wijninckx" To know if you're eligible or not, it's based on a letter sent by the government to you, or to your payroll company. If you're eligible, they'll communicate you the amount to tax for that cotisation, the amount to pay is 12.5% of the declared amount. Current Behavior: - add a new salary rule input for Cotisation Wijninckx - add a rule parameter for the rate of the cotisation with value 12.5% starting on 1/1/2026 - declare the Cotisation Wijninckx under code 868 in the DMFA if it's present task-id: 6201188
This update allows companies to configure and manage employee contributions towards hospitalization insurance premiums. It automatically deducts these contributions from employee salaries via payroll, providing greater flexibility and control over benefits. The changes standardize settings and improve data management for company-specific insurance configurations.
Original PR description
**Purpose** In some companies, employees pay part of the hospitalization insurance premium themselves. This contribution must: - be configurable at the company level - be automatically applied to employees enrolled in hospitalization insurance, - and be deducted from the employee’s net salary through payroll computation. **Specifications** This PR implements the employee contribution workflow as follows: - Add a company level setting defining the default employee contribution amount. - Initialize the employee contribution field from company settings when hospitalization insurance is enabled on the employee. - Allow editing the contribution per employee. - Add a salary rule that deducts the employee contribution from the payslip. - Ensure the rule is computed before `NET` salary. task-6111061
This update adds a new report, MUHSGK V2 (1003B), required for Turkish clients to submit monthly payroll data to the SGK and GİB authorities. This ensures compliance with Turkish regulations regarding withheld taxes and social insurance contributions, streamlining reporting processes.
Original PR description
On a monthly basis, all clients in Turkey are obligated to submit reports to the social insurance entity (SGK) and the revenue authority (GİB). The reports include details about the employee, employer, and amounts deducted from the employee's salary to be submitted to the authorities. The main report for this task is the MUHSGK V2 (1003B), which is a combined report for both withheld taxes from employees' salaries and withheld amounts for social insurance. task-id: 4966571
Enhancements to existing features
This update ensures that the helpdesk team automatically receives notifications when a new support ticket is created from a CRM lead. This improves team awareness and responsiveness to customer inquiries, streamlining the support process. It addresses a previous gap in notification workflows.
Original PR description
- Ensure that users added as followers of the helpdesk team receive notifications when a ticket is created from a CRM lead. task-4500059
This update enhances the appraisal survey experience by automatically displaying the employee's name (Appraisal Display Name) after the survey title when the survey is linked to an appraisal bridge. This makes the survey more personalized and provides better context for the employee providing feedback, leading to more relevant responses.
Original PR description
Display the Appraisal Display Name after the survey title when the survey is linked to an appraisal bridge, making the survey less generic and more contextual. Task-5972109
This update enhances the appearance of exported audit reports by applying the company's branding, including fonts, colors, and layout. Users now have more control over PDF dimensions and orientation, ensuring reports consistently reflect the company's visual standards.
Original PR description
When exporting an audit report to PDF, the system will now apply the margins, spacing, fonts, color theme, defined in the company's document layout. Users can also configure the PDF's dimensions (i.e: A4, etc) and orientation. This update makes the exported PDF fully customizable while ensuring it aligns with the company's branding and formatting standards. Technical note: This commit refactors the audit report XML templates to use the standard report assets. This reduces the number of generated asset bundles and ensures consistent styling. COM: odoo/odoo#241292 Task-5079740
This update adds specialized cost calculations within Odoo's payroll system for Belgium, specifically addressing the requirements for termination fees related to social security contributions. It incorporates detailed rules based on Belgian regulations, ensuring accurate accounting and reporting for employee departures. This improves compliance and financial reporting accuracy for businesses operating in Belgium.
Original PR description
task-5102928
This update simplifies the bank reconciliation view by only displaying the undo button when a reconciliation line is expanded. Previously, the button was present on every reconciled line, which was considered visually cluttered. This change improves the user experience and makes the reconciliation process more intuitive.
Original PR description
Before this commit, the undo button was present on each line that was reconciled, which was a bit too much in the view. we decided to have it only when the line is expand no task id
This update enhances Obox pairing by allowing users to connect directly to the Obox via IP address and identifier, eliminating reliance on odoo.com servers. This provides greater flexibility and control for users, particularly in environments with limited internet connectivity. This change improves Obox usability and expands its deployment options.
Original PR description
We add a way to allow pairing without relying on odoo.com servers by directly providing the IP addess and identifier of the Obox. see odoo/obox#172
This update enhances the performance and stability of Odoo's HTML editor by streamlining how it handles changes to the content. The changes, introduced by a community contribution, optimize the editor's responsiveness and reduce potential errors, particularly within various modules like AI, Documents, and Knowledge. This results in a smoother and more reliable editing experience for users.
Original PR description
Community PR: https://github.com/odoo/odoo/pull/246336
This update enhances logging around IoT device connections and message transmissions. Specifically, it adds more detailed logs for IP and version changes, and optimizes a search process to prevent unnecessary activity. These improvements will aid support teams in troubleshooting IoT issues.
Original PR description
This PR adds some minor logs around ip/version change and websocket messages sent to the iot box. It also inverts a condition to avoid doing a useless search when sending websocket messages See https://github.com/odoo/odoo/pull/266410 Forward-Port-Of: odoo/enterprise#118442 Forward-Port-Of: odoo/enterprise#118377
This update enhances the Thailand withholding tax reports to provide more detailed and accurate information, aligning with PND 3 and PND 53 form requirements. Previously, the reports only showed total amounts; now, they group data by partner and tax type. Additionally, the CSV export format has been corrected to prevent data errors, ensuring reliable reporting.
Original PR description
Thailand withholding tax report only displayed the total withholding tax amount instead of showing extensive information required on PND 3 and PND 53 forms. This commit improves the tax reports by…
Thailand withholding tax report only displayed the total withholding tax amount instead of showing extensive information required on PND 3 and PND 53 forms. This commit improves the tax reports by grouping withholding tax values into partners and the withholding tax type. This change improves the report to display more comprehensive data for the users. Furthermore, previously the PND 3 & 53 report CSV export had hardcoded value on certain columns because the corresponding fields did not exist in Odoo. Now that we have fields required to properly build the CSV export, this commit updates the export logic to generate accurate values for the fields: - Partner title/company types are no longer hardcoded to "บริษัท". The value refers to the new fields in res.partner. - The withholding tax condition is no longer hardcoded to "1". The value is determined by the selection field value set on the related payment. - The tax type no longer depends on the withholding tax's amount value. The value is based on the selection field of the tax. Additionally, the CSV export delimeter is updated from "," to "|" to prevent data corruption caused by commas often found in the address values. [Task-5423108](https://www.odoo.com/odoo/project.task/5423108)
This update adjusts the sale module to allow orders to be shipped even if the stock isn't immediately available. The method name was changed from 'deliver' to 'ship' to better reflect this new functionality. This change streamlines the order fulfillment process.
Original PR description
**Purpose:** Reflect the changes made in sale module **Specification:** Renamed method _compute_show_deliver_button to _compute_show_ship_button Task-5343527 See also: - https://github.com/odoo/odoo/pull/240746 - https://github.com/odoo/upgrade/pull/10170
This update ensures that when an employee changes their assigned car within Odoo, the vehicle's driver is automatically updated to reflect that employee. Previously, this process was inaccurate, and this change corrects that, streamlining the driver assignment process. This improves data accuracy related to employee vehicle assignments.
Original PR description
In this PR, we updated driver assignment when car is manually changed on employee. When a car is selected or changed on an employee, update the vehicle's driver to the employee's partner. Clear previous car's driver link if reassigned. Related task: 4922053.
This update ensures our payroll rules for Saudi Arabia (KSA) comply with Saudi Labour Law Article 77 regarding termination compensation. It adjusts salary calculations to guarantee employees receive the legally mandated minimum wage for a specified period following termination, aligning with legal requirements. This update is crucial for accurate payroll processing and avoiding potential legal issues.
Original PR description
According to Article 77 of Saudi Labour Law: Unless the contract includes specific compensation for the termination by either party for an invalid reason, the party affected by termination shall be entitled to compensation as follows: 1. For indefinite term contracts: an amount equivalent to fifteen-day wage for each year of the worker’s employment. 2. For fixed-term contracts: the wage for the remainder of the contract term. 3. The compensation referred to in paragraphs (1) and (2) of this Article shall not be less than the worker’s wage for two months. This commit makes sure our KSA EOS salary rule complies with Article 77. task-6008261
This update enhances the tracking of payslips generated directly from payruns within the Odoo Enterprise system. Previously, it was difficult to monitor the creation of payslips originating from payruns. Now, the system provides better visibility into these payslips, improving payroll management and reporting.
Original PR description
Task#6253290
This update adds optional, hidden fields to the payslip form, specifically tracking the version of worked days lines. This enhancement provides more detailed information for payroll reporting and auditing, ensuring greater accuracy and traceability of payroll data. It's a minor improvement focused on data clarity.
Original PR description
Add optional hidden fields related to the version of the worked days lines on the payslip form. task-6133414
This update enhances the backend view of employee payslips by hiding lines that aren't printed. A new toggle allows users to view all payslip lines, ensuring a more accurate representation of the employee's actual earnings. This improves clarity and reduces confusion.
Original PR description
By default, payslip lines that do not appear on the printed payslip (appears_on_payslip = 'never', or 'non_zero' with zero total) are now hidden in the Salary Computation tab, giving a backend view…
By default, payslip lines that do not appear on the printed payslip
(appears_on_payslip = 'never', or 'non_zero' with zero total) are now
hidden in the Salary Computation tab, giving a backend view consistent
with what the employee sees on their payslip.
Added a Show All Toggle that controls the visibility of payslip lines that are invisible on the actual payslip.
This Toggle state is shared across all payslips, but not stored.
Implementation:
- Added a "Show All" toggle widget registered as a view_widget.
- Toggle state is persisted in localStorage under the key
"hr_payroll.display_all_payslip_lines"
- Created a module-level proxy object "payslipShowAllState" as the
single source of truth shared across all payslip instances.
- Custom ListRenderer (PayslipListRowVisibilityRenderer) filters rows
based on appears_on_payslip and payslipShowAllState.showAll.
- Custom X2ManyField widget (payslip_lines_2many) swaps the default
ListRenderer with the custom one.
task - 6200256Resolved issues and error corrections
This update enhances the way Odoo handles errors when communicating with external payment systems (IAP). By improving exception handling, the system is now more resilient to potential issues, leading to more reliable transactions and reduced disruption for users. This change focuses on internal stability and doesn't directly impact the user experience.
Original PR description
See the commit in the community repository for more information about this change. task-none
This update corrects a minor issue in the product barcode lookup test data. Previously, the test included an unnecessary 'color' attribute due to a change in how product colors are defined. The fix replaces the 'Purple' color value with 'Invisible' to ensure the test consistently validates the color guard logic without relying on demo data.
Original PR description
The Issue: The barcode lookup flow in `_update_product_by_barcodelookup` searches for an attribute by name and links a matching value to the new product, but it never auto creates a missing color value because of the explicit `if not (attribute_value or attr_name == 'color'):`. Previous to 3181721 `product_barcodelookup` had a `color` attr which was removed in favor of the standard `Color` attr in `product` with demo values such as Purple, that's why now we get an extra attribute line. The Fix: Replace `"color": "Purple"` in the mock with `"color": "Invisible"`, a value not present in demo data. This ensures the test always exercises the color guard logic, but remains stable and independent of demo data. runbot-937747
This update re-enabled a previously skipped test related to the planning_field_service_sale_timesheet module. This change is necessary to ensure the continued stability and functionality of the system following the recent migration to the 'owl3' version. It's a routine maintenance step to maintain test coverage.
Original PR description
This commit unskips a test that has been skipped during the migration to owl3.
This update resolves a technical issue where the confirmation button in the AI tool was failing. The change updates the button's functionality to align with the new Owl 3 interface, ensuring the button now functions correctly and reliably. This improves the user experience for AI tool interactions.
Original PR description
Prior to this commit, the tool confirmation button would throw an error when clicked. This commit change the `on-click` call to match the new Owl 3 interface (using `this.onClick` instead of `onClick`)
This update fixes inconsistencies in how contract types are defined across Odoo modules. Specifically, the contract type ID was standardized and redundant entries were removed to ensure data accuracy and prevent future issues. This change is limited to version 17 and will be addressed in a separate update.
Original PR description
[IMP] hr_contract_salary: fix contract_type_id definition The definitions of the contract_type_id in hr_contract_salary_offer and l10n_be_hr_contract_salary/hr_contract_salary_offer should be same I converted the definition of contract_type_id in the base module to the Belgium one. Also, the contract_type_id was inserted to the view in Belgium one as well, I deleted that part to prevent double appearance. This task is only for v.17, after this version I will open a new PR to handle them. Do not forward the task after v.17 (only for v.17) task - 6101717 Forward-Port-Of: odoo/enterprise#118069 Forward-Port-Of: odoo/enterprise#113244
This update fixes a potential issue where users could select inactive Intrastat codes on products. Now, a warning message will appear if a user attempts to select an invalid or expired code, preventing incorrect data entry and ensuring accurate reporting for Intrastat purposes. This improves data integrity and compliance.
Original PR description
Problem: When choosing an intrastat code on a product, all the codes are shown, even the ones that are expired or not yet active. Users can select an intrastat code that is not active. Steps to reproduce: 1. Check the intrastat code list and find a code with a start date in the future or an expiry date in the past 2. Note the code description 3. Open a product form view and try to set/change the intrastat code 4. Search for the code description noted in step 2 5. Note that the code is proposed while it should not be proposed Solution: When an intrastat code is selected, if the code is not active, a warning message is shown to the user. opw-6217915 Forward-Port-Of: odoo/enterprise#118569 Forward-Port-Of: odoo/enterprise#117884
This update fixes an issue where selecting the start date first would incorrectly set both the start and end dates for deferred accounting periods. The change ensures the end date is correctly set first, resolving a display error where periods appeared reversed (e.g., 2026-2025).
Original PR description
The issue is when selecting deferred dates, if the start date is selected first, the system will set both the start and end dates. However, when selecting the end date first, the period appears backwards example ( 2026 - 2025 ). task: 6140024 Forward-Port-Of: odoo/enterprise#114866
This update addresses a problem where bank statement KPIs weren't being updated correctly when no statements were processed. Now, if no bank statements are reported, the KPIs will be reset to an empty state, ensuring accurate reporting and data integrity within the account module.
Original PR description
The aim of this commit is to update the integer kpis when those aren't received. ### Context: The account module report the bank statement in draft to process. When all bank statement have been processed, there isn't any and thus, the module send back an empty list. ### Before this commit: The bank statement kpi wasn't updated as we didn't received anything about that specific kpi. ### After this commit: Any kpi that wouldn't be reported would get it's column emptied. opw-6170973 Forward-Port-Of: odoo/enterprise#115695
This update resolves an error that prevented users from adding multiple loan lines to a record after the initial creation. The fix ensures that date comparisons within the system are handled correctly, allowing users to accurately manage loan line details. This improves the usability of the loan management feature.
Original PR description
**Steps to reproduce:** - Install the `l10n_fr_account_loans` module and switch to a `FR Company`. - Navigate to Accounting > Accounting > Assets & Liabilities > Loans. - Create a new loan record. -…
**Steps to reproduce:** - Install the `l10n_fr_account_loans` module and switch to a `FR Company`. - Navigate to Accounting > Accounting > Assets & Liabilities > Loans. - Create a new loan record. - Click `Add a line`, set a `Date`, and `save` the record. - Click `Add a line` again. **Error:** `TypeError: '>' not supported between instances of 'datetime.date' and 'bool'` **Root Cause:** At [1], when adding a line after the record has already been saved with at least one existing line, the existing line has a valid `datetime.date` value for `l.date`, while the newly created unsaved line still has `line.date` set to `False`. This results in a comparison between a `datetime.date` object and a boolean value, causing an error. **Fix:** This commit prevents the errors when adding multiple lines after saving the record by applying a fix similar to [2]. [1]: https://github.com/odoo/enterprise/blob/54eef93f295eaebd98d24730d108b1203ca7b35a/l10n_fr_account_loans/models/account_loan_line.py#L21 [2]: https://github.com/odoo/enterprise/blob/54eef93f295eaebd98d24730d108b1203ca7b35a/account_loans/models/account_loan_line.py#L61-L63 opw-6244973 Forward-Port-Of: odoo/enterprise#118354
This update corrects a bug where importing a product with a changed subscription type would bypass a necessary warning. Now, when a product has been sold, attempting to manually change its subscription type triggers a warning, ensuring data integrity and preventing unintended subscription modifications.
Original PR description
__ ## Short functional explanation of the error When we have a subscription product that has already been sold. If we try to import a product with the same ID but where we change the subscription…
__ ## Short functional explanation of the error When we have a subscription product that has already been sold. If we try to import a product with the same ID but where we change the subscription type of the product, the import is executed without issue. However, this leads to undesired behavior: when we go to the product page and try to manually change the subscription type (set it back to subscription), the change is not applied as a warning is raised. ## Reproduction Steps Make sure you have debug mode enabled. 1. Create a product, and check the Subscription box. 2. Click on Orders and create a Quotation with this product, then confirm. 3. Go to Products > Products. Select the list view and search for the product you just created. Select it, and click Actions > Export. 4. Check the import compatible field. Select the fields to export: name, id and recurring_invoice. Upon exporting, a file is downloaded. 5. Access that file and change the recurring_invoice to FAUX or FALSE if your computer is in English. Save the changes. 6. Unselect the product and click on the cog, top right > Import. Click on Upload Data File and select the file that you have downloaded upon exporting, then import. ### Expected behavior A user warning is raised: we shouldn't be able to change the subscription type of the product when it has already been sold. ### Unexpected behavior The import is processed normally. Then, when we access the product page, and try to check the Subscriptions box again, a warning is raised. ## Origin of the issue Nothing prevents the import from occurring in that case. __ opw-6143789 Forward-Port-Of: odoo/enterprise#117318 Forward-Port-Of: odoo/enterprise#115046
This update optimizes a key query used in financial reporting by correcting how the database searches for reconciliation models. By fixing a wildcard issue, the query now utilizes the database's index more effectively, resulting in significantly faster performance. This change improves the speed of financial reports and reduces processing times.
Original PR description
The CTE `model_fees` is supposed to get the reconciliation models that match conditions that involves a join with the ir.model.data table. One of these conditions is filtering based on the `name`…
The CTE `model_fees` is supposed to get the reconciliation models that match conditions that involves a join with the ir.model.data table. One of these conditions is filtering based on the `name` field with an `LIKE` operator. On databases that has a GIST index on the field `name`, the planner will prefer to filter the records based using the GIST index and add the extra filters as a filtering criteria after the index condition if the index-condition wasn't possible to be switched to a range-query. The condition is supposed to be a prefix-matching, which can be evaluated directly by a B-TREE if the field had an index and the planner can convert the condition to a range-query. Apparently the `_` in `account_reco_models_fees_%%` was evaluated as a wild-card, making the condition a substring-matching rather than direct prefix-matching. In this PR, I have modified the condition to escape the '_' wildcards. The benchmark done below was on a database that has around **10^7** `ir.model.data` records and 1K `account.reconciliation.model` records. I have split the benchmark into two cases, a case where the buffer-pool of postgres warmed-up and a case where it is not. After Worst case -> https://explain.dalibo.com/plan/975geg1f1h109d5c Before Worst case -> https://explain.dalibo.com/plan/0ce9bf3g0ad8f98b After Best Case -> https://explain.dalibo.com/plan/1a77459dadb0gfc4 Definition of ir_model_data_name_idx2 -> CREATE INDEX ir_model_data_name_idx2 ON public.ir_model_data USING gist (name gist_trgm_ops) Definition of ir_model_data_module_name_uniq_index -> CREATE UNIQUE INDEX ir_model_data_module_name_uniq_index ON public.ir_model_data USING btree (module, name) | PostgreSQL Buffer Pool Status | Before | After | | :--- | :--- | :--- | | Not warmed up (Cold) | 11s | 130ms | | Warmed up (Hot) | 0.022ms | 0.097ms | Forward-Port-Of: odoo/enterprise#117746
This update optimizes the styling of account reports, specifically targeting performance issues related to large tables. By using CSS variables and simplifying selectors, the changes reduce unnecessary DOM calculations, resulting in smoother and faster report rendering, especially for complex reports.
Original PR description
Forward-Port-Of: odoo/enterprise#118741 Forward-Port-Of: odoo/enterprise#118490
This update fixes an issue where the 'next' and 'previous' arrows in the planning calendar view didn't retain the previously selected task's context. Now, when navigating the calendar, the new slot will automatically default to the same task, ensuring a consistent and intuitive scheduling experience. This improves usability and reduces the chance of users accidentally starting new tasks in the wrong context.
Original PR description
Issue: ---------------------------------------- The default values aren't kept when using the previous/next arrows in planning calendar view. Steps to reproduce:…
Issue: ---------------------------------------- The default values aren't kept when using the previous/next arrows in planning calendar view. Steps to reproduce: ---------------------------------------- - Go on a Project task - Click the "To Schedule" button - Switch to calendar view - If we create now, the new slot will have the task as default value - Click the arrow to switch to next week - If we create there will be no default values Cause: ---------------------------------------- Since 7b844902e5c3a7aeedda6cc2be61366caad2d144 the context is lost when using the arrows. When switching to calendar view `load()` is called with the context in the params: https://github.com/odoo/odoo/blob/786c373d5ac8afdfb79eb7a7d69c5eb83b919625/addons/web/static/src/model/model.js#L163-L164 But when using the arrows, it is called with only a date: https://github.com/odoo/odoo/blob/786c373d5ac8afdfb79eb7a7d69c5eb83b919625/addons/web/static/src/views/calendar/calendar_controller.js#L426 So `...params.context,` is empty, and the context is only `hide_planned_dates: true,`. Solution: ---------------------------------------- If no context is specified in params, we use the one in `this.meta` to allow changing the context by giving it in the params but keeping the previous context when it's not given. opw-6211055 Forward-Port-Of: odoo/enterprise#118527
This update streamlines the timesheet setup process for users. Previously, users had to manually start the activity watch server each login. This change removes that step, thanks to an updated installer, making timesheet setup much simpler and more convenient.
Original PR description
Before this commit, the wizard to onboard the user to correctly install activity watch for timesheet assistant, mentioned the user has to start the server each time he logs in on his computer. This step is not longer needed thanks to an update on the odoo activity watch installer. This commit removes the line saying the user has to start the server each time he starts his working day. task-6081636 Forward-Port-Of: odoo/enterprise#118664 Forward-Port-Of: odoo/enterprise#115373
This update resolves an issue where product prices didn't automatically update when the cost price was modified. Previously, users had to manually switch price lists to trigger the price update. Now, the system correctly updates the 'On Sale Price' whenever the cost price changes, ensuring accurate pricing calculations.
Original PR description
When we create a product variant and have a pricelist which is based on the cost price, and change the cost price, the on_sale_price doesn't update. You have the change the price list to other and…
When we create a product variant and have a pricelist which is based on the cost price, and change the cost price, the on_sale_price doesn't update. You have the change the price list to other and back to the one you want for it to trigger change because the _onchange_compute_pricing only gets triggered if there's change on pricelist (pricer_sale_pricelist_id), and sales price (lst_price). Steps to Reproduce: 1.Create a pricelist and add a line with "formula" price type, and based on "cost", 2.Create a product variant, and add the pricelist just created. 3.Change the "Cost". The "On Sale Price" doesn't update. 4.You have to change the price list to some other and back to the one you want for the "On Sale Price" to update. To fix the issue, we add the field Cost (standard_price) on api.onchange, so when we change the cost it'll update the "On Sale Price" right away. opw-5947995 Forward-Port-Of: odoo/enterprise#118584 Forward-Port-Of: odoo/enterprise#111892
This update corrects a technical error in the US reporting module that prevented the correct formatting of negative account balances. The issue stemmed from a duplicate file structure, and this fix consolidates the necessary configurations within a single, dedicated file for US reporting. This ensures accurate reporting for US-based financial data.
Original PR description
In 19.1, when `account_reports_negative_format` was introduced, the PR created a new `template_us` file for `l10n_us_reports` to set the new field, not realizing that `account_chart_template` already existed. Since both files were to the same template and had the exact same method name, one shadowed the other which means all this time the `negative_format` was not properly set for US CoA. Since most other countries keep their CoA in a `template_TEMPLATE_NAME.py` file, move the deferred accounts to `template_us` and remove the `account_chart_template` file. task-none Forward-Port-Of: odoo/enterprise#118712
This update resolves an issue where changing a task's deadline didn't automatically update the deadlines of its dependent tasks, even with the 'Auto-Reschedule (Keep Buffer)' option enabled. The fix ensures that dependent tasks' start dates adjust dynamically when a main task's deadline is modified, improving project scheduling accuracy. This impacts project managers and team members relying on the Gantt chart for task synchronization.
Original PR description
__ ## Short functional explanation of the error When rescheduling the deadline only of a task that has dependencies, other dependencies won't be moved in time, even if we select `Auto-Reschedule…
__ ## Short functional explanation of the error When rescheduling the deadline only of a task that has dependencies, other dependencies won't be moved in time, even if we select `Auto-Reschedule (Keep Buffer)`. ## Reproduction Steps 1. Go to Project. On a given project, click on the 3 dots on the top right of the project card. Then, click settings and under Task Management, check Task Dependencies. 2. Create 2 tasks for this project. On task 1, click on the Deadline field, then click on the top right of the calendar card to set a planned date. 3. On task 2, click on the Blocked By tab. Then, add a line with task 1. Select a planned date like you did with task 1. 4. Go back to the project and on the top right, click on the Gantt view. Make sure that above the calendar, the Auto-Reschedule (Keep Buffer) option is selected. Then, move forward (or backward) the deadline of task 1 by only clicking on the right edge of the pill and dragging/dropping it to the left/right. ### Expected behavior As task 2 depends on task 1, and we need to keep the buffer. The start date of task 2 should be moved left when we drop the deadline of task 1 further left, or right when we move the deadline of task 1 further right. ### Unexpected behavior Nothing happens. ## Origin of the issue ### JS side When we click on the whole task 1 and drag it to the right (thus changing the start date *and* the deadline), the dependent tasks are also moved right. When performing this action, this calls the method `dragPillDrop`. In it, we can see this piece of code: https://github.com/odoo/enterprise/blob/e113c851e6fa9a7a3c1dca840926ed7e58b3f16f/web_gantt/static/src/gantt_renderer.js#L1484-L1489 where `this.isAutoPlan` indicates whether we checked the Auto-Reschedule (Keep Buffer) option. In that case, we call `rescheduleAccordingToDependency`, which performs this ORM call: https://github.com/odoo/enterprise/blob/e113c851e6fa9a7a3c1dca840926ed7e58b3f16f/web_gantt/static/src/gantt_model.js#L500 However, when only moving the deadline of the task, we call the method `resizePillDrop`. In this method, we don't check if `this.isAutoPlan` is True, as we perform in all case the call to: https://github.com/odoo/enterprise/blob/e113c851e6fa9a7a3c1dca840926ed7e58b3f16f/web_gantt/static/src/gantt_renderer.js#L2822 Which will trigger the orm call: https://github.com/odoo/enterprise/blob/e113c851e6fa9a7a3c1dca840926ed7e58b3f16f/web_gantt/static/src/gantt_model.js#L479 which will call the `web_gantt_write` method in Python, only writing on the task we changed the deadline of. ### PY side Inside `web_gantt_reschedule`, to reschedule dependent tasks, we have to reach the method call: https://github.com/odoo/enterprise/blob/e113c851e6fa9a7a3c1dca840926ed7e58b3f16f/web_gantt/models/models.py#L247 However, there's a condition preventing us from reaching that code when only changing the deadline: https://github.com/odoo/enterprise/blob/e113c851e6fa9a7a3c1dca840926ed7e58b3f16f/web_gantt/models/models.py#L230-L235 Yet, we need to trigger the code and reschedule dependencies even if there's no planned date as soon as we change the deadline. Once we're in `_web_gantt_action_reschedule_candidates`, we check if we're in the case of preponing or postponing the task (i.e the direction of the rescheduling): https://github.com/odoo/enterprise/blob/e113c851e6fa9a7a3c1dca840926ed7e58b3f16f/web_gantt/models/models.py#L410 This call is performed with `start_date_field_name`, which is present in the `vals` in the case of moving a whole task. Yet, in our case, we only move the deadline, so `start_date_field_name` isn't in our `vals`. So, to get the direction of our rescheduling, we have to use `stop_date_field_name` instead. Then, we perform this call: https://github.com/odoo/enterprise/blob/e113c851e6fa9a7a3c1dca840926ed7e58b3f16f/web_gantt/models/models.py#L412 However, in our case, the dependent tasks are still found under the `dependency_inverted_field_name` field. This leads us to the return of the function, where we call `_web_gantt_move_candidates`. In it, we retrieve the previous values of the pill we're modifying with: https://github.com/odoo/enterprise/blob/e113c851e6fa9a7a3c1dca840926ed7e58b3f16f/project_enterprise/models/project_task.py#L1366 using `vals`. Later we use `start_date_field_name` to update the dates of dependent tasks: https://github.com/odoo/enterprise/blob/e113c851e6fa9a7a3c1dca840926ed7e58b3f16f/project_enterprise/models/project_task.py#L1413-L1415 Still, in our case, we don't have `start_date_field_name` in vals. Thus, we have to define `old_vals_per_pill_id[self.id][start_date_field_name]`. Next, we define the start date and end date of the intervals in which we reschedule the dependent tasks (so, the left and right bounds of intervals): https://github.com/odoo/enterprise/blob/e113c851e6fa9a7a3c1dca840926ed7e58b3f16f/project_enterprise/models/project_task.py#L1392-L1401 In case of a `search_forward`, this is natural. Nevertheless, in the case of a backwards search, we can't consider the start date of the first task to be the right bound for our dependent tasks, as they occur after the first task! This would mean that our right bound is set before the dependent tasks even start. So, in our case of changing only a deadline, we have to set the right bound to the latest deadline of the dependent tasks. They won't be set to later, as we are moving the deadline backward. Finally, in the case of setting a deadline backwards, we have to keep the time gap between task 1 and the dependent tasks, based on the working hours. This feature wasn't implemented. __ opw-6080405 Forward-Port-Of: odoo/enterprise#117815 Forward-Port-Of: odoo/enterprise#113787
This update ensures that work entry data exported to Acerta adheres to their specific formatting requirements. The export now correctly pads the external reference number to 17 digits with 3 spaces and the work entry type code to 4 digits with 2 spaces, resolving potential data discrepancies with the Acerta system. This ensures accurate data transmission and processing.
Original PR description
We want to adhere to the correct format for the export of work entries to Acerta. There, the number of external reference is padded to 17, not 20, and is followed by 3 spaces, before the date. Also, the code of the work entry type is padded to 4 and followed by 2 spaces. Task: 6168106 Forward-Port-Of: odoo/enterprise#118568 Forward-Port-Of: odoo/enterprise#118124
This update fixes an issue where commission plans were incorrectly listed in the 'Other Plans' section for salespeople, even when their assignment periods didn't overlap. The system now accurately checks for overlapping salesperson assignments, ensuring that only relevant plans are displayed, improving the accuracy of commission calculations.
Original PR description
Version - 18.0 Steps to reproduce: 1. Create a commission plan A with effective period 2025–2026 2. Assign salesperson to plan A from 01/01/2025 to 31/12/2025 3. Create another commission plan B with effective period 2026 4. Assign the same salesperson to plan B from 01/01/2026 to 31/12/2026 5. Open plan B and check the 'Other Plans' section in the salespeople tab Issue: Plans are shown in 'Other Plans' even when salesperson assignment periods do not overlap. System incorrectly relies on plan effective dates instead of salesperson-specific assignment dates Fix: A plan is now considered overlapping only if the salesperson assignment periods intersect. Non-overlapping plans are properly excluded from 'Other Plans'. Taskid-6055253 Forward-Port-Of: odoo/enterprise#118769 Forward-Port-Of: odoo/enterprise#112694
This update resolves an issue that caused errors when sending shifts involving multiple resources. The fix ensures the system correctly handles shifts with multiple assigned employees, preventing a traceback and improving the reliability of shift scheduling. This change enhances the overall stability of the Planning module.
Original PR description
Steps to reproduce: - Install Planning - Create two resources - Enable "Employee Unavailabilities > Unassign themselves from shifts - Create a shift with multiple resources - Send the shift Issue: A traceback occurred when sending a shift linked to multiple resources. Cause: The unavailability URL was generated using `employees.token`, which expects a single employee record. Fix: Handle shifts with multiple resources correctly when generating the unavailability URL to avoid the traceback when sending shifts. issue commit-https://github.com/odoo/enterprise/pull/106700/commits Forward-Port-Of: odoo/enterprise#118292
This update fixes an issue where unreconciling a payment on a recurring invoice would automatically generate a new draft invoice for the following month. The change adds a context flag to prevent this behavior, ensuring invoices are created correctly after reconciliation. This improves invoice management and reduces potential errors.
Original PR description
Issue: Unreconciling a payment in a batch payment from a recurring invoice will cause an invoice for the next recurring period to be generated Steps to reproduce: 1. Create and confirm a monthly…
Issue: Unreconciling a payment in a batch payment from a recurring invoice will cause an invoice for the next recurring period to be generated Steps to reproduce: 1. Create and confirm a monthly recurring invoice 2. Create a payment for the invoice 3. Create a batch payment and add the payment created in step 2 then validate it 4. Create a bank statement line and reconcile it with the batch payment created in step 3 5. Unreconcile the payment from the invoice from the invoice form view 6. Notice that a draft invoice for the next month’s recurring invoice is created Cause: When unreconciling the payment from the invoice via the invoice form view, the method “delete_reconciled_line” is called. In the “account_accountant_batch_payment” override of that method, it will reset the invoice back to draft and repost it. However, when posting a recurring invoice, the default behavior is to create the invoice for the next recurrence period Solution: Adding a new context flag called “skip_recurring_copy” will prevent the next period’s recurring invoice from being generated when invoices are posted through “delete_reconciled_line” opw-6158881 Forward-Port-Of: odoo/enterprise#117011
This update corrects a technical issue that could cause the DMFA report PDF generation to fail when non-numerical characters were entered for work addresses. The change adds a validation check to ensure only numbers are used, improving the reliability of the report and preventing potential disruptions.
Original PR description
Added a validation error in the _get_code function in case the code contains non-numerical characters. This prevents non-numerical characters input from breaking the DMFA report PDF generation. Task: 6231125 Forward-Port-Of: odoo/enterprise#118367 Forward-Port-Of: odoo/enterprise#117889
This update resolves an error that occurred when the Salary Increase wizard was used with a past date for the salary increase. The fix prevents a crash by handling cases where no matching employee versions are found for the specified date, ensuring the wizard functions correctly.
Original PR description
Currently, an error will occur when user puts Date of Salary Increase in the past on the salary increase wizard. Steps to replicate: - Install `hr_payroll` and create a new employee. - From the cog…
Currently, an error will occur when user puts Date of Salary Increase in the past on the salary increase wizard.
Steps to replicate:
- Install `hr_payroll` and create a new employee.
- From the cog menu click `Salary Increase`.
- Put any date from the past in the `Date of Salary Increase` field.
Error:
```py
File '/home/odoo/src/enterprise/saas-19.3/hr_payroll/wizard/hr_payroll_salary_increase_wizard.py', line 43, in _get_affected_version_ids
increase_base_version = employee.version_ids.filtered_domain([('date_version', '<=', self.increase_date)])[-1]
File '/home/odoo/src/odoo/saas-19.3/odoo/orm/models.py', line 6135, in __getitem__
ids = (self._ids[key],)
IndexError: tuple index out of range
```
Cause:
- When the user changes the salary increase date, it triggers the [compute], which calls `_get_affected_version_ids()`. In this method, employee versions [1] are filtered to keep only those whose `date_version` is less than or equal to the selected increase date.
- For newly created employees, version_ids typically contain only an initial version with date_version set to today's date. Therefore, when the selected salary increase date is earlier than today, the filter returns an empty recordset, which later causes the crash when accessing the last record of that recordset.
Solution:
- Early returned empty recordsets when no matching employee versions are found for the selected increase date.
[compute]: https://github.com/odoo/enterprise/blob/2a86967c1754f9c703a87c5d9ceb1d5f5d0ec26f/hr_payroll/wizard/hr_payroll_salary_increase_wizard.py#L34-L39
[1]: https://github.com/odoo/enterprise/blob/2a86967c1754f9c703a87c5d9ceb1d5f5d0ec26f/hr_payroll/wizard/hr_payroll_salary_increase_wizard.py#L43
sentry-7498213478
Forward-Port-Of: odoo/enterprise#118309This update resolves a technical issue where the system incorrectly accessed bike color information when creating new bikes. The fix ensures that color data is only retrieved when a new bike is being added, improving data accuracy and preventing potential errors.
Original PR description
- Cause: for a new bike we try to access color attribute on fleet.vehicle.model (using fleet.vehicle for old bike) - Solution: access color attribute only if not a new bike Task: 6245895
This update ensures Odoo's Czech VAT reports accurately comply with the Czech tax authority's hybrid rounding rules. Previously, the system didn't correctly handle the required rounding of tax bases and VAT amounts. This change directly updates report expressions to ensure accurate VAT return calculations and avoid potential discrepancies.
Original PR description
The Czech tax authority enforces specific hybrid rounding rules for the VAT Return: - Tax bases and subtotals must use standard mathematical rounding. - VAT Due / Tax Amounts must be rounded UP to the nearest whole CZK. - Calculated totals must be the exact sum of the previously rounded lines. Currently, the report generation does not support this mixed rounding behavior out of the box. This commit resolves the issue by updating the report expressions directly in the XML to comply with the legal requirements thus removing the need to have the float_round method in the tax_report_handler. task: 6081523
This update resolves an issue preventing users from unreconciling SEPA CT batch payments with a 'pending' online status. Previously, the system incorrectly blocked this process, causing delays in bank statement reconciliation. The fix allows internal unreconciliation flows to bypass validation, ensuring accurate bank statement updates.
Original PR description
**Issue:** The account_online_payment module overrides `action_draft` to raise a UserError for sepa_ct payments belonging to a batch with a `payment_online_status` = 'pending' or 'accepted'. This…
**Issue:** The account_online_payment module overrides `action_draft` to raise a UserError for sepa_ct payments belonging to a batch with a `payment_online_status` = 'pending' or 'accepted'. This blocks the bank statement unreconciliation process. When `delete_reconciled_line` is called, it tries to set payments to draft and re-post them, despite it being an internal process not a manual user modification. **Steps to reproduce:** - Setup a 'sepa_ct' payment method on a bank journal. - Create a bill with a vendor with a trusted bank account. - Create a payment for that bill with a 'sepa_ct' payment method. - Add the payment to a batch. - Manually set the `payment_online_status` = 'pending'. - Create a bank transaction and reconcile it with the batch. - Try to unreconcile the lines on the transaction - Result: UserError 'You cannot modify a payment that has already been sent to the bank.' **Fix:** Pass a context flag to `action_draft` during the unreconciliation flow so that the validation is skipped when the call originates from the internal unreconcile flow. OPW-6080464 Forward-Port-Of: odoo/enterprise#118649 Forward-Port-Of: odoo/enterprise#117921
This update fixes a previous accounting error in Odoo's Hong Kong payroll system. The Employer Paid Rent rule was incorrectly only recording a debit, resulting in an imbalance. The change now uses the correct credit account (221004) for rent payments, ensuring accurate financial reporting for employees receiving housing allowances.
Original PR description
The Employer Paid Rent rule (HEPR) only had a debit account (5220 Employee Benefits/Staff Costs), leaving the journal entry unbalanced. Set account 221004 (Staff Housing Accrued) as the credit account for the HEPR rule in both CAP57 Monthly Employee Pay and CAP57 Casual Employee Pay structures. Community PR: https://github.com/odoo/odoo/pull/266863 task-6219303 Forward-Port-Of: odoo/enterprise#118629
This update resolves an issue where Odoo was incorrectly generating CFDI invoices in Mexico, leading to export rejections. The fix ensures that cash rounding lines, which are not valid CFDI concepts, are excluded from the invoice XML, aligning with SAT regulations. This prevents errors and ensures compliant invoice generation.
Original PR description
When using the 'add_invoice_line' cash rounding strategy, Odoo adds a journal line with display_type='rounding'. This line has no product and therefore no ClaveProdServ, causing PAC to reject the XML with error 301. Per SAT regulations, cash rounding is not a valid CFDI concept. The CFDI must report the pre-rounding amounts (e.g. 99.80); the rounding difference (e.g. 0.20) belongs only in the journal entry on the accounting side. opw-6024078 Forward-Port-Of: odoo/enterprise#117400 Forward-Port-Of: odoo/enterprise#112633
This update prevents users from creating new work entry types directly within the payrun calendar view. Previously, this could lead to misconfigured payroll settings, causing errors in payrun calculations. This change ensures accurate payroll processing by restricting the ability to manually define these types.
Original PR description
_ ## Short functional explanation As creating new time off type can not be done blindly or it will not be correctly configured (no payroll categories ...), this option is removed from the holidays gantt view __ task-6193813
This update resolves an issue where appointment scheduling displayed 'no slots available' when appointments started in a future month. The fix ensures that the calendar correctly reflects all available months, regardless of when the appointment's booking range begins. This improves the user experience for scheduling appointments with future start dates.
Original PR description
The "show only 1 month at a time" optimization computes the navigated month as datetime.now() + month_id, so the controller passes that (month, year) tuple to _get_appointment_slots:…
The "show only 1 month at a time" optimization computes the navigated month as datetime.now() + month_id, so the controller passes that (month, year) tuple to _get_appointment_slots: https://github.com/odoo/enterprise/blob/57ec37b74a60c7e879a8afa66df5ab22a92c5bcd/appointment/models/appointment_type.py#L833 For a punctual appointment whose Allow Bookings range starts in a future month, the first displayed month is start_datetime.month, so the (month, year) tuple doesn't match the month the visitor is looking at. The model fills an empty month and the recovery loop refills the first displayed month (where slots actually live): https://github.com/odoo/enterprise/blob/57ec37b74a60c7e879a8afa66df5ab22a92c5bcd/appointment/models/appointment_type.py#L973-L988 The calendar the visitor just navigated to comes back empty. Compute the navigation base from start_datetime when it lies in the future and keep datetime.now() otherwise. month_id is added on top of that base so it always matches the displayed month index. Introduced by https://github.com/odoo/enterprise/commit/664857dd2c4ae2bc0dde8f44cb94136659ed2fe2 Steps to reproduce: 1. Open the Appointments app 2. Open an appointment type and set Schedule to Weekly and Allow Bookings to On specific dates with a range starting in a future month (for example 1 September to 31 December) 3. Save and click the Preview button in the header 4. Pick a staff member to reach the calendar 5. Click the right arrow to navigate to the next month => the next month shows "Sorry, we have no more slots available for this month" opw-6206293 Forward-Port-Of: odoo/enterprise#117283
This update resolves an issue where the IP salary rule wasn't correctly displayed on Belgian employee payslips. The underlying calculation has been adjusted to ensure accurate reporting of IP contributions, improving payroll accuracy and compliance for our Belgian clients.
Original PR description
-**Issue**: The IP salary rule was not visible on payslip. -**Fix**: Computation has been adjusted to include the correct field. Forward-Port-Of: odoo/enterprise#112711 Forward-Port-Of: odoo/enterprise#110936
This update ensures that orders placed via mobile self-order with 'Pay After Meal' and online payment are now correctly displayed in the restaurant POS preparation display. Previously, the system only sent paid orders with online payment to the kitchen, causing a gap in order visibility. This fix ensures all orders are sent, improving kitchen workflow and order management.
Original PR description
pos* = pos_self_order_preparation_display, pos_online_payment_self_order_preparation_display Configuration: -------------- - Restaurant Mode - Self-Order Mode: "QR + Ordering" - Service At: Table - Pay after meal (Online Payment) Issue: ------ Orders created via mobile self-order using "Pay After Meal" + online payment were not appearing in the Preparation Display. Steps to Reproduce: ------------------- 1. Create an order from mobile self-order. 2. Open the restaurant POS, the order is visible there, but it does not appear on the preparation display. Cause: --------------- - The system only sent paid orders to the kitchen when online payment is set, skipping pay-after-meal case. Fix: ------------ - Updated logic to send all orders to the kitchen when “Pay After Meal” is selected, Task: 5929555 Forward-Port-Of: odoo/enterprise#107129
This update corrects an error in the Peru - Accounting Reports module that was causing SUNAT to reject electronic reports. Specifically, the report was incorrectly including too much data in field 8, leading to file rejection. The fix ensures the correct 3-digit customs dependency code is used, aligning with SUNAT regulations.
Original PR description
**Steps to reproduce:** * Install Peru - Accounting Reports (l10n_pe_reports). * Create a vendor bill with Document Type 50 (Declaración Aduanera de Mercancías - DAM) and a document number in the…
**Steps to reproduce:** * Install Peru - Accounting Reports (l10n_pe_reports). * Create a vendor bill with Document Type 50 (Declaración Aduanera de Mercancías - DAM) and a document number in the standard pediment format (e.g. C235202610-38047). * Go to Accounting > Reporting > Purchase Electronic Record (RCE 8.4). * Export the TXT file and open it. **Observed behavior:** * Field 8 contains the full first numeric block of the document name including the year and sequence digits (e.g. 235202610) instead of only the 3-digit customs dependency code. * SUNAT/SIRE rejects the file immediately because 235202610 does not exist in Table 4 (RS 040-2022), which only defines 3-digit codes. **Cause:** * `_get_serie_folio()` splits the document name by taking everything before the last digit group as the serie. For a name like C235202610-38047 this produces serie = "C235202610", and the existing `serie[1:]` logic strips only the leading letter, leaving "235202610" in field 8 instead of the 3-digit customs dependency code "235". * The same incorrect value was also written to field 28 (aduana_code). * ref : https://www.sunat.gob.pe/legislacion/superin/2022/anexo-040-2022.pdf **Fix:** * For document types 50 and 52, extract the first numeric group from the document name using `re.search(r'\d+', move_name)` and slice the first 3 characters to obtain the customs dependency code as defined in SUNAT Table 4 (always a 3-digit value). * Apply the same logic to field 28 (aduana_code) for consistency. opw-6157662 Forward-Port-Of: odoo/enterprise#115406
A recent issue prevented users from confirming shipments when the destination province was outside of the supported areas (USA, Canada, and Vietnam). This update corrects the UPS integration to ensure it only accepts province codes of 5 characters or less, as required by the UPS API. This resolves a problem that was blocking shipment confirmations for users in locations like the Philippines.
Original PR description
Issue ----- Users cannot confirm shipments depending on the destination's province. Steps to reproduce ----- - Set up UPS - Create a contact in Philipines - Province: Cebu - Create a delivery - Validate the delivery > Error message Cause ----- Codes can only be 5 characters long, as per the API https://developer.ups.com/tag/Shipping?loc=en_US#operation/Shipment According to the doc, the field is only useful for USA, Canada and Vietnam. ----- Ticket: opw-6149404 Forward-Port-Of: odoo/enterprise#117203
This update clarifies the meaning of the 'Basic' access right within the Documents app. Previously, 'No' was used, which created confusion about user access. The term has been changed to 'Basic' to accurately reflect that users retain access to their documents and the app itself.
Original PR description
In the Documents app, the lowest tier access right was called "No", which implies the user has no access. However, this is not the case. The user still has access to the app, their own documents, and shared documents. To resolve this confusion, "No" is changed to "Basic" and the relevant descriptions are updated. task-6099135 Forward-Port-Of: odoo/enterprise#113660
This update corrects a technical issue where a GOSI configuration warning was incorrectly displayed multiple times on payslips. The change ensures that this warning only appears once, streamlining the payroll process and improving data accuracy. This resolves a potential reporting discrepancy.
Original PR description
With this change, we prevent the GOSI configuration warning from appearing twice on a payslip task-6241149
This update removes a misleading warning message about a missing identification number from the payroll dashboard. The identification number field is no longer used in the payroll process, so the warning was unnecessary. This improves the user experience and simplifies payroll reporting.
Original PR description
Remove the "Missing Identification Number" warning from the dashboard. The identification number field is not used in the payroll workflow, making this banner redundant. Task: 6254734
This update prevents users from unintentionally opening employee views during pay run selection. By disabling clicks on data rows (except the avatar), it reduces the risk of users being forced to restart the pay run process. This enhances the user experience and efficiency.
Original PR description
This disables opening the employee form view when clicking anywhere on the data row, except when clicking directly on the avatar. The goal is to prevent accidental clicks on the row that force users to start over again. Task:6251741
A technical issue causing a traceback when users accessed the tax declaration feature in the Odoo Enterprise system has been resolved. The fix corrects a problem where a template was incorrectly referencing a missing variable, ensuring the tax declaration button functions without errors. This improves the user experience for employees.
Original PR description
Version: - saas-19.4 Steps to reproduce: - install l10n_in_hr_payroll - open employee form view - click on the tax declaration button - occur traceback Issue: - Getting a traceback when clicking on the tax declaration button. Cause: - template was reading `declarations` as a template variable, which was never defined, so its value was undefined. Fix: - use `this.declarations` instead of `declarations` in t-set so It correctly reads the data loaded from the component. task-6246920
Features or functions removed from Odoo
This change removes a reset button from the HR payroll views. This reverts a previous update that introduced an issue with the payroll functionality. The removal ensures consistent and reliable payroll processing.
Original PR description
This reverts commit e35572b310fb2b705cda25283824224c1f0140bc. task-6075229
Code cleanup and technical improvements
This update replaces older reactive calls with more efficient proxy calls, a key change introduced with the Owl3 upgrade. This refactoring enhances performance and contributes to overall system stability across several core Odoo modules. The changes impact modules like Account, Documents, Knowledge, and Website, ensuring a smoother user experience.
Original PR description
With Owl3, uses of `reactive` with only one arg can be changed to `proxy` calls. This commit changes all those uses. *: account_batch_payment,documents,knowledge, pos_order_tracking_display,sale_account_accountant,timesheet_grid, voip,web_enterprise,web_studio,website_knowledge,
This update streamlines how users are added to Odoo discussion channels. Previously, a shorthand method was used, which has now been replaced with a direct store handler for better efficiency and control. This change ensures consistent and reliable channel member management.
Original PR description
Remove the public discuss.channel#add_members() shorthand and expose the functionality directly as a /discuss/channel/add_members store handler. All callers (channel_invitation, join channel action, tests) are updated to go through fetchStoreData. task-4712367
This update streamlines how key performance indicators (KPIs) are calculated within Odoo. By directly computing summaries using SQL, the system now responds faster and more efficiently, especially when generating reports. This change enhances the overall user experience and reporting speed.
Original PR description
Refactor KPI providers to compute summaries directly in SQL. This makes KPI computation callable from the /kpi/summary controller, which can call them without loading a registry. Task-id: [5167731](https://www.odoo.com/odoo/project.task/5167731) Forward-Port-Of: odoo/enterprise#118901 Forward-Port-Of: odoo/enterprise#113422