Monday, May 19, 2025
31 changes · saas-18.1
Resolved issues and error corrections
This fix updates an internal sales and inventory test so it consistently has the right permissions to check product packaging fields. It helps prevent false test failures during module validation, improving release reliability without changing customer-facing behavior.
Original PR description
This commit ensures that the group `uom.group_uom` is correctly applied on the test user, so that the tour doesn't fail on the step looking for "Packagings" field on the product view which happened in some [single module tests](https://runbot.odoo.com/odoo/runbot.build.error/222678). --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fix makes automated checks for favorite search management more reliable by using predictable test data and confirming that page updates have finished. It helps prevent false failures in testing without changing day-to-day user behavior.
Original PR description
Because of commit https://github.com/odoo/odoo/commit/b5ba14bc77a12268e5ce1e2a7aa7e48ba209f876 tours are faster and don't wait much between two steps. Also, when removing or adding a facet in the search view, there is no way to determine that the subsequent reload has been done. The factet is removed or added immediately, the reload happens after. So, before the refactoring of macro.js, we waited a little bit longer, allowing the reload of the view to be done before going to the next step. This commit mitigates this by making the dataset of the tour more dterministic in order to be able to check that in the DOM. It is possible that the problem occurs in 18.0 as well, so feel free to backport this fix. runbot-error-162145
This change makes an automated test for message notification sounds more reliable by allowing enough time for message updates to load. It helps reduce false test failures in Odoo's mail area without changing the user experience.
Original PR description
Before this commit, the `message sound on receiving new message` was sometimes failing. It occurs because the test uses the `waitFor` web method to wait for the message unread counter to change. However, `waitFor` has a much smaller timeout than `contains` (200ms vs 3s). In this particular scenario, receiving the bus notification, fetching the channel and rendering the chat hub initially can take a little bit more time than 200ms, making the test fail. This commit increases the time out to match the `contains` one for this test. fixes runbot-159866 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
Miscellaneous changes
Before this commit, resizing columns in list views when being in right-to-left didn't work as expected: when resizing a column, the column was resized in the opposite direction. This commit makes it work. opw~4782197 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#210516 Forward-Port-Of: odo
Original PR description
Before this commit, resizing columns in list views when being in right-to-left didn't work as expected: when resizing a column, the column was resized in the opposite direction. This commit makes it work. opw~4782197 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#210516 Forward-Port-Of: odoo/odoo#210290
This commit adds translations for Luxembourg VAT report in the official languages of Luxembourg. The translation is added for languages Luxembourgish, German, and French. task-4717339 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#208673
Original PR description
This commit adds translations for Luxembourg VAT report in the official languages of Luxembourg. The translation is added for languages Luxembourgish, German, and French. task-4717339 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#208673
The theme preview feature before selection was disabled in [1]. This commit precises the TODO comment that was added with it. It comes alongside a theme repo commit which actually disables the related nightly test of the feature... that was red since then. [1]: https://github.com/odoo/odoo/commit/7cb71e9479df0ee9af0b7ad39302857666726177 Related to task-3454790 Forward-Port-Of: odoo/odoo#210140
Original PR description
The theme preview feature before selection was disabled in [1]. This commit precises the TODO comment that was added with it. It comes alongside a theme repo commit which actually disables the related nightly test of the feature... that was red since then. [1]: https://github.com/odoo/odoo/commit/7cb71e9479df0ee9af0b7ad39302857666726177 Related to task-3454790 Forward-Port-Of: odoo/odoo#210140
Scheduling a custom activity plan on a single record should do a `soft_reload` of the current view in order to avoid breadcrumbs pollution. The most frequent use case for that action is scheduling a plan from the chatter of the form view of a record, and retriggering an unnamed default form act_window would only restrict possible operations for the user. After this commit, the current view will be reloaded and the user will most probably be able to see its enabled plan in the chatter. t
Original PR description
Scheduling a custom activity plan on a single record should do a `soft_reload` of the current view in order to avoid breadcrumbs pollution. The most frequent use case for that action is scheduling a plan from the chatter of the form view of a record, and retriggering an unnamed default form act_window would only restrict possible operations for the user. After this commit, the current view will be reloaded and the user will most probably be able to see its enabled plan in the chatter. task-4525830 Forward-Port-Of: odoo/odoo#210168
Steps to print the check: 1. Ensure l10n_us_check_printing is installed 2. Set the check layout to Print Check (Middle) - US 3. Create a PO and a bill from it. 4. Create a payment for the bill using checks as your payment method 5. Click Print Check on the payment Current behavior before PR: The checks would print the vendor's name in the stubs, and the date alignment in the (middle) format was overlapping with the check number. Description of the issue/feature this PR addresses: Th
Original PR description
Steps to print the check: 1. Ensure l10n_us_check_printing is installed 2. Set the check layout to Print Check (Middle) - US 3. Create a PO and a bill from it. 4. Create a payment for the bill using…
Steps to print the check: 1. Ensure l10n_us_check_printing is installed 2. Set the check layout to Print Check (Middle) - US 3. Create a PO and a bill from it. 4. Create a payment for the bill using checks as your payment method 5. Click Print Check on the payment Current behavior before PR: The checks would print the vendor's name in the stubs, and the date alignment in the (middle) format was overlapping with the check number. Description of the issue/feature this PR addresses: The checks are aligned with the expected format and conditionally render the correct fields in the document's intended areas. Desired behavior after PR is merged: The printed check will now match the format and alignment of the templates used here: https://checkdepot.net/collections/odoo-checks/products/odoo-checks-top- format. Additionally, the check will now avoid printing the issuing company name on the stubs when the manual numbering setting on the bank journal is switched off. This assumes that the checks are preprinted with the company name and check number. opw-4557006 opw-4738359 Enterprise PR: https://github.com/odoo/enterprise/pull/84644 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#210074 Forward-Port-Of: odoo/odoo#208357
The rename in the chat window as well as in discuss is not working for livechat, this commit is fixing the issue. The name should now be visible by all operators but not to visitors task-4431259 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#202306
Original PR description
The rename in the chat window as well as in discuss is not working for livechat, this commit is fixing the issue. The name should now be visible by all operators but not to visitors task-4431259 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#202306
Versions -------- - 17.4+ Steps ----- 1. Configure UoM decimal accuracy to be 0 digits; 2. create, confirm a SO; 3. create a downpayment invoice; 4. go back to the SO; 5. modify the product line's price. Issue ----- > AssertionError: precision_rounding must be positive, got 0. Cause ----- When checking for quantity changes to log on `write`, a fallback rounding value is retrieved using `precision_get`. This returns a `precision_digits` value, but is being used as a `precisio
Original PR description
Versions -------- - 17.4+ Steps ----- 1. Configure UoM decimal accuracy to be 0 digits; 2. create, confirm a SO; 3. create a downpayment invoice; 4. go back to the SO; 5. modify the product line's…
Versions -------- - 17.4+ Steps ----- 1. Configure UoM decimal accuracy to be 0 digits; 2. create, confirm a SO; 3. create a downpayment invoice; 4. go back to the SO; 5. modify the product line's price. Issue ----- > AssertionError: precision_rounding must be positive, got 0. Cause ----- When checking for quantity changes to log on `write`, a fallback rounding value is retrieved using `precision_get`. This returns a `precision_digits` value, but is being used as a `precision_rounding` value, resulting in an error when it is 0. In previous versions, this fallback value was never used, as `display_type` lines were skipped, and any other line is guaranteed to have a `product_uom.rounding` value. As of 9aa52dd6418e, the constraint was changed for `is_downpayment` lines not having to be of `display_type` nor require a `product_uom` value, meaning the faulty fallback value now gets used. Solution -------- Remove the fallback value, and only log lines with a `product_uom` value. opw-4566621 Forward-Port-Of: odoo/odoo#205581
Currently an error occurs during post-processing of a payment transaction. Steps to Reproduce: - Install the `website_sale` module. - Open `Reports > Quotation / Order` and enable the Invoice report option. - Go to the Website, place an order using the Wire Transfer payment provider. - Open `Scheduled Actions`. - Find and manually run the `Payment: Post-process transactions action`. `MissingError: Record does not exist or has been deleted. (Record: account.move(22,), User: 1)
Original PR description
Currently an error occurs during post-processing of a payment transaction. Steps to Reproduce: - Install the `website_sale` module. - Open `Reports > Quotation / Order` and enable the Invoice report…
Currently an error occurs during post-processing of a payment transaction. Steps to Reproduce: - Install the `website_sale` module. - Open `Reports > Quotation / Order` and enable the Invoice report option. - Go to the Website, place an order using the Wire Transfer payment provider. - Open `Scheduled Actions`. - Find and manually run the `Payment: Post-process transactions action`. `MissingError: Record does not exist or has been deleted. (Record: account.move(22,), User: 1)` This issue was generated because the user clicked on the invoice report option on the report Quotation / Order as a result, when we try to print qutation /order it tries to browse the sale.order with id 22 as an account.move. This commit ensures that the is_invoice_report field is only visible when the model is account.move. Additionally, the_is_invoice_report method has been modified to return True only when the model is account.move, thereby preventing a MissingError during scheduled actions. Sentry-6563415103 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#209255 Forward-Port-Of: odoo/odoo#207635
Steps: - Create a partner and it's parent partner and set different salesperson on each. - Login with child partner and add product to cart. - Go to backend and open related quotation. Issue: - Salesperson set on quotation is customer's parent partner's salesperson even though salesperson set on customer. While in backend it first check customer's salesperson and if customer does not have salesperson then it set parent's salesperson. Cause: - In eCommerce we gave parent's salesperson
Original PR description
Steps: - Create a partner and it's parent partner and set different salesperson on each. - Login with child partner and add product to cart. - Go to backend and open related quotation. Issue: - Salesperson set on quotation is customer's parent partner's salesperson even though salesperson set on customer. While in backend it first check customer's salesperson and if customer does not have salesperson then it set parent's salesperson. Cause: - In eCommerce we gave parent's salesperson first priority then customer's salesperson. Fix: - Swap priority to set first customer's salesperson opw-4757042 Forward-Port-Of: odoo/odoo#210439 Forward-Port-Of: odoo/odoo#209062
1. Install `l10n_it_stock_ddt` (Accounting, Sales, Italian localization, Italian delivery slip) 2. Create an invoice with one or more products 3. Set the quantity on the order lines to a relatively high value, like 200 4. Set the unit price to include decimal values so that rounding becomes relevant 5. Confirm the invoice. 6. Click on the delivery smart button. 7. Click on Validate > Print. The total for each product line and the overall total should be correctly calculated as the unit
Original PR description
1. Install `l10n_it_stock_ddt` (Accounting, Sales, Italian localization, Italian delivery slip) 2. Create an invoice with one or more products 3. Set the quantity on the order lines to a relatively high value, like 200 4. Set the unit price to include decimal values so that rounding becomes relevant 5. Confirm the invoice. 6. Click on the delivery smart button. 7. Click on Validate > Print. The total for each product line and the overall total should be correctly calculated as the unit price multiplied by the quantity, then the tax must be added. Doing this in incorrect order, can result in discrepancies per unit due to the rounding being done before applying the tax, and that becomes significant when a large number of items is sold. Ticket [link](https://www.odoo.com/odoo/project/967/tasks/4666634) opw-4666634 Forward-Port-Of: odoo/odoo#204531
Some views use a domain widget to edit/save a domain and use it afterwards in several places where domains must have literals only. Typically, a literal_eval is used to evaluate the (string) domain. Thus expressions like "uid" or "context_today()"" should not be used in those contexts. Here we introduce an option "allow_expressions" (default False) for the domain field and use it to mark as invalid domains that contain expressions when the option is set to False. A notification is displayed whe
Original PR description
Some views use a domain widget to edit/save a domain and use it afterwards in several places where domains must have literals only. Typically, a literal_eval is used to evaluate the (string) domain.…
Some views use a domain widget to edit/save a domain and use it afterwards in several places where domains must have literals only. Typically, a literal_eval is used to evaluate the (string) domain. Thus expressions like "uid" or "context_today()"" should not be used in those contexts. Here we introduce an option "allow_expressions" (default False) for the domain field and use it to mark as invalid domains that contain expressions when the option is set to False. A notification is displayed when a domain contains an unwanted expressions. Since we cannot expect modules like base to be updated, we have to find another system to allow the usage of expressions in the form views for the models ir.filters and base.automation: we simply hardcode those models as allowing expressions. Since for these models, the evaluation of domains is done via safe_eval but with a restricted evaluation context, we also display a notification that alerts the user that the evaluation of expressions (although accepted by the domain field) can fail. We revert the recent commit https://github.com/odoo/odoo/commit/a6787552150434d4366e30cbeb6f6d309c2c6cb9 that introduced potentially problematic calls to safe_eval in order to allow evaluation of expressions. Forward-Port-Of: odoo/odoo#210145 Forward-Port-Of: odoo/odoo#208876
Currently, when you make a simplified invoice in pos, the pricelist will always be set to the simplified invoice partner pricelist, even if you had specifically set another pricelist during the order. Steps to reproduce: ------------------- * Create 2 pricelists, A and B, let's say A always adds a 10$ fee * Set both as available in the POS, with A being the default one * On the contact "Simplified invoice parner", set the pricelist A * Open pos * Change pricelist to B * Pay and validat
Original PR description
Currently, when you make a simplified invoice in pos, the pricelist will always be set to the simplified invoice partner pricelist, even if you had specifically set another pricelist during the…
Currently, when you make a simplified invoice in pos, the pricelist will always be set to the simplified invoice partner pricelist, even if you had specifically set another pricelist during the order. Steps to reproduce: ------------------- * Create 2 pricelists, A and B, let's say A always adds a 10$ fee * Set both as available in the POS, with A being the default one * On the contact "Simplified invoice parner", set the pricelist A * Open pos * Change pricelist to B * Pay and validate order > Observation: Order is not validated, 10$ left to pay Why the fix: ------------ Prior to the use of `set_partner`, we used to simply write the partner field of the order when using the simplified invoice partner. Now we are using `set_partner` which is a generic function that handles everything related to changing partners, such as updating pricelist. https://github.com/odoo/odoo/blob/69057e41fb4cd800d23401ead8ae11bf7cba7c64/addons/point_of_sale/static/src/app/models/pos_order.js#L941-L948 In our example since the default pos pricelist was manually changed it means that the intention was to use this set pricelist. What we do now in this case is to check if the pricelist was purposefully changed (it differs from the default pricelist), and in this case we want to use this pricelist on the order. opw-4662248 Forward-Port-Of: odoo/odoo#208624
- creating pos config and payment method requires pos admin (or sudo) - creating a pos order requires pos user Blows up during nightly single app tests. https://runbot.odoo.com/odoo/error/223001 Forward-Port-Of: odoo/odoo#210368
Original PR description
- creating pos config and payment method requires pos admin (or sudo) - creating a pos order requires pos user Blows up during nightly single app tests. https://runbot.odoo.com/odoo/error/223001 Forward-Port-Of: odoo/odoo#210368
This reverts commit 7ce1ba9f29f9b1edd5f2507492e45ef92d9ba868. Before the commit (1) We would iterate through the possible items and see if the partner has the field. As the partner in the test setup does not have `company_registry`, it will iterate on the second value, `vat`, which is set on the partner https://github.com/odoo/odoo/blob/037fabd81efc28c12359700ee8e21e0454e0535e/addons/l10n_dk/models/res_partner.py#L7-L18 which will be the key `0198` For this key, we have mocked the respons
Original PR description
This reverts commit 7ce1ba9f29f9b1edd5f2507492e45ef92d9ba868. Before the commit (1) We would iterate through the possible items and see if the partner has the field. As the partner in the test setup…
This reverts commit 7ce1ba9f29f9b1edd5f2507492e45ef92d9ba868. Before the commit (1) We would iterate through the possible items and see if the partner has the field. As the partner in the test setup does not have `company_registry`, it will iterate on the second value, `vat`, which is set on the partner https://github.com/odoo/odoo/blob/037fabd81efc28c12359700ee8e21e0454e0535e/addons/l10n_dk/models/res_partner.py#L7-L18 which will be the key `0198` For this key, we have mocked the response: https://github.com/odoo/odoo/blob/e62a86939b0b327e2c16a82b0829dac80ef1ff32/addons/account_peppol/tests/test_peppol_messages.py#L153-L155 After the commit (1), we stop at the first iteration since `vat` is defined on the partner's fields. The key is `0184` -> we don't have any mocked response for this key, we we wazt to load the response's body which does not exist -> kaboom I'm not sure that we wanted to change this value in the first place as from Julien, we wanted the company registry https://github.com/odoo/odoo/commit/ad37ebefb9fb7cb3c9593730f174dd6f1d73a31e https://docs.peppol.eu/poacc/billing/3.0/rules/ubl-peppol/DK-R-014/ + the company registry == the vat for the danish localisation https://github.com/odoo/odoo/blob/037fabd81efc28c12359700ee8e21e0454e0535e/addons/l10n_dk/models/res_partner.py#L7-L18 --- commit (1) https://github.com/odoo/odoo/commit/7ce1ba9f29f9 runbot-163142 Forward-Port-Of: odoo/odoo#209498
before this commit, in the profitability dashboard the cogs section is show with label cost_of_goods_sold  after this commit, the label will be shown as Cost of Goods Sold  --- I confirm I have signed the CLA and read the PR guidelines at www.odoo
Original PR description
before this commit, in the profitability dashboard the cogs section is show with label cost_of_goods_sold  after this commit, the label will be shown as Cost of Goods Sold  --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#210013 Forward-Port-Of: odoo/odoo#209868
Description: --- The action to update Taxes and Accounts when changing the fiscal pos on invoice isn't considering the change in price_unit for lines with price included taxes. Steps to Reproduce: --- 1- Create a 21% tax and another 6% tax, both are included in price 2- Create a fiscal position that will map the 21% tax by the 6% tax 3- Create a product with Price = 121€, and Tax = 21% 4- Create an invoice with this product. 5- On the (Other info) tab, set the Fiscal Position to the o
Original PR description
Description: --- The action to update Taxes and Accounts when changing the fiscal pos on invoice isn't considering the change in price_unit for lines with price included taxes. Steps to Reproduce:…
Description: --- The action to update Taxes and Accounts when changing the fiscal pos on invoice isn't considering the change in price_unit for lines with price included taxes. Steps to Reproduce: --- 1- Create a 21% tax and another 6% tax, both are included in price 2- Create a fiscal position that will map the 21% tax by the 6% tax 3- Create a product with Price = 121€, and Tax = 21% 4- Create an invoice with this product. 5- On the (Other info) tab, set the Fiscal Position to the one created (from 21 to 6). 6- Click on update taxes and accounts: The price will still be 121 while the taxes will change to 6%, and total = 121. 7- Then if you added a new line with the product now after setting the fiscal pos , you will get price= 106, tax=6%, total = 106. which are the right values. Cause: --- The action created for updating taxes and accounts didn't consider price changes for price included taxes. Fix: --- Add call to _compute_price_unit() opw-4672466 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#208780
Steps to reproduce: 1. Go to Events. 2. Create a new event with a long name. 3. Add a product. 4. Print the "Badge Example". Issue: When printing a badge from an event with a long name, the QR code overlaps or clips the information above it, making the badge unreadable. Cause: The issue is due to the large font size used for the event name. Solution: Reduced the font size of the event title to fs-5 to ensure enough spacing is maintained between the text and the QR code, avoiding
Original PR description
Steps to reproduce: 1. Go to Events. 2. Create a new event with a long name. 3. Add a product. 4. Print the "Badge Example". Issue: When printing a badge from an event with a long name, the QR code overlaps or clips the information above it, making the badge unreadable. Cause: The issue is due to the large font size used for the event name. Solution: Reduced the font size of the event title to fs-5 to ensure enough spacing is maintained between the text and the QR code, avoiding layout overlap. opw : 4783750 Before FIX:  After FIX:  Forward-Port-Of: odoo/odoo#209816
When generating the JO UBL file, we want to keep the PartyIdentification and its ID node, even if the latter is empty. Also, in the same file, the country code of a partner should be set to 'PN' if the partner doesn't have its country set. task-4656827 Forward-Port-Of: odoo/odoo#210356 Forward-Port-Of: odoo/odoo#206488
Original PR description
When generating the JO UBL file, we want to keep the PartyIdentification and its ID node, even if the latter is empty. Also, in the same file, the country code of a partner should be set to 'PN' if the partner doesn't have its country set. task-4656827 Forward-Port-Of: odoo/odoo#210356 Forward-Port-Of: odoo/odoo#206488
Otherwise, there's no other way for users to verify if the charged taxes are correct. task-4688950 Forward-Port-Of: odoo/enterprise#83464
Original PR description
Otherwise, there's no other way for users to verify if the charged taxes are correct. task-4688950 Forward-Port-Of: odoo/enterprise#83464
In the Italian balance sheet, the section for “d-bis. Other enterprises” is not added to the calculation for the section “1. Holdings in:”. As a result, it is not included in the calculation for assets in the balance sheet. This commit adds the section “d-bis. Other enterprises” to the calculation of “1. Holdings in”. This specification is based on Article 2424(1) of the Italian Civil Code: https://www.normattiva.it/uri-res/N2Ls?urn:nir:stato:regio.decreto:1942-03-16;262 Steps to Repro
Original PR description
In the Italian balance sheet, the section for “d-bis. Other enterprises” is not added to the calculation for the section “1. Holdings in:”. As a result, it is not included in the calculation for assets in the balance sheet. This commit adds the section “d-bis. Other enterprises” to the calculation of “1. Holdings in”. This specification is based on Article 2424(1) of the Italian Civil Code: https://www.normattiva.it/uri-res/N2Ls?urn:nir:stato:regio.decreto:1942-03-16;262 Steps to Reproduce on Runbot: 1. Install l10n_it_reports 2. Create an account starting with 1306 3. Create a journal entry using account 1306 as the debit line and balance it with a credit line 4. Check the Italian balance sheet and notice that “d-bis. Other enterprises” is not included in the calculation for assets in the Italian balance sheet Ticket [link](https://www.odoo.com/odoo/project/967/tasks/4763868) opw-4763868 Forward-Port-Of: odoo/enterprise#84586
The overhaul of html editor into knowledge introduced an issue involving the auto-vaccuum. This commit https://github.com/odoo/enterprise/commit/08d84f8b61450a0ebd0d2aadfe8f227bda283edd passes the res_id value of the currently existing knowledge.cover record. However, when we set a new cover image, we will always create a new cover record and the new cover image attachments are linked to the previous cover record. The auto-vaccuum then deletes unused cover images and any attachments linked,
Original PR description
The overhaul of html editor into knowledge introduced an issue involving the auto-vaccuum. This commit https://github.com/odoo/enterprise/commit/08d84f8b61450a0ebd0d2aadfe8f227bda283edd passes the res_id value of the currently existing knowledge.cover record. However, when we set a new cover image, we will always create a new cover record and the new cover image attachments are linked to the previous cover record. The auto-vaccuum then deletes unused cover images and any attachments linked, which will delete the actual cover image. The web_unsplash/attachment/add does not need to pass in a res_id of the cover image since we always create a new record at the end of the workflow. opw-4629300 Forward-Port-Of: odoo/enterprise#85549
Steps to print the check: 1. Ensure l10n_us_check_printing is installed 2. Set the check layout to Print Check (Middle) - US in the settings 3. Create a PO and a bill from it. 4. Create a payment for the bill using checks as your payment method 5. Click Print Check on the payment The printed check will now match the format and alignment of the templates used [here](https://checkdepot.net/collections/odoo-checks?_pos=1&_psq=odoo&_ss=e&_v=1.0). Additionally, the check will now avoid printi
Original PR description
Steps to print the check: 1. Ensure l10n_us_check_printing is installed 2. Set the check layout to Print Check (Middle) - US in the settings 3. Create a PO and a bill from it. 4. Create a payment for…
Steps to print the check: 1. Ensure l10n_us_check_printing is installed 2. Set the check layout to Print Check (Middle) - US in the settings 3. Create a PO and a bill from it. 4. Create a payment for the bill using checks as your payment method 5. Click Print Check on the payment The printed check will now match the format and alignment of the templates used [here](https://checkdepot.net/collections/odoo-checks?_pos=1&_psq=odoo&_ss=e&_v=1.0). Additionally, the check will now avoid printing the issuing company name on the stubs when the manual numbering setting on the bank journal is switched off. This assumes that the checks are preprinted with the company name and check number. Before the fix, the checks printed the vendor's name in the stubs, and the date alignment in the (middle) format overlapped with the check number. After the fix, the checks are aligned with the expected format and conditionally render the correct fields in the document's intended areas. opw-4557006 opw-4738359 odoo PR: https://github.com/odoo/odoo/pull/208357 Forward-Port-Of: odoo/enterprise#85578 Forward-Port-Of: odoo/enterprise#84644
Implement new Swiss municipality OFS number assignment for ERP systems based on 2025 AFC list. This commit updates the address validation and municipality assignment logic in the ERP system to align with the new "Liste des communes OFS 2025 pour l’attribution du numéro de commune au code postal" published by the Swiss Federal Tax Administration (AFC) for withholding tax purposes. Forward-Port-Of: odoo/enterprise#84859
Original PR description
Implement new Swiss municipality OFS number assignment for ERP systems based on 2025 AFC list. This commit updates the address validation and municipality assignment logic in the ERP system to align with the new "Liste des communes OFS 2025 pour l’attribution du numéro de commune au code postal" published by the Swiss Federal Tax Administration (AFC) for withholding tax purposes. Forward-Port-Of: odoo/enterprise#84859
In this commit: https://github.com/odoo/enterprise/pull/84728/commits/d3b3de47ca3f174e97eb598187b32e31077a2ddb since the transaction details field was in fact a string in version lower than 18.2 the get would traceback no task id Forward-Port-Of: odoo/enterprise#85848
Original PR description
In this commit: https://github.com/odoo/enterprise/pull/84728/commits/d3b3de47ca3f174e97eb598187b32e31077a2ddb since the transaction details field was in fact a string in version lower than 18.2 the get would traceback no task id Forward-Port-Of: odoo/enterprise#85848
This reverts commit https://github.com/odoo/enterprise/commit/d77df0ea4d3b410d210307976f995d9abdc6c97b. Indeed, for security reasons, it is preferable to avoid calling safe_eval whenever possible. Note that in https://github.com/odoo/odoo/pull/208876 a new mechanism is introduced in order to block the creation of expressions in domain fields where we only want domains with litterals because they are evaluated with literal_eval. Forward-Port-Of: odoo/enterprise#85620 Forward-Port-Of: odoo/enter
Original PR description
This reverts commit https://github.com/odoo/enterprise/commit/d77df0ea4d3b410d210307976f995d9abdc6c97b. Indeed, for security reasons, it is preferable to avoid calling safe_eval whenever possible. Note that in https://github.com/odoo/odoo/pull/208876 a new mechanism is introduced in order to block the creation of expressions in domain fields where we only want domains with litterals because they are evaluated with literal_eval. Forward-Port-Of: odoo/enterprise#85620 Forward-Port-Of: odoo/enterprise#85298
**Steps to reproduce** - Install website_sale_subscription - On the website page of a product, enter the editor and enable the "Tax Indication" setting for the product page. - The tax indication information doesn't appear for subscription products.  **Cause** Issue since commit 7d160198be779095660e7f6fb68ae231e4621972 which hides default pricing information from `website_sale` for subscription produc
Original PR description
**Steps to reproduce** - Install website_sale_subscription - On the website page of a product, enter the editor and enable the "Tax Indication" setting for the product page. - The tax indication information doesn't appear for subscription products.  **Cause** Issue since commit 7d160198be779095660e7f6fb68ae231e4621972 which hides default pricing information from `website_sale` for subscription products, including the tax indication. opw-4637308 Forward-Port-Of: odoo/enterprise#84669
This fixes two issues with the report. The first one is automatically requesting an English report if the customer's preferred language is not Spanish. This way the lang field on the partner is somewhat respected for these externally generated reports too. The second fix requests a dedicated addenda page when appropriate. By default, the addenda (e.g. terms and conditions) is added in a small box at the bottom of the standard PDF report. This can only accomodate roughly 6 lines of 140 charact
Original PR description
This fixes two issues with the report. The first one is automatically requesting an English report if the customer's preferred language is not Spanish. This way the lang field on the partner is somewhat respected for these externally generated reports too. The second fix requests a dedicated addenda page when appropriate. By default, the addenda (e.g. terms and conditions) is added in a small box at the bottom of the standard PDF report. This can only accomodate roughly 6 lines of 140 characters. If the addenda exceeds that, the remainder is silently cut off which is problematic for mandatory disclosures etc. It's possible to request a dedicated addenda page in the PDF that fixes this issue. We considered always requesting it, but it looks strange to have a whole page in the PDF if the addenda is very short. We therefore make a best effort attempt to figure out if the addenda will fit in the standard report or not. task-4750717 Forward-Port-Of: odoo/enterprise#81188
## Version: 17.0+ ## Issue: Stripe payments with an unregistered card on backdated subscriptions lead to Stripe API refusal. ## Steps to reproduce: Ensure Stripe is well configured in `Test Mode` with `Credentials`; Create a new Sale Order with `Monthly Cleaning` as `Quotation Template` for any customer: - Under `Other Info` tab, change the `Subscription` `Start Date` for a date at least 2 days before current date; - Confirm and create regular invoice: - Set `Invoice Date` to the s
Original PR description
## Version: 17.0+ ## Issue: Stripe payments with an unregistered card on backdated subscriptions lead to Stripe API refusal. ## Steps to reproduce: Ensure Stripe is well configured in `Test Mode`…
## Version:
17.0+
## Issue:
Stripe payments with an unregistered card on backdated subscriptions lead to Stripe API refusal.
## Steps to reproduce:
Ensure Stripe is well configured in `Test Mode` with `Credentials`; Create a new Sale Order with `Monthly Cleaning` as `Quotation Template` for any customer:
- Under `Other Info` tab, change the `Subscription` `Start Date` for a date at least 2 days before current date;
- Confirm and create regular invoice:
- Set `Invoice Date` to the same date as the subscription;
- Confirm and go to the invoice's preview and start payment process:
- Use a new card for payment;
- Check `Save my payment details` checkbox and pay.
## Cause:
The Stripe mandate needs to be filled with a start date at least equal to yesterday (https://docs.stripe.com/api/payment_intents/create#create_payment_intent-payment_method_options-card-mandate_options-start_date). Subscription app sets the start date to the SO's `start_date` via https://github.com/odoo/enterprise/blob/5642ad28919081a44bb47c0d936aa51980178d09/sale_subscription/models/payment_transaction.py#L51-L52. The values are retrieved by `_stripe_prepare_mandate_options()` via https://github.com/odoo/odoo/blob/d231565ec9054556d025b093195a934f28d067c3/addons/payment_stripe/models/payment_transaction.py#L206 and sent to Stipe under a new structure given by https://github.com/odoo/odoo/blob/d231565ec9054556d025b093195a934f28d067c3/addons/payment_stripe/models/payment_transaction.py#L209-L220
## Fix:
Initial suggestion made in the `payment_stripe` module (https://github.com/odoo/odoo/pull/207451), but later moved to the origin of the issue. As of 2025-05-12, Stripe seems to have fixed the issue, but this patch is still applied as a safety measure.
opw-4654142
Forward-Port-Of: odoo/enterprise#85635
Forward-Port-Of: odoo/enterprise#85314