diff --git a/stock_measuring_device/models/measuring_device.py b/stock_measuring_device/models/measuring_device.py index 93cb0b9d1..f23875954 100644 --- a/stock_measuring_device/models/measuring_device.py +++ b/stock_measuring_device/models/measuring_device.py @@ -40,7 +40,7 @@ class MeasuringDevice(models.Model): return work_ctx.component(usage=self.device_type) def open_wizard(self): - return { + res = { "name": _("Measurement Wizard"), "res_model": "measuring.wizard", "type": "ir.actions.act_window", @@ -54,6 +54,12 @@ class MeasuringDevice(models.Model): "no_breadcrumbs": True, }, } + if self._is_being_used(): + pack = self.env["product.packaging"].search( + [("measuring_device_id", "=", self.id)], limit=1 + ) + res["context"]["default_product_id"] = pack.product_id.id + return res def _is_being_used(self): self.ensure_one() diff --git a/stock_measuring_device/models/product_packaging.py b/stock_measuring_device/models/product_packaging.py index 2f7aa612c..753a029e2 100644 --- a/stock_measuring_device/models/product_packaging.py +++ b/stock_measuring_device/models/product_packaging.py @@ -16,6 +16,7 @@ class ProductPackaging(models.Model): string="Measuring device which will scan the package", help="Technical field set when an operator uses the device " "to scan this package", + index=True, ) def _measuring_device_assign(self, device): diff --git a/stock_measuring_device/wizard/measuring_wizard.py b/stock_measuring_device/wizard/measuring_wizard.py index 2ee9bd709..f4cf664ed 100644 --- a/stock_measuring_device/wizard/measuring_wizard.py +++ b/stock_measuring_device/wizard/measuring_wizard.py @@ -89,6 +89,7 @@ class MeasuringWizard(models.TransientModel): "barcode": pack.barcode, "packaging_id": pack.id, "packaging_type_id": pack_type.id, + "scan_requested": bool(pack.measuring_device_id), } ) vals_list.append(vals) @@ -160,6 +161,15 @@ class MeasuringWizard(models.TransientModel): "flags": {"headless": False, "clear_breadcrumbs": True}, } + def retrieve_product(self): + """Assigns product that locks the device if a scan is already requested.""" + if self.device_id._is_being_used(): + pack = self.env["product.packaging"]._measuring_device_find_assigned( + self.device_id + ) + self.product_id = pack.product_id + self.onchange_product_id() + def reload(self): return { "type": "ir.actions.act_view_reload", diff --git a/stock_measuring_device/wizard/measuring_wizard.xml b/stock_measuring_device/wizard/measuring_wizard.xml index 41b29509c..a3b248c28 100644 --- a/stock_measuring_device/wizard/measuring_wizard.xml +++ b/stock_measuring_device/wizard/measuring_wizard.xml @@ -37,6 +37,12 @@ string="Refresh" icon="fa-refresh" /> +