功能刀具组装点【更多】按钮弹窗的物料添加【BOM物料】默认筛选,根据BOM筛选出符合条件的物料信息;取消默认筛选后记录按满足BOM的和不满足BOM的顺序排序出现。

This commit is contained in:
yuxianghui
2025-06-13 10:19:11 +08:00
parent 012ff120b4
commit 6517d2bd12
4 changed files with 67 additions and 16 deletions

View File

@@ -256,6 +256,22 @@ class ProductProduct(models.Model):
})
return stock_lot
def search(self, domain, offset=0, limit=None, order=None, count=False):
context = self.env.context
tool_material_ids = context.get('tool_material_ids')
if tool_material_ids:
if context.get('default_tool_bom_id'):
domain += [('id', 'in', tool_material_ids)]
return super(ProductProduct, self).search(domain, offset=0, limit=None, order=None, count=False)
else:
domain_1 = domain + [('id', 'in', tool_material_ids)]
domain_2 = domain + [('id', 'not in', tool_material_ids)]
res_1 = super(ProductProduct, self).search(domain_1, offset=0, limit=None, order=None, count=False)
res_2 = super(ProductProduct, self).search(domain_2, offset=0, limit=None, order=None, count=False)
return res_1 + res_2
else:
return super(ProductProduct, self).search(domain, offset=0, limit=None, order=None, count=False)
def get_stock_lot_name(self, obj):
"""
生成功能刀具序列号
@@ -317,6 +333,22 @@ class SfShelfLocationLot(models.Model):
fit_blade_shape_id = fields.Many2one('maintenance.equipment.image', '适配刀片形状',
related='product_id.fit_blade_shape_id')
def search(self, domain, offset=0, limit=None, order=None, count=False):
context = self.env.context
tool_material_ids = context.get('tool_material_ids')
if tool_material_ids:
if context.get('default_tool_bom_id'):
domain += [('id', 'in', tool_material_ids)]
return super(SfShelfLocationLot, self).search(domain, offset=0, limit=None, order=None, count=False)
else:
domain_1 = domain + [('id', 'in', tool_material_ids)]
domain_2 = domain + [('id', 'not in', tool_material_ids)]
res_1 = super(SfShelfLocationLot, self).search(domain_1, offset=0, limit=None, order=None, count=False)
res_2 = super(SfShelfLocationLot, self).search(domain_2, offset=0, limit=None, order=None, count=False)
return res_1 + res_2
else:
return super(SfShelfLocationLot, self).search(domain, offset=0, limit=None, order=None, count=False)
@api.depends('lot_id')
def _compute_product_id(self):
for item in self: