添加禁止负库存功能
This commit is contained in:
@@ -471,7 +471,7 @@ class ShelfLocation(models.Model):
|
||||
record.display_rfid = record.product_sn_id.rfid if record.product_sn_id else ''
|
||||
except Exception as e:
|
||||
record.display_rfid = ''
|
||||
|
||||
|
||||
@api.depends('product_id')
|
||||
def _compute_tool(self):
|
||||
"""计算工具 RFID"""
|
||||
@@ -594,7 +594,7 @@ class ShelfLocation(models.Model):
|
||||
_layer_capacity = _cc_code % record.shelf_id.layer_capacity
|
||||
if _layer_capacity == 0:
|
||||
_layer_capacity = record.shelf_id.layer_capacity
|
||||
else:
|
||||
else:
|
||||
_layer_capacity = _layer_capacity
|
||||
_layer = _layer+1
|
||||
_layer_capacity = f"{_layer_capacity:02d}"
|
||||
@@ -634,7 +634,7 @@ class SfShelfLocationLot(models.Model):
|
||||
for item in self:
|
||||
if item.qty_num > item.qty:
|
||||
raise ValidationError('变更数量不能比库存数量大!!!')
|
||||
|
||||
|
||||
|
||||
|
||||
class SfStockMoveLine(models.Model):
|
||||
@@ -899,7 +899,7 @@ class SfStockMoveLine(models.Model):
|
||||
def _compute_current_location_id(self):
|
||||
# 批量获取所有相关记录的picking
|
||||
pickings = self.mapped('picking_id')
|
||||
|
||||
|
||||
# 构建源picking的移库行与目标位置的映射
|
||||
origin_location_map = {}
|
||||
for picking in pickings:
|
||||
@@ -907,11 +907,11 @@ class SfStockMoveLine(models.Model):
|
||||
origin_move = picking.move_ids[:1].move_orig_ids[:1]
|
||||
if not origin_move:
|
||||
continue
|
||||
|
||||
|
||||
origin_picking = origin_move.picking_id
|
||||
if not origin_picking:
|
||||
continue
|
||||
|
||||
|
||||
# 为每个picking构建lot_id到location的映射
|
||||
origin_location_map[picking.id] = {
|
||||
move_line.lot_id.id: move_line.destination_location_id
|
||||
@@ -919,17 +919,17 @@ class SfStockMoveLine(models.Model):
|
||||
lambda ml: ml.destination_location_id and ml.lot_id
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
# 批量更新current_location_id
|
||||
for record in self:
|
||||
current_picking = record.picking_id
|
||||
if not current_picking:
|
||||
record.current_location_id = False
|
||||
continue
|
||||
|
||||
|
||||
# 获取当前picking对应的lot_location映射
|
||||
lot_dest_map = origin_location_map.get(current_picking.id, {})
|
||||
|
||||
|
||||
# 查找匹配的lot_id
|
||||
for move_line in current_picking.move_line_ids:
|
||||
if move_line.lot_id and move_line.lot_id.id in lot_dest_map:
|
||||
@@ -1082,6 +1082,10 @@ class SfStockPicking(models.Model):
|
||||
重写验证方法,当验证时意味着调拨单已经完成,已经移动到了目标货位,所以需要将当前货位的状态改为空闲
|
||||
"""
|
||||
res = super(SfStockPicking, self).button_validate()
|
||||
if any(ml.state == 'done' for ml in self.move_line_ids):
|
||||
# 验证产品库存为负库存问题
|
||||
self.move_ids.product_id.verify_product_repertory(self.location_id)
|
||||
|
||||
for line in self.move_line_ids:
|
||||
if line:
|
||||
if line.destination_location_id:
|
||||
|
||||
Reference in New Issue
Block a user