生成产品的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

@@ -14,9 +14,14 @@
'data': [
'security/group_security.xml',
'security/ir.model.access.csv',
'data/product_data.xml',
'data/process_data.xml',
'views/product_template_view.xml',
'views/sale_order_view.xml',
'views/mrs_base_view.xml',
'views/mrs_common_view.xml',
"views/menu_view.xml"
'views/menu_view.xml',
'views/mrp_routing_workcenter_view.xml',
],
'demo': [

View File

@@ -1,79 +1,52 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<data>
<record id="mrp_workcenter_3" model="mrp.workcenter">
<field name="name">Assembly Line 1</field>
<field name="active">false</field>
</record>
<record id="mrp_bom_manufacture" model="mrp.bom">
<field name="product_tmpl_id" ref="product.product_product_3_product_template"/>
<field name="product_uom_id" ref="uom.product_uom_unit"/>
<field name="sequence">1</field>
<field name="active">false</field>
</record>
<data noupdate="0">
<record id="mrp_routing_workcenter_template_automatic_coding_sf" model="mrp.routing.workcenter">
<field name="name">获取自动编码程序</field>
<field name="code">automatic coding</field>
<field name="time_mode">manual</field>
<field name="workcenter_id" ref="mrp_workcenter_3"/>
<field name="bom_id" ref="mrp_bom_manufacture"/>
<field name="time_cycle">60</field>
<field name="active">false</field>
<field name="active">True</field>
</record>
<record id="mrp_routing_workcenter_template_clamping_sf" model="mrp.routing.workcenter">
<field name="name">装夹</field>
<field name="code">clamping</field>
<field name="time_mode">manual</field>
<field name="workcenter_id" ref="mrp_workcenter_3"/>
<field name="bom_id" ref="mrp_bom_manufacture"/>
<field name="time_cycle">60</field>
<field name="active">false</field>
<field name="active">True</field>
</record>
<record id="mrp_routing_workcenter_template_pre_ternary_sf" model="mrp.routing.workcenter">
<field name="name">前置三元定位检测</field>
<field name="code">pre-ternary positioning detection</field>
<field name="code">pre-ternary</field>
<field name="time_mode">manual</field>
<field name="workcenter_id" ref="mrp_workcenter_3"/>
<field name="bom_id" ref="mrp_bom_manufacture"/>
<field name="time_cycle">60</field>
<field name="active">false</field>
<field name="active">True</field>
</record>
<record id="mrp_routing_workcenter_template_cnc_sf" model="mrp.routing.workcenter">
<field name="name">CNC加工</field>
<field name="code">CNC machining</field>
<field name="time_mode">manual</field>
<field name="workcenter_id" ref="mrp_workcenter_3"/>
<field name="bom_id" ref="mrp_bom_manufacture"/>
<field name="time_cycle">60</field>
<field name="active">false</field>
<field name="active">True</field>
</record>
<record id="mrp_routing_workcenter_template_post_ternary_sf" model="mrp.routing.workcenter">
<field name="name">后置三元质量检测</field>
<field name="code">post ternary quality inspection</field>
<field name="code">post ternary</field>
<field name="time_mode">manual</field>
<field name="workcenter_id" ref="mrp_workcenter_3"/>
<field name="bom_id" ref="mrp_bom_manufacture"/>
<field name="time_cycle">60</field>
<field name="active">false</field>
<field name="active">True</field>
</record>
<record id="mrp_routing_workcenter_template_remove_clamping_sf" model="mrp.routing.workcenter">
<field name="name">解除装夹</field>
<field name="code">remove the clamping</field>
<field name="time_mode">manual</field>
<field name="workcenter_id" ref="mrp_workcenter_3"/>
<field name="bom_id" ref="mrp_bom_manufacture"/>
<field name="time_cycle">60</field>
<field name="active">false</field>
<field name="active">True</field>
</record>
</data>
</odoo>

View File

@@ -1,2 +1,5 @@
from. import sf_base
from. import sf_common
from . import sale_order
from . import product_template
from . import process

20
sf_base/models/process.py Normal file
View File

@@ -0,0 +1,20 @@
from odoo import fields, models, api
class ModelType(models.Model):
_name = 'sf.model.type'
_description = '模型类型'
name = fields.Char('名称')
routing_tmpl_id = fields.One2many('mrp.routing.workcenter', 'model_type_id', '工序模板')
class ResMrpRoutingWorkcenter(models.Model):
_inherit = 'mrp.routing.workcenter'
code = fields.Char('唯一编码')
is_repeat = fields.Boolean('重复', default=False)
workcenter_id = fields.Many2many('mrp.workcenter', required=False)
bom_id = fields.Many2one('mrp.bom', required=False)
sort = fields.Integer('排序')
model_type_id = fields.Many2one('sf.model.type')

View File

@@ -6,21 +6,21 @@ 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_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('加工面板')
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='型号')
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='胚料材料型号')
# 业务平台分配工厂后在智能工厂先创建销售订单再创建该产品
@@ -89,12 +89,7 @@ class ResMrpBom(models.Model):
return self.env['mrp.bom.line'].create(vals)
class ModelType(models.Model):
_name = 'sf.model.type'
_description = '模型类型'
name = fields.Char('名称')
code = fields.Char('编码')

