Daily updates from Odoo
Friday, March 13, 2026
40 changes · master
Enhancements to existing features
This update enhances the Odoo demo data by adding 'hr_responsible_id' values, replacing the default 'Oodobot' assignment. This provides a more realistic and useful demo environment for evaluating the planning module, aligning with best practices for demonstration data.
Original PR description
Changes: Added hr_responsible_id to the demo data as per the request since by default it's assigned to Oodobot it's better add real users to the demo data Com PR-244686 task-5602911
This update streamlines rental order management by automating price calculations and improving the user interface. The delivery date is now automatically managed, eliminating manual adjustments and the need for separate price updates, resulting in a more efficient rental process.
Original PR description
Before this change: -A delivery date field was manually editable and used to control the rental delivery date. -Changing the pricelist displayed an "Update Prices" button which had to be clicked to…
Before this change: -A delivery date field was manually editable and used to control the rental delivery date. -Changing the pricelist displayed an "Update Prices" button which had to be clicked to recompute prices. -Changing the rental start or end date showed an "Update Rental Prices" button to update rental pricing. -The rental period field was displayed below the delivery date. -The recurring plan field was visible even when no subscription product was present. After this change: -The delivery date field is hidden and automatically computed from rental_start_date. -Prices are automatically recomputed when the pricelist changes, removing the need for the "Update Prices" button. -Rental prices are automatically recomputed when the rental start or end date changes, removing the "Update Rental Prices" button. -The rental period field is moved before the pricelist field for better UI flow. -The recurring plan field is now hidden when the order does not contain any subscription product. task-6031439
This update simplifies payslip creation by replacing an outdated field with a more modern contract type. It now requires a 'structure_id' to be specified on payslip runs, ensuring accurate payroll calculations and reporting. This change enhances the reliability of payslip generation across different localization settings.
Original PR description
In this commit, we removed the usage of employee_type and replaced it with contract_type_id.
In general cases, we consider an employee to be a record having contract_type_id set to
self.env.ref('hr.contract_type_employee') (previously it was employee_type = employee).
In some specific cases (specific localizations), we have specific conditions
(e.g., in l10n_be we check the dmfa_code).
Additionally, we added the structure_id field to the hr.payslip.run model and made it required.
We also added the contract_type_id field to hr.payslip.run to allow filtering employees by their
contract type when generating payslips for a given payslip run.
task-5430894This update improves the clarity of rental agreements by displaying rental start and end dates within the sales order preview. Previously, this information was hidden in the product line descriptions, making it harder for users to quickly review the key terms of the rental. This change ensures better visibility and management of rental agreements.
Original PR description
Rental start and end dates are no longer shown in product line descriptions and are now displayed in the sales order preview. task-5388947
This update enhances the accuracy of Hong Kong payroll reports by rounding currency values to avoid potential errors when reporting to the IRD. The change ensures correct HKD reporting by using a more precise rounding method before converting to an integer, addressing a minor but important issue. Additionally, the rental system has been updated to fully support all officially recognized IRD rental benefit types.
This update adjusts the Launch Campaign button's visibility within the appraisal module based on user roles and reporting structure. Users without appraisals and without subordinates will no longer see the button, while those with subordinates will. Additionally, system-wide warnings are displayed for officers and administrators, ensuring consistent messaging.
Original PR description
Purpose: - Hide the Launch Campaign button for users without appraisal access and no subordinates. - Show the Launch Campaign button for users without appraisal access but with subordinates. - Show warnings across all relevant employees for officer/administrator rights. Done through the JS controller because in the Kanban and list view, to hide the button, I don't have records to apply conditions based on. task-5438049
This update simplifies the naming of joint committees within the Odoo Enterprise system. By removing redundant prefixes and moving data to a CSV file, the system is now more efficient and easier to maintain. This change improves data clarity and reduces complexity.
Original PR description
Almost all joint committees start with the same ""(Sub-)(Sub-)Joint Committee for (the)". This is unnecessary as the field is already called Joint Committee. This removes those unnecessary prefixes and also move the data to a csv for concise code. Task: 6025737
This update enhances the user experience for our messaging apps (mail, im_livechat, and WhatsApp) by improving the organization of channel members and streamlining discussion management. The changes include updated user interfaces and clearer channel type labels, making these apps more intuitive and efficient for users.
Original PR description
This commit introduces several improvements to the channel views in the mail, im_livechat and whatsapp module. The changes include enhancements to the user interface, better organization of channel members, and improved functionality for managing discussions and better strings for channel types. task-5475249 https://github.com/odoo/odoo/pull/243845
This update streamlines the Live Chat experience by reorganizing form views and standardizing the associated copy. The changes group related actions together for easier access and improve the overall clarity of the Live Chat interface. This enhancement aims to make Live Chat more intuitive and efficient for users.
Original PR description
community PR: https://github.com/odoo/odoo/pull/253027 This commit improves the form views related to Live Chat by: 1. Reordering the action buttons to group chat related actions together. 2. Harmonizing the Live Chat copywriting. task-6018898
Resolved issues and error corrections
This update adds a warning to the system when a customer manually changes payroll rules defined in data files. This prevents accidental overrides of standard rules and ensures customers always have access to the latest, approved settings. Users can then reset the rule to re-apply the current data files.
Original PR description
Usually, rules that are defined in the data of modules are automatically updates on the customers database even if they modified those rules manually. To prevent overriding the modifications by the customers, we add a warning when a rule from data has been modified by the user. The user can then choose to reset the rule, thus upgrading it again from the current data files. Task: 5917278
A recent update resolved an error preventing demo users without payroll permissions from accessing the attendance app. The fix involved adding a check to prevent unnecessary data requests, ensuring the app functions correctly for all users. This improves the user experience and prevents disruptions to payroll processes.
Original PR description
Steps : - Settings -> Users -> Manage Users -> marc demo - make sure the demo user has no rights over HR apps - go into debug mode -> check "User: Read his own attendances" - Connect using the demo…
Steps : - Settings -> Users -> Manage Users -> marc demo - make sure the demo user has no rights over HR apps - go into debug mode -> check "User: Read his own attendances" - Connect using the demo user. - Try to access the attendance app or to click the monthly hours smart button from it's own employee form view. - you'll get an access error. Reason : - The `PayRunMixin` patches Attendance views globally and injects the `PayRunLayout`. Upon mounting, `PayRunLayout` unconditionally fetch the Kanban architecture for `hr.payslip.run`. This triggered a `get_views` RPC call that the backend rejected for users without Payroll rights. Solution : - Added an asynchronous ACL check inside the `onWillStart` hook of `PayRunLayout`. If the user does not have the `hr_payroll.group_hr_payroll_user` group, or if there is no active `payrun_id` in the context, the component aborts the `loadViews` request early, preventing the RPC call and the resulting crash. Task - 5965727
This update resolves a security vulnerability by preventing the use of public partner information within the Enterprise POS module. This change ensures data privacy and strengthens the overall security posture of the Odoo Enterprise platform. It corrects a potential risk related to data exposure.
Original PR description
Enterprise counter-part. https://github.com/odoo/odoo/pull/251472
This update ensures accurate subline totals in stock barcode transactions. The system now requires the 'stock.group_production_lot' setting to be active, which was introduced in the 18.3 release. Without this setting, the test fails to calculate the correct totals.
Original PR description
This issue occurs on Single App and Single L10n, without demo data ### Summary This part of the test verifies that the sub line totals are calculated correctly, which from 18.3 requires the…
This issue occurs on Single App and Single L10n, without demo data ### Summary This part of the test verifies that the sub line totals are calculated correctly, which from 18.3 requires the stock.group_production_lot setting to be active. Specifically, it validates that the sum accurately reflects the Unit of Measure (UOM) across various packagings. https://github.com/odoo/enterprise/blob/93e3c6f13fbab8d54694648d04908e451f1e97fc/stock_barcode/static/tests/tours/tour_test_barcode_flows_picking.js#L6472-L6498 ### Observation The grouping logic is contingent on the stock.group_production_lot setting. If this setting is inactive, the system fails to group lines, preventing the calculation of the aggregate total. Without the production lot group active, the conditional checks will bypass the grouping process: https://github.com/odoo/enterprise/blob/d664e1f97f6e7fa462b4cf1806322a54762c0de4/stock_barcode/static/src/models/barcode_model.js#L53 https://github.com/odoo/enterprise/blob/d664e1f97f6e7fa462b4cf1806322a54762c0de4/stock_barcode/static/src/models/barcode_model.js#L224-L225 When the demo data are enabled [the group is implied](https://github.com/odoo/odoo/blob/8a7ca8beac521f41faf79a6022935fdbb605de76/addons/stock/data/stock_demo.xml#L185-L187) ### Impact When stock.group_production_lot is disabled: - Lines remain ungrouped. - The total sum of the grouped line is never generated. - The test fails as it cannot find or validate the expected sub-line totals. This issue originate from the 18.3 forward port of this [commit](https://github.com/odoo/enterprise/commit/84d4b1f144e8a437fe76ec5ef3bc9799cdf993b0) runbot-241109 Forward-Port-Of: odoo/enterprise#108908
This update resolves a technical issue where the Odoo Enterprise system would crash or display warnings due to missing view IDs. It also adds a calendar icon to date-type fields in the sidebar, improving clarity and usability for users. This ensures a more stable and intuitive experience.
Original PR description
Before this commit, the component would crash or throw warnings when the optional view ID was missing. The sidebar list also lacked a clear visual indicator for date-type fields. After this commit, the view ID is correctly marked as optional to prevent those errors. We also map the calendar icon to date items so they're easier to identify. taskid-6018352
This update ensures that the filing status for employees is always selected during payroll configuration. Previously, missing this information would prevent users from generating payslips. This change ensures accurate payroll calculations and avoids disruptions to the payroll process.
Original PR description
Before this PR, if an employee’s filing status is not selected in the configuration, users get an error and cannot compute payroll using the US salary structure. In this PR, we make the l10n_us_filing_status field required. This prevents users from being blocked when generating a payslip. task-5957074
This update resolves a warning in the payroll dashboard that appeared when employees were linked to partners without a defined DMFA work location. The change adds a field to the partner record to directly link it to the appropriate DMFA location, providing clearer reporting and a more user-friendly experience for payroll management.
Original PR description
Previously, DMFA work locations were defined in their own model and linked to a partner. The link didn't exist in the other direction (from partner to DMFA work location). Therefore, when an active employee had a partner not relate to any work location, we were getting a warnign in the payroll dashboard that was showing the list of partners with missing location. However, it was not possible from the partner to define the location, which was confusing and not helpful. With this commit we add the new field on res_partner and modify the views to show it. Task: 5940867
This update corrects a technical issue in the timesheet grid that prevented proper task state resets. Adding a missing 'super()' call ensures the parent method executes correctly, maintaining the integrity of timesheet data. This resolves a minor bug impacting timesheet accuracy.
Original PR description
The `_onchange_project_id` override was missing a `super()` call, which prevented the parent method (responsible for resetting the task state) from executing. This commit adds the missing super call. task-4210148
This update resolves an issue preventing users from completing rental orders. The removal of a temporary flag and the addition of a synchronization step now ensures the order confirmation only occurs when required data is valid. This improves the reliability and user experience of the rental order process.
Original PR description
This commit marks the 'rental_tour' as stable by removing the 'undeterministicTour_doNotCopy' flag. A synchronization step has been added to wait for the input field to have a valid value before confirming the order.
This update resolves an issue preventing users from successfully exporting new modules through the Odoo Studio tour. The change removes a problematic flag and adds a wait step to ensure the home menu is fully loaded, guaranteeing a smoother and more reliable experience for users.
Original PR description
This commit marks the 'can_export_new_module' tour as stable by removing the 'undeterministicTour_doNotCopy' flag. A new step has been added to wait for the home menu to be fully loaded before proceeding to open Studio.
This update corrects a visual problem with the appointment form grid, ensuring that all appointment details are displayed correctly. The change prevents a broken layout that was impacting user experience when viewing appointment records. This ensures consistent and accurate appointment data display.
Original PR description
opw-6036938
This update corrects a bug where copying product records after creation didn't function correctly due to a context key. Previously, tests were incorrectly passing, masking a fundamental problem. The fix ensures tests accurately reflect product creation behavior, improving overall system reliability.
Original PR description
Copy of `product.product` records wasn't working as expected when called on records returned by a `create` call, as they had a context key disabling product creation. Since this is now fixed (see counterpart PR), some enterprise tests were failing as they wrongly assumed the copy worked as expected, previously making some assertions succeed regardless of the absence of a product.
This update corrects a previous calculation error related to how extra legal holidays impact salary and benefit costs. The new formula now accurately reflects that taking extra days off doesn't increase benefit costs, leading to more precise wage calculations, particularly for meal vouchers. This ensures accurate payroll processing for employees in Belgium.
Original PR description
Specifications ============== Before this PR, taking extra legal paid holidays on your salary package was making the benefit taken cost more then if you didn't take any extra legal holidays. At fixed…
Specifications
==============
Before this PR, taking extra legal paid holidays on your salary package was
making the benefit taken cost more then if you didn't take any extra legal
holidays.
At fixed wage, the yearly cost was then higher than it should be.
At fixed yearly cost, the wage was then lower than it should be.
Indeed, for example, the average Meal vouchers monthly cost should only be
multiplied by the number of month in the year the get the yearly cost of meal
voucher. Before, they were also weighted by the number of extra legal days,
but taking more extra legal holidays will not cost more meal voucher to
the employer. In fact, in that precise example, the employee will not even
receive meal vouchers when an extra legal day off will be taken.
In that precise example, it will even cost less to the employer.
But anyway, benefits should not be weighted in function of the number of
the extra legal paid holidays the employee will take as benefit cost are in
reality not impacted by those extra legal days.
After this PR, only the wage is impacted by the extra legal paid holidays.
See below development for more numbered details.
Old Formula
===========
Yearly Cost
----------------
YC = (Benefits + (Cost_Factor * Wage) + Sacrifice_Fixed) / Sacrifice_Ratio
Detailed Example given for Belgian payroll
Yearly_cost = (
(sum_of_monthly_benefits_costs * 12)
+ sum_of_yearly_benefits_costs
+ ((13.92 + (13.0 * EMPLOYER_ONSS)) * Gross_Salary)
+ insurance_group_cost
) / (1.0 - (Extra_Legal_holidays_number / 231.0))
For: wage = 5000€, Benefits = 150€ Rep fee + 500€ car, Extra Legal = 15:
-> Yearly Cost = 101641.07
Wage
--------
Wage = ((YC * Sacrifice_Ratio) - Sacrifice_Fixed - Benefits) / Costs_factor
Detailed Example given for Belgian payroll
Wage = (
(
Yearly_cost
* (1.0 - (Extra_Legal_holidays_number / 231.0))
)
- insurance_group_cost
- (sum_of_monthly_benefits_costs * 12)
- sum_of_yearly_benefits_costs
) / (13.92 + (13.0 * EMPLOYER_ONSS))
For: Yearly Cost = 100k€, Benefits = 150€ Rep fee + 500€ car, Extra Legal = 15:
-> Wage = 4912.05
New Formula
===========
Yearly Cost
----------------
YC = Benefits + (Cost_Factor * Wage / Sacrifice_Ratio) + Sacrifice_Fixed
Detailed Example given for Belgian payroll
Yearly_cost = (sum_of_monthly_benefits_costs * 12)
+ sum_of_yearly_benefits_costs
+ (
(13.92 + (13.0 * EMPLOYER_ONSS))
* Gross_Salary
/ (1.0 - (Extra_Legal_holidays_number / 231.0))
)
+ insurance_group_cost
For: wage = 5000€, Benefits = 150€ Rep fee + 500€ car, Extra Legal = 15:
-> Yearly Cost = 101099.40€ (541.67 less than with old formula)
Wage
--------
Wage = (YC - Sacrifice_Fixed - Benefits) * Sacrifice_Ratio / Costs_factor
Detailed Example given for Belgian payroll
Wage =
(
Yearly_cost
- insurance_group_cost
- (sum_of_monthly_benefits_costs * 12)
- sum_of_yearly_benefits_costs
)
* (1.0 - (Extra_Legal_holidays_number / 231.0))
/ (13.92 + (13.0 * EMPLOYER_ONSS))
For: Yearly Cost = 100k€, Benefits = 150€ Rep fee + 500€ car, Extra Legal = 15:
-> Wage = 4941.08€ (29.03 more than with old formula)
Also, this PR applies a correction for the meal vouchers cost computation.
The more extra legal days off are taken, the less the meal voucher number
received by the employee there will be, and the less it will cost in average
per month.
Task-5896493This update ensures all Odoo reports consistently include the 'has_sublines' key in their results. Previously, some reports lacked this key, causing confusion for developers and potential issues with report functionality. This change improves the reliability and predictability of our reporting engine.
Original PR description
Some reports doesn't return the has_sublines key in their results which can be confusing for developers and can be a source of issues. This PR ensures that it's not the case anymore. task-id: 4896816
This update corrects a budgeting issue impacting cultural and training industries where VAT isn't deductible. It ensures budgets accurately reflect VAT contributions, preventing misleading figures before bill recording. This improves budget forecasting and reporting for these specific business sectors.
Original PR description
In the cultural industry and/or training (formations) industry namely but not only, users often do not have right to deduct VAT. Though, they receive bills issued by their customer, where VAT is…
In the cultural industry and/or training (formations) industry namely but not only, users often do not have right to deduct VAT. Though, they receive bills issued by their customer, where VAT is explicitly set. Our users want to fetch the bills (import, Peppol, whatever) and post them quickly. Hence why even though they don't deduct VAT, they manipulate taxes. By doing so, they adapt their taxes: adapting the tax grids removing the account on the tax repartition line (or setting a distinct P&L account) >> this is how you can deduct if a tax is deductible or not The issue is that in budgets, before the bill is recorded, the committed account forgets to compute the non-deductible tax contribution. And the user is temporarily mislead because if the amounts have already been committed, the budget suggests that they have not yet been committed. Only when the bill is registered, then the committed amount is adapted to the bills. Adapt the computations of the budget so that the committed amount takes into account the non-deductible VAT. task-5993281
This update resolves an issue where payments weren't automatically matched to invoices when 'Outstanding Receipts' accounts were used in the bank journal. The fix allows for amount matching, ensuring accurate reconciliation of payments and invoices. This improves financial reporting accuracy.
Original PR description
Steps to reproduce - Have a Bank journal with Outstanding Receipts accounts set - Create and confirm an invoice with a payment reference - Create the payment - Create a bank transaction with: - Label: any label - Partner: invoice partner - Amount: invoice full amount Issue: Transaction won't be matched automatically Analysis: Transaction will be automatically matched if the outstanding receipts account is not set. It occurs because in case it is set, the sytem will only try to match the communication pattern against the journal item of the payment, without trying amount matching Note: another solution could be to relax the communication matching. In the user case the invoice payment reference is something like `TEST-12345` and the payment communication `AAAAAAAAAAA /BBBBBBBBBBB TEST 12345` opw-5872387 Forward-Port-Of: odoo/enterprise#109992 Forward-Port-Of: odoo/enterprise#108564
This update restores the previous method for handling files within knowledge articles, resolving a printing problem caused by a recent change. The fix ensures that knowledge articles can now be printed correctly using wkhtmltopdf, improving the user experience for generating reports and documents.
Original PR description
### Purpose of this PR: - Restore the static file box implementation and drop the embedded component, as it breaks printing with wkhtmltopdf. - The original issue with the static file box was fixed in [#241591](https://github.com/odoo/odoo/pull/241591) Reverts: https://github.com/odoo/enterprise/pull/88929 community: https://github.com/odoo/odoo/pull/251098 Forward-Port-Of: odoo/enterprise#109376 Forward-Port-Of: odoo/enterprise#108999
A recent update caused crashes when creating and saving YouTube posts in Odoo. This fix removes outdated references to a 'name' attribute within the social_youtube module, resolving the issue. The change ensures stable post creation without impacting core functionality.
Original PR description
Bug: Following recent changes introduced in saas-19.2, creating and saving a YouTube post causes the flow to crash. Cause: A refactoring in the social module removed the `utm.source.mixin` dependency from the `social_post` model. This consequently removed the `name` attribute from the model. However, `social_youtube` still expected this attribute to exist, triggering the crash. Solution: Remove all references to the `name` attribute within the `social_youtube` module. We opted not to reintroduce the attribute on the model because it did not add significant functionality and has been superseded by other attributes. Forward-Port-Of: odoo/enterprise#109203
This update fixes an issue where customers could inadvertently set subscription start dates to 'false,' leading to incorrect invoicing. The change prevents users from removing the start date, ensuring subscriptions are properly billed and tracked. This maintains accurate subscription records and prevents revenue discrepancies.
Original PR description
**Issue** Some customers were removing the `start_date` of subscriptions, leading to the subscription being considered free on the next invoicing. While there are legitimate use cases to edit the `start_date` of a running subscription, it should probably not be removed. opw-5325303 Forward-Port-Of: odoo/enterprise#104925
This update resolves an error that prevented the generation of customer statement reports. The issue stemmed from a missing domain variable, causing a type error. The fix ensures the domain is always provided, guaranteeing correct report output and preventing failed email previews and PDF generation.
Original PR description
**Steps to reproduce:** * Install the **l10n_my_reports** module. * Go to `Accounting > Reporting > Partner Ledger`. * Change report to `Customer Statement`. * Add data in the report and click Send. * In the email template, set the `dynamic reports` as `statement of accounts` under the options tab. * Click Preview. **Observed behavior:** * Error: `TypeError: Domain() invalid argument type for domain: None` * Email preview fails and PDF cannot be generated. **Cause:** * The `statement_account_document` template uses `filtered_domain(domain)` but the domain variable was not being passed to the template context by the `_get_report_values` method, resulting in None being passed to `filtered_domain()`. **Fix:** * Ensure domain is always present in the report context, defaulting to an empty list when not provided. * Added safe handling for missing data and context parameters. opw-5880385 Forward-Port-Of: odoo/enterprise#107400
This update fixes a potential issue with Instagram polls by ensuring the system only requests the poll's ID after it's successfully published. Previously, attempting to retrieve the ID prematurely could cause errors. The changes include updated tests to simulate the Instagram API's behavior and prevent future problems, ensuring poll data is reliably fetched.
Original PR description
Follow-up to 06256aa02cb92378933edd638259dd725a2d04c1 The Instagram API returns an error if the `ig_id` field is requested while the container is still processing. This commit splits the container status check into two steps: 1. Poll for `status_code` only to determine the current state. 2. If the status is `PUBLISHED`, perform a second request to fetch the `ig_id`. Updated the test mocks to simulate this restriction, ensuring that requesting `ig_id` on a non-published container results in a 400 error to prevent future regressions. opw-5081325 Forward-Port-Of: odoo/enterprise#110094
This update fixes a technical issue preventing HR modules from properly customizing VoIP contact information. The change ensures VoIP data aligns with how it's stored in the system, maintaining consistency and allowing for future flexibility in how VoIP interacts with other business processes. This improves the reliability of VoIP data across the enterprise.
Original PR description
`_store_voip_fields` was directly adding `"im_status"` to the stored partner fields. This bypassed `_store_im_status_fields`, so module overrides (notably HR-related ones) could not extend/adjust the IM status payload. Use `_store_im_status_fields(res)` from `_store_voip_fields` instead of hardcoding `"im_status"`. Also align the VoIP mock server `res.partner` contact payload with the real store payload by including the same contact fields and IM status data (`partner_share`, `im_status`, `im_status_access_token`, etc.). This keeps VoIP aligned with the extensibility contract and keeps tests on the same data shape as runtime. [H>A] Forward-Port-Of: odoo/enterprise#110070
A minor bug fix has been implemented to ensure the correct field for account numbers is being used in the account_online_payment module. This prevented a technical error and ensures data is processed accurately. The change improves system stability.
Original PR description
Due to an oversight during https://github.com/odoo/enterprise/pull/109070, the old field `sanitized_acc_number` was used instead of the new one `sanitized_account_number` This causes a traceback. No task ID Forward-Port-Of: odoo/enterprise#110266
This update corrects a bug in the DATEV export that was causing currency exchange difference values to appear as zero. The fix now uses the line balance, ensuring that actual exchange rates are accurately reflected in the exported DATEV file, providing correct financial reporting.
Original PR description
**Steps to reproduce: 1. Create DE company (EUR currency) 2. Add USD -> EUR exchange rates for XX/01/26 and XX/15/26 (XX is target month) 3. Install l10n_de_reports 4. Make sure bank journal has…
**Steps to reproduce: 1. Create DE company (EUR currency) 2. Add USD -> EUR exchange rates for XX/01/26 and XX/15/26 (XX is target month) 3. Install l10n_de_reports 4. Make sure bank journal has 'outstanding receipts' set for incoming manual payment [Accounting -> Config -> Journals -> Bank] 5. Create USD invoice for XX/02/26 and confirm it 6. Register a Payment for XX/16/26 and confirm it (you should see the exchange difference entry matched alongside the payment) 7. Go to [Accounting -> Reporting -> General Ledger] and export DATEV data **Description of issue: The currency exchange rate difference entries in the exported file are shown as 0 **Expected behavior: The actual currency exchange difference values should be displayed **Why this happens? The DATEV export currently sets the amount based on 'amount_currency'. For currency exchange difference entries, this value is 0.0 in the General Ledger, resulting in 0 values in the export. **The fix: Updated the logic to use the line balance when the entry is identified as a currency exchange difference. opw-5358954 Forward-Port-Of: odoo/enterprise#109655 Forward-Port-Of: odoo/enterprise#107268
This update corrects a calculation error in the HRA (House Rent Allowance) rules for Indian employees. The change ensures that HRA percentages are accurately applied, aligning with standard India payroll practices. This update improves the consistency and accuracy of employee compensation calculations.
Original PR description
… fields - compute HRAMN from categories['BASIC'] with result_rate = l10n_in_hra_percentage * 100 - add python condition to skip the rule when HRA percentage is zero - keeps ind_emp behavior consistent with regular India payroll rules task-5964270 Forward-Port-Of: odoo/enterprise#108507
Code cleanup and technical improvements
This update simplifies website configuration by moving option definitions from JavaScript to XML files. This change improves maintainability and consistency across the website modules, aligning with a new development standard. The core logic for website options is now managed through XML, streamlining the process and reducing complexity.
Original PR description
*: ai_website_livechat, website_appointment, website_sale_renting This commit adapts website_* options to the XML-first DSL introduced in `html_builder`/`website`. Core changes: - Option placement and attributes (`selector`, `title`, `groups`, `editableOnly`, ...) are now declared in `website.BuilderOptions` XML extensions. - JS plugins no longer register options via `builder_options` using `withSequence`; they stay focused on actions and services. - Option classes kept for behavior are linked through `static id` and registered in `website-options` registry when needed. - Obsolete JS-only option wrappers/plugins are removed when XML-only declarations are sufficient. For more information and context, read the community commit message. task-5358660
This update prepares the website templates for OWL3, a new technology that requires a specific syntax (.this) to access components within templates. The changes add this. to template variables, ensuring compatibility with the upcoming OWL3 update and maintaining consistent component referencing across various website modules.
Original PR description
In preparation for OWL3, where template variables will need to use .this to target component variables, we add this. to template variables that are targetting the component. Script PR: odoo#247965 https://github.com/odoo/odoo/pull/253364
This update simplifies how data is grouped within key Enterprise modules like Knowledge, Gantt, and Studio. The team has switched to using the standard JavaScript `Object.groupBy` method, aligning with recent changes in the core Odoo system. This improves efficiency and reduces potential future maintenance challenges.
Original PR description
**This PR:** Migrates Enterprise call sites to the native **`Object.groupBy`** API, following its removal from core. ### Key Changes * **Migration:** Updated call sites in Knowledge, Gantt, and Studio. * **Refactor:** Converted string criteria to callbacks and removed unused imports. **Task-5477775**
This update standardizes the naming of resources within several Odoo website plugins. Specifically, a naming inconsistency was corrected to improve code organization and maintainability. This change ensures a more consistent and manageable codebase for future development.
Original PR description
*: website_appointment, website_sale_renting This commit renames `so_content_addition_selector` to `so_content_addition_selectors` to enforce the use of coherent naming among plugin resources. Community PR: https://github.com/odoo/odoo/pull/247166 task-5363816
This update prepares our Odoo templates for OWL3 by adding the `.this` syntax to template variables. This is necessary because OWL3 requires template variables to explicitly target component variables, ensuring compatibility with the new rendering context. This change impacts several spreadsheet-related modules to ensure a smooth transition.
Original PR description
*documents_spreadsheet,hr_contract_salary,project_enterprise, sale_timesheet_enterprise,spreadsheet_dashboard_edition, spreadsheet_edition,spreadsheet_sale_management, test_spreadsheet_edition,timesheet_grid In preparation for OWL3, where template variables will need to use `.this` to target component variables, we add `.this` to template variables that are targetting the component. Script PR: odoo/odoo#247965 task: OWL3 prep - add this. to template variables
This update prepares our Point of Sale system for OWL3, a new version of Odoo. It modifies template variables to use `.this`, which is now required to correctly target component variables. This ensures the POS system functions correctly with the updated Odoo version.
Original PR description
In preparation for OWL3, where template variables will need to use `.this` to target component variables, we add `.this` to template variables that are targetting the component. Community PR: https://github.com/odoo/odoo/pull/253046 Script PR: odoo/odoo#247965 task: OWL3 prep - add this. to template variables