Thursday, April 10, 2025
37 changes · saas-18.2
Enhancements to existing features
The India reports module will no longer be installed automatically just because the base India localization is installed. This keeps setups lighter by only adding the reporting module when it is actually needed.
Original PR description
Previously, the `l10n_in_reports` module was being automatically installed when the l10n_in `module` was installed, regardless of whether it was actually needed. This commit removes the auto_install condition of `l10n_in_reports`. This prevents unnecessary installation of `l10n_in_reports` when only `l10n_in` is installed.
Resolved issues and error corrections
This change makes the Discuss call system record only more serious peer-to-peer connection issues by default. It prevents expected, already handled call connection situations from filling the logging database, helping administrators focus on actionable errors.
Original PR description
Before this commit, the default log level of `peer_to_peer` was set to `WARN` which includes: - recovery candidates: recoveries can be triggered for various non critical reasons as recovery is initiated eagerly but will only realize if necessary (in which case it is logged at `ERROR` level). - reception of bus events for peers that aren't registered: can happen in race conditions that are already handled. - offer collision rollback: offer collisions can happen during recovery and fallbacks, and are already handled. This commit raises the default log level from `WARN` to `ERROR` which will prevent the aforementioned situations to be logged by default (outside of the `debug` mode) and fill the logging database.
Miscellaneous changes
Partial backport of #202835 Nicer strategy for stable to avoid braking all existing clients tests This should catch most case without introducing a lock and a mandatory allowance of the request. - If the cookie is present, check if it is valid (request opening cursor in next test) - Check if the test cursor was opened in the same test as the execute/rollback (request started in previous test executing in next) - custom expected cookie for browser js to avoid allowing a request after w
Original PR description
Partial backport of #202835 Nicer strategy for stable to avoid braking all existing clients tests This should catch most case without introducing a lock and a mandatory allowance of the request. - If…
Partial backport of #202835 Nicer strategy for stable to avoid braking all existing clients tests This should catch most case without introducing a lock and a mandatory allowance of the request. - If the cookie is present, check if it is valid (request opening cursor in next test) - Check if the test cursor was opened in the same test as the execute/rollback (request started in previous test executing in next) - custom expected cookie for browser js to avoid allowing a request after wait_remaining_requests All message could be silenced to kill the transaction without braking the test if it is a better strategy. Some design choices: - current_test is passed to Testcursor to avoid to add an import to odoo modules in sql_db, only impacts test logic. Parameter is optional. - test cursor checks current_test before each operation (execute, commit, rollback). - http_request_key is the test itself (between setup and cleanup), only exception is for browser js to avoid request executing during the end of the test (once browser is closed). It is the most common case. Forward-Port-Of: odoo/odoo#205489 Forward-Port-Of: odoo/odoo#205190
Users now see the correct notification when trying to reschedule task dependencies involving a closed task in the Gantt view. This prevents confusing or missing error messages and helps project teams understand why the scheduling action cannot be completed.
Original PR description
Steps to reproduce: - In gantt view add two tasks and make them dependent. - Closed the source task. - Click on forward schedule(right button) on connecter. Issue: - Invaild error/ No error message. - Issue works vice verca(target closed record to be scheduled backward) also Reason: - Before we used to raise error using client actions. - But all the other errors have been changed to be using Notification Service this might have been missed. Fix: - Changed the format so it works as expected. task-4715001
This is a followup on [1]. Restricted users are not allowed to apply shapes on images because: - it involves the duplication of the image attachment, and - SVGs mimetype is kept only for users allowed to write views. This commit verifies that the user has restricted edition rights and makes it possible for them to apply shapes on images. Steps to reproduce: - Install eCommerce. - Create a user with sales administrator rights. - Connect as that user. - Go to a product page. - Edi
Original PR description
This is a followup on [1]. Restricted users are not allowed to apply shapes on images because: - it involves the duplication of the image attachment, and - SVGs mimetype is kept only for users allowed to write views. This commit verifies that the user has restricted edition rights and makes it possible for them to apply shapes on images. Steps to reproduce: - Install eCommerce. - Create a user with sales administrator rights. - Connect as that user. - Go to a product page. - Edit. - Drop a "Text - Image" block. - Set a shape on the image. - Save. => Did trigger an error popup. [1]: https://github.com/odoo/odoo/commit/d5aa54ca108eb99c7eb855a7d456bfe2f208a8eb task-2830084 Forward-Port-Of: odoo/odoo#204857 Forward-Port-Of: odoo/odoo#92540
- have a follower with a portal partner linked to a specific company "portal" user is important here because internal users don't have multi-company rule. - view the chatter with a user which has no access to that company - the chatter is currently locked by an ACL error The follower should be displayed instead. task-4648765 Forward-Port-Of: odoo/odoo#205463 Forward-Port-Of: odoo/odoo#201864
Original PR description
- have a follower with a portal partner linked to a specific company "portal" user is important here because internal users don't have multi-company rule. - view the chatter with a user which has no access to that company - the chatter is currently locked by an ACL error The follower should be displayed instead. task-4648765 Forward-Port-Of: odoo/odoo#205463 Forward-Port-Of: odoo/odoo#201864
### Issue: Currently, the default route set on an automatically created RR might not be set on the product. ### Steps to reproduce: - In the settings: enable Multi-Steps Routes - On your warehouse set Manufacture in 3 steps - Create a storable product without any set route - Create a need for that product, for instance by creating and confirming an SO for 1 unit. - Inventory > Operations > Procurement > Replenishment #### > A reordering rule was automatically created for your prod
Original PR description
### Issue: Currently, the default route set on an automatically created RR might not be set on the product. ### Steps to reproduce: - In the settings: enable Multi-Steps Routes - On your warehouse…
### Issue: Currently, the default route set on an automatically created RR might not be set on the product. ### Steps to reproduce: - In the settings: enable Multi-Steps Routes - On your warehouse set Manufacture in 3 steps - Create a storable product without any set route - Create a need for that product, for instance by creating and confirming an SO for 1 unit. - Inventory > Operations > Procurement > Replenishment #### > A reordering rule was automatically created for your product but the manufacture route is set by default. ### Cause of the issue: Entering the replenishment tab will create orderpoints and set their default routes: https://github.com/odoo/odoo/blob/884130330b600b4356c640cb679c2bb8fdb833a0/addons/stock/models/stock_orderpoint.py#L478-L481 However, the `_set_default_route_id` does not check that the route found to match a given orderpoint is actually selected on the product of the orderpoint: https://github.com/odoo/odoo/blob/884130330b600b4356c640cb679c2bb8fdb833a0/addons/stock/models/stock_orderpoint.py#L323-L336 opw-4681202 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#204850 Forward-Port-Of: odoo/odoo#204449
This PR addresses an access rights issue when an Inventory admin, specifically without POS access, tries to edit the variant attributes on a product template. In its current state, this user will witness an access error related to `pos.combo.line` records when they add or remove an attribute value. This PR fixes this by introducing `.sudo()` access when interacting with the `pos.combo.line` model during this process. opw-4553416 Forward-Port-Of: odoo/odoo#202607 Forward-Port-Of: odoo/
Original PR description
This PR addresses an access rights issue when an Inventory admin, specifically without POS access, tries to edit the variant attributes on a product template. In its current state, this user will witness an access error related to `pos.combo.line` records when they add or remove an attribute value. This PR fixes this by introducing `.sudo()` access when interacting with the `pos.combo.line` model during this process. opw-4553416 Forward-Port-Of: odoo/odoo#202607 Forward-Port-Of: odoo/odoo#202144
It is currently not possible to scan a combo. To reproduce the issue: (Use demo data) 1. Point of Sale > Products > Product Variantes, edit Office Combo - Add a barcode 2. Start the PoS Furniture Shop 3. Scan the barcode Error: a line is added on the left-side panel. Scanning the combo should actually open a popup so that the PoS user can select the products. About the behaviour: since [1], the barcode field is invisible on the template form of a combo. It is even mentioned o
Original PR description
It is currently not possible to scan a combo. To reproduce the issue: (Use demo data) 1. Point of Sale > Products > Product Variantes, edit Office Combo - Add a barcode 2. Start the PoS Furniture…
It is currently not possible to scan a combo. To reproduce the issue: (Use demo data) 1. Point of Sale > Products > Product Variantes, edit Office Combo - Add a barcode 2. Start the PoS Furniture Shop 3. Scan the barcode Error: a line is added on the left-side panel. Scanning the combo should actually open a popup so that the PoS user can select the products. About the behaviour: since [1], the barcode field is invisible on the template form of a combo. It is even mentioned on the excalidraw. However, the field is still visible on all other views. Moreover, there isn't any constraint or anything to prevent such a template from having a barcode. Discussed with the PO, for spec clarifications: > Scanning a combo wasn't really planned in the first place. > I can imagine the case where they print the barcodes on the side. > It's OK if it's scannable, but that doesn't mean we should make > the field visible About the issue: quite simple, when scanning the barcode, it leads to https://github.com/odoo/odoo/blob/6a6b70c9bf2420380ae91ca8f5b21f2bfbc1a5b9/addons/point_of_sale/static/src/app/screens/product_screen/product_screen.js#L209-L213 Where the third argument is `false`, cf `needToConfigure`: https://github.com/odoo/odoo/blob/7a2923af64bd196a8271af4c99a37ac8ce3e15f8/addons/point_of_sale/static/src/app/models/product_product.js#L39-L49 The call to `addLineToCurrentOrder` will lead to `addLineToOrder`, where the parameter `configure` is `false` (as explained just above). As a result, even if the product is correctly identified as a combo, we don't open the popup https://github.com/odoo/odoo/blob/14d51bd960d7dd49cb234722b7725b98549feb04/addons/point_of_sale/static/src/app/store/pos_store.js#L735-L742 Taking the `configure` parameter doesn't seem to make sense with combo products, as these ones always stand for some other products that the user should select. [1] https://github.com/odoo/odoo/commit/65652c73ba5331f77911186543062dfddf50f077 OPW-4474214 Forward-Port-Of: odoo/odoo#205223 Forward-Port-Of: odoo/odoo#203314
**Current behavior before PR:** When a thread is created from a message, the message author is not automatically added as a member of the thread. **Desired behavior after PR is merged:** The message author is implicitly added as a member when a thread is created from message. **Task**-4656632 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#205449 Forward-Port-Of: odoo/odoo#203094
Original PR description
**Current behavior before PR:** When a thread is created from a message, the message author is not automatically added as a member of the thread. **Desired behavior after PR is merged:** The message author is implicitly added as a member when a thread is created from message. **Task**-4656632 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#205449 Forward-Port-Of: odoo/odoo#203094
This commit makes sure that `product_uom_id` field is set on `product_supplierinfo` model, since the field is needed in most operations dealing with pricelists. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#203751
Original PR description
This commit makes sure that `product_uom_id` field is set on `product_supplierinfo` model, since the field is needed in most operations dealing with pricelists. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#203751
Factur x cannot have negative lines on <ram:ChargeAmount> which can happen when there is a discount on the invoice. - Create a sale order with a global discount, generate the invoice and generate the factur x xml. - The amount on <ram:ChargeAmount> is negative. We can instead invert both price unit and quantity to have the same result. Inspired by 6f0642d62b6a07141553b655ee3c2b4369bf8ffb which did the same fix for ubl. opw-4668558 Description of the issue/feature this PR addresse
Original PR description
Factur x cannot have negative lines on <ram:ChargeAmount> which can happen when there is a discount on the invoice. - Create a sale order with a global discount, generate the invoice and generate the factur x xml. - The amount on <ram:ChargeAmount> is negative. We can instead invert both price unit and quantity to have the same result. Inspired by 6f0642d62b6a07141553b655ee3c2b4369bf8ffb which did the same fix for ubl. opw-4668558 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#204952 Forward-Port-Of: odoo/odoo#203298
After https://github.com/odoo/odoo/pull/144586, the modules other than base localization module should not have the `countries` key defined in their manifest. The issue happens because `countries` key works similar to auto-install and it can lead to unwanted installation of the module. As there was no check implemented, for some modules this key was used accidentally and caused issues with auto-install. This commit removes this field from the manifest of the modules that could have this
Original PR description
After https://github.com/odoo/odoo/pull/144586, the modules other than base localization module should not have the `countries` key defined in their manifest. The issue happens because `countries` key works similar to auto-install and it can lead to unwanted installation of the module. As there was no check implemented, for some modules this key was used accidentally and caused issues with auto-install. This commit removes this field from the manifest of the modules that could have this problem to avoid the issue. Also in https://github.com/odoo/odoo/pull/201526 a linting test is proposed to avoid having the same issue in the future. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#201610
When a purchase order is created with a positive and negative quantity of the same product but different unit prices, the read_group runs into a division by zero error as the `SUM('purchase_report'.'qty_ordered')` is zero. To prevent this exception, we NULL the denominator if it's 0. **Example PO that would cause issues when adding "Average Cost" as a measure in the purchase report:**  opw-4684787
Original PR description
When a purchase order is created with a positive and negative quantity of the same product but different unit prices, the read_group runs into a division by zero error as the `SUM('purchase_report'.'qty_ordered')` is zero.
To prevent this exception, we NULL the denominator if it's 0.
**Example PO that would cause issues when adding "Average Cost" as a measure in the purchase report:**