View File

@@ -13,7 +13,7 @@ access_mrs_production_materials,mrs_production_materials,model_mrs_production_ma
access_mrs_materials_model,mrs_materials_model,model_mrs_materials_model,base.group_user,1,1,1,1
access_mrs_processing_technology,mrs_processing_technology,model_mrs_processing_technology,base.group_user,1,1,1,1
access_sf_tray,sf_tray,model_sf_tray,base.group_user,1,1,1,1
access_sf_model_type,sf_model_type,model_sf_model_type,base.group_user,1,1,1,1
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
13 access_mrs_processing_technology mrs_processing_technology model_mrs_processing_technology base.group_user 1 1 1 1
14 access_sf_tray sf_tray model_sf_tray base.group_user 1 1 1 1
15 access_sf_model_type sf_model_type model_sf_model_type base.group_user 1 1 1 1
16
17
18
19

View File

@@ -142,13 +142,13 @@
action="action_mrs_machine_control_system"/>
<!-- <menuitem-->
<!-- id="menu_sf_partner_views"-->
<!-- name="工厂token"-->
<!-- parent="menu_mrs_base"-->
<!-- sequence="1"-->
<!-- action="token_factory_view"-->
<!-- />-->
<menuitem
id="menu_sf_model_type"
name="模型类型"
parent="mrp.menu_mrp_configuration"
sequence="10"
action="action_sf_model_type"
/>

View File

@@ -0,0 +1,15 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<data>
<record model="ir.ui.view" id="view_mrp_routing_workcenter_form_inherit_sf">
<field name="name">mrp.routing.workcenter.form.inherit.sf</field>
<field name="model">mrp.routing.workcenter</field>
<field name="inherit_id" ref="mrp.mrp_routing_workcenter_form_view"/>
<field name="arch" type="xml">
<field name="workcenter_id" position="replace">
<field name="workcenter_id" widget="many2many_tags"/>
</field>
</field>
</record>
</data>
</odoo>

View File

@@ -368,7 +368,8 @@
</group>
<group>
<field name="name" required="1"/>
<field name="type_id" required="1" options="{'no_create': True}" domain="[('brand_id', '=', brand_id)]" attrs="{'invisible': [('brand_id','=',False)]}"/>
<field name="type_id" required="1" options="{'no_create': True}"
domain="[('brand_id', '=', brand_id)]" attrs="{'invisible': [('brand_id','=',False)]}"/>
</group>
<group>
@@ -489,4 +490,65 @@
</p>
</field>
</record>
#------------------模型类型------------------
<record model="ir.ui.view" id="search_sf_model_type_view">
<field name="name">search.sf.model.type</field>
<field name="model">sf.model.type</field>
<field name="arch" type="xml">
<search string="模型类型">
<field name="name" string="模糊搜索"
filter_domain="[('name', 'ilike', self)]"/>
</search>
</field>
</record>
<record model="ir.ui.view" id="tree_sf_model_type_view">
<field name="name">tree.sf.model.type</field>
<field name="model">sf.model.type</field>
<field name="arch" type="xml">
<tree string="模型类型">
<field name="name"/>
</tree>
</field>
</record>
<record model="ir.ui.view" id="form_sf_model_type">
<field name="name">form.sf.model.type</field>
<field name="model">sf.model.type</field>
<field name="arch" type="xml">
<form string="模型类型">
<group>
<field name="name" required="1"/>
</group>
<group>
<field name="routing_tmpl_id" required="1">
<tree editable="bottom">
<field name="sequence" invisible="1"/>
<field name="name" />
<field name="workcenter_id" />
<field name="time_mode" />
<field name="time_cycle" />
<!-- <field name="bom_id" invisible="1"/>-->
</tree>
</field>
</group>
</form>
</field>
</record>
<record id="action_sf_model_type" model="ir.actions.act_window">
<field name="name">模型类型</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">sf.model.type</field>
<field name="view_mode">tree,form</field>
<field name="help" type="html">
<p class="o_view_nocontent_smiling_face">
[模型类型] 还没有哦!点左上角的[创建]按钮,沙发归你了!
</p>
<p>
</p>
</field>
</record>
</odoo>

