Thursday, September 11, 2025
39 changes · saas-18.4
Resolved issues and error corrections
Website editor popovers such as color pickers and link styling controls now stay correctly positioned when users scroll inside the page editor. This prevents editing controls from drifting away from the selected content, making page design tasks smoother and less confusing.
Original PR description
__Current behavior before commit:__ Some popovers that are toggled from the toolbar are not repositioned when the user scrolls in the website iframe. __Description of the fix:__ `this.__owl__.childEnv` is passed as `env` to `usePopover` such that the `POSITION_BUS` entry is included. Child env is used to avoid polluting the env of the parent component. __Steps to reproduce the issue on runbot:__ 1. Open the Website builder 2. Select some text 3. Click on the *Background Color* item (or *Highlight* or *Link* > *Custom* > *Text Color*) 4. Scroll the page The color picker popover doesn't follow the page scrolling.
The blog sidebar once again includes a dedicated RSS button, making it easier for visitors to subscribe to blog updates. The button is now separate from general social media links, which keeps blog subscriptions clearer and avoids mixing them with website-wide social channels.
Original PR description
Commit [1] changed the "follow us" social media snippet in the blog sidebar to not be dynamic anymore (meaning, it uses the website related social media by default but they are not added/removed automatically based on if they are set or not)... but doing so it removed the custom "RSS" button by mistake. This commit restores it, placing it at the top right of the sidebar, instead of being a part of the "follow us" social media. This keeps everything as static as possible + it actually makes sense to have this dedicated button outside of the more general "follow us" which is more website related than blog related. [1]: https://github.com/odoo/odoo/commit/8b7e44c8c6a7b5c267da39f438e0dfc20699befd
This fix prevents protected links in the HTML editor, such as locked website builder links, from being removed through image deletion, toolbar unlink actions, or mixed editable/non-editable content. It helps preserve important page structure and avoids broken toolbar rendering after editing.
Original PR description
### [FIX] html_editor: prevent removal of unremovable links with images The override that remove a link on `deleteImage` command did not check if the link was unremovable before removing it. ###…
### [FIX] html_editor: prevent removal of unremovable links with images The override that remove a link on `deleteImage` command did not check if the link was unremovable before removing it. ### [FIX] html_editor: prevent removal of links in contenteditable=false If a link was `contenteditable=true`, but inside a `contenteditable=false`, it could be removed ### [FIX] html_editor: prevent removal of unremovable links in batch removal If the selection covers several links, the "unlink" of the toolbar removes all the links selected. This included the links which were supposed to be unremovable. The procedure for removing the links is changed to avoid removing the unremovable nodes. The availability of the tool in the toolbar is also changed to better reflect whether there is links to remove. In case of unremovable links, the tool is shown as disabled Steps to reproduce: - Open website builder - In the toolbar, insert links just before and after the "Contact Us" - Select from the link inserted before, to the one after - In the toolbar, click "Remove Link" - Bug: the link on "Contact Us" is gone, but it was "unremovable" (Saving after these steps currently breaks the toolbar's rendering)
The online shop wishlist now works even when the website header is disabled, preventing shoppers from encountering a crash. Wishlist indicators are also updated consistently across desktop and mobile views, improving the shopping experience.
Original PR description
__Current behavior before commit:__ It is possible to hide the header on the website. If it is hidden, the `_updateWishlistView` method will not find `.my_wish_quantity` in the page; leading to a crash. Furthermore, the current implementation only updates the first wishlist button. However there is a second one in the DOM for the mobile view. __Description of the fix:__ Looping through all the wishlist buttons on the page just like it is done in [master]. __Steps to reproduce the issue on runbot:__ 1. Open the mobile preview on the website 2. Go to `/shop` and add an item to the wishlist => The wishlist button is not updated 1. Open the website builder 2. In the Theme tab, disable *Advanced > Show Header* 3. Go to `/shop` => Crash [master]: https://github.com/odoo/odoo/blob/d65163ea740d8d65/addons/website_sale_wishlist/static/src/js/website_sale_wishlist_utils.js#L57-L60 Bug introduced in: https://github.com/odoo/odoo/pull/212584 opw-4959473
Users with invoicing permissions can now update perception and withholding settings on partner records in the Argentine withholding module. This helps invoice creators apply the correct tax treatment without needing full Accounting administrator access.
Original PR description
Description of the issue/feature this PR addresses: This pull request adds `l10n_ar.partner.tax_billing` on the `l10n_ar_partner_tax` model, granting read, write, and create permissions (but not…
Description of the issue/feature this PR addresses: This pull request adds `l10n_ar.partner.tax_billing` on the `l10n_ar_partner_tax` model, granting read, write, and create permissions (but not unlink) to users in the `account.group_account_invoice` group. Current behavior before PR: Only users with administrator access rights on the Accounting module could modify the "Perceptions / Withholdings" Section on the "Accounting" tab of the partners. <img width="1236" height="673" alt="image" src="https://github.com/user-attachments/assets/92b42973-2b01-4019-8e23-5e3cbf5111a4" /> Desired behavior after PR is merged: Users with invoicing rights can modify the Accounting module could modify the "Perceptions / Withholdings" Section on the "Accounting" tab of the partners. This is needed to properly create the invoices with the perceptions / withholding that apply, for example in cases where by default all partners are set with perceptions, but some depending on their activity are not taxed. In that case, the user that created the partner needs to be able to modify the field by putting a 0% aliquot or deleting the perception line on the contact. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#225180
Product images in the catalog now display without being stretched when they are not square. This keeps quotations and product browsing visually accurate and more professional for sales users.
Original PR description
Versions -------- - 18.0+ Steps ----- 1. Have products with non-square images available for sale; 2. open a quotation; 3. open the product catalog. Issue ----- The product images appear stretched. Cause ----- Commit e8836b42200e3 replaced the `div.kanban_image` element with a `field` element using the `image` widget. It maintained the same size limit of 55x55 via the widget's options, but without additional input, this causes the widget to stretch the images to fill the area. Solution -------- Add the `object-fit-contain` as `img_class` to the options. This class contains the image to the area instead of stretching it. opw-5007629 Forward-Port-Of: odoo/odoo#225112
Odoo now blocks pricelist rules that depend on each other in a circular way. This prevents online shop errors when customers select affected pricelists and helps keep pricing setup reliable.
Original PR description
Steps ----- 1. Create a selectable pricelist A; 2. create a selectable pricelist B; 3. add a rule to pricelist B which uses pricelist A; 4. add a rule to pricelist A which uses pricelist B; 5. go to /shop & select one of the pricelists. Issue ----- > 500: Internal Server Error > Error while render the template > RecursionError: maximum recursion depth exceeded in comparison Cause ----- The `_check_pricelist_recursion` constraint only checks if a pricelist item's `base_pricelist_id` is the same as the item's `pricelist_id`. It can therefore not detect if two or more pricelists have a mutually recursive dependence relationship. Solution -------- Use a depth-first search to ensure any dependent pricelist doesn't depend on a parent pricelist. opw-5070604
Website editors can now add a Floating Cards item and resize its title area without triggering an error. This prevents an editing interruption and makes the snippet behave reliably after adding new cards.
Original PR description
*: html_builder In the "Floating Cards" snippet, after adding a new card, when trying to resize its title column vertically, a traceback appears. It happens because this grid item does not have the `g-col-*` class, which is needed for the resize in grid mode to work. This commit adds this class. Steps to reproduce: - Drop a "Floating Cards" snippet. - Add a card. - Click on the new card title and resize the column vertically. => Traceback The issue was previously addressed in [1], but a refactor of the Floating Cards snippet in master introduced a duplicate template, and the fix was applied to the incorrect one. [1]: https://github.com/odoo/odoo/commit/78f6e70e0777f5b063524ead73ddaae93ba55f22
Customers can now add Stripe payment methods without encountering an internal server error during validation. The fix handles Stripe validation responses that do not include amount or currency details, improving reliability of saved payment method setup.
Original PR description
Versions -------- - saas-18.4+ Steps ----- 1. Configure Stripe; 2. go to `/my/payment_method`; 3. create a payment token. Issue ----- > Internal Server Error Cause ----- Commit 5db75d32d718a added a…
Versions
--------
- saas-18.4+
Steps
-----
1. Configure Stripe;
2. go to `/my/payment_method`;
3. create a payment token.
Issue
-----
> Internal Server Error
Cause
-----
Commit 5db75d32d718a added a method that compares notification data values to the transaction values. For most operations, the structure of Stripe notification data is similar, but for `SetupIntent` responses, these don't include an amount or currency value (unless the currency is supported by Indian eMandates, in which case it's part of a `mandate_options` dict)[^1].
The error is the result of `payment_data.get('currency').upper()`. Because there is no currency value, `upper` gets called on `None`.
Additionally, when the transaction amount is zero (as is expected for validation operations), the base `_compare_notification_data` method assumes the amount is missing, throwing a validation error.
[^1]: https://docs.stripe.com/api/setup_intents/confirm
Solution
--------
- Skip comparing notification data for validation transactions.
- If the `currency` value is in fact missing unexpectedly, fall back on the empty string, so that we get to the intended validation error.
opw-5008858The website builder now scrolls more smoothly in Chrome when using a laptop trackpad. This reduces distracting visual stutter in the editing panels, making page editing feel more polished and comfortable.
Original PR description
__Current behavior before commit:__ On Chrome, some elements of the builder, like the options headers, move at different times when scrolling with the trackpad creating unpleasant jank visual effect. __Description of the fix:__ Use `will-change: scroll-position;` to tell the browser to optimize the scroll rendering. __Steps to reproduce the issue on runbot:__ 1. Open the website builder in Chrome 2. Scroll with the laptop trackpad in the *Edit* or *Theme* tab
This fixes how separator lines appear in website price list and product catalog sections when users adjust border settings in the web editor. It helps keep published pages visually consistent when businesses customize these snippets.
Original PR description
Prior to this commit, the separators in the `s_product_catalog` and `s_pricelist_*` snippets didn't render correctly when changing the border values in the web editor. Steps to reproduce: - Open the…
Prior to this commit, the separators in the `s_product_catalog` and `s_pricelist_*` snippets didn't render correctly when changing the border values in the web editor. Steps to reproduce: - Open the Web Editor. - Drag and drop a price list snippet (`s_product_catalog`, `s_pricelist_cafe`, or `s_pricelist_boxed`). - Click on the snippet. - Set the border value to `0`. task-5081626 | Before | After | |--------|--------| | <img width="1914" height="646" alt="Capture d’écran 2025-09-11 à 09 30 11" src="https://github.com/user-attachments/assets/f7dc319f-e151-4fc4-9349-df70719aec9f" /> | <img width="1912" height="643" alt="Capture d’écran 2025-09-11 à 09 31 02" src="https://github.com/user-attachments/assets/dbbaacff-9f20-4ec4-9fec-f4cc3770952a" /> | | <img width="1915" height="646" alt="Capture d’écran 2025-09-11 à 09 30 52" src="https://github.com/user-attachments/assets/f138bd04-60cd-4238-9338-2fa5921d7715" /> | <img width="1911" height="647" alt="Capture d’écran 2025-09-11 à 09 31 37" src="https://github.com/user-attachments/assets/c38e486a-2b23-4685-83f1-de363c15c881" /> | --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fix makes automated checks for the Discuss command palette more reliable by waiting for the interface to settle before interactions are tested. It also corrects supporting test data so related messaging features can be validated consistently, reducing false failures in quality checks.
Original PR description
Before this commit, clicking on some elements of the command palette would not trigger the associated event, this was probably caused by clicking on outdated owl fragments which cannot trigger events while being destroyed. This commit fixes this issue by making sure that the interface is in a stable configuration before clicking. The commit also fixes the mock of `discuss/search` ( for https://github.com/odoo/enterprise/pull/94075 ) and a test that was incomplete and relied on the incorrect implementation https://runbot.odoo.com/odoo/runbot.build.error/112148 Forward-Port-Of: odoo/odoo#225951 Forward-Port-Of: odoo/odoo#225844
This update refreshes the spreadsheet component and fixes several issues affecting everyday spreadsheet use. Users should see cleaner Excel imports, fewer unnecessary warnings, better handling of array formulas, and improved menu text display.
Original PR description
### Contains the following commits: https://github.com/odoo/o-spreadsheet/commit/15a11a468 [REL] 18.4.10 [Task: 0](https://www.odoo.com/odoo/2328/tasks/0)…
### Contains the following commits: https://github.com/odoo/o-spreadsheet/commit/15a11a468 [REL] 18.4.10 [Task: 0](https://www.odoo.com/odoo/2328/tasks/0) https://github.com/odoo/o-spreadsheet/commit/8e9603c88 [FIX] package: saas-18.4 is no longer the latest version [](https://www.odoo.com/odoo/2328/tasks/) https://github.com/odoo/o-spreadsheet/commit/d021c7ff6 [FIX] Menu: Fix item text truncation [Task: 5072649](https://www.odoo.com/odoo/2328/tasks/5072649) https://github.com/odoo/o-spreadsheet/commit/424fb57e8 [FIX] xlsx: remove useless warnings on import [Task: 5075112](https://www.odoo.com/odoo/2328/tasks/5075112) https://github.com/odoo/o-spreadsheet/commit/c3bad9029 [FIX] clipboard: insert cells bugged with array formulas [Task: 4938311](https://www.odoo.com/odoo/2328/tasks/4938311) https://github.com/odoo/o-spreadsheet/commit/f4282501a [FIX] xlsx: `=undefined` when importing array formula [Task: 4812508](https://www.odoo.com/odoo/2328/tasks/4812508) https://github.com/odoo/o-spreadsheet/commit/eb13639d0 [REV] xlsx: make import verbose [Task: 0](https://www.odoo.com/odoo/2328/tasks/0) Co-authored-by: Anthony Hendrickx (anhe) <anhe@odoo.com> Co-authored-by: Alexis Lacroix (laa) <laa@odoo.com> Co-authored-by: Lucas Lefèvre (lul) <lul@odoo.com> Co-authored-by: Dhrutik Patel (dhrp) <dhrp@odoo.com> Co-authored-by: Adrien Minne (adrm) <adrm@odoo.com> Co-authored-by: Ronak Mukeshbhai Bharadiya <rmbh@odoo.com> Co-authored-by: Florian Damhaut (flda) <flda@odoo.com> Co-authored-by: Rémi Rahir (rar) <rar@odoo.com> Co-authored-by: Pierre Rousseau (pro) <pro@odoo.com> Co-authored-by: Vincent Schippefilt (vsc) <vsc@odoo.com>
Event registration screens now show the correct action button depending on seat availability and whether tickets are free. This prevents visitors from seeing a misleading sign-in option that could lead to an error or confusion during registration.
Original PR description
This commit fixes two bugs related to the "Sign in" in button of the registration form. First bug: ------------ If there is more ordered seats than available seats, an error modal is displayed with a…
This commit fixes two bugs related to the "Sign in" in button of the registration form. First bug: ------------ If there is more ordered seats than available seats, an error modal is displayed with a "Sign In" button. This button shouldn't be present. On click, a 500 error is triggered. Now, the button does not appeared on this modal. Reproduce: Check "Mandatory" for "Sign in/up at checkout" in the settings. In the event form, add a limit of 1 available seat and add two tickets with each one 1 seat. With a public user, on the website page of the event, click on "Register" to open the registration modal. In the tickets form, select the maximum number of registrations for each tickets. The error modal with the "Sign In" button should appear. Clicking on this button trigger the 500 error. Second bug: ---------------- The "Sign in" button is displayed even if the tickets have no price. So the label of the button is wrong because public users are not redirected to the checkout. Now, the "Confirm Registration" button is displayed in this case. Reproduce: With the same settings as for the first bug, create an event without tickets. Order a registration with an public user. Click on the "Sign In" button of the attendee details form. The confirmation page appears instead of the sign in page. task-4797022 Forward-Port-Of: odoo/odoo#215585
Website editors now get more predictable link behavior when editing pages. Image links no longer show an unintended live preview while typing, and empty link URLs are preserved with a safe placeholder instead of silently discarding the change.
Original PR description
### Description of the issue/feature this PR addresses: - onChange was triggered both while typing in the URL input and when selecting an autocomplete item, causing live preview even for image links. - When editing a link, removing URL and clicking outside discarded changes. ### Desired behavior after PR is merged: - Live preview is now applied only for normal text links, not for image links. - If the URL field is empty and the user clicks outside, the link now default its href to '#'. task-5028570 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Vendor price lists created from blanket orders now use the unit of measure from the blanket order line instead of defaulting to the product's base unit. This helps purchasing teams keep vendor pricing aligned with negotiated order terms and avoids unit-related pricing mistakes.
Original PR description
This commit fixes setting the UoM of the vendor pricelist generated by a blanket order. Previously, the created pricelist had the base unit of the product. Now, it has the unit of the blanket order line. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#226033
This fixes a crash that occurred when adding a kit product as a part on a repair order. Users can now save repair orders with kit components normally, reducing interruptions in repair workflows.
Original PR description
When user tries to set the kit as product parts in repair order, A traceback will appear. Steps to reproduce the error: - Install ``mrp_repair`` module with demo data - Create a new repair order > In Parts, Add a line > Product: ``Table Kit`` > Save Traceback: ``AttributeError: 'stock.move' object has no attribute 'name'`` https://github.com/odoo/odoo/blob/83a8508b958ed88bbdbf80612039ec33817bc02c/addons/mrp_repair/models/repair.py#L84 The ``name`` field of ``stock.move`` was removed in the [commit](https://github.com/odoo/odoo/pull/211488/commits/f3fc7a5cfd6e77cbbcfff891383abeac930d41ac), but it is still being referenced here. So, It will lead to the above traceback. sentry-6870866512 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Fixes an issue where reloading a page after folding a group in a grouped Kanban view could show an error. The view now refreshes its saved group state from the latest server response, improving reliability for users returning to grouped records.
Original PR description
- Open a grouped kanban; - Fold a group; - Reload the page; Before this commit, an error occurred because the configuration says that the group is unfolded, but the returning RPC didn't have any records. This commit clears the current configuration, which will then be reloaded based on the returning RPC.
The wishlist purchase journey test now allows more time to complete, reducing false failures when the process runs slowly. This helps keep automated validation stable without changing the customer-facing shopping experience.
Original PR description
Increase timeout for wishlist tour. As it was taking too long to complete. runbot-229616 Forward-Port-Of: odoo/odoo#225357 Forward-Port-Of: odoo/odoo#219653
Live chat routing now correctly ignores conversations that have already ended or have been inactive for at least 30 minutes when measuring agent workload. This helps assign new chats to the truly least busy available agent, improving response distribution and customer handling.
Original PR description
Live chat agents are assigned based on their expertise, language, country, and other criteria. When several agents match these criteria, the system chooses the least active one. There was an issue with the SQL query that retrieves agent occupation: an agent was still considered buisy if a message was received within the last 30 minutes, even if the live chat was ended. This commit fixes the issue: the query now excludes ended live chats as well as live chats without any activity for at least 30 minutes. task-5065567 Forward-Port-Of: odoo/odoo#226271 Forward-Port-Of: odoo/odoo#225514
Users editing technical views now receive a clear, user-friendly message if they include an XML encoding declaration that cannot be saved. This prevents a confusing system error and helps administrators correct the view architecture more easily.
Original PR description
Currently, an error occurs when a user includes an XML encoding declaration in the view architecture. **Steps to reproduce:** - Enable **developer mode**. - Under `Settings > Technical > User…
Currently, an error occurs when a user includes an XML encoding declaration in the view architecture. **Steps to reproduce:** - Enable **developer mode**. - Under `Settings > Technical > User Interface > Views` Create or edit any view. - Enter the `view name` and select `view type`. - In the Architecture field, declare encoding as: `<?xml version='1.0' encoding='utf-8'?>`. - Attempt to save the view. **Error:** `ValueError: Unicode strings with encoding declaration are not supported. Please use bytes input or XML fragments without declaration.` **Root Cause:** The [1] call raises a ValueError when the XML declaration includes an encoding attribute. This low-level error is not handled and results in an ungraceful failure. [1]- https://github.com/odoo/odoo/blob/bf4ccb21f6c9c8bcda9c6f94d844c89296523954/odoo/tools/translate.py#L281 This commit ensures raising an UserError, improving the error message clarity. sentry-6505918596 Forward-Port-Of: odoo/odoo#226396 Forward-Port-Of: odoo/odoo#205324
Fixes an issue in the website builder translation mode where using left or right arrow keys inside carousel text could switch slides and then cause a crash. This keeps text editing predictable for multilingual website content and prevents disruption while translating carousel snippets.
Original PR description
Since the initial [website builder refactor], when in translate mode in website builder, pressing an arrow key when the cursor is inside the text of a carousel moved to the next slide once, pressing…
Since the initial [website builder refactor], when in translate mode in website builder, pressing an arrow key when the cursor is inside the text of a carousel moved to the next slide once, pressing again caused a crash. Before the refactor, there was also the slide behavior but not the crash. The arrows triggers the slide because the contenteditable is inside the slide in translate mode. It does not trigger it in normal edit mode because the contenteditable is on an ancestor. This commit fixes it by changing the config pass to the bootstrap carousel in edit mode, so that the carousel does not slide on keyboard. Changing this config makes the event handlers to stop the keydown event on the other parts of the carousel redundant, so they are removed Steps to reproduce: - Open website bulider - Drop the snippet "Quotes Minimal" - Add a second language to the website - Edit the translation for the second language - Click on the text in the quote in the carousel - Press a left or right arrow key - Bug: the slide changed (instead of moving the cursor in side the text) - Click on the text of the slide that is now shown - Press again the arrow key - Bug: Crash [website builder refactor]: https://github.com/odoo-dev/odoo/commit/9fe45e2b7ddbbfd0445ffe25a859e67a316d02b2 task-4367641
This fixes an error that could prevent portal users from buying a paid eLearning course after accessing it through a shared preview link and completing a quiz. The cart action now uses the current shopping cart mechanism, so learners can continue to checkout normally.
Original PR description
Steps to reproduce: 1) Install `website_sale_slides`. 2) Create a course with enroll policy 'On payment' and publish it. 3) Add a content allow preview it and add a quiz 4) Go to website, click Share…
Steps to reproduce:
1) Install `website_sale_slides`.
2) Create a course with enroll policy 'On payment' and publish it.
3) Add a content allow preview it and add a quiz
4) Go to website, click Share button and open the generated link in incognito.
5) Login as a portal user, pass the quiz and click "Buy this course".
Issue:
- A traceback occurred:
`Cannot read properties of undefined (reading 'addToCart')`.
Cause:
- The method call `self.call('websiteSale', 'addToCart', ...)` relied on the deprecated `call` service, which was removed in commit https://github.com/odoo/odoo/commit/b8d0ab4275b24510161de9db793020f3489b0446.
- The service and method `call('websiteSale', 'addToCart'` is not valid and was not updated here :
https://github.com/odoo/odoo/blob/35161ecf0dd3fde47db9b2166718339c2e30ac92/addons/website_sale_slides/static/src/js/slides_course_join.js#L29
- As a result, `addToCart` was no longer accessible and triggered a JS error.
Solution:
- Update the code to use the new service and method: `call('cart', 'add',`
opw-5045424
Forward-Port-Of: odoo/odoo#224760Creating an invoice no longer crashes when VAT verification is enabled and the company has no country set. The change adds a safeguard so customers can continue invoicing even if company country data is incomplete.
Original PR description
The system crashes with an error when a user tries to create an invoice. **Steps to produce:-** - Install `Accounting` module and switch to `BE Company`. - Go to `Settings > Users & Companies >…
The system crashes with an error when a user tries to create an invoice.
**Steps to produce:-**
- Install `Accounting` module and switch to `BE Company`.
- Go to `Settings > Users & Companies > Companies` and remove the country from the BE company.
- Create a new customer with:-
- Country as `Belgium`.
- Tax ID as `DE123456788`.
- `Accounting > configuration > settings > enable Verify VAT Numbers`.
- Now try to make `invoice` with customer as previously created customer.
**Error:-**
`TypeError : argument of type 'bool' is not iterable`
**Root cause:-**
- At [1], the code attempts to access `company.country_id`, but since the country was manually removed from the company, it evaluates to null record, leading to the error.
**Solution:-**
- Add a safeguard to ensure `company.country_id` also exist before accessing `country_group_codes`.
[1] -https://github.com/odoo/odoo/blob/4c2330f3cc0d1a0046e28d351f894763aeea57d2/addons/base_vat/models/res_partner.py#L764
**sentry-6851141424**
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#225158Point of Sale now avoids an error when taxes are turned back on after a product has already been added to an active sales session. This keeps cashiers from seeing a crash and helps ensure updated tax settings are handled smoothly.
Original PR description
Steps to reproduce: ---- - From accounting disable taxes - Create new product - Open PoS UI and add product in orderline - Go to backend and enable taxes - Add tax in previously created product - Open UI again Issue: ---- - We will have traceback Cause: ---- - undefined error as pos_receipt_label is undefined as we don't have chance to reload data as product is already in orderline Fix: ---- - added optional chaining so we don't have undefined error also we have to reload data after enabling taxes from the configurations in the backend ---- task - 4762770 Forward-Port-Of: odoo/odoo#208511