opw-4684787
Forward-Port-Of: odoo/odoo#204674Forward-Port-Of: odoo/odoo#205093 Forward-Port-Of: odoo/odoo#203325
Original PR description
Forward-Port-Of: odoo/odoo#205093 Forward-Port-Of: odoo/odoo#203325
- Changed payment link error to list the causes instead of displaying 'This invoice is already paid' in all cases. - Generating a payment link is now not possible while online payments are disabled in settings, a warning is displayed instead. task-4609554 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#199985
Original PR description
- Changed payment link error to list the causes instead of displaying 'This invoice is already paid' in all cases. - Generating a payment link is now not possible while online payments are disabled in settings, a warning is displayed instead. task-4609554 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#199985
Steps: === - Open the restaurant's POS system. - Configure it for self-invoicing with QR code + link. - Access the restaurant's mobile menu. - Place an order and download the receipt. Issue: === - The receipt shows an incorrect unique code. - The QR code and link redirect to `undefined/pos/ticket`. Fix: === - Corrected the system to generate a valid unique code for each order. - Fixed the QR code and link to properly redirect to the correct page. Task: 4512074 Forward-Port-O
Original PR description
Steps: === - Open the restaurant's POS system. - Configure it for self-invoicing with QR code + link. - Access the restaurant's mobile menu. - Place an order and download the receipt. Issue: === - The receipt shows an incorrect unique code. - The QR code and link redirect to `undefined/pos/ticket`. Fix: === - Corrected the system to generate a valid unique code for each order. - Fixed the QR code and link to properly redirect to the correct page. Task: 4512074 Forward-Port-Of: odoo/odoo#205247 Forward-Port-Of: odoo/odoo#196158
Currently, an exception is generated in the log when the users create a POS order as follows - Install module pos_restaurant. - Open `POS Restaurant`. - Add some products to the order go to `Payments`, and select card(Pick any table) - Open Inspect, go to the Network tab and enable Offline Mode. - Click Validate, go to Orders, and click Load Order. - Add Products to the Orders and click on Order. - In the Network tab, enable No Throttling and click on Orders again. - Do the above step
Original PR description
Currently, an exception is generated in the log when the users create a POS order as follows - Install module pos_restaurant. - Open `POS Restaurant`. - Add some products to the order go to…
Currently, an exception is generated in the log when the users create a POS order as follows - Install module pos_restaurant. - Open `POS Restaurant`. - Add some products to the order go to `Payments`, and select card(Pick any table) - Open Inspect, go to the Network tab and enable Offline Mode. - Click Validate, go to Orders, and click Load Order. - Add Products to the Orders and click on Order. - In the Network tab, enable No Throttling and click on Orders again. - Do the above step one more time `on the same table`. This error occurs when the system tries to fetch the order reference name in offline mode, it receives False instead of the default value '/', because the name field is initialized in Python at [1] as fields.Char(default='/'). To resolve this, the commit initializes the `name` on the server side to ensure it defaults to "/". Ref: https://github.com/odoo/odoo/pull/202525 Link [1]: https://github.com/odoo/odoo/blob/2aa8c180b33ed17d35b8fadc3ef4ad267e6c523d/addons/point_of_sale/models/pos_order.py#L254 Sentry - 6365371665 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#202825
**Steps to reproduce:** - Install Accounting and l10n_es_edi_facturae - Switch to a Spanish company (e.g. ES Company) - Create an invoice: * Customer: [a Spanish customer] (e.g. Ayuntamiento De Bilbao) * Product: [any] * Customer Reference: [anything] - Confirm the invoice - Generate Facturae edi file via "Send & Print" button - Check the generated XML **Issue:** When submitting the XML to FACe service, the XML is rejected because "ReceiverTransactionReference" and "ReceiverCo
Original PR description
**Steps to reproduce:** - Install Accounting and l10n_es_edi_facturae - Switch to a Spanish company (e.g. ES Company) - Create an invoice: * Customer: [a Spanish customer] (e.g. Ayuntamiento De…
**Steps to reproduce:** - Install Accounting and l10n_es_edi_facturae - Switch to a Spanish company (e.g. ES Company) - Create an invoice: * Customer: [a Spanish customer] (e.g. Ayuntamiento De Bilbao) * Product: [any] * Customer Reference: [anything] - Confirm the invoice - Generate Facturae edi file via "Send & Print" button - Check the generated XML **Issue:** When submitting the XML to FACe service, the XML is rejected because "ReceiverTransactionReference" and "ReceiverContractReference" are not defined for each "InvoiceLine" element. There are just defined for the invoice in general in "FileReference" element. According to the official documentation https://www.facturae.gob.es/formato/Paginas/version-3-2.aspx they can be defined in "InvoiceIssueData" and "InvoiceLine". FACe seems to require it in "InvoiceLine". **Solution:** Also add "ReceiverContractReference" in "InvoiceLine" and fall back on customer reference of the invoice for "ReceiverTransactionReference" of the line. opw-4579987 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#205264 Forward-Port-Of: odoo/odoo#204294
In `07df9a2` a preview for the zpl labels of products was added in `stock`. In order to generate this preview the `labelary` api was used. The fact the server calls an external API with enterprise data (pricing information associated with product) automatically is in breach of our privacy policies. In this commit we remove the api call. The user will now see the default placeholder image instead of the rendered label. The plan is to later find a way to render the label locally. Ta
Original PR description
In `07df9a2` a preview for the zpl labels of products was added in `stock`. In order to generate this preview the `labelary` api was used. The fact the server calls an external API with enterprise data (pricing information associated with product) automatically is in breach of our privacy policies. In this commit we remove the api call. The user will now see the default placeholder image instead of the rendered label. The plan is to later find a way to render the label locally. Task 4555651 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#203749
Fixes ``` File "/home/odoo/src/odoo/odoo/addons/base/models/ir_model.py", line 2647, in _process_end self._process_end_unlink_record(record) File "/home/odoo/src/odoo/addons/website/models/ir_model_data.py", line 35, in _process_end_unlink_record return super()._process_end_unlink_record(record) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/odoo/src/odoo/odoo/addons/base/models/ir_model.py", line 2576, in _process_end_unlink_record record.unlink()
Original PR description
Fixes ``` File "/home/odoo/src/odoo/odoo/addons/base/models/ir_model.py", line 2647, in _process_end self._process_end_unlink_record(record) File…
Fixes
```
File "/home/odoo/src/odoo/odoo/addons/base/models/ir_model.py", line 2647, in _process_end
self._process_end_unlink_record(record)
File "/home/odoo/src/odoo/addons/website/models/ir_model_data.py", line 35, in _process_end_unlink_record
return super()._process_end_unlink_record(record)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/odoo/src/odoo/odoo/addons/base/models/ir_model.py", line 2576, in _process_end_unlink_record
record.unlink()
File "/home/odoo/src/odoo/addons/mail/models/ir_model_fields.py", line 52, in unlink
'sequence': self.env[field.model_id.model]._mail_track_get_field_sequence(field.name),
~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^
File "/home/odoo/src/odoo/odoo/api.py", line 612, in __getitem__
return self.registry[model_name](self, (), ())
~~~~~~~~~~~~~^^^^^^^^^^^^
File "/home/odoo/src/odoo/odoo/modules/registry.py", line 240, in __getitem__
return self.models[model_name]
~~~~~~~~~~~^^^^^^^^^^^^
KeyError: 'my.custom.model'
```
To reproduce:
* add a model with a tracked field to a module
* create a record and update field value to create a tracking message
* remove the model from the module and update the module
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#204978In 8ce6e7a426834210dc861b5f92d216a86062dc2e an error is thrown if the `many2many_uom_tags` is not correctly configured. Following that, some uses of this widget were removed (see 51c4e461eb13b01f6c752171c25214d5b612a443 for example) but the issue is, for DB with unreloaded view, the wrong uses of widget will still be in the templates alongside with the code throwing an error is triggered. To avoid that, this commit replaces the thrown error by a warning in the console and will use `product.prod
Original PR description
In 8ce6e7a426834210dc861b5f92d216a86062dc2e an error is thrown if the `many2many_uom_tags` is not correctly configured. Following that, some uses of this widget were removed (see 51c4e461eb13b01f6c752171c25214d5b612a443 for example) but the issue is, for DB with unreloaded view, the wrong uses of widget will still be in the templates alongside with the code throwing an error is triggered. To avoid that, this commit replaces the thrown error by a warning in the console and will use `product.product` as the model if those cases (which can also causes a traceback since it was the initial error.) Forward-Port-Of: odoo/odoo#205407
**Problem:** On a repair order, if the user is changed it changes the location (and recycled parts destination location) to the default one. Additionally, when the order is confirmed, there is no way to change manually the location. The problematic use case is that if you first confirm the RO and then change the user, it will trigger a change of the location that you won't be able to revert manually. **Steps to reproduce:** - enable location in DB - create a new repair order - change the
Original PR description
**Problem:** On a repair order, if the user is changed it changes the location (and recycled parts destination location) to the default one. Additionally, when the order is confirmed, there is no way…
**Problem:** On a repair order, if the user is changed it changes the location (and recycled parts destination location) to the default one. Additionally, when the order is confirmed, there is no way to change manually the location. The problematic use case is that if you first confirm the RO and then change the user, it will trigger a change of the location that you won't be able to revert manually. **Steps to reproduce:** - enable location in DB - create a new repair order - change the location and recycled parts destination location - confirm the repair order - change the responsible user **Current Behavior:** The location and recycled parts destination location fields values are changed to the default value for this operation type. **Expected Behavior:** The values of those fields shouldn't change after the repair order is confirmed. **Cause of the issue:** The _compute_picking_type_id depends on "user_id" and is therefore triggered when the user is changed https://github.com/odoo/odoo/blob/1445d5adabf8eabe83e842c214655a74434bad4d/addons/repair/models/repair.py#L196 This triggers the _compute_location_id and _compute_recycle_location_id methods because they depend on "picking_type_id" https://github.com/odoo/odoo/blob/fa41c1d50f10ebab08437557ee863348a63de2c0/addons/repair/models/repair.py#L204 This happens regardless of whether the repair order has been confirmed. Because the list of compute methods to be triggered when user_id is changed is computed all at once before running them, adding an if statement at the beginning of _compute_picking_type_id (preventing the change of value of picking_type_id if the state is not "draft") would not prevent _compute_location_id and _compute_recycle_location_id to run. Putting an if statement at the beginning of _compute_location_id and _compute_recycle_location_id to prevent the change when the state is not in "draft" is not a good fix either. That's because we wouldn't know if the computation is triggered by a change of user or a change of picking_type_id (in which case we want the computation to run) **Fix:** I removed the 'user_id' dependency on _compute_picking_type_id opw-4555293 Forward-Port-Of: odoo/odoo#202227
In this commit: ------------------- - If we have custom description applied in the sale order for any product that custom description would be reflected as it is on the invoice when we settle that SO from POS. Task - 4645762 Forward-Port-Of: odoo/odoo#202665
Original PR description
In this commit: ------------------- - If we have custom description applied in the sale order for any product that custom description would be reflected as it is on the invoice when we settle that SO from POS. Task - 4645762 Forward-Port-Of: odoo/odoo#202665
Description of the issue/feature this PR addresses: As a result of the following commit 9a6b8fec280ccf63b14d3fdafdd39f534c54c646 normal users attempting to print invoices in SA company where the invocie has been ZATCA verified, are getting errors if they have insufficient access rights; for instance a normal user who has POS User access and Accounting/Billing is unable to generate PoS orders as they are forced to have the invoice checkbox set in the `l10n_sa_pos` and when the invoice is generat
Original PR description
Description of the issue/feature this PR addresses: As a result of the following commit 9a6b8fec280ccf63b14d3fdafdd39f534c54c646 normal users attempting to print invoices in SA company where the…
Description of the issue/feature this PR addresses:
As a result of the following commit 9a6b8fec280ccf63b14d3fdafdd39f534c54c646 normal users attempting to print invoices in SA company where the invocie has been ZATCA verified, are getting errors if they have insufficient access rights; for instance a normal user who has POS User access and Accounting/Billing is unable to generate PoS orders as they are forced to have the invoice checkbox set in the `l10n_sa_pos` and when the invoice is generated it is giving the following Traceback.
Current behavior before PR:
```
Traceback (most recent call last):
File "/home/odoo/src/odoo/odoo/api.py", line 1013, in get
cache_value = field_cache[record._ids[0]]
KeyError: 415613
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/odoo/src/odoo/odoo/fields.py", line 1161, in _get_
value = env.cache.get(record, self)
File "/home/odoo/src/odoo/odoo/api.py", line 1020, in get
raise CacheMiss(record, field)
odoo.exceptions.CacheMiss: 'account.edi.document(415613,).attachment_id'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/odoo/src/odoo/odoo/fields.py", line 1187, in _get_
recs._fetch_field(self)
File "/home/odoo/src/odoo/odoo/models.py", line 3230, in _fetch_field
self.check_field_access_rights('read', [field.name])
File "/home/odoo/src/odoo/odoo/models.py", line 2986, in check_field_access_rights
raise AccessError(_(
odoo.exceptions.AccessError: The requested operation can not be completed due to security restrictions.
Document type: Electronic Document for an account.move (account.edi.document)
Operation: read
User: 40
Fields:
• attachment_id (allowed for groups 'Administration / Settings')
```
Desired behavior after PR is merged:
To Fix the issue and sudo() the access to the edi attachment
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#204912Description of the issue/feature this PR addresses: This commit addresses translations not being exposed to the frontend for the survey module. Current behavior before PR: For surveys, no translatable terms existing in JavaScript are being translated. This mainly concerns `survey_form.js`. Lack of translations there easily results in a mix of languages being shown to a user answering a survey. Desired behavior after PR is merged: Translatable terms defined in JavaScript are trans
Original PR description
Description of the issue/feature this PR addresses: This commit addresses translations not being exposed to the frontend for the survey module. Current behavior before PR: For surveys, no translatable terms existing in JavaScript are being translated. This mainly concerns `survey_form.js`. Lack of translations there easily results in a mix of languages being shown to a user answering a survey. Desired behavior after PR is merged: Translatable terms defined in JavaScript are translated to the user's language. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#204191 Forward-Port-Of: odoo/odoo#204077
* applies to: `l10n_in_edi_ewaybill`, `l10n_in_ewaybill_stock` * Before this commit: When there were multiple alerts, the code handled all alert messages correctly and calculated the `distance` as expected. However, when there was only a single alert related to distance, the process would get stuck. * After this commit: The code now also handles cases with a single distance-related alert message, ensuring proper detection and processing in all scenarios. > No Task ID --- I confirm
Original PR description
* applies to: `l10n_in_edi_ewaybill`, `l10n_in_ewaybill_stock` * Before this commit: When there were multiple alerts, the code handled all alert messages correctly and calculated the `distance` as expected. However, when there was only a single alert related to distance, the process would get stuck. * After this commit: The code now also handles cases with a single distance-related alert message, ensuring proper detection and processing in all scenarios. > No Task ID --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#205314 Forward-Port-Of: odoo/odoo#205054
This commit changes a test that checks that we cannot remove a specific member from an article. The issue was that the parameter provided didn't respect the function's signature by giving a `res.users` instead of a `knowledge.article.member`. By chance, it always worked as those model share the field partner_id that represent the same data. But it is updated so that it better represents the correct use of the method. Forward-Port-Of: odoo/enterprise#83024
Original PR description
This commit changes a test that checks that we cannot remove a specific member from an article. The issue was that the parameter provided didn't respect the function's signature by giving a `res.users` instead of a `knowledge.article.member`. By chance, it always worked as those model share the field partner_id that represent the same data. But it is updated so that it better represents the correct use of the method. Forward-Port-Of: odoo/enterprise#83024
In databases migrated to Odoo 18, that has the module l10n_mx_edi_stock installed the field l10n_mx_edi_hazardous_material remains empty. This issue occurs because the CSV file (product.unspsc.code.csv) assigns the value but the records are no update As a result, customers cannot generate the Carta Porte in the l10n_mx module, encountering the following error: Error 301 (CP155): The attribute "Mercancia:MaterialPeligroso" is missing or invalid when the ClaveProdServ is declared as hazardo
Original PR description
In databases migrated to Odoo 18, that has the module l10n_mx_edi_stock installed the field l10n_mx_edi_hazardous_material remains empty. This issue occurs because the CSV file (product.unspsc.code.csv) assigns the value but the records are no update As a result, customers cannot generate the Carta Porte in the l10n_mx module, encountering the following error: Error 301 (CP155): The attribute "Mercancia:MaterialPeligroso" is missing or invalid when the ClaveProdServ is declared as hazardous. As it was mentioned here: https://github.com/odoo/upgrade/pull/7468 I modified the script to use ir_model_data to link the records and now it's on the carpet migrations of l10n_mx_edi_stock Here is a ticket with an example of the error https://www.odoo.com/odoo/project.task/4577049/action-4665/4631583 Forward-Port-Of: odoo/enterprise#82972
Forward-Port-Of: odoo/enterprise#82967
Original PR description
Forward-Port-Of: odoo/enterprise#82967
Users don't need to be able to read all spreadsheet. It hurts performance. Task: 4656165 Forward-Port-Of: odoo/enterprise#82696 Forward-Port-Of: odoo/enterprise#81728
Original PR description
Users don't need to be able to read all spreadsheet. It hurts performance. Task: 4656165 Forward-Port-Of: odoo/enterprise#82696 Forward-Port-Of: odoo/enterprise#81728
After https://github.com/odoo/odoo/pull/144586, the modules other than base localization module should not have the countries key defined in their manifest. The issue happens because countries key works similar to auto-install and it can lead to unwanted installation of the module. As there was no check implemented, for some modules this key was used accidentally and caused issues with auto-install. This commit removes this field from the manifest of the modules that could have this pro
Original PR description
After https://github.com/odoo/odoo/pull/144586, the modules other than base localization module should not have the countries key defined in their manifest. The issue happens because countries key works similar to auto-install and it can lead to unwanted installation of the module. As there was no check implemented, for some modules this key was used accidentally and caused issues with auto-install. This commit removes this field from the manifest of the modules that could have this problem to avoid the issue. Also in https://github.com/odoo/odoo/pull/201526 a linting test is proposed to avoid having the same issue in the future. Runbot Errors: https://runbot.odoo.com/odoo/error/159875 https://runbot.odoo.com/odoo/error/159877 Forward-Port-Of: odoo/enterprise#81178
adding missing access rule (read permission to the group_purchase_user) for the test that checks it build_error-70728 Forward-Port-Of: odoo/enterprise#82753
Original PR description
adding missing access rule (read permission to the group_purchase_user) for the test that checks it build_error-70728 Forward-Port-Of: odoo/enterprise#82753
…rwriting **Issue:** The data_cleaning module contains two views, data_merge_model_views and data_cleaning_model_views, that share the same form view id. **Steps to Reproduce:** 1. Install the data_cleaning module 2. Open psql in the terminal 3. Run the following query:” select id, name, model from ir_ui_view where model ilike 'data_%' and type = 'form';” 4. Observe that data_cleaning.model is missing from the results Expected Behavior: the form view for data_cleaning.model should
Original PR description
…rwriting **Issue:** The data_cleaning module contains two views, data_merge_model_views and data_cleaning_model_views, that share the same form view id. **Steps to Reproduce:** 1. Install the…
…rwriting **Issue:** The data_cleaning module contains two views, data_merge_model_views and data_cleaning_model_views, that share the same form view id. **Steps to Reproduce:** 1. Install the data_cleaning module 2. Open psql in the terminal 3. Run the following query:” select id, name, model from ir_ui_view where model ilike 'data_%' and type = 'form';” 4. Observe that data_cleaning.model is missing from the results Expected Behavior: the form view for data_cleaning.model should be present in the database. Actual Behavior: the form view for data_cleaning.model is not found in the database. **Root Cause** The form view in data_cleaning_model_views has the same id as the one in data_merge_model_views. Because data_cleaning_model_views is loaded first (as defined in __manifest__.py), it gets overwritten by data_merge_model_views. **Fix** To prevent this issue, the form view id in data_cleaning_model_views has been renamed to a unique and more appropriate identifier. Opw-4517418 Forward-Port-Of: odoo/enterprise#80594
Vendor bills and purchase orders should always be negative on a budget with type `both`, as they are expenses. - Create a budget with type `both` - Create a sales invoice and several purchase orders and vendor bills - The budget report's purchase order amounts are positive and added up. As soon as they are billed they become negative. Task [link](https://www.odoo.com/odoo/project/967/tasks/4568067) opw-4568067 Forward-Port-Of: odoo/enterprise#83074 Forward-Port-Of: odoo/enterprise#
Original PR description
Vendor bills and purchase orders should always be negative on a budget with type `both`, as they are expenses. - Create a budget with type `both` - Create a sales invoice and several purchase orders and vendor bills - The budget report's purchase order amounts are positive and added up. As soon as they are billed they become negative. Task [link](https://www.odoo.com/odoo/project/967/tasks/4568067) opw-4568067 Forward-Port-Of: odoo/enterprise#83074 Forward-Port-Of: odoo/enterprise#81356
**before:**  **after:**  Forward-Port-Of: odoo/enterprise#82494
Original PR description
**before:**  **after:**  Forward-Port-Of: odoo/enterprise#82494
Implemented a communication bridge to enable customer display support on Android PoS devices with external screens. This allows the frontend web application to control content displayed on the secondary screen. See https://github.com/odoo/mobile/pull/252 See https://github.com/odoo/mobile/pull/254 task-4456187 Forward-Port-Of: odoo/enterprise#83085 Forward-Port-Of: odoo/enterprise#82055
Original PR description
Implemented a communication bridge to enable customer display support on Android PoS devices with external screens. This allows the frontend web application to control content displayed on the secondary screen. See https://github.com/odoo/mobile/pull/252 See https://github.com/odoo/mobile/pull/254 task-4456187 Forward-Port-Of: odoo/enterprise#83085 Forward-Port-Of: odoo/enterprise#82055