Files
stock-logistics-warehouse/stock_measuring_device/models/product_packaging.py

51 lines
1.7 KiB
Python

# Copyright 2021 Camptocamp SA
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html)
import logging
from odoo import _, fields, models
_logger = logging.getLogger(__name__)
class ProductPackaging(models.Model):
_inherit = "product.packaging"
measuring_device_id = fields.Many2one(
"measuring.device",
copy=False,
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):
"""Assign the measuring device to the current product packaging"""
# self can be an empty recordset, for the unit line which updates the
# product info
if self:
self.measuring_device_id = device
def _measuring_device_release(self):
"""Free the measuring device from the current product packaging"""
# self can be an empty recordset, for the unit line which updates the
# product info
if self:
self.measuring_device_id = False
def _measuring_device_find_assigned(self, device):
"""search packaging being assigned to the specified device"""
packaging = self.search(
[("measuring_device_id", "=", device.id)], order="write_date DESC", limit=2
)
if len(packaging) > 1:
warning_msg = _(
"Several packagings ({}) found to update by "
"device {}. Will update the first: {}".format(
packaging, self.name, packaging[0]
)
)
_logger.warning(warning_msg)
packaging = packaging[0]
return packaging