View File

@@ -0,0 +1,50 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<data>
<record model="ir.ui.view" id="view_product_template_form_inherit_sf">
<field name="name">product.template.form.inherit.sf</field>
<field name="model">product.template</field>
<field name="inherit_id" ref="product.product_template_only_form_view"/>
<field name="arch" type="xml">
<xpath expr="//page[last()]" position="after">
<page string="加工参数">
<group>
<group string="模型">
<field name="model_long" string="长[mm]"/>
<field name="model_width" string="宽[mm]"/>
<field name="model_height" string="高[mm]"/>
<field name="model_volume" string="体积[mm]"/>
<field name="model_type_id" string="模板类型"/>
<field name="processing_panel" placeholder="例如A,B" string="加工面板"/>
<field name="model_precision" string="精度要求"/>
<field name="model_materials_id" string="材料"/>
<field name="model_materials_type_id" string="型号"
domain="[('materials_id', '=', model_materials_id)]"/>
</group>
<group string="胚料">
<field name="embryo_long" string="长[mm]"/>
<field name="embryo_width" string="宽[mm]"/>
<field name="embryo_height" string="高[mm]"/>
<field name="volume" string="体积[mm³]"/>
<field name="embryo_materials_id" string="材料"/>
<field name="embryo_materials_type_id" string="型号"
domain="[('materials_id', '=',embryo_materials_id)]"/>
</group>
</group>
</page>
</xpath>
</field>
</record>
<record id="view_product_category_form_inherit_sf" model="ir.ui.view">
<field name="name">product.category.form.inherit.sf</field>
<field name="model">product.category</field>
<field name="inherit_id" ref="product.product_category_form_view"/>
<field name="arch" type="xml">
<field name="parent_id" position="before">
<field name="is_embryo"/>
</field>
</field>
</record>
</data>
</odoo>

View File

@@ -1,18 +1,18 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<data>
<record model="ir.ui.view" id="view_sf_form_inherit">
<field name="model">sale.order</field>
<field name="inherit_id" ref="sale.view_order_form"/>
<field name="arch" type="xml">
<xpath expr="//page[@name='Customer Signature']" position="before">
<page string="Bfm Line">
<group>
<field name="bfm_process_order_ids"/>
</group>
</page>
</xpath>
</field>
</record>
</data>
<!-- <data>-->
<!-- <record model="ir.ui.view" id="view_sf_form_inherit">-->
<!-- <field name="model">sale.order</field>-->
<!-- <field name="inherit_id" ref="sale.view_order_form"/>-->
<!-- <field name="arch" type="xml">-->
<!-- <xpath expr="//page[@name='Customer Signature']" position="before">-->
<!-- <page string="Bfm Line">-->
<!-- <group>-->
<!-- <field name="bfm_process_order_ids"/>-->
<!-- </group>-->
<!-- </page>-->
<!-- </xpath>-->
<!-- </field>-->
<!-- </record>-->
<!-- </data>-->
</odoo>

View File

@@ -14,10 +14,6 @@
'data': [
'security/group_security.xml',
'security/ir.model.access.csv',
'data/product_data.xml',
'data/process_data.xml',
'views/product_template_view.xml',
'views/sale_order_view.xml'
],
'demo': [
],

View File

@@ -1,7 +1,5 @@
from . import sale_order
from . import product_template
from . import http
from . import models
from . import process

View File

@@ -1,11 +0,0 @@
from odoo import fields, models, api
class ResMrpRoutingWorkcenter(models.Model):
_inherit = 'mrp.routing.workcenter'
code = fields.Char('唯一编码')
is_repeat = fields.Boolean('重复',default=False)
sort = fields.Integer('排序')

View File

