Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into feature/修改设备基础参数

This commit is contained in:
qihao.gong@jikimo.com
2023-07-28 15:32:37 +08:00
18 changed files with 28063 additions and 1119 deletions

View File

@@ -34,6 +34,7 @@ class MachineBrand(models.Model):
name = fields.Char('名称')
tag_ids = fields.Many2many('sf.machine.brand.tags', 'rel_machine_brand_tags', string='类别')
image_brand = fields.Image("品牌图片")
manufacturer_model_number = fields.Char('厂家型号', size=10)
active = fields.Boolean('有效', default=True)
code = fields.Char('编码')

View File

@@ -7,7 +7,9 @@ class FixtureMaterial(models.Model):
code = fields.Char(string='编码')
name = fields.Char(string="名称", size=15)
category = fields.Selection([('零点夹具', '零点夹具')], string="类别")
remark = fields.Char(string="备注")
active = fields.Boolean(string="有效", default=True)
class Multi_MountingType(models.Model):
@@ -17,6 +19,7 @@ class Multi_MountingType(models.Model):
code = fields.Char(string='编码')
name = fields.Char(string="名称", size=15)
remark = fields.Char(string="备注")
active = fields.Boolean(string="有效", default=True)
class FixtureModel(models.Model):
@@ -29,6 +32,7 @@ class FixtureModel(models.Model):
fixture_material_type = fields.Char(string="夹具物料类型", related='fixture_material_id.name')
multi_mounting_type_id = fields.Many2one('sf.multi_mounting.type', string="联装类型")
brand_id = fields.Many2one('sf.machine.brand', string="品牌")
manufacturer_model_number = fields.Char(string="厂家型号")
clamping_way = fields.Char(string="装夹方式")
port_type = fields.Char(string="接口类型")
model_file = fields.Binary(string="3D模型图")

View File

@@ -8,6 +8,7 @@ class FunctionalFixtureType(models.Model):
code = fields.Char(string='编码', readonly=True)
name = fields.Char(string="名称", size=15)
remark = fields.Char(string="备注")
active = fields.Boolean(string="有效", default=True)
class FunctionalFixture(models.Model):
@@ -17,6 +18,7 @@ class FunctionalFixture(models.Model):
code = fields.Char(string='编码', readonly=True)
name = fields.Char(string="名称", size=15, required=True)
type_id = fields.Many2one('sf.functional.fixture.type', string="功能夹具类型", required=True)
type = fields.Char(related='type_id.name', string="功能夹具类别", store=True)
zero_chuck_model_ids = fields.Many2many('sf.fixture.model', 'rel_fixture_model_zero_chuck', string="零点卡盘型号",
required=True,
domain=[('fixture_material_type', '=', '零点卡盘')])
@@ -36,7 +38,6 @@ class FunctionalFixture(models.Model):
fixture_model_ids = []
for item in fixture_model_code:
fixture_model = self.env['sf.fixture.model'].search([('code', '=', item)])
fixture_model_ids.append(fixture_model.id)
if fixture_model:
fixture_model_ids.append(fixture_model.id)
return [(6, 0, fixture_model_ids)]

View File

@@ -21,52 +21,47 @@
<field name="name">tree.sf.machine.brand</field>
<field name="model">sf.machine.brand</field>
<field name="arch" type="xml">
<tree string="品牌">
<tree string="品牌" create="0" edit="0" delete="0">
<field name="code"/>
<field name="name"/>
<field name="tag_ids" widget="many2many_tags" options="{'color_field': 'color'}" optional="hide"/>
<field name="manufacturer_model_number"/>
<field name="tag_ids" widget="many2many_tags" optional="hide"/>
<field name="image_brand"/>
</tree>
</field>
</record>
<record model="ir.ui.view" id="form_sf_machine_brand">
<field name="name">form.sf.machine.brand</field>
<field name="model">sf.machine.brand</field>
<field name="arch" type="xml">
<form string="品牌">
<!-- <widget name="web_ribbon" title="Archived" bg_color="bg-danger" attrs="{'invisible': [('active', '=', True)]}"/>-->
<field name="image_brand" widget='image' class="oe_avatar" options="{'preview_image': 'image_128'}"/>
<div class="oe_title">
<label for="code" string="编码"/>
<h2 class="d-flex">
<field name="code" readonly="True"/>
</h2>
</div>
<group>
<group>
<field name="name" required="True"/>
<field name="tag_ids"
widget="many2many_tags"
options="{'color_field': 'color', 'no_create_edit': True}"
required="True"/>
</group>
</group>
</form>
</field>
</record>
<!-- <record model="ir.ui.view" id="form_sf_machine_brand">-->
<!-- <field name="name">form.sf.machine.brand</field>-->
<!-- <field name="model">sf.machine.brand</field>-->
<!-- <field name="arch" type="xml">-->
<!-- <form string="品牌">-->
<!-- &lt;!&ndash; <widget name="web_ribbon" title="Archived" bg_color="bg-danger" attrs="{'invisible': [('active', '=', True)]}"/>&ndash;&gt;-->
<!-- <field name="image_brand" widget='image' class="oe_avatar" options="{'preview_image': 'image_128'}"/>-->
<!-- <div class="oe_title">-->
<!-- <label for="code" string="编码"/>-->
<!-- <h2 class="d-flex">-->
<!-- <field name="code" readonly="True"/>-->
<!-- </h2>-->
<!-- </div>-->
<!-- <group>-->
<!-- <group>-->
<!-- <field name="name" required="True"/>-->
<!-- <field name="tag_ids"-->
<!-- widget="many2many_tags"-->
<!-- options="{'color_field': 'color', 'no_create_edit': True}"-->
<!-- required="True"/>-->
<!-- </group>-->
<!-- </group>-->
<!-- </form>-->
<!-- </field>-->
<!-- </record>-->
<record id="action_sf_machine_brand" model="ir.actions.act_window">
<field name="name">品牌</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">sf.machine.brand</field>
<field name="view_mode">tree,form</field>
<field name="help" type="html">
<p class="o_view_nocontent_smiling_face">
[品牌] 还没有哦!点左上角的[创建]按钮,沙发归你了!
</p>
<p>
</p>
</field>
<field name="view_mode">tree</field>
</record>
#------------------机床型号------------------
@@ -86,7 +81,7 @@
<field name="name">tree.sf.machine_tool.type</field>
<field name="model">sf.machine_tool.type</field>
<field name="arch" type="xml">
<tree string="机床型号">
<tree string="机床型号" create="0" edit="0" delete="0">
<field name="code"/>
<field name="name"/>
<field name="brand_id"/>
@@ -96,20 +91,19 @@
</field>
</record>
<record model="ir.ui.view" id="form_sf_machine_tool_type">
<record model="ir.ui.view" id="form_sf_machine_tool_type">
<field name="name">form.sf.machine_tool.type</field>
<field name="model">sf.machine_tool.type</field>
<field name="arch" type="xml">
<form string="机床型号">
<form string="机床型号" create="0" edit="0" delete="0">
<group string="基本信息">
<group>
<field name="code" force_save="1" readonly="1"/>
<field name="name" required="1"/>
<field name="machine_tool_category" required="1"/>
<field name="machine_tool_category" required="1"/>
<field name="brand_id" required="1"
domain="[('tag_ids', '=', '机床')]"
options="{'no_create': True}" />
options="{'no_create': True}"/>
</group>
<group>
<field name="machine_tool_picture" widget="image" nolabel="1"/>
@@ -118,10 +112,10 @@
</group>
<group string="参数">
<group>
<field name="control_system_id" required="1" options="{'no_create': True}" />
<field name="control_system_id" required="1" options="{'no_create': True}"/>
<field name="workbench_L" required="1"/>
<field name="workbench_W" required="1"/>
<field name="machine_tool_L" required="1"/>
<field name="machine_tool_L" required="1"/>
<field name="machine_tool_W" required="1"/>
<field name="machine_tool_H" required="1"/>
<field name="knife_type" required="1"/>
@@ -138,28 +132,30 @@
<div class="test_model"
attrs="{'invisible': [('number_of_axles', '=', False)]}">
<label for="x_axis" string="x"/>
<field name="x_axis" class="o_address_zip" required="1" options="{'format': false}" />
<field name="x_axis" class="o_address_zip" required="1" options="{'format': false}"/>
<span>&amp;nbsp;</span>
<label for="y_axis" string="y"/>
<field name="y_axis" class="o_address_zip" required="1" options="{'format': false}" />
<field name="y_axis" class="o_address_zip" required="1" options="{'format': false}"/>
<span>&amp;nbsp;</span>
<label for="z_axis" string="z"/>
<field name="z_axis" class="o_address_zip" required="1" options="{'format': false}" />
<field name="z_axis" class="o_address_zip" required="1" options="{'format': false}"/>
<br></br>
<label for="b_axis" string="b"
attrs="{'invisible': [('number_of_axles', '=', '三轴')]}"/>
<field name="b_axis" class="o_address_zip" required="1"
attrs="{'invisible': [('number_of_axles', '=', '三轴')]}" options="{'format': false}" />
attrs="{'invisible': [('number_of_axles', '=', '三轴')]}"
options="{'format': false}"/>
<span>&amp;nbsp;</span>
<label for="c_axis" string="c"
attrs="{'invisible': [('number_of_axles', 'in', ['三轴','四轴'])]}"/>
<field name="c_axis" class="o_address_zip" required="1"
attrs="{'invisible': [('number_of_axles', 'in', ['三轴','四轴'])]}" options="{'format': false}" />
attrs="{'invisible': [('number_of_axles', 'in', ['三轴','四轴'])]}"
options="{'format': false}"/>
</div>
</group>
<group>
<field name="heightened_way" required="1"/>
<field name="tool_quality_max" required="1"/>
<field name="tool_quality_max" required="1"/>
<field name="tool_long_max" required="1"/>
<field name="tool_diameter_max" required="1"/>
<field name="guide_rail" required="1"/>
@@ -194,7 +190,7 @@
</field>
</record>
#------------------机床类型------------------
#------------------机床类型------------------
<record model="ir.ui.view" id="search_sf_machine_tool_category_view">
<field name="name">search.sf.machine_tool.category</field>
@@ -226,21 +222,20 @@
<field name="arch" type="xml">
<form string="机床类型">
<group string="基本信息" name="base_info">
<group>
<field name="code" force_save="1" readonly="1"/>
<field name="name" required="1"/>
</group>
<group>
<field name="category" readonly="1"/>
</group>
</group>
<group>
<field name="code" force_save="1" readonly="1"/>
<field name="name" required="1"/>
</group>
<group>
<field name="category" readonly="1"/>
</group>
</group>
<group string="其它">
<field name="remark"/>
</group>
</form>
</field>
</record>
@@ -297,7 +292,8 @@
<field name="arch" type="xml">
<form string="机床">
<header>
<button type="object" class="oe_highlight" name='enroll_machine_tool' string="机床注册" attrs="{'invisible': [('code','!=',False)]}"/>
<button type="object" class="oe_highlight" name='enroll_machine_tool' string="机床注册"
attrs="{'invisible': [('code','!=',False)]}"/>
</header>
<group string="基本信息">
<group>
@@ -329,11 +325,14 @@
<div class="o_address_format"
attrs="{'invisible': [('number_of_axles', '=', False)]}">
<label for="x_axis" string="x"/>
<field name="x_axis" class="o_address_city" required="1" options="{'format': false}"/>
<field name="x_axis" class="o_address_city" required="1"
options="{'format': false}"/>
<label for="y_axis" string="y"/>
<field name="y_axis" class="o_address_zip" required="1" options="{'format': false}"/>
<field name="y_axis" class="o_address_zip" required="1"
options="{'format': false}"/>
<label for="z_axis" string="z"/>
<field name="z_axis" class="o_address_zip" required="1" options="{'format': false}"/>
<field name="z_axis" class="o_address_zip" required="1"
options="{'format': false}"/>
<label for="b_axis" string="b"
attrs="{'invisible': [('number_of_axles', '=', '三轴')]}"/>
<field name="b_axis" class="o_address_city" required="1"
@@ -350,7 +349,7 @@
<field name="rotate_speed" required="1" string="转速(min)" options="{'format': false}"/>
<field name="precision" required="1" string="加工精度(mm)"/>
<field name="control_system_id" required="1" options="{'no_create': True}"/>
<field name="state" widget="selection"/>
<field name="state" widget="selection"/>
</group>
</group>
</page>
@@ -396,7 +395,7 @@
<field name="name">tree.sf.machine.control_system</field>
<field name="model">sf.machine.control_system</field>
<field name="arch" type="xml">
<tree string="控制系统">
<tree string="控制系统" create="0" edit="0" delete="0">
<field name="code"/>
<field name="name"/>
<field name="brand_id"/>
@@ -404,37 +403,30 @@
</field>
</record>
<record model="ir.ui.view" id="form_sf_machine_control_system">
<field name="name">form.sf.machine.control_system</field>
<field name="model">sf.machine.control_system</field>
<field name="arch" type="xml">
<form string="控制系统">
<group>
<group>
<field name="code" force_save="1" readonly="1"/>
<field name="brand_id" required="1"
domain="[('tag_ids', '=', '控制系统')]"
options="{'no_create': True}"/>
</group>
<group>
<field name="name" required="1"/>
</group>
</group>
</form>
</field>
</record>
<!-- <record model="ir.ui.view" id="form_sf_machine_control_system">-->
<!-- <field name="name">form.sf.machine.control_system</field>-->
<!-- <field name="model">sf.machine.control_system</field>-->
<!-- <field name="arch" type="xml">-->
<!-- <form string="控制系统">-->
<!-- <group>-->
<!-- <group>-->
<!-- <field name="code" force_save="1" readonly="1"/>-->
<!-- <field name="brand_id" required="1"-->
<!-- domain="[('tag_ids', '=', '控制系统')]"-->
<!-- options="{'no_create': True}"/>-->
<!-- </group>-->
<!-- <group>-->
<!-- <field name="name" required="1"/>-->
<!-- </group>-->
<!-- </group>-->
<!-- </form>-->
<!-- </field>-->
<!-- </record>-->
<record id="action_sf_machine_control_system" model="ir.actions.act_window">
<field name="name">控制系统</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">sf.machine.control_system</field>
<field name="view_mode">tree,form</field>
<field name="help" type="html">
<p class="o_view_nocontent_smiling_face">
[控制系统] 还没有哦!点左上角的[创建]按钮,沙发归你了!
</p>
<p>
</p>
</field>
<field name="view_mode">tree</field>
</record>
</odoo>

