# Conflicts:
#	sf_dlm/data/product_data.xml
This commit is contained in:
jinling.yang
2022-12-12 16:56:04 +08:00
4 changed files with 127 additions and 123 deletions

View File

@@ -1,9 +1,9 @@
<?xml version="1.0" encoding="UTF-8" ?> <?xml version="1.0" encoding="UTF-8" ?>
<odoo> <odoo>
<data noupdate="1"> <data noupdate="1">
<record id="product_template_sf" model="product.product"> <record id="product_template_sf" model="product.product">
<field name="name">CNC加工产品模板</field> <field name="name">CNC加工产品模板</field>
<!-- <field name="categ_id" ref="product.product_category_5"/>--> <!-- <field name="categ_id" ref="product.product_category_5"/>-->
<field name="invoice_policy">delivery</field> <field name="invoice_policy">delivery</field>
<field name="detailed_type">product</field> <field name="detailed_type">product</field>
<field name="purchase_ok">false</field> <field name="purchase_ok">false</field>
@@ -53,7 +53,5 @@
<field name="company_id" ref="base.main_company"/> <field name="company_id" ref="base.main_company"/>
<field name="active">False</field> <field name="active">False</field>
</record> </record>
</data> </data>
</odoo> </odoo>

View File

@@ -29,6 +29,12 @@ class ResProductTemplate(models.Model):
materials_id = fields.Many2one('sf.production.materials', string='材料') materials_id = fields.Many2one('sf.production.materials', string='材料')
materials_type_id = fields.Many2one('sf.materials.model', string='材料型号') materials_type_id = fields.Many2one('sf.materials.model', string='材料型号')
# volume = fields.Float(compute='_compute_volume', store=True) # volume = fields.Float(compute='_compute_volume', store=True)
single_manufacturing = fields.Boolean(string="单个制造")
# @api.depends('long', 'width', 'height')
# def _compute_volume(self):
# self.volume = self.long * self.width * self.height
single_manufacturing = fields.Boolean(string="单个制造") single_manufacturing = fields.Boolean(string="单个制造")
@@ -60,6 +66,11 @@ class ResProductTemplate(models.Model):
'model_long': item['model_long'], 'model_long': item['model_long'],
'model_width': item['model_width'], 'model_width': item['model_width'],
'model_height': item['model_height'], 'model_height': item['model_height'],
'length': item['long'],
'width': item['width'],
'height': item['height'],
'volume': item['long'] * item['width'] * item['height'],
'model_price': item['price'],
'length': item['model_long'], 'length': item['model_long'],
'width': item['model_width'], 'width': item['model_width'],
'height': item['model_height'], 'height': item['model_height'],
@@ -161,6 +172,10 @@ class ResMrpBom(models.Model):
# 二、胚料的材料型号与生成产品的材料型号一致; # 二、胚料的材料型号与生成产品的材料型号一致;
# 三、胚料的长宽高均要大于模型的长宽高; # 三、胚料的长宽高均要大于模型的长宽高;
# 四、如果匹配成功多个胚料,则选取体积最小的胚料; # 四、如果匹配成功多个胚料,则选取体积最小的胚料;
def bom_create_Line(self, product):
logging.info('bom_create_Line:%s' % product)
embryo = self.env['product.product'].search(
[('categ_id.is_embryo', '=', True), ('materials_type_id', '=', product.materials_type_id.id),
# 创建新的胚料,根据胚料材料型号的获取方式( # 创建新的胚料,根据胚料材料型号的获取方式(
# 自加工,外协,采购) 的配置, 选择不同的库存路线,一种材料型号配置一个路线相关的配置: # 自加工,外协,采购) 的配置, 选择不同的库存路线,一种材料型号配置一个路线相关的配置:
# 材料型号配置不同的获取方式: (自加工, 外协, 采购); # 材料型号配置不同的获取方式: (自加工, 外协, 采购);
@@ -185,6 +200,8 @@ class ResMrpBom(models.Model):
limit=1, limit=1,
order='volume desc' order='volume desc'
) )
logging.info('bom_create_Line1:%s' % product)
return self.env['mrp.bom.line'].create(vals)
if embryo: if embryo:
rate_of_waste = ((embryo.volume - product.model_volume) % embryo.volume) * 100 rate_of_waste = ((embryo.volume - product.model_volume) % embryo.volume) * 100
if rate_of_waste <= 20: if rate_of_waste <= 20:

