Wednesday, March 12, 2025
52 changes · saas-18.1
Resolved issues and error corrections
This fix makes live chat test tours wait for stronger confirmation that a chat session has been fully created. It helps reduce random automated test failures, improving release reliability without changing the customer-facing chat experience.
Original PR description
Some live chat tours rely on the presence of the first message after chat creation to assume the thread was properly created which is not enough as the message is first posted in the temporary thread for seamless transition. fixes runbot-135255 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
This fixes a small visual issue in Mail where attachment-only messages could show an extra dot near the bottom. The change keeps message attachments looking cleaner and avoids confusing users with an unintended indicator.
Original PR description
There is a dot displayed at the bottom of the attachment only type message. task-4630097 before/after   --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Channel invitation search now waits briefly while users type before sending a request. This reduces unnecessary server traffic and helps keep the invite experience responsive without changing the visible workflow.
Original PR description
Before this PR, a request was sent for each character typed inside the search of the invite to the channel panel. This PR introduces a debounce to avoid spamming the server with useless requests. Part of Task-4637517
This fix keeps the enterprise helpdesk live chat test setup aligned with related platform changes. It helps ensure chatbot-assisted support flows remain properly validated and reduces the risk of regressions in future updates.
Original PR description
Enterprise counter-part. task-4637944 https://github.com/odoo/odoo/pull/201228
This fixes an issue where a subscription's effective date could remain unset when the sales order and first invoice were created together. Businesses now get accurate subscription dates for billing records and follow-up processes.
Original PR description
Before this commit, when the sale order and te first invoice were created in the same transaction, the effective date would not be properly set as the sale.order.log was not created when _update_effective_date was called. As a result, the effective_date was never set.
This fixes an internal Helpdesk test/setup reference so it points to the correct ticket record type. The change helps prevent build or validation failures and keeps Helpdesk mail features aligned with the intended ticket workflow.
Original PR description
like the rest of the code in this file, the target model is supposed to be helpdesk.ticket build_error-111888
The Helpdesk app now correctly declares its dependency on the Project app. This prevents setup or build errors that could interrupt deployment or use of Helpdesk features.
Original PR description
needs project in the dependencies to avoid the keyerror in the helpdesk module build_error-111888
Miscellaneous changes
This commit adds a check to prevent deprecating an account that is used in tax distribution lines. It serves as an indirect fix to avoid future issues in other contexts. For example, in the Italian EDI flow, if an XML bill includes a tax with a distribution line linked to a deprecated account, an error will be raised by the following code: https://github.com/odoo/odoo/blob/cc3a060e67a2f1015ea02b589dcf6a7e7eff1e90/addons/account/models/account_move_line.py#L1478 This commit aims to minimize s
Original PR description
This commit adds a check to prevent deprecating an account that is used in tax distribution lines. It serves as an indirect fix to avoid future issues in other contexts. For example, in the Italian EDI flow, if an XML bill includes a tax with a distribution line linked to a deprecated account, an error will be raised by the following code: https://github.com/odoo/odoo/blob/cc3a060e67a2f1015ea02b589dcf6a7e7eff1e90/addons/account/models/account_move_line.py#L1478 This commit aims to minimize such issues by preventing them as early as possible. Steps to reproduce: - Try to deprecate an account that is used in tax distribution lines. Forward-Port-Of: odoo/odoo#200396 Forward-Port-Of: odoo/odoo#197521
Before this commit, if a session was opened on two devices concurrently, both devices could set the opening control. This resulted in duplicate opening cash setting and a gap in the session ID sequence. This fix ensures that opening control is set only once, maintaining correct session tracking. opw-4627585 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#200645
Original PR description
Before this commit, if a session was opened on two devices concurrently, both devices could set the opening control. This resulted in duplicate opening cash setting and a gap in the session ID sequence. This fix ensures that opening control is set only once, maintaining correct session tracking. opw-4627585 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#200645
### Steps to reproduce * install `mass_mailing` * send an email with the "Training" template You will see that the "unsubscribe" link does not appear in the email that is sent opw-4615170 Forward-Port-Of: odoo/odoo#200342
Original PR description
### Steps to reproduce * install `mass_mailing` * send an email with the "Training" template You will see that the "unsubscribe" link does not appear in the email that is sent opw-4615170 Forward-Port-Of: odoo/odoo#200342
**Description of the issue/feature this PR addresses**: If "Product Price" Decimal Accuracy has more than 2 digits, then the unit price on the printed report has only 2 digits when Argentinean invoice report is printed and this causes that quantity * price on each invoice line does not result the amount shown on the "Amount" column. **Steps to reproduce**: 1) Log ing with admin user on runbot odoo enterprise 16 instance, activate developer mode and install l10n_ar module. 2) Take positio
Original PR description
**Description of the issue/feature this PR addresses**: If "Product Price" Decimal Accuracy has more than 2 digits, then the unit price on the printed report has only 2 digits when Argentinean…
**Description of the issue/feature this PR addresses**: If "Product Price" Decimal Accuracy has more than 2 digits, then the unit price on the printed report has only 2 digits when Argentinean invoice report is printed and this causes that quantity * price on each invoice line does not result the amount shown on the "Amount" column. **Steps to reproduce**: 1) Log ing with admin user on runbot odoo enterprise 16 instance, activate developer mode and install l10n_ar module. 2) Take position on company "Responsable Inscripto", go to menu "Setting / Technical / Database Structure / Decimal Accuracy" and set 4 digits for "Product Price".  3) Create customer invoice to partner "Consumidor Final Anónimo" (if the partner is "Consumidor Final Anónimo" then taxes are not discriminated on the printed invoice report --> document type = "FACTURAS B"). The invoice must have an invoice line with product price with 4 digits, for example: quantity 3000, price 65.3057 and tax "IVA 21%".  4) Confirm and print the invoice  The result of quantity * price is not the amount shown on the printed invoice (3000 * 79.03 != 237059.69) **Current behavior before PR**: If "Product Price" Decimal Accuracy has more than 2 digits, then the unit price on the printed report has only 2 digits when Argentinean invoice report is printed and this causes that quantity * price on each invoice line does not result the amount shown on the amount column. **Desired behavior after PR is merged**: If "Product Price" Decimal Accuracy has more than 2 digits, then the unit price on the printed report has the same quantity of digits set on "Product Price" Decimal Accuracy when Argentinean invoice report is printed. Ticket Adhoc side: 77471 Task latam: 1226 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#200117 Forward-Port-Of: odoo/odoo#171131
Steps to reproduce: - create a new quotation - select a customer with another langage than the current user - add a product - add a discount using the discount button (select "global amount" or "fixed amount") Problem: Inside "order lines" from the quotation, the "description" column in the line created for the discount product is not translated. https://github.com/odoo/odoo/blob/c62e8d90db481fb7ba28e888431b6a7dc5ed03cd/addons/sale/wizard/sale_order_discount.py#L126 opw-4534846 Fo
Original PR description
Steps to reproduce: - create a new quotation - select a customer with another langage than the current user - add a product - add a discount using the discount button (select "global amount" or "fixed amount") Problem: Inside "order lines" from the quotation, the "description" column in the line created for the discount product is not translated. https://github.com/odoo/odoo/blob/c62e8d90db481fb7ba28e888431b6a7dc5ed03cd/addons/sale/wizard/sale_order_discount.py#L126 opw-4534846 Forward-Port-Of: odoo/odoo#200203 Forward-Port-Of: odoo/odoo#197892
Currently if you change the type of a combo product to something else, the combo_ids are still saved and in the pos it will use them and open a selection popup. Steps to reproduce: ------------------- * Go in the products * Select Burger Combo * Change the type to "Goods" and save * Open restaurant * Select burger combo > Observation: Selection popup for combo ids appears. Why the fix: ------------ When changing the type of product we remove the combo_ids from the product form. Wi
Original PR description
Currently if you change the type of a combo product to something else, the combo_ids are still saved and in the pos it will use them and open a selection popup. Steps to reproduce: ------------------- * Go in the products * Select Burger Combo * Change the type to "Goods" and save * Open restaurant * Select burger combo > Observation: Selection popup for combo ids appears. Why the fix: ------------ When changing the type of product we remove the combo_ids from the product form. Without combo_ids no popup appears. opw-4513392 Forward-Port-Of: odoo/odoo#201129 Forward-Port-Of: odoo/odoo#198743
In [1] when the web client was rewritten in OWL, the `noContextKeys` parameter behavior was lost (only the `shadow` `settings` was used). In [2] the `_rpc` was overridden, losing the `noContextKeys` parameter. Because of each of these, even though the HTML Editor always fetched a `en_US` version of the page for edition, upon save, the current user's language was being used upon save, leading to the loss of translations. This commit fixes the issue by removing the mentioned keys from the co
Original PR description
In [1] when the web client was rewritten in OWL, the `noContextKeys` parameter behavior was lost (only the `shadow` `settings` was used). In [2] the `_rpc` was overridden, losing the `noContextKeys`…
In [1] when the web client was rewritten in OWL, the `noContextKeys` parameter behavior was lost (only the `shadow` `settings` was used). In [2] the `_rpc` was overridden, losing the `noContextKeys` parameter. Because of each of these, even though the HTML Editor always fetched a `en_US` version of the page for edition, upon save, the current user's language was being used upon save, leading to the loss of translations. This commit fixes the issue by removing the mentioned keys from the context in the `legacyEnv.session.rpc` rather than getting rid of that parameter completely because since [3] the user context is always included in the rpc context - which would restore the language. Steps to reproduce: - Set user's language to Dutch. - Add Dutch as the default language of a website. - Create a new Dutch page. - Drop an accordion snippet. - Switch website preview to English. - Translate the first title. - Save. - Edit the page with the HTML Editor (English version is edited). - Make some minor change, even adding a space is enough. - Save. => Dutch text was lost and replaced by the last saved version. [1]: https://github.com/odoo/odoo/commit/0573acae2306bf5da2005852da9323ddc59e5431#diff-851c304e3f2a64138c1ff0f3de9856184dbfa0114da3fd76af0309eabe72043eR134 [2]: https://github.com/odoo/odoo/commit/55f1680c74d3b64c3319ba114f7ba3e3f7b49be3 [3]: https://github.com/odoo/odoo/commit/2192480ed1262a13db8e6b0dd945ea91dee91aa9 opw-3493355 Forward-Port-Of: odoo/odoo#201075 Forward-Port-Of: odoo/odoo#142894
**Problem**: The table menu doesn't appear when hovering over `th` elements. **Solution**: Treat `th` elements the same way as `td` to ensure the menu appears. **Steps to Reproduce**: 1. Setup an editor with the following HTML structure: `<table class="table table-bordered o_table">` ` <tbody>` ` <tr>` ` <th><div class="o-paragraph">Header 1</div></th>` ` <th><div class="o-paragraph">Header 2</div></th>` ` </tr>` ` <tr>` ` <td><div
Original PR description
**Problem**: The table menu doesn't appear when hovering over `th` elements. **Solution**: Treat `th` elements the same way as `td` to ensure the menu appears. **Steps to Reproduce**: 1. Setup an editor with the following HTML structure: `<table class="table table-bordered o_table">` ` <tbody>` ` <tr>` ` <th><div class="o-paragraph">Header 1</div></th>` ` <th><div class="o-paragraph">Header 2</div></th>` ` </tr>` ` <tr>` ` <td><div class="o-paragraph">Content 1</div></td>` ` <td><div class="o-paragraph">Content 2</div></td>` ` </tr>` ` </tbody>` `</table>` 2. Hover over "Header 1". 3. The table menu does not appear. opw-4610578 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#199751
Steps: Go to a pivot view with: - either a predefined sort on the action/filter. - sort by a measure then uncheck the measure. We can't keep the sorting because the sorting is done client-side. If the field is not part of the measures, we don't have the data to sort... Task: 4467262 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.
Original PR description
Steps: Go to a pivot view with: - either a predefined sort on the action/filter. - sort by a measure then uncheck the measure. We can't keep the sorting because the sorting is done client-side. If the field is not part of the measures, we don't have the data to sort... Task: 4467262 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#193739
Steps to reproduce: - Turn on dark mode - Open the Field Service app. - Click on "Add Product" to navigate to the product catalog. Issue: - An extra white background appears below the product image. Solution: - Updated the CSS to apply `--ImageField-background-color` directly to the `<img>` tag instead of the `.o_field_image` parent div. This prevents unwanted white spaces below the parent container The change has been applied globally to all `.o_field_image` elements, as th
Original PR description
Steps to reproduce: - Turn on dark mode - Open the Field Service app. - Click on "Add Product" to navigate to the product catalog. Issue: - An extra white background appears below the product image. Solution: - Updated the CSS to apply `--ImageField-background-color` directly to the `<img>` tag instead of the `.o_field_image` parent div. This prevents unwanted white spaces below the parent container The change has been applied globally to all `.o_field_image` elements, as the `.o_field_image` class is always on the parent `<div>`, not on the `<img>` tag. task-4302221 Forward-Port-Of: odoo/odoo#197103
This commit fixes the following issues: - Only re-raise `InsufficientCreditError` from IAP. `UserError`, `AccessError` and `ReadTimeout` shouldn't be re-raised, they should considered as an internal error of the IAP server. - Instead of raising a `requests.exceptions.ConnectionError` in case of an unknown error from IAP (which didn't make much sense), it will now raise a `IAPServerError` - The logging level has been changed from `exception` to `warning`. There is indeed no useful information
Original PR description
This commit fixes the following issues: - Only re-raise `InsufficientCreditError` from IAP. `UserError`, `AccessError` and `ReadTimeout` shouldn't be re-raised, they should considered as an internal error of the IAP server. - Instead of raising a `requests.exceptions.ConnectionError` in case of an unknown error from IAP (which didn't make much sense), it will now raise a `IAPServerError` - The logging level has been changed from `exception` to `warning`. There is indeed no useful information in the logged traceback as the interesting part is in the traceback on the IAP server logs. Forward-Port-Of: odoo/odoo#201089 Forward-Port-Of: odoo/odoo#199286
**How to reproduce:** - Create a user, assign it to a team (in multi-team, or not) - Archive this user - Open the list of members (CRM>Configuration in debug mode) - The team member has not been archived **Technical Reason:** When user is archived, its respective record in crm_team_member is not updated. **After this PR:** When user is archived, their linked sales team member will also be archived. Task-4617779 Forward-Port-Of: odoo/odoo#200664
Original PR description
**How to reproduce:** - Create a user, assign it to a team (in multi-team, or not) - Archive this user - Open the list of members (CRM>Configuration in debug mode) - The team member has not been archived **Technical Reason:** When user is archived, its respective record in crm_team_member is not updated. **After this PR:** When user is archived, their linked sales team member will also be archived. Task-4617779 Forward-Port-Of: odoo/odoo#200664
Steps: - Open Settings - Configure document layout - Set address to "123 avenue bois cambre" (just an example) - Choose a new layout, bubble for example Actual result: - Address is wrapped after "bois" without reason by wkhtmltopdf  Expected result: - Address is not wrapped Seems good for standard, bold and striped layout, Updating it to be aligned with other and to ensure no-wrap opw-4
Original PR description
Steps: - Open Settings - Configure document layout - Set address to "123 avenue bois cambre" (just an example) - Choose a new layout, bubble for example Actual result: - Address is wrapped after "bois" without reason by wkhtmltopdf  Expected result: - Address is not wrapped Seems good for standard, bold and striped layout, Updating it to be aligned with other and to ensure no-wrap opw-4637433 Forward-Port-Of: odoo/odoo#201198
When installing l10n_dk_audit_trail module, the audit trail option wasn't checked by default task-4575368 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#200709 Forward-Port-Of: odoo/odoo#198355
Original PR description
When installing l10n_dk_audit_trail module, the audit trail option wasn't checked by default task-4575368 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#200709 Forward-Port-Of: odoo/odoo#198355
In Guatemala, both sales and purchases VAT are tax_included. Currently, in version 18.0, only sales VAT has the tax_included configured. But it should be both. On previous versions of Odoo, this was correctly configured as can be seen here: https://github.com/odoo/odoo/blob/17.0/addons/l10n_gt/data/template/account.tax-gt.csv?plain=1#L2 Here, the price_include field is True for both. Version 18.0 should have this same behavior. Fixes #201036 Description of the issue/feature thi
Original PR description
In Guatemala, both sales and purchases VAT are tax_included. Currently, in version 18.0, only sales VAT has the tax_included configured. But it should be both. On previous versions of Odoo, this was correctly configured as can be seen here: https://github.com/odoo/odoo/blob/17.0/addons/l10n_gt/data/template/account.tax-gt.csv?plain=1#L2 Here, the price_include field is True for both. Version 18.0 should have this same behavior. Fixes #201036 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#201038
Currently, the customer display can only be viewed in English. opw-4419620 Forward-Port-Of: odoo/odoo#201229
Original PR description
Currently, the customer display can only be viewed in English. opw-4419620 Forward-Port-Of: odoo/odoo#201229
We recently enabled recaptcha on the registration form in [1] Turnstile can be implemented on top of it by just invoking the turnstile script in js. As it's implicitly checked when recaptcha is checked, this also avoids any issue with the form potentially not working if turnstile is enabled. [1]: bafa915f85fb8fc6ca2ae7d194a4593cb2463c2e task-4335141 Forward-Port-Of: odoo/odoo#200049 Forward-Port-Of: odoo/odoo#192827
Original PR description
We recently enabled recaptcha on the registration form in [1] Turnstile can be implemented on top of it by just invoking the turnstile script in js. As it's implicitly checked when recaptcha is checked, this also avoids any issue with the form potentially not working if turnstile is enabled. [1]: bafa915f85fb8fc6ca2ae7d194a4593cb2463c2e task-4335141 Forward-Port-Of: odoo/odoo#200049 Forward-Port-Of: odoo/odoo#192827
Currently, using the tax '12% agri' on a Vendor Bill makes the document impossible to validate because of the error `1166 - Valor del campo Tipoimpositivo no está incluido en la lista de valores permitidos` Steps to reproduce: - Have l10n_es_edi_sii module installed and have a tax agency selected. - Make a Bill using '12% agri' tax Issue: When sending the bill for validation the error is raised. This occurs because the field "ClaveRegimenEspecialOTrascendencia" is set to "01", whe
Original PR description
Currently, using the tax '12% agri' on a Vendor Bill makes the document impossible to validate because of the error `1166 - Valor del campo Tipoimpositivo no está incluido en la lista de valores…
Currently, using the tax '12% agri' on a Vendor Bill makes the document impossible to validate because of the error `1166 - Valor del campo Tipoimpositivo no está incluido en la lista de valores permitidos` Steps to reproduce: - Have l10n_es_edi_sii module installed and have a tax agency selected. - Make a Bill using '12% agri' tax Issue: When sending the bill for validation the error is raised. This occurs because the field "ClaveRegimenEspecialOTrascendencia" is set to "01", when it should be "02" for exempt taxes. Also, in this case TipoImpositivo and CuotaSoportada should be replaced by PorcentCompensacionREAGYP and ImporteCompensacionREAGYP https://sede.agenciatributaria.gob.es/Sede/iva/regimenes-tributacion-iva/regimen-especial-agricultura-ganaderia-pesca/que-consiste-regimen-especial-agricultura-pesca.html https://sede.agenciatributaria.gob.es/static_files/Sede/Procedimiento_ayuda/G417/FicherosSuministros/V_1_1/Validaciones_ErroresSII_v1.1.pdf opw-4486190 Forward-Port-Of: odoo/odoo#199635 Forward-Port-Of: odoo/odoo#196017
Steps to reproduce : - Open accounting and select the 3 dots on the top right corner of Bank in the dashboard - Select "Configuration" - In the Incoming Payments, for a payment method, change the name to an empty string - Make sure that this payment method has an "Outstanding Receipts accounts" - Open Customers/Invoices and open an invoice that is not paid - Click on "Pay" - Select the unamed payment method - Click on Create Payment Problem : An error message appears https://githu
Original PR description
Steps to reproduce : - Open accounting and select the 3 dots on the top right corner of Bank in the dashboard - Select "Configuration" - In the Incoming Payments, for a payment method, change the name to an empty string - Make sure that this payment method has an "Outstanding Receipts accounts" - Open Customers/Invoices and open an invoice that is not paid - Click on "Pay" - Select the unamed payment method - Click on Create Payment Problem : An error message appears https://github.com/odoo/odoo/blob/9a27b53e6dacf7380dac6da5ae84f39f2812c9f7/addons/account/models/account_payment.py#L337 opw-4574452 Forward-Port-Of: odoo/odoo#198646
**Steps:** - Install Ecom - Add some products to the cart - Go to my/orders - select any order then click on Order again - Click on the Add To Cart button - You'll see one confirmation dialog, click on the close button of that dialog **Issue:** - By clicking on close dialog should get closed but instead, products are added in the cart **Cause:** - Default close method provided in the setup method of the confirmation dialog component **Fix:** - While extending the confirmation d
Original PR description
**Steps:** - Install Ecom - Add some products to the cart - Go to my/orders - select any order then click on Order again - Click on the Add To Cart button - You'll see one confirmation dialog, click on the close button of that dialog **Issue:** - By clicking on close dialog should get closed but instead, products are added in the cart **Cause:** - Default close method provided in the setup method of the confirmation dialog component **Fix:** - While extending the confirmation dialog we overwrite the default close method defined in Confirmation Dialog component affected version-16.0 opw-4566505 Forward-Port-Of: odoo/odoo#199837 Forward-Port-Of: odoo/odoo#199567
This reverts commit aef59e06d8d0ba388cd781fd9a9511d6ff74ea05. It was wrongly assumed that `_getRpcParameters` was useless in `s_dynamic_snippet_products`. It adds a parameter `productTemplateId` to the request to `/website/snippet/filters` which is used by `ir.actions.server`: - `dynamic_snippet_accessories_action`, - `dynamic_snippet_recently_sold_with_action`, - `dynamic_snippet_alternative_products`. Forward-Port-Of: odoo/odoo#201235 Forward-Port-Of: odoo/odoo#201158
Original PR description
This reverts commit aef59e06d8d0ba388cd781fd9a9511d6ff74ea05. It was wrongly assumed that `_getRpcParameters` was useless in `s_dynamic_snippet_products`. It adds a parameter `productTemplateId` to the request to `/website/snippet/filters` which is used by `ir.actions.server`: - `dynamic_snippet_accessories_action`, - `dynamic_snippet_recently_sold_with_action`, - `dynamic_snippet_alternative_products`. Forward-Port-Of: odoo/odoo#201235 Forward-Port-Of: odoo/odoo#201158
[1] migrates jquery for event form modal display for the more standard modal.js component. This means the modal is not yet added to the document when `_addTurnstile` is added which makes rendering fail. We now wait for the modal to be shown before adding turnstile. [1]: 8510021c1b5395fb2cb134bbeab93ecd536ba5a6 task-4335141 Forward-Port-Of: odoo/odoo#200648
Original PR description
[1] migrates jquery for event form modal display for the more standard modal.js component. This means the modal is not yet added to the document when `_addTurnstile` is added which makes rendering fail. We now wait for the modal to be shown before adding turnstile. [1]: 8510021c1b5395fb2cb134bbeab93ecd536ba5a6 task-4335141 Forward-Port-Of: odoo/odoo#200648
Problem ---------- It is impossible to import batch of data with allocation_type set to 'accrual' and an allocation duration Objective ---------- - DO NOT make it possible by removing the readonly attribute on the allocation_type field - Allow the user to set directly an accrual plan and the allocation_type will be set automatically accordingly - Same fot the allocation duration make it importable Solution ---------- - Accrual plan : create an inverse, if accrual plan exists set al
Original PR description
Problem ---------- It is impossible to import batch of data with allocation_type set to 'accrual' and an allocation duration Objective ---------- - DO NOT make it possible by removing the readonly attribute on the allocation_type field - Allow the user to set directly an accrual plan and the allocation_type will be set automatically accordingly - Same fot the allocation duration make it importable Solution ---------- - Accrual plan : create an inverse, if accrual plan exists set allocation type to accrual else regular - Allocation duration, make an inverse to make it compatible export/import. It will parse the float value from the string. task-4521658 Forward-Port-Of: odoo/odoo#197580
On the amount field, the tip for percentage amount was always displayed, whether the percentage or fixed amount option was selected. Fwd port of https://github.com/odoo/odoo/commit/c63f6c2308ab9d0c7216b592c7873a6db24f0378 16.0 PR : https://github.com/odoo/odoo/pull/200919 Forward-Port-Of: odoo/odoo#201052 Forward-Port-Of: odoo/odoo#200928
Original PR description
On the amount field, the tip for percentage amount was always displayed, whether the percentage or fixed amount option was selected. Fwd port of https://github.com/odoo/odoo/commit/c63f6c2308ab9d0c7216b592c7873a6db24f0378 16.0 PR : https://github.com/odoo/odoo/pull/200919 Forward-Port-Of: odoo/odoo#201052 Forward-Port-Of: odoo/odoo#200928
- Incorrect "Sent" Status: When generating the XML with the UBL checkbox selected but without checking the Nilvera option, the move was incorrectly marked as "Sent" (is_move_sent). This behavior has been corrected. - Traceback During Send and Print with Nilvera: In the flow where the XML is first generated with UBL, and then the Send and Print action is performed with Nilvera, a traceback appeared since the ubl_cii_xml_attachment_values was not in the invoice_data anymore. Also Nilver
Original PR description
- Incorrect "Sent" Status: When generating the XML with the UBL checkbox selected but without checking the Nilvera option, the move was incorrectly marked as "Sent" (is_move_sent). This behavior has been corrected. - Traceback During Send and Print with Nilvera: In the flow where the XML is first generated with UBL, and then the Send and Print action is performed with Nilvera, a traceback appeared since the ubl_cii_xml_attachment_values was not in the invoice_data anymore. Also Nilvera didn't accept the xml because they needed the issues date of the document to accept it. - City Name and Subdivision Inversion in XML The values in the CitySubDivisionName and CityName elements of the XML were inverted. This has been corrected to align with the expected structure. task-4457092 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#200347 Forward-Port-Of: odoo/odoo#192733
This error occurs when user deletes the Picking Operations action. Steps to Reproduce : - Install the `Stock` module. - Navigate to Settings > Technical > Actions. - Search for `Picking Operations` in the list of actions. - Delete the `Picking Operations` action. - Go to Inventory > Operations and open any `Receipt`. - Click on the `Print` button. ValueError: External ID not found in the system: stock.action_report_picking This error occurs when the system attempts to access the
Original PR description
This error occurs when user deletes the Picking Operations action. Steps to Reproduce : - Install the `Stock` module. - Navigate to Settings > Technical > Actions. - Search for `Picking Operations` in the list of actions. - Delete the `Picking Operations` action. - Go to Inventory > Operations and open any `Receipt`. - Click on the `Print` button. ValueError: External ID not found in the system: stock.action_report_picking This error occurs when the system attempts to access the Picking Operations action, but it has been deleted. To resolve this issue, restrict the deletion of the `Picking Operations` report from the `ir actions`, to ensure that users cannot delete it (except during the module uninstallation), and also raise a user error for already existing DBs where `Picking Operations` has been deleted. Sentry - 6302556324 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#198796
During the upgrade tests the test module will start with `odoo.upgrade` instead of `odoo.addons` Fixing the canonical tag to work in both cases. Forward-Port-Of: odoo/odoo#200942
Original PR description
During the upgrade tests the test module will start with `odoo.upgrade` instead of `odoo.addons` Fixing the canonical tag to work in both cases. Forward-Port-Of: odoo/odoo#200942
In this commit: ========== - We have introduced a new module, `pos_pine_labs`, for the `Pine Labs` payment terminal to facilitate point of sale payment methods. - We are exporting `offlineErrorHandler` from `point_of_sale`'s `error_handlers` to use in the `pos_pine_labs` module. task-4359883 Forward-Port-Of: odoo/odoo#189300
Original PR description
In this commit: ========== - We have introduced a new module, `pos_pine_labs`, for the `Pine Labs` payment terminal to facilitate point of sale payment methods. - We are exporting `offlineErrorHandler` from `point_of_sale`'s `error_handlers` to use in the `pos_pine_labs` module. task-4359883 Forward-Port-Of: odoo/odoo#189300
The text advertising the UBL functionality is in purchase rather than in the UBL module itself. This way if someone have purchase but not UBL, which is the actual case in internal, one will see a button on how to import the PO when he actually can't. This PR makes the button in the portal PO view invisible and set it visible in an inherited view that is created once the UBL module is installed, preventing this way the message to display when it should not opw-4465049 Description of the
Original PR description
The text advertising the UBL functionality is in purchase rather than in the UBL module itself. This way if someone have purchase but not UBL, which is the actual case in internal, one will see a button on how to import the PO when he actually can't. This PR makes the button in the portal PO view invisible and set it visible in an inherited view that is created once the UBL module is installed, preventing this way the message to display when it should not opw-4465049 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#198289
We call NotSupportedError with the keyword "new" in order to avoid this kind of errors in py_js: UncaughtPromiseError > TypeError Uncaught Promise > Class constructor NotSupportedError cannot be invoked without 'new' ... Forward-Port-Of: odoo/odoo#200971
Original PR description
We call NotSupportedError with the keyword "new" in order to avoid this kind of errors in py_js: UncaughtPromiseError > TypeError Uncaught Promise > Class constructor NotSupportedError cannot be invoked without 'new' ... Forward-Port-Of: odoo/odoo#200971
In b2200c8928b240d78f2f24ced39a0d45c928a666, we added a feature to show a warning background in the vendor bills list view if it had duplicated. However, we had to add the field `duplicated_ref_ids` in the xml view so that we could use it in the JS part. However, this field will only be available in JS upon upgrading the `account` module. To avoid this, we now check that `duplicated_ref_ids` is defined before accessing its `count`. opw-none Forward-Port-Of: odoo/odoo#201193
Original PR description
In b2200c8928b240d78f2f24ced39a0d45c928a666, we added a feature to show a warning background in the vendor bills list view if it had duplicated. However, we had to add the field `duplicated_ref_ids` in the xml view so that we could use it in the JS part. However, this field will only be available in JS upon upgrading the `account` module. To avoid this, we now check that `duplicated_ref_ids` is defined before accessing its `count`. opw-none Forward-Port-Of: odoo/odoo#201193
Before this commit, the total for each group or the grand total displayed in the list view of task for the progress field is formatted as a float instead of a percentage. The reason is because the framework does not find the formatter associated to that widget and so we will take the default formatter for float field. This commit adds a formatter for the widget to be sure the framework formats the total displayed in the list view in percentage. Forward-Port-Of: odoo/odoo#200932
Original PR description
Before this commit, the total for each group or the grand total displayed in the list view of task for the progress field is formatted as a float instead of a percentage. The reason is because the framework does not find the formatter associated to that widget and so we will take the default formatter for float field. This commit adds a formatter for the widget to be sure the framework formats the total displayed in the list view in percentage. Forward-Port-Of: odoo/odoo#200932
In order to be created, virtual operators like "is", "not_set" need field definitions to be known. It turns out that in sub trees corresponding to sub domains for any/not_any operators), the virtual operators are not created because: - the option getFieldDef is not passed when constructing sub trees - the getFieldDef function does not collect info on paths in sub trees. Here we solve each problem so that when modifying the tree in some way all virtual operators are restored correctly. For i
Original PR description
In order to be created, virtual operators like "is", "not_set" need field definitions to be known. It turns out that in sub trees corresponding to sub domains for any/not_any operators), the virtual operators are not created because: - the option getFieldDef is not passed when constructing sub trees - the getFieldDef function does not collect info on paths in sub trees. Here we solve each problem so that when modifying the tree in some way all virtual operators are restored correctly. For instance if a condition involving a boolean field like "Active is not set" is found in a sub tree, and a condition is added/removed elsewhere, the above condition will remain the same and not become "Active = False". Forward-Port-Of: odoo/odoo#201080 Forward-Port-Of: odoo/odoo#200592
Steps to reproduce: - 1. Activate audit trail. 2. Make a customer invoice with start and end date [end date should be in future months], and post. 3. Reset the invoice to draft - Result: All deferred entries are reversed with new entries at the date of the reset to draft. The unposted deferred entries are still there with auto post At Date. Cause: - Audit trail alone doesn't prevent the moves from being deleted if they were not posted before, so the check shouldn't be only on the com
Original PR description
Steps to reproduce: - 1. Activate audit trail. 2. Make a customer invoice with start and end date [end date should be in future months], and post. 3. Reset the invoice to draft - Result: All deferred entries are reversed with new entries at the date of the reset to draft. The unposted deferred entries are still there with auto post At Date. Cause: - Audit trail alone doesn't prevent the moves from being deleted if they were not posted before, so the check shouldn't be only on the company_id.check_account_audit_trail, but also we should consider move.posted_before and if not, it should be deleted not reversed. Fix: - Replace the company_id.check_account_audit_trail check with _is_protected_by_audit_trail() which includes checking if the move is posted before or not. opw - 4562732 Forward-Port-Of: odoo/enterprise#81061
[FIX] l10n_ar: price unit precision digits on invoice report. This pr was created to adapt l10n_ar_reports/tests/IVA_Ventas.txt and l10n_ar_reports/tests/Ventas.txt files to the changes of https://github.com/odoo/odoo/pull/171131/commits/95bd2d3677f6b534e9eb660e9757e87cf778d7b5 Ticket Adhoc side: 77471 Task latam: 1226 Forward-Port-Of: odoo/enterprise#80650 Forward-Port-Of: odoo/enterprise#77800
Original PR description
[FIX] l10n_ar: price unit precision digits on invoice report. This pr was created to adapt l10n_ar_reports/tests/IVA_Ventas.txt and l10n_ar_reports/tests/Ventas.txt files to the changes of https://github.com/odoo/odoo/pull/171131/commits/95bd2d3677f6b534e9eb660e9757e87cf778d7b5 Ticket Adhoc side: 77471 Task latam: 1226 Forward-Port-Of: odoo/enterprise#80650 Forward-Port-Of: odoo/enterprise#77800
This is an enhancment on the fix **e68f4a0214053e** It adds a default name for the draft entries in the general ledger report, instead of leaving the entry empty and not showing anything for it. This change is simillar to https://github.com/odoo-dev/enterprise/commit/5743dd52af1060bc0d2c5d16021428bfdc626140 opw-4609221 Forward-Port-Of: odoo/enterprise#80555
Original PR description
This is an enhancment on the fix **e68f4a0214053e** It adds a default name for the draft entries in the general ledger report, instead of leaving the entry empty and not showing anything for it. This change is simillar to https://github.com/odoo-dev/enterprise/commit/5743dd52af1060bc0d2c5d16021428bfdc626140 opw-4609221 Forward-Port-Of: odoo/enterprise#80555
To reproduce: - create two repeating planning.slot records, Shift A and Shift B - delete Shift A and all of its repeats - delete only the last repeat of Shift B - run the "Planning: generate next recurring shifts" scheduled action - Cron fails with "record is missing or deleted" error Problem: The function to create the repeat shifts (planning.recurrency _repeat_slot) iterates over recurrences and deletes them if there are 0 existing shifts linked to them (i.e. Shift A's reccurency). On
Original PR description
To reproduce: - create two repeating planning.slot records, Shift A and Shift B - delete Shift A and all of its repeats - delete only the last repeat of Shift B - run the "Planning: generate next recurring shifts" scheduled action - Cron fails with "record is missing or deleted" error Problem: The function to create the repeat shifts (planning.recurrency _repeat_slot) iterates over recurrences and deletes them if there are 0 existing shifts linked to them (i.e. Shift A's reccurency). On a subsequent loop iteration, an attempt is made to access the company_id field of the recordset (self) which will now contain a deleted planning.recurrency record, causing the missing record error. Solution: Access the company_id field on the current iterated planning.recurrency record instead of the 'self' recordset. opw-4457844 Forward-Port-Of: odoo/enterprise#81166
Steps to reproduce ================== - Install documents,project - Go to documents - Open any document - Click on share - Click on "Copy link" - Go to a project task - Click on a log note - Open the full composer - Type some text and select it - Paste the copied url - Post the log note - Click on the link => Missing Action: the action "..." does not exist Cause of the issue ================== Documents [redirects] `/odoo/documents/<access-token>` to either the backend o
Original PR description
Steps to reproduce ================== - Install documents,project - Go to documents - Open any document - Click on share - Click on "Copy link" - Go to a project task - Click on a log note - Open the full composer - Type some text and select it - Paste the copied url - Post the log note - Click on the link => Missing Action: the action "..." does not exist Cause of the issue ================== Documents [redirects] `/odoo/documents/<access-token>` to either the backend or the portal. There is a global click handler in the router that intercepts click on links to update and push the router state. Solution ======== We should not handle those links, the http redirection will take care of it. --- [redirects]: https://github.com/odoo/enterprise/blob/882e4453c8eadae8e39ea02314377c617d3b9e0f/documents/controllers/home.py#L24 opw-4611260 Forward-Port-Of: odoo/enterprise#81016
No need to fetch available embedded actions on inaccessible folders. FU of d391313e. Task-4525850 Forward-Port-Of: odoo/enterprise#81049
Original PR description
No need to fetch available embedded actions on inaccessible folders. FU of d391313e. Task-4525850 Forward-Port-Of: odoo/enterprise#81049
Steps: Go to a pivot view with: - either a predefined sort on the action/filter. - sort by a measure then uncheck the measure. We can't keep the sorting because the sorting is done client-side. If the field is not part of the measures, we don't have the data to sort... Task: 4467262 Forward-Port-Of: odoo/enterprise#76882
Original PR description
Steps: Go to a pivot view with: - either a predefined sort on the action/filter. - sort by a measure then uncheck the measure. We can't keep the sorting because the sorting is done client-side. If the field is not part of the measures, we don't have the data to sort... Task: 4467262 Forward-Port-Of: odoo/enterprise#76882
Steps to reproduce: - Turn on dark mode - Open the Field Service app. - Click on "Add Product" to navigate to the product catalog. Issue: - An image placeholder appears when no image is set for a product. This behavior is inconsistent with the product catalog page in the Sales app. Solution: - Removed the XPath that adds the image placeholder in the product catalog. task-4302221 Forward-Port-Of: odoo/enterprise#78937
Original PR description
Steps to reproduce: - Turn on dark mode - Open the Field Service app. - Click on "Add Product" to navigate to the product catalog. Issue: - An image placeholder appears when no image is set for a product. This behavior is inconsistent with the product catalog page in the Sales app. Solution: - Removed the XPath that adds the image placeholder in the product catalog. task-4302221 Forward-Port-Of: odoo/enterprise#78937
Create a new module to export payroll data for Acerta. **NOTE during fw port I need to move the test for the other ss to the main test module** task-3750799 Forward-Port-Of: odoo/enterprise#71683
Original PR description
Create a new module to export payroll data for Acerta. **NOTE during fw port I need to move the test for the other ss to the main test module** task-3750799 Forward-Port-Of: odoo/enterprise#71683
We're adding support for recaptcha in appointment forms to prevent bots from easily filling up slots. In 17.0 cloudflare turnstile is added as an alternative and/or fallback for recaptcha. We adapt the js code to call the cloudflare client API which gives us support of this feature "for free" as all of the logic is already implemented for the check. task-4335141 Forward-Port-Of: odoo/enterprise#80613 Forward-Port-Of: odoo/enterprise#76672
Original PR description
We're adding support for recaptcha in appointment forms to prevent bots from easily filling up slots. In 17.0 cloudflare turnstile is added as an alternative and/or fallback for recaptcha. We adapt the js code to call the cloudflare client API which gives us support of this feature "for free" as all of the logic is already implemented for the check. task-4335141 Forward-Port-Of: odoo/enterprise#80613 Forward-Port-Of: odoo/enterprise#76672
Forward-Port-Of: odoo/enterprise#81017
Original PR description
Forward-Port-Of: odoo/enterprise#81017
Problem ---------- wrong behaviour with the number_of_days_display / number_of_hours_display / number_of_days : Objective ---------- Fix the TestHR.test_flow : in the creation of leave allocation. Only number_of_days_display can have a value. But with a leave_type.request_unit = 'hour', number_of_hours_display should be used Solution ---------- Depends on the visibility of number_of_days_display and number_of_hours_display, put the value in the good field task-4521658 Forward-Po
Original PR description
Problem ---------- wrong behaviour with the number_of_days_display / number_of_hours_display / number_of_days : Objective ---------- Fix the TestHR.test_flow : in the creation of leave allocation. Only number_of_days_display can have a value. But with a leave_type.request_unit = 'hour', number_of_hours_display should be used Solution ---------- Depends on the visibility of number_of_days_display and number_of_hours_display, put the value in the good field task-4521658 Forward-Port-Of: odoo/enterprise#80400