Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into feature/修改设备基础参数
This commit is contained in:
@@ -1,4 +1,2 @@
|
||||
from . import models
|
||||
from . import commons
|
||||
from . import wizard
|
||||
|
||||
|
||||
@@ -18,8 +18,6 @@
|
||||
'views/common_view.xml',
|
||||
'views/fixture_view.xml',
|
||||
'views/functional_fixture_view.xml',
|
||||
'wizard/workpiece_clamping_wizard_view.xml',
|
||||
'wizard/stock_removal_wizard_view.xml',
|
||||
'views/menu_view.xml',
|
||||
"views/tool_views.xml",
|
||||
"views/tool_menu.xml",
|
||||
|
||||
@@ -32,21 +32,18 @@ class FixtureModel(models.Model):
|
||||
clamping_way = fields.Char(string="装夹方式")
|
||||
port_type = fields.Char(string="接口类型")
|
||||
model_file = fields.Binary(string="3D模型图")
|
||||
length = fields.Char(string="长度[mm]")
|
||||
width = fields.Char(string="宽度[mm]")
|
||||
height = fields.Char(string="高度[mm]")
|
||||
weight = fields.Char(string="重量[kg]")
|
||||
clamp_workpiece_length_max = fields.Char(string="夹持工件长度MAX[mm]")
|
||||
clamp_workpiece_width_max = fields.Char(string="夹持工件宽度MAX[mm]")
|
||||
clamp_workpiece_height_max = fields.Char(string="夹持工件高度MAX[mm]")
|
||||
clamp_workpiece_diameter_max = fields.Char(string="夹持工件直径MAX[mm]")
|
||||
maximum_carrying_weight = fields.Char(string="最大承载重量[kg]")
|
||||
maximum_clamping_force = fields.Char(string="最大夹持力[n]")
|
||||
length = fields.Char(string="长度[mm]", size=6)
|
||||
width = fields.Char(string="宽度[mm]", size=6)
|
||||
height = fields.Char(string="高度[mm]", size=6)
|
||||
weight = fields.Char(string="重量[kg]", size=4)
|
||||
clamp_workpiece_length_max = fields.Char(string="夹持工件长度MAX[mm]", size=6)
|
||||
clamp_workpiece_width_max = fields.Char(string="夹持工件宽度MAX[mm]", size=6)
|
||||
clamp_workpiece_height_max = fields.Char(string="夹持工件高度MAX[mm]", size=6)
|
||||
clamp_workpiece_diameter_max = fields.Char(string="夹持工件直径MAX[mm]", size=6)
|
||||
maximum_carrying_weight = fields.Char(string="最大承载重量[kg]", size=4)
|
||||
maximum_clamping_force = fields.Char(string="最大夹持力[n]", size=8)
|
||||
materials_model_id = fields.Many2one('sf.materials.model', string="材料型号")
|
||||
driving_way = fields.Char(string="驱动方式")
|
||||
apply_machine_tool_type = fields.Char(string="适用机床型号")
|
||||
apply_machine_tool_type_id = fields.Many2one('sf.machine_tool.type', string="适用机床型号")
|
||||
through_hole_size = fields.Integer(string="过孔大小[mm]", size=6)
|
||||
screw_size = fields.Integer(string="螺牙大小[mm]", size=6)
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -24,8 +24,6 @@ access_sf_multi_mounting_type,sf_multi_mounting_type,model_sf_multi_mounting_typ
|
||||
access_sf_fixture_model,sf_fixture_model,model_sf_fixture_model,base.group_user,1,1,1,1
|
||||
access_sf_functional_fixture_type,sf_functional_fixture_type,model_sf_functional_fixture_type,base.group_user,1,1,1,1
|
||||
access_sf_functional_fixture,sf_functional_fixture,model_sf_functional_fixture,base.group_user,1,1,1,1
|
||||
access_sf_workpiece_clamping_wizard,sf_workpiece_clamping_wizard,model_sf_workpiece_clamping_wizard,base.group_user,1,1,1,1
|
||||
access_sf_stock_removal_wizard,sf_stock_removal_wizard,model_sf_stock_removal_wizard,base.group_user,1,1,1,1
|
||||
|
||||
|
||||
|
||||
|
||||
|
@@ -239,7 +239,7 @@
|
||||
attrs='{"invisible": [("fixture_material_type","!=",("转接板(锁板)托盘"))]}'/>
|
||||
<field name="driving_way"
|
||||
attrs='{"invisible": [("fixture_material_type","not in",("虎钳托盘","零点卡盘"))]}'/>
|
||||
<field name="apply_machine_tool_type"
|
||||
<field name="apply_machine_tool_type_id"
|
||||
attrs='{"invisible": [("fixture_material_type","!=",("零点卡盘"))]}'/>
|
||||
</group>
|
||||
</group>
|
||||
|
||||
@@ -1,4 +0,0 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
from . import workpiece_clamping_wizard
|
||||
from . import stock_removal_wizard
|
||||
@@ -1,21 +0,0 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
from odoo import models, fields, api, _
|
||||
from odoo.exceptions import ValidationError
|
||||
import logging
|
||||
_logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class StockRemovalWizard(models.Model):
|
||||
_name = 'sf.stock.removal.wizard'
|
||||
_description = "出库"
|
||||
|
||||
code = fields.Char(string="功能夹具编码", size=25, required=True)
|
||||
name = fields.Char(string="功能夹具名称", size=25, required=True)
|
||||
type = fields.Char(string="功能夹具类型", required=True)
|
||||
production_line = fields.Char(string="生产线", required=True)
|
||||
machine_tool = fields.Many2one('sf.machine_tool', string="机床", required=True)
|
||||
|
||||
def submit(self):
|
||||
return 1
|
||||
|
||||
@@ -1,36 +0,0 @@
|
||||
<openerp>
|
||||
<data>
|
||||
<record model="ir.ui.view" id="stock_removal_wizard_form_view">
|
||||
<field name="name">sf.stock.removal.wizard.form.view</field>
|
||||
<field name="model">sf.stock.removal.wizard</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="装夹">
|
||||
<sheet>
|
||||
<group>
|
||||
<group>
|
||||
<field name="code" string="功能夹具编码"></field>
|
||||
<field name="type" string="类型"></field>
|
||||
<field name="machine_tool" string="机台"></field>
|
||||
</group>
|
||||
<group>
|
||||
<field name="name" string="功能夹具名称"></field>
|
||||
<field name="production_line"></field>
|
||||
</group>
|
||||
</group>
|
||||
<footer>
|
||||
<button string="确定" name="submit" type="object" class="oe_highlight"/>
|
||||
<button string="取消" class="btn btn-secondary" special="cancel"/>
|
||||
</footer>
|
||||
</sheet>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="action_stock_removal_wizard" model="ir.actions.act_window">
|
||||
<field name="name">出库</field>
|
||||
<field name="res_model">sf.stock.removal.wizard</field>
|
||||
<field name="view_mode">form</field>
|
||||
<field name="target">new</field>
|
||||
</record>
|
||||
</data>
|
||||
</openerp>
|
||||
@@ -1,56 +0,0 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
from odoo import models, fields, api, _
|
||||
from odoo.exceptions import ValidationError
|
||||
import logging
|
||||
|
||||
_logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class WorkpieceClampingWizard(models.Model):
|
||||
_name = 'sf.workpiece.clamping.wizard'
|
||||
_description = "工件装夹"
|
||||
# 以下为坯料(工件)申请信息
|
||||
apply_code = fields.Char(string="申请坯料编码", size=25, required=True)
|
||||
apply_name = fields.Char(string="申请坯料名称", size=25, required=True)
|
||||
material_id = fields.Many2one('sf.production.materials', string="坯料材料", required=True)
|
||||
apply_width = fields.Float(string="申请宽度", required=True)
|
||||
apply_length = fields.Float(string="申请长度", required=True)
|
||||
apply_height = fields.Float(string="申请高度", required=True)
|
||||
apply_weight = fields.Float(string="申请重量", required=True)
|
||||
apply_diameter = fields.Float(string="申请直径", required=True)
|
||||
surface_accuracy = fields.Char(string="表面精度", required=True)
|
||||
# 以下为坯料(工件)装夹信息
|
||||
chuck_name = fields.Char(string="卡盘名称", required=True)
|
||||
chuck_brand_id = fields.Many2one('sf.machine.brand', string="卡盘品牌", required=True)
|
||||
chuck_type_id = fields.Char(string="卡盘类型", required=True)
|
||||
chuck_model_id = fields.Char(string="卡盘型号", required=True)
|
||||
tray_name = fields.Char(string="托盘名称", required=True)
|
||||
tray_brand_id = fields.Many2one('sf.machine.brand', string="托盘品牌", required=True)
|
||||
tray_type_id = fields.Char(string="托盘类型", required=True)
|
||||
tray_model_id = fields.Char(string="托盘型号", required=True)
|
||||
real_code = fields.Char(string="真实坯料编码", size=25, required=True)
|
||||
real_name = fields.Char(string="真实坯料名称", size=25, required=True)
|
||||
real_width = fields.Float(string="真实宽度", required=True)
|
||||
real_length = fields.Float(string="真实长度", required=True)
|
||||
real_height = fields.Float(string="真实高度", required=True)
|
||||
real_diameter = fields.Float(string="真实直径", required=True)
|
||||
# 以下为坯料(工件)预调信息
|
||||
# hole_site = fields.Char(string="孔位", required=True)
|
||||
# curve = fields.Char(string="曲线", required=True)
|
||||
# straight_line = fields.Char(string="直线", required=True)
|
||||
# x_axis = fields.Float(string="X轴", required=True)
|
||||
# y_axis = fields.Float(string="Y轴", required=True)
|
||||
# z_axis = fields.Float(string="Z轴", required=True)
|
||||
# tool_radius = fields.Float(string="刀具半径", required=True)
|
||||
# tool_length = fields.Float(string="刀具长度", required=True)
|
||||
# tool_offset_point = fields.Float(string="刀具偏移点", required=True)
|
||||
# tool_compensation_value = fields.Float(string="刀具补偿值", required=True)
|
||||
# cutting_spindle_speed = fields.Float(string="切削主轴转速", required=True)
|
||||
# cutting_feed_rate = fields.Float(string="切削进给速度", required=True)
|
||||
# depth_of_cutting = fields.Float(string="切削深度", required=True)
|
||||
# cutting_direction = fields.Char(string="切削方向", required=True)
|
||||
preset_program_information = fields.Char(string="预调程序信息", required=True)
|
||||
|
||||
def submit(self):
|
||||
return 1
|
||||
@@ -1,87 +0,0 @@
|
||||
<openerp>
|
||||
<data>
|
||||
<record model="ir.ui.view" id="workpiece_clamping_wizard_form_view">
|
||||
<field name="name">sf.workpiece.clamping.wizard.form.view</field>
|
||||
<field name="model">sf.workpiece.clamping.wizard</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="装夹">
|
||||
<sheet>
|
||||
<group string="坯料(工件)申请信息">
|
||||
<group>
|
||||
<field name="apply_code" string="坯料编码"></field>
|
||||
<field name="material_id" string="坯料材质"></field>
|
||||
</group>
|
||||
<group>
|
||||
<field name="apply_name" string="坯料名称"></field>
|
||||
<label for="apply_length" string="尺寸[mm]"/>
|
||||
<div class="o_address_format">
|
||||
<label for="apply_length" string="长"/>
|
||||
<field name="apply_length" class="o_address_zip"
|
||||
options="{'format': false}"/>
|
||||
<span>&nbsp;</span>
|
||||
<label for="apply_width" string="宽"/>
|
||||
<field name="apply_width" class="o_address_zip"
|
||||
options="{'format': false}"/>
|
||||
<span>&nbsp;</span>
|
||||
<label for="apply_height" string="高"/>
|
||||
<field name="apply_height" class="o_address_zip"
|
||||
options="{'format': false}"/>
|
||||
</div>
|
||||
<field name="apply_diameter" string="直径[mm]"></field>
|
||||
</group>
|
||||
</group>
|
||||
<group string="坯料(工件)装夹信息">
|
||||
<group string="卡盘">
|
||||
<field name="chuck_type_id"></field>
|
||||
<field name="chuck_name"></field>
|
||||
<field name="chuck_brand_id"></field>
|
||||
<field name="chuck_model_id"></field>
|
||||
</group>
|
||||
<group string="托盘">
|
||||
<field name="tray_type_id"></field>
|
||||
<field name="tray_name"></field>
|
||||
<field name="tray_brand_id"></field>
|
||||
<field name="tray_model_id"></field>
|
||||
</group>
|
||||
<group string="坯料">
|
||||
<field name="real_code" string="坯料编码"></field>
|
||||
<field name="real_name" string="坯料名称"></field>
|
||||
<label for="real_length" string="尺寸[mm]"/>
|
||||
<div class="o_address_format">
|
||||
<label for="real_length" string="长"/>
|
||||
<field name="real_length" class="o_address_zip"
|
||||
options="{'format': false}"/>
|
||||
<span>&nbsp;</span>
|
||||
<label for="real_width" string="宽"/>
|
||||
<field name="real_width" class="o_address_zip"
|
||||
options="{'format': false}"/>
|
||||
<span>&nbsp;</span>
|
||||
<label for="real_height" string="高"/>
|
||||
<field name="real_height" class="o_address_zip"
|
||||
options="{'format': false}"/>
|
||||
</div>
|
||||
<field name="real_diameter" string="直径[mm]"></field>
|
||||
</group>
|
||||
</group>
|
||||
<group>
|
||||
<group>
|
||||
<field name="preset_program_information"></field>
|
||||
</group>
|
||||
</group>
|
||||
<footer>
|
||||
<button string="确定" name="submit" type="object" class="oe_highlight"/>
|
||||
<button string="取消" class="btn btn-secondary" special="cancel"/>
|
||||
</footer>
|
||||
</sheet>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="action_workpiece_clamping_wizard" model="ir.actions.act_window">
|
||||
<field name="name">装夹</field>
|
||||
<field name="res_model">sf.workpiece.clamping.wizard</field>
|
||||
<field name="view_mode">form</field>
|
||||
<field name="target">new</field>
|
||||
</record>
|
||||
</data>
|
||||
</openerp>
|
||||
@@ -34,12 +34,6 @@ class Sf_Bf_Connect(http.Controller):
|
||||
logging.info('get_bfm_process_or===================================:%s' % order_id.name)
|
||||
aa.default_code = kw['order_number']
|
||||
logging.info('get_bfm_process_order_listaaaaaaaaaaaaaaaaaaaaaaaaaaaa================:%s' % aa.default_code)
|
||||
# # 给stock.picking的default_code字段赋值
|
||||
# bb = request.env['stock.picking'].sudo().search([('origin', '=', order_id.name)])
|
||||
# logging.info('get_bfm_process_or===================================:%s' % order_id.name)
|
||||
# bb.default_code = kw['order_number']
|
||||
# logging.info('get_bfm_process_order_listbbbbbbbbbbbbbbbbbbbbbbbbbbbb================:%s' % bb.default_code)
|
||||
|
||||
for item in bfm_process_order_list:
|
||||
product = request.env['product.template'].sudo().product_create(product_id, item, order_id,
|
||||
kw['order_number'], i)
|
||||
|
||||
@@ -15,7 +15,6 @@
|
||||
'data': [
|
||||
'data/product_data.xml',
|
||||
'data/uom_data.xml',
|
||||
# 'data/cutting_tool_data.xml',
|
||||
'views/product_template_view.xml',
|
||||
'views/product_workorder.xml'
|
||||
],
|
||||
|
||||
@@ -1,16 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
<data noupdate="1">
|
||||
<record id="product_category_cutting_tool_sf" model="product.category">
|
||||
<field name="name">刀具</field>
|
||||
<field name="type">刀具</field>
|
||||
</record>
|
||||
|
||||
<record id="product_category_clamp_sf" model="product.category">
|
||||
<field name="name">夹具</field>
|
||||
<field name="type">夹具</field>
|
||||
</record>
|
||||
|
||||
|
||||
</data>
|
||||
</odoo>
|
||||
@@ -79,7 +79,7 @@
|
||||
<page string="刀具物料参数" attrs="{'invisible': [('categ_type', '!=', '刀具')]}">
|
||||
<group>
|
||||
<!--整体式刀具-->
|
||||
<group attrs="{'invisible': ['|',('categ_type', '!=', '刀具'),('cutting_tool_type', '!=', '整体式刀具')]}">
|
||||
<group attrs="{'invisible': ['|','|',('cutting_tool_model_id','=',False),('categ_type', '!=', '刀具'),('cutting_tool_type', '!=', '整体式刀具')]}">
|
||||
<field name="brand_id"
|
||||
attrs="{'invisible': [('cutting_tool_type', '!=', '整体式刀具')],'required': [('cutting_tool_type', '=', '整体式刀具')]}"/>
|
||||
<field name="cutting_tool_total_length"/>
|
||||
@@ -91,10 +91,9 @@
|
||||
<field name="cutting_tool_blade_number"
|
||||
attrs="{'invisible': [('cutting_tool_type', '!=', '整体式刀具')]}"/>
|
||||
</group>
|
||||
<group attrs="{'invisible': ['|',('categ_type', '!=', '刀具'),('cutting_tool_type', '!=', '整体式刀具')]}">
|
||||
<group attrs="{'invisible': ['|','|',('cutting_tool_model_id','=',False),('categ_type', '!=', '刀具'),('cutting_tool_type', '!=', '整体式刀具')]}">
|
||||
<field name="cutting_tool_material_model_id"
|
||||
attrs="{'invisible': [('cutting_tool_type', '!=', '整体式刀具')],'required': [('cutting_tool_type', '=', '整体式刀具')]}"/>
|
||||
/>
|
||||
<field name="cutting_tool_front_angle"
|
||||
attrs="{'invisible': [('cutting_tool_type', '!=', '整体式刀具')]}"/>
|
||||
<field name="cutting_tool_rear_angle"
|
||||
@@ -109,7 +108,7 @@
|
||||
attrs="{'invisible': [('cutting_tool_type', '!=', '整体式刀具')]}"/>
|
||||
</group>
|
||||
<!--刀片-->
|
||||
<group attrs="{'invisible': ['|',('categ_type', '!=', '刀具'),('cutting_tool_type', '!=', '刀片')]}">
|
||||
<group attrs="{'invisible': ['|','|',('cutting_tool_model_id','=',False),('categ_type', '!=', '刀具'),('cutting_tool_type', '!=', '刀片')]}">
|
||||
<field name="brand_id"
|
||||
attrs="{'invisible': [('cutting_tool_type', '!=', '刀片')],'required': [('cutting_tool_type', '=', '刀片')]}"/>
|
||||
<field name="cutting_tool_top_angle"/>
|
||||
@@ -123,7 +122,7 @@
|
||||
<field name="cutting_tool_working_hardness"
|
||||
attrs="{'required': [('cutting_tool_type', '=', '刀片')]}"/>
|
||||
</group>
|
||||
<group attrs="{'invisible': ['|',('categ_type', '!=', '刀具'),('cutting_tool_type', '!=', '刀片')]}">
|
||||
<group attrs="{'invisible': ['|','|',('cutting_tool_model_id','=',False),('categ_type', '!=', '刀具'),('cutting_tool_type', '!=', '刀片')]}">
|
||||
<field name="cutting_tool_material_model_id"
|
||||
attrs="{'invisible': [('cutting_tool_type', '!=', '刀片')],'required': [('cutting_tool_type', '=', '刀片')]}"/>
|
||||
<label for="tool_length" string="尺寸[mm]"/>
|
||||
@@ -140,14 +139,12 @@
|
||||
<field name="cutting_tool_radius"/>
|
||||
<field name="cutting_tool_nut"
|
||||
attrs="{'invisible': [('cutting_tool_type', '!=', '刀片')]}"/>
|
||||
<field name="cutting_tool_cutter_bar_ids" widget="many2many_tags"
|
||||
attrs="{'required': [('cutting_tool_type', '=', '刀片')]}"/>
|
||||
<field name="cutting_tool_cutter_pad_ids" widget="many2many_tags"
|
||||
attrs="{'required': [('cutting_tool_type', '=', '刀片')]}"/>
|
||||
<field name="cutting_tool_cutter_bar_ids" widget="many2many_tags"/>
|
||||
<field name="cutting_tool_cutter_pad_ids" widget="many2many_tags"/>
|
||||
</group>
|
||||
|
||||
<!--刀杆/刀盘-->
|
||||
<group attrs="{'invisible': ['|',('categ_type', '!=', '刀具'),('cutting_tool_type', 'not in', ['刀杆','刀盘'])]}">
|
||||
<group attrs="{'invisible': ['|','|',('cutting_tool_model_id','=',False),('categ_type', '!=', '刀具'),('cutting_tool_type', 'not in', ['刀杆','刀盘'])]}">
|
||||
<field name="brand_id"
|
||||
attrs="{'invisible': [('cutting_tool_type', 'not in', ['刀杆','刀盘'])],'required': [('cutting_tool_type', 'not in', ['刀杆','刀盘'])]}"/>
|
||||
<field name="cutting_tool_c_diameter"/>
|
||||
@@ -160,7 +157,7 @@
|
||||
attrs="{'invisible': [('cutting_tool_type', 'not in', ['刀杆','刀盘'])]}"/>
|
||||
|
||||
</group>
|
||||
<group attrs="{'invisible': ['|',('categ_type', '!=', '刀具'),('cutting_tool_type', 'not in', ['刀杆','刀盘'])]}">
|
||||
<group attrs="{'invisible': ['|','|',('cutting_tool_model_id','=',False),('categ_type', '!=', '刀具'),('cutting_tool_type', 'not in', ['刀杆','刀盘'])]}">
|
||||
<field name="cutting_tool_material_model_id"
|
||||
attrs="{'invisible': [('cutting_tool_type', 'not in', ['刀杆','刀盘'])],'required': [('cutting_tool_type', 'not in', ['刀杆','刀盘'])]}"/>
|
||||
<field name="cutting_tool_rounded_corner"/>
|
||||
@@ -170,7 +167,7 @@
|
||||
<field name="cutting_tool_hardness"/>
|
||||
</group>
|
||||
<!--刀柄-->
|
||||
<group attrs="{'invisible': ['|',('categ_type', '!=', '刀具'),('cutting_tool_type', '!=', '刀柄')]}">
|
||||
<group attrs="{'invisible': ['|','|',('cutting_tool_model_id','=',False),('categ_type', '!=', '刀具'),('cutting_tool_type', '!=', '刀柄')]}">
|
||||
<field name="brand_id"
|
||||
attrs="{'invisible': [('cutting_tool_type', '!=', '刀柄')],'required': [('cutting_tool_type', '=', '刀柄')]}"/>
|
||||
<field name="cutting_tool_handle_length"/>
|
||||
@@ -185,7 +182,7 @@
|
||||
<field name="cutting_tool_chuck_model_ids" widget="many2many_tags"
|
||||
attrs="{'invisible': [('cutting_tool_type', '!=', '刀柄')],'required': [('cutting_tool_type', '=', '刀柄')]}"/>
|
||||
</group>
|
||||
<group attrs="{'invisible': ['|',('categ_type', '!=', '刀具'),('cutting_tool_type', '!=', '刀柄')]}">
|
||||
<group attrs="{'invisible':['|','|',('cutting_tool_model_id','=',False),('categ_type', '!=', '刀具'),('cutting_tool_type', '!=', '刀柄')]}">
|
||||
<field name="cutting_tool_material_model_id"
|
||||
attrs="{'invisible': [('cutting_tool_type', '!=', '刀柄')],'required': [('cutting_tool_type', '=', '刀柄')]}"/>
|
||||
<field name="cutting_tool_detection_accuracy"/>
|
||||
@@ -193,7 +190,7 @@
|
||||
<field name="cutting_tool_standard_speed"/>
|
||||
</group>
|
||||
<!--夹头-->
|
||||
<group attrs="{'invisible': ['|',('categ_type', '!=', '刀具'),('cutting_tool_type', '!=', '夹头')]}">
|
||||
<group attrs="{'invisible': ['|','|',('cutting_tool_model_id','=',False),('categ_type', '!=', '刀具'),('cutting_tool_type', '!=', '夹头')]}">
|
||||
<field name="brand_id"
|
||||
attrs="{'invisible': [('cutting_tool_type', '!=', '夹头')],'required': [('cutting_tool_type', '=', '夹头')]}"/>
|
||||
<field name="cutting_tool_outer_diameter"/>
|
||||
@@ -206,7 +203,7 @@
|
||||
<field name="cutting_tool_handle_model_ids" widget="many2many_tags"
|
||||
attrs="{'invisible': [('cutting_tool_type', '!=', '夹头')]}"/>
|
||||
</group>
|
||||
<group attrs="{'invisible': ['|',('categ_type', '!=', '刀具'),('cutting_tool_type', '!=', '夹头')]}">
|
||||
<group attrs="{'invisible': ['|','|',('cutting_tool_model_id','=',False),('categ_type', '!=', '刀具'),('cutting_tool_type', '!=', '夹头')]}">
|
||||
<field name="cutting_tool_material_model_id"
|
||||
attrs="{'invisible': [('cutting_tool_type', '!=', '夹头')],'required': [('cutting_tool_type', '=', '夹头')]}"/>
|
||||
<field name="tool_height" string="高度[mm]"
|
||||
@@ -217,30 +214,29 @@
|
||||
</page>
|
||||
<page string="夹具物料参数" attrs="{'invisible': [('categ_type', '!=', '夹具')]}">
|
||||
<group>
|
||||
<group>
|
||||
<group attrs='{"invisible": ["|",("fixture_model_id", "=", False),("fixture_material_type","not in",("气动托盘","转接板(锁板)托盘","磁吸托盘","虎钳托盘","零点卡盘"))]}'>
|
||||
<field name="brand_id"/>
|
||||
<field name="fixture_multi_mounting_type_id"/>
|
||||
</group>
|
||||
<group>
|
||||
<!-- <field name="upload_model_file" widget="many2many_binary"/>-->
|
||||
<field name="fixture_model_file" widget="Viewer3D" string="模型" readonly="1"
|
||||
force_save="1"
|
||||
attrs="{'invisible': [('fixture_model_file', '=', False)]}"/>
|
||||
</group>
|
||||
</group>
|
||||
<group string="参数"
|
||||
attrs='{"invisible": [("fixture_material_type","not in",("气动托盘","转接板(锁板)托盘","磁吸托盘","虎钳托盘","零点卡盘"))]}'>
|
||||
attrs='{"invisible": ["|",("fixture_model_id", "=", False),("fixture_material_type","not in",("气动托盘","转接板(锁板)托盘","磁吸托盘","虎钳托盘","零点卡盘"))]}'>
|
||||
<group>
|
||||
<label for="tool_length" string="尺寸[mm]"/>
|
||||
<div class="o_address_format">
|
||||
<label for="tool_length" string="长"/>
|
||||
<field name="tool_length" class="o_address_zip"
|
||||
options="{'format': false}"/>
|
||||
<span>&nbsp;</span>
|
||||
<!-- <span>&nbsp;</span>-->
|
||||
<label for="tool_width" string="宽"/>
|
||||
<field name="tool_width" class="o_address_zip"
|
||||
options="{'format': false}"/>
|
||||
<span>&nbsp;</span>
|
||||
<!-- <span>&nbsp;</span>-->
|
||||
<label for="tool_height" string="高"/>
|
||||
<field name="tool_height" class="o_address_zip"
|
||||
options="{'format': false}"/>
|
||||
@@ -254,12 +250,12 @@
|
||||
<field name="fixture_clamp_workpiece_length_max" class="o_address_zip"
|
||||
options="{'format': false}"
|
||||
attrs="{'required': [('fixture_material_type', 'in',('气动托盘','转接板(锁板)托盘','磁吸托盘','虎钳托盘'))]}"/>
|
||||
<span>&nbsp;</span>
|
||||
<!-- <span>&nbsp;</span>-->
|
||||
<label for="fixture_clamp_workpiece_width_max" string="宽"/>
|
||||
<field name="fixture_clamp_workpiece_width_max" class="o_address_zip"
|
||||
options="{'format': false}"
|
||||
attrs="{'required': [('fixture_material_type', 'in',('气动托盘','转接板(锁板)托盘','磁吸托盘','虎钳托盘'))]}"/>
|
||||
<span>&nbsp;</span>
|
||||
<!-- <span>&nbsp;</span>-->
|
||||
<label for="fixture_clamp_workpiece_height_max" string="高"/>
|
||||
<field name="fixture_clamp_workpiece_height_max" class="o_address_zip"
|
||||
options="{'format': false}"
|
||||
@@ -282,7 +278,7 @@
|
||||
attrs='{"invisible": [("fixture_material_type","!=",("转接板(锁板)托盘"))]}'/>
|
||||
<field name="fixture_driving_way"
|
||||
attrs='{"invisible": [("fixture_material_type","not in",("虎钳托盘","零点卡盘"))]}'/>
|
||||
<field name="fixture_apply_machine_tool_type"
|
||||
<field name="fixture_apply_machine_tool_type_id"
|
||||
attrs='{"invisible": [("fixture_material_type","!=",("零点卡盘"))]}'/>
|
||||
</group>
|
||||
</group>
|
||||
|
||||
@@ -46,19 +46,19 @@ class ResProductMo(models.Model):
|
||||
)
|
||||
|
||||
brand_id = fields.Many2one('sf.machine.brand', '品牌')
|
||||
tool_length = fields.Float('长度L[mm]')
|
||||
tool_width = fields.Float('宽度D[mm])')
|
||||
tool_height = fields.Float('高度T[mm]')
|
||||
tool_weight = fields.Float('重量[kg]')
|
||||
tool_length = fields.Integer('长度L[mm]', size=6)
|
||||
tool_width = fields.Integer('宽度D[mm])', size=6)
|
||||
tool_height = fields.Integer('高度T[mm]', size=6)
|
||||
tool_weight = fields.Float('重量[kg]', size=4)
|
||||
# 整体式刀具参数
|
||||
cutting_tool_total_length = fields.Float('总长度[mm]')
|
||||
cutting_tool_shank_length = fields.Float('柄部长度[mm]')
|
||||
cutting_tool_blade_length = fields.Float('刃部长度[mm]')
|
||||
cutting_tool_diameter = fields.Float('直径[mm]')
|
||||
cutting_tool_blade_number = fields.Integer('刃数')
|
||||
cutting_tool_front_angle = fields.Float('前角(°)')
|
||||
cutting_tool_rear_angle = fields.Float('后角(°)')
|
||||
cutting_tool_main_included_angle = fields.Float('主偏角(°)')
|
||||
cutting_tool_front_angle = fields.Float('前角[°]')
|
||||
cutting_tool_rear_angle = fields.Float('后角[°]')
|
||||
cutting_tool_main_included_angle = fields.Float('主偏角[°]')
|
||||
cutting_tool_material_model_id = fields.Many2one('sf.materials.model', '材料型号')
|
||||
cutting_tool_nut = fields.Float('配对螺母[mm]')
|
||||
# 适用夹头型号可以多选
|
||||
@@ -72,8 +72,8 @@ class ResProductMo(models.Model):
|
||||
cutting_tool_scope = fields.Char('适用范围')
|
||||
# 刀片参数
|
||||
|
||||
cutting_tool_top_angle = fields.Float('顶角(°)')
|
||||
cutting_tool_r_angle = fields.Float('R角(°)')
|
||||
cutting_tool_top_angle = fields.Float('顶角[°]')
|
||||
cutting_tool_r_angle = fields.Float('R角[°]')
|
||||
cutting_tool_working_hardness = fields.Char('加工硬度')
|
||||
cutting_tool_cutter_bar_ids = fields.Many2many(
|
||||
'sf.cutting.tool.model',
|
||||
@@ -108,7 +108,7 @@ class ResProductMo(models.Model):
|
||||
cutting_tool_screw = fields.Float('配备螺丝[mm]')
|
||||
cutting_tool_accuracy_level = fields.Char('精度等级')
|
||||
cutting_tool_rounded_corner = fields.Float('刀尖圆角半径[mm]')
|
||||
cutting_tool_hardness = fields.Char('硬度(°)')
|
||||
cutting_tool_hardness = fields.Char('硬度[°]')
|
||||
# 刀柄参数
|
||||
cutting_tool_handle_length = fields.Float('L[mm]')
|
||||
cutting_tool_length1 = fields.Float('L1[mm]')
|
||||
@@ -140,14 +140,14 @@ class ResProductMo(models.Model):
|
||||
fixture_clamping_way = fields.Char(string="装夹方式")
|
||||
fixture_port_type = fields.Char(string="接口类型")
|
||||
fixture_model_file = fields.Binary(string="3D模型图")
|
||||
fixture_clamp_workpiece_length_max = fields.Char(string="夹持工件长度MAX[mm]")
|
||||
fixture_clamp_workpiece_width_max = fields.Char(string="夹持工件宽度MAX[mm]")
|
||||
fixture_clamp_workpiece_height_max = fields.Char(string="夹持工件高度MAX[mm]")
|
||||
fixture_clamp_workpiece_diameter_max = fields.Char(string="夹持工件直径MAX[mm]")
|
||||
fixture_maximum_carrying_weight = fields.Char(string="最大承载重量[kg]")
|
||||
fixture_maximum_clamping_force = fields.Char(string="最大夹持力[n]")
|
||||
fixture_clamp_workpiece_length_max = fields.Integer(string="夹持工件长度MAX[mm]", size=6)
|
||||
fixture_clamp_workpiece_width_max = fields.Integer(string="夹持工件宽度MAX[mm]", size=6)
|
||||
fixture_clamp_workpiece_height_max = fields.Integer(string="夹持工件高度MAX[mm]", size=6)
|
||||
fixture_clamp_workpiece_diameter_max = fields.Float(string="夹持工件直径MAX[mm]", digits=(16, 6))
|
||||
fixture_maximum_carrying_weight = fields.Float(string="最大承载重量[kg]", digits=(16, 4))
|
||||
fixture_maximum_clamping_force = fields.Integer(string="最大夹持力[n]", size=8)
|
||||
fixture_driving_way = fields.Char(string="驱动方式")
|
||||
fixture_apply_machine_tool_type = fields.Char(string="适用机床型号")
|
||||
fixture_apply_machine_tool_type_id = fields.Many2one('sf.machine_tool.type', string="适用机床型号")
|
||||
fixture_through_hole_size = fields.Integer(string="过孔大小[mm]", size=6)
|
||||
fixture_screw_size = fields.Integer(string="螺牙大小[mm]", size=6)
|
||||
|
||||
@@ -163,6 +163,7 @@ class ResProductMo(models.Model):
|
||||
def _onchange_categ_id(self):
|
||||
if self.categ_type in ('刀具', '夹具'):
|
||||
self.invoice_policy = 'delivery'
|
||||
self.detailed_type = 'product'
|
||||
self.sale_ok = False
|
||||
|
||||
@api.onchange('cutting_tool_material_id')
|
||||
@@ -171,119 +172,40 @@ class ResProductMo(models.Model):
|
||||
if item.cutting_tool_material_id.id != item.cutting_tool_model_id.mrs_cutting_tool_material_id.id:
|
||||
item.cutting_tool_model_id = False
|
||||
|
||||
@api.onchange('fixture_material_id')
|
||||
def _onchange_fixture_material_id(self):
|
||||
for item in self:
|
||||
if item.fixture_material_id.id != item.fixture_model_id.fixture_material_id.id:
|
||||
item.fixture_model_id = False
|
||||
|
||||
@api.onchange('fixture_model_id')
|
||||
def _onchange_fixture_model_id(self):
|
||||
for item in self:
|
||||
if self.cutting_tool_type == '整体式刀具':
|
||||
item.brand_id = item.cutting_tool_model_id.mrs_machine_brand_id.id
|
||||
item.cutting_tool_total_length = item.cutting_tool_model_id.integral_total_length
|
||||
item.cutting_tool_shank_length = item.cutting_tool_model_id.integral_shank_length
|
||||
item.cutting_tool_blade_length = item.cutting_tool_model_id.integral_blade_length
|
||||
item.cutting_tool_diameter = item.cutting_tool_model_id.integral_diameter
|
||||
item.cutting_tool_nut = item.cutting_tool_model_id.integral_nut
|
||||
item.cutting_tool_blade_number = item.cutting_tool_model_id.integral_blade_number
|
||||
item.cutting_tool_material_model_id = item.cutting_tool_model_id.mrs_materials_model_id.id
|
||||
item.cutting_tool_front_angle = item.cutting_tool_model_id.integral_front_angle
|
||||
item.cutting_tool_rear_angle = item.cutting_tool_model_id.integral_rear_angle
|
||||
item.cutting_tool_main_included_angle = item.cutting_tool_model_id.integral_main_included_angle
|
||||
item.cutting_tool_chuck_model_ids = self._get_ids(
|
||||
item.cutting_tool_model_id.mrs_cutting_tool_model_handle_chuck_model_ids)
|
||||
item.cutting_tool_scope = item.cutting_tool_model_id.integral_scope
|
||||
item.image_1920 = '' if not item.cutting_tool_model_id.image else item.cutting_tool_model_id.image
|
||||
elif self.cutting_tool_type == '刀片':
|
||||
item.brand_id = item.cutting_tool_model_id.mrs_machine_brand_id.id
|
||||
item.cutting_tool_top_angle = item.cutting_tool_model_id.blade_top_angle
|
||||
item.cutting_tool_front_angle = item.cutting_tool_model_id.blade_front_angle
|
||||
item.cutting_tool_rear_angle = item.cutting_tool_model_id.blade_rear_angle
|
||||
item.cutting_tool_main_included_angle = item.cutting_tool_model_id.blade_main_included_angle
|
||||
item.cutting_tool_r_angle = item.cutting_tool_model_id.blade_r_angle
|
||||
item.cutting_tool_working_hardness = item.cutting_tool_model_id.blade_hardness
|
||||
item.cutting_tool_material_model_id = item.cutting_tool_model_id.mrs_materials_model_id.id
|
||||
item.tool_length = item.cutting_tool_model_id.blade_length
|
||||
item.tool_width = item.cutting_tool_model_id.blade_width
|
||||
item.tool_height = item.cutting_tool_model_id.blade_height
|
||||
item.cutting_tool_radius = item.cutting_tool_model_id.blade_radius
|
||||
item.cutting_tool_nut = item.cutting_tool_model_id.blade_nut
|
||||
item.cutting_tool_cutter_bar_ids = self._get_ids(
|
||||
item.cutting_tool_model_id.mrs_cutting_tool_model_blade_cutter_bar_ids)
|
||||
item.cutting_tool_cutter_pad_ids = self._get_ids(
|
||||
item.cutting_tool_model_id.mrs_cutting_tool_model_blade_cutter_pad_ids)
|
||||
item.image_1920 = '' if not item.cutting_tool_model_id.image else item.cutting_tool_model_id.image
|
||||
elif self.cutting_tool_type == '刀杆':
|
||||
item.brand_id = item.cutting_tool_model_id.mrs_machine_brand_id.id
|
||||
item.cutting_tool_c_diameter = item.cutting_tool_model_id.bar_c_diameter
|
||||
item.cutting_tool_d_diameter = item.cutting_tool_model_id.bar_d_diameter
|
||||
item.cutting_tool_l_total_length = item.cutting_tool_model_id.bar_total_length
|
||||
item.cutting_tool_wrench = item.cutting_tool_model_id.bar_wrench
|
||||
item.cutting_tool_screw = item.cutting_tool_model_id.bar_screw
|
||||
item.cutting_tool_blade_ids = self._get_ids(
|
||||
item.cutting_tool_model_id.mrs_cutting_tool_model_pad_blade_ids)
|
||||
item.cutting_tool_scope = item.cutting_tool_model_id.bar_scope
|
||||
item.cutting_tool_material_model_id = item.cutting_tool_model_id.mrs_materials_model_id.id
|
||||
item.cutting_tool_rounded_corner = item.cutting_tool_model_id.bar_radius
|
||||
item.cutting_tool_accuracy_level = item.cutting_tool_model_id.bar_accuracy
|
||||
item.cutting_tool_blade_number = item.cutting_tool_model_id.bar_blade_number
|
||||
item.cutting_tool_hardness = item.cutting_tool_model_id.bar_hardness
|
||||
item.image_1920 = '' if not item.cutting_tool_model_id.image else item.cutting_tool_model_id.image
|
||||
elif self.cutting_tool_type == '刀盘':
|
||||
item.brand_id = item.cutting_tool_model_id.mrs_machine_brand_id.id
|
||||
item.cutting_tool_c_diameter = item.cutting_tool_model_id.pad_c_diameter
|
||||
item.cutting_tool_d_diameter = item.cutting_tool_model_id.pad_d_diameter
|
||||
item.cutting_tool_l_total_length = item.cutting_tool_model_id.pad_total_length
|
||||
item.cutting_tool_wrench = item.cutting_tool_model_id.pad_wrench
|
||||
item.cutting_tool_screw = item.cutting_tool_model_id.pad_screw
|
||||
item.cutting_tool_blade_ids = self._get_ids(
|
||||
item.cutting_tool_model_id.mrs_cutting_tool_model_pad_blade_ids)
|
||||
item.cutting_tool_scope = item.cutting_tool_model_id.pad_scope
|
||||
item.cutting_tool_material_model_id = item.cutting_tool_model_id.mrs_materials_model_id.id
|
||||
item.cutting_tool_rounded_corner = item.cutting_tool_model_id.pad_radius
|
||||
item.cutting_tool_accuracy_level = item.cutting_tool_model_id.pad_accuracy
|
||||
item.cutting_tool_blade_number = item.cutting_tool_model_id.pad_blade_number
|
||||
item.cutting_tool_hardness = item.cutting_tool_model_id.pad_hardness
|
||||
item.image_1920 = '' if not item.cutting_tool_model_id.image else item.cutting_tool_model_id.image
|
||||
elif self.cutting_tool_type == '刀柄':
|
||||
item.brand_id = item.cutting_tool_model_id.mrs_machine_brand_id.id
|
||||
item.cutting_tool_handle_length = item.cutting_tool_model_id.handle_length
|
||||
item.cutting_tool_length1 = item.cutting_tool_model_id.handle_length
|
||||
item.cutting_tool_diameter1 = item.cutting_tool_model_id.handle_diameter
|
||||
item.cutting_tool_body_accuracy = item.cutting_tool_model_id.handle_body_accuracy
|
||||
item.cutting_tool_nut = item.cutting_tool_model_id.handle_nut
|
||||
item.cutting_tool_clamping_range = item.cutting_tool_model_id.handle_clamping_range
|
||||
item.tool_weight = item.cutting_tool_model_id.handle_weight
|
||||
item.cutting_tool_material_model_id = item.cutting_tool_model_id.mrs_materials_model_id.id
|
||||
item.cutting_tool_chuck_model_ids = self._get_ids(
|
||||
item.cutting_tool_model_id.mrs_cutting_tool_model_handle_chuck_model_ids)
|
||||
item.cutting_tool_detection_accuracy = item.cutting_tool_model_id.handle_detection_accuracy
|
||||
item.cutting_tool_detection_hardness = item.cutting_tool_model_id.handle_detection_hardness
|
||||
item.cutting_tool_standard_speed = item.cutting_tool_model_id.handle_standard_speed
|
||||
item.image_1920 = '' if not item.cutting_tool_model_id.image else item.cutting_tool_model_id.image
|
||||
elif self.cutting_tool_type == '夹头':
|
||||
item.brand_id = item.cutting_tool_model_id.mrs_machine_brand_id.id
|
||||
item.cutting_tool_outer_diameter = item.cutting_tool_model_id.chuck_diameter
|
||||
item.cutting_tool_inner_diameter = item.cutting_tool_model_id.chuck_inner_diameter
|
||||
item.cutting_tool_accuracy = item.cutting_tool_model_id.chuck_accuracy
|
||||
item.cutting_tool_nut = item.cutting_tool_model_id.chuck_nut
|
||||
item.cutting_tool_clamping_range = item.cutting_tool_model_id.chuck_clamping_range
|
||||
item.cutting_tool_handle_model_ids = self._get_ids(
|
||||
item.cutting_tool_model_id.mrs_cutting_tool_model_chuck_handle_model_ids)
|
||||
item.cutting_tool_material_model_id = item.cutting_tool_model_id.mrs_materials_model_id.id
|
||||
item.tool_height = item.cutting_tool_model_id.chuck_height
|
||||
item.cutting_tool_feature = item.cutting_tool_model_id.chuck_feature
|
||||
item.image_1920 = '' if not item.cutting_tool_model_id.image else item.cutting_tool_model_id.image
|
||||
else:
|
||||
item.brand_id = False
|
||||
item.cutting_tool_total_length = False
|
||||
item.cutting_tool_shank_length = False
|
||||
item.cutting_tool_blade_length = False
|
||||
item.cutting_tool_diameter = False
|
||||
item.cutting_tool_nut = False
|
||||
item.cutting_tool_blade_number = False
|
||||
item.cutting_tool_material_model_id = False
|
||||
item.cutting_tool_front_angle = False
|
||||
item.cutting_tool_rear_angle = False
|
||||
item.cutting_tool_main_included_angle = False
|
||||
item.cutting_tool_chuck_model_ids = False
|
||||
item.cutting_tool_scope = False
|
||||
if self.fixture_material_type in ['气动托盘', '转接板(锁板)托盘', '磁吸托盘', '虎钳托盘', '零点卡盘']:
|
||||
item.brand_id = item.fixture_model_id.brand_id.id
|
||||
item.fixture_multi_mounting_type_id = item.fixture_model_id.multi_mounting_type_id.id
|
||||
item.fixture_model_file = item.fixture_model_id.model_file
|
||||
item.tool_length = item.fixture_model_id.length
|
||||
item.tool_width = item.fixture_model_id.width
|
||||
item.tool_height = item.fixture_model_id.height
|
||||
item.tool_weight = item.fixture_model_id.weight
|
||||
item.materials_type_id = item.fixture_model_id.materials_model_id.id
|
||||
item.fixture_maximum_carrying_weight = item.fixture_model_id.maximum_carrying_weight
|
||||
item.fixture_maximum_clamping_force = item.fixture_model_id.maximum_clamping_force
|
||||
if self.fixture_material_type in ['零点卡盘', '转接板(锁板)托盘']:
|
||||
item.fixture_clamping_way = item.fixture_model_id.clamping_way
|
||||
item.fixture_port_type = item.fixture_model_id.port_type
|
||||
if self.fixture_material_type in ['气动托盘', '转接板(锁板)托盘', '磁吸托盘']:
|
||||
item.fixture_driving_way = item.fixture_model_id.driving_way
|
||||
if self.fixture_material_type in ['气动托盘', '磁吸托盘', '虎钳托盘', '零点卡盘']:
|
||||
item.fixture_through_hole_size = item.fixture_model_id.through_hole_size
|
||||
item.fixture_screw_size = item.fixture_model_id.screw_size
|
||||
if self.fixture_material_type in ['气动托盘', '转接板(锁板)托盘', '磁吸托盘', '虎钳托盘']:
|
||||
item.fixture_clamp_workpiece_length_max = item.fixture_model_id.clamp_workpiece_length_max
|
||||
item.fixture_clamp_workpiece_width_max = item.fixture_model_id.clamp_workpiece_width_max
|
||||
item.fixture_clamp_workpiece_height_max = item.fixture_model_id.clamp_workpiece_height_max
|
||||
item.fixture_clamp_workpiece_diameter_max = item.fixture_model_id.clamp_workpiece_diameter_max
|
||||
item.fixture_apply_machine_tool_type_id = item.fixture_model_id.apply_machine_tool_type_id.id
|
||||
|
||||
@api.onchange('cutting_tool_model_id')
|
||||
def _onchange_cutting_tool_model_id(self):
|
||||
|
||||
@@ -1561,7 +1561,8 @@ class SyncFixtureModel(models.Model):
|
||||
"materials_model_id": self.env['sf.materials.model'].search(
|
||||
[('materials_no', '=', item['materials_model_code'])]).id,
|
||||
"driving_way": item['driving_way'],
|
||||
"apply_machine_tool_type": item['apply_machine_tool_type'],
|
||||
"apply_machine_tool_type_id": self.env['sf.machine_tool.type'].search(
|
||||
[('code', '=', item['apply_machine_tool_type_code'])]).id,
|
||||
"through_hole_size": item['through_hole_size'],
|
||||
"screw_size": item['screw_size'],
|
||||
})
|
||||
@@ -1589,7 +1590,8 @@ class SyncFixtureModel(models.Model):
|
||||
"materials_model_id": self.env['sf.materials.model'].search(
|
||||
[('materials_no', '=', item['materials_model_code'])]).id,
|
||||
"driving_way": item['driving_way'],
|
||||
"apply_machine_tool_type": item['apply_machine_tool_type'],
|
||||
"apply_machine_tool_type_id": self.env['sf.machine_tool.type'].search(
|
||||
[('code', '=', item['apply_machine_tool_type_code'])]).id,
|
||||
"through_hole_size": item['through_hole_size'],
|
||||
"screw_size": item['screw_size'],
|
||||
})
|
||||
@@ -1639,7 +1641,8 @@ class SyncFixtureModel(models.Model):
|
||||
"materials_model_id": self.env['sf.materials.model'].search(
|
||||
[('materials_no', '=', item['materials_model_code'])]).id,
|
||||
"driving_way": item['driving_way'],
|
||||
"apply_machine_tool_type": item['apply_machine_tool_type'],
|
||||
"apply_machine_tool_type_id": self.env['sf.machine_tool.type'].search(
|
||||
[('code', '=', item['apply_machine_tool_type_code'])]).id,
|
||||
"through_hole_size": item['through_hole_size'],
|
||||
"screw_size": item['screw_size'],
|
||||
})
|
||||
@@ -1667,7 +1670,8 @@ class SyncFixtureModel(models.Model):
|
||||
"materials_model_id": self.env['sf.materials.model'].search(
|
||||
[('materials_no', '=', item['materials_model_code'])]).id,
|
||||
"driving_way": item['driving_way'],
|
||||
"apply_machine_tool_type": item['apply_machine_tool_type'],
|
||||
"apply_machine_tool_type_id": self.env['sf.machine_tool.type'].search(
|
||||
[('code', '=', item['apply_machine_tool_type_code'])]).id,
|
||||
"through_hole_size": item['through_hole_size'],
|
||||
"screw_size": item['screw_size'],
|
||||
})
|
||||
|
||||
@@ -6,7 +6,7 @@ class ProcedureEquipmentResourceSetting(models.Model):
|
||||
_name = 'sf.procedure.equipment.resource.setting'
|
||||
_description = '产线设备资源设置'
|
||||
|
||||
production_line_id = fields.Many2one('sf.production.line', string='生产线', required=True)
|
||||
name = fields.Many2one('sf.production.line', string='生产线', required=True)
|
||||
work_center_name_id = fields.Many2one('mrp.workcenter', string='工作中心名称')
|
||||
equipment_code = fields.Char(string='机台号(原设备编码)', readonly=True, compute='_onchange_equipment_name_id')
|
||||
equipment_name_id = fields.Many2one('maintenance.equipment',
|
||||
@@ -49,7 +49,7 @@ class ProcedureEquipmentResourceSetting(models.Model):
|
||||
@api.depends('working_calendar_id')
|
||||
def _onchange_working_calendar_id(self):
|
||||
for record in self:
|
||||
record.working_shift_id = record.working_calendar_id.working_shift_id
|
||||
record.working_shift_id = record.working_calendar_id.working_shift_ids
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,21 +1,6 @@
|
||||
from datetime import datetime, timedelta, date
|
||||
|
||||
import logging
|
||||
from datetime import datetime, timedelta
|
||||
from odoo import models, fields, api
|
||||
import re
|
||||
|
||||
from odoo.exceptions import ValidationError
|
||||
|
||||
|
||||
def time_H_selection():
|
||||
return [('00', '00'), ('01', '01'), ('02', '02'), ('03', '03'), ('04', '04'), ('05', '05'),
|
||||
('06', '06'), ('07', '07'), ('08', '08'), ('09', '09'), ('10', '10'), ('11', '11'),
|
||||
('12', '12'), ('13', '13'), ('14', '14'), ('15', '15'), ('16', '16'), ('17', '17'),
|
||||
('18', '18'), ('19', '19'), ('20', '20'), ('21', '21'), ('22', '22'), ('23', '23')]
|
||||
|
||||
|
||||
def time_M_or_S_selection():
|
||||
return [('00', '00'), ('05', '05'), ('10', '10'), ('15', '15'), ('20', '20'), ('25', '25'),
|
||||
('30', '30'), ('35', '35'), ('40', '40'), ('45', '45'), ('50', '50'), ('55', '55')]
|
||||
|
||||
|
||||
class WorkLogSetting(models.Model):
|
||||
@@ -38,20 +23,15 @@ class WorkLogSetting(models.Model):
|
||||
num = "%03d" % m
|
||||
return num
|
||||
|
||||
code = fields.Char(string='序号', default=_get_code, readonly=True)
|
||||
code = fields.Char(string='序号', default=_get_code)
|
||||
name = fields.Char(string='工作日历名称', required=True, size=15, length=30)
|
||||
|
||||
start_time = fields.Char(string='日开始时间', readonly=True, compute='_compute_start_time')
|
||||
start_time_H = fields.Selection(time_H_selection(), '时', required=True)
|
||||
start_time_M = fields.Selection(time_M_or_S_selection(), '分', required=True)
|
||||
end_time = fields.Char(string='日结束时间', readonly=True, compute='_compute_end_time')
|
||||
end_time_H = fields.Selection(time_H_selection(), '时', required=True)
|
||||
end_time_M = fields.Selection(time_M_or_S_selection(), '分', required=True)
|
||||
working_shift_ids = fields.Many2many('sf.working.shift', string='班次')
|
||||
start_time = fields.Datetime(string='日开始时间', readonly=True, compute='_compute_working_shift_ids')
|
||||
end_time = fields.Datetime(string='日结束时间', readonly=True, compute='_compute_working_shift_ids')
|
||||
duration = fields.Char(string='时长', readonly=True, compute='_compute_working_shift_ids')
|
||||
|
||||
duration = fields.Char(string='时长', readonly=True, compute='_compute_duration')
|
||||
day_off_id = fields.Many2many('sf.day.off', string='休息日', required=True)
|
||||
|
||||
working_shift_id = fields.Many2many('sf.working.shift', string='班次')
|
||||
day_off_ids = fields.Many2many('sf.day.off', string='休息日', required=True)
|
||||
|
||||
status = fields.Boolean(string='状态', default=True)
|
||||
update_person = fields.Char(string='更新人', default=lambda self: self.env.user.name)
|
||||
@@ -59,48 +39,28 @@ class WorkLogSetting(models.Model):
|
||||
|
||||
setting_to_calendar_ids = fields.One2many('sf.work.schedule.calendar', 'name_id', '工作日历')
|
||||
|
||||
# @api.model
|
||||
# def create(self, vals):
|
||||
# vals['setting_to_calendar_ids'] = [(4, child.id)]
|
||||
# return super(WorkLogSetting, self).create(vals)
|
||||
|
||||
@api.depends('start_time_H', 'start_time_M')
|
||||
def _compute_start_time(self):
|
||||
@api.depends('working_shift_ids')
|
||||
def _compute_working_shift_ids(self):
|
||||
"""
|
||||
设置输入日开始时间
|
||||
根据所选班次自动生成开始时间和结束时间,同时计算出工作时长
|
||||
:return:
|
||||
"""
|
||||
for record in self:
|
||||
record.start_time = f"{record.start_time_H}:{record.start_time_M}:00"
|
||||
if record:
|
||||
for working_shift_id in record.working_shift_ids:
|
||||
if not record.start_time:
|
||||
record.start_time = working_shift_id.start_time
|
||||
record.end_time = working_shift_id.end_time
|
||||
else:
|
||||
if (working_shift_id.start_time - record.start_time).total_seconds() < 0:
|
||||
record.start_time = working_shift_id.start_time
|
||||
if (working_shift_id.end_time - record.end_time).total_seconds() > 0:
|
||||
record.end_time = working_shift_id.end_time
|
||||
|
||||
@api.depends('end_time_H', 'end_time_M')
|
||||
def _compute_end_time(self):
|
||||
"""
|
||||
设置输入日结束时间
|
||||
:return:
|
||||
"""
|
||||
for record in self:
|
||||
record.end_time = f"{record.end_time_H}:{record.end_time_M}:00"
|
||||
record.duration = record.end_time - record.start_time
|
||||
|
||||
@api.depends('start_time_H', 'start_time_M', 'end_time_H', 'end_time_M')
|
||||
def _compute_duration(self):
|
||||
"""
|
||||
根据日开始时间和日结束时间计算每日工作时长
|
||||
:return:
|
||||
"""
|
||||
for record in self:
|
||||
st_h = float(record.start_time_H)
|
||||
st_m = float(record.start_time_M)
|
||||
end_h = float(record.end_time_H)
|
||||
end_m = float(record.end_time_M)
|
||||
# 日开始时间小于日结束时间
|
||||
if st_h < end_h:
|
||||
record.duration = str(round(end_h - st_h + (end_m - st_m) / 60, 2))
|
||||
else:
|
||||
record.duration = str(round(end_h - st_h + (end_m - st_m) / 60 + 24, 2))
|
||||
|
||||
# @api.onchange('day_off_id')
|
||||
# def _onchange_day_off_id(self):
|
||||
# @api.onchange('day_off_ids')
|
||||
# def _onchange_day_off_ids(self):
|
||||
# # 先删除之前创建的工作日历事件记录
|
||||
# self.env['sf.work.schedule.calendar'].search([('calendar_code', '=', self.code)]).unlink()
|
||||
#
|
||||
@@ -152,6 +112,7 @@ class WorkLogSetting(models.Model):
|
||||
创建记录时,生成工作日历
|
||||
"""
|
||||
record = super(WorkLogSetting, self).create(vals)
|
||||
logging.info("工作日历设置【新建】记录时,创建工作日历记录!!!")
|
||||
record.generate_work_calendar()
|
||||
return record
|
||||
|
||||
@@ -162,6 +123,7 @@ class WorkLogSetting(models.Model):
|
||||
# 先删除之前创建的工作日历事件记录
|
||||
self.env['sf.work.schedule.calendar'].search([('calendar_code', '=', self.code)]).unlink()
|
||||
result = super(WorkLogSetting, self).write(vals)
|
||||
logging.info("工作日历设置【更新】记录时,创建工作日历记录!!!")
|
||||
self.generate_work_calendar()
|
||||
return result
|
||||
|
||||
@@ -169,14 +131,16 @@ class WorkLogSetting(models.Model):
|
||||
"""
|
||||
生成工作日历
|
||||
"""
|
||||
logging.info('开始创建工作日历记录')
|
||||
self.ensure_one()
|
||||
# start_date = date.today() # 开始日期
|
||||
# end_date = start_date + timedelta(days=365) # 结束日期
|
||||
# 获取本年第一天和最后一天
|
||||
start_date = datetime.now().replace(month=1, day=1).date()
|
||||
end_date = datetime.now().replace(month=12, day=31).date()
|
||||
logging.info(f'start_date: {start_date} , end_date: {end_date}')
|
||||
# 休息日列表
|
||||
rest_days = self.day_off_id.mapped('name')
|
||||
rest_days = self.day_off_ids.mapped('name')
|
||||
for single_date in self.daterange(start_date, end_date):
|
||||
is_workday = single_date.strftime("%A")
|
||||
if is_workday in rest_days:
|
||||
@@ -185,6 +149,8 @@ class WorkLogSetting(models.Model):
|
||||
'name': '休息日',
|
||||
'name_id': self.id,
|
||||
'date_time': single_date})
|
||||
logging.info('创建一条工作日历记录,休息时间: %s' % is_workday)
|
||||
logging.info('工作日历记录创建完成')
|
||||
|
||||
@staticmethod
|
||||
def daterange(start_date, end_date):
|
||||
|
||||
@@ -11,8 +11,8 @@
|
||||
<field name="start_time"/>
|
||||
<field name="end_time"/>
|
||||
<field name="duration"/>
|
||||
<field name="day_off_id" widget="many2many_tags"/>
|
||||
<field name="working_shift_id" widget="many2many_tags"/>
|
||||
<field name="day_off_ids" widget="many2many_tags"/>
|
||||
<field name="working_shift_ids" widget="many2many_tags"/>
|
||||
<field name="status"/>
|
||||
<field name="update_person"/>
|
||||
<field name="update_time"/>
|
||||
@@ -40,30 +40,20 @@
|
||||
</group>
|
||||
</group>
|
||||
<group string="选择班次">
|
||||
<field name="working_shift_id"/>
|
||||
<field name="working_shift_ids"/>
|
||||
</group>
|
||||
<group string="工作时间">
|
||||
<group>
|
||||
<group>
|
||||
<field name="start_time"/>
|
||||
<field name="end_time"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="start_time_H"/>
|
||||
<field name="end_time_H"/>
|
||||
</group>
|
||||
<field name="start_time"/>
|
||||
</group>
|
||||
<group>
|
||||
<group>
|
||||
<field name="start_time_M"/>
|
||||
<field name="end_time_M"/>
|
||||
</group>
|
||||
<field name="end_time"/>
|
||||
</group>
|
||||
</group>
|
||||
<group>
|
||||
<group>
|
||||
<field name="duration"/>
|
||||
<field name="day_off_id"
|
||||
<field name="day_off_ids"
|
||||
widget="many2many_tags"
|
||||
options="{'no_create': True, 'no_quick_create': True}"/>
|
||||
</group>
|
||||
@@ -198,6 +188,7 @@
|
||||
<field name="arch" type="xml">
|
||||
<calendar string="工作日历" mode="year" date_start="date_time">
|
||||
<field name="name"/>
|
||||
<!-- <field name="monthly_rest_days" widget="char" position="right_bottom"/>-->
|
||||
</calendar>
|
||||
</field>
|
||||
</record>
|
||||
@@ -227,7 +218,7 @@
|
||||
<field name="create_time"/>
|
||||
<field name="status"/>
|
||||
<field name="participate_in_scheduling"/>
|
||||
<field name="production_line_id" invisible="True"/>
|
||||
<field name="name" invisible="True"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
@@ -240,7 +231,7 @@
|
||||
<sheet>
|
||||
<group string="生产线">
|
||||
<group>
|
||||
<field name="production_line_id"/>
|
||||
<field name="name"/>
|
||||
</group>
|
||||
</group>
|
||||
<group string="工作中心信息">
|
||||
@@ -296,7 +287,7 @@
|
||||
<field name="status"/>
|
||||
<field name="participate_in_scheduling"/>
|
||||
<searchpanel>
|
||||
<field name="production_line_id" icon="fa-building" enable_counters="1"/>
|
||||
<field name="name" icon="fa-building" enable_counters="1"/>
|
||||
</searchpanel>
|
||||
</search>
|
||||
</field>
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -62,16 +62,16 @@ function makeMenus(env, menusData, fetchLoadMenus) {
|
||||
return menusData[menuID];
|
||||
},
|
||||
getCurrentApp() {
|
||||
if (!currentAppId) {
|
||||
return;
|
||||
}
|
||||
var target_tag = '.o_navbar_apps_menu a.main_link[data-menu='+currentAppId+']'
|
||||
$(target_tag).addClass('active');
|
||||
if($(target_tag).hasClass('dropdown-btn')){
|
||||
var ultag = $(target_tag).parent().find('.header-sub-menus')
|
||||
$(ultag).addClass('show');
|
||||
}
|
||||
return this.getMenu(currentAppId);
|
||||
// if (!currentAppId) {
|
||||
// return;
|
||||
// }
|
||||
// var target_tag = '.o_navbar_apps_menu a.main_link[data-menu='+currentAppId+']'
|
||||
// $(target_tag).addClass('active');
|
||||
// if($(target_tag).hasClass('dropdown-btn')){
|
||||
// var ultag = $(target_tag).parent().find('.header-sub-menus')
|
||||
// $(ultag).addClass('show');
|
||||
// }
|
||||
// return this.getMenu(currentAppId);
|
||||
},
|
||||
getMenuAsTree(menuID) {
|
||||
const menu = this.getMenu(menuID);
|
||||
|
||||
1126
web_widget_model_viewer/static/src/lib/model-viewer.min.js
vendored
Normal file
1126
web_widget_model_viewer/static/src/lib/model-viewer.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user