Friday, September 18, 2026
35 changes · master
Resolved issues and error corrections
When editing an online store product with variants, tags now attach to the variant currently shown on the page instead of the default one loaded first. This prevents saved tags from disappearing after reload and keeps product editing consistent for shop managers.
Original PR description
Versions -------- - master Steps ----- 1. Install eCommerce. 2. Open a product with variants on the shop and enter Edit. 3. Pick another variant, then add a tag in the Tags row and save. Issue ----- The tag lands on the variant the page was loaded with instead of the one being displayed. After reload it is absent from the page, and the editor no longer offers it. Cause ----- `ProductVariantOption` reads `data-product-variant-id`, which is rendered server side for the default variant and never refreshed on combination change. Solution -------- Read `[data-product-id]` inside `.js_product` instead, which follows the displayed combination. opw-testing-day-v20 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#288328
The HTML editor now avoids offering heading or paragraph style changes when the change would modify protected form content. This helps preserve website form structure and prevents accidental layout or content corruption while editing descriptions.
Original PR description
If a node is a `p` (or `h1`, ...) and is inside a node marked with `contenteditable=false`, but has `contenteditable=true` itself, the command to change tag (`/h1`, ...) are available and replace the `p` node (thus mutating its parent, which is `contenteditable=false`) This commit modifies the "retagging safe" condition to add the "parent is content editable" next to the existing "the node is removable" task-6573954 (extracted from https://github.com/odoo/odoo/pull/274082) Forward-Port-Of: odoo/odoo#288234
Clicking informational extra text in a many2one field no longer focuses the field or opens the dropdown. This makes it easier for users to select or copy that text without triggering an unwanted menu.
Original PR description
Clicking on the informative extra text of a many2one field would focus the field and open the dropdown, making it inconvenient for the user to simply select or copy the text. This commit prevents the many2one dropdown from opening when the user clicks on the extra lines. Task-6538439 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#289016 Forward-Port-Of: odoo/odoo#288019
The Subscribed Newsletters card now uses its own dedicated illustration instead of reusing the Email Marketing app icon. This makes the portal card grid look more consistent and polished for users.
Original PR description
Before this commit, the Subscribed Newsletters card reused the Email Marketing app icon and was the only non-illustration in the grid. This commit updates the icon to a dedicated illustration. task-6225760 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#288945
This fixes employee counting so staff linked only to portal accounts are not treated as internal employees with users. It improves HR reporting accuracy when portal users were assigned to employee records by mistake.
Original PR description
For employees without user count, we should only consider internal users, so exclude employees where a portal user was assigned by mistake. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#288580
A typo in stock settings validation was corrected so the relevant configuration check works as intended. This helps prevent incorrect validation behavior when users adjust inventory settings.
Original PR description
Forward-Port-Of: odoo/odoo#289150
This update fixes the rounded corner styling on side areas of kanban cards in Products and Point of Sale categories. It improves visual consistency so cards look cleaner and more polished across these screens.
Original PR description
*: point_of_sale This commit applies the appropriate border-radius adjustments to the <aside/> elements in the related kanban cards. task-6573555 Requires: -…
*: point_of_sale This commit applies the appropriate border-radius adjustments to the <aside/> elements in the related kanban cards. task-6573555 Requires: - https://github.com/odoo/enterprise/pull/132125 In `pos.category.kanban` | Before | After | |--------|--------| | <img width="385" height="203" alt="Screenshot 2026-09-18 at 11 10 40" src="https://github.com/user-attachments/assets/67537bf4-0aff-4b94-909f-59c7cf60cb96" /> | <img width="389" height="201" alt="Screenshot 2026-09-18 at 11 10 38" src="https://github.com/user-attachments/assets/a9682a97-2fc2-4104-ae5f-794b267273b0" /> | In `Product.template.product.kanban` and `Product Kanban` | Before | After | |--------|--------| | <img width="380" height="102" alt="Screenshot 2026-09-18 at 11 13 59" src="https://github.com/user-attachments/assets/6a437efe-d1fd-483b-9f48-35e625dae5d1" /> | <img width="383" height="102" alt="Screenshot 2026-09-18 at 11 14 05" src="https://github.com/user-attachments/assets/bce0285c-2a06-484a-9592-dfde2a908d0d" /> | --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#289138
This fixes a display issue where time off allocation warnings could show the remaining balance using the request's unit instead of the time off type's unit. Business users now see consistent and accurate remaining time information when allocations and requests use different units.
Original PR description
When the unit of measure of a time off type doesn't match the unit of a request -approved and based on an allocation-, the time remaining on the allocation incorrectly holds the unit of the request rather than the time-off type. It thus displays inconsistent information. The dependency of the computation is now set to `work_entry_type_id.unit_of_measure` rather than `work_entry_type_request_unit` to correctly reflect the remaining duration of the allocated time. task-id: 6545527
Invoices that have already been sent through PEPPOL can no longer be selected for sending again. This prevents accidental duplicate sends and makes the interface clearer by showing why the option is unavailable.
Original PR description
If the invoice is already sent through PEPPOL, the checkbox for sending the invoice should then be readonly and unchecked. Currently is correctly unchecked but not readonly. We fix it by copying what French localization (`l10n_fr_pdp`) does already, giving a reason for disabling. <img width="1359" height="948" alt="immagine" src="https://github.com/user-attachments/assets/6f91ab34-8989-487e-8cd9-96dafee7bcb5" /> . Pad: https://pad.odoo.com/p/accountingv20 pad-accountingv20 Forward-Port-Of: odoo/odoo#288898
Fixed an issue in the API documentation where opening a related field link in a new tab could show the original model instead of the related model. This makes navigation in developer documentation more reliable and avoids confusion when reviewing model relationships.
Original PR description
Steps to reproduce: * open api_doc * select a model (eg: project.task) * middle click on a many2one field (eg: stage_id) Observed behavior: The new tab is opened on the base model (project.task) instead of the comodel (project.task.type). This commit fixes the issue by using `t-att-href` to point to the correct model and `preventDefault` to avoid a full reload when clicking on a m2o. Forward-Port-Of: odoo/odoo#288558
Long-pressing an order line in Point of Sale no longer resets a manually adjusted price back to the product's default price. This helps cashiers keep intended pricing changes intact when interacting with existing order lines.
Original PR description
Long-pressing an order line recomputed its price and reset it to the product's original price. Preserve the existing price when the product is neither configurable nor part of a combo. --- Task: https://www.odoo.com/odoo/project/1737/tasks/6570304 Forward-Port-Of: odoo/odoo#288053
This fixes a small internal issue where a broken message format caused the wrong kind of error during export identifier checks. The change helps developers and support teams see the intended validation error, making troubleshooting clearer without changing normal user workflows.
Original PR description
The format was broken. `'{}:{}' % it` → `TypeError` instead of `AssertionError`.
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#288836
Forward-Port-Of: odoo/odoo#288610This fix prevents users from accidentally triggering repeated delete requests for the same email or chat attachment when clicking quickly or using a slow connection. It avoids unnecessary error messages and keeps the attachment removal experience smoother in Discuss and messaging flows.
Original PR description
**Steps to reproduce:** - Open Discuss app - Open any conversation - Setup the browser with throttled connection (e.g. Slow 4G) - Select multiple files to attach but don't send the message - While…
**Steps to reproduce:**
- Open Discuss app
- Open any conversation
- Setup the browser with throttled connection (e.g. Slow 4G)
- Select multiple files to attach but don't send the message
- While some are loading, double click the delete button of one of the loaded attachment preview
- Traceback will appear: `404 Not Found`
**Issue:**
On click the delete button triggers a deletion request on `/mail/attachment/delete`.
Repeatedly clicking the delete button before the first request was completed (and the `AttachmentList` get updated) but after the attachment was deleted, will cause a `404 Not Found` due to the `raise NotFound()` which was added by [1] in `mail_attachment_delete`.
```py
attachment = request.env["ir.attachment"].browse(int(attachment_id)).exists()
if not attachment or not attachment._has_attachments_ownership([access_token]):
request.env.user._bus_send("ir.attachment/delete", {"id": attachment_id})
raise NotFound()
```
**Fix:**
Prevent concurrent deletion requests for the same attachment by keeping track of attachments currently being deleted.
[1] https://github.com/odoo/odoo/commit/50f45dd436b97027cb1461410efeee7057dad4e8#
opw-6499125
Forward-Port-Of: odoo/odoo#288884
Forward-Port-Of: odoo/odoo#285060Delivery slips now show the name of an outer package clearly when one package is placed inside another. This makes shipping documents easier to read and helps warehouse and delivery teams identify packaging details without confusion.
Original PR description
Before this PR:- ================= When a pack is put inside another pack, the delivery slip displays the outer pack, but its name is unreadable. <img width="975" height="300" alt="image" src="https://github.com/user-attachments/assets/abaf0c1c-1fb7-449a-87d4-ec7ed6988f88" /> After this PR:- ================= Make the outer pack name readable on the delivery slip. <img width="983" height="312" alt="image" src="https://github.com/user-attachments/assets/a271c27d-da3c-4a3d-b56a-8a860886f895" /> Enterprise PR:- odoo/enterprise#131741 Forward-Port-Of: odoo/odoo#288498
Sale orders now show the correct line number when a product line is added after a section. This prevents confusing or duplicated numbering in sales documents, helping users review order lines more reliably.
Original PR description
Steps to reproduce: 1. Open a sale order. 2. Add a section. 3. Add a line after the section. Issue: The line number of the line after the section is incorrect. Cause: The line number counter is incremented twice for section lines. Fix: Increment the counter on the order line itself instead of the pseudo-elements, ensuring the counter is incremented only once per line. Forward-Port-Of: odoo/odoo#288491
Warehouse transfers can now be automatically placed into a batch even when the batch limit is set to one. This fixes a configuration where automatic batching was enabled but no batch was created, helping teams rely on consistent warehouse processing rules.
Original PR description
Issue Before This Commit: ======================== When automatic batch creation is enabled and the maximum number of pickings per batch (batch_max_pickings) is set to 1, no batch is created for the picking. Steps to Reproduce: ========================= 1: Install the stock module. 2: Enable automatic batch creation. 3: Set the maximum number of pickings to 1 and enable Group by Contact on an operation type. 4: Create a transfer for that operation type. 5: Observe that no batch is created for the picking. Cause of the issue: ========================= In _is_auto_batchable, the condition returns False when batch_max_pickings is set to 1, preventing the picking from being automatically batched. After This Commit: ======================== Update _is_auto_batchable to allow automatic batching when batch_max_pickings is specified and is greater than or equal to 1. Forward-Port-Of: odoo/odoo#288295
Users who leave a Discuss call themselves will no longer see a misleading message saying the server disconnected them. This reduces confusion while still warning users when a call really ends unexpectedly from the server side.
Original PR description
Before this commit, manually leaving a Discuss call showed the warning meant for a server-initiated disconnection. Steps to reproduce: 1. Join a call in a Discuss channel. 2. Click Disconnect. 3. Observe "Disconnected from the call by the server". This happened because the server ended the RTC session and the session/ended bus notification reached the browser before the leave_call RPC response, while the local session was still active. This commit fixes the issue by marking the RTC service as leaving for the duration of the RPC and ignoring the corresponding local-session deletion. Unexpected server-side session endings still show the warning. <img width="499" height="175" alt="Screenshot 2026-09-11 at 01 14 46" src="https://github.com/user-attachments/assets/f3cfbfb3-5c25-4139-9a0a-1a558399d73f" /> Forward-Port-Of: odoo/odoo#287754
Equity contact cards now use the standard card width instead of a custom narrow layout. This prevents cards from being squeezed on medium-sized screens, making titles and key information easier to read.
Original PR description
Before this commit, the cards forced --KanbanRecord-width to 18vw, squashing them on medium screens (+ titles often truncated) This commit drops the override for default width, and swaps the hardcoded padding and graph margins for the --Card-padding-* variables they were mirroring by hand. | Current | This commit | |--------|--------| | <img width="1064" height="485" alt="image" src="https://github.com/user-attachments/assets/a8631b23-c231-45e7-8b83-da74e0081a42" /> | <img width="1064" height="485" alt="image" src="https://github.com/user-attachments/assets/43d469e9-f889-4e59-a4c1-173863706d69" /> | task-6578400 Forward-Port-Of: odoo/enterprise#131908
The marketing automation setting that controls global reply cancellation is now stored at the campaign level instead of on individual activities. This better matches how campaigns are managed and prepares the system for upcoming related functionality without changing day-to-day user workflows.
Original PR description
Currently, global reply cancel option is stored at activity level. However it makes more sense at campaign level. This commit adds relevant field on campaign model *à l'arrache* due to opportunity window to change DB scheme in stable. Feature is coming soonish. Forward-Port-Of: odoo/enterprise#132011
When helpdesk tickets are merged, related timesheets now use the same sales order item as the merged destination ticket. This prevents inconsistent billing or service tracking information after tickets with different sales items are combined.
Original PR description
Currently when you merge helpdesk tickets with differing sale order items, the sales order item listed on the timesheets of the source ticket is not updated to match the destination ticket's sales order item. This PR ensures uniformity bugfix-6473396 Forward-Port-Of: odoo/enterprise#131155 Forward-Port-Of: odoo/enterprise#129060
This fix adjusts the rounded corners and spacing on kanban cards in AI Agents, Referrals, and ESG database configuration views. The change makes cards display more consistently and avoids visual issues when side panels appear on either side of a card.
Original PR description
*: hr_referral, esg This PR applies the appropriate border-radius adjustments to the <aside/> elements in the related kanban cards. About ESG, the default Kanban card only supports an aside on the…
*: hr_referral, esg This PR applies the appropriate border-radius adjustments to the <aside/> elements in the related kanban cards. About ESG, the default Kanban card only supports an aside on the left. However, in the Database Kanban view, the aside is positioned on the right, which causes issues with the card border radius and margins. This PR adds module-specific customizations to handle this case. task-6573555 Requires: - https://github.com/odoo/odoo/pull/289138 In `ai.agent.kanban` | Before | After | |--------|--------| | <img width="389" height="220" alt="Screenshot 2026-09-18 at 11 17 22" src="https://github.com/user-attachments/assets/f887d40e-8b61-498f-9f24-dd6601721993" /> | <img width="387" height="222" alt="Screenshot 2026-09-18 at 11 17 28" src="https://github.com/user-attachments/assets/f013f743-a249-40de-9d85-6e78ce626f28" /> | In `hr.referral.reward.employee.referral.backend.kanban` | Before | After | |--------|--------| | <img width="386" height="136" alt="Screenshot 2026-09-18 at 11 19 36" src="https://github.com/user-attachments/assets/e853a646-1288-4c1a-806e-147edc9774f0" /> | <img width="384" height="129" alt="Screenshot 2026-09-18 at 11 19 25" src="https://github.com/user-attachments/assets/cc4f0137-e402-4486-8f5a-7af54ca8fd99" /> | In `hr.referral.reward.employee.referral.backend.kanban` | Before | After | |--------|--------| | <img width="386" height="136" alt="Screenshot 2026-09-18 at 11 19 36" src="https://github.com/user-attachments/assets/e853a646-1288-4c1a-806e-147edc9774f0" /> | <img width="384" height="129" alt="Screenshot 2026-09-18 at 11 19 25" src="https://github.com/user-attachments/assets/cc4f0137-e402-4486-8f5a-7af54ca8fd99" /> | In ESG/Configuration/Databases | Before | After | |--------|--------| | <img width="386" height="167" alt="Screenshot 2026-09-18 at 11 20 57" src="https://github.com/user-attachments/assets/acfe0958-95ae-4e80-903e-8590a1804a06" /> | <img width="390" height="180" alt="Screenshot 2026-09-18 at 11 21 00" src="https://github.com/user-attachments/assets/a2c33ec5-84e8-4119-8625-f8411a7b609a" /> | Forward-Port-Of: odoo/enterprise#132125
Asset depreciation models based on rates are now named by the time it takes to fully depreciate an asset, making them easier to understand. The change also fixes translated labels by removing an English-only plural ending that could break names in other languages.
Original PR description
This commit does 2 things: 1. Rate-based models were named after their rate, e.g. "2.78% per Month". Now they are named after the duration it takes to fully depreciate the asset. For example "2.78% per Month" now reads "36 Month". A helper function was added to handle the rounding of the method number. 2. Also the plural 's' that was appended to the duration was removed. It was added onto the end of the translated period label, so it produced broken names in every language other than English. task-6498452 Forward-Port-Of: odoo/enterprise#129366
This fixes an intermittent automated check that sometimes clicked the wrong navigation link before an accounting report had fully opened. The change makes the test wait for the report to load first, improving reliability of quality checks without changing user-facing behavior.
Original PR description
The issue appeared 1 every 3 run, the reason was because it didn't wait the report to be opened and clicked on the breadcrumb. So it clicked the breadcrumb of the return and not the one of the report. The fix is to add a step in between checking the report is loaded. Runbot error: https://runbot.odoo.com/odoo/error/944180 Forward-Port-Of: odoo/enterprise#130961 Forward-Port-Of: odoo/enterprise#130807
The Canadian Balance Sheet now displays correctly when using the horizontal split view. Assets are separated from equity and liabilities as intended, making the report easier to read and reducing confusion for Canadian accounting users.
Original PR description
The Canadian Balance Sheet "split horizontally" feature was broken during the refactor [1]. This commit - fixes the correct split between the Assets on the right and the Equity and Liabilities on the left, - remove the redundant split=right on child of aforementioned category. [1]: https://github.com/odoo/enterprise/pull/114127 task-none (DSH finding) **before** <img width="1903" height="861" alt="image" src="https://github.com/user-attachments/assets/58ee1ab8-5ca4-4d80-9567-5588d70b3f64" /> **after** <img width="1916" height="881" alt="image" src="https://github.com/user-attachments/assets/894358cd-d18a-4039-a468-65c7cabb20cf" /> Forward-Port-Of: odoo/enterprise#131933
This fixes an issue in Odoo Studio where removing an element could leave nearby text behind in the generated customization. Users now get cleaner, more accurate layout changes when editing views that mix text and elements.
Original PR description
Have an arch like ``` <div> <br /> TEXT <span /> </div> ``` Now remove the block `TEXT <span />` Before this commit, the resulting inheriting arch was just `<xpath expr="//span" position="replace" />` So the `TEXT` was not removed After this commit, the `TEXT` is removed along with the following span opw-6524957 Forward-Port-Of: odoo/enterprise#131812 Forward-Port-Of: odoo/enterprise#131717
Creating an appointment from the calendar now keeps the exact time slot selected by the user. This prevents bookings from being resized to the default appointment duration, improving scheduling accuracy.
Original PR description
When creating an event from the calendar view of an appointment type, the duration of the event was set to the duration of the appointment, therefore bypassing the slot we drew. This commit fixes this behavior by giving the priority to the end date of the drawed slot. Task-6412432 Forward-Port-Of: odoo/enterprise#130171
This fix ensures AI-generated pivot reports correctly understand grouped date or interval columns. It prevents report display issues by converting the AI response into the format expected by the reporting view.
Original PR description
The AI backend returns column groupbys as a list containing both strings and dictionaries with interval information. While this format is used to preserve the interval metadata, the pivot model expects `colGroupBys` to be a flat list of strings. This commit updates the view patch to flatten dictionary entries into their corresponding `<field>:<interval>` strings before assigning them to the pivot model metadata, ensuring the format matches the pivot model's expectations. task-6377810 Forward-Port-Of: odoo/enterprise#129515
The automated test for rental product availability now uses the same rental dates when comparing reserved stock with what appears on the product page. This prevents misleading test failures and helps keep online stock availability checks reliable.
Original PR description
`test_website_availability_while_continuing_selling` ensures the display of units left on product page is coherent with the stock available. For this, the test creates a rental order with default dates based on now. This fix ensures the same dates are used on the product page so that we compute the quantity left on the same dates. Failing since PR: https://github.com/odoo/enterprise/pull/106988 runbot-241108 Forward-Port-Of: odoo/enterprise#131763
This fix prevents Belgian salary contract setup data from being accidentally removed when optional linked fields are deleted. It also moves a holiday-related record to the correct Belgian salary contract module, helping payroll and salary package data load reliably.
Original PR description
res_field_id was set as ondelete='cascade', deleting record and causing the error "Cannot update missing record". res_field_id being optional, it also did not make sense to have it ondelete="cascade". For the same reason, cost_res_field_id was also corrected. double_holiday record not required in data for l10n_be_hr_payroll but required in l10n_be_hr_contract_salary. task-6254030
This fixes a Belgian payroll rule so the employer contribution uses the correct contribution code. It helps ensure payroll calculations and related reporting are accurate for affected employees.
Original PR description
Small modification referenced in the task. task-6526911
This update improves text readability in Barcode and Master Production Schedule screens by using a lighter background style in affected areas. Users should find labels and information easier to read, reducing visual strain during daily operations.
Original PR description
Before this PR: ================ In several places, text is difficult to read due to the `bg-secondary` class used for styling. <img width="350" height="200" alt="image"…
Before this PR: ================ In several places, text is difficult to read due to the `bg-secondary` class used for styling. <img width="350" height="200" alt="image" src="https://github.com/user-attachments/assets/5d24038e-a63c-457a-a457-91bc75dc615b" /> <img width="350" height="200" alt="image" src="https://github.com/user-attachments/assets/30e78d9d-af1b-4281-bf52-57292ac9dd9f" /> <img width="350" height="200" alt="image" src="https://github.com/user-attachments/assets/45501029-2810-4907-82d0-6356c690e3db" /> After this PR: =============== Replace the `bg-secondary` class with `bg-300` in the affected places, providing better contrast between the text and its background and improving readability across the Barcode and MPS views. <img width="350" height="200" alt="image" src="https://github.com/user-attachments/assets/dc9e242b-1f60-42d3-8e58-b8a4f2b6fc2f" /> <img width="350" height="200" alt="image" src="https://github.com/user-attachments/assets/d8c8ffa0-51b5-4b72-b092-e21b9dd56088" /> <img width="350" height="200" alt="image" src="https://github.com/user-attachments/assets/c3dbfebb-b348-4dee-8933-76acef8e1636" /> Community PR:- odoo/odoo#288498 Forward-Port-Of: odoo/enterprise#131741
This fixes Turkish Nilvera e-invoices so foreign-currency amounts written in words use fully Turkish currency subunit labels. It prevents mixed-language invoice notes, helping keep e-invoices compliant and clearer for customers.
Original PR description
### Issue before this commit: When generating a Nilvera e-invoice in a foreign currency (e.g., EUR), the amount written in words inside the <cbc:Note> tag contained a mix of languages. While the…
### Issue before this commit: When generating a Nilvera e-invoice in a foreign currency (e.g., EUR), the amount written in words inside the <cbc:Note> tag contained a mix of languages. While the numbers were correctly translated to Turkish, the currency subunit label was fetched using the customer's language. This resulted in a partially translated string (like "... SIFIR CENTS") instead of the expected fully Turkish text (like "... SIFIR SENT"). ### Steps to reproduce the issue: 1. Download Accounting and l10n_tr_nilvera_einvoice 2. Create an API KEY: https://docs.google.com/document/d/1EUzvTBnSm9-VwIfBsX299MHGXIVys-uijnsJ1fpz7vI/edit?tab=t.0#heading=h.e6i8a29lff5t 3. Go to a turkish client on the Accounting tab and click on 'Verify' for the Nilvera status 4. Go to currencies and activate EUR (be sure there is also the translation for currency subunit) 5. Go to invoices, create one for the Turkish customer you already verified setting the currency as EUR and send it with Nilvera 6. See that current output is <cbc:Note>YALNIZ : BEŞYÜZDÖRT EUR SIFIR CENTS</cbc:Note> (Turkish numbers with English subunit) but the expected output is <cbc:Note>YALNIZ : BEŞYÜZDÖRT EUR SIFIR SENT</cbc:Note> (Fully Turkish text) ### Cause of the issue: The issue occurs because the currency_subunit_label field is not translated but fetched using the language of the customer in the invoice. ### Reason to introduce the fix: To ensure that the amount in words inside the <cbc:Note> tag is completely formatted in Turkish, complying with Nilvera and local e-invoicing requirements, regardless of the customer language. opw-6523794 Forward-Port-Of: odoo/enterprise#131873
When an employee's working schedule is changed, the related leave allocation message now shows the correct contract name and explains what changed. This makes payroll and HR records easier to understand and audit.
Original PR description
When modifying an employee's working schedule via the wizard, the logged chatter message on the leave allocation incorrectly evaluated the contract name to "False" and lacked details on the changes made. This PR fixes the problem by calculating and logging the necessary details regarding the changes. Forward-Port-Of: odoo/enterprise#131956
Belgian employee departures marked as fixed term now automatically update the related contract version to reflect that status. This keeps HR records accurate and ensures the change is visible in the employee history for easier follow-up.
Original PR description
Set the `fixed_term` boolean field to True on the employee contract version whenever a Belgian departure with the 'Fixed Term' reason is processed. Changes are properly tracked in the employee's chatter. To test: 1. Create a Belgian employee with a contract start and end date. 2. Click on 'End of Collaboration'. 3. Select 'Fixed Term' as the end reason and confirm. 4. Check the employee chatter to verify that 'Fixed Term' is set to True (No -> Yes). Task: 6528392
The Indian asset demo data now includes the required model information for asset variants. This prevents installation from being blocked when demo data is loaded, improving reliability for setup and testing.
Original PR description
Asset variants require a model, which was missing from the demo data and blocking installation. This fix updates the demo data and renames the methods to preserve the correct order of execution. task-6580608 ref - https://github.com/odoo/enterprise/commit/3f59a1c4c1c84d5864f68f394589cd46b305f208 Forward-Port-Of: odoo/enterprise#131950