@@ -1,2 +1,2 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_sf_model_type,sf_model_type,model_sf_model_type,base.group_user,1,1,1,1
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2

View File

@@ -1,85 +0,0 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<data>
<record model="ir.ui.view" id="view_product_template_form_inherit_sf">
<field name="name">product.template.form.inherit.sf</field>
<field name="model">product.template</field>
<field name="inherit_id" ref="product.product_template_only_form_view"/>
<field name="arch" type="xml">
<xpath expr="//page[last()]" position="after">
<page string="加工参数">
<group>
<group string="模型">
<field name="model_long"/>
<field name="model_width"/>
<field name="model_height"/>
<field name="model_volume"/>
<field name="model_type_id"/>
<field name="processing_panel" placeholder="例如A,B"/>
<field name="model_precision"/>
<field name="model_materials_id"/>
<field name="model_materials_type_id"
domain="[('materials_id', '=', model_materials_id)]"/>
</group>
<group string="胚料">
<field name="embryo_long"/>
<field name="embryo_width"/>
<field name="embryo_height"/>
<field name="volume" string="体积[mm³]"/>
<field name="embryo_materials_id"/>
<field name="embryo_materials_type_id"
domain="[('materials_id', '=',embryo_materials_id)]"/>
</group>
</group>
</page>
</xpath>
<!-- <xpath expr="//label[@for='volume']" position="before">-->
<!-- <label for="embryo_long" string="尺寸"-->
<!-- attrs="{'invisible':[('product_variant_count', '>', 1), ('is_product_variant', '=', False)]}"/>-->
<!-- <div class="o_address_format"-->
<!-- attrs="{'invisible':[('product_variant_count', '>', 1), ('is_product_variant', '=', False)]}">-->
<!-- <label for="embryo_long" string="长"-->
<!-- attrs="{'invisible':[('product_variant_count', '>', 1), ('is_product_variant', '=', False)]}"/>-->
<!-- <field name="embryo_long" class="o_address_zip"-->
<!-- attrs="{'invisible':[('product_variant_count', '>', 1), ('is_product_variant', '=', False)]}"/>-->
<!-- <span>&amp;nbsp;</span>-->
<!-- <label for="embryo_width" string="宽"-->
<!-- attrs="{'invisible':[('product_variant_count', '>', 1), ('is_product_variant', '=', False)]}"/>-->
<!-- <field name="embryo_width" class="o_address_zip"-->
<!-- attrs="{'invisible':[('product_variant_count', '>', 1), ('is_product_variant', '=', False)]}"/>-->
<!-- <span>&amp;nbsp;</span>-->
<!-- <label for="embryo_height" string="高"-->
<!-- attrs="{'invisible':[('product_variant_count', '>', 1), ('is_product_variant', '=', False)]}"/>-->
<!-- <field name="embryo_height" class="o_address_zip"-->
<!-- attrs="{'invisible':[('product_variant_count', '>', 1), ('is_product_variant', '=', False)]}"/>-->
<!-- </div>-->
<!-- </xpath>-->
<!-- <xpath expr="//label[@for='produce_delay']" position="before">-->
<!-- <label for="embryo_materials_id"-->
<!-- attrs="{'invisible':[('product_variant_count', '>', 1), ('is_product_variant', '=', False)]}"/>-->
<!-- <div class="o_row"-->
<!-- attrs="{'invisible':[('product_variant_count', '>', 1), ('is_product_variant', '=', False)]}">-->
<!-- <field name="embryo_materials_id"/>-->
<!-- </div>-->
<!-- <label for="embryo_materials_type_id"-->
<!-- attrs="{'invisible':[('product_variant_count', '>', 1), ('is_product_variant', '=', False)]}"/>-->
<!-- <div class="o_row"-->
<!-- attrs="{'invisible':[('product_variant_count', '>', 1), ('is_product_variant', '=', False)]}">-->
<!-- <field name="embryo_materials_type_id" domain="[('materials_id', '=', embryo_materials_id)]"/>-->
<!-- </div>-->
<!-- </xpath>-->
</field>
</record>
<record id="view_product_category_form_inherit_sf" model="ir.ui.view">
<field name="name">product.category.form.inherit.sf</field>
<field name="model">product.category</field>
<field name="inherit_id" ref="product.product_category_form_view"/>
<field name="arch" type="xml">
<field name="parent_id" position="before">
<field name="is_embryo"/>
</field>
</field>
</record>
</data>
</odoo>