产品新增单件用量 unit_number 字段,值由bfm下单同步获得;产品生成的BOM中组件数量的值由unit_number 字段提供。
This commit is contained in:
@@ -47,11 +47,14 @@ class ResMrpBomMo(models.Model):
|
|||||||
item.subcontractor_name = ''
|
item.subcontractor_name = ''
|
||||||
|
|
||||||
def bom_create_line_has(self, embryo):
|
def bom_create_line_has(self, embryo):
|
||||||
|
product = self.product_tmpl_id
|
||||||
|
if product.unit_number in (0, None, False):
|
||||||
|
raise ValueError(f'单件用量的值不能为{product.unit_number}')
|
||||||
vals = {
|
vals = {
|
||||||
'bom_id': self.id,
|
'bom_id': self.id,
|
||||||
'product_id': embryo.id,
|
'product_id': embryo.id,
|
||||||
'product_tmpl_id': embryo.product_tmpl_id.id,
|
'product_tmpl_id': embryo.product_tmpl_id.id,
|
||||||
'product_qty': 1,
|
'product_qty': product.unit_number,
|
||||||
'product_uom_id': 1
|
'product_uom_id': 1
|
||||||
}
|
}
|
||||||
return self.env['mrp.bom.line'].sudo().create(vals)
|
return self.env['mrp.bom.line'].sudo().create(vals)
|
||||||
@@ -122,7 +125,7 @@ class ResMrpBomMo(models.Model):
|
|||||||
# 查bom的原材料
|
# 查bom的原材料
|
||||||
def get_raw_bom(self, product):
|
def get_raw_bom(self, product):
|
||||||
raw_bom = self.env['product.product'].search(
|
raw_bom = self.env['product.product'].search(
|
||||||
[('categ_id.type', '=', '原材料'), ('materials_type_id', '=', product.materials_type_id.id)],limit=1)
|
[('categ_id.type', '=', '原材料'), ('materials_type_id', '=', product.materials_type_id.id)], limit=1)
|
||||||
return raw_bom
|
return raw_bom
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -95,6 +95,7 @@
|
|||||||
<page string="加工参数">
|
<page string="加工参数">
|
||||||
<group>
|
<group>
|
||||||
<group string="模型">
|
<group string="模型">
|
||||||
|
<field name="blank_type" readonly="1"/>
|
||||||
<label for="model_long" string="坯料尺寸[mm]"/>
|
<label for="model_long" string="坯料尺寸[mm]"/>
|
||||||
<div class="o_address_format">
|
<div class="o_address_format">
|
||||||
<label for="model_long" string="长"/>
|
<label for="model_long" string="长"/>
|
||||||
@@ -104,7 +105,7 @@
|
|||||||
<label for="model_height" string="高"/>
|
<label for="model_height" string="高"/>
|
||||||
<field name="model_height" class="o_address_zip"/>
|
<field name="model_height" class="o_address_zip"/>
|
||||||
</div>
|
</div>
|
||||||
<field name="blank_type" readonly="1"/>
|
<field name="unit_number" readonly="1"/>
|
||||||
<field name="model_volume" string="体积[mm³]"/>
|
<field name="model_volume" string="体积[mm³]"/>
|
||||||
<field name="product_model_type_id" string="模型类型"/>
|
<field name="product_model_type_id" string="模型类型"/>
|
||||||
<field name="model_processing_panel" placeholder="例如R,U" string="加工面板"
|
<field name="model_processing_panel" placeholder="例如R,U" string="加工面板"
|
||||||
|
|||||||
@@ -30,6 +30,7 @@ class ResProductMo(models.Model):
|
|||||||
model_long = fields.Float('模型长(mm)', digits=(16, 3))
|
model_long = fields.Float('模型长(mm)', digits=(16, 3))
|
||||||
model_width = fields.Float('模型宽(mm)', digits=(16, 3))
|
model_width = fields.Float('模型宽(mm)', digits=(16, 3))
|
||||||
model_height = fields.Float('模型高(mm)', digits=(16, 3))
|
model_height = fields.Float('模型高(mm)', digits=(16, 3))
|
||||||
|
unit_number = fields.Float('单件用量', digits=(16, 3), default=1)
|
||||||
model_volume = fields.Float('模型体积(m³)')
|
model_volume = fields.Float('模型体积(m³)')
|
||||||
model_area = fields.Float('模型表面积(m²)')
|
model_area = fields.Float('模型表面积(m²)')
|
||||||
model_machining_precision = fields.Selection(selection=_get_machining_precision, string='加工精度')
|
model_machining_precision = fields.Selection(selection=_get_machining_precision, string='加工精度')
|
||||||
@@ -904,6 +905,7 @@ class ResProductMo(models.Model):
|
|||||||
'model_long': item.get('blank_length') if blank_bool else self.format_float(item['model_long'] + embryo_redundancy_id.long),
|
'model_long': item.get('blank_length') if blank_bool else self.format_float(item['model_long'] + embryo_redundancy_id.long),
|
||||||
'model_width': item.get('blank_width') if blank_bool else self.format_float(item['model_width'] + embryo_redundancy_id.width),
|
'model_width': item.get('blank_width') if blank_bool else self.format_float(item['model_width'] + embryo_redundancy_id.width),
|
||||||
'model_height': item.get('blank_height') if blank_bool else self.format_float(item['model_height'] + embryo_redundancy_id.height),
|
'model_height': item.get('blank_height') if blank_bool else self.format_float(item['model_height'] + embryo_redundancy_id.height),
|
||||||
|
'unit_number': item.get('unit_number'),
|
||||||
'model_volume': self.format_float(((item['model_long'] + embryo_redundancy_id.long) *
|
'model_volume': self.format_float(((item['model_long'] + embryo_redundancy_id.long) *
|
||||||
(item['model_width'] + embryo_redundancy_id.width) *
|
(item['model_width'] + embryo_redundancy_id.width) *
|
||||||
(item['model_height'] + embryo_redundancy_id.height))) if not blank_bool else (
|
(item['model_height'] + embryo_redundancy_id.height))) if not blank_bool else (
|
||||||
|
|||||||
Reference in New Issue
Block a user