View File

@@ -5,7 +5,7 @@
<record model="ir.ui.view" id="sf_processing_technology_form">
<field name="model">sf.processing.technology</field>
<field name="arch" type="xml">
<form string="加工工艺">
<form string="加工工艺" create="0" edit="0" delete="0">
<group>
<group>
<field name="process_encode" readonly="1"/>
@@ -23,7 +23,7 @@
<record model="ir.ui.view" id="sf_processing_technology_tree">
<field name="model">sf.processing.technology</field>
<field name="arch" type="xml">
<tree string="加工工艺">
<tree string="加工工艺" create="0" edit="0" delete="0">
<field name="process_encode"/>
<field name="name"/>
</tree>
@@ -44,7 +44,7 @@
<record model="ir.ui.view" id="sf_production_process_category_form">
<field name="model">sf.production.process.category</field>
<field name="arch" type="xml">
<form string="表面工艺类别">
<form string="表面工艺类别" create="0" edit="0" delete="0">
<sheet>
<group>
<group>
@@ -75,7 +75,7 @@
<record model="ir.ui.view" id="sf_production_process_category_tree">
<field name="model">sf.production.process.category</field>
<field name="arch" type="xml">
<tree string="表面工艺类别" default_order="sequence, id" >
<tree string="表面工艺类别" default_order="sequence, id" create="0" edit="0" delete="0">
<field name="sequence" widget="handle" string="序号"/>
<field name="code" readonly="1"/>
<field name="name"/>
@@ -98,7 +98,7 @@
<record model="ir.ui.view" id="sf_production_process_tree">
<field name="model">sf.production.process</field>
<field name="arch" type="xml">
<tree string="表面工艺">
<tree string="表面工艺" create="0" edit="0" delete="0">
<field name="process_encode" readonly="1"/>
<field name="name" readonly="1"/>
<field name="remark"/>
@@ -109,7 +109,7 @@
<record model="ir.ui.view" id="sf_production_process_form">
<field name="model">sf.production.process</field>
<field name="arch" type="xml">
<form string="表面工艺">
<form string="表面工艺" create="0" edit="0" delete="0">
<sheet>
<group>
<group>
@@ -186,7 +186,7 @@
<record model="ir.ui.view" id="sf_materials_model_form">
<field name="model">sf.materials.model</field>
<field name="arch" type="xml">
<form string="材料型号">
<form string="材料型号" create="0" edit="0" delete="0">
<group>
<group>
<field name="materials_no" readonly="1"/>
@@ -219,7 +219,7 @@
<record model="ir.ui.view" id="sf_materials_model_tree">
<field name="model">sf.materials.model</field>
<field name="arch" type="xml">
<tree string="材料型号">
<tree string="材料型号" create="0" edit="0" delete="0">
<field name="materials_no"/>
<field name="name"/>
<field name="need_h"/>
@@ -246,8 +246,7 @@
<record model="ir.ui.view" id="sf_production_materials_form">
<field name="model">sf.production.materials</field>
<field name="arch" type="xml">
<form string="材料">
<form string="材料" create="0" edit="0" delete="0">
<group string="详情">
<group>
<field name="materials_no" readonly="1" default="编码"/>
@@ -276,10 +275,9 @@
<record model="ir.ui.view" id="sf_production_materials_tree">
<field name="model">sf.production.materials</field>
<field name="arch" type="xml">
<tree string="材料">
<tree string="材料" create="0" edit="0" delete="0">
<field name="materials_no" readonly="1"/>
<field name="name" readonly="1"/>
</tree>
</field>
</record>
@@ -299,44 +297,24 @@
<field name="type">ir.actions.act_window</field>
<field name="res_model">sf.production.materials</field>
<field name="view_mode">tree,form</field>
<field name="help" type="html">
<p class="o_view_nocontent_smiling_face">
材料!
</p>
</field>
</record>
<record id="sf_production_process" model="ir.actions.act_window">
<field name="name">表面工艺</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">sf.production.process</field>
<field name="view_mode">tree,form</field>
<field name="help" type="html">
<p class="o_view_nocontent_smiling_face">
表面工艺!
</p>
</field>
</record>
<record id="sf_materials_model" model="ir.actions.act_window">
<field name="name">材料型号</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">sf.materials.model</field>
<field name="view_mode">tree,form</field>
<field name="help" type="html">
<p class="o_view_nocontent_smiling_face">
材料型号!
</p>
</field>
</record>
<record id="sf_processing_technology" model="ir.actions.act_window">
<field name="name">加工工艺</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">sf.processing.technology</field>
<field name="view_mode">tree,form</field>
<field name="help" type="html">
<p class="o_view_nocontent_smiling_face">
加工工艺!
</p>
</field>
</record>
<record id="sf_production_process_category" model="ir.actions.act_window">
@@ -344,11 +322,6 @@
<field name="type">ir.actions.act_window</field>
<field name="res_model">sf.production.process.category</field>
<field name="view_mode">tree,form</field>
<field name="help" type="html">
<p class="o_view_nocontent_smiling_face">
表面工艺类别!
</p>
</field>
</record>
#------------------托盘------------------

View File