View File

@@ -63,7 +63,8 @@ class ResMrpWorkOrder(models.Model):
Y10_axis = fields.Float(default=0) Y10_axis = fields.Float(default=0)
Z10_axis = fields.Float(default=0) Z10_axis = fields.Float(default=0)
X_deviation_angle = fields.Integer(string="X轴偏差度", default=0) X_deviation_angle = fields.Integer(string="X轴偏差度", default=0)
test_results = fields.Selection([("合格", "合格"), ("返工", "返工"), ("报废", "报废")], string="检测结果") test_results = fields.Selection([("合格", "合格"), ("返工", "返工"), ("报废", "报废")], default='合格',
string="检测结果")
cnc_ids = fields.One2many("sf.cnc.processing", 'workorder_id', string="CNC加工") cnc_ids = fields.One2many("sf.cnc.processing", 'workorder_id', string="CNC加工")
tray_code = fields.Char(string="托盘") tray_code = fields.Char(string="托盘")
@@ -346,7 +347,7 @@ class CNCprocessing(models.Model):
# mrs下发编程单创建CNC加工 # mrs下发编程单创建CNC加工
def cnc_processing_create(self, obj): def cnc_processing_create(self, obj):
workorder = self.env['mrp.workorder'].search([('production_id.name', '=', obj['production_order_no']), workorder = self.env['mrp.workorder'].search([('production_id.name', '=', obj['manufacturing_order_no']),
('processing_panel', '=', obj['processing_panel']), ('processing_panel', '=', obj['processing_panel']),
('routing_type', '=', 'CNC加工')]) ('routing_type', '=', 'CNC加工')])
vals = { vals = {

View File

@@ -71,11 +71,12 @@
<field name="routing_type" invisible="1"/> <field name="routing_type" invisible="1"/>
<field name="processing_panel" readonly="1"/> <field name="processing_panel" readonly="1"/>
<field name="tray_code"/> <field name="tray_code"/>
<div class="col-12 col-lg-6 o_setting_box">
</group>
<div class="col-12 col-lg-6 o_setting_box">
<button type="object" class="oe_highlight" name="gettray" string="绑定托盘" <button type="object" class="oe_highlight" name="gettray" string="绑定托盘"
attrs='{"invisible": [("production_id","=",False)]}'/> attrs='{"invisible": [("production_id","=",False)]}'/>
</div> </div>
</group>
</page> </page>
</xpath> </xpath>
@@ -86,121 +87,107 @@
<field name="processing_panel" readonly="1"/> <field name="processing_panel" readonly="1"/>
</group> </group>
</group> </group>
<group> <div>左面:</div>
<div>左面:</div> <div class="o_address_format">
<label for="X1_axis" string="x"/>
<field name="X1_axis" class="o_form_label"/>
<label for="Y1_axis" string="y"/>
<field name="Y1_axis" class="o_form_label"/>
<label for="Z1_axis" string="z"/>
<field name="Z1_axis" class="o_form_label"/>
<div></div> <div></div>
<div class="o_address_format"> <label for="X2_axis" string="x"/>
<label for="X1_axis" string="x1"/> <field name="X2_axis" class="o_form_label"/>
<field name="X1_axis" class="o_address_zip"/> <label for="Y2_axis" string="y"/>
<span>&amp;nbsp;</span> <field name="Y2_axis" class="o_form_label"/>
<label for="Y1_axis" string="y1"/> <label for="Z2_axis" string="z"/>
<field name="Y1_axis" class="o_address_zip"/> <field name="Z2_axis" class="o_form_label"/>
<span>&amp;nbsp;</span> </div>
<label for="Z1_axis" string="z1"/> <div>前面:</div>
<field name="Z1_axis" class="o_address_zip"/> <div class="o_address_format">
</div> <label for="X3_axis" string="x"/>
<div class="o_address_format"> <field name="X3_axis" class="o_form_label"/>
<label for="X2_axis" string="x2"/> <span>&amp;nbsp;</span>
<field name="X2_axis" class="o_address_zip"/> <label for="Y3_axis" string="y"/>
<span>&amp;nbsp;</span> <field name="Y3_axis" class="o_form_label"/>
<label for="Y2_axis" string="y2"/> <span>&amp;nbsp;</span>
<field name="Y2_axis" class="o_address_zip"/> <label for="Z3_axis" string="z"/>
<span>&amp;nbsp;</span> <field name="Z3_axis" class="o_form_label"/>
<label for="Z2_axis" string="z2"/>
<field name="Z2_axis" class="o_address_zip"/>
</div>
<div>前面:</div>
<div></div> <div></div>
<div class="o_address_format"> <label for="X4_axis" string="x"/>
<label for="X3_axis" string="x1"/> <field name="X4_axis" class="o_form_label"/>
<field name="X3_axis" class="o_address_zip"/> <span>&amp;nbsp;</span>
<span>&amp;nbsp;</span> <label for="Y4_axis" string="y"/>
<label for="Y3_axis" string="y1"/> <field name="Y4_axis" class="o_form_label"/>
<field name="Y3_axis" class="o_address_zip"/> <span>&amp;nbsp;</span>
<span>&amp;nbsp;</span> <label for="Z4_axis" string="z"/>
<label for="Z3_axis" string="z1"/> <field name="Z4_axis" class="o_form_label"/>
<field name="Z3_axis" class="o_address_zip"/> </div>
</div> <div>右面:</div>
<div class="o_address_format"> <div class="o_address_format">
<label for="X4_axis" string="x2"/> <label for="X5_axis" string="x"/>
<field name="X4_axis" class="o_address_zip"/> <field name="X5_axis" class="o_form_label"/>
<span>&amp;nbsp;</span> <span>&amp;nbsp;</span>
<label for="Y4_axis" string="y2"/> <label for="Y5_axis" string="y"/>
<field name="Y4_axis" class="o_address_zip"/> <field name="Y5_axis" class="o_form_label"/>
<span>&amp;nbsp;</span> <span>&amp;nbsp;</span>
<label for="Z4_axis" string="z2"/> <label for="Z5_axis" string="z"/>
<field name="Z4_axis" class="o_address_zip"/> <field name="Z5_axis" class="o_form_label"/>
</div>
<div>右面:</div>
<div></div> <div></div>
<div class="o_address_format"> <label for="X6_axis" string="x"/>
<label for="X5_axis" string="x1"/> <field name="X6_axis" class="o_form_label"/>
<field name="X5_axis" class="o_address_zip"/> <span>&amp;nbsp;</span>
<span>&amp;nbsp;</span> <label for="Y6_axis" string="y"/>
<label for="Y5_axis" string="y1"/> <field name="Y6_axis" class="o_form_label"/>
<field name="Y5_axis" class="o_address_zip"/> <span>&amp;nbsp;</span>
<span>&amp;nbsp;</span> <label for="Z6_axis" string="z"/>
<label for="Z5_axis" string="z1"/> <field name="Z6_axis" class="o_form_label"/>
<field name="Z5_axis" class="o_address_zip"/> </div>
</div> <div>后面:</div>
<div class="o_address_format"> <div class="o_address_format">
<label for="X6_axis" string="x2"/> <label for="X7_axis" string="x"/>
<field name="X6_axis" class="o_address_zip"/> <field name="X7_axis" class="o_form_label"/>
<span>&amp;nbsp;</span> <span>&amp;nbsp;</span>
<label for="Y6_axis" string="y2"/> <label for="Y7_axis" string="y"/>
<field name="Y6_axis" class="o_address_zip"/> <field name="Y7_axis" class="o_form_label"/>
<span>&amp;nbsp;</span> <span>&amp;nbsp;</span>
<label for="Z6_axis" string="z2"/> <label for="Z7_axis" string="z"/>
<field name="Z6_axis" class="o_address_zip"/> <field name="Z7_axis" class="o_form_label"/>
</div>
<div>后面:</div>
<div></div> <div></div>
<div class="o_address_format"> <label for="X8_axis" string="x"/>
<label for="X7_axis" string="x1"/> <field name="X8_axis" class="o_form_label"/>
<field name="X7_axis" class="o_address_zip"/> <span>&amp;nbsp;</span>
<span>&amp;nbsp;</span> <label for="Y8_axis" string="y"/>
<label for="Y7_axis" string="y1"/> <field name="Y8_axis" class="o_form_label"/>
<field name="Y7_axis" class="o_address_zip"/> <span>&amp;nbsp;</span>
<span>&amp;nbsp;</span> <label for="Z8_axis" string="z"/>
<label for="Z7_axis" string="z1"/> <field name="Z8_axis" class="o_form_label"/>
<field name="Z7_axis" class="o_address_zip"/> </div>
</div> <div>上面:</div>
<div class="o_address_format"> <div class="o_address_format">
<label for="X8_axis" string="x2"/> <label for="X9_axis" string="x"/>
<field name="X8_axis" class="o_address_zip"/> <field name="X9_axis" class="o_form_label"/>
<span>&amp;nbsp;</span> <span>&amp;nbsp;</span>
<label for="Y8_axis" string="y2"/> <label for="Y9_axis" string="y"/>
<field name="Y8_axis" class="o_address_zip"/> <field name="Y9_axis" class="o_form_label"/>
<span>&amp;nbsp;</span> <span>&amp;nbsp;</span>
<label for="Z8_axis" string="z2"/> <label for="Z9_axis" string="z"/>
<field name="Z8_axis" class="o_address_zip"/> <field name="Z9_axis" class="o_form_label"/>
</div>
<div>上面:</div>
<div></div> <div></div>
<div class="o_address_format"> <label for="X10_axis" string="x"/>
<label for="X9_axis" string="x1"/> <field name="X10_axis" class="o_form_label"/>
<field name="X9_axis" class="o_address_zip"/> <span>&amp;nbsp;</span>
<span>&amp;nbsp;</span> <label for="Y10_axis" string="y"/>
<label for="Y9_axis" string="y1"/> <field name="Y10_axis" class="o_form_label"/>
<field name="Y9_axis" class="o_address_zip"/> <span>&amp;nbsp;</span>
<span>&amp;nbsp;</span> <label for="Z10_axis" string="z"/>
<label for="Z9_axis" string="z1"/> <field name="Z10_axis" class="o_form_label"/>
<field name="Z9_axis" class="o_address_zip"/> </div>
</div>
<div class="o_address_format"> <div class="col-12 col-lg-6 o_setting_box">
<label for="X10_axis" string="x2"/> <button type="object" class="oe_highlight" name="getcenter" string="计算定位"/>
<field name="X10_axis" class="o_address_zip"/> </div>
<span>&amp;nbsp;</span>
<label for="Y10_axis" string="y2"/>
<field name="Y10_axis" class="o_address_zip"/>
<span>&amp;nbsp;</span>
<label for="Z10_axis" string="z2"/>
<field name="Z10_axis" class="o_address_zip"/>
</div>
<div class="col-12 col-lg-6 o_setting_box">
<button type="object" class="oe_highlight" name="getcenter" string="计算定位"/>
</div>
</group>
<group> <group>
<field name="material_center_point"/> <field name="material_center_point"/>
<field name='X_deviation_angle'/> <field name='X_deviation_angle'/>
@@ -235,17 +222,18 @@
<xpath expr="//page[last()]" position="after"> <xpath expr="//page[last()]" position="after">
<page string="后置三元检测" attrs='{"invisible": [("routing_type","!=","后置三元质量检测")]}'> <page string="后置三元检测" attrs='{"invisible": [("routing_type","!=","后置三元质量检测")]}'>
<group> <group>
<field name="test_results" widget="selection"/> <field name="test_results" widget="selection" />
<div class="col-12 col-lg-6 o_setting_box">
</group>
<div class="col-12 col-lg-6 o_setting_box">
<button type="object" class="oe_highlight" name="recreateManufacturingOrWorkerOrder" <button type="object" class="oe_highlight" name="recreateManufacturingOrWorkerOrder"
string="检测确认"/> string="检测确认"/>
</div> </div>
</group>
</page> </page>
</xpath> </xpath>
<xpath expr="//page[last()]" position="after"> <xpath expr="//page[last()]" position="after">
<page string="解除装夹" attrs='{"invisible": [("routing_type","!=","解除装夹")]}'> <page string="解除装夹" attrs='{"invisible": [("routing_type","!=","解除装夹")]}'>
<group>
<div class="col-12 col-lg-6 o_setting_box"> <div class="col-12 col-lg-6 o_setting_box">
<button type="object" class="oe_highlight" name="unbindtray" string="解除装夹"/> <button type="object" class="oe_highlight" name="unbindtray" string="解除装夹"/>
</div> </div>
@@ -253,7 +241,7 @@
<button type="action" class="oe_highlight" name="sf_manufacturing.label_sf_tray_code1" <button type="action" class="oe_highlight" name="sf_manufacturing.label_sf_tray_code1"
string="打印标签"/> string="打印标签"/>
</div> </div>
</group>
</page> </page>
</xpath> </xpath>
</field> </field>