Daily updates from Odoo
Friday, January 24, 2025
33 changes · master
Enhancements to existing features
Company fields that can be left empty now show a "Visible to all" placeholder across several Odoo apps. This helps users understand that records without a specific company are shared across all companies, reducing confusion in multi-company environments.
Original PR description
### Purpose: Explain to users that when the field is not set, the record is shared across all companies ### After this PR: Added 'Visible to all' placeholder in company_id fields where, - its not a required field, - readonly="False" if have a default value or related/computed field Task-4159940
This update standardizes how internal administrator access is referenced across multiple Odoo Enterprise apps. It supports ongoing core maintenance and reduces technical inconsistency without changing day-to-day user workflows.
Original PR description
odoo/odoo#182371
The contract signing flow now shows clearer guidance when preparing documents for signature. The update simplifies the screen by replacing an upload button with text and removing an unnecessary warning icon, making the process less distracting for users.
Original PR description
- Updated the warning message. - Replaced the upload button with a text element. - Removed the warning icon. task-4453468
The WhatsApp integration no longer shows a toaster notification when someone leaves a discussion channel. This reduces unnecessary alerts and keeps the user experience cleaner during channel membership changes.
Original PR description
Enterprise counter-part. Discussed as part of task-4488437 https://github.com/odoo/odoo/pull/195008
This update adjusts tests after required full-time hours became calculated automatically. It helps keep working schedule checks aligned with the updated behavior and reduces false test failures.
Original PR description
- AS `full_time_required_hours` became computed the test should be adabted Task: 4313444
Resolved issues and error corrections
Indian payroll payslips no longer show the internal payslip ID in the page breadcrumb. This makes the payslip screen cleaner and avoids exposing unnecessary internal identifiers to users.
Original PR description
Steps to Reproduce: • Install the l10n_in_hr_payroll module. • Open payslip. you can see id of payslip in breadcrumbs. Fix: Removed id from the name of payslip. task-4402393
This fixes an error that could appear when users clicked a shift popover in Planning. The change helps staff view shift details without interruptions, improving reliability for sales planning workflows.
Original PR description
This PR fixes a traceback occurring in planning when clicking on the popover of a shift, due to an async method not being properly overridden. Task-4506661
Code cleanup and technical improvements
WhatsApp template fields were reorganized so templates are not unnecessarily recalculated when messages are sent. This makes the sending flow more reliable while avoiding disruptive view updates for existing customers.
Original PR description
The previous fix https://github.com/odoo/enterprise/commit/6f1b1a8 was not an actual solution, as the proper fix requires a view update. This is not feasible in the stable version since we cannot force-update all customers' views. The purpose of this task is to refactor the **header_text_1**, **free_text_x** and **button_dynamic_url_x** fields. This will eliminate the need to use _origin and move the readonly attribute from the XML side to the Python file, preventing the WhatsApp template from being recomputed upon sending. Task-4083217
Miscellaneous changes
[FIX] documents: clean portal action We disable action that portal user cannot perform: In the preview: - hide Split Pdf in the preview In the cog menu: - remove "Move to Trash" as portal user can't archive document (and can't create folder nor access to the trash anyway) - Info&Tags as it opens the chatter which is disabled for portal user In action: - Info&Tags as it opens the chatter which is disabled for portal user - Duplicate only present if it doesn't lead to an error (ca
Original PR description
[FIX] documents: clean portal action We disable action that portal user cannot perform: In the preview: - hide Split Pdf in the preview In the cog menu: - remove "Move to Trash" as portal user can't…
[FIX] documents: clean portal action We disable action that portal user cannot perform: In the preview: - hide Split Pdf in the preview In the cog menu: - remove "Move to Trash" as portal user can't archive document (and can't create folder nor access to the trash anyway) - Info&Tags as it opens the chatter which is disabled for portal user In action: - Info&Tags as it opens the chatter which is disabled for portal user - Duplicate only present if it doesn't lead to an error (canDuplicateSelection method). We also remove the line separator in the action if the user is not internal otherwise it leads sometimes to an empty section. In the "New" drop down button: - hide "Folder" (create Folder) - hide "Link" (create link): fails because of (users | folders.owner_id).fetch(['partner_id']) in _prepare_create_values (no access to user) Hide share button for portal user: Although the portal users could share any documents they have access to (by sending them by email for example), we remove the share action (for document and folder) for them as the only thing they could do was to change the rights for user that had already a link to that document. [FIX] documents: fix attachment not pointing to the copied document When copying a document, the copied attachment still points to the orginal record: - if it is a document with an attachment associated to an other record (ex.: hr.expense). The attachment of the copied document is pointing to the same record as the orginal document. Ex.: for an expense, the expense has now 2 attachments linked (one linked to the original document and one linked to the copied one). - if it is a pure document, the attachment points to the orginal document We solve that problem here by always making the copied attachment to the copied document. How to reproduce case 1: - Install documents_hr_expense - Upload a document in the Document App - Create an expense from that document - Duplicate that document - Open the expense App - The expense related to the document has now 2 attachments instead of one How to reproduce case 2: - Install documents - Log in as admin and open Documents App - In Marketing -> Brand 1, duplicate "LA landscape.jpg" - Move "LA landscape.jpg" to the Trash and delete it (from the Trash) - Return to Marketing -> Brand 1 The copy has disappeared as well and shoudln't. It means that deleting the original document deletes all copies. It works also if we delete the copy (it deletes the original). [IMP] documents: allow portal user to delete their own documents Instead of enabling the Trash for the portal user, we add the delete action for their own documents only so that a user that have uploaded a document by mistake can delete it. Indeed, as portal user don't have access to the Trash, moving a document to the Trash like an internal user would do is no use. Task-4221258 Forward-Port-Of: odoo/enterprise#77281
See test in this commit to reproduce. Forward-Port-Of: odoo/enterprise#77729 Forward-Port-Of: odoo/enterprise#77563
Original PR description
See test in this commit to reproduce. Forward-Port-Of: odoo/enterprise#77729 Forward-Port-Of: odoo/enterprise#77563
This PR fixes a traceback occurring in planning when clicking on the popover of a shift, due to an async method not being properly overridden. Task-4506661 Forward-Port-Of: odoo/enterprise#77742
Original PR description
This PR fixes a traceback occurring in planning when clicking on the popover of a shift, due to an async method not being properly overridden. Task-4506661 Forward-Port-Of: odoo/enterprise#77742
**[IMP] account_reports: hide "Amount Currency" in PL if single currency** Currently, the column "Amount Currency" is displayed in the partner ledger even in a single currency setup. With this commit, it will now be hidden. **[FIX] account_reports: fix isNextLineChild** Currently, `isNextLineChild` method will consider `~account.report~14|~res.partner~10|0~account.move.line~32` being a a child of `~account.report~14|~res.partner~10|0~account.move.line~3` as the first string star
Original PR description
**[IMP] account_reports: hide "Amount Currency" in PL if single currency** Currently, the column "Amount Currency" is displayed in the partner ledger even in a single currency setup. With this commit, it will now be hidden. **[FIX] account_reports: fix isNextLineChild** Currently, `isNextLineChild` method will consider `~account.report~14|~res.partner~10|0~account.move.line~32` being a a child of `~account.report~14|~res.partner~10|0~account.move.line~3` as the first string starts with the second one. This is wrong, they are siblings. The fix here is to add a pipe, as done in `isLineChildOf`. **task-4321032** Forward-Port-Of: odoo/enterprise#77590 Forward-Port-Of: odoo/enterprise#73843
Several things addressed on the details panel. A. When editing a previewed document, no data was saved. When editing a previewed document, no data was saved. Reproduce: 1. Without selecting any document, open a preview 2. Rename the document or add a tag 3. Close the preview 4. Reload the page 5. See that changes were not saved BTW, tags could not be created from the inspector, it's not clear why. Technical note: for previewed record, that are not "selected" when we update
Original PR description
Several things addressed on the details panel. A. When editing a previewed document, no data was saved. When editing a previewed document, no data was saved. Reproduce: 1. Without selecting any…
Several things addressed on the details panel. A. When editing a previewed document, no data was saved. When editing a previewed document, no data was saved. Reproduce: 1. Without selecting any document, open a preview 2. Rename the document or add a tag 3. Close the preview 4. Reload the page 5. See that changes were not saved BTW, tags could not be created from the inspector, it's not clear why. Technical note: for previewed record, that are not "selected" when we update them, we need to force saving immediately. For records that are selected, we can leave the webclient behavior for saving records (urgent save). This can lead to having tracked fields being immediately reported (seen in chatter) when editing previewed documents but not the others. This is acceptable for simplicity. B. When showing data for the current folder opened, the contact info was missing (partner_id). Reproduce: 1. Go inside any folder 2. Without selecting any documents, add a contact to the current folder via the details panel 4. Reload the page 5. The partner doesn't show up in the field (even though it is updated on the record). C. U pdate previewed document only Reproduce: 1. Select two records 2. Preview one of them 3. Change a value in the details panel 4. Both records were modified instead of the previewed one only We're also fixing the removal of the correct documents from the kanban view when documents are moved and making sure we do not try to edit this document again as it could likely not be in the view anymore at all. Task-4465443 Forward-Port-Of: odoo/enterprise#77136
1st issue: Since the introduction of the [media command] in the editor, replacing the previous `/file`, some tour steps of a disabled test became obsolete. This commit fixes these steps according to changes introduced along the `/media` command, in order to re-enable this test. 2nd issue: Other steps were incorrectly modified by [this commit] and had to be adapted too, related to the composer signature. 3rd issue: An embedded video was present in an article body in the readonly to
Original PR description
1st issue: Since the introduction of the [media command] in the editor, replacing the previous `/file`, some tour steps of a disabled test became obsolete. This commit fixes these steps according to…
1st issue: Since the introduction of the [media command] in the editor, replacing the previous `/file`, some tour steps of a disabled test became obsolete. This commit fixes these steps according to changes introduced along the `/media` command, in order to re-enable this test. 2nd issue: Other steps were incorrectly modified by [this commit] and had to be adapted too, related to the composer signature. 3rd issue: An embedded video was present in an article body in the readonly tour, and the patch supposed to neutralize it (to avoid external http requests) was applied in a manner that resulted in an indeterministic result: Sometimes the article body was loaded with the video, resulting in errors, sometimes the patch was applied resulting in the tour performing normally. This commit fixes the issue by ensuring there is no embedded video after the end of the editable tour, so that there is no need to care about it in the readonly tour. [media command]: https://github.com/odoo/odoo/commit/96c8c398c0fbef519b56edf4941691d11372eac0 [this commit]: https://github.com/odoo/enterprise/commit/1a73e227a5ce9fb1194e5664c8c4f5fcfe51b572 runbot-task-111948 Forward-Port-Of: odoo/enterprise#77732 Forward-Port-Of: odoo/enterprise#77654
### Steps to reproduce: - Install helpdesk_sale_timesheet module - Go to Timesheets and click on 'Add a line' - Set a task while the project is empty - Notice the project is not automatically filled with the task's project ### Cause: This is happening because while changing the task it trigger the computation of the helpdesk_ticket_id where it checks if something changed and if not we are removing the project_id from the computation tree. https://github.com/odoo/enterprise/blob/f5384
Original PR description
### Steps to reproduce: - Install helpdesk_sale_timesheet module - Go to Timesheets and click on 'Add a line' - Set a task while the project is empty - Notice the project is not automatically filled with the task's project ### Cause: This is happening because while changing the task it trigger the computation of the helpdesk_ticket_id where it checks if something changed and if not we are removing the project_id from the computation tree. https://github.com/odoo/enterprise/blob/f53841d756c532a95fccc15aca986143dfb53337/helpdesk_timesheet/models/analytic.py#L54-L60 ### Fix: Checking if the record is not created yet we won't remove the project_id from the computation tree to make sure it will get computed and auto-populate opw-4478579 opw-4457347 Forward-Port-Of: odoo/enterprise#77418
When sending pos_order to eTims, all numeric values must be positive values, but when computing refunded pos_order, some fields are computed with negative value. This commit manage to transform negative fields from refunded pos_order to positive field. no-task Forward-Port-Of: odoo/enterprise#77536 Forward-Port-Of: odoo/enterprise#77257
Original PR description
When sending pos_order to eTims, all numeric values must be positive values, but when computing refunded pos_order, some fields are computed with negative value. This commit manage to transform negative fields from refunded pos_order to positive field. no-task Forward-Port-Of: odoo/enterprise#77536 Forward-Port-Of: odoo/enterprise#77257
task-4328333 Forward-Port-Of: odoo/enterprise#76727
Original PR description
task-4328333 Forward-Port-Of: odoo/enterprise#76727
The uninstallation of this test module, which is a standard step during upgrades, requires the removal of the test product `product_fire_insurance`. This product is referenced by sale orders and invoices and deferred invoices created dynamically and have no xmlids, blocking the removal of the record. This commits adds the xmlids to the dynamically created orders and moves so they can be removed as well during the module uninstallation. The target sale orders are those created via 'copy' and whe
Original PR description
The uninstallation of this test module, which is a standard step during upgrades, requires the removal of the test product `product_fire_insurance`. This product is referenced by sale orders and invoices and deferred invoices created dynamically and have no xmlids, blocking the removal of the record. This commits adds the xmlids to the dynamically created orders and moves so they can be removed as well during the module uninstallation. The target sale orders are those created via 'copy' and when doing upsell and renew for subscriptions. The target moves are the regular invoices for the sale orders and their deferred moves. Forward-Port-Of: odoo/enterprise#77657 Forward-Port-Of: odoo/enterprise#76813
The REV line was introduced in 18.0 when revamping the P&L, here: https://github.com/odoo/enterprise/commit/cbe74884b937f630cf1d2ccf475a04e70b6f4669 Following this change, this line should be used in the formula of the Net profit margin of the Executive Summary, as stated here https://www.investopedia.com/terms/n/net_margin.asp Forward-Port-Of: odoo/enterprise#77524
Original PR description
The REV line was introduced in 18.0 when revamping the P&L, here: https://github.com/odoo/enterprise/commit/cbe74884b937f630cf1d2ccf475a04e70b6f4669 Following this change, this line should be used in the formula of the Net profit margin of the Executive Summary, as stated here https://www.investopedia.com/terms/n/net_margin.asp Forward-Port-Of: odoo/enterprise#77524
Bug 1 ===== The chatter in the list view never open on the current folder / selected document. Bug 2 ===== If we are in the list view, and we are inside a folder, when selecting a document, it will show "Unnamed" for the folder. The reason is that with `column_invisible=1`, the display name is not loaded. To solve that, we can put the field in `optional="hide"`. Task-4461038 Forward-Port-Of: odoo/enterprise#76699
Original PR description
Bug 1 ===== The chatter in the list view never open on the current folder / selected document. Bug 2 ===== If we are in the list view, and we are inside a folder, when selecting a document, it will show "Unnamed" for the folder. The reason is that with `column_invisible=1`, the display name is not loaded. To solve that, we can put the field in `optional="hide"`. Task-4461038 Forward-Port-Of: odoo/enterprise#76699
In this PR: - Introduced a new method `_get_gstr_responsible_activity_and_user` to dynamically retrieve or create the GSTR-1 exception mail activity type and determine the responsible user for handling GSTR-1 errors. - Ensured that the activity type is created on-the-fly if it does not exist, avoiding potential errors during execution. - Updated `check_gstr1_status` to utilize the new method for assigning the responsible user and activity type when scheduling activities for invoices with
Original PR description
In this PR: - Introduced a new method `_get_gstr_responsible_activity_and_user` to dynamically retrieve or create the GSTR-1 exception mail activity type and determine the responsible user for…
In this PR: - Introduced a new method `_get_gstr_responsible_activity_and_user` to dynamically retrieve or create the GSTR-1 exception mail activity type and determine the responsible user for handling GSTR-1 errors. - Ensured that the activity type is created on-the-fly if it does not exist, avoiding potential errors during execution. - Updated `check_gstr1_status` to utilize the new method for assigning the responsible user and activity type when scheduling activities for invoices with GSTR-1 errors. - Improved logic to determine the responsible user: - Default to the activity type's `default_user_id` if they belong to the appropriate group and company. - Fallback to the last relevant `mail.message` for identifying a responsible user. - Enhanced activity scheduling to use the identified activity type and responsible user, improving traceability and accountability. This change improves error handling in the GSTR-1 process and ensures better alignment with user responsibilities. Forward-Port-Of: odoo/enterprise#77706 Forward-Port-Of: odoo/enterprise#77002
The issue: The delivered qty is not reflected on the order line after creating the first recurring invoice by the cron job. Steps to reproduce: 1. Create a product with the following configuration: Product Type: Service Create on Order: Nothing Invoicing Policy: Based on Timesheets Product Category: Sellable and Subscription Product 2. Set up a recurring subscription plan for the product 3. Create a Sales Order (SO) for the product and confirm it 4. Add hours to a task linked to
Original PR description
The issue: The delivered qty is not reflected on the order line after creating the first recurring invoice by the cron job. Steps to reproduce: 1. Create a product with the following configuration:…
The issue: The delivered qty is not reflected on the order line after creating the first recurring invoice by the cron job. Steps to reproduce: 1. Create a product with the following configuration: Product Type: Service Create on Order: Nothing Invoicing Policy: Based on Timesheets Product Category: Sellable and Subscription Product 2. Set up a recurring subscription plan for the product 3. Create a Sales Order (SO) for the product and confirm it 4. Add hours to a task linked to the SO 5. From Settings > Technical > Automation > Scheduled Actions, manually trigger the cron job "Sale Subscription: generate recurring invoices and payments" to update the `next_invoice_date`. Observed behavior: On the SO page, the smart button of the tasks reflects the hours added correctly. However, the delivered quantity field in the SO line does not update based on the added hours. The reason: The delivered quantity for timesheet based services is computed taking into account the current period [1], however, `next_invoice_date` was not added as a dependency to the compute method of `qty_delivered`, causing this latter to have a stale value when `next_invoice_date` gets updated when creating the first recurring invoice by `_create_recurring_invoice` [2]. The fix: Added `next_invoice_date` as a dependency for the compute function of `qty_deliverd`. [1]: https://github.com/odoo/enterprise/blob/e990d101cce90311f3e2c5d9be4d480b329f9f2a/sale_subscription_timesheet/models/sale_order_line.py#L39 [2]: https://github.com/odoo/enterprise/blob/07f01f39cb46f1763637b50e628dfb613b0d2266/sale_subscription/models/sale_order.py#L1168 opw-4378914 opw-4426787 opw-4463512 Forward-Port-Of: odoo/enterprise#77059
Steps to reproduce: 1) Configure SEPA provider 2) Input wrong IBAN 3) See UI blocked After this commit when a rpc error happens during payment processing UI is unblocked allowing user to see the error. opw-4411773 Forward-Port-Of: odoo/enterprise#77634
Original PR description
Steps to reproduce: 1) Configure SEPA provider 2) Input wrong IBAN 3) See UI blocked After this commit when a rpc error happens during payment processing UI is unblocked allowing user to see the error. opw-4411773 Forward-Port-Of: odoo/enterprise#77634
Before this commit, `_compute_past_shift` method will compute the `is_past` but also set `request_to_switch` field to False when the shift is in the past and `request_to_switch` was truely. The problem is the `_compute_past_shift` could be only called to read `is_past` field and so the cursor is sometimes in readonly to only allow SQL queries to fetch data. This commit makes sure the `_compute_past_shift` method will only alter `is_past` field and alter `request_to_switch` inside the met
Original PR description
Before this commit, `_compute_past_shift` method will compute the `is_past` but also set `request_to_switch` field to False when the shift is in the past and `request_to_switch` was truely. The problem is the `_compute_past_shift` could be only called to read `is_past` field and so the cursor is sometimes in readonly to only allow SQL queries to fetch data. This commit makes sure the `_compute_past_shift` method will only alter `is_past` field and alter `request_to_switch` inside the method that could be called when `request_to_switch` is truly for the shift contains in self. A cron is not added to make sure the request_to_switch for the shifts in the past will be set to False because the actual code is sufficient since we usually check if the shift is in the past before allowing the action or displaying the button. runbot-66162 task-4276516 Forward-Port-Of: odoo/enterprise#77523 Forward-Port-Of: odoo/enterprise#68031
- Renamed "Employee ID" field label - Updated the message for non validated payslips task-4452133 Forward-Port-Of: odoo/enterprise#76528
Original PR description
- Renamed "Employee ID" field label - Updated the message for non validated payslips task-4452133 Forward-Port-Of: odoo/enterprise#76528
The tool tip is being replaced with a more concise message. task-4437887 Forward-Port-Of: odoo/enterprise#77652 Forward-Port-Of: odoo/enterprise#76474
Original PR description
The tool tip is being replaced with a more concise message. task-4437887 Forward-Port-Of: odoo/enterprise#77652 Forward-Port-Of: odoo/enterprise#76474
*: account_reports On smaller screen, the ControlPanel's buttons for CogMenu, Buttonbox, Knowledge, Search don't have a consistent width. This commit fixes it by giving those buttons' icon a fixed width, independently of the character's size and adjusting the horizontal padding for this use case. task-4492690 Forward-Port-Of: odoo/enterprise#77534 Forward-Port-Of: odoo/enterprise#77412
Original PR description
*: account_reports On smaller screen, the ControlPanel's buttons for CogMenu, Buttonbox, Knowledge, Search don't have a consistent width. This commit fixes it by giving those buttons' icon a fixed width, independently of the character's size and adjusting the horizontal padding for this use case. task-4492690 Forward-Port-Of: odoo/enterprise#77534 Forward-Port-Of: odoo/enterprise#77412
The goal of this commit is to remove the AR, AP and G prefix when exporting the journal report to a PDF. This was first introduced here: https://github.com/odoo/enterprise/commit/d023d914dce1b23bf321252fb844c780e831f003 We now want to revert back that idea task-4453514 Forward-Port-Of: odoo/enterprise#77476
Original PR description
The goal of this commit is to remove the AR, AP and G prefix when exporting the journal report to a PDF. This was first introduced here: https://github.com/odoo/enterprise/commit/d023d914dce1b23bf321252fb844c780e831f003 We now want to revert back that idea task-4453514 Forward-Port-Of: odoo/enterprise#77476
**Problem**: When splitting a document, the `output` should include the attachments from the `input_pdf`. Currently, the attachments are missing in the output after splitting. **Steps to reproduce**: 1. In the Documents app, upload a PDF that contains attachments (example file provided in the ticket). 2. Split the uploaded PDF. 3. Preview the split file and check the left panel. 4. Notice that the attachments are missing in the left panel. opw-4191327 Forward-Port-Of: odoo/enterprise
Original PR description
**Problem**: When splitting a document, the `output` should include the attachments from the `input_pdf`. Currently, the attachments are missing in the output after splitting. **Steps to reproduce**: 1. In the Documents app, upload a PDF that contains attachments (example file provided in the ticket). 2. Split the uploaded PDF. 3. Preview the split file and check the left panel. 4. Notice that the attachments are missing in the left panel. opw-4191327 Forward-Port-Of: odoo/enterprise#77518 Forward-Port-Of: odoo/enterprise#74989
Changes to the synchronization system to ensure full synchronization every time a PoS writes to a record. This synchronization will not unlink local records in other PoS. Forward-Port-Of: odoo/enterprise#76579 Forward-Port-Of: odoo/enterprise#76253
Original PR description
Changes to the synchronization system to ensure full synchronization every time a PoS writes to a record. This synchronization will not unlink local records in other PoS. Forward-Port-Of: odoo/enterprise#76579 Forward-Port-Of: odoo/enterprise#76253
Forward-Port-Of: odoo/enterprise#77473
Original PR description
Forward-Port-Of: odoo/enterprise#77473
This is a rework of the mexican localisation to make it compliant with the local authorities. Task: 3673251 Forward-Port-Of: odoo/enterprise#77628 Forward-Port-Of: odoo/enterprise#73381
Original PR description
This is a rework of the mexican localisation to make it compliant with the local authorities. Task: 3673251 Forward-Port-Of: odoo/enterprise#77628 Forward-Port-Of: odoo/enterprise#73381
Issue Before This Commit: ============================ The traceback occurs when attempting to scan a transfer in the barcode module. Steps to Produce: ===================== 1. Install the stock_barcode_picking_batch module. 2. Navigate to the Barcode module. 3. Scan an existing transfer. 4. Notice that a traceback occurs due to an 'Expected singleton: stock.picking.type()' error. With This Commit: ===================== - The issue occurred due to a missing picking type, leading t
Original PR description
Issue Before This Commit: ============================ The traceback occurs when attempting to scan a transfer in the barcode module. Steps to Produce: ===================== 1. Install the stock_barcode_picking_batch module. 2. Navigate to the Barcode module. 3. Scan an existing transfer. 4. Notice that a traceback occurs due to an 'Expected singleton: stock.picking.type()' error. With This Commit: ===================== - The issue occurred due to a missing picking type, leading to a failure in self.ensure_one(). The fix ensures the correct picking type is provided, preventing the error during transfer scanning. task - [4504475](https://www.odoo.com/odoo/project/966/tasks/4504475) Forward-Port-Of: odoo/enterprise#77622