@@ -13,6 +13,7 @@
filter_domain="[('name', 'ilike', self)]"/>
<field name="remark" string="备注"
filter_domain="[('remark', 'ilike', self)]"/>
<filter name="filter_active" string="未启用" domain="[('active','=',False)]"/>
</search>
</field>
</record>
@@ -21,45 +22,45 @@
<field name="name">夹具物料</field>
<field name="model">sf.fixture.material</field>
<field name="arch" type="xml">
<tree string="夹具物料" create="false">
<tree string="夹具物料" create="0" edit="0" delete="0">
<field name="code"/>
<field name="name"/>
<field name="category"/>
<field name="remark"/>
<field name="create_uid" string="创建人"/>
<field name="create_date" string="创建时间"/>
<field name="active" string="启用"/>
</tree>
</field>
</record>
<record id="sf_fixture_material_view_form" model="ir.ui.view">
<field name="name">夹具物料</field>
<field name="model">sf.fixture.material</field>
<field name="arch" type="xml">
<form string="夹具物料">
<sheet>
<group string="基本信息">
<group>
<field name="code"/>
</group>
<group>
<field name="name"/>
</group>
</group>
<group>
<!-- <group>-->
<field name="remark"/>
<!-- </group>-->
</group>
</sheet>
</form>
</field>
</record>
<!-- <record id="sf_fixture_material_view_form" model="ir.ui.view">-->
<!-- <field name="name">夹具物料</field>-->
<!-- <field name="model">sf.fixture.material</field>-->
<!-- <field name="arch" type="xml">-->
<!-- <form string="夹具物料">-->
<!-- <sheet>-->
<!-- <group string="基本信息">-->
<!-- <group>-->
<!-- <field name="code"/>-->
<!-- </group>-->
<!-- <group>-->
<!-- <field name="name"/>-->
<!-- </group>-->
<!-- </group>-->
<!-- <group>-->
<!-- &lt;!&ndash; <group>&ndash;&gt;-->
<!-- <field name="remark"/>-->
<!-- &lt;!&ndash; </group>&ndash;&gt;-->
<!-- </group>-->
<!-- </sheet>-->
<!-- </form>-->
<!-- </field>-->
<!-- </record>-->
<record id="sf_fixture_material_view_act" model="ir.actions.act_window">
<field name="name">夹具物料</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">sf.fixture.material</field>
<field name="view_mode">tree,form</field>
<field name="view_mode">tree</field>
</record>
@@ -76,6 +77,7 @@
filter_domain="[('name', 'ilike', self)]"/>
<field name="remark" string="备注"
filter_domain="[('remark', 'ilike', self)]"/>
<filter name="filter_active" string="未启用" domain="[('active','=',False)]"/>
</search>
</field>
</record>
@@ -85,43 +87,42 @@
<field name="name">联装类型</field>
<field name="model">sf.multi_mounting.type</field>
<field name="arch" type="xml">
<tree string="联装类型" create="false">
<tree string="联装类型" create="0" edit="0" delete="0">
<field name="code"/>
<field name="name"/>
<field name="remark"/>
<field name="create_uid" string="创建人"/>
<field name="create_date" string="创建时间"/>
<field name="active" string="启用"/>
</tree>
</field>
</record>
<record id="sf_multi_mounting_type_view_form" model="ir.ui.view">
<field name="name">联装类型</field>
<field name="model">sf.multi_mounting.type</field>
<field name="arch" type="xml">
<form string="联装类型">
<sheet>
<group string="基本信息">
<group>
<field name="code"/>
</group>
<group>
<field name="name"/>
</group>
</group>
<group>
<field name="remark"/>
</group>
</sheet>
</form>
</field>
</record>
<!-- <record id="sf_multi_mounting_type_view_form" model="ir.ui.view">-->
<!-- <field name="name">联装类型</field>-->
<!-- <field name="model">sf.multi_mounting.type</field>-->
<!-- <field name="arch" type="xml">-->
<!-- <form string="联装类型">-->
<!-- <sheet>-->
<!-- <group string="基本信息">-->
<!-- <group>-->
<!-- <field name="code"/>-->
<!-- </group>-->
<!-- <group>-->
<!-- <field name="name"/>-->
<!-- </group>-->
<!-- </group>-->
<!-- <group>-->
<!-- <field name="remark"/>-->
<!-- </group>-->
<!-- </sheet>-->
<!-- </form>-->
<!-- </field>-->
<!-- </record>-->
<record id="sf_multi_mounting_type_view_act" model="ir.actions.act_window">
<field name="name">联装类型</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">sf.multi_mounting.type</field>
<field name="view_mode">tree,form</field>
<field name="view_mode">tree</field>
</record>
<!-- ===========================夹具型号====================================-->
@@ -144,7 +145,8 @@
<group expand="0" string="Group By...">
<filter string='品牌' name="brand_id" domain="[]"
context="{'group_by' : 'brand_id'}"/>
<filter string="夹具物料" name="fixture_material_id" domain="[]" context="{'group_by': 'fixture_material_id'}"/>
<filter string="夹具物料" name="fixture_material_id" domain="[]"
context="{'group_by': 'fixture_material_id'}"/>
<filter string='联装类型' name="multi_mounting_type_id" domain="[]"
context="{'group_by' : 'multi_mounting_type_id'}"/>
</group>
@@ -159,14 +161,12 @@
<field name="name">夹具型号</field>
<field name="model">sf.fixture.model</field>
<field name="arch" type="xml">
<tree string="夹具型号" create="false">
<tree string="夹具型号" create="0" edit="0" delete="0">
<field name="code"/>
<field name="name"/>
<field name="brand_id"/>
<field name="fixture_material_id"/>
<field name="multi_mounting_type_id"/>
<field name="create_uid" string="创建人"/>
<field name="create_date" string="创建时间"/>
</tree>
</field>
</record>
@@ -175,13 +175,14 @@
<field name="name">夹具型号</field>
<field name="model">sf.fixture.model</field>
<field name="arch" type="xml">
<form string="夹具型号">
<form string="夹具型号" create="0" edit="0" delete="0">
<sheet>
<group string="基本信息">
<group>
<field name="code" force_save="1"/>
<field name="name"/>
<field name="brand_id"/>
<field name="manufacturer_model_number"/>
<field name="fixture_material_id"/>
<field name="fixture_material_type" invisible="1"/>
<field name="multi_mounting_type_id"/>

View File

@@ -14,6 +14,7 @@
filter_domain="[('name', 'ilike', self)]"/>
<field name="remark" string="备注"
filter_domain="[('remark', 'ilike', self)]"/>
<filter name="filter_active" string="未启用" domain="[('active','=',False)]"/>
</search>
</field>
</record>
@@ -22,43 +23,42 @@
<field name="name">功能夹具类型</field>
<field name="model">sf.functional.fixture.type</field>
<field name="arch" type="xml">
<tree string="功能夹具类型" create="false">
<tree string="功能夹具类型" create="0" edit="0" delete="0">
<field name="code"/>
<field name="name"/>
<field name="remark"/>
<field name="create_uid" string="创建人"/>
<field name="create_date" string="创建时间"/>
<field name="active" string="启用"/>
</tree>
</field>
</record>
<record id="sf_functional_fixture_type_view_form" model="ir.ui.view">
<field name="name">功能夹具类型</field>
<field name="model">sf.functional.fixture.type</field>
<field name="arch" type="xml">
<form string="功能夹具类型">
<sheet>
<group string="基本信息">
<group>
<field name="code"/>
<field name="name"/>
</group>
</group>
<group string="其他">
<group>
<field name="remark"/>
</group>
</group>
</sheet>
</form>
</field>
</record>
<!-- <record id="sf_functional_fixture_type_view_form" model="ir.ui.view">-->
<!-- <field name="name">功能夹具类型</field>-->
<!-- <field name="model">sf.functional.fixture.type</field>-->
<!-- <field name="arch" type="xml">-->
<!-- <form string="功能夹具类型">-->
<!-- <sheet>-->
<!-- <group string="基本信息">-->
<!-- <group>-->
<!-- <field name="code"/>-->
<!-- <field name="name"/>-->
<!-- </group>-->
<!-- </group>-->
<!-- <group string="其他">-->
<!-- <group>-->
<!-- <field name="remark"/>-->
<!-- </group>-->
<!-- </group>-->
<!-- </sheet>-->
<!-- </form>-->
<!-- </field>-->
<!-- </record>-->
<record id="sf_functional_fixture_type_view_act" model="ir.actions.act_window">
<field name="name">功能夹具类型</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">sf.functional.fixture.type</field>
<field name="view_mode">tree,form</field>
<field name="view_mode">tree</field>
</record>
@@ -81,12 +81,10 @@
<field name="name">功能夹具</field>
<field name="model">sf.functional.fixture</field>
<field name="arch" type="xml">
<tree string="功能夹具" create="false">
<tree string="功能夹具" create="0" edit="0" delete="0">
<field name="code"/>
<field name="name"/>
<field name="type_id"/>
<field name="create_uid" string="创建人"/>
<field name="create_date" string="创建时间"/>
</tree>
</field>
</record>
@@ -95,18 +93,23 @@
<field name="name">功能夹具</field>
<field name="model">sf.functional.fixture</field>
<field name="arch" type="xml">
<form string="功能夹具">
<form string="功能夹具" create="0" edit="0" delete="0">
<sheet>
<group string="基本信息">
<group>
<field name="code" force_save="1"/>
<field name="code"/>
<field name="name"/>
<field name="type_id"/>
<field name="type" invisible="1"/>
<field name="zero_chuck_model_ids" widget="many2many_tags"/>
<field name="transfer_tray_model_ids" widget="many2many_tags"/>
<field name="pneumatic_tray_model_ids" widget="many2many_tags"/>
<field name="magnetic_tray_model_ids" widget="many2many_tags"/>
<field name="vice_tray_model_ids" widget="many2many_tags"/>
<field name="transfer_tray_model_ids" widget="many2many_tags"
attrs="{'invisible': [('type', '!=', '转接板(锁板)式')]}"/>
<field name="pneumatic_tray_model_ids" widget="many2many_tags"
attrs="{'invisible': [('type', '!=', '气动式')]}"/>
<field name="magnetic_tray_model_ids" widget="many2many_tags"
attrs="{'invisible': [('type', '!=', '磁吸式')]}"/>
<field name="vice_tray_model_ids" widget="many2many_tags"
attrs="{'invisible': [('type', '!=', '虎钳式')]}"/>
</group>
</group>
</sheet>

