Daily updates from Odoo
Thursday, October 2, 2025
38 changes · saas-18.4
Enhancements to existing features
Approved leave requests that use a work leave type will no longer automatically generate timesheet entries. This prevents inaccurate time tracking and keeps project timesheets aligned with actual recorded work.
Original PR description
When a leave using a work leave type is approved, now it should not create a timesheet. task-5097482 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#229632 Forward-Port-Of: odoo/odoo#229300
Resolved issues and error corrections
The recruitment talent record’s open applications button now shows the same set of related applications as the displayed application count. This prevents users from seeing a mismatch between the number shown and the applications opened, making candidate follow-up more reliable.
Original PR description
`_get_similar_applicants_domain` used in `action_open_applications` did not return the same domain used in `_compute_application_count`. Fixed by complementing the domain within `_get_similar_applicants_domain` used in the action to include applications with the same associated `pool_applicant_id` as the current applicant/talent. Task-5092128
This fix prevents an error from appearing when users edit the refusal email for a job applicant. The unavailable option to save that edited message as a template is hidden in this version, allowing the refusal process to continue smoothly.
Original PR description
Steps to reproduce: - open any applicant in recruitment app - click on refuse button - enable send email toggle key - edit the message - try to save the template Issue: - traceback pop ups and not able to save the template Reason: - The method 'open_template_creation_wizard' is missing, causing the error when trying to save the template. This method was not implemented. Solution: - Remove the 'save the template' feature for this version by adding the context. It require two fields which are not present in the current model, thus avoiding the error. task-4948736
The employee payroll form once again shows the Patrena code field needed for Belgian payroll processing. Related payroll provider codes for UCM and SD Worx were also rearranged so they appear more clearly, two per row, making the form easier to use.
Original PR description
Restored the Patrena code field and arranges the other related codes (UCM & SD Worx) so that they are displayed two per row. task-5052003
Fixes the Belgian payroll working schedule change flow so users are taken back to the employee form with the new version selected after validation. This avoids landing on an outdated version list and makes it easier for HR users to continue their work in the right place.
Original PR description
…dule change The working schedule change wizard was redirecting to a list of version when validating. This was the old behavior with the contract. Instead, redirect to the employee form view with the new version selected. task-5126204
Attendance officers who are not HR officers can now create, edit, and delete attendance records for employees they manage without running into access errors. This helps delegated attendance management work as intended while keeping the permission expansion limited to the necessary attendance flow.
Original PR description
…rs to create attendances Because creating attendance records requires access to the `version_ids` field on the employee and subsequently `hr.version` records, which require `hr.group_hr_user` group on the user. This change runs said flow in sudo mode only if the user has `hr_attendance.group_hr_attendance_officer` or it's implying groups. task-5071058 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Users can now open Time Off from an employee profile without encountering a Missing Record error. This ensures the Time Off page uses the correct employee context, improving reliability for HR self-service workflows.
Original PR description
**Steps to reproduce (without demo data):** - Install hr_holidays - Go to "My Profile" - Open "Time Off" **Issue:** Accessing Time Off from a user profile triggers a `Missing Record` error. **Cause:** The system was passing the user’s active_id to the employee record incorrectly. **Fix:** Now, when the context's active_model is 'hr.employee', the correct active_id is applied. **Commit issue:**https://github.com/odoo/odoo/pull/225839 Forward-Port-Of: odoo/odoo#229497
This fixes the favorite star in spreadsheet dashboards so it immediately shows the correct selected or unselected state after a tap on mobile devices. The change removes confusing visual feedback and makes the mobile experience consistent with the rest of Odoo.
Original PR description
The star icon on mobile would have a strange behaviour. After clicking it, the star would not change between filler/not filled until clicking elsewhere. It turns out that on mobile, after a click the hover rule is applied. And our hover rule would modify the icon to be the opposite of what it should be. This commit changes the CSS to use the same css as `BooleanFavoriteField` to stay consistent with the rest of Odoo. Task: [5092945](https://www.odoo.com/odoo/2328/tasks/5092945) Description of the issue/feature this PR addresses: Current behavior before PR: Desired behavior after PR is merged: --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#227663
The Fleet app’s vehicle kanban view now opens the contracts button correctly. This helps users access vehicle contract information from the dashboard without confusion or extra navigation.
Original PR description
Fix contracts button in vehicle kanban Task-5109335 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#228341
Recurring subscription billing now skips subscriptions linked to archived companies. This prevents customers from being invoiced for companies that are no longer active, reducing billing errors and follow-up corrections.
Original PR description
## Issue: When a company with active subscriptions is archived, the recurring invoicing cron still processes these subscriptions. Subscriptions for archived companies must not be invoiced. ## Steps to reproduce: 1. Create a company A. 2. Create a subscription for company A with next invoice date <= today. 3. Archive the company. 4. Run the scheduled action "Sale Subscription: generate recurring invoices and payments". 5. Unarchive the company and check the subscription. It should not have been invoiced. (Adjust the user's Allowed Companies if needed to access it.) backport-of: a93e7ec opw-4904325 Forward-Port-Of: odoo/enterprise#95408
This fix ensures that updating followers across multiple records correctly handles removals without losing pending changes. It prevents inconsistent subscription results when several items are updated at once, improving reliability for Mail-related workflows.
Original PR description
When updating `message_partner_ids` on a batch of records, the previous implementation of the inverse method could lead to incorrect results if the new value implied unsubscription. The `message_unsubscribe()` method, called inside the loop over the records, unlinks `mail.followers`. This `unlink` operation invalidates all the fields cache. As a result, when processing the next record in the batch, its cached fields (the new value of `message_follower_ids`) were erased, causing the logic to fail. This commit fixes the issue by postponing all unsubscription operations. opw-5050023 Forward-Port-Of: odoo/odoo#227499
This fixes the XML field name used for dates in linked invoice data for Italian electronic invoices. The correction helps prevent valid invoices with customer references from being rejected by Italy's SdI validation system.
Original PR description
The name for the date in DatiFattureCollegate (56e08bb091d39a18ea1c8e7699321b953a8823e1) is wrong. It is not DataDocumento but Data as per https://fex-app.com/FatturaElettronica/FatturaElettronicaBody/DatiGenerali/DatiFattureCollegate/Data/18
How to reproduce the issue:
- With l10n_it, create an invoice and fill the customer reference field.
- Generate the xml and validate through https://fex-app.com/servizi/verifica
- The following error related to the date happens: E-invoicing (Italy) La fattura elettronica è stata rifiutata dall'SdI. File non conforme al formato : Invalid content was found starting with element 'DataDocumento'. One of '{Data, NumItem, CodiceCommessaConvenzione, CodiceCUP, CodiceCIG}' is expected. riga: 80 - colonna: 24
opw-5082016
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#229120
Forward-Port-Of: odoo/odoo#227260This update prevents Spanish tax report setup and automated checks from failing when date information is not yet available. The report logic now handles incomplete data safely while keeping the usual validation in place when dates are provided.
Original PR description
The `_get_mod_period_and_year` method assumed that `options['date']` would always be present with `date_from` and `date_to`. However, during the automatic `TestEveryModel.test_computed_fields_without_dependencies`, this method is called on a `new()` record where no options are provided. This resulted in a `KeyError: 'date'`. We now gracefully handle missing or incomplete `options` by returning `(None, None)` instead of raising an exception. This ensures that tests and new records can be created without errors, while preserving the original validation logic when valid options are given. build_error-231511 Forward-Port-Of: odoo/enterprise#94154
This fix ensures UAE invoice PDFs display correctly when invoice lines have no taxes. It prevents column misalignment, making printed invoices clearer and more professional for customers.
Original PR description
**Steps to reproduce:** 1- Install UAE localization (l10n_ae). 2- Create an invoice without adding any taxes in the invoice lines. 3- Print the invoice → column alignment is broken. **Issue:** In UAE…
**Steps to reproduce:** 1- Install UAE localization (l10n_ae). 2- Create an invoice without adding any taxes in the invoice lines. 3- Print the invoice → column alignment is broken. **Issue:** In UAE localization, the invoice report shows misaligned columns when the tax field is empty. **Cause:** Since Odoo 18.4, the core report logic hides the tax column when no taxes are applied. However, l10n_ae does not handle this scenario properly while replacing columns, which results in broken alignment. **Solution:** Added a condition in l10n_ae to correctly handle the case when the tax field is empty, ensuring column alignment is maintained in the invoice report. **Before Fix:** <img width="777" height="326" alt="image" src="https://github.com/user-attachments/assets/1416c03a-9da5-45fe-8ade-2a9037f70812" /> **After Fix:** <img width="767" height="341" alt="image" src="https://github.com/user-attachments/assets/9d418945-45e2-409e-b00e-b4f8272ea013" /> opw-4965240 I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Fixed an issue where Turkish localization General Ledger CSV exports could be generated blank after a prior report change. The export now correctly includes the expected ledger entries, helping users retrieve accurate accounting data.
Original PR description
## Before this commit: After the refactor of the General Ledger in the referenced commit, `l10n_tr_reports` no longer able to fetch the `aml_ids`. This caused the CSV export of the General Ledger to be generated as blank. Ref commit: https://github.com/odoo/enterprise/commit/235a5160d13296328b79e4092a8b88a733628268 ## After this commit: Ensured that `aml_ids` are properly retrieved, so that the General Ledger CSV export contains the expected data.
Shop Floor now shows by-products in the right manufacturing card context and avoids irrelevant location details. Operators also get clearer quantity information and can create tracked by-product quantities directly, reducing confusion during production recording.
Original PR description
Shop Floor by-products fixes: - show by-products not linked to a workorder only on mo card - do not show locations for by-products - always show quantity done / to consume quantity - clicking (+) on tracked by-products now opens the create quant dialog rather than the quants list view task: 4781451 Forward-Port-Of: odoo/enterprise#91341
Fixes an issue where the background color picker closed unexpectedly when previewing colors for table cells. This makes editing table cell colors smoother and avoids interrupting users while formatting content.
Original PR description
Problem: When applying a background color to a `td`, the color picker dismisses unexpectedly. Cause: After c810b0c17b2f882b0ab5d073ba38464bffb0617e, we rely on the class `o_selected_td` to check if…
Problem: When applying a background color to a `td`, the color picker dismisses unexpectedly. Cause: After c810b0c17b2f882b0ab5d073ba38464bffb0617e, we rely on the class `o_selected_td` to check if we are in a selected `td` to keep the toolbar open. However, in another fix (254efd86cd1ce871807fdc25479ebc5beeb4eab3), we removed that class during the color preview operation. Previewing a color on a `td` triggers a selection change, which runs `shouldBeVisible`. Since `o_selected_td` is not found, the toolbar closes along with the color picker. Solution: Update https://github.com/odoo-dev/odoo/commit/254efd86cd1ce871807fdc25479ebc5beeb4eab3. A better fix is to use `o_selected_td_bg_color_preview` which will undo the `box-shadow` when we preview a color. Steps to reproduce: 1. Add a table. 2. Select a cell. 3. Apply a background color. 4. Select the cell again. 5. Hover a color to preview. → The color picker dismisses once a color is hovered. opw-5066309 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#225827
This fix allows users to delete an employee version from the versions list without seeing an incorrect warning that the record no longer exists. It improves reliability for HR teams managing employee history and keeps the employee version workflow from being blocked.
Original PR description
Issue/Current Behavior: It is not possible to delete a version of an employee. Steps to Reproduce: 1. Create an employee. 2. Create a new version of the employee. 3. Click on the smart button of versions and delete a record from the list view. 4. It gives warning that the record doesn't exist or might be deleted. Solution: Fixed the issue by checking that the context version exists or else the empty recordset. task - 5002995 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Uploaded file fields added to Field Service worksheet templates now appear correctly in the customer signing portal. This ensures customers can review all worksheet information before signing reports, reducing confusion and incomplete approvals.
Original PR description
Steps to reproduce: ------- - Install industry_fsm_report module - Open FSM app - Select worksheets from settings in the configuration - Go to worksheet templates in the configuration - Create a worksheet template - Click the design template button. You arrive in the studio - Add file field and close it - Create a new task and select a newly created template in the worksheet template - Click the worksheet button in the control panel - Upload a file and save it - Click on the sign report button - Here file field is not visible Issue: ------- The file field is not visible in the worksheet portal. Cause: ------ The view of the file field is not created for the worksheet portal. Solution: ------- Created the view of the file field to display in the worksheet portal. task-3691529 Forward-Port-Of: odoo/enterprise#95754 Forward-Port-Of: odoo/enterprise#56035
This update prevents subscription invoice sections for combo products from being overwritten with incorrect values. It helps ensure invoices keep the right section information and avoids adding unnecessary section details.
Original PR description
This commit improve fix of PR https://github.com/odoo/enterprise/pull/90989 to avoid overriding right combo section values and avoid setting unnecessary values on the section. opw-5069278 Forward-Port-Of: odoo/enterprise#95831 Forward-Port-Of: odoo/enterprise#94776
When warehouse users split a reserved package in the Barcode app, the new split line now keeps the original source package instead of losing it. This helps ensure partial deliveries and package transfers remain accurate and traceable.
Original PR description
### Before this PR: - Put a package in WH/Stock with quantity 100 - Create delivery for partial quantity for example 50 - Go to app barcode - Try to split the package into two different packages scanning another destination Package - The splitted line will be created with empty package instead of the package already reserved before ### After this PR: Scanning another destination package , the new line created splitting the old one will have the package_id Forward-Port-Of: odoo/enterprise#95779 Forward-Port-Of: odoo/enterprise#81170
This fixes an automated accounting test so the account merge wizard waits for the final action before closing. It helps prevent false test failures and keeps release validation more stable, with no expected change for end users.
Original PR description
The last check of the tour is always true. So it sometimes closes too early. Wait really for the last operation for the last check runbot-error-108440 Forward-Port-Of: odoo/enterprise#95991
This fix avoids rounding too early during inventory value revaluation, which could cause small calculation differences to build up into incorrect negative values. Businesses get more reliable stock valuation figures and fewer accounting inconsistencies during revaluation.
Original PR description
Before this commit, the remaining_value_unit_cost was rounded before any computation. In the case where the numer of layers with remaining value and remaining quantity increase, the rounding error introduced by that rounding quickly explodes, leading to a negative remaining_value during revaluation computation. After this commit, the remaining value is rounded at the end, after the computations and the checks. This ensures that the rounding error remains constant and does not accumulate over the execution of the method. opw-4901966 Forward-Port-Of: odoo/odoo#228767 Forward-Port-Of: odoo/odoo#222690
Fixes several issues that could make Knowledge comments disappear, fail to load when switching locked articles, or crash in code blocks. Users should see comment markers consistently after saving, reloading, and moving between read-only articles.
Original PR description
### Issue 1: Summary: When a user adds a comment inside a baseContainer element, the comment beacons created during the comment insertion can be discarded during the document normalization step. How…
### Issue 1: Summary: When a user adds a comment inside a baseContainer element, the comment beacons created during the comment insertion can be discarded during the document normalization step. How to reproduce: - Open an article in Knowledge. - Select text and change the block style from "Paragraph" to "Normal" using the powerbox. - Add a comment on the selected text using the powerbox. - Write a message in the comment thread. - Save and reload the article. Issue: - The comment beacons disappears from the editor and the user can't see it anymore. Resolution: When the editor is initialized, `div` are not yet categorized as paragraph related elements. The `comments_plugin` logic to identify valid positions for comments beacons should take that into account and allow elements which are candidates to be a paragraph related element. ### Issue 2: Summary: There was an issue where comments were not displayed when switching from a locked article to another (read-only). How to reproduce: - Create two articles and add a comment on each. - Lock both articles (so that they are effectively read-only). - Switch from one article to the other. Issue: - Comments are not displayed to the user. Resolution: When switching between read-only articles, `KnowledgeHtmlViewer` is not fully reloaded and continues using the same `CommentBeaconManager` instance for the newly opened article. As a result, comment beacons are not displayed when switching article. The simplest solution to this issue is to re-instantiate a new `CommentBeaconManager` whenever the HTML value changes to ensure comments are correctly displayed. ### Issue 3: There is an issue in the logic of `computeVerticalDimensions` to display comments. If the `top` value of a thread in the article is `0`, it will be filtered out and not displayed because `top` was used as a boolean value. Instead, it should properly consider `top` as a finite number to display the comment or not. Note: This issue is not easily reproducible because there are few configuration where a comment would have a top value equal to 0. ### Issue 4: There is a crash when inserting a knowledge comment in a `/code` block: In this previous [task], insertion in `pre` elements was filtered to prevent non-phrasing content from being inserted (as it is invalid per the html specification). To prevent a crash, knowledge comments will be disabled in `<pre>` elements, as they rely on `anchor` elements for the comment position in the article body. [task]: 216e9eb task-4984152 Forward-Port-Of: odoo/enterprise#95952 Forward-Port-Of: odoo/enterprise#91408
This update adjusts internal automated tests so they no longer depend on demo or default user settings being present. It helps keep support, timesheet, payroll, and localization checks stable across environments without changing customer-facing features.
Original PR description
The community counter part makes the tests independent from `env['res.users']._default_groups()`. `helpdesk.group_helpdesk_manager` is the only group that is given to `base.default_user_group` in the master data (is that normal?), so we need to give it explicitly in the tests since we don't rely on the default user groups anymore in tests Forward-Port-Of: odoo/enterprise#92410
This fixes missing Swiss payroll menu entries for individual accounts and monthly reporting. Payroll teams can once again access these reports directly, supporting regular payroll review and compliance work.
Original PR description
… menuitems
The checkout now prevents customers from combining one-time purchases and subscription products in the same cart. This avoids confusion where a one-time item could appear to be part of a recurring subscription, helping customers better understand what they are buying.
Original PR description
**Version:** - saas-18.4 **Steps to reproduce:** - Create a one-time product. - Add the one-time product to the cart. - Add a subscription (recurring) product. - The one-time product is incorrectly shown as a subscription. **Issue:** - When a customer adds a one-time product to the cart and then adds a subscription product, the one-time product incorrectly gets treated as a subscription. **Solution:** - If the cart already contains a one-time product, the system will show a warning and block adding subscription products (and vice versa). **Impact:** - Customers can clearly understand whether they are buying a one-time product or a recurring subscription, without mixing them by mistake. Task-5046146
This fix makes internal automated tests behave consistently whether or not demo data is installed. It reduces false test failures and helps keep releases stable without changing day-to-day user functionality.
Original PR description
The tests should not be impacted by the demo data however it is currently the case. Indeed, a lot of groups are added to the default group user when installing the demo data. Instead, we only take the user group like it is the case when no demo is installed. Forward-Port-Of: odoo/odoo#223039
Live chat agents who are viewing a conversation without being added as participants can now translate messages when they are internal users. This removes an unnecessary limitation and helps agents understand and support customers more effectively during live chat monitoring.
Original PR description
Before this commit, when an agent that is not member of livechat but is peeking the conversation, the agent could not translate the message. This happens because the translation feature is limited to internal users, but this was determined based on the self member relational field. This works when the agent is a member but when not a member this was arbitrarily disabling the feature. This commit fixes the issue by looking at whether the user is internal or not, based on self persona independently on whether the agent is member or not of the conversation. Task-5111383 Forward-Port-Of: odoo/odoo#229035 Forward-Port-Of: odoo/odoo#228449
Fixes an issue that could cause the website product generator to crash when importing multiple images for a single product variant. This helps teams upload product imagery more reliably without interrupting catalog setup.
Original PR description
Fixed a typo that leads to a crash when importing multiple images for a product variant
Agents who preview WhatsApp conversations without being members can now translate messages when they are internal users. This removes an unnecessary limitation and helps support teams understand customer messages while monitoring conversations.
Original PR description
Before this commit, when an agent that is not member of whatsapp but is peeking the conversation, the agent could not translate the message. This happens because the translation feature is limited to internal users, but this was determined based on the self member relational field. This works when the agent is a member but when not a member this was arbitrarily disabling the feature. This commit fixes the issue by looking at whether the user is internal or not, based on self persona independently on whether the agent is member or not of the conversation. Task-5111383 Forward-Port-Of: odoo/enterprise#95767 Forward-Port-Of: odoo/enterprise#95474
Fixed an issue where the self-ordering kiosk could show a blank screen when a point of sale was limited to a parent category with products only in its child categories. The kiosk now selects an available child category so customers can continue ordering normally.
Original PR description
Problem: When the available categories for a point of sale contain one parent category and its child categories and the parent category itself does not have any products, the code filters out the top…
Problem: When the available categories for a point of sale contain one parent category and its child categories and the parent category itself does not have any products, the code filters out the top categories as those that have no parent category. If, in such a case, no products belong to the parent category itself, the selected category is undefined which leads to a blank white screen and the javascript error visible on the console. Purpose: If there are no top categories, the screen should ideally load the current category computed before. This fix leads to the one of the child categories being the selected category and the kiosk screen loads properly Steps to Reproduce on Runbot: 1. Create a point of sale. Go to Settings, choose no presets and “Kiosk” in the self-ordering option. 2. Create a parent POS category and two child POS categories. 3. Ensure there are products belonging to the two child categories and none to the parent category 4. Open settings for the POS and choose only these three categories in the “Restrict Categories” section. 5. Go to the point of sale and open the kiosk. Click on “Order Now”. The white screen appears and the js traceback error is visible on the console opw-5058245 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#228651
This fixes an issue in the website editor where deleting text in a pricelist snippet could merge the description into the price. Pricelist blocks now stay properly separated, helping website editors avoid accidental layout or content errors.
Original PR description
**[FIX] website: keep pricelist blocks intact** Build the unsplittable selector from the three pricelist snippet base classes so that the HTML editor no longer splits or merges their item, price, or description elements when users delete content with Backspace. Steps to reproduce: - Drag and drop a pricelist snippet (e.g., Pricelist Cafe). - Place the cursor before the first letter of one of the descriptions. - Press Backspace. - Bug: the description content is merged with the price. task-5117864
This fix makes several HTML Builder option controls display more consistently, including font, shadow, visibility, and background image settings. Users should see sharper lines, steadier picker heights, and better-aligned controls when editing pages, reducing visual glitches in the editor.
Original PR description
This PR fixes several options-related issues in the HTML Builder: 1. Improved the vertical sublevel line, which appeared blurry due to the transform property and an incorrect height. You can see the…
This PR fixes several options-related issues in the HTML Builder: 1. Improved the vertical sublevel line, which appeared blurry due to the transform property and an incorrect height. You can see the problem by "zooming out" multiple times. 2. Harmonized the padding of the visibility layout options and the background image position to align with the other pickers. 3. Fixed the height of the font-family picker: when you select a font-family, the height of the picker may change according to your selection (that's the case with Roboto for example - It's more "apparent" in the case of headings when it's next to the delete button as shown in the screenshot.) 4. Fixed the height of the “None” shadow option => these 2 issues where caused by the font metrics. task-4985348 1 & 2 <img width="423" height="500" alt="image (1)" src="https://github.com/user-attachments/assets/a9304b67-607a-424a-94de-dd3dacece84f" /> 3 <img width="1037" height="293" alt="Screenshot 2025-10-02 at 13 14 37" src="https://github.com/user-attachments/assets/d5982d34-2987-49d9-95cf-c78294521995" /> 4 <img width="1542" height="231" alt="image" src="https://github.com/user-attachments/assets/13cbfa8f-dd72-41dc-82f2-c371f6ff2d77" /> --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Published product tags now show in the eCommerce sidebar as soon as the product is published, even when its variants are created later. This helps shoppers find products by tag without waiting for a variant to be generated.
Original PR description
Versions -------- - 17.0+ Steps ----- 1. Have an attribute which creates variants dynamically; 2. create a product with two or more dynamic attribute values; 3. add a new tag to the product; 4. publish the product to eCommerce. Issue ----- The tag doesn't show up in the side-bar until after a product variant has been created. Cause ----- The tags are searched based on `product_ids` instead of `product_template_ids`, leading to tags assigned to dynamically created product variants not showing up until a variant has been created. Solution -------- Search tags based on `product_template_ids.is_published` as well as `product_ids.is_published` (in case of `addition_product_tag_ids`). opw-4985989 Forward-Port-Of: odoo/odoo#229631 Forward-Port-Of: odoo/odoo#228544
This fixes an issue where clicking an image gallery on website pages could show a "missing template" error. The gallery templates are now loaded from the active version, so visitors can view gallery images normally.
Original PR description
Clicking on an image gallery snippet currently triggers a "missing template" error. This happens because the gallery template is only defined in the 000 version file, while the corresponding view record for that version has been disabled. This commit resolves the issue by moving the gallery templates to the 001 version file, ensuring they are properly loaded. Steps to reproduce: 1. In Website, navigate to /jobs. 2. Create a new job and save it. 3. Click on any image at the end of the job page. 4. Observe the "missing template" error. Forward-Port-Of: odoo/odoo#226333
This fix prevents website-specific payment provider settings from being copied to a newly created unrelated company when that would cause a company mismatch. It helps avoid confusing company consistency errors during multi-company setup while preserving the website link when the new provider belongs to the same company group.
Original PR description
Versions -------- - saas-18.4+ Steps ----- 1. Specify a website for a payment provider; 2. create a new (non-branch) company. Issue ----- > Uh-oh! You’ve got some company inconsistencies here Cause ----- As of commit 0d3228e10d04a, payment providers get automatically duplicated when creating a new company. This leads to company inconsistencies when the provider has a website specified, as the website's company doesn't match copied provider's company. Solution -------- Disable automatic copying of the `website_id` field, and instead, handle it manually in the `copy` override, assigning the `website_id` field iff the new provider belongs to the same company or a branch company. opw-5119731
This fix prevents completed signing requests from being deleted after they have been signed. It helps preserve signed document records and reduces the risk of losing important agreement history.
Original PR description
backport of https://github.com/odoo/enterprise/commit/b2d32811877cdf1649095435ce16274ae96421f3 opw-5111568 Forward-Port-Of: odoo/enterprise#96081 Forward-Port-Of: odoo/enterprise#95922