功能刀具组装点【更多】按钮弹窗的物料添加【BOM物料】默认筛选,根据BOM筛选出符合条件的物料信息;取消默认筛选后记录按满足BOM的和不满足BOM的顺序排序出现。
This commit is contained in:
@@ -833,8 +833,8 @@ class FunctionalToolAssembly(models.Model):
|
|||||||
location_lots = self.env['sf.shelf.location.lot'].sudo().search([('lot_id', '=', lot_id.id)])
|
location_lots = self.env['sf.shelf.location.lot'].sudo().search([('lot_id', '=', lot_id.id)])
|
||||||
if location_lots:
|
if location_lots:
|
||||||
return location_lots[0]
|
return location_lots[0]
|
||||||
raise ValidationError(f'【{lot_ids[0].product_id.cutting_tool_material_id.name}】物料在货位库存不足,请先进行盘点入库')
|
raise ValidationError(
|
||||||
|
f'【{lot_ids[0].product_id.cutting_tool_material_id.name}】物料在货位库存不足,请先进行盘点入库')
|
||||||
|
|
||||||
def _get_inventory_bom(self, inventory_id):
|
def _get_inventory_bom(self, inventory_id):
|
||||||
"""获取BOM的刀具物料产品信息"""
|
"""获取BOM的刀具物料产品信息"""
|
||||||
@@ -894,25 +894,25 @@ class FunctionalToolAssembly(models.Model):
|
|||||||
tool_material_ids = self._get_all_material_location_lot(tool_data.get('pad_ids'))
|
tool_material_ids = self._get_all_material_location_lot(tool_data.get('pad_ids'))
|
||||||
tool_material_tree_id = self.env.ref('sf_tool_management.view_shelf_location_lot_tree_4')
|
tool_material_tree_id = self.env.ref('sf_tool_management.view_shelf_location_lot_tree_4')
|
||||||
|
|
||||||
|
action = {
|
||||||
|
"type": "ir.actions.act_window",
|
||||||
|
"target": "new",
|
||||||
|
"domain": [('cutting_tool_type', '=', tool_type)],
|
||||||
|
"context": {'tool_id': self.id, 'search_default_bom_ids': 1, 'tool_material_ids': tool_material_ids.ids}
|
||||||
|
}
|
||||||
if tool_type == '刀柄':
|
if tool_type == '刀柄':
|
||||||
return {
|
action.update({
|
||||||
"type": "ir.actions.act_window",
|
|
||||||
"res_model": "product.product",
|
"res_model": "product.product",
|
||||||
"views": [[tool_material_tree_id.id, "tree"],
|
"views": [[tool_material_tree_id.id, "tree"],
|
||||||
[self.env.ref('sf_tool_management.view_tool_product_search').id, "search"]],
|
[self.env.ref('sf_tool_management.view_tool_product_search').id, "search"]]
|
||||||
"target": "new",
|
})
|
||||||
"domain": [('id', 'in', tool_material_ids.ids)],
|
|
||||||
"context": {'tool_id': self.id}
|
|
||||||
}
|
|
||||||
elif tool_type in ['整体式刀具', '刀片', '刀杆', '刀盘']:
|
elif tool_type in ['整体式刀具', '刀片', '刀杆', '刀盘']:
|
||||||
return {
|
action.update({
|
||||||
"type": "ir.actions.act_window",
|
|
||||||
"res_model": "sf.shelf.location.lot",
|
"res_model": "sf.shelf.location.lot",
|
||||||
"views": [[tool_material_tree_id.id, "tree"]],
|
"views": [[tool_material_tree_id.id, "tree"],
|
||||||
"target": "new",
|
[self.env.ref('sf_tool_management.view_shelf_location_lot_search').id, 'search']]
|
||||||
"domain": [('id', 'in', tool_material_ids.ids)],
|
})
|
||||||
"context": {'tool_id': self.id}
|
return action
|
||||||
}
|
|
||||||
|
|
||||||
def _get_all_material_location_lot(self, material_ids):
|
def _get_all_material_location_lot(self, material_ids):
|
||||||
""" 获取所有满足条件 """
|
""" 获取所有满足条件 """
|
||||||
|
|||||||
@@ -256,6 +256,22 @@ class ProductProduct(models.Model):
|
|||||||
})
|
})
|
||||||
return stock_lot
|
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):
|
def get_stock_lot_name(self, obj):
|
||||||
"""
|
"""
|
||||||
生成功能刀具序列号
|
生成功能刀具序列号
|
||||||
@@ -317,6 +333,22 @@ class SfShelfLocationLot(models.Model):
|
|||||||
fit_blade_shape_id = fields.Many2one('maintenance.equipment.image', '适配刀片形状',
|
fit_blade_shape_id = fields.Many2one('maintenance.equipment.image', '适配刀片形状',
|
||||||
related='product_id.fit_blade_shape_id')
|
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')
|
@api.depends('lot_id')
|
||||||
def _compute_product_id(self):
|
def _compute_product_id(self):
|
||||||
for item in self:
|
for item in self:
|
||||||
|
|||||||
@@ -187,6 +187,7 @@
|
|||||||
<field name="current_location" string="当前位置"/>
|
<field name="current_location" string="当前位置"/>
|
||||||
<field name="current_shelf_location_id" string="当前货位"
|
<field name="current_shelf_location_id" string="当前货位"
|
||||||
attrs="{'invisible': [('current_shelf_location_id', '=', False)]}"/>
|
attrs="{'invisible': [('current_shelf_location_id', '=', False)]}"/>
|
||||||
|
<field name="create_date" string="装刀时间"/>
|
||||||
</group>
|
</group>
|
||||||
</group>
|
</group>
|
||||||
</page>
|
</page>
|
||||||
|
|||||||
@@ -33,10 +33,15 @@
|
|||||||
</record>
|
</record>
|
||||||
|
|
||||||
<record id="view_tool_product_search" model="ir.ui.view">
|
<record id="view_tool_product_search" model="ir.ui.view">
|
||||||
|
<field name="name">刀柄产品搜索视图</field>
|
||||||
<field name="model">product.product</field>
|
<field name="model">product.product</field>
|
||||||
|
<field name="priority" eval="10"/>
|
||||||
<field name="arch" type="xml">
|
<field name="arch" type="xml">
|
||||||
<search>
|
<search>
|
||||||
<field name="name"/>
|
<field name="name"/>
|
||||||
|
<field name="specification_id"/>
|
||||||
|
<field name="brand_id"/>
|
||||||
|
<filter string="bom物料" name="bom_ids" domain="[]" context="{'default_tool_bom_id': 1}"/>
|
||||||
</search>
|
</search>
|
||||||
</field>
|
</field>
|
||||||
</record>
|
</record>
|
||||||
@@ -141,4 +146,17 @@
|
|||||||
</tree>
|
</tree>
|
||||||
</field>
|
</field>
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
|
<record id="view_shelf_location_lot_search" model="ir.ui.view">
|
||||||
|
<field name="name">sf.shelf.location.lot.search</field>
|
||||||
|
<field name="model">sf.shelf.location.lot</field>
|
||||||
|
<field name="arch" type="xml">
|
||||||
|
<search>
|
||||||
|
<field name="product_id"/>
|
||||||
|
<field name="specification_id"/>
|
||||||
|
<field name="brand_id"/>
|
||||||
|
<filter string="bom物料" name="bom_ids" domain="[]" context="{'default_tool_bom_id': 1}"/>
|
||||||
|
</search>
|
||||||
|
</field>
|
||||||
|
</record>
|
||||||
</odoo>
|
</odoo>
|
||||||
Reference in New Issue
Block a user