View File

@@ -318,6 +318,10 @@ class StockPicking(models.Model):
class ReStockMove(models.Model):
_inherit = 'stock.move'
materiel_length = fields.Float(string='物料长度', digits=(16, 4))
materiel_width = fields.Float(string='物料宽度', digits=(16, 4))
materiel_height = fields.Float(string='物料高度', digits=(16, 4))
def _get_new_picking_values_Res(self, item, sorted_workorders, rescode):
logging.info('new_picking-rescode: %s' % rescode)
return {

View File

@@ -129,6 +129,11 @@
<xpath expr="//page[@name='components']" position="attributes">
<attribute name="string">物料</attribute>
</xpath>
<xpath expr="//field[@name='move_raw_ids']/tree/field[@name='product_id']" position="after">
<field name='materiel_length' string="长"/>
<field name='materiel_width' string="宽"/>
<field name='materiel_height' string="高"/>
</xpath>
<field name="production_id" position="after" invisible="0">
<group>
<field name="date_planned_start" invisible="1"/>

View File

@@ -524,15 +524,17 @@ class MachineBrand(models.Model):
brand.id = item['id'],
brand.name = item['name'],
brand.code = item['code'],
brand.image_brand = '' if not item['image_brand'] else base64.b64encode(item.image_brand),
brand.manufacturer_model_number = item['manufacturer_model_number'],
brand.active = item['active']
else:
self.env['sf.machine.brand'].create({
"id": item['id'],
"name": item['name'],
"code": item['code'],
# "image_brand": item['image_brand'],
"image_brand": '' if not item['image_brand'] else base64.b64encode(item.image_brand),
"manufacturer_model_number": item['manufacturer_model_number'],
"active": item['active'],
# "tag_ids": item['tag_ids']
})
else:
@@ -559,6 +561,7 @@ class MachineBrand(models.Model):
"id": item['id'],
"name": item['name'],
"code": item['code'],
"manufacturer_model_number": item['manufacturer_model_number'],
"image_brand": '' if not item['image_brand'] else base64.b64encode(item.image_brand),
"tag_ids": self.env['sf.machine.brand.tags'].search(
[("name", 'in', item['tag_ids'])]).ids
@@ -1184,7 +1187,7 @@ class sfSyncFunctional_cutting_tool(models.Model):
"name": item['name'],
"code": item['code'],
# 功能刀具类型
"mrs_cutting_tool_type_id": self.env['sf.cutting.tool.type'].search(
"mrs_cutting_tool_type_id": self.env['sf.functional.cutting.tool.model'].search(
[('code', '=', item['mrs_cutting_tool_type_id'])]).id,
# # 刀具型号
# "mrs_cutting_tool_model_id": self.env['sf.cutting.tool.model'].search(
@@ -1219,7 +1222,7 @@ class sfSyncFunctional_cutting_tool(models.Model):
"name": item['name'],
"code": item['code'],
# 功能刀具类型
"mrs_cutting_tool_type_id": self.env['sf.cutting.tool.type'].search(
"mrs_cutting_tool_type_id": self.env['sf.functional.cutting.tool.model'].search(
[('code', '=', item['mrs_cutting_tool_type_id'])]).id,
"mrs_cutting_tool_integral_model_ids": self._get_functional_tool_model_ids(
item['mrs_cutting_tool_integral_model_ids']),
@@ -1276,7 +1279,7 @@ class sfSyncFunctional_cutting_tool(models.Model):
"name": item['name'],
"code": item['code'],
# 功能刀具类型
"mrs_cutting_tool_type_id": self.env['sf.cutting.tool.type'].search(
"mrs_cutting_tool_type_id": self.env['sf.functional.cutting.tool.model'].search(
[('code', '=', item['mrs_cutting_tool_type_id'])]).id,
"mrs_cutting_tool_integral_model_ids": self._get_functional_tool_model_ids(
item['mrs_cutting_tool_integral_model_ids']),
@@ -1308,7 +1311,7 @@ class sfSyncFunctional_cutting_tool(models.Model):
"name": item['name'],
"code": item['code'],
# 功能刀具类型
"mrs_cutting_tool_type_id": self.env['sf.cutting.tool.type'].search(
"mrs_cutting_tool_type_id": self.env['sf.functional.cutting.tool.model'].search(
[('code', '=', item['mrs_cutting_tool_type_id'])]).id,
"mrs_cutting_tool_integral_model_ids": self._get_functional_tool_model_ids(
item['mrs_cutting_tool_integral_model_ids']),
@@ -1439,12 +1442,16 @@ class SyncFixtureMaterial(models.Model):
self.env['sf.fixture.material'].create({
"name": item['name'],
"code": item['code'],
"category": item['category'],
"remark": item['remark'],
"active": item['active'],
})
else:
fixture_material.write({
"name": item['name'],
"category": item['category'],
"remark": item['remark'],
"active": item['active'],
})
else:
raise ValidationError("认证未通过")
@@ -1471,12 +1478,16 @@ class SyncFixtureMaterial(models.Model):
self.env['sf.fixture.material'].create({
"name": item['name'],
"code": item['code'],
"category": item['category'],
"remark": item['remark'],
"active": item['active'],
})
else:
fixture_material.write({
"name": item['name'],
"category": item['category'],
"remark": item['remark'],
"active": item['active'],
})
else:
raise ValidationError("认证未通过")
@@ -1488,7 +1499,7 @@ class SyncMulti_Mounting_Type(models.Model):
url = '/api/multi_mounting_type/list'
# 定时同步夹具物料列表
# 定时同步联装类型列表
def sync_multi_mounting_type(self):
sf_sync_config = self.env['res.config.settings'].get_values()
token = sf_sync_config['token']
@@ -1510,16 +1521,18 @@ class SyncMulti_Mounting_Type(models.Model):
"name": item['name'],
"code": item['code'],
"remark": item['remark'],
"active": item['active'],
})
else:
multi_mounting_type.write({
"name": item['name'],
"remark": item['remark'],
"active": item['active'],
})
else:
raise ValidationError("认证未通过")
# 定时同步所有夹具物料列表
# 定时同步所有联装类型列表
def sync_all_multi_mounting_type(self):
sf_sync_config = self.env['res.config.settings'].get_values()
token = sf_sync_config['token']
@@ -1542,11 +1555,13 @@ class SyncMulti_Mounting_Type(models.Model):
"name": item['name'],
"code": item['code'],
"remark": item['remark'],
"active": item['active'],
})
else:
multi_mounting_type.write({
"name": item['name'],
"remark": item['remark'],
"active": item['active'],
})
else:
raise ValidationError("认证未通过")
@@ -1584,6 +1599,7 @@ class SyncFixtureModel(models.Model):
"multi_mounting_type_id": self.env['sf.multi_mounting.type'].search(
[('code', '=', item['multi_mounting_type_code'])]).id,
"brand_id": self.env['sf.machine.brand'].search([('code', '=', item['brand_code'])]).id,
"manufacturer_model_number": item['manufacturer_model_number'],
"clamping_way": item['clamping_way'],
"port_type": item['port_type'],
"model_file": '' if not item['model_file'] else base64.b64decode(item['model_file']),
@@ -1613,6 +1629,7 @@ class SyncFixtureModel(models.Model):
"multi_mounting_type_id": self.env['sf.multi_mounting.type'].search(
[('code', '=', item['multi_mounting_type_code'])]).id,
"brand_id": self.env['sf.machine.brand'].search([('code', '=', item['brand_code'])]).id,
"manufacturer_model_number": item['manufacturer_model_number'],
"clamping_way": item['clamping_way'],
"port_type": item['port_type'],
"model_file": '' if not item['model_file'] else base64.b64decode(item['model_file']),
@@ -1664,6 +1681,7 @@ class SyncFixtureModel(models.Model):
"multi_mounting_type_id": self.env['sf.multi_mounting.type'].search(
[('code', '=', item['multi_mounting_type_code'])]).id,
"brand_id": self.env['sf.machine.brand'].search([('code', '=', item['brand_code'])]).id,
"manufacturer_model_number": item['manufacturer_model_number'],
"clamping_way": item['clamping_way'],
"port_type": item['port_type'],
"model_file": '' if not item['model_file'] else base64.b64decode(item['model_file']),
@@ -1693,6 +1711,7 @@ class SyncFixtureModel(models.Model):
"multi_mounting_type_id": self.env['sf.multi_mounting.type'].search(
[('code', '=', item['multi_mounting_type_code'])]).id,
"brand_id": self.env['sf.machine.brand'].search([('code', '=', item['brand_code'])]).id,
"manufacturer_model_number": item['manufacturer_model_number'],
"clamping_way": item['clamping_way'],
"port_type": item['port_type'],
"model_file": '' if not item['model_file'] else base64.b64decode(item['model_file']),
@@ -1746,11 +1765,13 @@ class SyncFunctionalFixtureType(models.Model):
"name": item['name'],
"code": item['code'],
"remark": item['remark'],
"active": item['active'],
})
else:
functional_fixture_type.write({
"name": item['name'],
"remark": item['remark'],
"active": item['active'],
})
else:
raise ValidationError("认证未通过")
@@ -1777,11 +1798,14 @@ class SyncFunctionalFixtureType(models.Model):
self.env['sf.functional.fixture.type'].create({
"name": item['name'],
"code": item['code'],
"remark": item['remark'],
"active": item['active'],
})
else:
functional_fixture_type.write({
"name": item['name'],
"remark": item['remark'],
"active": item['active'],
})
else:
raise ValidationError("认证未通过")

