Wednesday, March 12, 2025
66 changes · saas-18.2
Enhancements to existing features
RTC call logs now capture clearer formatting and more useful call details. This helps support and development teams investigate call issues more efficiently without changing the user experience.
Original PR description
This commit changes the formatting and adds useful information to the logging snapshots of RTC calls.
Resolved issues and error corrections
Miscellaneous changes
\* = im_livechat, crm_livechat The issue manifested in several ways: first of all, the country flag was not displaying on the channel header for the visitor, but more importantly the invitation link of the channel crashed due to the store result not being JSON serializable. "visitor" key in channel store is a dictionnary rather than a record, so it can only contain primitive values and not Store constructs. This commit changes the format to properly take the record and flatten its data
Original PR description
\* = im_livechat, crm_livechat The issue manifested in several ways: first of all, the country flag was not displaying on the channel header for the visitor, but more importantly the invitation link of the channel crashed due to the store result not being JSON serializable. "visitor" key in channel store is a dictionnary rather than a record, so it can only contain primitive values and not Store constructs. This commit changes the format to properly take the record and flatten its data instead. This fixes the issue and ensure each visitor data is only present once in the payload. The opportunity is taken to add missing demo data to more easily detect the issue in day to day development. task-4637944 https://github.com/odoo/enterprise/pull/81177 Forward-Port-Of: odoo/odoo#201228
This fix updates security group data so user access groups appear in the intended order after recent user interface changes. It helps administrators see and manage permissions more consistently across multiple Odoo apps.
Original PR description
Since the change of res.users from view (UI for groups), the sequence is used, but the data has not been updated. related: https://github.com/odoo/odoo/commit/2258fe4071f15ae72ab3384de6bbe43ff0db5848
A missing access setting for a test user was restored so pricelists are visible where expected. This prevents automated product pricing tests from failing and helps keep pricing-related functionality stable.
Original PR description
In the PR https://github.com/odoo/odoo/pull/179354 The line that added pricelist group to the test user was removed and was not adapted, leading to errors as the pricelist was not visible in the view. This commit brings back the addition of group and adapts it to the changes made by the PR above. Runbot Error: https://runbot.odoo.com/odoo/error/134223 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update adds missing ordering information for user access groups across several Odoo apps. It helps keep the user permissions screen organized and consistent after recent interface changes.
Original PR description
Since the change of res.users from view (UI for groups), the sequence is used, but the data has not been updated. related: https://github.com/odoo/odoo/commit/2258fe4071f15ae72ab3384de6bbe43ff0db5848
This update ensures the Belgian reporting test uses the fiscal position linked to the same company as the invoice. It prevents incorrect company-specific tax settings from being selected when multiple companies are available, improving reliability of report validation.
Original PR description
Ensure that the correct fiscal position is used in `test_generate_ec_sales_list_activity`. Previously, the search for a fiscal position did not filter by the company where the invoice was created. As a result, it returned the latest "Intra-Community" fiscal position in the database for the allowed companies, potentially leading to incorrect assignments. This commit adds a call to `_check_company_domain` in the search domain, ensuring that the fiscal position is correctly retrieved for the intended company. Bug introduced by: https://github.com/odoo/enterprise/commit/d684d074af82fbd0fac6b3a1c56b4e01a17dd74a runbot-145700
Duplicating appraisal goals now works even when the original goal has no deadline set. This prevents an error in a specific HR appraisal workflow and helps users copy goals more reliably.
Original PR description
Handle the case where goal.deadline is False when the goal is duplicated.
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#201291 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#201291 Forward-Port-Of: odoo/odoo#198355
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
Steps to reproduce the bug: - Create a cash or bank account journal - Archive it (you will have an error, because it is associated with a payment method) - Delete it (it will be deleted normally) Problem: The problem is because of added constraint on the archival of account journal, that wasn't added to the deletion as well. The constraint on the archival was too strict after discussion with accounting team, it should be reverted and a new constraint will be added from the pos side. Now,
Original PR description
Steps to reproduce the bug: - Create a cash or bank account journal - Archive it (you will have an error, because it is associated with a payment method) - Delete it (it will be deleted normally)…
Steps to reproduce the bug: - Create a cash or bank account journal - Archive it (you will have an error, because it is associated with a payment method) - Delete it (it will be deleted normally) Problem: The problem is because of added constraint on the archival of account journal, that wasn't added to the deletion as well. The constraint on the archival was too strict after discussion with accounting team, it should be reverted and a new constraint will be added from the pos side. Now, the journal can't be archived nor deleted if it has at least one payment with payment method for that journal in an active session, because the journal items are written when the session is closed only. So, if the journal is archived with some active payments before closing the session, the journal entries are lost because it fails to write them in archived journal. The constraint is added to both archival and deletion to prevent the possibility of deletion while we can't archive. Testing: A performance testing was held on the new constraint, and based on the profiling the execution time was 0.00 seconds, and the pos.payments test passed successfully. Commits that added the constraint: d430231 5722d52 Tickets that required that constraint: opw-4070620 ------------------------------------------- opw-4554961 opw-4438601 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#200234 Forward-Port-Of: odoo/odoo#199009
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
**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
When a portal user searches for a partner to mention, an error occurs because the suggestion sorting logic relies on Discuss app-specific code. This PR moves the Discuss-dependent code to its specific folder, ensuring proper functionality for portal users. Task-4566702 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#197451
Original PR description
When a portal user searches for a partner to mention, an error occurs because the suggestion sorting logic relies on Discuss app-specific code. This PR moves the Discuss-dependent code to its specific folder, ensuring proper functionality for portal users. Task-4566702 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#197451
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#200079 Forward-Port-Of: odoo/odoo#196017
If the current user and the selected sales team have different company, an error is raised when attempting to create the lead. - If both partner and sales team have company, they must match or the team can't be assigned (it is more important to create the lead, which must be with the company of the partner, implying with no team which is fine as auto-assignation will take care of it). - If one or the other has company, the lead must have this company. - When both have no company, the lead c
Original PR description
If the current user and the selected sales team have different company, an error is raised when attempting to create the lead. - If both partner and sales team have company, they must match or the team can't be assigned (it is more important to create the lead, which must be with the company of the partner, implying with no team which is fine as auto-assignation will take care of it). - If one or the other has company, the lead must have this company. - When both have no company, the lead can have no company. Forward-Port-Of: odoo/odoo#196301
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
Currently, the customer display can only be viewed in English. opw-4419620 Forward-Port-Of: odoo/odoo#201281 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#201281 Forward-Port-Of: odoo/odoo#201229
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
**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 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
- 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#200511 Forward-Port-Of: odoo/odoo#192733
**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 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: - 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
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#201141 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#201141 Forward-Port-Of: odoo/odoo#189300
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
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#201114 Forward-Port-Of: odoo/odoo#200592
### Steps to reproduce: - In the settings: - Add a second language say FR + Change the language - Enable Multi-step routes - Put your warehouse in receipt in 2-steps. - Create a storable product with a different FR name and a set vendor - Click on the "Reordering Rules" smart button of the product form - Create a reordering rule using the buy route for your product - Add a quantity to reorder > "Order Once" - Open the associated purchase order in a second window - Repeat the operation
Original PR description
### Steps to reproduce: - In the settings: - Add a second language say FR + Change the language - Enable Multi-step routes - Put your warehouse in receipt in 2-steps. - Create a storable product with…
### Steps to reproduce: - In the settings: - Add a second language say FR + Change the language - Enable Multi-step routes - Put your warehouse in receipt in 2-steps. - Create a storable product with a different FR name and a set vendor - Click on the "Reordering Rules" smart button of the product form - Create a reordering rule using the buy route for your product - Add a quantity to reorder > "Order Once" - Open the associated purchase order in a second window - Repeat the operation of adding a quantity to reorder > "Order Once" ** A new POL is created instead of being merged to the first one** ### Cause of the issue: Clicking on Order once will trigger a call of the `_run_pull`. At the end of this call, a stock move will be created and confirmed but the user of the env will be replaced by a SUPERUSER_ID for access rights purposes: https://github.com/odoo/odoo/blob/39d7207aae187d055f19c7bce41df8110c045185/addons/stock/models/stock_rule.py#L283-L286 However, while the move data's were correctly generated using the language of the user that clicked on order once: https://github.com/odoo/odoo/blob/39d7207aae187d055f19c7bce41df8110c045185/addons/stock/models/stock_rule.py#L278 https://github.com/odoo/odoo/blob/39d7207aae187d055f19c7bce41df8110c045185/addons/stock/models/stock_rule.py#L315 The language that will be used during the action confirm to compare with the picking description in the procurement values will be the language of the new user that is the SUPERUSER_ID in en_US: https://github.com/odoo/odoo/blob/39d7207aae187d055f19c7bce41df8110c045185/addons/stock/models/stock_move.py#L1451-L1456 This will lead to a set (and incorrect) `product_description_variants` on that procurement. However, this value will be used to determine in the `_run_buy` if an existing POL could absorb the newly created need: https://github.com/odoo/odoo/blob/39d7207aae187d055f19c7bce41df8110c045185/addons/purchase_stock/models/stock_rule.py#L131-L135 https://github.com/odoo/odoo/blob/39d7207aae187d055f19c7bce41df8110c045185/addons/purchase_stock/models/purchase_order_line.py#L341-L350 Since already existing POL will not be found to match the incorrect `product_description_variants` a new one will be created on that same PO. ### Fix: We do not rely on the language of the user in case it is the SUPERUSER_ID. opw-4397376 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#198415 Forward-Port-Of: odoo/odoo#192751
[task-4421055](https://www.odoo.com/odoo/project.task/4421055) Forward-Port-Of: odoo/odoo#200689 Forward-Port-Of: odoo/odoo#195607
Original PR description
[task-4421055](https://www.odoo.com/odoo/project.task/4421055) Forward-Port-Of: odoo/odoo#200689 Forward-Port-Of: odoo/odoo#195607
Extra prices are not displayed in the POS when selecting a combo product with defined combo choices. When a combo product is created with combo choices that have extra prices, those extra prices should be visible in the POS interface. Steps to Reproduce: 1. Create a new combo product with multiple combo choices. 2. Set an extra price for one or more of the combo choices. 3. In the POS, select the combo product. 4. Notice that the extra price is not shown. opw-4485134 --- I co
Original PR description
Extra prices are not displayed in the POS when selecting a combo product with defined combo choices. When a combo product is created with combo choices that have extra prices, those extra prices should be visible in the POS interface. Steps to Reproduce: 1. Create a new combo product with multiple combo choices. 2. Set an extra price for one or more of the combo choices. 3. In the POS, select the combo product. 4. Notice that the extra price is not shown. opw-4485134 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#200749 Forward-Port-Of: odoo/odoo#199076
**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
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 Forward-Port-Of: odoo/odoo#201175
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 Forward-Port-Of: odoo/odoo#201175
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
Dummy display was misaligned (introduced back in odoo/odoo#191340), causing incorrect touch scaling. This fix aligns it with the real display to ensure proper touchscreen synchronization. Task: 4636629 Forward-Port-Of: odoo/odoo#201111
Original PR description
Dummy display was misaligned (introduced back in odoo/odoo#191340), causing incorrect touch scaling. This fix aligns it with the real display to ensure proper touchscreen synchronization. Task: 4636629 Forward-Port-Of: odoo/odoo#201111
- Introduced `ir.config_parameter` settings for product and customer limits in POS. - Refactored partner loading to use configurable customer limit. task-id: 4610131 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#200464 Forward-Port-Of: odoo/odoo#199923
Original PR description
- Introduced `ir.config_parameter` settings for product and customer limits in POS. - Refactored partner loading to use configurable customer limit. task-id: 4610131 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#200464 Forward-Port-Of: odoo/odoo#199923
Since [1], bus subscription to the guest channel is only made explicitly in the CORS bundle. However, race conditions can occur leading to the subscription not being made. This PR ensures we always subcribe to the guest channel. [1]: https://github.com/odoo/odoo/pull/199779 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-
Original PR description
Since [1], bus subscription to the guest channel is only made explicitly in the CORS bundle. However, race conditions can occur leading to the subscription not being made. This PR ensures we always subcribe to the guest channel. [1]: https://github.com/odoo/odoo/pull/199779 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#200914
Before this PR, it was possible to start a new live chat while the rule for the page was "hide_button". The intent of this action is clear: prevent users from creating new chat on this page so we should not allow it throught the feedback panel. Steps to reproduce: - Setup a live chat rule ("/", "hide"). - Start a chat from the contactus page. - Go to another page. - Close the chat: a "new session" button is available while it should not. This PR ensures this button is not shown with th
Original PR description
Before this PR, it was possible to start a new live chat while the rule for the page was "hide_button". The intent of this action is clear: prevent users from creating new chat on this page so we should not allow it throught the feedback panel.
Steps to reproduce:
- Setup a live chat rule ("/", "hide").
- Start a chat from the contactus page.
- Go to another page.
- Close the chat: a "new session" button is available while it should not.
This PR ensures this button is not shown with the "hide_button" rule.
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#200933This 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
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
This PR removes the expertise and language search when inviting a user. It produces a very slow query and doesn't make much sense for to user. When typing "fr" do you wish to have every French-speaking user or your colleague Fred? task-4637517 Forward-Port-Of: odoo/odoo#201127
Original PR description
This PR removes the expertise and language search when inviting a user. It produces a very slow query and doesn't make much sense for to user. When typing "fr" do you wish to have every French-speaking user or your colleague Fred? task-4637517 Forward-Port-Of: odoo/odoo#201127
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
Revert https://github.com/odoo/odoo/commit/fbdf519e0dc8830326a8ac120475966002b8474f The fallback of the currency is already managed automatically since: https://github.com/odoo/odoo/commit/1cf68be0807fbbd040022533ecf6372995296989 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#200590
Original PR description
Revert https://github.com/odoo/odoo/commit/fbdf519e0dc8830326a8ac120475966002b8474f The fallback of the currency is already managed automatically since: https://github.com/odoo/odoo/commit/1cf68be0807fbbd040022533ecf6372995296989 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#200590
Follow-up of https://github.com/odoo/odoo/pull/198093 PR above improved channel invitation UI to show livechat operator languages and expertise, whereas it was only showing the main language. This PR introduced the following crash by mistake: ``` OwlError: Got duplicate key in t-foreach: undefined ``` This happens because the keys were defined as `index`, which is `undefined` thus an operator with at least 3 languages or 2 expertise items made it crash. The intend of `t-key` was
Original PR description
Follow-up of https://github.com/odoo/odoo/pull/198093 PR above improved channel invitation UI to show livechat operator languages and expertise, whereas it was only showing the main language. This PR introduced the following crash by mistake: ``` OwlError: Got duplicate key in t-foreach: undefined ``` This happens because the keys were defined as `index`, which is `undefined` thus an operator with at least 3 languages or 2 expertise items made it crash. The intend of `t-key` was to use the index of item in the respective list, so the `t-value` variable with `_index`, e.g. `language_index`, which this commit fixes. Forward-Port-Of: odoo/odoo#201017
Issue: ----- This issue happens in mobile view only. When a user without any HR access rights tries to assign an Employee to a piece of equipment, they don't see the list of employees as expected. Instead, they get a "No records found!" message. Steps to reproduce: ----- - Install Employees & Maintenance apps - Create a new user and set the following acces rights - Employees -> None - Switch to that user - Go to Maintenance -> Equipment and select an equipment - Ensure the page
Original PR description
Issue: ----- This issue happens in mobile view only. When a user without any HR access rights tries to assign an Employee to a piece of equipment, they don't see the list of employees as expected.…
Issue:
-----
This issue happens in mobile view only. When a user without any HR access rights
tries to assign an Employee to a piece of equipment, they don't see the list of
employees as expected. Instead, they get a "No records found!" message.
Steps to reproduce:
-----
- Install Employees & Maintenance apps
- Create a new user and set the following acces rights
- Employees -> None
- Switch to that user
- Go to Maintenance -> Equipment and select an equipment
- Ensure the page is in mobile display mode (refresh if not already in mode)
- Select an equipment & try to assign an Employee
-> The widget displays a "No records found!" message
Other issue discovered:
-----
There is also a problem for the department field, where the user has access to
the field when in desktop mode but gets an "Access error" in mobile mode.
Cause:
-----
The equipment model stores the owner by referencing a hr.employee. Depending on
the display type, the user will get a simple dropdown list in desktop mode or a
kanban view in mobile mode.
When the kanban view is loaded in mobile mode, since the user does not have read
access to the hr.employee model, the ORM tries to load from the cache. Since it
doesn't find the content of a field (avatar_128 here) in the cache, it clears
the whole record, leading to the "No records found!" message. The hr team has a
workaround for this issue in the form of a custom many2one widget for employee
avatars.
Ticket:
opw-4309746
Forward-Port-Of: odoo/odoo#199146
Forward-Port-Of: odoo/odoo#195718In 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
We only want to compute a journal id for a payment if: - it's a new payment (never saved). - the company changed. task-id: none --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#199573
Original PR description
We only want to compute a journal id for a payment if: - it's a new payment (never saved). - the company changed. task-id: none --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#199573
Similarly to other types of products, combo products must be published to make them available in eCommerce. However, combo item products (i.e. the different choices in a combo) don't need to be published. Unfortunately, if a product is unpublished, public/portal users don't have access to its images, so they won't be shown in the combo configurator. This is a bad UX, as public/portal users are expected to make a product selection, but we don't show them the corresponding images. This PR us
Original PR description
Similarly to other types of products, combo products must be published to make them available in eCommerce. However, combo item products (i.e. the different choices in a combo) don't need to be published. Unfortunately, if a product is unpublished, public/portal users don't have access to its images, so they won't be shown in the combo configurator. This is a bad UX, as public/portal users are expected to make a product selection, but we don't show them the corresponding images. This PR uses the `src` attribute of the `img` tag to show the raw combo item's image instead of using the image url, bypassing access checks. This is done only for combo items that are not published. task-4337641 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#199899 Forward-Port-Of: odoo/odoo#191838
Updated the default behavior to ensure a smoother user experience. Now, the submit button is disabled by default and enabled only after Turnstile has finished loading, whether the captcha is resolved silently or the user passes the challenge manually. This commit introduces a new required, invisible input that is validated only in the callback. This prevents alternatives for form submission, such as pressing Enter inside an input field or password managers that autofill the user/password and
Original PR description
Updated the default behavior to ensure a smoother user experience. Now, the submit button is disabled by default and enabled only after Turnstile has finished loading, whether the captcha is resolved silently or the user passes the challenge manually. This commit introduces a new required, invisible input that is validated only in the callback. This prevents alternatives for form submission, such as pressing Enter inside an input field or password managers that autofill the user/password and autosubmit the form. Note: We don't use a hidden input type because, according to the HTML spec, hidden inputs are not subject to constraint validation. Forward-Port-Of: odoo/odoo#199471
The base URL was being retrieved incorrectly in `_compute_short_url_host()` without considering the current company. This caused the short URL to always use the domain of the company logged into the database, rather than the domain of the selected company. This happens because the base URL was retrieved using `get_current_website()` from the `website` module, which does not consider the company context. As a result, the short URL adapts based on the domain of the last logged-in company, lead
Original PR description
The base URL was being retrieved incorrectly in `_compute_short_url_host()` without considering the current company. This caused the short URL to always use the domain of the company logged into the…
The base URL was being retrieved incorrectly in `_compute_short_url_host()` without considering the current company. This caused the short URL to always use the domain of the company logged into the database, rather than the domain of the selected company. This happens because the base URL was retrieved using `get_current_website()` from the `website` module, which does not consider the company context. As a result, the short URL adapts based on the domain of the last logged-in company, leading to inconsistent URLs. Steps to reproduce: 1. Context: The database has two companies, Company A and Company B, each with their own custom domains, Domain A and Domain B. 2. Log in to the database using Domain A. - Post a link via social marketing for Company A. The short URL will use Domain A. 3. Switch to the Company B. - Post the same link via social marketing for Company B. The short URL will now incorrectly use Domain A instead of B. While the short URL still redirects to the correct content, the domain in the short URL is inconsistent and depends on the last logged-in domain. OPW-4235176 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#194331
Enterprise counter-part. task-4637944 https://github.com/odoo/odoo/pull/201228 Forward-Port-Of: odoo/enterprise#81177
Original PR description
Enterprise counter-part. task-4637944 https://github.com/odoo/odoo/pull/201228 Forward-Port-Of: odoo/enterprise#81177
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
Forward-Port-Of: odoo/enterprise#81196 Forward-Port-Of: odoo/enterprise#81017
Original PR description
Forward-Port-Of: odoo/enterprise#81196 Forward-Port-Of: odoo/enterprise#81017
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 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
### Steps to reproduce: - install l10n_ec_edi_pos - Create a new POS in the EC Company. - With a use without inventory adminstrator access rights: - Open a pos session, select any product and a custome linked to the EC localisation. - Try to validate the POS order that is invoiced using the cash payment method. #### > An access error is raised with respect to the `stock_valuation_layer_ids` fields of the account.move model ### Cause of the issue: Clicking on validate will launch a
Original PR description
### Steps to reproduce: - install l10n_ec_edi_pos - Create a new POS in the EC Company. - With a use without inventory adminstrator access rights: - Open a pos session, select any product and a…
### Steps to reproduce: - install l10n_ec_edi_pos - Create a new POS in the EC Company. - With a use without inventory adminstrator access rights: - Open a pos session, select any product and a custome linked to the EC localisation. - Try to validate the POS order that is invoiced using the cash payment method. #### > An access error is raised with respect to the `stock_valuation_layer_ids` fields of the account.move model ### Cause of the issue: Clicking on validate will launch a call of the `syncAllOrders` method. During this call, missing records will be fetched recursisvely here: https://github.com/odoo/odoo/blob/2108ad3f7c851eeceb84d7459485a18e1574fa64/addons/point_of_sale/static/src/app/store/pos_store.js#L1271 (Note that this call does not exist prior to 18.0). However, as the data contains a pos order that is related to account moves and since the `account.move` model of the localisation inherit from the `pos.load.mixin`: https://github.com/odoo/enterprise/blob/efa1853cf1f9bbd945a91971ffe40c6906482063/l10n_ec_edi_pos/models/account_move.py#L6-L8 the account move will be fetched as a related record to the pos order and we will launch a `read` for the `fields=[]`: https://github.com/odoo/odoo/blob/2108ad3f7c851eeceb84d7459485a18e1574fa64/addons/point_of_sale/static/src/app/models/data_service.js#L513-L515 https://github.com/odoo/odoo/blob/2108ad3f7c851eeceb84d7459485a18e1574fa64/addons/point_of_sale/models/pos_load_mixin.py#L9-L11 However, a read performed with a false value in the `fields` tries to read the value of each field on the records: https://github.com/odoo/odoo/blob/2108ad3f7c851eeceb84d7459485a18e1574fa64/odoo/models.py#L3792-L3798 This includes protected fields such as the `stock_valuation_layer_ids` that can only be read by user's with administrator stock access rights. opw-4498024 Forward-Port-Of: odoo/enterprise#80156
*l10n_nl_intrastat,l10n_nl_reports,l10n_nl_reports_sbr, l10n_nl_reports_sbr_icp,l10n_nl_reports_sbr_ob_nummer, l10n_nl_reports_sbr_status_info [task-4421055](https://www.odoo.com/odoo/project.task/4421055) Forward-Port-Of: odoo/enterprise#80935 Forward-Port-Of: odoo/enterprise#78111
Original PR description
*l10n_nl_intrastat,l10n_nl_reports,l10n_nl_reports_sbr, l10n_nl_reports_sbr_icp,l10n_nl_reports_sbr_ob_nummer, l10n_nl_reports_sbr_status_info [task-4421055](https://www.odoo.com/odoo/project.task/4421055) Forward-Port-Of: odoo/enterprise#80935 Forward-Port-Of: odoo/enterprise#78111
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
Issue: When we export a report to xlsx containing some amounts in foreign currency, those amounts are exported as values in the file, and loose any kind of currency symbols. It then becomes impossible to know what currency they were expressed in. Solution: When a column has an expression label with the 'currency' word inside, adds a new column right next to it, with the currency 3 letters code as value. This is done in the accounting reports framework and so is used on all reports using a c
Original PR description
Issue: When we export a report to xlsx containing some amounts in foreign currency, those amounts are exported as values in the file, and loose any kind of currency symbols. It then becomes impossible to know what currency they were expressed in. Solution: When a column has an expression label with the 'currency' word inside, adds a new column right next to it, with the currency 3 letters code as value. This is done in the accounting reports framework and so is used on all reports using a custom engine. task-4011008 Forward-Port-Of: odoo/enterprise#76441
### Steps to reproduce: - Create a manufacturing order - Navigate to the Miscellaneous tab and add an Analytic Distribution - Add a component to the manufacturing order with the quantity set to 10000, for example - Produce the manufacturing order - Navigate to the analytic account line associated with the stock move with 10000 units - Update the analytic account line’s date to be in the previous week - Navigate to Timesheets > Timesheets > All Timesheets and then navigate to the pr
Original PR description
### Steps to reproduce: - Create a manufacturing order - Navigate to the Miscellaneous tab and add an Analytic Distribution - Add a component to the manufacturing order with the quantity set to…
### Steps to reproduce: - Create a manufacturing order - Navigate to the Miscellaneous tab and add an Analytic Distribution - Add a component to the manufacturing order with the quantity set to 10000, for example - Produce the manufacturing order - Navigate to the analytic account line associated with the stock move with 10000 units - Update the analytic account line’s date to be in the previous week - Navigate to Timesheets > Timesheets > All Timesheets and then navigate to the previous week - Observe that your user has worked a very large amount of overtime ### Cause: This is happening because for MO when creating an analytic line in some cases we store the unit_amount as the quantity of the materials used. https://github.com/odoo/odoo/blob/ee7fbcb759fd8257ed2f52d1d5acfc6921d42870/addons/stock_account/models/stock_move.py#L437-L438 And when fetching the worked hours for the overtime indication we don't check if the analytic line is a timesheet or not https://github.com/odoo/enterprise/blob/ca935872fd70b9fc5b2d13359424916b3afa01eb/timesheet_grid/models/hr_employee.py#L120-L126 https://github.com/odoo/enterprise/blob/ca935872fd70b9fc5b2d13359424916b3afa01eb/timesheet_grid_holidays/models/hr_employee.py#L10-L16 ### Fix: Since we are only fetching timesheets so we will check if the project is set or not as if it is set it means that the record is a timesheet opw-4179137 Forward-Port-Of: odoo/enterprise#81109 Forward-Port-Of: odoo/enterprise#81026
Since 3.13, leading whitespace is automatically stripped in a docstring (python/cpython#81283). The `info` field of an ir.model is a copy of the docstring, so running :TestStudioExports.test_export_customizations on 3.13 fails because the documents are different (the content of the info field is indented and has a leading space matching `Model`'s docstring). Instead of duplicating the info field, just inject it in the document we're creating from the record, that way it doesn't break if so
Original PR description
Since 3.13, leading whitespace is automatically stripped in a docstring (python/cpython#81283). The `info` field of an ir.model is a copy of the docstring, so running :TestStudioExports.test_export_customizations on 3.13 fails because the documents are different (the content of the info field is indented and has a leading space matching `Model`'s docstring). Instead of duplicating the info field, just inject it in the document we're creating from the record, that way it doesn't break if someone decides to improve the docstring either. Forward-Port-Of: odoo/enterprise#81087 Forward-Port-Of: odoo/enterprise#81045