Monday, January 27, 2025
42 changes · saas-18.1
Resolved issues and error corrections
The Barcode app now shows batch counts that match the selected operation type, such as Receipts or Deliveries. This prevents users from seeing misleading totals caused by batches from other operation types being included.
Original PR description
How to reproduce ================ - Have no batch for receipt at least one delivery batch; - Go to the Barcode app > Operations > Receipts; - On the Batches button, you can see a wrong count number, this number takes in account all batches regardless their picking type. Cause of the issue ================== For the batches, the picking type wasn't used by the `search_count` in the method responsible of this count (`get_model_records_count`.)
Miscellaneous changes
Problem: When printing an invoice with l10n_cl installed, the tax total will display the lavel as 'VAT.' The user expects 'VAT' to be translated to maybe 'IVA.' It is hardcoded into the view, thus the .pot file needs to be updated. Note: Starting from v17, there are missing translations for strings "Net Amount", "Total", "Exempt Amount" in the .pot file for the view l10n_cl.tax_totals_widget. However, these are present for v16. Will probably need to modify the fw-ports to include these st
Original PR description
Problem: When printing an invoice with l10n_cl installed, the tax total will display the lavel as 'VAT.' The user expects 'VAT' to be translated to maybe 'IVA.' It is hardcoded into the view, thus…
Problem: When printing an invoice with l10n_cl installed, the tax total will display the lavel as 'VAT.' The user expects 'VAT' to be translated to maybe 'IVA.' It is hardcoded into the view, thus the .pot file needs to be updated. Note: Starting from v17, there are missing translations for strings "Net Amount", "Total", "Exempt Amount" in the .pot file for the view l10n_cl.tax_totals_widget. However, these are present for v16. Will probably need to modify the fw-ports to include these strings in the file. Purpose: Updating the .pot file to include the hardcoded VAT string will ensure there are translations for that label. Steps to Reproduce on Runbot: 1. Install l10n_cl and Accounting 2. Add Spanish as a language 3. Switch to the CL company 4. Create an invoice for a customer whose language is Spanish 5. Print the invoice and notice 'VAT' is not translated opw-4383092 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#194961 Forward-Port-Of: odoo/odoo#190605
**Problem:** When editing the "Sign & Pay" modal in customer preview for a sale order, changes are not saved due to multiple issues: 1. Saving the signature component directly results in only the signature UI being saved, missing the logic and props of the original component. 2. If the signature component is saved with other fields, it gets duplicated upon saving due to `<owl-component />` behavior. This re-renders every saved component and mounts those passed as props, c
Original PR description
**Problem:** When editing the "Sign & Pay" modal in customer preview for a sale order, changes are not saved due to multiple issues: 1. Saving the signature component directly results in only the…
**Problem:** When editing the "Sign & Pay" modal in customer preview for a sale order, changes are not saved due to multiple issues: 1. Saving the signature component directly results in only the signature UI being saved, missing the logic and props of the original component. 2. If the signature component is saved with other fields, it gets duplicated upon saving due to `<owl-component />` behavior. This re-renders every saved component and mounts those passed as props, causing duplication and breaking functionality. - Reference: public_component_service.js **Solution:** 1. Hide the signature component during editing to prevent saving its UI-only state, preserving its logic and props. **Steps to Reproduce:** 1. Create a sale order. 2. Click on "Customer Preview." 3. Enable edit mode. 4. Open the "Sign & Pay" modal, modify the content, and save. - The signature UI duplicates **opw-4216372** --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#187707
Previously, only the description and taxes could be edited on combo item SOLs. However, the delivered quantity should also be editable. opw-4454205 Forward-Port-Of: odoo/odoo#194906
Original PR description
Previously, only the description and taxes could be edited on combo item SOLs. However, the delivered quantity should also be editable. opw-4454205 Forward-Port-Of: odoo/odoo#194906
An error is thrown when deleting attendance records from the list view. Steps to reproduce: Attendances -> List View (Select some records) -> Actions -> Delete Current behavior before PR: ``` TypeError: Cannot read properties of undefined (reading 'some') at Proxy.load (https://72301827-18-0-all.runbot171.odoo.com/web/assets/debug/web.assets_web.js:229101:49) (/hr_attendance/static/src/views/attendance_list_view.js:25) at Proxy._deleteRecords (https://72301827-18-0-all.runbo
Original PR description
An error is thrown when deleting attendance records from the list view. Steps to reproduce: Attendances -> List View (Select some records) -> Actions -> Delete Current behavior before PR: ```…
An error is thrown when deleting attendance records from the list view.
Steps to reproduce:
Attendances -> List View (Select some records) -> Actions -> Delete
Current behavior before PR:
```
TypeError: Cannot read properties of undefined (reading 'some')
at Proxy.load (https://72301827-18-0-all.runbot171.odoo.com/web/assets/debug/web.assets_web.js:229101:49) (/hr_attendance/static/src/views/attendance_list_view.js:25)
at Proxy._deleteRecords (https://72301827-18-0-all.runbot171.odoo.com/web/assets/debug/web.assets_web.js:55859:26) (/web/static/src/model/relational_model/dynamic_list.js:250)
at async ConfirmationDialog.execButton (https://72301827-18-0-all.runbot171.odoo.com/web/assets/debug/web.assets_web.js:18747:31) (/web/static/src/core/confirmation_dialog/confirmation_dialog.js:79)
```
Desired behavior after PR is merged:
Deleting selected records without errors.
Cause:
The implementation of `DynamicList._deleteRecords` changed in v18.0 by fbb37ab363a6c729193f1ba1ba70775650140636 to call `model.load()` without `params`. Thus `params.domain` could possibly be undefined.
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#191451When exporting a SA E-invoice file, the system needs to collect invoice line without downpayment lines. However, when collecting tax values, because of an error correction mechanism, the tax amount will still include the amount of the downpayment tax line Steps to reproduce (with SA localization installed and SA company): - Create a SO of 1000$ with 15% tax - Make a downpayment of 100$ with 15% tax and confirm - Make the final invoice with downpayment deducted - Confirm and send e-invo
Original PR description
When exporting a SA E-invoice file, the system needs to collect invoice line without downpayment lines. However, when collecting tax values, because of an error correction mechanism, the tax amount…
When exporting a SA E-invoice file, the system needs to collect invoice line without downpayment lines. However, when collecting tax values, because of an error correction mechanism, the tax amount will still include the amount of the downpayment tax line Steps to reproduce (with SA localization installed and SA company): - Create a SO of 1000$ with 15% tax - Make a downpayment of 100$ with 15% tax and confirm - Make the final invoice with downpayment deducted - Confirm and send e-invoice for validation Issue: The invoice is validated, but a warning is logged ``` Invoice was Accepted by ZATCA (with Warnings) The invoice was accepted by ZATCA, but returned warnings. Please, check the response below: BR-CO-17: VAT category tax amount (BT-117) = VAT category taxable amount (BT-116) x (VAT category rate (BT-119) / 100), rounded to two decimals. BR-S-09: The VAT category tax amount (BT-117) in a VAT breakdown (BG-23) where VAT category code (BT-118) is Standard rated shall equal the VAT category taxable amount (BT-116) multiplied by the VAT category rate (BT-119). ``` As the warning states the is an issue with the tax computation. When collecting amounts from the final invoice, we should filter out downpayment amounts, but due to the error correction mechanism introduced to account for manual modification of the journal items, the filter is ignored, so we will have the filtered base amount (1000) and the unfiltered tax amount (135 instead of 150) A possible solution is to avoid the error correction when we know we need to filter invoice lines opw-4380798 Forward-Port-Of: odoo/odoo#192984 Forward-Port-Of: odoo/odoo#191867
Steps: - Install sale_project - Create a service type product - Create a SO and confirm it - In the confirmed order add a SOL with the new product Issue: - cannot edit the description of the new SOL Cause: - readonly for the SOL is set based on product_updatable and product_updatable is set false when product type service even for new order line Fix - Updated the readonly condition to account for new lines opw - 4473488 --- I confirm I have signed the CLA and read the PR g
Original PR description
Steps: - Install sale_project - Create a service type product - Create a SO and confirm it - In the confirmed order add a SOL with the new product Issue: - cannot edit the description of the new SOL Cause: - readonly for the SOL is set based on product_updatable and product_updatable is set false when product type service even for new order line Fix - Updated the readonly condition to account for new lines opw - 4473488 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#194979
Problem --------- There is currently no formula to get the residual amount of accounts nor to get the balance of a partner in a given period of time in spreadsheets. Objective --------- Add the formula ODOO.RESIDUAL and ODOO.PARTNER.BALANCE that do just that ODOO.RESIDUAL should take the following parameters: - account_codes (mandatory)(can be more than one separate by ,): could be optional, in that case it could set the domain to all receivables/payables accounts - due_date_range or
Original PR description
Problem --------- There is currently no formula to get the residual amount of accounts nor to get the balance of a partner in a given period of time in spreadsheets. Objective --------- Add the…
Problem --------- There is currently no formula to get the residual amount of accounts nor to get the balance of a partner in a given period of time in spreadsheets. Objective --------- Add the formula ODOO.RESIDUAL and ODOO.PARTNER.BALANCE that do just that ODOO.RESIDUAL should take the following parameters: - account_codes (mandatory)(can be more than one separate by ,): could be optional, in that case it could set the domain to all receivables/payables accounts - due_date_range or expected_date (optional): date range referred to due dates (not AML date) - offset (optional): adding the possibility of the offset to be not only “Year” but also, a specific date or other periods like Month, Quarter. - company_id (optional) - include_unposted (optional) (default: false) ODOO.PARTNER.BALANCE should take the following paramters: - partner_ids (mandatory) (can be more than one separate by ,) - accound_codes (optional) (the prefix of the account(s)) - date_range (optional) (21/12/2022,Q1 2022, 12/2022, 2022) - offset (optional) (default: 0) - company_id (optional) - include_unposted (optional) (default: false) Solution --------- 1. Define the spreadsheet function with the correct parameters in `accounting_function.js` 2. Hook it to the data source so that it can perform server calls 3. Craft that server python function to returns the list a residual amounts for the given list of parameters. 4. Adds some tests. Task-3679808 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#194567
### Description of the issue/feature this PR addresses: - The [_get_plan_available_base_domain()](https://github.com/odoo/odoo/blob/18.0/addons/mail/wizard/mail_activity_schedule.py#L330) method is built and `self.ensure_one()` is placed in it but it is called in `_compute_plan_available_ids()` with `self` which can have multiple records ### Current behavior before PR: - The error `ValueError: Expected singleton: mail.activity.schedule(1, 2)` occurred ### Desired behavior after PR is m
Original PR description
### Description of the issue/feature this PR addresses: - The [_get_plan_available_base_domain()](https://github.com/odoo/odoo/blob/18.0/addons/mail/wizard/mail_activity_schedule.py#L330) method is built and `self.ensure_one()` is placed in it but it is called in `_compute_plan_available_ids()` with `self` which can have multiple records ### Current behavior before PR: - The error `ValueError: Expected singleton: mail.activity.schedule(1, 2)` occurred ### Desired behavior after PR is merged: - The problem has been fixed. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#194338
- Improvements of message of Peppol/BIS3 related warnings of the Print & Send wizards. - Wording improvements for clarity. - Make the "What is Peppol" modal more present. Change its flow: the "activate" buttons now leads to the Peppol registration wizard if the company is not registered yet. task-4478365 Forward-Port-Of: odoo/odoo#193714
Original PR description
- Improvements of message of Peppol/BIS3 related warnings of the Print & Send wizards. - Wording improvements for clarity. - Make the "What is Peppol" modal more present. Change its flow: the "activate" buttons now leads to the Peppol registration wizard if the company is not registered yet. task-4478365 Forward-Port-Of: odoo/odoo#193714
There is already a placeholder image displayed when an image fails to load. opw-4419565 Forward-Port-Of: odoo/odoo#194011 Forward-Port-Of: odoo/odoo#193825
Original PR description
There is already a placeholder image displayed when an image fails to load. opw-4419565 Forward-Port-Of: odoo/odoo#194011 Forward-Port-Of: odoo/odoo#193825
Email notifications typically include: 1) A header with elements such as an access button, title, or subtitle. 2) A footer with sender information and a "Powered by Odoo" link. While these elements provide valuable context, they can clutter email threads, especially in interleaved responses. This commit introduces a dynamic mechanism to streamline email notifications by conditionally hiding the header and footer based on predefined criteria: By default, - The header will be displayed
Original PR description
Email notifications typically include: 1) A header with elements such as an access button, title, or subtitle. 2) A footer with sender information and a "Powered by Odoo" link. While these elements…
Email notifications typically include: 1) A header with elements such as an access button, title, or subtitle. 2) A footer with sender information and a "Powered by Odoo" link. While these elements provide valuable context, they can clutter email threads, especially in interleaved responses. This commit introduces a dynamic mechanism to streamline email notifications by conditionally hiding the header and footer based on predefined criteria: By default, - The header will be displayed only if it contains an access button. - The footer will be displayed if it contains an access button and the email is sent from an internal user and if the email is a notification about an invoice, a Purchase order (PO) or a Sales order (SO). To ensure flexibility, new context variables are introduced: - `email_notification_allow_header`, `email_notification_allow_footer`: Enable or disable the conditional hiding mechanism. - `email_notification_force_header`, `email_notification_force_footer`: Force the display of the header and footer regardless of conditions. Additionally, the ribbon indicating that an email is internal has been removed to further simplify the layout. These updates reduce email size, improve readability in threaded conversations, and ensure that critical information is highlighted without unnecessary clutter. Task-4128966 Forward-Port-Of: odoo/odoo#190390
This commit handles various fixes for the Hoot testing framework & other frontend unit test helpers. Enterprise: https://github.com/odoo/enterprise/pull/77245 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#193937
Original PR description
This commit handles various fixes for the Hoot testing framework & other frontend unit test helpers. Enterprise: https://github.com/odoo/enterprise/pull/77245 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#193937
Before this commit, loadViews didn't benefit from the "async" protection of services. Indeed, when used in a component (via useService), the promise returned by loadViews could be resolved (when the rpc returned), even if the component had been destroyed meanwhile. This could lead to code in a destroyed component being executed, and eventually doing an rpc, which would lead to the crash `Error: Component is destroyed`. This could be reproduced in a form view with an x2many field, whose form v
Original PR description
Before this commit, loadViews didn't benefit from the "async" protection of services. Indeed, when used in a component (via useService), the promise returned by loadViews could be resolved (when the rpc returned), even if the component had been destroyed meanwhile. This could lead to code in a destroyed component being executed, and eventually doing an rpc, which would lead to the crash `Error: Component is destroyed`. This could be reproduced in a form view with an x2many field, whose form view isn't inline (i.e. needs to be fetched when a record is clicked). In such a form view, click on a record in the x2many, then, during the call to `get_views`, toggle the home menu (for instance). 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#195139
If you pay an invoice with multiple payments some roundings are made for the taxes. On the last payment, the error from those roundings are put on a move to make sure that the exact amount of the invoice is paid. That move was put on the wrong journal. It was put in the 'Exchange Difference' journal instead of the 'Cash Basis Taxes'. opw-4460696 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#193994
Original PR description
If you pay an invoice with multiple payments some roundings are made for the taxes. On the last payment, the error from those roundings are put on a move to make sure that the exact amount of the invoice is paid. That move was put on the wrong journal. It was put in the 'Exchange Difference' journal instead of the 'Cash Basis Taxes'. opw-4460696 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#193994
**Description of the issue/feature this PR addresses:** When a custom module (e.g., [OCA/social#1536](https://github.com/OCA/social/pull/1536)) adds a new message action using `component` (previously named `callComponent`), it is not invoked in certain scenarios. **Current behavior before PR:** Currently, Odoo only renders the custom component for quick actions. However, the remaining actions, rendered as DropdownItem, do not invoke the custom component. **Desired behavior after PR is
Original PR description
**Description of the issue/feature this PR addresses:** When a custom module (e.g., [OCA/social#1536](https://github.com/OCA/social/pull/1536)) adds a new message action using `component` (previously named `callComponent`), it is not invoked in certain scenarios. **Current behavior before PR:** Currently, Odoo only renders the custom component for quick actions. However, the remaining actions, rendered as DropdownItem, do not invoke the custom component. **Desired behavior after PR is merged:** This commit ensures consistent rendering behavior, invoking the `component` for all actions, whether quick actions or dropdown items. Complementary to: https://github.com/odoo/odoo/pull/131426 @phenix-factory @alexkuhn coud you please review this? CC @pedrobaeza @chienandalu --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#195185 Forward-Port-Of: odoo/odoo#194643
Steps to Reproduce: - Ensure no headers or footers are in Configuration > Headers/Footers. - Create a new Sale Order (SO). - Add a partner to the SO. - Add a product to the SO that has a document linked to it. - The `Quote Builder` tab does not appear until the SO is saved and reopened. Issue: The `Quote Builder` tab did not appear immediately after adding a product with linked documents. This required saving and reopening the SO to make the tab visible, causing inconvenience to users.
Original PR description
Steps to Reproduce: - Ensure no headers or footers are in Configuration > Headers/Footers. - Create a new Sale Order (SO). - Add a partner to the SO. - Add a product to the SO that has a document…
Steps to Reproduce: - Ensure no headers or footers are in Configuration > Headers/Footers. - Create a new Sale Order (SO). - Add a partner to the SO. - Add a product to the SO that has a document linked to it. - The `Quote Builder` tab does not appear until the SO is saved and reopened. Issue: The `Quote Builder` tab did not appear immediately after adding a product with linked documents. This required saving and reopening the SO to make the tab visible, causing inconvenience to users. Cause: The `_compute_available_product_document_ids` method lacked an `@api.depends` decorator for fields `product_id` and `product_template_id`. As a result, the dependent field `is_pdf_quote_builder_available` was not updated dynamically. Fix: Added the `@api.depends` decorator to `_compute_available_product_document_ids`, ensuring the computation is triggered immediately when `product_id` or `product_template_id` changes. This ensures that `is_pdf_quote_builder_available` is recalculated dynamically, making the `Quote Builder` tab visible immediately. - Also added `compute_sudo` on `available_product_document_ids` field to ensure available documents consistancy even though users have different access. opw-4364152 Forward-Port-Of: odoo/odoo#191344
There are instances where an email notification may not have an associated author. In the mail notification template, we forgot to check that the author exists before calling the `_is_internal` on it. When the author is `False`, the function generating the mail crashes as the `_is_internal` function is undefined on a boolean variable. To address this issue, we will ensure the existence of the author before invoking any methods defined in the `res.users` model. This solution prevents errors an
Original PR description
There are instances where an email notification may not have an associated author. In the mail notification template, we forgot to check that the author exists before calling the `_is_internal` on it. When the author is `False`, the function generating the mail crashes as the `_is_internal` function is undefined on a boolean variable. To address this issue, we will ensure the existence of the author before invoking any methods defined in the `res.users` model. This solution prevents errors and ensures the email template functions correctly. see: #190390 Task-4128966 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#194569
Currently, an exception is generated in the log when the users create a POS order as follows: - Install ``pos_restaurant`` module. - Open the register for the restaurant. - Stay connected to Wi-Fi but disconnect from the internet (Inspect > Network > Go Offline). connection (Inspect > Network > Go offline) - Make two or more orders in offline mode and use ``Print Full Receipt``. - Reconnect to the internet, make one order, and ``Print Full Receipt``. - Close the register (Traceback appears
Original PR description
Currently, an exception is generated in the log when the users create a POS order as follows: - Install ``pos_restaurant`` module. - Open the register for the restaurant. - Stay connected to Wi-Fi…
Currently, an exception is generated in the log when the users create a POS order as follows: - Install ``pos_restaurant`` module. - Open the register for the restaurant. - Stay connected to Wi-Fi but disconnect from the internet (Inspect > Network > Go Offline). connection (Inspect > Network > Go offline) - Make two or more orders in offline mode and use ``Print Full Receipt``. - Reconnect to the internet, make one order, and ``Print Full Receipt``. - Close the register (Traceback appears in the terminal). ``error: `invalid literal for int() with base 10: 'null'`` Before commit : --- - ``nb_print`` is initialized in Python with fields.Integer(default=0) - When syncing data between the server and the client, nb_print is being sent as ``null`` instead of an integer. - The Python side is trying to convert ``null`` into an integer, which causes the error. After commit : --- - Added ``this.nb_print = vals.nb_print || 0;`` in ``pos_order.js`` to ensure it initializes to 0 for offline orders, aligning with the server-side default. sentry-6055024846 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#194527
Steps to reproduce: 1. Create two companies: Company A and Company B 2. Create a service product 3. Configure the product to be purchased on Company A and not on Company B 4. Create a sales order on Company B, while logged in Company A 5. Confirm the order Expected result: The service PO is created on Company B, even though it was configured not to. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#194947 For
Original PR description
Steps to reproduce: 1. Create two companies: Company A and Company B 2. Create a service product 3. Configure the product to be purchased on Company A and not on Company B 4. Create a sales order on Company B, while logged in Company A 5. Confirm the order Expected result: The service PO is created on Company B, even though it was configured not to. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#194947 Forward-Port-Of: odoo/odoo#177659
Since commit [1], we added a selector using the ":has" pseudo-class in the template that defines where "inner content" blocks can be dropped. It is no longer possible to enter edit mode (a traceback occurs) starting from Odoo version 18.0 and in browsers older than Chrome 112 or Firefox 121. This bug happens because the same selector, used by jQuery, combines both the ":has" pseudo-class and the ":is" pseudo-class (this ":is" pseudo-class was introduced into the same selector by commit [2] st
Original PR description
Since commit [1], we added a selector using the ":has" pseudo-class in the template that defines where "inner content" blocks can be dropped. It is no longer possible to enter edit mode (a traceback…
Since commit [1], we added a selector using the ":has" pseudo-class in the template that defines where "inner content" blocks can be dropped. It is no longer possible to enter edit mode (a traceback occurs) starting from Odoo version 18.0 and in browsers older than Chrome 112 or Firefox 121. This bug happens because the same selector, used by jQuery, combines both the ":has" pseudo-class and the ":is" pseudo-class (this ":is" pseudo-class was introduced into the same selector by commit [2] starting from Odoo version 18.0). This is not compatible with the older browsers mentioned above. The bug only appears in version 18. However, we already fixed this in 16.0 in case potential customizations had added the ":is" pseudo-class to the same selector. [1]: https://github.com/odoo/odoo/commit/65a85009800dfa45526ebdc41d3a0a808b2e9f6d [2]: https://github.com/odoo/odoo/commit/e0fc83760f991fa2fea39763bb2709d9e0182316 opw-4494945 Forward-Port-Of: odoo/odoo#194908 Forward-Port-Of: odoo/odoo#194676
Steps to reproduce: ---- - Go to manufacturing - Planning by production - Add late filter Issue: ---- The late filter "does not work", the filter is based on the day. But the late order should be based on a much more precise datetime. Fix: --- Changed the filter from current_date to datetime.now to have more precision in the time, and so it filters more accurately. opw-4493678 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward
Original PR description
Steps to reproduce: ---- - Go to manufacturing - Planning by production - Add late filter Issue: ---- The late filter "does not work", the filter is based on the day. But the late order should be based on a much more precise datetime. Fix: --- Changed the filter from current_date to datetime.now to have more precision in the time, and so it filters more accurately. opw-4493678 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#194811
Steps to reproduce: --- - Go to purchase -> config -> Products -> Attributes - Search Issue: --- There was no search attribute for the autocompletion.The changes in comportment is due to the changes in https://github.com/odoo/odoo/commit/72c5ed9f18bc9e2b1dde7029742d9feb34a4c52f . Fix: --- Added the name field to the search view. opw-4434672 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#194477
Original PR description
Steps to reproduce: --- - Go to purchase -> config -> Products -> Attributes - Search Issue: --- There was no search attribute for the autocompletion.The changes in comportment is due to the changes in https://github.com/odoo/odoo/commit/72c5ed9f18bc9e2b1dde7029742d9feb34a4c52f . Fix: --- Added the name field to the search view. opw-4434672 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#194477
Description of the issue/feature this PR addresses: The method werkzeug.http.parse_www_authenticate_header has been removed in werkzeug 3 and later. This causes an issue in Odoo when using python 3.12, as the requirements.txt specifies werkzeug 3.0.1. This results in a misleading error stating that auth_signup is not installed on the database when authenticating a new user with an OAuth provider. Current behavior before PR: When attempting to authenticate a new user with an OAuth provider i
Original PR description
Description of the issue/feature this PR addresses: The method werkzeug.http.parse_www_authenticate_header has been removed in werkzeug 3 and later. This causes an issue in Odoo when using python…
Description of the issue/feature this PR addresses: The method werkzeug.http.parse_www_authenticate_header has been removed in werkzeug 3 and later. This causes an issue in Odoo when using python 3.12, as the requirements.txt specifies werkzeug 3.0.1. This results in a misleading error stating that auth_signup is not installed on the database when authenticating a new user with an OAuth provider. Current behavior before PR: When attempting to authenticate a new user with an OAuth provider in Odoo using Python 3.12, the method werkzeug.http.parse_www_authenticate_header is called. Since this method is removed in Werkzeug 3.0.1, a misleading error message about auth_signup not being installed on the database is displayed. Desired behavior after PR is merged: The code will use WWWAuthenticate.from_header for parsing the WWW-Authenticate header if available, otherwise, it will fall back to using werkzeug.http.parse_www_authenticate_header for compatibility with older versions of Werkzeug (2.0 and 2.2). The misleading error message will no longer appear, and OAuth authentication will work as expected. Fixes #194002 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#194484
When creating a new mass mailing from an event, the default domain retrieved when switching mailing type is missing the event id filter Steps to reproduce (mass_mailing_sms required): - Open an event with attendees - Click 'Contact Attendees' - Take note of the mailing domain - Switch Mailing Type from Email to SMS Issue: Domain is missing the event_id This does not occur when opening the form view because the default mailing domain is given via context opw-4337256 Forward-Port-
Original PR description
When creating a new mass mailing from an event, the default domain retrieved when switching mailing type is missing the event id filter Steps to reproduce (mass_mailing_sms required): - Open an event with attendees - Click 'Contact Attendees' - Take note of the mailing domain - Switch Mailing Type from Email to SMS Issue: Domain is missing the event_id This does not occur when opening the form view because the default mailing domain is given via context opw-4337256 Forward-Port-Of: odoo/odoo#194809 Forward-Port-Of: odoo/odoo#189317
Issue: in the /shop page, using the grid style if we change the size of a product on another column than the first one, the border of the grid will appear on the product or behind its image. This is due to the width 100vw which extends behind the product's current width and overflowing on other products of the same row. task-4513299 opw-4447224 | | |--------| --- I confirm I have signed th
Original PR description
Issue: in the /shop page, using the grid style if we change the size of a product on another column than the first one, the border of the grid will appear on the product or behind its image. This is due to the width 100vw which extends behind the product's current width and overflowing on other products of the same row. task-4513299 opw-4447224 | | |--------| --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#195063
The write logic for lot_valuated is handled on the ProductTemplate. When you change the value of 'lot_valuated', '_svl_empty_stock()' is called before the new value is set, and the code expects ProductTemplate.lot_valuated and ProductProduct.lot_valuated to not yet be updated. However, if you change 'lot_valuated' from the ProductProduct model, ProductProduct.lot_valuated will be updated before ProductTemplate.write() is called. Hence, in '_svl_empty_stock()', ProductTemplate.lot_valuated != Pro
Original PR description
The write logic for lot_valuated is handled on the ProductTemplate. When you change the value of 'lot_valuated', '_svl_empty_stock()' is called before the new value is set, and the code expects ProductTemplate.lot_valuated and ProductProduct.lot_valuated to not yet be updated. However, if you change 'lot_valuated' from the ProductProduct model, ProductProduct.lot_valuated will be updated before ProductTemplate.write() is called. Hence, in '_svl_empty_stock()', ProductTemplate.lot_valuated != ProductProduct.lot_valuated This issue only happens in the 'write' context, so it should not cause too much issue. To fix this issue, when lot_valuated is updated from ProductProduct, we call the ProductTemplate write instead. --- https://github.com/user-attachments/assets/9d2f64a4-a7ad-4078-ad0b-0cc50270492b --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#193948
Steps to reproduce: 1) Configure Xendit provider 2) Try paying in PHP currency 3) Observe: 'Amount must be integer' error Xendit does not allow decimal places for PHP. opw-4415419 Forward-Port-Of: odoo/odoo#194860
Original PR description
Steps to reproduce: 1) Configure Xendit provider 2) Try paying in PHP currency 3) Observe: 'Amount must be integer' error Xendit does not allow decimal places for PHP. opw-4415419 Forward-Port-Of: odoo/odoo#194860
**Current behavior:** Having some product with a subcontract BoM and using the unarchived 'Subcontract' picking type and creating a purchase order to the subcontractor for that product: changing the `scheduled_date` of the generated receipt will improperly set the start/end date on the subcontracting MO which was generated alongside the receipt. Specifically, the `scheduled_date` of the receipt should correspond to the `date_finished` of the MO- however currently it is incorrectly modifying
Original PR description
**Current behavior:** Having some product with a subcontract BoM and using the unarchived 'Subcontract' picking type and creating a purchase order to the subcontractor for that product: changing the…
**Current behavior:** Having some product with a subcontract BoM and using the unarchived 'Subcontract' picking type and creating a purchase order to the subcontractor for that product: changing the `scheduled_date` of the generated receipt will improperly set the start/end date on the subcontracting MO which was generated alongside the receipt. Specifically, the `scheduled_date` of the receipt should correspond to the `date_finished` of the MO- however currently it is incorrectly modifying the MO `date_start` instead. **Expected behavior:** Modifying `scheduled_date` on the receipt will in turn modify the `date_finished` of the MO. **Steps to reproduce:** *Unarchive the Subcontract picking type operation* 1. Create a final product with a subcontract type BoM, on the BoM set some positive value for Manuf. Lead Time (in miscellaneous tab) 2. Create a purchase order to the subcontractor for that product 3. Confirm the PO -> observe that on creation, the scheduled date of the receipt matches the end date of the MO 4. Change the scheduled date of the receipt (for example, 10 days in the future) -> observe that after saving, the MO date correspondence is inverted (end date = scheduled date + lead time) instead of the start date being set with respect to the end time (like on creation), the end date gets set with respect to the start date **Cause of the issue:** It's an inconsistency with how the fields (start, end) are calculated and when. **Fix:** Make this case behave the same as the creation does- that is, end date is informed by the receipt's scheduled date and the start date of the MO is set by subtracting the lead time from there. opw-4231548 Forward-Port-Of: odoo/odoo#188389
Before this commit, when got a needaction_message from records that you don't have access to, you will see the counter of the inbox but you cannot mark it as read. The reason was that the mark as read action was based on the isEmpty of the thread but if you don't have access to the record, the message will not be fetched and the computation was not correct. The fix is to depend on the inbox counter so that the behavior of the red dot is consistent with the mark as read action.  --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#195056
Having no manual sequence on report lines/columns might be problematic in case of DB upgrade, if the line order changed in the xml files, as the report won't adapt and update the sequence field. Setting auto_sequence will ensure that this won't ever be a problem anymore (and avoid the tedious task of manually setting the sequence on each line/column) Forward-Port-Of: odoo/enterprise#77487
Original PR description
Having no manual sequence on report lines/columns might be problematic in case of DB upgrade, if the line order changed in the xml files, as the report won't adapt and update the sequence field. Setting auto_sequence will ensure that this won't ever be a problem anymore (and avoid the tedious task of manually setting the sequence on each line/column) Forward-Port-Of: odoo/enterprise#77487
### Steps to reproduce: - In Accounting, create a new Customer invoice - Create a payment for this invoice - In Customer > Batch Payments create a new batch payment - Select the payment you created - In the Dashboard click on the three dots of the "Bank" block and click on transactions - Create a new transaction with the same amount as the invoice - Click "Match" on the right - In the "Batch Payments" tab select the Batch payment previously created - Validate - Back in the Dashboard, c
Original PR description
### Steps to reproduce: - In Accounting, create a new Customer invoice - Create a payment for this invoice - In Customer > Batch Payments create a new batch payment - Select the payment you created - In the Dashboard click on the three dots of the "Bank" block and click on transactions - Create a new transaction with the same amount as the invoice - Click "Match" on the right - In the "Batch Payments" tab select the Batch payment previously created - Validate - Back in the Dashboard, click on the reconcile button of the Bank block - In the "Batch Payments" tab the batch payment is still here even if it is reconciled ### Cause: There are no domain to filter the batch payments. ### Solution: Add a domain to check the state of the batch payments, do not display if it is "reconciled". opw-4461341 Forward-Port-Of: odoo/enterprise#77017
Issue: ========== A traceback occurs when validating the quantity produced through the Barcode app, causing the process to fail. Steps to Reproduce: ======================= 1. Create a new database and install the Manufacturing module. 2. Create and confirm a manufacturing order (MO) from the backend. 3. Open the Barcode app, access the MO, edit the quantity produced, and validate. With this commit: ==================== Prevent error when lot_producing_id is undefined during f
Original PR description
Issue: ========== A traceback occurs when validating the quantity produced through the Barcode app, causing the process to fail. Steps to Reproduce: ======================= 1. Create a new database and install the Manufacturing module. 2. Create and confirm a manufacturing order (MO) from the backend. 3. Open the Barcode app, access the MO, edit the quantity produced, and validate. With this commit: ==================== Prevent error when lot_producing_id is undefined during form save and allow smooth validation of produced quantities. task-4443489 Forward-Port-Of: odoo/enterprise#76426
This commit handles various fixes for the Hoot testing framework & other frontend unit test helpers. Community: https://github.com/odoo/odoo/pull/193937 Forward-Port-Of: odoo/enterprise#77245
Original PR description
This commit handles various fixes for the Hoot testing framework & other frontend unit test helpers. Community: https://github.com/odoo/odoo/pull/193937 Forward-Port-Of: odoo/enterprise#77245
Steps to reproduce: 1) install document_hr_recruit module 2) create an application and upload an attachment to it 3) go to the kanban view and click on the attachment icon on the right bottom 4) it will lead you to the document view instead of the document Cause : In the document settings, there’s a recruitment option to select the folder for job positions and application documents. By default, the setting should be 'Recruitment', but the visibility is not configured in the code Fix:
Original PR description
Steps to reproduce: 1) install document_hr_recruit module 2) create an application and upload an attachment to it 3) go to the kanban view and click on the attachment icon on the right bottom 4) it will lead you to the document view instead of the document Cause : In the document settings, there’s a recruitment option to select the folder for job positions and application documents. By default, the setting should be 'Recruitment', but the visibility is not configured in the code Fix: We will provide 'view' access to the folder Task-4348197 Forward-Port-Of: odoo/enterprise#74950
### Steps to reproduce: - Select an EU company and provide a SEPA creditor identifier (for example BE55ZZZ0455530509) - Have a contact with a European IBAN - Have a company bank journal with a European IBAN - Create a valid Direct Debit Mandate for your contact - Create an invoice for that contact and register a payment using SEPA - Now delete that Sepa payment from Accounting > Customers > Payments - Open the customer's Direct Debit Mandate > It shows one invoice was paid using that mand
Original PR description
### Steps to reproduce: - Select an EU company and provide a SEPA creditor identifier (for example BE55ZZZ0455530509) - Have a contact with a European IBAN - Have a company bank journal with a…
### Steps to reproduce: - Select an EU company and provide a SEPA creditor identifier (for example BE55ZZZ0455530509) - Have a contact with a European IBAN - Have a company bank journal with a European IBAN - Create a valid Direct Debit Mandate for your contact - Create an invoice for that contact and register a payment using SEPA - Now delete that Sepa payment from Accounting > Customers > Payments - Open the customer's Direct Debit Mandate > It shows one invoice was paid using that mandate although the payment was deleted - Expected: link between invoice and mandate should not be kept if payment was deleted ### Cause: The field `sdd_mandate_id` of the invoice is not reset when the payment is reset to draft. ### Solution: Add an `api.ondelete` method on `account.partial.reconcile` which checks if any of the unreconciled moves is an invoice with `sdd_mandate_id`. In that case, and if the unreconciled payment is the only SEPA payment, set `sdd_mandate_id` to False. opw-4277982 Forward-Port-Of: odoo/enterprise#77589 Forward-Port-Of: odoo/enterprise#75273
This PR adds non regression tests for the integration of monster in hr_recruitment. These tests also cover at the same time the code of the hr_recruitment_integration_base module. The PR also fixes a bug in the hr_recruitment_integration_base module which was found thanks to the tests. The bugfix is about fixing variable names in the _start_new_campaign to match the fields of the module. task-4199469 Forward-Port-Of: odoo/enterprise#77152
Original PR description
This PR adds non regression tests for the integration of monster in hr_recruitment. These tests also cover at the same time the code of the hr_recruitment_integration_base module. The PR also fixes a bug in the hr_recruitment_integration_base module which was found thanks to the tests. The bugfix is about fixing variable names in the _start_new_campaign to match the fields of the module. task-4199469 Forward-Port-Of: odoo/enterprise#77152
### Steps to reproduce: - Go in Accounting > Customers > Direct Debit Mandates - Create a new mandate with a start date in the future - In Scheduled Actions search for "Mandate state updater" - Run manually this action - Return to Accounting > Customers > Direct Debit Mandates - The mandate was closed ### Cause: The code checks if `mandate.start_date <= today <= expiry_date`, if not the mandate is closed. ### Solution: Only check if `today <= expiry_date` opw-4460087 Forward-Po
Original PR description
### Steps to reproduce: - Go in Accounting > Customers > Direct Debit Mandates - Create a new mandate with a start date in the future - In Scheduled Actions search for "Mandate state updater" - Run manually this action - Return to Accounting > Customers > Direct Debit Mandates - The mandate was closed ### Cause: The code checks if `mandate.start_date <= today <= expiry_date`, if not the mandate is closed. ### Solution: Only check if `today <= expiry_date` opw-4460087 Forward-Port-Of: odoo/enterprise#77048
The current auto-clean feature doesn't work properly and it deletes spreadsheet that shouldn't be deleted. 1) copy a spreadsheet and leave it (no update) 2) upload an XLSX file Given that it's been broken several times and the usefulness of the feature is debatable, let's just drop the feature. No feature, no bug 🙃 If users create empty spreadsheet, so be it. They'll clean their mess themselves. Task: 4506185 Forward-Port-Of: odoo/enterprise#77763 Forward-Port-Of: odoo/enterprise#
Original PR description
The current auto-clean feature doesn't work properly and it deletes spreadsheet that shouldn't be deleted. 1) copy a spreadsheet and leave it (no update) 2) upload an XLSX file Given that it's been broken several times and the usefulness of the feature is debatable, let's just drop the feature. No feature, no bug 🙃 If users create empty spreadsheet, so be it. They'll clean their mess themselves. Task: 4506185 Forward-Port-Of: odoo/enterprise#77763 Forward-Port-Of: odoo/enterprise#77573
Since whatsapp templates are posted on a specific model, the current parent computation becomes incorrect when it comes to templates, because of incorrect domain, in particular `model` and `res_is` parts of it. task-4210393 Forward-Port-Of: odoo/enterprise#70718
Original PR description
Since whatsapp templates are posted on a specific model, the current parent computation becomes incorrect when it comes to templates, because of incorrect domain, in particular `model` and `res_is` parts of it. task-4210393 Forward-Port-Of: odoo/enterprise#70718
The aim of this commit is passing correctly the debug mode in the URL params to the bank sync iframe. It allows to debug the iframe during the development. no task id Forward-Port-Of: odoo/enterprise#77501
Original PR description
The aim of this commit is passing correctly the debug mode in the URL params to the bank sync iframe. It allows to debug the iframe during the development. no task id Forward-Port-Of: odoo/enterprise#77501
Currently, an error occurs when attempting to insert field `template_autocomplete_ids` into planning slot list view using studio mode. Step to produce: - Install the `sale_planning` and `web_studio` modules (with demo data). - Open the 'My Planning' list view. - Add the `template_autocomplete_ids` field to the list view using 'studio'. - Error generated at the backend. `ValueError: Expected singleton: planning. Slot(5, 7)` The error occurs because the system attempts to access a
Original PR description
Currently, an error occurs when attempting to insert field `template_autocomplete_ids` into planning slot list view using studio mode. Step to produce: - Install the `sale_planning` and `web_studio` modules (with demo data). - Open the 'My Planning' list view. - Add the `template_autocomplete_ids` field to the list view using 'studio'. - Error generated at the backend. `ValueError: Expected singleton: planning. Slot(5, 7)` The error occurs because the system attempts to access a single value of fields from multiple records at [1]. [1] - https://github.com/odoo/enterprise/blob/5a9d3be9fb65d780ce92c437600220b8a0e95023/planning/models/planning.py#L410-L414 To resolve this issue, use an iteration(for loop) to iterate records one by one. Sentry-6217013028 Forward-Port-Of: odoo/enterprise#77318