File diff suppressed because it is too large Load Diff

View File

@@ -5,105 +5,283 @@ from odoo import fields, models, api
# class FunctionalCuttingToolEntity(models.Model):
# _name = 'sf.functional.cutting.tool.entity'
# _inherit = 'sf.functional.cutting.tool'
# _inherits = {'sf.functional.cutting.tool': 'sf_functional_cutting_tool_entity_id'}
# _description = '功能刀具管理'
class FunctionalCuttingToolEntity(models.Model):
_name = 'sf.functional.cutting.tool.entity'
_description = '功能刀具管理'
_inherits = {'sf.functional.cutting.tool': 'sf_functional_cutting_tool_entity_id'}
_description = '功能刀具列表'
code = fields.Char('编码')
name = fields.Char('名称')
mrs_cutting_tool_type_id = fields.Many2one('sf.functional.cutting.tool.model', string='功能刀具类型')
mrs_cutting_tool_model_id = fields.Many2one('sf.cutting.tool.model', string='刀具型号')
# 整体式刀具型号
mrs_cutting_tool_integral_model_ids = fields.Many2many('sf.cutting.tool.model',
'sf_functional_cutting_tool_entity_id',
string='整体式刀具型号', domain=
[('mrs_cutting_tool_material_name', '=', '整体式刀具')])
# 刀片型号
mrs_cutting_tool_blade_model_ids = fields.Many2many('sf.cutting.tool.model', 'sf_functional_cutting_tool_entity_id',
string='刀片型号', domain=
[('mrs_cutting_tool_material_name', '=', '刀片')])
# 刀杆型号
mrs_cutting_tool_cutterbar_model_ids = fields.Many2many('sf.cutting.tool.model',
'sf_functional_cutting_tool_entity_id',
string='刀杆型号', domain=
[('mrs_cutting_tool_material_name', '=', '刀杆')])
# 刀盘型号
mrs_cutting_tool_cutterpad_model_ids = fields.Many2many('sf.cutting.tool.model',
'sf_functional_cutting_tool_entity_id',
string='刀盘型号', domain=
[('mrs_cutting_tool_material_name', '=', '刀盘')])
# 刀柄型号
mrs_cutting_tool_cutterhandle_model_ids = fields.Many2many('sf.cutting.tool.model',
'sf_functional_cutting_tool_entity_id',
string='刀柄型号', domain=
[('mrs_cutting_tool_material_name', '=', '刀柄')])
# 夹头型号
mrs_cutting_tool_cutterhead_model_ids = fields.Many2many('sf.cutting.tool.model',
'sf_functional_cutting_tool_entity_id',
string='夹头型号', domain=
[('mrs_cutting_tool_material_name', '=', '夹头')])
diameter = fields.Float('直径(mm)')
tool_grade = fields.Selection([('1', 'P1'), ('2', 'P2'), ('3', 'P3'), ('4', 'P4'), ('5', 'P5'), ('6', 'P6')],
string='刀具等级')
machining_accuracy = fields.Float('加工精度(mm)')
tool_length = fields.Float('装刀长')
blade_number = fields.Integer('刃数')
integral_blade_length = fields.Float('整体刃长(mm)')
effective_blade_length = fields.Float('有效刃长(mm)')
max_life = fields.Float('最大寿命值')
is_standard = fields.Boolean('是否标准刀')
applicable_range = fields.Char('适用范围')
image = fields.Binary('图片')
def _get_functional_tool_model_ids(self, functional_tool_model_code):
functional_tool_model_ids = []
for item in functional_tool_model_code:
functional_tool_model = self.env['sf.cutting.tool.model'].search([('code', '=', item)])
functional_tool_model_ids.append(functional_tool_model.id)
return [(6, 0, functional_tool_model_ids)]
class FunctionalToolWarning(models.Model):
_name = 'sf.functional.tool.warning'
_description = '功能刀具预警'
functional_cutting_tool_id = fields.Many2one('sf.functional.cutting.tool.entity', '功能刀具', readonly=True)
code = fields.Char('编码', readonly=True)
name = fields.Char('名称', invisible=True, readonly=True)
mrs_cutting_tool_type_id = fields.Many2one('sf.functional.cutting.tool.model', string='功能刀具类型', readonly=True)
# 整体式刀具型号
mrs_cutting_tool_integral_model_ids = fields.Many2many('sf.cutting.tool.model',
'sf_functional_tool_warning_id',
string='整体式刀具型号', readonly=True, domain=
[('mrs_cutting_tool_material_name', '=', '整体式刀具')])
# 刀片型号
mrs_cutting_tool_blade_model_ids = fields.Many2many('sf.cutting.tool.model',
'sf_functional_tool_warning_id',
string='刀片型号', readonly=True, domain=
[('mrs_cutting_tool_material_name', '=', '刀片')])
# 刀杆型号
mrs_cutting_tool_cutterbar_model_ids = fields.Many2many('sf.cutting.tool.model',
'sf_functional_tool_warning_id',
string='刀杆型号', readonly=True, domain=
[('mrs_cutting_tool_material_name', '=', '刀杆')])
# 刀盘型号
mrs_cutting_tool_cutterpad_model_ids = fields.Many2many('sf.cutting.tool.model',
'sf_functional_tool_warning_id',
string='刀盘型号', readonly=True, domain=
[('mrs_cutting_tool_material_name', '=', '刀盘')])
# 刀柄型号
mrs_cutting_tool_cutterhandle_model_ids = fields.Many2many('sf.cutting.tool.model',
'sf_functional_tool_warning_id',
string='刀柄型号', readonly=True, domain=
[('mrs_cutting_tool_material_name', '=', '刀柄')])
# 夹头型号
mrs_cutting_tool_cutterhead_model_ids = fields.Many2many('sf.cutting.tool.model',
'sf_functional_tool_warning_id',
string='夹头型号', readonly=True, domain=
[('mrs_cutting_tool_material_name', '=', '夹头')])
diameter = fields.Float('直径(mm)', readonly=True)
tool_grade = fields.Selection([('1', 'P1'), ('2', 'P2'), ('3', 'P3'), ('4', 'P4'), ('5', 'P5'), ('6', 'P6')],
string='刀具等级', readonly=True)
machining_accuracy = fields.Float('加工精度(mm)', readonly=True)
tool_length = fields.Float('装刀长', readonly=True)
blade_number = fields.Integer('刃数', readonly=True)
integral_blade_length = fields.Float('整体刃长(mm)', readonly=True)
effective_blade_length = fields.Float('有效刃长(mm)', readonly=True)
max_life = fields.Float('最大寿命值', readonly=True)
is_standard = fields.Boolean('是否标准刀', readonly=True)
applicable_range = fields.Char('适用范围', readonly=True)
image = fields.Binary('图片', readonly=True)
# 新添加的关联到原模型的字段
sf_functional_cutting_tool_entity_id = fields.Many2one('sf.functional.cutting.tool', ondelete='cascade')
order = fields.Char(string='')
functional_cutting_tool_id = fields.Char(string='功能刀具', invisible=True)
# 功能刀具预警 特有字段
install_tool_time = fields.Char("装刀时间")
outbound_time = fields.Char('出库时间')
on_board_time = fields.Char('上机时间')
machine_tool_code = fields.Char('机台号')
cutting_tool_code = fields.Char('刀位号')
idle_time = fields.Char('闲置时长')
alarm_value = fields.Char('报警值')
used_value = fields.Char('已使用值')
alarm_type = fields.Char('报警类型')
alarm_time = fields.Char('报警时间')
dispose_user = fields.Char('处理人')
dispose_time = fields.Char('处理时间')
dispose_func = fields.Char('处理方法/措施')
remark = fields.Char('备注')
install_tool_time = fields.Char("装刀时间", readonly=True)
outbound_time = fields.Char('出库时间', readonly=True)
on_board_time = fields.Char('上机时间', readonly=True)
machine_tool_code = fields.Char('机台号', readonly=True)
cutting_tool_code = fields.Char('刀位号', readonly=True)
idle_time = fields.Char('闲置时长', readonly=True)
alarm_value = fields.Char('报警值', readonly=True)
used_value = fields.Char('已使用值', readonly=True)
alarm_type = fields.Char('报警类型', readonly=True)
alarm_time = fields.Char('报警时间', readonly=True)
dispose_user = fields.Char('处理人', readonly=True)
dispose_time = fields.Char('处理时间', readonly=True)
dispose_func = fields.Char('处理方法/措施', readonly=True)
remark = fields.Char('备注', readonly=True)
# 功能刀具出入库记录 特有字段
thickness = fields.Selection([('1', ''), ('2', ''), ('3', '')], string='粗/中/精')
max_life_span = fields.Char(string='最大寿命值')
# alarm_value = fields.Char(string='报警值')
# used_value = fields.Char(string='已使用值')
current_state = fields.Char(string='当前状态')
current_store_area = fields.Char(string='当前库区')
current_store_place = fields.Char(string='当前库位')
number = fields.Integer(string='数量')
reason_application = fields.Char(string='申请原因')
applicant = fields.Char(string='申请人')
return_staff = fields.Char(string='归还人')
return_time = fields.Date(string='归还入库时间')
tool_state = fields.Char(string="刀具状态")
tool_install_staff = fields.Char(string='装刀人')
tool_install_time = fields.Datetime(string='装刀时间')
receive_equipment = fields.Char(string='领用机台')
receive_staff = fields.Char(string='领用人')
receive_time = fields.Char(string='领用出库时间')
# remark = fields.Text(string='备注/说明')
@api.onchange('functional_cutting_tool_id')
def onchange_functional_cutting_tool_id(self):
print(self.functional_cutting_tool_id.name)
class RealTimeDistributionOfFunctionalTools(models.Model):
_name = 'sf.real.time.distribution.of.functional.tools'
_description = '功能刀具实时分布'
functional_cutting_tool_id = fields.Many2one('sf.functional.cutting.tool.entity', '功能刀具', readonly=True)
code = fields.Char('编码', readonly=True)
name = fields.Char('名称', invisible=True, readonly=True)
mrs_cutting_tool_type_id = fields.Many2one('sf.functional.cutting.tool.model', string='功能刀具类型', readonly=True)
# 整体式刀具型号
mrs_cutting_tool_integral_model_ids = fields.Many2many('sf.cutting.tool.model',
'sf_real_time_distribution_of_functional_tools_id',
string='整体式刀具型号', readonly=True, domain=
[('mrs_cutting_tool_material_name', '=', '整体式刀具')])
# 刀片型号
mrs_cutting_tool_blade_model_ids = fields.Many2many('sf.cutting.tool.model',
'sf_real_time_distribution_of_functional_tools_id',
string='刀片型号', readonly=True, domain=
[('mrs_cutting_tool_material_name', '=', '刀片')])
# 刀杆型号
mrs_cutting_tool_cutterbar_model_ids = fields.Many2many('sf.cutting.tool.model',
'sf_real_time_distribution_of_functional_tools_id',
string='刀杆型号', readonly=True, domain=
[('mrs_cutting_tool_material_name', '=', '刀杆')])
# 刀盘型号
mrs_cutting_tool_cutterpad_model_ids = fields.Many2many('sf.cutting.tool.model',
'sf_real_time_distribution_of_functional_tools_id',
string='刀盘型号', readonly=True, domain=
[('mrs_cutting_tool_material_name', '=', '刀盘')])
# 刀柄型号
mrs_cutting_tool_cutterhandle_model_ids = fields.Many2many('sf.cutting.tool.model',
'sf_real_time_distribution_of_functional_tools_id',
string='刀柄型号', readonly=True, domain=
[('mrs_cutting_tool_material_name', '=', '刀柄')])
# 夹头型号
mrs_cutting_tool_cutterhead_model_ids = fields.Many2many('sf.cutting.tool.model',
'sf_real_time_distribution_of_functional_tools_id',
string='夹头型号', readonly=True, domain=
[('mrs_cutting_tool_material_name', '=', '夹头')])
diameter = fields.Float('直径(mm)', readonly=True)
tool_grade = fields.Selection([('1', 'P1'), ('2', 'P2'), ('3', 'P3'), ('4', 'P4'), ('5', 'P5'), ('6', 'P6')],
string='刀具等级', readonly=True)
machining_accuracy = fields.Float('加工精度(mm)', readonly=True)
tool_length = fields.Float('装刀长', readonly=True)
blade_number = fields.Integer('刃数', readonly=True)
integral_blade_length = fields.Float('整体刃长(mm)', readonly=True)
effective_blade_length = fields.Float('有效刃长(mm)', readonly=True)
max_life = fields.Float('最大寿命值', readonly=True)
is_standard = fields.Boolean('是否标准刀', readonly=True)
applicable_range = fields.Char('适用范围', readonly=True)
image = fields.Binary('图片', readonly=True)
# 功能刀具实时分布
tool_stock_num = fields.Text(string='刀具房库存数量')
side_shelf_num = fields.Text(string='线边货架货架数量')
on_tool_stock_num = fields.Text(string='机内刀库库存数量')
tool_stock_total = fields.Text(string='合计')
return_reuse_num_re = fields.Text(string='归还再用数量(精)')
return_reuse_num_co = fields.Text(string='归还再用数量(粗)')
return_processing_num = fields.Text(string='归还需磨削数量')
return_total = fields.Text(string='合计')
total = fields.Text(string='总计')
tool_stock_num = fields.Char(string='刀具房库存数量', readonly=True)
side_shelf_num = fields.Char(string='线边货架货架数量', readonly=True)
on_tool_stock_num = fields.Char(string='机内刀库库存数量', readonly=True)
tool_stock_total = fields.Char(string='合计', readonly=True)
return_reuse_num_re = fields.Char(string='归还再用数量(精)', readonly=True)
return_reuse_num_co = fields.Char(string='归还再用数量(粗)', readonly=True)
return_processing_num = fields.Char(string='归还需磨削数量', readonly=True)
return_total = fields.Char(string='合计', readonly=True)
total = fields.Char(string='总计', readonly=True)
remark = fields.Char(string='备注/说明', readonly=True)
# remark = fields.Char(string='备注/说明')
# @api.onchange('functional_cutting_tool_id')
# def get_functional_cutting_tool_info(self):
# for item in self:
# item.code = item.functional_cutting_tool_id.code,
# item.name = item.functional_cutting_tool_id.name,
# item.functional_model_number = item.functional_cutting_tool_id.functional_model_number,
# item.integral_model_number = item.functional_cutting_tool_id.integral_model_number,
# item.blade_model_number = item.functional_cutting_tool_id.blade_model_number,
# item.cutterbar_model_number = item.functional_cutting_tool_id.cutterbar_model_number,
# item.cutterpad_model_number = item.functional_cutting_tool_id.cutterpad_model_number,
# item.handle_model_number = item.functional_cutting_tool_id.handle_model_number,
# item.chuck_model_number = item.functional_cutting_tool_id.chuck_model_number,
# item.diameter = item.functional_cutting_tool_id.diameter,
# item.tool_grade = item.functional_cutting_tool_id.tool_grade,
# item.machining_accuracy = item.functional_cutting_tool_id.machining_accuracy,
# item.ctool_lengthode = item.functional_cutting_tool_id.tool_length,
# item.blade_number = item.functional_cutting_tool_id.blade_number,
# item.integral_blade_length = item.functional_cutting_tool_id.integral_blade_length,
# item.effective_blade_length = item.functional_cutting_tool_id.effective_blade_length,
# item.max_life = item.functional_cutting_tool_id.max_life,
# item.is_standard = item.functional_cutting_tool_id.is_standard,
# item.applicable_range = item.functional_cutting_tool_id.applicable_range,
class InboundAndOutboundRecordsOfFunctionalTools(models.Model):
_name = 'sf.inbound.and.outbound.records.of.functional.tools'
_description = '功能刀具出入库记录'
@api.model
def create(self, vals):
functional_cutting_tool_id = fields.Many2one('sf.functional.cutting.tool.entity', '功能刀具', readonly=True)
code = fields.Char('编码', readonly=True)
name = fields.Char('名称', invisible=True, readonly=True)
mrs_cutting_tool_type_id = fields.Many2one('sf.functional.cutting.tool.model', string='功能刀具类型', readonly=True)
if not vals.get('order'):
vals['order'] = self._generate_code()
return super(FunctionalCuttingToolEntity, self).create(vals)
# 整体式刀具型号
mrs_cutting_tool_integral_model_ids = fields.Many2many('sf.cutting.tool.model',
'sf_inbound_and_outbound_records_of_functional_tools_id',
string='整体式刀具型号', readonly=True, domain=
[('mrs_cutting_tool_material_name', '=', '整体式刀具')])
# 刀片型号
mrs_cutting_tool_blade_model_ids = fields.Many2many('sf.cutting.tool.model',
'sf_inbound_and_outbound_records_of_functional_tools_id',
string='刀片型号', readonly=True, domain=
[('mrs_cutting_tool_material_name', '=', '刀片')])
# 刀杆型号
mrs_cutting_tool_cutterbar_model_ids = fields.Many2many('sf.cutting.tool.model',
'sf_inbound_and_outbound_records_of_functional_tools_id',
string='刀杆型号', readonly=True, domain=
[('mrs_cutting_tool_material_name', '=', '刀杆')])
# 刀盘型号
mrs_cutting_tool_cutterpad_model_ids = fields.Many2many('sf.cutting.tool.model',
'sf_inbound_and_outbound_records_of_functional_tools_id',
string='刀盘型号', readonly=True, domain=
[('mrs_cutting_tool_material_name', '=', '刀盘')])
# 刀柄型号
mrs_cutting_tool_cutterhandle_model_ids = fields.Many2many('sf.cutting.tool.model',
'sf_inbound_and_outbound_records_of_functional_tools_id',
string='刀柄型号', readonly=True, domain=
[('mrs_cutting_tool_material_name', '=', '刀柄')])
# 夹头型号
mrs_cutting_tool_cutterhead_model_ids = fields.Many2many('sf.cutting.tool.model',
'sf_inbound_and_outbound_records_of_functional_tools_id',
string='夹头型号', readonly=True, domain=
[('mrs_cutting_tool_material_name', '=', '夹头')])
@api.model
def _generate_code(self):
last_tool = self.search([], order='id desc', limit=1)
if last_tool:
last_code = int(last_tool.code.split('-')[-1])
new_code = '{:03d}'.format(last_code + 1)
else:
new_code = '001'
return new_code
diameter = fields.Float('直径(mm)', readonly=True)
tool_grade = fields.Selection([('1', 'P1'), ('2', 'P2'), ('3', 'P3'), ('4', 'P4'), ('5', 'P5'), ('6', 'P6')],
string='刀具等级', readonly=True)
machining_accuracy = fields.Float('加工精度(mm)', readonly=True)
tool_length = fields.Float('装刀长', readonly=True)
blade_number = fields.Integer('刃数', readonly=True)
integral_blade_length = fields.Float('整体刃长(mm)', readonly=True)
effective_blade_length = fields.Float('有效刃长(mm)', readonly=True)
max_life = fields.Float('最大寿命值', readonly=True)
is_standard = fields.Boolean('是否标准刀', readonly=True)
applicable_range = fields.Char('适用范围', readonly=True)
image = fields.Binary('图片', readonly=True)
# 功能刀具出入库记录 特有字段
thickness = fields.Selection([('1', ''), ('2', ''), ('3', '')], string='粗/中/精', readonly=True)
max_life_span = fields.Char(string='最大寿命值', readonly=True)
alarm_value = fields.Char(string='报警值', readonly=True)
used_value = fields.Char(string='已使用值', readonly=True)
current_state = fields.Char(string='当前状态', readonly=True)
current_store_area = fields.Char(string='当前库区', readonly=True)
current_store_place = fields.Char(string='当前库位', readonly=True)
number = fields.Integer(string='数量', readonly=True)
reason_application = fields.Char(string='申请原因', readonly=True)
applicant = fields.Char(string='申请人', readonly=True)
return_staff = fields.Char(string='归还人', readonly=True)
return_time = fields.Date(string='归还入库时间', readonly=True)
tool_state = fields.Char(string="刀具状态", readonly=True)
tool_install_staff = fields.Char(string='装刀人', readonly=True)
tool_install_time = fields.Datetime(string='装刀时间', readonly=True)
receive_equipment = fields.Char(string='领用机台', readonly=True)
receive_staff = fields.Char(string='领用人', readonly=True)
receive_time = fields.Char(string='领用出库时间', readonly=True)
remark = fields.Text(string='备注/说明', readonly=True)
class MachineTableToolChangingApply(models.Model):
@@ -116,34 +294,34 @@ class MachineTableToolChangingApply(models.Model):
# string='换刀需求信息',
# attrs="{'invisible': 1}")
name = fields.Char(string='CNC机床')
name = fields.Char(string='CNC机床', readonly="True")
# todo 机床类型和刀位号 为 Many2one
machine_table_type = fields.Char(string='机床类型')
machine_table_type = fields.Char(string='机床类型', readonly="True")
machine_tool_code = fields.Char(string='机台号', attrs="{'invisible': 1}")
cutter_spacing_code = fields.Char(string='刀位号')
functional_tool_code = fields.Char(string='功能刀具编码')
functional_tool_name = fields.Char(string='功能刀具名称')
cutter_spacing_code = fields.Char(string='刀位号', readonly="True")
functional_tool_code = fields.Char(string='功能刀具编码', readonly="True")
functional_tool_name = fields.Char(string='功能刀具名称', readonly="True")
# todo 功能刀具类型为 Many2one
functional_tool_type = fields.Char(string='功能刀具类型')
diameter = fields.Char(string='直径')
coarse_middle_thin = fields.Selection([("1", ""), ('2', ''), ('3', '')], string='粗/中/精')
hilt_name = fields.Char(string='刀柄名称')
hilt_code = fields.Char(string='刀柄编号')
max_lifetime_value = fields.Char(string='最大寿命值')
alarm_value = fields.Char(string='报警值')
used_value = fields.Char(string='已使用值')
functional_tool_status = fields.Selection([('正常', '正常'), ('异常', '异常')], string='功能刀具状态', default='正常')
functional_tool_type = fields.Char(string='功能刀具类型', readonly="True")
diameter = fields.Char(string='直径', readonly="True")
coarse_middle_thin = fields.Selection([("1", ""), ('2', ''), ('3', '')], string='粗/中/精', readonly="True")
hilt_name = fields.Char(string='刀柄名称', readonly="True")
hilt_code = fields.Char(string='刀柄编号', readonly="True")
max_lifetime_value = fields.Char(string='最大寿命值', readonly="True")
alarm_value = fields.Char(string='报警值', readonly="True")
used_value = fields.Char(string='已使用值', readonly="True")
functional_tool_status = fields.Selection([('正常', '正常'), ('异常', '异常')], string='功能刀具状态', default='正常', readonly="True")
replacement_tool_code = fields.Char(string='待换刀具编码')
replacement_tool_name = fields.Char(string='待换刀具名称')
replacement_tool_type = fields.Char(string='待换刀具类型')
replacement_tool_code = fields.Char(string='待换刀具编码', readonly="True")
replacement_tool_name = fields.Char(string='待换刀具名称', readonly="True")
replacement_tool_type = fields.Char(string='待换刀具类型', readonly="True")
replacement_tool_coarse_middle_thin = fields.Selection([("1", ""), ('2', ''), ('3', '')],
string='粗/中/精')
new_former = fields.Selection([('0', ''), ('1', '')], string='新/旧')
applicant = fields.Char(string='申请人')
used_tool_time = fields.Datetime(string='用刀时间')
reason_for_applying = fields.Char(string='申请原因')
remark = fields.Char(string='备注说明')
string='粗/中/精', readonly="True")
new_former = fields.Selection([('0', ''), ('1', '')], string='新/旧', readonly="True")
applicant = fields.Char(string='申请人', readonly="True")
used_tool_time = fields.Datetime(string='用刀时间', readonly="True")
reason_for_applying = fields.Char(string='申请原因', readonly="True")
remark = fields.Char(string='备注说明', readonly="True")
status = fields.Selection([('0', '未操作'), ('1', '已换刀申请'), ('2', '已转移')], string='操作状态', default='0')
@@ -240,27 +418,28 @@ class CAMWorkOrderProgramKnifePlan(models.Model):
_name = 'sf.cam.work.order.program.knife.plan'
_description = 'CAM工单程序用刀计划'
name = fields.Char(string='工单任务编号')
cam_procedure_code = fields.Char(string='CAM程序编号')
cam_cutter_spacing_code = fields.Char(string='CAM刀位号')
functional_tool_code = fields.Char(string='功能刀具编码')
functional_tool_name = fields.Char(string='功能刀具名称')
functional_tool_type = fields.Char(string='功能刀具类型')
machine_table_name = fields.Char(string='机床名称')
machine_tool_cutter_spacing_code = fields.Char(string='机床刀位号')
diameter = fields.Char(string='直径(程式)')
tool_loading_length = fields.Char(string='装刀长')
clearance_length = fields.Char(string='避空长')
tool_included_angle = fields.Char(string='刀尖角R角')
L_D = fields.Char(string='L/D')
coarse_middle_thin = fields.Selection([("1", ""), ('2', ''), ('3', '')], string='粗/中/精')
required_cutting_time = fields.Char(string='需要切割时间')
whether_standard_tool = fields.Boolean(string='是否标准刀')
need_knife_time = fields.Datetime(string='需要用刀时间')
plan_execute_status = fields.Selection([('0', '待下发'), ('1', '执行中'), ('2', '已完成')], string='计划执行状态', default='0')
applicant = fields.Char(string='申请人')
reason_for_applying = fields.Char(string='申请原因')
remark = fields.Char(string='备注说明')
name = fields.Char(string='工单任务编号', readonly=True)
cam_procedure_code = fields.Char(string='CAM程序编号', readonly=True)
cam_cutter_spacing_code = fields.Char(string='CAM刀位号', readonly=True)
functional_tool_code = fields.Char(string='功能刀具编码', readonly=True)
functional_tool_name = fields.Char(string='功能刀具名称', readonly=True)
functional_tool_type = fields.Char(string='功能刀具类型', readonly=True)
machine_table_name = fields.Char(string='机床名称', readonly=True)
machine_tool_cutter_spacing_code = fields.Char(string='机床刀位号', readonly=True)
diameter = fields.Char(string='直径(程式)', readonly=True)
tool_loading_length = fields.Char(string='装刀长', readonly=True)
clearance_length = fields.Char(string='避空长', readonly=True)
tool_included_angle = fields.Char(string='刀尖角R角', readonly=True)
L_D = fields.Char(string='L/D', readonly=True)
coarse_middle_thin = fields.Selection([("1", ""), ('2', ''), ('3', '')], string='粗/中/精', readonly=True)
required_cutting_time = fields.Char(string='需要切割时间', readonly=True)
whether_standard_tool = fields.Boolean(string='是否标准刀', readonly=True)
need_knife_time = fields.Datetime(string='需要用刀时间', readonly=True)
plan_execute_status = fields.Selection([('0', '待下发'), ('1', '执行中'), ('2', '已完成')],
string='计划执行状态', default='0', readonly=True)
applicant = fields.Char(string='申请', readonly=True)
reason_for_applying = fields.Char(string='申请原因', readonly=True)
remark = fields.Char(string='备注说明', readonly=True)
def automation_apply_for_tooling(self):
"""
@@ -309,44 +488,45 @@ class FunctionalToolAssembly(models.Model):
_description = '功能刀具组装'
_order = 'use_tool_time asc'
functional_tool_code = fields.Char(string='功能刀具编码')
name = fields.Char(string='功能刀具名称')
functional_tool_type = fields.Char(string='功能刀具类型')
functional_tool_diameter = fields.Char(string='功能刀具直径')
functional_tool_length = fields.Char(string='功能刀具伸出长')
functional_tool_cutting_type = fields.Char(string='功能刀具切削类型')
functional_tool_code = fields.Char(string='功能刀具编码', readonly=True)
name = fields.Char(string='功能刀具名称', readonly=True)
functional_tool_type = fields.Char(string='功能刀具类型', readonly=True)
functional_tool_diameter = fields.Char(string='功能刀具直径', readonly=True)
functional_tool_length = fields.Char(string='功能刀具伸出长', readonly=True)
functional_tool_cutting_type = fields.Char(string='功能刀具切削类型', readonly=True)
tool_name = fields.Char(string='刀具名称')
tool_brand = fields.Char(string='品牌')
tool_type = fields.Char(string='型号')
knife_handle_name = fields.Char(string='刀柄名称')
knife_handle_brand = fields.Char(string='品牌')
knife_handle_type = fields.Char(string='型号')
coarse_middle_thin = fields.Selection([("1", ""), ('2', ''), ('3', '')], string='粗/中/精')
tool_loading_length = fields.Char(string='装刀长')
new_former = fields.Selection([('0', ''), ('1', '')], string='新/旧')
reference_length = fields.Char(string='参考伸出长')
cut_time = fields.Char(string='已切削时间')
cut_length = fields.Char(string='已切削长度')
cut_number = fields.Char(string='已切削次数')
tool_name = fields.Char(string='刀具名称', readonly=True)
tool_brand = fields.Char(string='品牌', readonly=True)
tool_type = fields.Char(string='型号', readonly=True)
knife_handle_name = fields.Char(string='刀柄名称', readonly=True)
knife_handle_brand = fields.Char(string='品牌', readonly=True)
knife_handle_type = fields.Char(string='型号', readonly=True)
coarse_middle_thin = fields.Selection([("1", ""), ('2', ''), ('3', '')], string='粗/中/精', readonly=True)
tool_loading_length = fields.Char(string='装刀长', readonly=True)
new_former = fields.Selection([('0', ''), ('1', '')], string='新/旧', readonly=True)
reference_length = fields.Char(string='参考伸出长', readonly=True)
cut_time = fields.Char(string='已切削时间', readonly=True)
cut_length = fields.Char(string='已切削长度', readonly=True)
cut_number = fields.Char(string='已切削次数', readonly=True)
loading_task_source = fields.Selection([('0', 'CAM装刀'), ('1', '机台换刀')], string='装刀任务来源')
applicant = fields.Char(string='申请人')
reason_for_applying = fields.Char(string='申请原因')
apply_time = fields.Datetime(string='申请时间', default=fields.Datetime.now())
assemble_status = fields.Selection([('0', '待组装'), ('1', '已组装'), ('2', '已出库')],string='组装状态', default='0')
use_tool_time = fields.Datetime(string='用刀时间')
production_line_name = fields.Char(string='产线名称')
machine_tool_name = fields.Char(string='机床名称')
machine_tool_code = fields.Char(string='机台号')
cutter_spacing_code = fields.Char(string='刀位号')
tool_loading_person = fields.Char(string='装刀人')
tool_loading_time = fields.Datetime(string='装刀时间')
receive_person = fields.Char(string='领用人')
receive_time = fields.Datetime(string='领用出库时间')
remark = fields.Char(string='备注说明')
loading_task_source = fields.Selection([('0', 'CAM装刀'), ('1', '机台换刀')], string='装刀任务来源', readonly=True)
applicant = fields.Char(string='申请人', readonly=True)
reason_for_applying = fields.Char(string='申请原因', readonly=True)
apply_time = fields.Datetime(string='申请时间', default=fields.Datetime.now(), readonly=True)
assemble_status = fields.Selection([('0', '待组装'), ('1', '已组装'), ('2', '已出库')],string='组装状态', default='0', readonly=True)
use_tool_time = fields.Datetime(string='用刀时间', readonly=True)
production_line_name = fields.Char(string='产线名称', readonly=True)
machine_tool_name = fields.Char(string='机床名称', readonly=True)
machine_tool_code = fields.Char(string='机台号', readonly=True)
cutter_spacing_code = fields.Char(string='刀位号', readonly=True)
check_box_1 = fields.Boolean(string='复选框', default=False)
tool_loading_person = fields.Char(string='装刀人', readonly=True)
tool_loading_time = fields.Datetime(string='装刀时间', readonly=True)
receive_person = fields.Char(string='领用人', readonly=True)
receive_time = fields.Datetime(string='领用出库时间', readonly=True)
remark = fields.Char(string='备注说明', readonly=True)
check_box_1 = fields.Boolean(string='复选框', default=False, readonly=True)
@api.onchange('assemble_status')
def check_box(self):

View File

@@ -1,5 +1,9 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_sf_functional_cutting_tool_entity,sf.functional.cutting.tool.entity,model_sf_functional_cutting_tool_entity,base.group_user,1,1,1,1
access_sf.functional.tool.warning,sf.functional.tool.warning,model_sf_functional_tool_warning,base.group_user,1,0,1,0
access_sf.real.time.distribution.of.functional.tools,sf.real.time.distribution.of.functional.tools,model_sf_real_time_distribution_of_functional_tools,base.group_user,1,0,1,0
access_sf.inbound.and.outbound.records.of.functional.tools,sf.inbound.and.outbound.records.of.functional.tools,model_sf_inbound_and_outbound_records_of_functional_tools,base.group_user,1,0,1,0
access_sf_cam_work_order_program_knife_plan,sf.cam.work.order.program.knife.plan,model_sf_cam_work_order_program_knife_plan,base.group_user,1,1,1,1
access_sf_machine_table_tool_changing_apply,sf.machine.table.tool.changing.apply,model_sf_machine_table_tool_changing_apply,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 access_sf_functional_cutting_tool_entity sf.functional.cutting.tool.entity model_sf_functional_cutting_tool_entity base.group_user 1 1 1 1
3 access_sf.functional.tool.warning sf.functional.tool.warning model_sf_functional_tool_warning base.group_user 1 0 1 0
4 access_sf.real.time.distribution.of.functional.tools sf.real.time.distribution.of.functional.tools model_sf_real_time_distribution_of_functional_tools base.group_user 1 0 1 0
5 access_sf.inbound.and.outbound.records.of.functional.tools sf.inbound.and.outbound.records.of.functional.tools model_sf_inbound_and_outbound_records_of_functional_tools base.group_user 1 0 1 0
6 access_sf_cam_work_order_program_knife_plan sf.cam.work.order.program.knife.plan model_sf_cam_work_order_program_knife_plan base.group_user 1 1 1 1
7 access_sf_cam_work_order_program_knife_plan access_sf_machine_table_tool_changing_apply sf.cam.work.order.program.knife.plan sf.machine.table.tool.changing.apply model_sf_cam_work_order_program_knife_plan model_sf_machine_table_tool_changing_apply base.group_user 1 1 1 1
8 access_sf_machine_table_tool_changing_apply access_sf_tool_change_requirement_information sf.machine.table.tool.changing.apply sf.tool.change.requirement.information model_sf_machine_table_tool_changing_apply model_sf_tool_change_requirement_information base.group_user 1 1 1 1
9 access_sf_tool_change_requirement_information access_sf_tool_transfer_request_information sf.tool.change.requirement.information sf.tool.transfer.request.information model_sf_tool_change_requirement_information model_sf_tool_transfer_request_information base.group_user 1 1 1 1

View File

@@ -17,18 +17,18 @@
<menuitem
id="menu_sf_functional_cutting_tool_warning"
id="menu_sf_functional_tool_warning"
parent="menu_sf_tool_manage"
name="功能刀具预警"
sequence="5"
action="action_sf_functional_cutting_tool_warning"
action="action_sf_functional_tool_warning"
/>
<menuitem
sequence="6"
name="功能刀具实时分布"
id="menu_sf_functional_tool_real_time_distribution"
action="sf_functional_tool_real_time_distribution_view_act"
action="sf_real_time_distribution_of_functional_tools_view_act"
parent="menu_sf_tool_manage"
/>
@@ -36,7 +36,7 @@
sequence="10"
name="功能刀具出入库记录"
id="menu_sf_function_tool_entry_exit_records"
action="sf_function_tool_entry_exit_records_view_act"
action="sf_inbound_and_outbound_records_of_functional_tools_view_act"
parent="menu_sf_tool_manage"
/>

File diff suppressed because it is too large Load Diff

View File

@@ -7,14 +7,12 @@
<field name="arch" type="xml">
<form string="换刀需求信息">
<sheet>
<group string="机床信息">
<group string="机床信息" col="3">
<group>
<group>
<field name="name"/>
</group>
<group>
<field name="machine_tool_code"/>
</group>
<field name="name"/>
</group>
<group>
<field name="machine_tool_code"/>
</group>
<group>
<field name="cutter_spacing_code"/>
@@ -39,7 +37,9 @@
</group>
</group>
<group>
<field name="reason_for_applying"/>
<group>
<field name="reason_for_applying"/>
</group>
</group>
</sheet>
<footer>

View File

@@ -1,16 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data>
<record id="view_location_tree2_sf_inherit" model="ir.ui.view">
<field name="name">stock.location.tree.sf.inherit</field>
<field name="model">stock.location</field>
<field name="inherit_id" ref="stock.view_location_tree2"/>
<field name="arch" type="xml">
<xpath expr="//tree/field[@name='complete_name']" position="before">
<field name="barcode"/>
</xpath>
</field>
</record>
<!-- <record id="view_location_tree2_sf_inherit" model="ir.ui.view"> -->
<!-- <field name="name">stock.location.tree.sf.inherit</field> -->
<!-- <field name="model">stock.location</field> -->
<!-- <field name="inherit_id" ref="stock.view_location_tree2"/> -->
<!-- <field name="arch" type="xml"> -->
<!-- <xpath expr="//tree/field[@name='complete_name']" position="before"> -->
<!-- <field name="barcode"/> -->
<!-- </xpath> -->
<!-- </field> -->
<!-- </record> -->
<record id="view_location_form_sf_inherit" model="ir.ui.view">
<field name="name">stock.location.form.sf.inherit</field>
@@ -40,7 +40,7 @@
<field name="shelf_height" attrs="{'invisible': [('hide_shelf', '=', False)], 'required': [('hide_shelf', '!=', False)]}"/>
<field name="shelf_layer" attrs="{'invisible': [('hide_shelf', '=', False)], 'required': [('hide_shelf', '!=', False)]}"/>
<field name="layer_capacity" attrs="{'invisible': [('hide_shelf', '=', False)], 'required': [('hide_shelf', '!=', False)]}"/>
<field name="product_id" attrs="{'invisible': [('hide_location', '=', False)], 'required': [('hide_location', '!=', False), ('location_status', '=', '空闲')]}"/>
<field name="product_id" attrs="{'invisible': [('hide_location', '=', False)], 'required': [('hide_location', '!=', False), ('location_status', '=', '占用')]}"/>
<field name="location_status" attrs="{'invisible': [('hide_location', '=', False)], 'required': [('hide_location', '!=', False)]}"/>
</group>

File diff suppressed because one or more lines are too long