Skip to content

Commit d52d69b

Browse files
committed
Merge PR #1130 into 14.0
Signed-off-by jbaudoux
2 parents e075996 + 29f3d10 commit d52d69b

File tree

3 files changed

+27
-5
lines changed

3 files changed

+27
-5
lines changed
Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,19 @@
11
# Copyright 2021 Camptocamp SA
2+
# Copyright 2026 Michael Tietz (MT Software) <mtietz@mt-software.de>
23
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl)
4+
from odoo.osv import expression
5+
36
from odoo.addons.component.core import Component
47

58

69
class SearchAction(Component):
710
_inherit = "shopfloor.search.action"
811

9-
def dock_from_scan(self, barcode):
12+
def dock_from_scan(self, barcode, warehouses=None):
1013
model = self.env["stock.dock"]
1114
if not barcode:
1215
return model.browse()
13-
return model.search(
14-
["|", ("barcode", "=", barcode), ("name", "=", barcode)], limit=1
15-
)
16+
domain = ["|", ("barcode", "=", barcode), ("name", "=", barcode)]
17+
if warehouses:
18+
domain = expression.AND([domain, [("warehouse_id", "in", warehouses.ids)]])
19+
return model.search(domain, limit=1)

shopfloor_delivery_shipment/services/delivery_shipment.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ def scan_dock(self, barcode, confirmation=False):
6060
# End point called with the back button
6161
return self._response_for_scan_dock()
6262
search = self._actions_for("search")
63-
dock = search.dock_from_scan(barcode)
63+
dock = search.dock_from_scan(barcode, self.picking_types.warehouse_id)
6464
if dock:
6565
shipment_advice = self._find_shipment_advice_from_dock(dock)
6666
if not shipment_advice:

shopfloor_delivery_shipment/tests/test_delivery_shipment_scan_dock.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,3 +106,21 @@ def test_scan_dock_with_partially_loaded_transfers(self):
106106
self.assert_response_scan_document(
107107
response, self.shipment, lines_to_load=lines_to_load
108108
)
109+
110+
def test_scan_dock_same_barcode_different_warehouses(self):
111+
self.shipment.dock_id = self.dock2.id
112+
self.shipment.action_confirm()
113+
self.shipment.action_in_progress()
114+
wh2 = self.wh.sudo().create({"name": "WH2", "code": "wh2"})
115+
barcode = "test-dock"
116+
self.dock.sudo().write(
117+
{
118+
"barcode": barcode,
119+
"warehouse_id": wh2.id,
120+
}
121+
)
122+
self.dock2.sudo().barcode = barcode
123+
response = self.service.dispatch(
124+
"scan_dock", params={"barcode": self.dock.barcode}
125+
)
126+
self.assert_response_scan_document(response, self.shipment)

0 commit comments

Comments
 (0)