生成产品的BOM上的加工工序

This commit is contained in:
jinling.yang
2022-10-26 17:27:32 +08:00
parent c3a7a6c4d6
commit 71a925334e
19 changed files with 208 additions and 187 deletions

View File

@@ -1,101 +0,0 @@
from odoo import models, fields
from odoo.exceptions import ValidationError
class ResProductTemplate(models.Model):
_inherit = 'product.template'
# 模型的长,宽,高,体积,精度,材料
model_long = fields.Float('长[mm]', digits=(16, 3))
model_width = fields.Float('宽[mm]', digits=(16, 3))
model_height = fields.Float('高[mm]', digits=(16, 3))
model_volume = fields.Float('体积[mm³]', digits=(16, 3))
model_precision = fields.Float('精度要求', digits=(16, 3))
model_materials_id = fields.Many2one('mrs.production.materials', string='材料')
model_materials_type_id = fields.Many2one('mrs.materials.model', string='型号')
model_type_id = fields.Many2one('sf.model.type', string='类型')
processing_panel = fields.Char('加工面板')
# 胚料的长,宽,高
embryo_long = fields.Float('长[mm]', digits=(16, 3))
embryo_width = fields.Float('宽[mm]', digits=(16, 3))
embryo_height = fields.Float('高[mm]', digits=(16, 3))
embryo_materials_id = fields.Many2one('mrs.production.materials', string='材料')
embryo_materials_type_id = fields.Many2one('mrs.materials.model', string='型号')
# 业务平台分配工厂后在智能工厂先创建销售订单再创建该产品
def product_create(self, product_id, item, order_id, order_number, i):
copy_product_id = product_id.with_user(self.env.ref("base.user_admin")).copy()
copy_product_id.product_tmpl_id.active = True
vals = {
'name': '%s-%s' % (order_id.name, i),
'model_long': item['model_long'],
'model_width': item['model_width'],
'model_height': item['model_height'],
'model_volume': item['model_volume'],
'list_price': item['price'],
'model_materials_id': self.env['mrs.production.materials'].search(
[('materials_no', '=', item['texture_code'])]).id,
'model_materials_type_id': self.env['mrs.materials.model'].search(
[('materials_no', '=', item['texture_type_code'])]).id,
'default_code': '%s-%s' % (order_number, i),
'barcode': item['barcode'],
'active': True
}
copy_product_id.sudo().write(vals)
return copy_product_id
class ResProductCategory(models.Model):
_inherit = "product.category"
is_embryo = fields.Boolean('胚料')
class ResMrpBom(models.Model):
_inherit = 'mrp.bom'
# 业务平台分配工厂后在智能工厂先创建销售订单再创建该产品后再次进行创建bom
def bom_create(self, product):
bom_id = self.env['mrp.bom'].create({
'product_tmpl_id': product.product_tmpl_id.id,
'type': 'normal',
'product_qty': 1,
'product_uom_id': 1
})
return bom_id
# 生成产品BOM匹配胚料胚料的匹配规则
# 一、匹配的胚料类别需要带有胚料的标签;
# 二、胚料的材料型号与生成产品的材料型号一致;
# 三、胚料的长宽高均要大于模型的长宽高;
# 四、如果匹配成功多个胚料,则选取体积最小的胚料;
def bom_create_Line(self, product):
embryo = self.env['product.product'].search(
[('categ_id.is_embryo', '=', True), ('embryo_materials_type_id', '=', product.model_materials_type_id.id),
('embryo_long', '>', product.model_long), ('embryo_width', '>', product.model_width),
('embryo_height', '>', product.model_height)
],
limit=1,
order='volume desc'
)
vals = {
'bom_id': self.id,
'product_id': embryo.id,
'product_tmpl_id': embryo.product_tmpl_id.id,
'product_qty': 1,
'product_uom_id': 1
}
return self.env['mrp.bom.line'].create(vals)
class ModelType(models.Model):
_name = 'sf.model.type'
_description = '模型类型'
name = fields.Char('名称')
code = fields.Char('编码')