Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into feature/优化agv接口
This commit is contained in:
@@ -36,7 +36,7 @@
|
|||||||
# 'jikimo_frontend/static/src/list/custom_import.js',
|
# 'jikimo_frontend/static/src/list/custom_import.js',
|
||||||
# 'jikimo_frontend/static/src/list/custom_width.js',
|
# 'jikimo_frontend/static/src/list/custom_width.js',
|
||||||
'jikimo_frontend/static/src/views/list_nums/extent_purchase.xml',
|
'jikimo_frontend/static/src/views/list_nums/extent_purchase.xml',
|
||||||
# 'jikimo_frontend/static/src/css/list_border_styles.css',
|
'jikimo_frontend/static/src/css/list_border_styles.css',
|
||||||
|
|
||||||
],
|
],
|
||||||
|
|
||||||
|
|||||||
@@ -133,7 +133,7 @@ $(function () {
|
|||||||
|
|
||||||
var currentUrl = location.href
|
var currentUrl = location.href
|
||||||
const customRequiredDom = {
|
const customRequiredDom = {
|
||||||
label: ['label[for=production_line_id]','label[for=date_approve]','label[for=partner_id]', 'label[for=validity_date]', '.o_horizontal[role=radiogroup]', 'label[for=vat]', 'label[for=phone]', 'label[for=mobile]', 'label[for=email]', 'label[for=category_id]','label[for=date_order]','label[for=picking_type_id]'],
|
label: ['label[for=production_line_id]','label[for=date_approve]','label[for=partner_id]', 'label[for=validity_date]', '.o_horizontal[role=radiogroup][aria-label="公司类别"]', 'label[for=vat]', 'label[for=phone]', 'label[for=mobile]', 'label[for=email]', 'label[for=category_id]','label[for=date_order]','label[for=picking_type_id]'],
|
||||||
table: ['product_template_id', 'product_uom_qty', 'price_unit','product_id','product_qty']
|
table: ['product_template_id', 'product_uom_qty', 'price_unit','product_id','product_qty']
|
||||||
}
|
}
|
||||||
const listenerUrl = setInterval(() => {
|
const listenerUrl = setInterval(() => {
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ div:has(.o_required_modifier) > label::before {
|
|||||||
color: red !important;
|
color: red !important;
|
||||||
padding: 0 4px !important;
|
padding: 0 4px !important;
|
||||||
vertical-align: top !important;
|
vertical-align: top !important;
|
||||||
font-size: 1.5rem !important;
|
font-size: unset !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.my-image div {
|
.my-image div {
|
||||||
@@ -325,7 +325,7 @@ div[class="o_content o_component_with_search_panel"] .show_state span {
|
|||||||
|
|
||||||
div:has(.o_required_modifier) > label::before {
|
div:has(.o_required_modifier) > label::before {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
left: -3px;
|
left: 24px;
|
||||||
}
|
}
|
||||||
|
|
||||||
//.o_form_view .o_form_label {
|
//.o_form_view .o_form_label {
|
||||||
@@ -449,4 +449,21 @@ div:has(.o_required_modifier) > label::before {
|
|||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 更改表格底部按钮样式
|
||||||
|
.o_list_renderer .o_field_x2many_list_row_add a,.treeHeaderBtn,.o_x2m_control_panel .o_cp_buttons .btn{
|
||||||
|
display: inline-block;
|
||||||
|
margin: 5px 0;
|
||||||
|
font-size: 14px;
|
||||||
|
color: #71639e;
|
||||||
|
border: 1px solid #71639e;
|
||||||
|
padding: 0.2rem 0.6rem;
|
||||||
|
font-size: 1.08333333rem;
|
||||||
|
border-radius: 0.25rem;
|
||||||
|
transition: all .3s;
|
||||||
|
}
|
||||||
|
.o_list_renderer .o_field_x2many_list_row_add a:hover,.treeHeaderBtn:hover,.o_x2m_control_panel .o_cp_buttons .btn:hover{
|
||||||
|
background: #71639e;
|
||||||
|
color: #fff
|
||||||
|
}
|
||||||
|
|||||||
@@ -106,6 +106,7 @@ class MachineTool(models.Model):
|
|||||||
lead_screw = fields.Char('丝杆')
|
lead_screw = fields.Char('丝杆')
|
||||||
workbench_L = fields.Char('工作台长度(mm)')
|
workbench_L = fields.Char('工作台长度(mm)')
|
||||||
workbench_W = fields.Char('工作台宽度(mm)')
|
workbench_W = fields.Char('工作台宽度(mm)')
|
||||||
|
workbench_H = fields.Char('工作台高度(mm)')
|
||||||
guide_rail = fields.Char('导轨')
|
guide_rail = fields.Char('导轨')
|
||||||
machine_tool_L = fields.Char('机床长度(mm)')
|
machine_tool_L = fields.Char('机床长度(mm)')
|
||||||
machine_tool_W = fields.Char('机床宽度(mm)')
|
machine_tool_W = fields.Char('机床宽度(mm)')
|
||||||
@@ -193,6 +194,7 @@ class MachineTool(models.Model):
|
|||||||
item.lead_screw = item.type_id.lead_screw
|
item.lead_screw = item.type_id.lead_screw
|
||||||
item.workbench_L = item.type_id.workbench_L
|
item.workbench_L = item.type_id.workbench_L
|
||||||
item.workbench_W = item.type_id.workbench_W
|
item.workbench_W = item.type_id.workbench_W
|
||||||
|
item.workbench_H = item.type_id.workbench_H
|
||||||
item.guide_rail = item.type_id.guide_rail
|
item.guide_rail = item.type_id.guide_rail
|
||||||
item.machine_tool_L = item.type_id.machine_tool_L
|
item.machine_tool_L = item.type_id.machine_tool_L
|
||||||
item.machine_tool_W = item.type_id.machine_tool_W
|
item.machine_tool_W = item.type_id.machine_tool_W
|
||||||
@@ -280,6 +282,7 @@ class MachineToolType(models.Model):
|
|||||||
workpiece_load = fields.Char('工件最大负载(kg)')
|
workpiece_load = fields.Char('工件最大负载(kg)')
|
||||||
workbench_L = fields.Char('工作台长度(mm)')
|
workbench_L = fields.Char('工作台长度(mm)')
|
||||||
workbench_W = fields.Char('工作台宽度(mm)')
|
workbench_W = fields.Char('工作台宽度(mm)')
|
||||||
|
workbench_H = fields.Char('工作台高度(mm)')
|
||||||
machine_tool_L = fields.Char('机床长度(mm)')
|
machine_tool_L = fields.Char('机床长度(mm)')
|
||||||
machine_tool_W = fields.Char('机床宽度(mm)')
|
machine_tool_W = fields.Char('机床宽度(mm)')
|
||||||
machine_tool_H = fields.Char('机床高度(mm)')
|
machine_tool_H = fields.Char('机床高度(mm)')
|
||||||
@@ -295,8 +298,9 @@ class MachineToolType(models.Model):
|
|||||||
x_axis = fields.Integer('X轴')
|
x_axis = fields.Integer('X轴')
|
||||||
y_axis = fields.Integer('Y轴')
|
y_axis = fields.Integer('Y轴')
|
||||||
z_axis = fields.Integer('Z轴')
|
z_axis = fields.Integer('Z轴')
|
||||||
b_axis = fields.Integer('B轴')
|
a_axis = fields.Char('a轴')
|
||||||
c_axis = fields.Integer('C轴')
|
b_axis = fields.Char('B轴')
|
||||||
|
c_axis = fields.Char('C轴')
|
||||||
remark = fields.Char('备注')
|
remark = fields.Char('备注')
|
||||||
control_system_id = fields.Many2one('sf.machine.control_system',
|
control_system_id = fields.Many2one('sf.machine.control_system',
|
||||||
string="控制系统")
|
string="控制系统")
|
||||||
@@ -309,7 +313,7 @@ class MachineToolType(models.Model):
|
|||||||
default="", string="轴数")
|
default="", string="轴数")
|
||||||
|
|
||||||
# 1212新增字段
|
# 1212新增字段
|
||||||
a_axis = fields.Integer('a轴')
|
|
||||||
function_type = fields.Selection(
|
function_type = fields.Selection(
|
||||||
[("ZXJGZX", "钻铣加工中心"), ("CXJGZX", "车削加工中心"), ("FHJGZX", "复合加工中心")],
|
[("ZXJGZX", "钻铣加工中心"), ("CXJGZX", "车削加工中心"), ("FHJGZX", "复合加工中心")],
|
||||||
default="", string="功能类型")
|
default="", string="功能类型")
|
||||||
@@ -335,23 +339,23 @@ class MachineToolType(models.Model):
|
|||||||
straight_cutting_feed_rate = fields.Char('直线切削进给速度(mm/min)')
|
straight_cutting_feed_rate = fields.Char('直线切削进给速度(mm/min)')
|
||||||
rotary_cutting_feed_rate = fields.Char('回转切削进给速度(mm/min)')
|
rotary_cutting_feed_rate = fields.Char('回转切削进给速度(mm/min)')
|
||||||
|
|
||||||
X_precision = fields.Float('X轴定位精度(mm)', digits=(12, 3))
|
X_precision = fields.Char('X轴定位精度(mm)')
|
||||||
X_precision_repeat = fields.Float('X轴重复定位精度(mm)', digits=(12, 3))
|
X_precision_repeat = fields.Char('X轴重复定位精度(mm)')
|
||||||
Y_precision = fields.Float('Y轴定位精度(mm)', digits=(12, 3))
|
Y_precision = fields.Char('Y轴定位精度(mm)')
|
||||||
Y_precision_repeat = fields.Float('Y轴重复定位精度(mm)', digits=(12, 3))
|
Y_precision_repeat = fields.Char('Y轴重复定位精度(mm)')
|
||||||
Z_precision = fields.Float('Z轴定位精度(mm)', digits=(12, 3))
|
Z_precision = fields.Char('Z轴定位精度(mm)')
|
||||||
Z_precision_repeat = fields.Float('Z轴重复定位精度(mm)', digits=(12, 3))
|
Z_precision_repeat = fields.Char('Z轴重复定位精度(mm)')
|
||||||
a_precision = fields.Float('a轴定位精度(mm)', digits=(12, 3))
|
a_precision = fields.Char('a轴定位精度(mm)')
|
||||||
a_precision_repeat = fields.Float('a轴重复定位精度(mm)', digits=(12, 3))
|
a_precision_repeat = fields.Char('a轴重复定位精度(mm)')
|
||||||
b_precision = fields.Float('b轴定位精度(mm)', digits=(12, 3))
|
b_precision = fields.Char('b轴定位精度(mm)')
|
||||||
b_precision_repeat = fields.Float('b轴重复定位精度(mm)', digits=(12, 3))
|
b_precision_repeat = fields.Char('b轴重复定位精度(mm)')
|
||||||
c_precision = fields.Float('c轴定位精度(mm)', digits=(12, 3))
|
c_precision = fields.Char('c轴定位精度(mm)')
|
||||||
c_precision_repeat = fields.Float('c轴重复定位精度(mm)', digits=(12, 3))
|
c_precision_repeat = fields.Char('c轴重复定位精度(mm)')
|
||||||
|
|
||||||
tool_full_diameter_max = fields.Float('刀具满刀最大直径(mm)')
|
tool_full_diameter_max = fields.Float('刀具满刀最大直径(mm)')
|
||||||
tool_perimeter_diameter_max = fields.Float('刀具邻空刀最大直径(mm)')
|
tool_perimeter_diameter_max = fields.Float('刀具邻空刀最大直径(mm)')
|
||||||
T_tool_time = fields.Integer('T-T换刀时间(s)')
|
T_tool_time = fields.Float('T-T换刀时间(s)', digits=(12, 1))
|
||||||
C_tool_time = fields.Integer('C-C换刀时间(s)')
|
C_tool_time = fields.Float('C-C换刀时间(s)', digits=(12, 1))
|
||||||
|
|
||||||
jg_image_id = fields.Many2many('maintenance.equipment.image', 'jg_equipment_id', string='加工能力',
|
jg_image_id = fields.Many2many('maintenance.equipment.image', 'jg_equipment_id', string='加工能力',
|
||||||
domain="[('type', '=', '加工能力')]")
|
domain="[('type', '=', '加工能力')]")
|
||||||
|
|||||||
@@ -73,11 +73,13 @@ access_sf_cutting_speed,sf_cutting_speed,model_sf_cutting_speed,base.group_user,
|
|||||||
access_sf_cutting_speed_admin,sf_cutting_speed_admin,model_sf_cutting_speed,base.group_system,1,1,1,0
|
access_sf_cutting_speed_admin,sf_cutting_speed_admin,model_sf_cutting_speed,base.group_system,1,1,1,0
|
||||||
access_sf_cutting_speed_group_purchase_director,sf_cutting_speed_group_purchase_director,model_sf_cutting_speed,sf_base.group_purchase_director,1,1,1,0
|
access_sf_cutting_speed_group_purchase_director,sf_cutting_speed_group_purchase_director,model_sf_cutting_speed,sf_base.group_purchase_director,1,1,1,0
|
||||||
access_sf_cutting_speed_group_sale_director,sf_cutting_speed_group_sale_director,model_sf_cutting_speed,sf_base.group_sale_director,1,1,1,0
|
access_sf_cutting_speed_group_sale_director,sf_cutting_speed_group_sale_director,model_sf_cutting_speed,sf_base.group_sale_director,1,1,1,0
|
||||||
|
access_sf_cutting_speed_group_plan_dispatch,sf_cutting_speed_group_plan_dispatch,model_sf_cutting_speed,sf_base.group_plan_dispatch,1,0,0,0
|
||||||
access_sf_cutting_speed_group_plan_director,sf_cutting_speed_group_plan_director,model_sf_cutting_speed,sf_base.group_plan_director,1,1,1,0
|
access_sf_cutting_speed_group_plan_director,sf_cutting_speed_group_plan_director,model_sf_cutting_speed,sf_base.group_plan_director,1,1,1,0
|
||||||
access_sf_cutting_speed_group_quality_director,sf_cutting_speed_group_quality_director,model_sf_cutting_speed,sf_base.group_quality_director,1,1,1,0
|
access_sf_cutting_speed_group_quality_director,sf_cutting_speed_group_quality_director,model_sf_cutting_speed,sf_base.group_quality_director,1,1,1,0
|
||||||
access_sf_cutting_speed_group_quality,sf_cutting_speed_group_quality,model_sf_cutting_speed,sf_base.group_quality,1,1,1,0
|
access_sf_cutting_speed_group_quality,sf_cutting_speed_group_quality,model_sf_cutting_speed,sf_base.group_quality,1,1,1,0
|
||||||
access_sf_feed_per_tooth_group_purchase_director,sf_feed_per_tooth_group_purchase_director,model_sf_feed_per_tooth,sf_base.group_purchase_director,1,1,0,0
|
access_sf_feed_per_tooth_group_purchase_director,sf_feed_per_tooth_group_purchase_director,model_sf_feed_per_tooth,sf_base.group_purchase_director,1,1,0,0
|
||||||
access_sf_feed_per_tooth_group_sale_director,sf_feed_per_tooth_group_sale_director,model_sf_feed_per_tooth,sf_base.group_sale_director,1,1,0,0
|
access_sf_feed_per_tooth_group_sale_director,sf_feed_per_tooth_group_sale_director,model_sf_feed_per_tooth,sf_base.group_sale_director,1,1,0,0
|
||||||
|
access_sf_feed_per_tooth_group_plan_dispatch,sf_feed_per_tooth_group_plan_dispatch,model_sf_feed_per_tooth,sf_base.group_plan_dispatch,1,0,0,0
|
||||||
access_sf_feed_per_tooth_group_plan_director,sf_feed_per_tooth_group_plan_director,model_sf_feed_per_tooth,sf_base.group_plan_director,1,1,0,0
|
access_sf_feed_per_tooth_group_plan_director,sf_feed_per_tooth_group_plan_director,model_sf_feed_per_tooth,sf_base.group_plan_director,1,1,0,0
|
||||||
access_sf_feed_per_tooth_group_sale_salemanager,sf_feed_per_tooth_group_sale_salemanager,model_sf_feed_per_tooth,sf_base.group_sale_salemanager,1,0,0,0
|
access_sf_feed_per_tooth_group_sale_salemanager,sf_feed_per_tooth_group_sale_salemanager,model_sf_feed_per_tooth,sf_base.group_sale_salemanager,1,0,0,0
|
||||||
access_sf_feed_per_tooth_group_quality,sf_feed_per_tooth_group_quality,model_sf_feed_per_tooth,sf_base.group_quality,1,1,1,0
|
access_sf_feed_per_tooth_group_quality,sf_feed_per_tooth_group_quality,model_sf_feed_per_tooth,sf_base.group_quality,1,1,1,0
|
||||||
@@ -153,6 +155,9 @@ access_purchase_order,purchase.order,purchase.model_purchase_order,sf_base.group
|
|||||||
access_res_partner,res.partner,base.model_res_partner,sf_base.group_plan_dispatch,1,0,0,0
|
access_res_partner,res.partner,base.model_res_partner,sf_base.group_plan_dispatch,1,0,0,0
|
||||||
access_purchase_order_line,purchase.order.line,purchase.model_purchase_order_line,sf_base.group_plan_dispatch,1,0,0,0
|
access_purchase_order_line,purchase.order.line,purchase.model_purchase_order_line,sf_base.group_plan_dispatch,1,0,0,0
|
||||||
access_account_move_line,account.move.line,account.model_account_move_line,sf_base.group_plan_dispatch,1,0,0,0
|
access_account_move_line,account.move.line,account.model_account_move_line,sf_base.group_plan_dispatch,1,0,0,0
|
||||||
|
|
||||||
|
access_sf_machine_tool_type_group_plan_dispatch,sf.machine_tool.type,model_sf_machine_tool_type,sf_base.group_plan_dispatch,1,0,0,0
|
||||||
|
|
||||||
access_sf_machine_tool,sf_machine_tool,model_sf_machine_tool,sf_base.group_sf_mrp_user,1,1,0,0
|
access_sf_machine_tool,sf_machine_tool,model_sf_machine_tool,sf_base.group_sf_mrp_user,1,1,0,0
|
||||||
access_sf_machine_tool_type,sf_machine_tool_type,model_sf_machine_tool_type,sf_base.group_sf_mrp_user,1,1,0,0
|
access_sf_machine_tool_type,sf_machine_tool_type,model_sf_machine_tool_type,sf_base.group_sf_mrp_user,1,1,0,0
|
||||||
access_sf_machine_brand,sf_machine_brand,model_sf_machine_brand,sf_base.group_sf_mrp_user,1,1,0,0
|
access_sf_machine_brand,sf_machine_brand,model_sf_machine_brand,sf_base.group_sf_mrp_user,1,1,0,0
|
||||||
|
|||||||
|
@@ -173,6 +173,10 @@
|
|||||||
<label for="workbench_W" string="宽"/>
|
<label for="workbench_W" string="宽"/>
|
||||||
<field name="workbench_W" class="o_address_zip" required="1"
|
<field name="workbench_W" class="o_address_zip" required="1"
|
||||||
options="{'format': false}"/>
|
options="{'format': false}"/>
|
||||||
|
<span>&nbsp;</span>
|
||||||
|
<label for="workbench_H" string="高"/>
|
||||||
|
<field name="workbench_H" class="o_address_zip" required="1"
|
||||||
|
options="{'format': false}"/>
|
||||||
</div>
|
</div>
|
||||||
<field name="workpiece_load"/>
|
<field name="workpiece_load"/>
|
||||||
<label for="machine_tool_L" string="机床尺寸(mm)"/>
|
<label for="machine_tool_L" string="机床尺寸(mm)"/>
|
||||||
@@ -239,15 +243,15 @@
|
|||||||
attrs="{'invisible': [('number_of_axles', '=', '三轴')]}"
|
attrs="{'invisible': [('number_of_axles', '=', '三轴')]}"
|
||||||
options="{'format': false}"/>
|
options="{'format': false}"/>
|
||||||
<span>&nbsp;</span>
|
<span>&nbsp;</span>
|
||||||
<label for="b_axis" string="b"
|
<label for="c_axis" string="c"
|
||||||
attrs="{'invisible': [('number_of_axles', 'in', ['三轴','四轴'])]}"/>
|
attrs="{'invisible': [('number_of_axles', 'in', ['三轴','四轴'])]}"/>
|
||||||
<field name="b_axis" class="o_address_zip"
|
<field name="c_axis" class="o_address_zip"
|
||||||
attrs="{'invisible': [('number_of_axles', 'in', ['三轴','四轴'])]}"
|
attrs="{'invisible': [('number_of_axles', 'in', ['三轴','四轴'])]}"
|
||||||
options="{'format': false}"/>
|
options="{'format': false}"/>
|
||||||
<span>&nbsp;</span>
|
<span>&nbsp;</span>
|
||||||
<label for="c_axis" string="c"
|
<label for="b_axis" string="b"
|
||||||
attrs="{'invisible': [('number_of_axles', 'in', ['三轴','四轴','五轴'])]}"/>
|
attrs="{'invisible': [('number_of_axles', 'in', ['三轴','四轴','五轴'])]}"/>
|
||||||
<field name="c_axis" class="o_address_zip"
|
<field name="b_axis" class="o_address_zip"
|
||||||
attrs="{'invisible': [('number_of_axles', 'in', ['三轴','四轴','五轴'])]}"
|
attrs="{'invisible': [('number_of_axles', 'in', ['三轴','四轴','五轴'])]}"
|
||||||
options="{'format': false}"/>
|
options="{'format': false}"/>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -7,7 +7,7 @@
|
|||||||
<field name="inherit_id" ref="sf_sale.view_product_template_form_inherit_sf"/>
|
<field name="inherit_id" ref="sf_sale.view_product_template_form_inherit_sf"/>
|
||||||
<field name="arch" type="xml">
|
<field name="arch" type="xml">
|
||||||
<field name="invoice_policy" position="after">
|
<field name="invoice_policy" position="after">
|
||||||
<field name='categ_id' attrs="{'readonly': [('id', '!=', False)]}"/>
|
<field name='categ_id' class="custom_required" attrs="{'readonly': [('id', '!=', False)]}"/>
|
||||||
<field name='is_bfm' invisible="1"/>
|
<field name='is_bfm' invisible="1"/>
|
||||||
<field name='categ_type' invisible="1"/>
|
<field name='categ_type' invisible="1"/>
|
||||||
<field name="upload_model_file"
|
<field name="upload_model_file"
|
||||||
|
|||||||
@@ -51,7 +51,7 @@ class SfEquipmentSaintenanceStandards(models.Model):
|
|||||||
domain="[('category_id', '=', maintenance_equipment_category_id)]"
|
domain="[('category_id', '=', maintenance_equipment_category_id)]"
|
||||||
)
|
)
|
||||||
maintenance_standards_ids = fields.One2many('maintenance.standards', 'equipment_maintenance_standards_id',
|
maintenance_standards_ids = fields.One2many('maintenance.standards', 'equipment_maintenance_standards_id',
|
||||||
string='维保项目', widget='one2many_list')
|
string='维保项目')
|
||||||
eq_maintenance_ids = fields.One2many('maintenance.equipment', 'eq_maintenance_id', string='保养设备')
|
eq_maintenance_ids = fields.One2many('maintenance.equipment', 'eq_maintenance_id', string='保养设备')
|
||||||
overhaul_ids = fields.One2many('maintenance.equipment', 'overhaul_id', string='检修设备')
|
overhaul_ids = fields.One2many('maintenance.equipment', 'overhaul_id', string='检修设备')
|
||||||
|
|
||||||
|
|||||||
@@ -47,7 +47,7 @@ class SfMaintenanceEquipment(models.Model):
|
|||||||
default="", string="轴数")
|
default="", string="轴数")
|
||||||
|
|
||||||
# 1212新增字段
|
# 1212新增字段
|
||||||
a_axis = fields.Integer('a轴')
|
|
||||||
function_type = fields.Selection(
|
function_type = fields.Selection(
|
||||||
[("ZXJGZX", "钻铣加工中心"), ("CXJGZX", "车削加工中心"), ("FHJGZX", "复合加工中心")],
|
[("ZXJGZX", "钻铣加工中心"), ("CXJGZX", "车削加工中心"), ("FHJGZX", "复合加工中心")],
|
||||||
default="", string="功能类型")
|
default="", string="功能类型")
|
||||||
@@ -73,23 +73,23 @@ class SfMaintenanceEquipment(models.Model):
|
|||||||
straight_cutting_feed_rate = fields.Char('直线切削进给速度(mm/min)')
|
straight_cutting_feed_rate = fields.Char('直线切削进给速度(mm/min)')
|
||||||
rotary_cutting_feed_rate = fields.Char('回转切削进给速度(mm/min)')
|
rotary_cutting_feed_rate = fields.Char('回转切削进给速度(mm/min)')
|
||||||
|
|
||||||
X_precision = fields.Float('X轴定位精度(mm)', digits=(12, 3))
|
X_precision = fields.Char('X轴定位精度(mm)')
|
||||||
X_precision_repeat = fields.Float('X轴重复定位精度(mm)', digits=(12, 3))
|
X_precision_repeat = fields.Char('X轴重复定位精度(mm)')
|
||||||
Y_precision = fields.Float('Y轴定位精度(mm)', digits=(12, 3))
|
Y_precision = fields.Char('Y轴定位精度(mm)')
|
||||||
Y_precision_repeat = fields.Float('Y轴重复定位精度(mm)', digits=(12, 3))
|
Y_precision_repeat = fields.Char('Y轴重复定位精度(mm)')
|
||||||
Z_precision = fields.Float('Z轴定位精度(mm)', digits=(12, 3))
|
Z_precision = fields.Char('Z轴定位精度(mm)')
|
||||||
Z_precision_repeat = fields.Float('Z轴重复定位精度(mm)', digits=(12, 3))
|
Z_precision_repeat = fields.Char('Z轴重复定位精度(mm)')
|
||||||
a_precision = fields.Float('a轴定位精度(mm)', digits=(12, 3))
|
a_precision = fields.Char('a轴定位精度(mm)')
|
||||||
a_precision_repeat = fields.Float('a轴重复定位精度(mm)', digits=(12, 3))
|
a_precision_repeat = fields.Char('a轴重复定位精度(mm)')
|
||||||
b_precision = fields.Float('b轴定位精度(mm)', digits=(12, 3))
|
b_precision = fields.Char('b轴定位精度(mm)')
|
||||||
b_precision_repeat = fields.Float('b轴重复定位精度(mm)', digits=(12, 3))
|
b_precision_repeat = fields.Char('b轴重复定位精度(mm)')
|
||||||
c_precision = fields.Float('c轴定位精度(mm)', digits=(12, 3))
|
c_precision = fields.Char('c轴定位精度(mm)')
|
||||||
c_precision_repeat = fields.Float('c轴重复定位精度(mm)', digits=(12, 3))
|
c_precision_repeat = fields.Char('c轴重复定位精度(mm)')
|
||||||
|
|
||||||
tool_full_diameter_max = fields.Float('刀具满刀最大直径(mm)')
|
tool_full_diameter_max = fields.Float('刀具满刀最大直径(mm)')
|
||||||
tool_perimeter_diameter_max = fields.Float('刀具邻空刀最大直径(mm)')
|
tool_perimeter_diameter_max = fields.Float('刀具邻空刀最大直径(mm)')
|
||||||
T_tool_time = fields.Integer('T-T换刀时间(s)')
|
T_tool_time = fields.Float('T-T换刀时间(s)', digits=(12, 1))
|
||||||
C_tool_time = fields.Integer('C-C换刀时间(s)')
|
C_tool_time = fields.Float('C-C换刀时间(s)', digits=(12, 1))
|
||||||
|
|
||||||
# 待删除字段
|
# 待删除字段
|
||||||
precision_min = fields.Float('X轴定位精度min(mm)', digits=(12, 3))
|
precision_min = fields.Float('X轴定位精度min(mm)', digits=(12, 3))
|
||||||
@@ -164,11 +164,12 @@ class SfMaintenanceEquipment(models.Model):
|
|||||||
number_of_knife_library = fields.Integer('刀库数量(把)')
|
number_of_knife_library = fields.Integer('刀库数量(把)')
|
||||||
rotate_speed = fields.Integer('转速')
|
rotate_speed = fields.Integer('转速')
|
||||||
# 加工进程
|
# 加工进程
|
||||||
|
a_axis = fields.Char('a轴')
|
||||||
x_axis = fields.Integer('X轴')
|
x_axis = fields.Integer('X轴')
|
||||||
y_axis = fields.Integer('Y轴')
|
y_axis = fields.Integer('Y轴')
|
||||||
z_axis = fields.Integer('Z轴')
|
z_axis = fields.Integer('Z轴')
|
||||||
b_axis = fields.Integer('B轴')
|
b_axis = fields.Char('B轴')
|
||||||
c_axis = fields.Integer('C轴')
|
c_axis = fields.Char('C轴')
|
||||||
remark = fields.Char('备注')
|
remark = fields.Char('备注')
|
||||||
is_binding = fields.Boolean('是否绑定机床', default=False)
|
is_binding = fields.Boolean('是否绑定机床', default=False)
|
||||||
control_system_id = fields.Many2one('sf.machine.control_system',
|
control_system_id = fields.Many2one('sf.machine.control_system',
|
||||||
@@ -191,6 +192,7 @@ class SfMaintenanceEquipment(models.Model):
|
|||||||
workpiece_load = fields.Char('工件最大负载(kg)')
|
workpiece_load = fields.Char('工件最大负载(kg)')
|
||||||
workbench_L = fields.Char('工作台长度(mm)')
|
workbench_L = fields.Char('工作台长度(mm)')
|
||||||
workbench_W = fields.Char('工作台宽度(mm)')
|
workbench_W = fields.Char('工作台宽度(mm)')
|
||||||
|
workbench_H = fields.Char('工作台高度(mm)')
|
||||||
machine_tool_L = fields.Char('机床长度(mm)')
|
machine_tool_L = fields.Char('机床长度(mm)')
|
||||||
machine_tool_W = fields.Char('机床宽度(mm)')
|
machine_tool_W = fields.Char('机床宽度(mm)')
|
||||||
machine_tool_H = fields.Char('机床高度(mm)')
|
machine_tool_H = fields.Char('机床高度(mm)')
|
||||||
@@ -384,8 +386,8 @@ class SfMaintenanceEquipment(models.Model):
|
|||||||
AGV_turning_radius = fields.Char('最小转弯半径')
|
AGV_turning_radius = fields.Char('最小转弯半径')
|
||||||
AGV_gradeability_max = fields.Integer('最大爬坡度')
|
AGV_gradeability_max = fields.Integer('最大爬坡度')
|
||||||
AGV_parking_accuracy = fields.Char('停车精度')
|
AGV_parking_accuracy = fields.Char('停车精度')
|
||||||
AGV_load_weight_max = fields.Char('最大负载重量')
|
AGV_load_weight_max = fields.Char('AGV最大负载重量')
|
||||||
AGV_weight = fields.Char('本体总重量')
|
AGV_weight = fields.Char('AGV本体总重量')
|
||||||
AGV_job_duration = fields.Char('连续作业时长')
|
AGV_job_duration = fields.Char('连续作业时长')
|
||||||
AGV_transfer_mode = fields.Char('移载方式')
|
AGV_transfer_mode = fields.Char('移载方式')
|
||||||
AGV_drive_motor_power = fields.Char('驱动电机功率')
|
AGV_drive_motor_power = fields.Char('驱动电机功率')
|
||||||
@@ -395,11 +397,11 @@ class SfMaintenanceEquipment(models.Model):
|
|||||||
AGV_veer_motor_speed_ratio = fields.Char('转向电机速比')
|
AGV_veer_motor_speed_ratio = fields.Char('转向电机速比')
|
||||||
AGV_move_motor_power = fields.Char('前移电机功率')
|
AGV_move_motor_power = fields.Char('前移电机功率')
|
||||||
AGV_move_motor_speed_ratio = fields.Char('前移电机速比')
|
AGV_move_motor_speed_ratio = fields.Char('前移电机速比')
|
||||||
AGV_drive_mode = fields.Char('驱动方式')
|
AGV_drive_mode = fields.Char('AGV驱动方式')
|
||||||
AGV_navigation_mode = fields.Char('导航方式')
|
AGV_navigation_mode = fields.Char('导航方式')
|
||||||
AGV_communication_mode = fields.Char('通讯方式')
|
AGV_communication_mode = fields.Char('通讯方式')
|
||||||
AGV_direction_travel = fields.Char('行走方向')
|
AGV_direction_travel = fields.Char('行走方向')
|
||||||
AGV_power_requirements = fields.Char('电源要求')
|
AGV_power_requirements = fields.Char('AGV电源要求')
|
||||||
AGV_charge_mode = fields.Selection([('手动', '手动'), ('自动', '自动')], string='充电方式')
|
AGV_charge_mode = fields.Selection([('手动', '手动'), ('自动', '自动')], string='充电方式')
|
||||||
AGV_security = fields.Char('安全防护')
|
AGV_security = fields.Char('安全防护')
|
||||||
AGV_operating_temperature = fields.Char('环境温度')
|
AGV_operating_temperature = fields.Char('环境温度')
|
||||||
@@ -416,8 +418,8 @@ class SfMaintenanceEquipment(models.Model):
|
|||||||
detect_measurement_mode = fields.Selection([('光栅尺', '光栅尺'), ('容栅', '容栅'), ('磁栅', '磁栅'),
|
detect_measurement_mode = fields.Selection([('光栅尺', '光栅尺'), ('容栅', '容栅'), ('磁栅', '磁栅'),
|
||||||
('激光干涉仪', '激光干涉仪')], string='测量方式')
|
('激光干涉仪', '激光干涉仪')], string='测量方式')
|
||||||
detect_resolution = fields.Char('分辨率')
|
detect_resolution = fields.Char('分辨率')
|
||||||
detect_load_weight_max = fields.Char('最大负载重量')
|
detect_load_weight_max = fields.Char('检测设备最大负载重量')
|
||||||
detect_weight = fields.Char('本体总重量')
|
detect_weight = fields.Char('检测设备本体总重量')
|
||||||
detect_measurement_length = fields.Char('深孔测量长度(max)')
|
detect_measurement_length = fields.Char('深孔测量长度(max)')
|
||||||
detect_control_mode = fields.Char('控制方式')
|
detect_control_mode = fields.Char('控制方式')
|
||||||
detect_balance_mode_for_Z = fields.Char('Z轴平衡方式')
|
detect_balance_mode_for_Z = fields.Char('Z轴平衡方式')
|
||||||
@@ -437,11 +439,11 @@ class SfMaintenanceEquipment(models.Model):
|
|||||||
robot_gripping_of_workpieces_W = fields.Char('可抓取工件(宽)')
|
robot_gripping_of_workpieces_W = fields.Char('可抓取工件(宽)')
|
||||||
robot_gripping_of_workpieces_H = fields.Char('可抓取工件(高)')
|
robot_gripping_of_workpieces_H = fields.Char('可抓取工件(高)')
|
||||||
robot_radius_of_the_boom = fields.Char('展臂半径')
|
robot_radius_of_the_boom = fields.Char('展臂半径')
|
||||||
robot_load_weight_max = fields.Char('最大负载重量')
|
robot_load_weight_max = fields.Char('机械臂最大负载重量')
|
||||||
robot_weight = fields.Char('本体总重量')
|
robot_weight = fields.Char('机械臂本体总重量')
|
||||||
robot_repeatable_positioning_accuracy = fields.Char('重复定位精度')
|
robot_repeatable_positioning_accuracy = fields.Char('重复定位精度')
|
||||||
robot_axis_num = fields.Selection([('2轴', '2轴'), ('3轴', '3轴'), ('4轴', '4轴'), ('5轴', '5轴'), ('6轴', '6轴'),
|
robot_axis_num = fields.Selection([('2轴', '2轴'), ('3轴', '3轴'), ('4轴', '4轴'), ('5轴', '5轴'), ('6轴', '6轴'),
|
||||||
('7轴', '7轴'), ('8轴', '8轴')], string='轴数')
|
('7轴', '7轴'), ('8轴', '8轴')], string='机械臂轴数')
|
||||||
axis_ids = fields.One2many('sf.robot.axis.num', 'equipment_id', string='动作范围')
|
axis_ids = fields.One2many('sf.robot.axis.num', 'equipment_id', string='动作范围')
|
||||||
robot_track_dimensions_L = fields.Char('轨道尺寸(长)')
|
robot_track_dimensions_L = fields.Char('轨道尺寸(长)')
|
||||||
robot_track_dimensions_W = fields.Char('轨道尺寸(宽)')
|
robot_track_dimensions_W = fields.Char('轨道尺寸(宽)')
|
||||||
@@ -518,6 +520,7 @@ class SfMaintenanceEquipment(models.Model):
|
|||||||
'lead_screw': item.lead_screw,
|
'lead_screw': item.lead_screw,
|
||||||
'workbench_L': item.workbench_L,
|
'workbench_L': item.workbench_L,
|
||||||
'workbench_W': item.workbench_W,
|
'workbench_W': item.workbench_W,
|
||||||
|
'workbench_H': item.workbench_H,
|
||||||
'guide_rail': item.guide_rail,
|
'guide_rail': item.guide_rail,
|
||||||
'machine_tool_L': item.machine_tool_L,
|
'machine_tool_L': item.machine_tool_L,
|
||||||
'machine_tool_W': item.machine_tool_W,
|
'machine_tool_W': item.machine_tool_W,
|
||||||
|
|||||||
@@ -1,24 +1,22 @@
|
|||||||
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
|
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
|
||||||
access_equipment_maintenance_standards,equipment_maintenance_standards,model_equipment_maintenance_standards,sf_group_equipment_user,1,1,1,0
|
access_equipment_maintenance_standards,equipment_maintenance_standards,model_equipment_maintenance_standards,sf_maintenance.sf_group_equipment_user,1,1,1,0
|
||||||
access_sf_maintenance_logs,sf_maintenance_logs,model_sf_maintenance_logs,sf_group_equipment_user,1,0,0,0
|
access_sf_maintenance_logs_sf_group_equipment_user,sf_maintenance_logs,model_sf_maintenance_logs,sf_maintenance.sf_group_equipment_user,1,0,0,0
|
||||||
access_sf_maintenance_logs,sf_maintenance_logs,model_sf_maintenance_logs,sf_group_equipment_manager,1,1,1,0
|
access_sf_maintenance_logs_sf_group_equipment_manager,sf_maintenance_logs,model_sf_maintenance_logs,sf_maintenance.sf_group_equipment_manager,1,1,1,0
|
||||||
access_maintenance_equipment,maintenance_equipment,model_maintenance_equipment,sf_group_equipment_user,1,0,0,0
|
access_maintenance_equipment_sf_group_equipment_user,maintenance_equipment,model_maintenance_equipment,sf_maintenance.sf_group_equipment_user,1,0,0,0
|
||||||
access_maintenance_equipment,maintenance_equipment,model_maintenance_equipment,sf_group_equipment_manager,1,1,1,0
|
access_maintenance_equipment,maintenance_equipment,model_maintenance_equipment,sf_maintenance.sf_group_equipment_manager,1,1,1,0
|
||||||
access_maintenance_equipment_oee,maintenance_equipment_oee,model_maintenance_equipment_oee,sf_group_equipment_user,1,0,0,0
|
access_maintenance_equipment_oee_sf_group_equipment_user,maintenance_equipment_oee,model_maintenance_equipment_oee,sf_maintenance.sf_group_equipment_user,1,0,0,0
|
||||||
access_maintenance_equipment_oee,maintenance_equipment_oee,model_maintenance_equipment_oee,sf_group_equipment_manager,1,1,1,0
|
access_maintenance_equipment_oee,maintenance_equipment_oee,model_maintenance_equipment_oee,sf_maintenance.sf_group_equipment_manager,1,1,1,0
|
||||||
access_maintenance_equipment_oee,maintenance_equipment_oee,model_maintenance_equipment_oee,base.group_user,1,1,1,1
|
access_maintenance_equipment_oee_logs_sf_group_equipment_user,maintenance_equipment_oee_logs,model_maintenance_equipment_oee_logs,sf_maintenance.sf_group_equipment_user,1,0,0,0
|
||||||
access_maintenance_equipment_oee_logs,maintenance_equipment_oee_logs,model_maintenance_equipment_oee_logs,sf_group_equipment_user,1,0,0,0
|
access_maintenance_equipment_oee_logs,maintenance_equipment_oee_logs,model_maintenance_equipment_oee_logs,sf_maintenance.sf_group_equipment_manager,1,1,1,0
|
||||||
access_maintenance_equipment_oee_logs,maintenance_equipment_oee_logs,model_maintenance_equipment_oee_logs,sf_group_equipment_manager,1,1,1,0
|
access_maintenance_standards_sf_group_equipment_user,maintenance_standards,model_maintenance_standards,sf_maintenance.sf_group_equipment_user,1,0,0,0
|
||||||
access_maintenance_equipment_oee_logs,maintenance_equipment_oee_logs,model_maintenance_equipment_oee_logs,base.group_user,1,1,1,1
|
access_maintenance_standards,maintenance_standards,model_maintenance_standards,sf_maintenance.sf_group_equipment_manager,1,1,1,0
|
||||||
access_maintenance_standards,maintenance_standards,model_maintenance_standards,sf_group_equipment_user,1,0,0,0
|
access_maintenance_standard_image_sf_group_equipment_user,maintenance_standard_image,model_maintenance_standard_image,sf_maintenance.sf_group_equipment_user,1,0,0,0
|
||||||
access_maintenance_standards,maintenance_standards,model_maintenance_standards,sf_group_equipment_manager,1,1,1,0
|
access_maintenance_standard_image,maintenance_standard_image,model_maintenance_standard_image,sf_maintenance.sf_group_equipment_manager,1,1,1,0
|
||||||
access_maintenance_standard_image,maintenance_standard_image,model_maintenance_standard_image,sf_group_equipment_user,1,0,0,0
|
access_sf_robot_axis_num_sf_group_equipment_user,sf_robot_axis_num,model_sf_robot_axis_num,sf_maintenance.sf_group_equipment_user,1,0,0,0
|
||||||
access_maintenance_standard_image,maintenance_standard_image,model_maintenance_standard_image,sf_group_equipment_manager,1,1,1,0
|
access_sf_robot_axis_num,sf_robot_axis_num,model_sf_robot_axis_num,sf_maintenance.sf_group_equipment_manager,1,1,1,0
|
||||||
access_sf_robot_axis_num,sf_robot_axis_num,model_sf_robot_axis_num,sf_group_equipment_user,1,0,0,0
|
access_maintenance_equipment_agv_log_sf_group_equipment_user,maintenance_equipment_agv_log,model_maintenance_equipment_agv_log,sf_maintenance.sf_group_equipment_user,1,0,0,0
|
||||||
access_sf_robot_axis_num,sf_robot_axis_num,model_sf_robot_axis_num,sf_group_equipment_manager,1,1,1,0
|
access_maintenance_equipment_agv_log,maintenance_equipment_agv_log,model_maintenance_equipment_agv_log,sf_maintenance.sf_group_equipment_manager,1,1,1,0
|
||||||
access_maintenance_equipment_agv_log,maintenance_equipment_agv_log,model_maintenance_equipment_agv_log,sf_group_equipment_user,1,0,0,0
|
|
||||||
access_maintenance_equipment_agv_log,maintenance_equipment_agv_log,model_maintenance_equipment_agv_log,sf_group_equipment_manager,1,1,1,0
|
|
||||||
access_maintenance_equipment_agv_log,maintenance_equipment_agv_log,model_maintenance_equipment_agv_log,base.group_user,1,1,1,1
|
|
||||||
|
|
||||||
|
|
||||||
access_maintenance_system_user,equipment.request system user,maintenance.model_maintenance_request,base.group_user,1,0,0,0
|
access_maintenance_system_user,equipment.request system user,maintenance.model_maintenance_request,base.group_user,1,0,0,0
|
||||||
@@ -29,5 +27,45 @@ access_sf_maintenance_logs_group_plan_dispatch,sf_maintenance_logs,model_sf_main
|
|||||||
access_maintenance_standard_image_group_plan_dispatch,maintenance_standard_image,model_maintenance_standard_image,sf_base.group_plan_dispatch,1,0,0,0
|
access_maintenance_standard_image_group_plan_dispatch,maintenance_standard_image,model_maintenance_standard_image,sf_base.group_plan_dispatch,1,0,0,0
|
||||||
access_equipment_maintenance_standards_group_plan_dispatch,equipment_maintenance_standards,model_equipment_maintenance_standards,sf_base.group_plan_dispatch,1,0,0,0
|
access_equipment_maintenance_standards_group_plan_dispatch,equipment_maintenance_standards,model_equipment_maintenance_standards,sf_base.group_plan_dispatch,1,0,0,0
|
||||||
access_maintenance_standards_group_plan_dispatch,maintenance_standards,model_maintenance_standards,sf_base.group_plan_dispatch,1,0,0,0
|
access_maintenance_standards_group_plan_dispatch,maintenance_standards,model_maintenance_standards,sf_base.group_plan_dispatch,1,0,0,0
|
||||||
|
access_maintenance_equipment_agv_log_group_plan_dispatch,maintenance.equipment.agv.log,model_maintenance_equipment_agv_log,sf_base.group_plan_dispatch,1,0,0,0
|
||||||
|
|
||||||
access_sf_robot_axis_num_group_plan_dispatch,sf.robot.axis.num,model_sf_robot_axis_num,sf_base.group_plan_dispatch,1,0,0,0
|
access_sf_robot_axis_num_group_plan_dispatch,sf.robot.axis.num,model_sf_robot_axis_num,sf_base.group_plan_dispatch,1,0,0,0
|
||||||
|
|
||||||
|
access_sf_machine_tool_sf_group_equipment_user,sf_machine_tool,sf_base.model_sf_machine_tool,sf_maintenance.sf_group_equipment_user,1,0,0,0
|
||||||
|
access_sf_machine_tool_admin_sf_group_equipment_user,sf_machine_tool_admin,sf_base.model_sf_machine_tool,sf_maintenance.sf_group_equipment_user,1,0,0,0
|
||||||
|
access_sf_machine_tool_type_sf_group_equipment_user,sf_machine_tool_type,sf_base.model_sf_machine_tool_type,sf_maintenance.sf_group_equipment_user,1,0,0,0
|
||||||
|
access_sf_machine_tool_type_admin_sf_group_equipment_user,sf_machine_tool_type_admin,sf_base.model_sf_machine_tool_type,sf_maintenance.sf_group_equipment_user,1,0,0,0
|
||||||
|
access_sf_machine_brand_sf_group_equipment_user,sf_machine_brand,sf_base.model_sf_machine_brand,sf_maintenance.sf_group_equipment_user,1,0,0,0
|
||||||
|
access_sf_machine_brand_admin_sf_group_equipment_user,sf_machine_brand_admin,sf_base.model_sf_machine_brand,sf_maintenance.sf_group_equipment_user,1,0,0,0
|
||||||
|
access_sf_machine_brand_tags_sf_group_equipment_user,sf_machine_brand_tags,sf_base.model_sf_machine_brand_tags,sf_maintenance.sf_group_equipment_user,1,0,0,0
|
||||||
|
access_sf_machine_brand_tags_admin_sf_group_equipment_user,sf_machine_brand_tags_admin,sf_base.model_sf_machine_brand_tags,sf_maintenance.sf_group_equipment_user,1,0,0,0
|
||||||
|
access_sf_machine_control_system_sf_group_equipment_user,sf_machine_control_system,sf_base.model_sf_machine_control_system,sf_maintenance.sf_group_equipment_user,1,0,0,0
|
||||||
|
access_sf_machine_control_system_admin_sf_group_equipment_user,sf_machine_control_system_admin,sf_base.model_sf_machine_control_system,sf_maintenance.sf_group_equipment_user,1,0,0,0
|
||||||
|
access_sf_processing_order_sf_group_equipment_user,sf_processing_order,sf_base.model_sf_processing_order,sf_maintenance.sf_group_equipment_user,1,0,0,0
|
||||||
|
access_sf_processing_order_admin_sf_group_equipment_user,sf_processing_order_admin,sf_base.model_sf_processing_order,sf_maintenance.sf_group_equipment_user,1,0,0,0
|
||||||
|
access_sf_production_process_sf_group_equipment_user,sf_production_process,sf_base.model_sf_production_process,sf_maintenance.sf_group_equipment_user,1,0,0,0
|
||||||
|
access_sf_production_process_admin_sf_group_equipment_user,sf_production_process_admin,sf_base.model_sf_production_process,sf_maintenance.sf_group_equipment_user,1,0,0,0
|
||||||
|
access_sf_production_materials_sf_group_equipment_user,sf_production_materials,sf_base.model_sf_production_materials,sf_maintenance.sf_group_equipment_user,1,0,0,0
|
||||||
|
access_sf_production_materials_admin_sf_group_equipment_user,sf_production_materials_admin,sf_base.model_sf_production_materials,sf_maintenance.sf_group_equipment_user,1,0,0,0
|
||||||
|
access_sf_materials_model_sf_group_equipment_user,sf_materials_model,sf_base.model_sf_materials_model,sf_maintenance.sf_group_equipment_user,1,0,0,0
|
||||||
|
access_sf_materials_model_admin_sf_group_equipment_user,sf_materials_model_admin,sf_base.model_sf_materials_model,sf_maintenance.sf_group_equipment_user,1,0,0,0
|
||||||
|
access_sf_processing_technology_sf_group_equipment_user,sf_processing_technology,sf_base.model_sf_processing_technology,sf_maintenance.sf_group_equipment_user,1,0,0,0
|
||||||
|
access_sf_processing_technology_admin_sf_group_equipment_user,sf_processing_technology_admin,sf_base.model_sf_processing_technology,sf_maintenance.sf_group_equipment_user,1,0,0,0
|
||||||
|
access_sf_supplier_sort_sf_group_equipment_user,sf_supplier_sort,sf_base.model_sf_supplier_sort,sf_maintenance.sf_group_equipment_user,1,0,0,0
|
||||||
|
access_sf_supplier_sort_admin_sf_group_equipment_user,sf_supplier_sort_admin,sf_base.model_sf_supplier_sort,sf_maintenance.sf_group_equipment_user,1,0,0,0
|
||||||
|
access_sf_production_process_parameter_sf_group_equipment_user,sf_production_process_parameter,sf_base.model_sf_production_process_parameter,sf_maintenance.sf_group_equipment_user,1,0,0,0
|
||||||
|
access_sf_production_process_parameter_group_plan_director_sf_group_equipment_user,sf_production_process_parameter_group_plan_director,sf_base.model_sf_production_process_parameter,sf_maintenance.sf_group_equipment_user,1,0,0,0
|
||||||
|
access_sf_production_process_parameter_group_purchase_director_sf_group_equipment_user,sf_production_process_parameter_group_purchase_director,sf_base.model_sf_production_process_parameter,sf_maintenance.sf_group_equipment_user,1,0,0,0
|
||||||
|
access_sf_production_process_parameter_group_sale_director_sf_group_equipment_user,sf_production_process_parameter_group_sale_director,sf_base.model_sf_production_process_parameter,sf_maintenance.sf_group_equipment_user,1,0,0,0
|
||||||
|
access_sf_production_process_parameter_admin_sf_group_equipment_user,sf_production_process_parameter_admin,sf_base.model_sf_production_process_parameter,sf_maintenance.sf_group_equipment_user,1,0,0,0
|
||||||
|
access_sf_production_process_category_sf_group_equipment_user,sf_production_process_category,sf_base.model_sf_production_process_category,sf_maintenance.sf_group_equipment_user,1,0,0,0
|
||||||
|
access_sf_production_process_category_admin_sf_group_equipment_user,sf_production_process_category_admin,sf_base.model_sf_production_process_category,sf_maintenance.sf_group_equipment_user,1,0,0,0
|
||||||
|
access_sf_machine_tool_category_sf_group_equipment_user,sf_machine_tool_category,sf_base.model_sf_machine_tool_category,sf_maintenance.sf_group_equipment_user,1,0,0,0
|
||||||
|
access_sf_machine_tool_category_admin_sf_group_equipment_user,sf_machine_tool_category_admin,sf_base.model_sf_machine_tool_category,sf_maintenance.sf_group_equipment_user,1,0,0,0
|
||||||
|
access_sf_cutting_tool_material_sf_group_equipment_user,sf_cutting_tool_material,sf_base.model_sf_cutting_tool_material,sf_maintenance.sf_group_equipment_user,1,0,0,0
|
||||||
|
access_sf_cutting_tool_material_admin_sf_group_equipment_user,sf_cutting_tool_material_admin,sf_base.model_sf_cutting_tool_material,sf_maintenance.sf_group_equipment_user,1,0,0,0
|
||||||
|
access_sf_cutting_tool_type_sf_group_equipment_user,sf_cutting_tool_type,sf_base.model_sf_cutting_tool_type,sf_maintenance.sf_group_equipment_user,1,0,0,0
|
||||||
|
access_sf_cutting_tool_type_admin_sf_group_equipment_user,sf_cutting_tool_type_admin,sf_base.model_sf_cutting_tool_type,sf_maintenance.sf_group_equipment_user,1,0,0,0
|
||||||
|
access_sf_cutting_tool_type_group_purchase_director_sf_group_equipment_user,sf_cutting_tool_type_group_purchase_director,sf_base.model_sf_cutting_tool_type,sf_maintenance.sf_group_equipment_user,1,0,0,0
|
||||||
|
access_sf_cutting_tool_type_group_sale_director_sf_group_equipment_user,sf_cutting_tool_type_group_sale_director,sf_base.model_sf_cutting_tool_type,sf_maintenance.sf_group_equipment_user,1,0,0,0
|
||||||
|
access_sf_cutting_tool_type_group_plan_director_sf_group_equipment_user,sf_cutting_tool_type_group_plan_director,sf_base.model_sf_cutting_tool_type,sf_maintenance.sf_group_equipment_user,1,0,0,0
|
||||||
|
|||||||
|
@@ -12,14 +12,14 @@
|
|||||||
<group>
|
<group>
|
||||||
<field name="code" readonly="1" force_save="1"/>
|
<field name="code" readonly="1" force_save="1"/>
|
||||||
<field name="name" readonly="1" force_save="1"/>
|
<field name="name" readonly="1" force_save="1"/>
|
||||||
<field name="maintenance_equipment_category_id" required="1"/>
|
<field name="maintenance_equipment_category_id" required="1" class="custom_required"/>
|
||||||
<field name="eq_maintenance_ids" invisible='1'/>
|
<field name="eq_maintenance_ids" invisible='1'/>
|
||||||
<field name="overhaul_ids" invisible='1'/>
|
<field name="overhaul_ids" invisible='1'/>
|
||||||
|
|
||||||
|
|
||||||
</group>
|
</group>
|
||||||
<group>
|
<group>
|
||||||
<field name="maintenance_type" required="1"/>
|
<field name="maintenance_type" required="1" class="custom_required"/>
|
||||||
<field name="created_user_id"/>
|
<field name="created_user_id"/>
|
||||||
<field name="remark"/>
|
<field name="remark"/>
|
||||||
</group>
|
</group>
|
||||||
@@ -33,10 +33,10 @@
|
|||||||
|
|
||||||
<field name="maintenance_standards_ids">
|
<field name="maintenance_standards_ids">
|
||||||
<tree editable="bottom">
|
<tree editable="bottom">
|
||||||
<field name="name"/>
|
<field name="name" class="table_custom_required"/>
|
||||||
<field name="fault_type"/>
|
<field name="fault_type" class="table_custom_required"/>
|
||||||
<field name="maintenance_standards"/>
|
<field name="maintenance_standards" class="table_custom_required"/>
|
||||||
<field name="Period"/>
|
<field name="Period" class="table_custom_required"/>
|
||||||
</tree>
|
</tree>
|
||||||
</field>
|
</field>
|
||||||
</page>
|
</page>
|
||||||
|
|||||||
@@ -82,11 +82,11 @@
|
|||||||
<page string="维保标准" attrs="{'invisible': [('equipment_maintenance_id', '=', False)]}" context="{'default_standard_id': 'id'}">
|
<page string="维保标准" attrs="{'invisible': [('equipment_maintenance_id', '=', False)]}" context="{'default_standard_id': 'id'}">
|
||||||
<field name="maintenance_standards" widget="one2many_list">
|
<field name="maintenance_standards" widget="one2many_list">
|
||||||
<tree multi_edit="" editable="">
|
<tree multi_edit="" editable="">
|
||||||
<field name="name" />
|
<field name="name" class="table_custom_required"/>
|
||||||
<field name="maintenance_standards"/>
|
<field name="maintenance_standards" class="table_custom_required"/>
|
||||||
<field name="images" force_save="1" required="1">
|
<field name="images" force_save="1" required="1" class="table_custom_required">
|
||||||
</field>
|
</field>
|
||||||
<field name="remark"/>
|
<field name="remark" class="table_custom_required"/>
|
||||||
</tree>
|
</tree>
|
||||||
</field>
|
</field>
|
||||||
</page>
|
</page>
|
||||||
|
|||||||
@@ -60,9 +60,9 @@
|
|||||||
<field name="function_type"/>
|
<field name="function_type"/>
|
||||||
<field name="code" readonly="1"/>
|
<field name="code" readonly="1"/>
|
||||||
<field name="equipment_type" invisible="1"/>
|
<field name="equipment_type" invisible="1"/>
|
||||||
<field name="brand_id" force_save="1"/>
|
<field name="brand_id" force_save="1" class="custom_required"/>
|
||||||
<field name="type_id" attrs="{'required': [('equipment_type', '=', '机床')]}"
|
<field name="type_id" attrs="{'required': [('equipment_type', '=', '机床')]}"
|
||||||
domain="[('brand_id', '=', brand_id)]"/>
|
domain="[('brand_id', '=', brand_id)]" class="custom_required"/>
|
||||||
<field name="machine_tool_category" readonly="1" attrs="{'invisible': [('type_id', '=', False)]}"
|
<field name="machine_tool_category" readonly="1" attrs="{'invisible': [('type_id', '=', False)]}"
|
||||||
force_save="1"/>
|
force_save="1"/>
|
||||||
<field name="run_time" force_save="1"/>
|
<field name="run_time" force_save="1"/>
|
||||||
@@ -73,9 +73,9 @@
|
|||||||
<group>
|
<group>
|
||||||
<group string="基础参数">
|
<group string="基础参数">
|
||||||
<field name="control_system_id" attrs="{'required': [('equipment_type', '=', '机床')]}"
|
<field name="control_system_id" attrs="{'required': [('equipment_type', '=', '机床')]}"
|
||||||
options="{'no_create': True}"/>
|
options="{'no_create': True}" class="custom_required"/>
|
||||||
<label for="workbench_L" string="工作台尺寸(mm)"/>
|
<label for="workbench_L" string="工作台尺寸(mm)"/>
|
||||||
<div class="test_model">
|
<div class="test_model custom_required">
|
||||||
<label for="workbench_L" string="长"/>
|
<label for="workbench_L" string="长"/>
|
||||||
<field name="workbench_L" class="o_address_zip"
|
<field name="workbench_L" class="o_address_zip"
|
||||||
attrs="{'required': [('equipment_type', '=', '机床')]}"
|
attrs="{'required': [('equipment_type', '=', '机床')]}"
|
||||||
@@ -85,6 +85,11 @@
|
|||||||
<field name="workbench_W" class="o_address_zip"
|
<field name="workbench_W" class="o_address_zip"
|
||||||
attrs="{'required': [('equipment_type', '=', '机床')]}"
|
attrs="{'required': [('equipment_type', '=', '机床')]}"
|
||||||
options="{'format': false}"/>
|
options="{'format': false}"/>
|
||||||
|
<span>&nbsp;</span>
|
||||||
|
<label for="workbench_H" string="高"/>
|
||||||
|
<field name="workbench_H" class="o_address_zip"
|
||||||
|
attrs="{'required': [('equipment_type', '=', '机床')]}"
|
||||||
|
options="{'format': false}"/>
|
||||||
</div>
|
</div>
|
||||||
<field name="workpiece_load"/>
|
<field name="workpiece_load"/>
|
||||||
<label for="machine_tool_L" string="机床尺寸(mm)"/>
|
<label for="machine_tool_L" string="机床尺寸(mm)"/>
|
||||||
@@ -129,7 +134,7 @@
|
|||||||
<!-- <field name="guide_rail" required="1"/>-->
|
<!-- <field name="guide_rail" required="1"/>-->
|
||||||
<field name="number_of_axles" attrs="{'required': [('equipment_type', '=', '机床')]}"
|
<field name="number_of_axles" attrs="{'required': [('equipment_type', '=', '机床')]}"
|
||||||
widget="radio"
|
widget="radio"
|
||||||
options="{'horizontal': true}"/>
|
options="{'horizontal': true}" class="custom_required"/>
|
||||||
<label for="x_axis" string="加工行程(mm)"
|
<label for="x_axis" string="加工行程(mm)"
|
||||||
attrs="{'invisible': [('number_of_axles', '=', False)]}"/>
|
attrs="{'invisible': [('number_of_axles', '=', False)]}"/>
|
||||||
<div class="test_model"
|
<div class="test_model"
|
||||||
@@ -155,15 +160,15 @@
|
|||||||
attrs="{'invisible': [('number_of_axles', '=', '三轴')]}"
|
attrs="{'invisible': [('number_of_axles', '=', '三轴')]}"
|
||||||
options="{'format': false}"/>
|
options="{'format': false}"/>
|
||||||
<span>&nbsp;</span>
|
<span>&nbsp;</span>
|
||||||
<label for="b_axis" string="b"
|
<label for="c_axis" string="c"
|
||||||
attrs="{'invisible': [('number_of_axles', 'in', ['三轴','四轴'])]}"/>
|
attrs="{'invisible': [('number_of_axles', 'in', ['三轴','四轴'])]}"/>
|
||||||
<field name="b_axis" class="o_address_zip"
|
<field name="c_axis" class="o_address_zip"
|
||||||
attrs="{'invisible': [('number_of_axles', 'in', ['三轴','四轴'])]}"
|
attrs="{'invisible': [('number_of_axles', 'in', ['三轴','四轴'])]}"
|
||||||
options="{'format': false}"/>
|
options="{'format': false}"/>
|
||||||
<span>&nbsp;</span>
|
<span>&nbsp;</span>
|
||||||
<label for="c_axis" string="c"
|
<label for="b_axis" string="b"
|
||||||
attrs="{'invisible': [('number_of_axles', 'in', ['三轴','四轴','五轴'])]}"/>
|
attrs="{'invisible': [('number_of_axles', 'in', ['三轴','四轴','五轴'])]}"/>
|
||||||
<field name="c_axis" class="o_address_zip"
|
<field name="b_axis" class="o_address_zip"
|
||||||
attrs="{'invisible': [('number_of_axles', 'in', ['三轴','四轴','五轴'])]}"
|
attrs="{'invisible': [('number_of_axles', 'in', ['三轴','四轴','五轴'])]}"
|
||||||
options="{'format': false}"/>
|
options="{'format': false}"/>
|
||||||
</div>
|
</div>
|
||||||
@@ -173,7 +178,7 @@
|
|||||||
<!-- <field name="knife_type" required="1"/>-->
|
<!-- <field name="knife_type" required="1"/>-->
|
||||||
<field name="number_of_knife_library"
|
<field name="number_of_knife_library"
|
||||||
attrs="{'required': [('equipment_type', '=', '机床')]}"
|
attrs="{'required': [('equipment_type', '=', '机床')]}"
|
||||||
options="{'format': false}"/>
|
class="custom_required"/>
|
||||||
<!-- <field name="tool_speed" required="1"/>-->
|
<!-- <field name="tool_speed" required="1"/>-->
|
||||||
<field name="tool_full_diameter_max"/>
|
<field name="tool_full_diameter_max"/>
|
||||||
<field name="tool_perimeter_diameter_max"/>
|
<field name="tool_perimeter_diameter_max"/>
|
||||||
@@ -193,7 +198,7 @@
|
|||||||
<field name="C_tool_time"/>
|
<field name="C_tool_time"/>
|
||||||
</group>
|
</group>
|
||||||
<group string="主轴">
|
<group string="主轴">
|
||||||
<field name="taper_type_id" attrs="{'required': [('equipment_type', '=', '机床')]}"/>
|
<field name="taper_type_id" attrs="{'required': [('equipment_type', '=', '机床')]}" class="custom_required"/>
|
||||||
<label for="distance_min" string="主轴端面-工作台距离(mm)"/>
|
<label for="distance_min" string="主轴端面-工作台距离(mm)"/>
|
||||||
<div class="test_model">
|
<div class="test_model">
|
||||||
<label for="distance_min" string="最小(min)"/>
|
<label for="distance_min" string="最小(min)"/>
|
||||||
|
|||||||
@@ -210,7 +210,7 @@ class Manufacturing_Connect(http.Controller):
|
|||||||
'state': 'finished'})
|
'state': 'finished'})
|
||||||
production_obj = request.env['mrp.production'].sudo().search([('name', '=', production_id)])
|
production_obj = request.env['mrp.production'].sudo().search([('name', '=', production_id)])
|
||||||
if production_obj:
|
if production_obj:
|
||||||
production_obj.sudo().schedule_state = '已完成'
|
production_obj.sudo().work_order_state = '已完成'
|
||||||
production_obj.write({'state': 'completed'})
|
production_obj.write({'state': 'completed'})
|
||||||
request.env['sale.order'].sudo().search(
|
request.env['sale.order'].sudo().search(
|
||||||
[('name', '=', production_obj.origin)]).write({'schedule_status': 'to deliver'})
|
[('name', '=', production_obj.origin)]).write({'schedule_status': 'to deliver'})
|
||||||
|
|||||||
@@ -20,6 +20,8 @@ class MrpProduction(models.Model):
|
|||||||
model_file = fields.Binary('模型文件', related='product_id.model_file')
|
model_file = fields.Binary('模型文件', related='product_id.model_file')
|
||||||
schedule_state = fields.Selection([('未排', '未排'), ('已排', '已排'), ('已完成', '已完成')],
|
schedule_state = fields.Selection([('未排', '未排'), ('已排', '已排'), ('已完成', '已完成')],
|
||||||
string='排程状态', default='未排')
|
string='排程状态', default='未排')
|
||||||
|
work_order_state = fields.Selection([('未排', '未排'), ('已排', '已排'), ('已完成', '已完成')],
|
||||||
|
string='工单状态', default='未排')
|
||||||
|
|
||||||
# state = fields.Selection(selection_add=[
|
# state = fields.Selection(selection_add=[
|
||||||
# ('pending_scheduling', '待排程'),
|
# ('pending_scheduling', '待排程'),
|
||||||
@@ -53,8 +55,7 @@ class MrpProduction(models.Model):
|
|||||||
production_line_id = fields.Many2one('sf.production.line', string='生产线')
|
production_line_id = fields.Many2one('sf.production.line', string='生产线')
|
||||||
plan_start_processing_time = fields.Datetime('计划开始加工时间')
|
plan_start_processing_time = fields.Datetime('计划开始加工时间')
|
||||||
production_line_state = fields.Selection([('待上产线', '待上产线'), ('已上产线', '已上产线'), ('已下产线', '已下产线')],
|
production_line_state = fields.Selection([('待上产线', '待上产线'), ('已上产线', '已上产线'), ('已下产线', '已下产线')],
|
||||||
string='上/下产线', default='待上产线')
|
string='上/下产线', default='待上产线')
|
||||||
|
|
||||||
|
|
||||||
@api.depends(
|
@api.depends(
|
||||||
'move_raw_ids.state', 'move_raw_ids.quantity_done', 'move_finished_ids.state',
|
'move_raw_ids.state', 'move_raw_ids.quantity_done', 'move_finished_ids.state',
|
||||||
@@ -94,7 +95,9 @@ class MrpProduction(models.Model):
|
|||||||
production.state = 'pending_processing'
|
production.state = 'pending_processing'
|
||||||
# elif production.state == 'progress' and production.schedule_state == '已完成':
|
# elif production.state == 'progress' and production.schedule_state == '已完成':
|
||||||
# production.state = 'completed'
|
# production.state = 'completed'
|
||||||
elif production.state == 'pending_processing' and production.schedule_state == '已完成':
|
elif production.state == 'pending_processing' and production.work_order_state == '已完成':
|
||||||
|
production.state = 'completed'
|
||||||
|
elif production.state == 'progress' and production.work_order_state == '已完成':
|
||||||
production.state = 'completed'
|
production.state = 'completed'
|
||||||
|
|
||||||
def action_check(self):
|
def action_check(self):
|
||||||
|
|||||||
@@ -134,6 +134,7 @@ class ResMrpWorkOrder(models.Model):
|
|||||||
workpiece_delivery_ids = fields.One2many('sf.workpiece.delivery', 'workorder_id', '工件配送')
|
workpiece_delivery_ids = fields.One2many('sf.workpiece.delivery', 'workorder_id', '工件配送')
|
||||||
is_delivery = fields.Boolean('是否配送完成', default=False)
|
is_delivery = fields.Boolean('是否配送完成', default=False)
|
||||||
rfid_code = fields.Char('RFID码')
|
rfid_code = fields.Char('RFID码')
|
||||||
|
rfid_code_old = fields.Char('RFID码(已解除)')
|
||||||
production_line_id = fields.Many2one('sf.production.line', related='production_id.production_line_id',
|
production_line_id = fields.Many2one('sf.production.line', related='production_id.production_line_id',
|
||||||
string='生产线', store=True)
|
string='生产线', store=True)
|
||||||
production_line_state = fields.Selection(related='production_id.production_line_state',
|
production_line_state = fields.Selection(related='production_id.production_line_state',
|
||||||
@@ -633,6 +634,7 @@ class ResMrpWorkOrder(models.Model):
|
|||||||
is_production_id = False
|
is_production_id = False
|
||||||
if is_production_id == True and self.name == '解除装夹':
|
if is_production_id == True and self.name == '解除装夹':
|
||||||
for workorder in self.production_id.workorder_ids:
|
for workorder in self.production_id.workorder_ids:
|
||||||
|
workorder.rfid_code_old = workorder.rfid_code
|
||||||
workorder.rfid_code = None
|
workorder.rfid_code = None
|
||||||
for move_raw_id in self.production_id.move_raw_ids:
|
for move_raw_id in self.production_id.move_raw_ids:
|
||||||
move_raw_id.quantity_done = move_raw_id.product_uom_qty
|
move_raw_id.quantity_done = move_raw_id.product_uom_qty
|
||||||
|
|||||||
@@ -1,32 +1,32 @@
|
|||||||
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
|
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
|
||||||
access_sf_cnc_processing,sf_cnc_processing,model_sf_cnc_processing,sf_base.group_sf_mrp_user,1,0,0,0
|
access_sf_cnc_processing_group_sf_mrp_user,sf_cnc_processing,model_sf_cnc_processing,sf_base.group_sf_mrp_user,1,0,0,0
|
||||||
access_sf_cnc_processing_manager,sf_cnc_processing,model_sf_cnc_processing,sf_base.group_sf_mrp_manager,1,1,1,0
|
access_sf_cnc_processing_manager,sf_cnc_processing,model_sf_cnc_processing,sf_base.group_sf_mrp_manager,1,1,1,0
|
||||||
access_sf_cmm_program_group_sf_mrp_user,sf_cmm_program_group_sf_mrp_user,model_sf_cmm_program,sf_base.group_sf_mrp_user,1,0,0,0
|
access_sf_cmm_program_group_sf_mrp_user_group_sf_mrp_user,sf_cmm_program_group_sf_mrp_user,model_sf_cmm_program,sf_base.group_sf_mrp_user,1,0,0,0
|
||||||
access_sf_cmm_program_group_sf_mrp_manager,sf_cmm_program_group_sf_mrp_manager,model_sf_cmm_program,sf_base.group_sf_mrp_manager,1,0,0,0
|
access_sf_cmm_program_group_sf_mrp_manager,sf_cmm_program_group_sf_mrp_manager,model_sf_cmm_program,sf_base.group_sf_mrp_manager,1,0,0,0
|
||||||
access_sf_model_type,sf_model_type,model_sf_model_type,sf_base.group_sf_mrp_user,1,0,0,0
|
access_sf_model_type_group_sf_mrp_user,sf_model_type,model_sf_model_type,sf_base.group_sf_mrp_user,1,0,0,0
|
||||||
access_sf_model_type_admin,sf_model_type_admin,model_sf_model_type,base.group_system,1,1,1,0
|
access_sf_model_type_admin,sf_model_type_admin,model_sf_model_type,base.group_system,1,1,1,0
|
||||||
access_sf_model_type_manager,sf_model_type,model_sf_model_type,sf_base.group_sf_mrp_manager,1,1,1,0
|
access_sf_model_type_manager,sf_model_type,model_sf_model_type,sf_base.group_sf_mrp_manager,1,1,1,0
|
||||||
access_sf_model_type_group_sale_director,sf_model_type_group_sale_director,model_sf_model_type,sf_base.group_sale_director,1,0,0,0
|
access_sf_model_type_group_sale_director,sf_model_type_group_sale_director,model_sf_model_type,sf_base.group_sale_director,1,0,0,0
|
||||||
access_sf_model_type_group_purchase_director,sf_model_type_group_purchase_director,model_sf_model_type,sf_base.group_purchase_director,1,0,0,0
|
access_sf_model_type_group_purchase_director,sf_model_type_group_purchase_director,model_sf_model_type,sf_base.group_purchase_director,1,0,0,0
|
||||||
access_sf_model_type_group_plan_director,sf_model_type_group_plan_director,model_sf_model_type,sf_base.group_plan_director,1,0,0,0
|
access_sf_model_type_group_plan_director,sf_model_type_group_plan_director,model_sf_model_type,sf_base.group_plan_director,1,0,0,0
|
||||||
access_sf_product_model_type_routing_sort,sf_product_model_type_routing_sort,model_sf_product_model_type_routing_sort,sf_base.group_sf_mrp_user,1,0,0,0
|
access_sf_product_model_type_routing_sort_group_sf_mrp_user,sf_product_model_type_routing_sort,model_sf_product_model_type_routing_sort,sf_base.group_sf_mrp_user,1,0,0,0
|
||||||
access_sf_product_model_type_routing_sort_manager,sf_product_model_type_routing_sort,model_sf_product_model_type_routing_sort,sf_base.group_sf_mrp_manager,1,1,1,0
|
access_sf_product_model_type_routing_sort_manager,sf_product_model_type_routing_sort,model_sf_product_model_type_routing_sort,sf_base.group_sf_mrp_manager,1,1,1,0
|
||||||
access_sf_embryo_model_type_routing_sort,sf_embryo_model_type_routing_sort,model_sf_embryo_model_type_routing_sort,sf_base.group_sf_mrp_user,1,0,0,0
|
access_sf_embryo_model_type_routing_sort_group_sf_mrp_user,sf_embryo_model_type_routing_sort,model_sf_embryo_model_type_routing_sort,sf_base.group_sf_mrp_user,1,0,0,0
|
||||||
access_sf_embryo_model_type_routing_sort_manager,sf_embryo_model_type_routing_sort,model_sf_embryo_model_type_routing_sort,sf_base.group_sf_mrp_manager,1,1,1,0
|
access_sf_embryo_model_type_routing_sort_manager,sf_embryo_model_type_routing_sort,model_sf_embryo_model_type_routing_sort,sf_base.group_sf_mrp_manager,1,1,1,0
|
||||||
access_sf_surface_technics_model_type_routing_sort,sf_surface_technics_model_type_routing_sort,model_sf_surface_technics_model_type_routing_sort,sf_base.group_sf_mrp_user,1,0,0,0
|
access_sf_surface_technics_model_type_routing_sort,sf_surface_technics_model_type_routing_sort,model_sf_surface_technics_model_type_routing_sort,sf_base.group_sf_mrp_user,1,0,0,0
|
||||||
access_sf_surface_technics_model_type_routing_sort_manager,sf_surface_technics_model_type_routing_sort,model_sf_surface_technics_model_type_routing_sort,sf_base.group_sf_mrp_manager,1,1,1,0
|
access_sf_surface_technics_model_type_routing_sort_manager,sf_surface_technics_model_type_routing_sort,model_sf_surface_technics_model_type_routing_sort,sf_base.group_sf_mrp_manager,1,1,1,0
|
||||||
access_sf_production_line,sf.production.line,model_sf_production_line,sf_base.group_sf_mrp_user,1,1,1,0
|
access_sf_production_line_group_sf_mrp_user,sf.production.line,model_sf_production_line,sf_base.group_sf_mrp_user,1,1,1,0
|
||||||
access_sf_production_line_manager,sf.production.line,model_sf_production_line,sf_base.group_sf_mrp_manager,1,1,1,0
|
access_sf_production_line_manager,sf.production.line,model_sf_production_line,sf_base.group_sf_mrp_manager,1,1,1,0
|
||||||
access_maintenance_equipment_tool,maintenance_equipment_tool,model_maintenance_equipment_tool,sf_base.group_sf_mrp_user,1,0,0,0
|
access_maintenance_equipment_tool_group_sf_mrp_user,maintenance_equipment_tool,model_maintenance_equipment_tool,sf_base.group_sf_mrp_user,1,0,0,0
|
||||||
access_maintenance_equipment_tool_manager,maintenance_equipment_tool,model_maintenance_equipment_tool,sf_base.group_sf_mrp_manager,1,1,1,0
|
access_maintenance_equipment_tool_manager,maintenance_equipment_tool,model_maintenance_equipment_tool,sf_base.group_sf_mrp_manager,1,1,1,0
|
||||||
access_maintenance_equipment_tool_equipment_manager,maintenance_equipment_tool,model_maintenance_equipment_tool,sf_maintenance.sf_group_equipment_user,1,1,1,0
|
access_maintenance_equipment_tool_equipment_manager,maintenance_equipment_tool,model_maintenance_equipment_tool,sf_maintenance.sf_group_equipment_user,1,1,1,0
|
||||||
access_mrp_production,mrp_production,model_mrp_production,sf_base.group_sf_mrp_user,1,0,0,0
|
access_mrp_production_group_sf_mrp_user,mrp_production,model_mrp_production,sf_base.group_sf_mrp_user,1,0,0,0
|
||||||
access_mrp_production_manager,mrp_production,model_mrp_production,sf_base.group_sf_mrp_manager,1,1,1,0
|
access_mrp_production_manager,mrp_production,model_mrp_production,sf_base.group_sf_mrp_manager,1,1,1,0
|
||||||
access_mrp_workorder,mrp_workorder,model_mrp_workorder,sf_base.group_sf_mrp_user,1,0,0,0
|
access_mrp_workorder_group_sf_mrp_user,mrp_workorder,model_mrp_workorder,sf_base.group_sf_mrp_user,1,0,0,0
|
||||||
access_mrp_workorder_manager,mrp_workorder,model_mrp_workorder,sf_base.group_sf_mrp_manager,1,1,1,0
|
access_mrp_workorder_manager,mrp_workorder,model_mrp_workorder,sf_base.group_sf_mrp_manager,1,1,1,0
|
||||||
access_mrp_workcenter,mrp_workcenter,model_mrp_workcenter,sf_base.group_sf_mrp_user,1,0,0,0
|
access_mrp_workcenter_group_sf_mrp_user,mrp_workcenter,model_mrp_workcenter,sf_base.group_sf_mrp_user,1,0,0,0
|
||||||
access_mrp_workcenter_manager,mrp_workcenter,model_mrp_workcenter,sf_base.group_sf_mrp_manager,1,1,1,0
|
access_mrp_workcenter_manager,mrp_workcenter,model_mrp_workcenter,sf_base.group_sf_mrp_manager,1,1,1,0
|
||||||
access_mrp_workcenter_productivity,mrp_workcenter_productivity,model_mrp_workcenter_productivity,sf_base.group_sf_mrp_user,1,0,0,0
|
access_mrp_workcenter_productivity_group_sf_mrp_user,mrp_workcenter_productivity,model_mrp_workcenter_productivity,sf_base.group_sf_mrp_user,1,0,0,0
|
||||||
access_mrp_workcenter_productivity_manager,mrp_workcenter_productivity,model_mrp_workcenter_productivity,sf_base.group_sf_mrp_manager,1,1,1,0
|
access_mrp_workcenter_productivity_manager,mrp_workcenter_productivity,model_mrp_workcenter_productivity,sf_base.group_sf_mrp_manager,1,1,1,0
|
||||||
access_sf_workpiece_delivery_group_sf_order_user,sf_workpiece_delivery_group_sf_order_user,model_sf_workpiece_delivery,sf_base.group_sf_order_user,1,1,0,0
|
access_sf_workpiece_delivery_group_sf_order_user,sf_workpiece_delivery_group_sf_order_user,model_sf_workpiece_delivery,sf_base.group_sf_order_user,1,1,0,0
|
||||||
access_sf_workpiece_delivery_group_sf_equipment_user,sf_workpiece_delivery_group_sf_equipment_user,model_sf_workpiece_delivery,sf_base.group_sf_equipment_user,1,1,0,0
|
access_sf_workpiece_delivery_group_sf_equipment_user,sf_workpiece_delivery_group_sf_equipment_user,model_sf_workpiece_delivery,sf_base.group_sf_equipment_user,1,1,0,0
|
||||||
@@ -34,73 +34,72 @@ access_sf_workpiece_delivery_group_sf_equipment_user,sf_workpiece_delivery_group
|
|||||||
access_sf_workpiece_delivery_manager,sf_workpiece_delivery,model_sf_workpiece_delivery,sf_base.group_sf_mrp_manager,1,1,0,0
|
access_sf_workpiece_delivery_manager,sf_workpiece_delivery,model_sf_workpiece_delivery,sf_base.group_sf_mrp_manager,1,1,0,0
|
||||||
access_sf_workpiece_delivery_admin,sf_workpiece_delivery_admin,model_sf_workpiece_delivery,base.group_system,1,1,1,0
|
access_sf_workpiece_delivery_admin,sf_workpiece_delivery_admin,model_sf_workpiece_delivery,base.group_system,1,1,1,0
|
||||||
access_sf_workpiece_delivery_wizard_group_sf_order_user,sf_workpiece_delivery_wizard_group_sf_order_user,model_sf_workpiece_delivery_wizard,sf_base.group_sf_order_user,1,1,1,0
|
access_sf_workpiece_delivery_wizard_group_sf_order_user,sf_workpiece_delivery_wizard_group_sf_order_user,model_sf_workpiece_delivery_wizard,sf_base.group_sf_order_user,1,1,1,0
|
||||||
access_mrp_workcenter_productivity_loss_manager,mrp.workcenter.productivity.loss,mrp.model_mrp_workcenter_productivity_loss,sf_base.group_sf_mrp_user,1,1,1,0
|
access_mrp_workcenter_productivity_loss_manager_group_sf_mrp_user,mrp.workcenter.productivity.loss,mrp.model_mrp_workcenter_productivity_loss,sf_base.group_sf_mrp_user,1,1,1,0
|
||||||
access_mrp_workcenter_productivity_loss,mrp.workcenter.productivity.loss,mrp.model_mrp_workcenter_productivity_loss,sf_base.group_sf_mrp_user,1,0,0,0
|
access_mrp_workcenter_productivity_loss_group_sf_mrp_user,mrp.workcenter.productivity.loss,mrp.model_mrp_workcenter_productivity_loss,sf_base.group_sf_mrp_user,1,0,0,0
|
||||||
access_mrp_workcenter_productivity_loss_type,mrp.workcenter.productivity.loss.type,mrp.model_mrp_workcenter_productivity_loss_type,sf_base.group_sf_mrp_user,1,0,0,0
|
access_mrp_workcenter_productivity_loss_type_group_sf_mrp_user,mrp.workcenter.productivity.loss.type,mrp.model_mrp_workcenter_productivity_loss_type,sf_base.group_sf_mrp_user,1,0,0,0
|
||||||
access_mrp_workcenter_productivity,mrp.workcenter.productivity,mrp.model_mrp_workcenter_productivity,sf_base.group_sf_mrp_user,1,1,1,0
|
access_mrp_workcenter_productivity_group_sf_mrp_user,mrp.workcenter.productivity,mrp.model_mrp_workcenter_productivity,sf_base.group_sf_mrp_user,1,1,1,0
|
||||||
access_mrp_workcenter,mrp.workcenter,mrp.model_mrp_workcenter,sf_base.group_sf_mrp_user,1,0,0,0
|
access_mrp_workcenter_group_sf_mrp_user,mrp.workcenter,mrp.model_mrp_workcenter,sf_base.group_sf_mrp_user,1,0,0,0
|
||||||
access_mrp_routing_workcenter,mrp.routing.workcenter,mrp.model_mrp_routing_workcenter,sf_base.group_sf_mrp_user,1,0,0,0
|
access_mrp_routing_workcenter_group_sf_mrp_user,mrp.routing.workcenter,mrp.model_mrp_routing_workcenter,sf_base.group_sf_mrp_user,1,0,0,0
|
||||||
access_mrp_bom,mrp.bom,mrp.model_mrp_bom,sf_base.group_sf_mrp_user,1,0,0,0
|
access_mrp_bom_group_sf_mrp_user,mrp.bom,mrp.model_mrp_bom,sf_base.group_sf_mrp_user,1,0,0,0
|
||||||
access_mrp_bom_line,mrp.bom.line,mrp.model_mrp_bom_line,sf_base.group_sf_mrp_user,1,0,0,0
|
access_mrp_bom_line_group_sf_mrp_user,mrp.bom.line,mrp.model_mrp_bom_line,sf_base.group_sf_mrp_user,1,0,0,0
|
||||||
access_mrp_bom_byproduct_user,mrp.bom.byproduct,mrp.model_mrp_bom_byproduct,sf_base.group_sf_mrp_user,1,0,0,0
|
access_mrp_bom_byproduct_user_group_sf_mrp_user,mrp.bom.byproduct,mrp.model_mrp_bom_byproduct,sf_base.group_sf_mrp_user,1,0,0,0
|
||||||
access_mrp_production,mrp.production user,mrp.model_mrp_production,sf_base.group_sf_mrp_user,1,1,1,0
|
access_mrp_production_group_sf_mrp_user,mrp.production user,mrp.model_mrp_production,sf_base.group_sf_mrp_user,1,1,1,0
|
||||||
access_mrp_workcenter_manager,mrp.workcenter.manager,mrp.model_mrp_workcenter,sf_base.group_sf_mrp_user,1,1,1,0
|
access_mrp_workcenter_manager_group_sf_mrp_user,mrp.workcenter.manager,mrp.model_mrp_workcenter,sf_base.group_sf_mrp_user,1,1,1,0
|
||||||
access_mrp_routing_workcenter_manager,mrp.routing.workcenter.manager,mrp.model_mrp_routing_workcenter,sf_base.group_sf_mrp_user,1,1,1,0
|
access_mrp_routing_workcenter_manager_group_sf_mrp_user,mrp.routing.workcenter.manager,mrp.model_mrp_routing_workcenter,sf_base.group_sf_mrp_user,1,1,1,0
|
||||||
access_mrp_bom_manager,mrp.bom.manager,mrp.model_mrp_bom,sf_base.group_sf_mrp_user,1,1,1,0
|
access_mrp_bom_manager_group_sf_mrp_user,mrp.bom.manager,mrp.model_mrp_bom,sf_base.group_sf_mrp_user,1,1,1,0
|
||||||
access_mrp_bom_line_manager,mrp.bom.line.manager,mrp.model_mrp_bom_line,sf_base.group_sf_mrp_user,1,1,1,0
|
access_mrp_bom_line_manager_group_sf_mrp_user,mrp.bom.line.manager,mrp.model_mrp_bom_line,sf_base.group_sf_mrp_user,1,1,1,0
|
||||||
access_mrp_bom_line_group_plan_director,mrp_bom_line_group_plan_director,mrp.model_mrp_bom_line,sf_base.group_plan_director,1,1,1,0
|
access_mrp_bom_line_group_plan_director,mrp_bom_line_group_plan_director,mrp.model_mrp_bom_line,sf_base.group_plan_director,1,1,1,0
|
||||||
access_mrp_bom_line_group_sale_director,mrp_bom_line_group_sale_director,mrp.model_mrp_bom_line,sf_base.group_sale_director,1,1,1,0
|
access_mrp_bom_line_group_sale_director,mrp_bom_line_group_sale_director,mrp.model_mrp_bom_line,sf_base.group_sale_director,1,1,1,0
|
||||||
access_mrp_bom_line_group_purchase_director,mrp_bom_line_group_purchase_director,mrp.model_mrp_bom_line,sf_base.group_purchase_director,1,1,1,0
|
access_mrp_bom_line_group_purchase_director,mrp_bom_line_group_purchase_director,mrp.model_mrp_bom_line,sf_base.group_purchase_director,1,1,1,0
|
||||||
|
|
||||||
access_mrp_bom_byproduct_manager,mrp.bom.byproduct manager,mrp.model_mrp_bom_byproduct,sf_base.group_sf_mrp_user,1,1,1,0
|
access_mrp_bom_byproduct_manager_group_sf_mrp_user,mrp.bom.byproduct manager,mrp.model_mrp_bom_byproduct,sf_base.group_sf_mrp_user,1,1,1,0
|
||||||
access_mrp_production_stock_worker,mrp.production stock_worker,mrp.model_mrp_production,stock.group_stock_user,1,0,0,0
|
access_mrp_production_stock_worker,mrp.production stock_worker,mrp.model_mrp_production,stock.group_stock_user,1,0,0,0
|
||||||
access_product_product_user,product.product user,product.model_product_product,sf_base.group_sf_mrp_user,1,0,0,0
|
access_product_product_user_group_sf_mrp_user,product.product user,product.model_product_product,sf_base.group_sf_mrp_user,1,0,0,0
|
||||||
access_product_template_user,product.template user,product.model_product_template,sf_base.group_sf_mrp_user,1,0,0,0
|
access_product_template_user_group_sf_mrp_user,product.template user,product.model_product_template,sf_base.group_sf_mrp_user,1,0,0,0
|
||||||
access_uom_uom_user,uom.uom user,uom.model_uom_uom,sf_base.group_sf_mrp_user,1,0,0,0
|
access_uom_uom_user,uom.uom user_group_sf_mrp_user,uom.model_uom_uom,sf_base.group_sf_mrp_user,1,0,0,0
|
||||||
access_product_supplierinfo_user,product.supplierinfo user,product.model_product_supplierinfo,sf_base.group_sf_mrp_user,1,0,0,0
|
access_product_supplierinfo_user_group_sf_mrp_user,product.supplierinfo user,product.model_product_supplierinfo,sf_base.group_sf_mrp_user,1,0,0,0
|
||||||
access_res_partner,res.partner,base.model_res_partner,sf_base.group_sf_mrp_user,1,0,0,0
|
access_res_partner_group_sf_mrp_user,res.partner,base.model_res_partner,sf_base.group_sf_mrp_user,1,0,0,0
|
||||||
access_mrp_workorder_mrp_user,mrp.workorder.user,mrp.model_mrp_workorder,sf_base.group_sf_mrp_user,1,1,1,0
|
access_mrp_workorder_mrp_user_group_sf_mrp_user,mrp.workorder.user,mrp.model_mrp_workorder,sf_base.group_sf_mrp_user,1,1,1,0
|
||||||
access_mrp_workorder_mrp_manager,mrp.workorder,mrp.model_mrp_workorder,sf_base.group_sf_mrp_user,1,1,1,0
|
access_mrp_workorder_mrp_manager_group_sf_mrp_user,mrp.workorder,mrp.model_mrp_workorder,sf_base.group_sf_mrp_user,1,1,1,0
|
||||||
access_resource_calendar_leaves_user,mrp.resource.calendar.leaves.user,resource.model_resource_calendar_leaves,sf_base.group_sf_mrp_user,1,1,1,0
|
access_resource_calendar_leaves_user_group_sf_mrp_user,mrp.resource.calendar.leaves.user,resource.model_resource_calendar_leaves,sf_base.group_sf_mrp_user,1,1,1,0
|
||||||
access_resource_calendar_leaves_manager,mrp.resource.calendar.leaves.manager,resource.model_resource_calendar_leaves,sf_base.group_sf_mrp_user,1,0,0,0
|
access_resource_calendar_leaves_manager_group_sf_mrp_user,mrp.resource.calendar.leaves.manager,resource.model_resource_calendar_leaves,sf_base.group_sf_mrp_user,1,0,0,0
|
||||||
access_resource_calendar_attendance_mrp_user,mrp.resource.calendar.attendance.mrp.user,resource.model_resource_calendar_attendance,sf_base.group_sf_mrp_user,1,1,1,0
|
access_resource_calendar_attendance_mrp_user_group_sf_mrp_user,mrp.resource.calendar.attendance.mrp.user,resource.model_resource_calendar_attendance,sf_base.group_sf_mrp_user,1,1,1,0
|
||||||
access_resource_calendar_attendance_manager,mrp.resource.calendar.attendance.manager,resource.model_resource_calendar_attendance,sf_base.group_sf_mrp_user,1,1,1,0
|
access_resource_calendar_attendance_manager_group_sf_mrp_user,mrp.resource.calendar.attendance.manager,resource.model_resource_calendar_attendance,sf_base.group_sf_mrp_user,1,1,1,0
|
||||||
access_uom_category,uom.category,uom.model_uom_category,sf_base.group_sf_mrp_user,1,0,0,0
|
access_uom_category_group_sf_mrp_user,uom.category,uom.model_uom_category,sf_base.group_sf_mrp_user,1,0,0,0
|
||||||
access_resource_resource,resource.resource,resource.model_resource_resource,sf_base.group_sf_mrp_user,1,0,0,0
|
access_resource_resource_group_sf_mrp_user,resource.resource,resource.model_resource_resource,sf_base.group_sf_mrp_user,1,0,0,0
|
||||||
access_resource_resource_manager,resource.resource.manager,resource.model_resource_resource,sf_base.group_sf_mrp_user,1,1,1,0
|
access_resource_resource_manager_group_sf_mrp_user,resource.resource.manager,resource.model_resource_resource,sf_base.group_sf_mrp_user,1,1,1,0
|
||||||
access_product_supplierinfo_manager,product.supplierinfo user,product.model_product_supplierinfo,sf_base.group_sf_mrp_user,1,0,0,0
|
access_product_supplierinfo_manager_group_sf_mrp_user,product.supplierinfo user,product.model_product_supplierinfo,sf_base.group_sf_mrp_user,1,0,0,0
|
||||||
access_mrp_production_manager,mrp.production manager,mrp.model_mrp_production,sf_base.group_sf_mrp_user,1,0,0,0
|
access_mrp_production_manager_group_sf_mrp_user,mrp.production manager,mrp.model_mrp_production,sf_base.group_sf_mrp_user,1,0,0,0
|
||||||
access_mrp_bom_stockuser,mrp.bom,mrp.model_mrp_bom,stock.group_stock_user,1,0,0,0
|
access_mrp_bom_stockuser,mrp.bom,mrp.model_mrp_bom,stock.group_stock_user,1,0,0,0
|
||||||
access_mrp_bom_line_stockuser,mrp.bom.line,mrp.model_mrp_bom_line,stock.group_stock_user,1,0,0,0
|
access_mrp_bom_line_stockuser,mrp.bom.line,mrp.model_mrp_bom_line,stock.group_stock_user,1,0,0,0
|
||||||
access_uom_category_mrp_manager,uom.category mrp_manager,uom.model_uom_category,sf_base.group_sf_mrp_user,1,1,1,0
|
access_uom_category_mrp_manager_group_sf_mrp_user,uom.category mrp_manager,uom.model_uom_category,sf_base.group_sf_mrp_user,1,1,1,0
|
||||||
access_uom_uom_mrp_manager,uom.uom mrp_manager,uom.model_uom_uom,sf_base.group_sf_mrp_user,1,1,1,0
|
access_uom_uom_mrp_manager_group_sf_mrp_user,uom.uom mrp_manager,uom.model_uom_uom,sf_base.group_sf_mrp_user,1,1,1,0
|
||||||
access_product_category_mrp_manager,product.category mrp_manager,product.model_product_category,sf_base.group_sf_mrp_user,1,1,1,0
|
access_product_category_mrp_manager_group_sf_mrp_user,product.category mrp_manager,product.model_product_category,sf_base.group_sf_mrp_user,1,1,1,0
|
||||||
access_product_template_mrp_manager,product.template mrp_manager,product.model_product_template,sf_base.group_sf_mrp_user,1,1,1,0
|
access_product_template_mrp_manager_group_sf_mrp_user,product.template mrp_manager,product.model_product_template,sf_base.group_sf_mrp_user,1,1,1,0
|
||||||
access_product_product_mrp_manager,product.product mrp_manager,product.model_product_product,sf_base.group_sf_mrp_user,1,1,1,0
|
access_product_product_mrp_manager_group_sf_mrp_user,product.product mrp_manager,product.model_product_product,sf_base.group_sf_mrp_user,1,1,1,0
|
||||||
access_product_packaging_mrp_manager,product.packaging mrp_manager,product.model_product_packaging,sf_base.group_sf_mrp_user,1,1,1,0
|
access_product_packaging_mrp_manager_group_sf_mrp_user,product.packaging mrp_manager,product.model_product_packaging,sf_base.group_sf_mrp_user,1,1,1,0
|
||||||
access_product_pricelist_mrp_manager,product.pricelist mrp_manager,product.model_product_pricelist,sf_base.group_sf_mrp_user,1,1,1,0
|
access_product_pricelist_mrp_manager_group_sf_mrp_user,product.pricelist mrp_manager,product.model_product_pricelist,sf_base.group_sf_mrp_user,1,1,1,0
|
||||||
access_product_group_res_partner_mrp_manager,res_partner sf_base.group_sf_mrp_manager,base.model_res_partner,sf_base.group_sf_mrp_user,1,1,1,0
|
access_product_group_res_partner_mrp_manager_group_sf_mrp_user,res_partner sf_base.group_sf_mrp_manager,base.model_res_partner,sf_base.group_sf_mrp_user,1,1,1,0
|
||||||
access_product_pricelist_item_mrp_manager,product.pricelist.item mrp_manager,product.model_product_pricelist_item,sf_base.group_sf_mrp_user,1,1,1,0
|
access_product_pricelist_item_mrp_manager_group_sf_mrp_user,product.pricelist.item mrp_manager,product.model_product_pricelist_item,sf_base.group_sf_mrp_user,1,1,1,0
|
||||||
access_product_tag_mrp_manager,product.tag.mrp.manager,product.model_product_tag,sf_base.group_sf_mrp_manager,1,1,1,0
|
access_product_tag_mrp_manager,product.tag.mrp.manager,product.model_product_tag,sf_base.group_sf_mrp_manager,1,1,1,0
|
||||||
access_resource_calendar_manufacturinguser,resource.calendar manufacturing.user,resource.model_resource_calendar,sf_base.group_sf_mrp_user,1,0,0,0
|
access_resource_calendar_manufacturinguser_group_sf_mrp_user,resource.calendar manufacturing.user,resource.model_resource_calendar,sf_base.group_sf_mrp_user,1,0,0,0
|
||||||
access_mrp_unbuild,mrp.unbuild,mrp.model_mrp_unbuild,sf_base.group_sf_mrp_user,1,1,1,0
|
access_mrp_unbuild_group_sf_mrp_user,mrp.unbuild,mrp.model_mrp_unbuild,sf_base.group_sf_mrp_user,1,1,1,0
|
||||||
access_mrp_unbuild_manager,mrp.unbuild manager,mrp.model_mrp_unbuild,sf_base.group_sf_mrp_manager,1,1,1,0
|
access_mrp_unbuild_manager,mrp.unbuild manager,mrp.model_mrp_unbuild,sf_base.group_sf_mrp_manager,1,1,1,0
|
||||||
access_mrp_document_mrp_manager,mrp.document group_user,mrp.model_mrp_document,sf_base.group_sf_mrp_manager,1,1,1,0
|
access_mrp_document_mrp_manager,mrp.document group_user,mrp.model_mrp_document,sf_base.group_sf_mrp_manager,1,1,1,0
|
||||||
access_mrp_document_mrp_user,mrp.document group_user,mrp.model_mrp_document,sf_base.group_sf_mrp_user,1,1,1,0
|
access_mrp_document_mrp_user_group_sf_mrp_user,mrp.document group_user,mrp.model_mrp_document,sf_base.group_sf_mrp_user,1,1,1,0
|
||||||
access_change_production_qty,access.change.production.qty,mrp.model_change_production_qty,sf_base.group_sf_mrp_user,1,1,1,0
|
access_change_production_qty_group_sf_mrp_user,access.change.production.qty,mrp.model_change_production_qty,sf_base.group_sf_mrp_user,1,1,1,0
|
||||||
access_stock_warn_insufficient_qty_unbuild,access.stock.warn.insufficient.qty.unbuild,mrp.model_stock_warn_insufficient_qty_unbuild,sf_base.group_sf_mrp_user,1,1,1,0
|
access_stock_warn_insufficient_qty_unbuild_group_sf_mrp_user,access.stock.warn.insufficient.qty.unbuild,mrp.model_stock_warn_insufficient_qty_unbuild,sf_base.group_sf_mrp_user,1,1,1,0
|
||||||
access_mrp_production_backorder,access.mrp.production.backorder,mrp.model_mrp_production_backorder,sf_base.group_sf_mrp_user,1,1,1,0
|
access_mrp_production_backorder_group_sf_mrp_user,access.mrp.production.backorder,mrp.model_mrp_production_backorder,sf_base.group_sf_mrp_user,1,1,1,0
|
||||||
access_mrp_production_backorder_line,access.mrp.production.backorder.line,mrp.model_mrp_production_backorder_line,sf_base.group_sf_mrp_user,1,1,1,0
|
access_mrp_production_backorder_line_group_sf_mrp_user,access.mrp.production.backorder.line,mrp.model_mrp_production_backorder_line,sf_base.group_sf_mrp_user,1,1,1,0
|
||||||
access_mrp_consumption_warning,access.mrp.consumption.warning,mrp.model_mrp_consumption_warning,sf_base.group_sf_mrp_user,1,1,1,0
|
access_mrp_consumption_warning_group_sf_mrp_user,access.mrp.consumption.warning,mrp.model_mrp_consumption_warning,sf_base.group_sf_mrp_user,1,1,1,0
|
||||||
access_mrp_consumption_warning_line,access.mrp.consumption.warning.line,mrp.model_mrp_consumption_warning_line,sf_base.group_sf_mrp_user,1,1,1,0
|
access_mrp_consumption_warning_line_group_sf_mrp_user,access.mrp.consumption.warning.line,mrp.model_mrp_consumption_warning_line,sf_base.group_sf_mrp_user,1,1,1,0
|
||||||
access_mrp_immediate_production,access.mrp.immediate.production,mrp.model_mrp_immediate_production,sf_base.group_sf_mrp_user,1,1,1,0
|
access_mrp_immediate_production_group_sf_mrp_user,access.mrp.immediate.production,mrp.model_mrp_immediate_production,sf_base.group_sf_mrp_user,1,1,1,0
|
||||||
access_mrp_immediate_production_line,access.mrp.immediate.production.line,mrp.model_mrp_immediate_production_line,sf_base.group_sf_mrp_user,1,1,1,0
|
access_mrp_immediate_production_line_group_sf_mrp_user,access.mrp.immediate.production.line,mrp.model_mrp_immediate_production_line,sf_base.group_sf_mrp_user,1,1,1,0
|
||||||
access_mrp_workcenter_tag_group_user,access.mrp.workcenter.tag,mrp.model_mrp_workcenter_tag,sf_base.group_sf_mrp_user,1,0,0,0
|
access_mrp_workcenter_tag_manager_group_sf_mrp_user,access.mrp.workcenter.tag,mrp.model_mrp_workcenter_tag,sf_base.group_sf_mrp_user,1,1,1,0
|
||||||
access_mrp_workcenter_tag_manager,access.mrp.workcenter.tag,mrp.model_mrp_workcenter_tag,sf_base.group_sf_mrp_user,1,1,1,0
|
access_mrp_production_split_multi_group_sf_mrp_user,access.mrp.production.split.multi,mrp.model_mrp_production_split_multi,sf_base.group_sf_mrp_user,1,1,1,0
|
||||||
access_mrp_production_split_multi,access.mrp.production.split.multi,mrp.model_mrp_production_split_multi,sf_base.group_sf_mrp_user,1,1,1,0
|
access_mrp_production_split_group_sf_mrp_user,access.mrp.production.split,mrp.model_mrp_production_split,sf_base.group_sf_mrp_user,1,1,1,0
|
||||||
access_mrp_production_split,access.mrp.production.split,mrp.model_mrp_production_split,sf_base.group_sf_mrp_user,1,1,1,0
|
access_mrp_production_split_line_group_sf_mrp_user,access.mrp.production.split.line,mrp.model_mrp_production_split_line,sf_base.group_sf_mrp_user,1,1,1,0
|
||||||
access_mrp_production_split_line,access.mrp.production.split.line,mrp.model_mrp_production_split_line,sf_base.group_sf_mrp_user,1,1,1,0
|
access_mrp_workcenter_capacity_manager_group_sf_mrp_user,mrp.workcenter.capacity.manager,mrp.model_mrp_workcenter_capacity,sf_base.group_sf_mrp_user,1,1,1,0
|
||||||
access_mrp_workcenter_capacity_manager,mrp.workcenter.capacity.manager,mrp.model_mrp_workcenter_capacity,sf_base.group_sf_mrp_user,1,1,1,0
|
|
||||||
|
|
||||||
|
|
||||||
access_mrp_production_group_plan_dispatch,mrp_production,model_mrp_production,sf_base.group_plan_dispatch,1,0,0,0
|
access_mrp_production_group_plan_dispatch,mrp_production,model_mrp_production,sf_base.group_plan_dispatch,1,0,0,0
|
||||||
@@ -127,3 +126,5 @@ access_sf_cmm_program_group_plan_dispatch,sf_cmm_program_group_plan_dispatch,mod
|
|||||||
|
|
||||||
access_mrp_workcenter_productivity,mrp.workcenter.productivity,mrp.model_mrp_workcenter_productivity,sf_base.group_plan_dispatch,1,0,0,0
|
access_mrp_workcenter_productivity,mrp.workcenter.productivity,mrp.model_mrp_workcenter_productivity,sf_base.group_plan_dispatch,1,0,0,0
|
||||||
access_maintenance_equipment_tool_group_plan_dispatch,maintenance.equipment.tool,sf_manufacturing.model_maintenance_equipment_tool,sf_base.group_plan_dispatch,1,0,0,0
|
access_maintenance_equipment_tool_group_plan_dispatch,maintenance.equipment.tool,sf_manufacturing.model_maintenance_equipment_tool,sf_base.group_plan_dispatch,1,0,0,0
|
||||||
|
|
||||||
|
access_sf_workpiece_delivery_group_plan_dispatch,sf.workpiece.delivery,sf_manufacturing.model_sf_workpiece_delivery,sf_base.group_plan_dispatch,1,0,0,0
|
||||||
|
@@ -245,61 +245,62 @@
|
|||||||
<field name="inherit_id" ref="mrp.mrp_production_workorder_tree_editable_view"/>
|
<field name="inherit_id" ref="mrp.mrp_production_workorder_tree_editable_view"/>
|
||||||
<field name="arch" type="xml">
|
<field name="arch" type="xml">
|
||||||
<xpath expr="//tree//button[@name='button_start']" position="replace">
|
<xpath expr="//tree//button[@name='button_start']" position="replace">
|
||||||
|
<field name="routing_type" invisible="True"/>
|
||||||
<button name="button_start" type="object" string="开始" class="btn-success"
|
<button name="button_start" type="object" string="开始" class="btn-success"
|
||||||
attrs="{'invisible': ['|', '|', '|', ('production_state','in', ('draft', 'done', 'cancel')), ('working_state', '=', 'blocked'), ('state', 'in', ('done', 'cancel')), ('is_user_working', '!=', False)]}"
|
attrs="{'invisible': ['|', '|', '|','|', ('production_state','in', ('draft', 'done', 'cancel')), ('working_state', '=', 'blocked'), ('state', 'in', ('done', 'cancel')), ('is_user_working', '!=', False), ('routing_type', '=', 'CNC加工')]}"
|
||||||
groups="sf_base.group_sf_mrp_user"/>
|
groups="sf_base.group_sf_mrp_user"/>
|
||||||
</xpath>
|
</xpath>
|
||||||
<xpath expr="//tree//button[@name='button_pending']" position="replace">
|
<xpath expr="//tree//button[@name='button_pending']" position="replace">
|
||||||
<button name="button_pending" type="object" string="Pause" class="btn-warning"
|
<button name="button_pending" type="object" string="Pause" class="btn-warning"
|
||||||
attrs="{'invisible': ['|', '|', ('production_state', 'in', ('draft', 'done', 'cancel')), ('working_state', '=', 'blocked'), ('is_user_working', '=', False)]}"
|
attrs="{'invisible': ['|', '|', '|', ('production_state', 'in', ('draft', 'done', 'cancel')), ('working_state', '=', 'blocked'), ('is_user_working', '=', False), ('routing_type', '=', 'CNC加工')]}"
|
||||||
groups="sf_base.group_sf_mrp_user"/>
|
groups="sf_base.group_sf_mrp_user"/>
|
||||||
</xpath>
|
</xpath>
|
||||||
<xpath expr="//tree//button[@name='button_finish']" position="replace">
|
<xpath expr="//tree//button[@name='button_finish']" position="replace">
|
||||||
<button name="button_finish" type="object" string="Done" class="btn-success"
|
<button name="button_finish" type="object" string="Done" class="btn-success"
|
||||||
attrs="{'invisible': ['|', '|', ('production_state', 'in', ('draft', 'done', 'cancel')), ('working_state', '=', 'blocked'), ('is_user_working', '=', False)]}"
|
attrs="{'invisible': ['|', '|', '|', ('production_state', 'in', ('draft', 'done', 'cancel')), ('working_state', '=', 'blocked'), ('is_user_working', '=', False), ('routing_type', '=', 'CNC加工')]}"
|
||||||
groups="sf_base.group_sf_mrp_user"/>
|
groups="sf_base.group_sf_mrp_user"/>
|
||||||
</xpath>
|
</xpath>
|
||||||
<xpath expr="//tree//button[@name='%(mrp.act_mrp_block_workcenter_wo)d']" position="replace">
|
<xpath expr="//tree//button[@name='%(mrp.act_mrp_block_workcenter_wo)d']" position="replace">
|
||||||
<button name="%(mrp.act_mrp_block_workcenter_wo)d" type="action" string="Block"
|
<button name="%(mrp.act_mrp_block_workcenter_wo)d" type="action" string="Block"
|
||||||
context="{'default_workcenter_id': workcenter_id}" class="btn-danger"
|
context="{'default_workcenter_id': workcenter_id}" class="btn-danger"
|
||||||
attrs="{'invisible': ['|', ('production_state', 'in', ('draft', 'done', 'cancel')), ('working_state', '=', 'blocked')]}"
|
attrs="{'invisible': ['|', '|', ('production_state', 'in', ('draft', 'done', 'cancel')), ('working_state', '=', 'blocked'), ('routing_type', '=', 'CNC加工')]}"
|
||||||
groups="sf_base.group_sf_mrp_user"/>
|
groups="sf_base.group_sf_mrp_user"/>
|
||||||
</xpath>
|
</xpath>
|
||||||
<xpath expr="//tree//button[@name='button_unblock']" position="replace">
|
<xpath expr="//tree//button[@name='button_unblock']" position="replace">
|
||||||
<button name="button_unblock" type="object" string="Unblock"
|
<button name="button_unblock" type="object" string="Unblock"
|
||||||
context="{'default_workcenter_id': workcenter_id}" class="btn-danger"
|
context="{'default_workcenter_id': workcenter_id}" class="btn-danger"
|
||||||
attrs="{'invisible': ['|', ('production_state', 'in', ('draft', 'done', 'cancel')), ('working_state', '!=', 'blocked')]}"
|
attrs="{'invisible': ['|', '|', ('production_state', 'in', ('draft', 'done', 'cancel')), ('working_state', '!=', 'blocked'), ('routing_type', '=', 'CNC加工')]}"
|
||||||
groups="sf_base.group_sf_mrp_user"/>
|
groups="sf_base.group_sf_mrp_user"/>
|
||||||
</xpath>
|
</xpath>
|
||||||
<xpath expr="//tree//button[@name='action_open_wizard']" position="replace">
|
<xpath expr="//tree//button[@name='action_open_wizard']" position="replace">
|
||||||
<button name="action_open_wizard" type="object" icon="fa-external-link" class="oe_edit_only"
|
<button name="action_open_wizard" type="object" icon="fa-external-link" class="oe_edit_only"
|
||||||
title="Open Work Order"
|
title="Open Work Order"
|
||||||
context="{'default_workcenter_id': workcenter_id}" groups="sf_base.group_sf_mrp_user"/>
|
context="{'default_workcenter_id': workcenter_id}" groups="sf_base.group_sf_mrp_user"/>
|
||||||
=======
|
<!-- ======= -->
|
||||||
<button name="button_start" type="object" string="开始" class="btn-success"
|
<!-- <button name="button_start" type="object" string="开始" class="btn-success" -->
|
||||||
attrs="{'invisible': ['|', '|', '|', ('production_state','in', ('draft', 'done', 'cancel')), ('working_state', '=', 'blocked'), ('state', 'in', ('done', 'cancel')), ('is_user_working', '!=', False)]}"
|
<!-- attrs="{'invisible': ['|', '|', '|', ('production_state','in', ('draft', 'done', 'cancel')), ('working_state', '=', 'blocked'), ('state', 'in', ('done', 'cancel')), ('is_user_working', '!=', False)]}" -->
|
||||||
groups="sf_base.group_sf_mrp_user"/>
|
<!-- groups="sf_base.group_sf_mrp_user"/> -->
|
||||||
</xpath>
|
</xpath>
|
||||||
<xpath expr="//tree//button[@name='button_pending']" position="replace">
|
<xpath expr="//tree//button[@name='button_pending']" position="replace">
|
||||||
<button name="button_pending" type="object" string="暂停" class="btn-warning"
|
<button name="button_pending" type="object" string="暂停" class="btn-warning"
|
||||||
attrs="{'invisible': ['|', '|', ('production_state', 'in', ('draft', 'done', 'cancel')), ('working_state', '=', 'blocked'), ('is_user_working', '=', False)]}"
|
attrs="{'invisible': ['|', '|','|', ('production_state', 'in', ('draft', 'done', 'cancel')), ('working_state', '=', 'blocked'), ('is_user_working', '=', False), ('routing_type', '=', 'CNC加工')]}"
|
||||||
groups="sf_base.group_sf_mrp_user"/>
|
groups="sf_base.group_sf_mrp_user"/>
|
||||||
</xpath>
|
</xpath>
|
||||||
<xpath expr="//tree//button[@name='button_finish']" position="replace">
|
<xpath expr="//tree//button[@name='button_finish']" position="replace">
|
||||||
<button name="button_finish" type="object" string="完成" class="btn-success"
|
<button name="button_finish" type="object" string="完成" class="btn-success"
|
||||||
attrs="{'invisible': ['|', '|', ('production_state', 'in', ('draft', 'done', 'cancel')), ('working_state', '=', 'blocked'), ('is_user_working', '=', False)]}"
|
attrs="{'invisible': ['|', '|','|', ('production_state', 'in', ('draft', 'done', 'cancel')), ('working_state', '=', 'blocked'), ('is_user_working', '=', False), ('routing_type', '=', 'CNC加工')]}"
|
||||||
groups="sf_base.group_sf_mrp_user"/>
|
groups="sf_base.group_sf_mrp_user"/>
|
||||||
</xpath>
|
</xpath>
|
||||||
<xpath expr="//tree//button[@name='%(mrp.act_mrp_block_workcenter_wo)d']" position="replace">
|
<xpath expr="//tree//button[@name='%(mrp.act_mrp_block_workcenter_wo)d']" position="replace">
|
||||||
<button name="%(mrp.act_mrp_block_workcenter_wo)d" type="action" string="阻塞"
|
<button name="%(mrp.act_mrp_block_workcenter_wo)d" type="action" string="阻塞"
|
||||||
context="{'default_workcenter_id': workcenter_id}" class="btn-danger"
|
context="{'default_workcenter_id': workcenter_id}" class="btn-danger"
|
||||||
attrs="{'invisible': ['|', ('production_state', 'in', ('draft', 'done', 'cancel')), ('working_state', '=', 'blocked')]}"
|
attrs="{'invisible': ['|','|', ('production_state', 'in', ('draft', 'done', 'cancel')), ('working_state', '=', 'blocked'), ('routing_type', '=', 'CNC加工')]}"
|
||||||
groups="sf_base.group_sf_mrp_user"/>
|
groups="sf_base.group_sf_mrp_user"/>
|
||||||
</xpath>
|
</xpath>
|
||||||
<xpath expr="//tree//button[@name='button_unblock']" position="replace">
|
<xpath expr="//tree//button[@name='button_unblock']" position="replace">
|
||||||
<button name="button_unblock" type="object" string="取消阻塞"
|
<button name="button_unblock" type="object" string="取消阻塞"
|
||||||
context="{'default_workcenter_id': workcenter_id}" class="btn-danger"
|
context="{'default_workcenter_id': workcenter_id}" class="btn-danger"
|
||||||
attrs="{'invisible': ['|', ('production_state', 'in', ('draft', 'done', 'cancel')), ('working_state', '!=', 'blocked')]}"
|
attrs="{'invisible': ['|','|', ('production_state', 'in', ('draft', 'done', 'cancel')), ('working_state', '!=', 'blocked'), ('routing_type', '=', 'CNC加工')]}"
|
||||||
groups="sf_base.group_sf_mrp_user"/>
|
groups="sf_base.group_sf_mrp_user"/>
|
||||||
</xpath>
|
</xpath>
|
||||||
<xpath expr="//tree//button[@name='action_open_wizard']" position="replace">
|
<xpath expr="//tree//button[@name='action_open_wizard']" position="replace">
|
||||||
|
|||||||
@@ -104,21 +104,22 @@
|
|||||||
<field name='user_permissions' invisible="1"/>
|
<field name='user_permissions' invisible="1"/>
|
||||||
<field name='name' invisible="1"/>
|
<field name='name' invisible="1"/>
|
||||||
<field name='is_delivery' invisible="1"/>
|
<field name='is_delivery' invisible="1"/>
|
||||||
|
<!-- 工单form页面的开始停工按钮等 -->
|
||||||
<button name="button_start" type="object" string="开始" class="btn-success"
|
<button name="button_start" type="object" string="开始" class="btn-success"
|
||||||
attrs="{'invisible': ['|', '|', '|','|',('production_state','in', ('draft', 'done',
|
attrs="{'invisible': ['|', '|', '|', '|','|', ('production_state','in', ('draft', 'done',
|
||||||
'cancel')), ('working_state', '=', 'blocked'), ('state', 'in', ('done', 'cancel')),
|
'cancel')), ('working_state', '=', 'blocked'), ('state', 'in', ('done', 'cancel')),
|
||||||
('is_user_working', '!=', False),('user_permissions','=',False)]}"
|
('is_user_working', '!=', False),('user_permissions','=',False), ('routing_type', '=', 'CNC加工')]}"
|
||||||
groups="sf_base.group_sf_mrp_user"/>
|
groups="sf_base.group_sf_mrp_user"/>
|
||||||
<button name="button_pending" type="object" string="暂停" class="btn-warning"
|
<button name="button_pending" type="object" string="暂停" class="btn-warning"
|
||||||
groups="sf_base.group_sf_mrp_user"
|
groups="sf_base.group_sf_mrp_user"
|
||||||
attrs="{'invisible': ['|', '|', ('production_state', 'in', ('draft', 'done', 'cancel')), ('working_state', '=', 'blocked'), ('is_user_working', '=', False)]}"/>
|
attrs="{'invisible': ['|', '|','|', ('production_state', 'in', ('draft', 'done', 'cancel')), ('working_state', '=', 'blocked'), ('is_user_working', '=', False), ('routing_type', '=', 'CNC加工')]}"/>
|
||||||
<button name="button_finish" type="object" string="完成" class="btn-success"
|
<button name="button_finish" type="object" string="完成" class="btn-success"
|
||||||
groups="sf_base.group_sf_mrp_user"
|
groups="sf_base.group_sf_mrp_user"
|
||||||
attrs="{'invisible': ['|', '|', ('production_state', 'in', ('draft', 'done', 'cancel')), ('working_state', '=', 'blocked'), ('is_user_working', '=', False)]}"/>
|
attrs="{'invisible': ['|', '|','|', ('production_state', 'in', ('draft', 'done', 'cancel')), ('working_state', '=', 'blocked'), ('is_user_working', '=', False), ('routing_type', '=', 'CNC加工')]}"/>
|
||||||
<button name="%(mrp.act_mrp_block_workcenter_wo)d" type="action" string="停工"
|
<button name="%(mrp.act_mrp_block_workcenter_wo)d" type="action" string="停工"
|
||||||
context="{'default_workcenter_id': workcenter_id}" class="btn-danger"
|
context="{'default_workcenter_id': workcenter_id}" class="btn-danger"
|
||||||
groups="sf_base.group_sf_mrp_user"
|
groups="sf_base.group_sf_mrp_user"
|
||||||
attrs="{'invisible': ['|', '|','|', ('production_state', 'in', ('draft', 'done', 'cancel')), ('working_state', '=', 'blocked'),('user_permissions','=',False),('state','=','done')]}"/>
|
attrs="{'invisible': ['|', '|','|', '|', ('production_state', 'in', ('draft', 'done', 'cancel')), ('working_state', '=', 'blocked'),('user_permissions','=',False),('state','=','done'), ('routing_type', '=', 'CNC加工')]}"/>
|
||||||
<button name="button_unblock" type="object" string="Unblock"
|
<button name="button_unblock" type="object" string="Unblock"
|
||||||
context="{'default_workcenter_id': workcenter_id}" class="btn-danger"
|
context="{'default_workcenter_id': workcenter_id}" class="btn-danger"
|
||||||
groups="sf_base.group_sf_mrp_user"
|
groups="sf_base.group_sf_mrp_user"
|
||||||
@@ -183,7 +184,9 @@
|
|||||||
attrs='{"invisible": [("routing_type","!=","装夹预调")]}'/>
|
attrs='{"invisible": [("routing_type","!=","装夹预调")]}'/>
|
||||||
<field name="functional_fixture_type_id"
|
<field name="functional_fixture_type_id"
|
||||||
attrs='{"invisible": [("routing_type","!=","装夹预调")]}'/>
|
attrs='{"invisible": [("routing_type","!=","装夹预调")]}'/>
|
||||||
<field name="rfid_code" force_save="1" readonly="1" class="customRFID"/>
|
<field name="rfid_code" force_save="1" readonly="1" class="customRFID"
|
||||||
|
attrs="{'invisible': [('rfid_code_old', '!=', False)]}"/>
|
||||||
|
<field name="rfid_code_old" readonly="1" attrs="{'invisible': [('rfid_code_old', '=', False)]}"/>
|
||||||
<script src="/sf_manufacturing/static/src/js/customRFID.js"></script>
|
<script src="/sf_manufacturing/static/src/js/customRFID.js"></script>
|
||||||
</group>
|
</group>
|
||||||
<!-- <group>-->
|
<!-- <group>-->
|
||||||
|
|||||||
@@ -657,6 +657,7 @@ class MachineToolType(models.Model):
|
|||||||
# "lead_screw": item['lead_screw'],
|
# "lead_screw": item['lead_screw'],
|
||||||
"workbench_L": item['workbench_L'],
|
"workbench_L": item['workbench_L'],
|
||||||
"workbench_W": item['workbench_W'],
|
"workbench_W": item['workbench_W'],
|
||||||
|
"workbench_H": item['workbench_H'],
|
||||||
# "guide_rail": item['guide_rail'],
|
# "guide_rail": item['guide_rail'],
|
||||||
"machine_tool_L": item['machine_tool_L'],
|
"machine_tool_L": item['machine_tool_L'],
|
||||||
"machine_tool_W": item['machine_tool_W'],
|
"machine_tool_W": item['machine_tool_W'],
|
||||||
@@ -739,6 +740,7 @@ class MachineToolType(models.Model):
|
|||||||
# "lead_screw": item['lead_screw'],
|
# "lead_screw": item['lead_screw'],
|
||||||
"workbench_L": item['workbench_L'],
|
"workbench_L": item['workbench_L'],
|
||||||
"workbench_W": item['workbench_W'],
|
"workbench_W": item['workbench_W'],
|
||||||
|
"workbench_H": item['workbench_H'],
|
||||||
# "guide_rail": item['guide_rail'],
|
# "guide_rail": item['guide_rail'],
|
||||||
"machine_tool_L": item['machine_tool_L'],
|
"machine_tool_L": item['machine_tool_L'],
|
||||||
"machine_tool_W": item['machine_tool_W'],
|
"machine_tool_W": item['machine_tool_W'],
|
||||||
@@ -852,6 +854,7 @@ class MachineToolType(models.Model):
|
|||||||
# "lead_screw": item['lead_screw'],
|
# "lead_screw": item['lead_screw'],
|
||||||
"workbench_L": item['workbench_L'],
|
"workbench_L": item['workbench_L'],
|
||||||
"workbench_W": item['workbench_W'],
|
"workbench_W": item['workbench_W'],
|
||||||
|
"workbench_H": item['workbench_H'],
|
||||||
# "guide_rail": item['guide_rail'],
|
# "guide_rail": item['guide_rail'],
|
||||||
"machine_tool_L": item['machine_tool_L'],
|
"machine_tool_L": item['machine_tool_L'],
|
||||||
"machine_tool_W": item['machine_tool_W'],
|
"machine_tool_W": item['machine_tool_W'],
|
||||||
@@ -934,6 +937,7 @@ class MachineToolType(models.Model):
|
|||||||
# "lead_screw": item['lead_screw'],
|
# "lead_screw": item['lead_screw'],
|
||||||
"workbench_L": item['workbench_L'],
|
"workbench_L": item['workbench_L'],
|
||||||
"workbench_W": item['workbench_W'],
|
"workbench_W": item['workbench_W'],
|
||||||
|
"workbench_H": item['workbench_H'],
|
||||||
# "guide_rail": item['guide_rail'],
|
# "guide_rail": item['guide_rail'],
|
||||||
"machine_tool_L": item['machine_tool_L'],
|
"machine_tool_L": item['machine_tool_L'],
|
||||||
"machine_tool_W": item['machine_tool_W'],
|
"machine_tool_W": item['machine_tool_W'],
|
||||||
|
|||||||
@@ -10,7 +10,7 @@
|
|||||||
<header>
|
<header>
|
||||||
<!-- <button name="do_production_schedule" type="object" string="批量排程"/> -->
|
<!-- <button name="do_production_schedule" type="object" string="批量排程"/> -->
|
||||||
<button string="批量排程" name="%(sf_plan.action_plan_some)d" type="action"
|
<button string="批量排程" name="%(sf_plan.action_plan_some)d" type="action"
|
||||||
class="btn-primary"/>
|
class="treeHeaderBtn"/>
|
||||||
</header>
|
</header>
|
||||||
<field name="state" widget="badge" decoration-warning="state == 'draft'"
|
<field name="state" widget="badge" decoration-warning="state == 'draft'"
|
||||||
decoration-success="state == 'done'" decoration-info="state == 'processing'"
|
decoration-success="state == 'done'" decoration-info="state == 'processing'"
|
||||||
@@ -45,9 +45,9 @@
|
|||||||
<!-- <button string="执行排程" name="do_production_schedule" type="object" class="oe_highlight" icon="fa-step-forward"/> -->
|
<!-- <button string="执行排程" name="do_production_schedule" type="object" class="oe_highlight" icon="fa-step-forward"/> -->
|
||||||
<button string="执行排程" name="do_production_schedule" type="object" class="oe_highlight"
|
<button string="执行排程" name="do_production_schedule" type="object" class="oe_highlight"
|
||||||
options='{"calendar_view": true, "date_begin": "2020-01-01", "date_end": "2020-12-31"}'
|
options='{"calendar_view": true, "date_begin": "2020-01-01", "date_end": "2020-12-31"}'
|
||||||
groups="sf_base.group_plan_dispatch" attrs="{'invisible': ['|', ('state', '!=', 'done'), ('actual_start_time', '!=', False)]}"/>
|
|
||||||
<button string="取消排程" name="cancel_production_schedule" type="object" class="oe_highlight"
|
|
||||||
groups="sf_base.group_plan_dispatch" attrs="{'invisible': ['|', ('state', '!=', 'draft'), ('actual_start_time', '!=', False)]}"/>
|
groups="sf_base.group_plan_dispatch" attrs="{'invisible': ['|', ('state', '!=', 'draft'), ('actual_start_time', '!=', False)]}"/>
|
||||||
|
<button string="取消排程" name="cancel_production_schedule" type="object" class="oe_highlight"
|
||||||
|
groups="sf_base.group_plan_dispatch" attrs="{'invisible': ['|', ('state', '!=', 'done'), ('actual_start_time', '!=', False)]}"/>
|
||||||
<!-- <button name="archive" type="object" string="归档" icon="fa-archive" class="oe_highlight" attrs="{'invisible': [('active', '=', False)]}"/> -->
|
<!-- <button name="archive" type="object" string="归档" icon="fa-archive" class="oe_highlight" attrs="{'invisible': [('active', '=', False)]}"/> -->
|
||||||
<!-- <button name="unarchive" type="object" string="取消归档" icon="fa-archive" class="oe_highlight" attrs="{'invisible': [('active', '=', True)]}"/> -->
|
<!-- <button name="unarchive" type="object" string="取消归档" icon="fa-archive" class="oe_highlight" attrs="{'invisible': [('active', '=', True)]}"/> -->
|
||||||
|
|
||||||
|
|||||||
@@ -25699,7 +25699,7 @@ msgstr "控制点"
|
|||||||
#. module: quality_control
|
#. module: quality_control
|
||||||
#: model:ir.ui.menu,name:quality_control.menu_quality_control_points
|
#: model:ir.ui.menu,name:quality_control.menu_quality_control_points
|
||||||
msgid "Control Points"
|
msgid "Control Points"
|
||||||
msgstr "控制点"
|
msgstr "质量标准"
|
||||||
|
|
||||||
#. module: purchase
|
#. module: purchase
|
||||||
#: model:ir.model.fields,field_description:purchase.field_product_product__purchase_method
|
#: model:ir.model.fields,field_description:purchase.field_product_product__purchase_method
|
||||||
@@ -25719,7 +25719,7 @@ msgstr "控制面板按钮"
|
|||||||
#: model:ir.model.fields,field_description:quality_control.field_quality_check_wizard__measure_on
|
#: model:ir.model.fields,field_description:quality_control.field_quality_check_wizard__measure_on
|
||||||
#: model:ir.model.fields,field_description:quality_control.field_quality_point__measure_on
|
#: model:ir.model.fields,field_description:quality_control.field_quality_point__measure_on
|
||||||
msgid "Control per"
|
msgid "Control per"
|
||||||
msgstr "每次控制"
|
msgstr "控制方式"
|
||||||
|
|
||||||
#. module: base
|
#. module: base
|
||||||
#: model:ir.module.module,summary:base.module_quality_control
|
#: model:ir.module.module,summary:base.module_quality_control
|
||||||
@@ -60648,7 +60648,7 @@ msgstr "质量控制点 数量"
|
|||||||
#. module: quality_control
|
#. module: quality_control
|
||||||
#: model:ir.actions.act_window,name:quality_control.quality_point_action
|
#: model:ir.actions.act_window,name:quality_control.quality_point_action
|
||||||
msgid "Quality Control Points"
|
msgid "Quality Control Points"
|
||||||
msgstr "质量管理点"
|
msgstr "质量控制标准"
|
||||||
|
|
||||||
#. module: quality
|
#. module: quality
|
||||||
#: model:ir.model,name:quality.model_quality_point_test_type
|
#: model:ir.model,name:quality.model_quality_point_test_type
|
||||||
@@ -75621,7 +75621,7 @@ msgstr "二氧化钛"
|
|||||||
#: model:ir.model.fields,field_description:quality_control.field_quality_check_wizard__title
|
#: model:ir.model.fields,field_description:quality_control.field_quality_check_wizard__title
|
||||||
#: model_terms:ir.ui.view,arch_db:mrp_workorder.add_quality_check_from_tablet
|
#: model_terms:ir.ui.view,arch_db:mrp_workorder.add_quality_check_from_tablet
|
||||||
msgid "Title"
|
msgid "Title"
|
||||||
msgstr "称谓"
|
msgstr "名称"
|
||||||
|
|
||||||
#. modules: account, mail, base, stock, mrp
|
#. modules: account, mail, base, stock, mrp
|
||||||
#: model:ir.model.fields,field_description:account.field_account_automatic_entry_wizard__destination_account_id
|
#: model:ir.model.fields,field_description:account.field_account_automatic_entry_wizard__destination_account_id
|
||||||
|
|||||||
@@ -16,7 +16,7 @@
|
|||||||
'depends': ['quality_control'],
|
'depends': ['quality_control'],
|
||||||
'data': [
|
'data': [
|
||||||
'security/ir.model.access.csv',
|
'security/ir.model.access.csv',
|
||||||
# 'views/view.xml'
|
'views/view.xml'
|
||||||
],
|
],
|
||||||
|
|
||||||
'assets': {
|
'assets': {
|
||||||
|
|||||||
@@ -6,6 +6,8 @@
|
|||||||
<field name="model">quality.alert</field>
|
<field name="model">quality.alert</field>
|
||||||
<field name="arch" type="xml">
|
<field name="arch" type="xml">
|
||||||
<tree sample="1">
|
<tree sample="1">
|
||||||
|
<field name="name" decoration-bf="1"/>
|
||||||
|
<field name="name" decoration-bf="1"/>
|
||||||
<field name="name" decoration-bf="1"/>
|
<field name="name" decoration-bf="1"/>
|
||||||
<field name="product_tmpl_id" optional="show"/>
|
<field name="product_tmpl_id" optional="show"/>
|
||||||
<field name="product_id" optional="hide"/>
|
<field name="product_id" optional="hide"/>
|
||||||
@@ -44,6 +46,32 @@
|
|||||||
groups="sf_base.group_quality_director"
|
groups="sf_base.group_quality_director"
|
||||||
class="oe_highlight"/>
|
class="oe_highlight"/>
|
||||||
</xpath>
|
</xpath>
|
||||||
|
<!-- <xpath expr="//sheet//group//group//field[@name='title']" position="replace"> -->
|
||||||
|
<!-- <field name="title" class="custom_required" required="1"/> -->
|
||||||
|
<!-- </xpath> -->
|
||||||
|
<xpath expr="//sheet//group//group//field[@name='title']" position="attributes">
|
||||||
|
<attribute name="class">custom_required</attribute>
|
||||||
|
<attribute name="required">1</attribute>
|
||||||
|
</xpath>
|
||||||
|
<xpath expr="//sheet//group//group//field[@name='picking_type_ids']" position="attributes">
|
||||||
|
<attribute name="class">custom_required</attribute>
|
||||||
|
<attribute name="required">1</attribute>
|
||||||
|
</xpath>
|
||||||
|
</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record model="ir.ui.view" id="sf_quality_point_view_form_inherit_quality_control">
|
||||||
|
<field name="name">sf.quality.point.form.inherit.sf</field>
|
||||||
|
<field name="model">quality.point</field>
|
||||||
|
<field name="inherit_id" ref="quality_control.quality_point_view_form_inherit_quality_control"/>
|
||||||
|
<field name="arch" type="xml">
|
||||||
|
<xpath expr="//field[@name='measure_on']" position="attributes">
|
||||||
|
<attribute name="class">custom_required</attribute>
|
||||||
|
|
||||||
|
</xpath>
|
||||||
|
<xpath expr="//field[@name='measure_frequency_type']" position="attributes">
|
||||||
|
<attribute name="class">custom_required</attribute>
|
||||||
|
</xpath>
|
||||||
</field>
|
</field>
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
|
|||||||
@@ -23,21 +23,24 @@
|
|||||||
</xpath>
|
</xpath>
|
||||||
<xpath expr="//form/header/button[@name='button_confirm'][2]" position="replace">
|
<xpath expr="//form/header/button[@name='button_confirm'][2]" position="replace">
|
||||||
<button name="button_confirm" type="object" context="{'validate_analytic': True}"
|
<button name="button_confirm" type="object" context="{'validate_analytic': True}"
|
||||||
string="确认订单" id="draft_confirm"
|
string="确认订单" id="draft_confirm" groups="sf_base.group_purchase,sf_base.group_purchase_director"
|
||||||
attrs="{'invisible': ['|','&','&', ('state', 'in', ['purchase','draft']), ('check_status', 'in', ['approved']), ('date_approve', '!=', False),'&', '&',('state', 'in', ['purchase', 'draft']),('check_status', 'in', [False, 'pending', 'fail']),('date_approve', '=', False)]}"
|
attrs="{'invisible': ['|','&','&', ('state', 'in', ['purchase','draft']), ('check_status', 'in', ['approved']), ('date_approve', '!=', False),'&', '&',('state', 'in', ['purchase', 'draft']),('check_status', 'in', [False, 'pending', 'fail']),('date_approve', '=', False)]}"
|
||||||
/>
|
/>
|
||||||
<button name="button_confirming" type="object"
|
<button name="button_confirming" type="object"
|
||||||
string="确认订单"
|
string="确认订单" groups="sf_base.group_purchase,sf_base.group_purchase_director"
|
||||||
attrs="{'invisible': ['&',('check_status','!=', False),('state', 'not in', ['draft','send'])]}"
|
attrs="{'invisible': ['&',('check_status','!=', False),('state', 'not in', ['draft','send'])]}"
|
||||||
/>
|
/>
|
||||||
</xpath>
|
</xpath>
|
||||||
|
<xpath expr="//form/header/button[@name='action_rfq_send'][1]" position="replace">
|
||||||
|
<button name="action_rfq_send" states="draft" string="通过Email发送采购单" type="object" context="{'send_rfq':True}" class="oe_highlight" data-hotkey="g" groups="sf_base.group_purchase,sf_base.group_purchase_director"/>
|
||||||
|
</xpath>
|
||||||
|
<xpath expr="//form/header/button[@name='action_rfq_send'][2]" position="replace">
|
||||||
|
<button name="action_rfq_send" states="sent" string="通过Email重新发送采购单" type="object" context="{'send_rfq':True}" data-hotkey="g" groups="sf_base.group_purchase,sf_base.group_purchase_director"/>
|
||||||
|
</xpath>
|
||||||
|
<xpath expr="//form/header/button[@name='action_rfq_send'][3]" position="replace">
|
||||||
|
<button name="action_rfq_send" states="purchase" string="通过Email发送订单" type="object" context="{'send_rfq':False}" data-hotkey="g" groups="sf_base.group_purchase,sf_base.group_purchase_director"/>
|
||||||
|
</xpath>
|
||||||
|
|
||||||
<!-- <xpath expr="//form/header/button[@name='action_rfq_send[1]']" position="attributes">-->
|
|
||||||
<!-- <attribute name="groups">sf_base.group_purchase,sf_base.group_purchase_director</attribute>-->
|
|
||||||
<!-- </xpath>-->
|
|
||||||
<!-- <xpath expr="//form/header/button[@name='action_rfq_send[2]']" position="attributes">-->
|
|
||||||
<!-- <attribute name="groups">sf_base.group_purchase,sf_base.group_purchase_director</attribute>-->
|
|
||||||
<!-- </xpath>-->
|
|
||||||
<!-- <xpath expr="//form/header/button[@name='print_quotation[1]']" position="attributes">-->
|
<!-- <xpath expr="//form/header/button[@name='print_quotation[1]']" position="attributes">-->
|
||||||
<!-- <attribute name="groups">sf_base.group_purchase,sf_base.group_purchase_director</attribute>-->
|
<!-- <attribute name="groups">sf_base.group_purchase,sf_base.group_purchase_director</attribute>-->
|
||||||
<!-- </xpath>-->
|
<!-- </xpath>-->
|
||||||
@@ -48,9 +51,17 @@
|
|||||||
<attribute name="groups">sf_base.group_purchase,sf_base.group_purchase_director</attribute>
|
<attribute name="groups">sf_base.group_purchase,sf_base.group_purchase_director</attribute>
|
||||||
</xpath>
|
</xpath>
|
||||||
|
|
||||||
<!-- <xpath expr="//form/header/button[@name='action_create_invoice[1]']" position="attributes">-->
|
<xpath expr="//form/header/button[@name='action_create_invoice']" position="replace">
|
||||||
<!-- <attribute name="groups">sf_base.group_purchase,sf_base.group_purchase_director</attribute>-->
|
<!-- <attribute name="groups">sf_base.group_purchase,sf_base.group_purchase_director</attribute> -->
|
||||||
<!-- </xpath>-->
|
<button name="action_create_invoice" string="创建账单" type="object" class="oe_highlight" context="{'create_bill':True}" attrs="{'invisible': ['|', ('state', 'not in', ('purchase', 'done')), ('invoice_status', 'in', ('no', 'invoiced'))]}" data-hotkey="w" groups="sf_base.group_purchase,sf_base.group_purchase_director"/>
|
||||||
|
</xpath>
|
||||||
|
<xpath expr="//form/header/button[@name='action_create_invoice'][2]" position="attributes">
|
||||||
|
<attribute name="groups">sf_base.group_purchase,sf_base.group_purchase_director</attribute>
|
||||||
|
</xpath>
|
||||||
|
<xpath expr="//form/header/button[@name='button_confirm']" position="attributes">
|
||||||
|
<attribute name="groups">sf_base.group_purchase,sf_base.group_purchase_director</attribute>
|
||||||
|
<!-- <button name="action_create_invoice" string="创建账单" type="object" class="oe_highlight" context="{'create_bill':True}" attrs="{'invisible': ['|', ('state', 'not in', ('purchase', 'done')), ('invoice_status', 'in', ('no', 'invoiced'))]}" data-hotkey="w" groups="sf_base.group_purchase,sf_base.group_purchase_director"/> -->
|
||||||
|
</xpath>
|
||||||
<!-- <xpath expr="//form/header/button[@name='action_create_invoice[2]']" position="attributes">-->
|
<!-- <xpath expr="//form/header/button[@name='action_create_invoice[2]']" position="attributes">-->
|
||||||
<!-- <attribute name="groups">sf_base.group_purchase,sf_base.group_purchase_director</attribute>-->
|
<!-- <attribute name="groups">sf_base.group_purchase,sf_base.group_purchase_director</attribute>-->
|
||||||
<!-- </xpath>-->
|
<!-- </xpath>-->
|
||||||
@@ -114,6 +125,17 @@
|
|||||||
</field>
|
</field>
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
|
<record id="purchase_order_kpis_tree_inherit_sf" model="ir.ui.view">
|
||||||
|
<field name="name">purchase.stock.order.tree.inherit.sf</field>
|
||||||
|
<field name="model">purchase.order</field>
|
||||||
|
<field name="inherit_id" ref="purchase.purchase_order_kpis_tree"/>
|
||||||
|
<field name="arch" type="xml">
|
||||||
|
<xpath expr="//tree//header//button[@name='action_create_invoice']" position="attributes">
|
||||||
|
<attribute name="groups">sf_base.group_purchase,sf_base.group_purchase_director</attribute>
|
||||||
|
</xpath>
|
||||||
|
</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
|
||||||
<record id="purchase_stock_order_view_form_inherit_sf" model="ir.ui.view">
|
<record id="purchase_stock_order_view_form_inherit_sf" model="ir.ui.view">
|
||||||
<field name="name">purchase.stock.order.form.inherit.sf</field>
|
<field name="name">purchase.stock.order.form.inherit.sf</field>
|
||||||
|
|||||||
@@ -2,4 +2,5 @@ from . import base
|
|||||||
from . import tool_material_search
|
from . import tool_material_search
|
||||||
from . import maintenance_equipment
|
from . import maintenance_equipment
|
||||||
from . import mrp_workorder
|
from . import mrp_workorder
|
||||||
|
from . import functional_tool_enroll
|
||||||
|
|
||||||
|
|||||||
@@ -39,24 +39,29 @@ class FunctionalCuttingToolEntity(models.Model):
|
|||||||
functional_tool_status = fields.Selection([('正常', '正常'), ('报警', '报警'), ('已拆除', '已拆除')],
|
functional_tool_status = fields.Selection([('正常', '正常'), ('报警', '报警'), ('已拆除', '已拆除')],
|
||||||
string='状态', store=True, default='正常')
|
string='状态', store=True, default='正常')
|
||||||
current_location_id = fields.Many2one('stock.location', string='当前位置', readonly=True)
|
current_location_id = fields.Many2one('stock.location', string='当前位置', readonly=True)
|
||||||
current_location = fields.Char('位置', compute='_compute_current_location_id')
|
current_location = fields.Selection(
|
||||||
|
[('组装后', '组装后'), ('刀具房', '刀具房'), ('线边刀库', '线边刀库'), ('机内刀库', '机内刀库')],
|
||||||
|
string='位置', compute='_compute_current_location_id', store=True)
|
||||||
image = fields.Binary('图片', readonly=True)
|
image = fields.Binary('图片', readonly=True)
|
||||||
|
|
||||||
active = fields.Boolean(string='已归档', default=True)
|
active = fields.Boolean(string='已归档', default=True)
|
||||||
|
|
||||||
@api.depends('barcode_id')
|
@api.depends('barcode_id.quant_ids')
|
||||||
def _compute_current_location_id(self):
|
def _compute_current_location_id(self):
|
||||||
for record in self:
|
for record in self:
|
||||||
if record.barcode_id.quant_ids:
|
if record.barcode_id.quant_ids:
|
||||||
for quant_id in record.barcode_id.quant_ids:
|
for quant_id in record.barcode_id.quant_ids:
|
||||||
if quant_id.inventory_quantity_auto_apply > 0:
|
if quant_id.inventory_quantity_auto_apply > 0:
|
||||||
record.sudo().current_location_id = quant_id.location_id
|
record.current_location_id = quant_id.location_id
|
||||||
record.sudo().current_location = quant_id.location_id.name
|
if quant_id.location_id.name == '制造前':
|
||||||
|
record.current_location = '机内刀库'
|
||||||
|
else:
|
||||||
|
record.current_location = quant_id.location_id.name
|
||||||
if record.current_location_id:
|
if record.current_location_id:
|
||||||
record.sudo().get_location_num()
|
record.sudo().get_location_num()
|
||||||
else:
|
else:
|
||||||
record.sudo().current_location_id = False
|
record.current_location_id = False
|
||||||
record.sudo().current_location = False
|
record.current_location = False
|
||||||
|
|
||||||
def get_location_num(self):
|
def get_location_num(self):
|
||||||
"""
|
"""
|
||||||
@@ -64,15 +69,15 @@ class FunctionalCuttingToolEntity(models.Model):
|
|||||||
"""
|
"""
|
||||||
for obj in self:
|
for obj in self:
|
||||||
if obj.current_location_id:
|
if obj.current_location_id:
|
||||||
if obj.current_location_id.name in ['刀具房']:
|
if obj.current_location in ['刀具房']:
|
||||||
obj.tool_room_num = 1
|
obj.tool_room_num = 1
|
||||||
obj.line_edge_knife_library_num = 0
|
obj.line_edge_knife_library_num = 0
|
||||||
obj.machine_knife_library_num = 0
|
obj.machine_knife_library_num = 0
|
||||||
elif "线边刀库" in obj.current_location_id.name:
|
elif "线边刀库" in obj.current_location:
|
||||||
obj.tool_room_num = 0
|
obj.tool_room_num = 0
|
||||||
obj.line_edge_knife_library_num = 1
|
obj.line_edge_knife_library_num = 1
|
||||||
obj.machine_knife_library_num = 0
|
obj.machine_knife_library_num = 0
|
||||||
elif "机内刀库" in obj.current_location_id.name:
|
elif "机内刀库" in obj.current_location:
|
||||||
obj.tool_room_num = 0
|
obj.tool_room_num = 0
|
||||||
obj.line_edge_knife_library_num = 0
|
obj.line_edge_knife_library_num = 0
|
||||||
obj.machine_knife_library_num = 1
|
obj.machine_knife_library_num = 1
|
||||||
@@ -180,33 +185,45 @@ class FunctionalCuttingToolEntity(models.Model):
|
|||||||
('coarse_middle_thin', '=', self.coarse_middle_thin)]
|
('coarse_middle_thin', '=', self.coarse_middle_thin)]
|
||||||
return result
|
return result
|
||||||
|
|
||||||
# ==========刀具组接口==========
|
def tool_inventory_displacement_out(self):
|
||||||
# def _register_functional_tool_groups(self, obj):
|
"""
|
||||||
# create_url = '/AutoDeviceApi/ToolGroup'
|
机床当前刀库实时信息接口,功能刀具出库
|
||||||
# sf_sync_config = self.env['res.config.settings'].get_values()
|
"""
|
||||||
# token = sf_sync_config['token']
|
# 获取位置对象
|
||||||
# sf_secret_key = sf_sync_config['sf_secret_key']
|
location_inventory_id = self.current_location_id
|
||||||
# headers = Common.get_headers(obj, token, sf_secret_key)
|
stock_location_id = self.env['stock.location'].search([('name', '=', '制造前')])
|
||||||
# strurl = sf_sync_config['sf_url'] + create_url
|
# 创建功能刀具该批次/序列号 库存移动和移动历史
|
||||||
# val = {
|
self.barcode_id.create_stock_quant(location_inventory_id, stock_location_id,
|
||||||
# 'ToolName': obj.name,
|
self.functional_tool_name_id.id, '机床装刀')
|
||||||
# 'GroupName': obj.tool_groups_id.name,
|
|
||||||
# 'ToolId': obj.code
|
|
||||||
# }
|
|
||||||
# kw = json.dumps(val, ensure_ascii=False)
|
|
||||||
# r = requests.post(strurl, json={}, data={'kw': kw, 'token': token}, headers=headers)
|
|
||||||
# ret = r.json()
|
|
||||||
# if r == 200:
|
|
||||||
# return "刀具组发送成功"
|
|
||||||
# else:
|
|
||||||
# raise ValidationError("刀具组发送失败")
|
|
||||||
|
|
||||||
# @api.model_create_multi
|
|
||||||
# def create(self, vals):
|
# ==========刀具组接口==========
|
||||||
# obj = super(FunctionalCuttingToolEntity, self).create(vals)
|
# def _register_functional_tool_groups(self, obj):
|
||||||
# # 调用刀具组接口
|
# create_url = '/AutoDeviceApi/ToolGroup'
|
||||||
# self._register_functional_tool_groups(obj)
|
# sf_sync_config = self.env['res.config.settings'].get_values()
|
||||||
# return obj
|
# token = sf_sync_config['token']
|
||||||
|
# sf_secret_key = sf_sync_config['sf_secret_key']
|
||||||
|
# headers = Common.get_headers(obj, token, sf_secret_key)
|
||||||
|
# strurl = sf_sync_config['sf_url'] + create_url
|
||||||
|
# val = {
|
||||||
|
# 'ToolName': obj.name,
|
||||||
|
# 'GroupName': obj.tool_groups_id.name,
|
||||||
|
# 'ToolId': obj.code
|
||||||
|
# }
|
||||||
|
# kw = json.dumps(val, ensure_ascii=False)
|
||||||
|
# r = requests.post(strurl, json={}, data={'kw': kw, 'token': token}, headers=headers)
|
||||||
|
# ret = r.json()
|
||||||
|
# if r == 200:
|
||||||
|
# return "刀具组发送成功"
|
||||||
|
# else:
|
||||||
|
# raise ValidationError("刀具组发送失败")
|
||||||
|
|
||||||
|
# @api.model_create_multi
|
||||||
|
# def create(self, vals):
|
||||||
|
# obj = super(FunctionalCuttingToolEntity, self).create(vals)
|
||||||
|
# # 调用刀具组接口
|
||||||
|
# self._register_functional_tool_groups(obj)
|
||||||
|
# return obj
|
||||||
|
|
||||||
|
|
||||||
class FunctionalToolWarning(models.Model):
|
class FunctionalToolWarning(models.Model):
|
||||||
|
|||||||
351
sf_tool_management/models/functional_tool_enroll.py
Normal file
351
sf_tool_management/models/functional_tool_enroll.py
Normal file
@@ -0,0 +1,351 @@
|
|||||||
|
import json
|
||||||
|
import base64
|
||||||
|
import requests
|
||||||
|
from odoo import models, api
|
||||||
|
from odoo.addons.sf_base.commons.common import Common
|
||||||
|
from odoo.exceptions import UserError
|
||||||
|
|
||||||
|
|
||||||
|
class StockLot(models.Model):
|
||||||
|
_inherit = 'stock.lot'
|
||||||
|
_description = '刀具物料序列号注册'
|
||||||
|
|
||||||
|
crea_url = "/api/tool_material_stock/create"
|
||||||
|
|
||||||
|
def enroll_tool_material_stock(self):
|
||||||
|
sf_sync_config = self.env['res.config.settings'].get_values()
|
||||||
|
token = sf_sync_config['token']
|
||||||
|
sf_secret_key = sf_sync_config['sf_secret_key']
|
||||||
|
headers = Common.get_headers(self, token, sf_secret_key)
|
||||||
|
str_url = sf_sync_config['sf_url'] + self.crea_url
|
||||||
|
objs_all = self.env['stock.lot'].search([('id', '=', self.id)])
|
||||||
|
tool_material_stock_list = []
|
||||||
|
if objs_all:
|
||||||
|
for item in objs_all:
|
||||||
|
val = {
|
||||||
|
'name': item.name,
|
||||||
|
'tool_material_status': item.tool_material_status,
|
||||||
|
'location': item.quant_ids[-1].location_id.name
|
||||||
|
}
|
||||||
|
tool_material_stock_list.append(val)
|
||||||
|
kw = json.dumps(tool_material_stock_list, ensure_ascii=False)
|
||||||
|
r = requests.post(str_url, json={}, data={'kw': kw, 'token': token}, headers=headers)
|
||||||
|
ret = r.json()
|
||||||
|
if r == 200:
|
||||||
|
return '刀具物料序列号注册成功'
|
||||||
|
else:
|
||||||
|
raise UserError("没有注册刀具物料序列号信息")
|
||||||
|
|
||||||
|
@api.onchange('quant_ids')
|
||||||
|
def _onchange_quant_ids(self):
|
||||||
|
for item in self:
|
||||||
|
if item.product_id.categ_id == '刀具':
|
||||||
|
item.enroll_tool_material_stock()
|
||||||
|
|
||||||
|
@api.model_create_multi
|
||||||
|
def create(self, vals_list):
|
||||||
|
records = super(StockLot, self).create(vals_list)
|
||||||
|
for record in records:
|
||||||
|
if record.product_id.categ_id == '刀具':
|
||||||
|
record.enroll_tool_material_stock()
|
||||||
|
return records
|
||||||
|
|
||||||
|
|
||||||
|
class ToolMaterial(models.Model):
|
||||||
|
_inherit = 'sf.tool.material.search'
|
||||||
|
_description = '刀具物料注册'
|
||||||
|
|
||||||
|
crea_url = '/api/tool_material/create'
|
||||||
|
|
||||||
|
def enroll_tool_material(self):
|
||||||
|
sf_sync_config = self.env['res.config.settings'].get_values()
|
||||||
|
token = sf_sync_config['token']
|
||||||
|
sf_secret_key = sf_sync_config['sf_secret_key']
|
||||||
|
headers = Common.get_headers(self, token, sf_secret_key)
|
||||||
|
str_url = sf_sync_config['sf_url'] + self.crea_url
|
||||||
|
objs_all = self.search([('id', '=', self.id)])
|
||||||
|
tool_material_list = []
|
||||||
|
if objs_all:
|
||||||
|
for item in objs_all:
|
||||||
|
barcode_names = []
|
||||||
|
for barcode_id in item.barcode_ids:
|
||||||
|
if barcode_id.name:
|
||||||
|
barcode_names.append(barcode_id.name)
|
||||||
|
val = {
|
||||||
|
'name': item.name,
|
||||||
|
'code': item.code,
|
||||||
|
'cutting_tool_material_code': item.cutting_tool_material_id.code,
|
||||||
|
'cutting_tool_standard_library_code': item.cutting_tool_standard_library_id.code,
|
||||||
|
'specification_name': item.specification_id.name,
|
||||||
|
'image': item.image,
|
||||||
|
'number': item.number,
|
||||||
|
'usable_num': item.usable_num,
|
||||||
|
'have_been_used_num': item.have_been_used_num,
|
||||||
|
'scrap_num': item.scrap_num,
|
||||||
|
'barcode_names': str(barcode_names),
|
||||||
|
'active': item.active
|
||||||
|
}
|
||||||
|
tool_material_list.append(val)
|
||||||
|
kw = json.dumps(tool_material_list, ensure_ascii=False)
|
||||||
|
r = requests.post(str_url, json={}, data={'kw': kw, 'token': token}, headers=headers)
|
||||||
|
ret = r.json()
|
||||||
|
if r == 200:
|
||||||
|
return '刀具物料注册成功'
|
||||||
|
else:
|
||||||
|
raise UserError("没有注册刀具物料信息")
|
||||||
|
|
||||||
|
|
||||||
|
class FunctionalCuttingToolEntity(models.Model):
|
||||||
|
_inherit = 'sf.functional.cutting.tool.entity'
|
||||||
|
_description = '功能刀具列表注册'
|
||||||
|
|
||||||
|
crea_url = "/api/functional_tool_entity/create"
|
||||||
|
|
||||||
|
# 注册同步功能刀具列表
|
||||||
|
def enroll_functional_tool_entity(self):
|
||||||
|
sf_sync_config = self.env['res.config.settings'].get_values()
|
||||||
|
token = sf_sync_config['token']
|
||||||
|
sf_secret_key = sf_sync_config['sf_secret_key']
|
||||||
|
headers = Common.get_headers(self, token, sf_secret_key)
|
||||||
|
str_url = sf_sync_config['sf_url'] + self.crea_url
|
||||||
|
objs_all = self.env['sf.functional.cutting.tool.entity'].search([('id', '=', self.id)])
|
||||||
|
functional_tool_list = []
|
||||||
|
if objs_all:
|
||||||
|
for item in objs_all:
|
||||||
|
val = {
|
||||||
|
'id': item.id,
|
||||||
|
'code': item.code,
|
||||||
|
'name': item.name,
|
||||||
|
'tool_groups_name': item.tool_groups_id.name,
|
||||||
|
'barcode': item.barcode_id.name,
|
||||||
|
'cutting_tool_type_code': item.sf_cutting_tool_type_id.code,
|
||||||
|
'functional_tool_diameter': item.functional_tool_diameter,
|
||||||
|
'knife_tip_r_angle': item.knife_tip_r_angle,
|
||||||
|
'coarse_middle_thin': item.coarse_middle_thin,
|
||||||
|
'new_former': item.new_former,
|
||||||
|
'tool_loading_length': item.tool_loading_length,
|
||||||
|
'functional_tool_length': item.functional_tool_length,
|
||||||
|
'effective_length': item.effective_length,
|
||||||
|
'tool_room_num': item.tool_room_num,
|
||||||
|
'line_edge_knife_library_num': item.line_edge_knife_library_num,
|
||||||
|
'machine_knife_library_num': item.machine_knife_library_num,
|
||||||
|
'max_lifetime_value': item.max_lifetime_value,
|
||||||
|
'alarm_value': item.alarm_value,
|
||||||
|
'used_value': item.used_value,
|
||||||
|
'functional_tool_status': item.functional_tool_status,
|
||||||
|
'current_location': item.current_location,
|
||||||
|
'image': '' if not item.image else base64.b64encode(item.image).decode('utf-8'),
|
||||||
|
'whether_standard_knife': item.whether_standard_knife,
|
||||||
|
'L_D_number': item.L_D_number,
|
||||||
|
'hiding_length': item.hiding_length,
|
||||||
|
'cut_time': item.cut_time,
|
||||||
|
'cut_length': item.cut_length,
|
||||||
|
'cut_number': item.cut_number,
|
||||||
|
'cutting_tool_integral_model_code': item.cutting_tool_integral_model_id.code,
|
||||||
|
'cutting_tool_blade_model_code': item.cutting_tool_blade_model_id.code,
|
||||||
|
'cutting_tool_cutterbar_model_code': item.cutting_tool_cutterbar_model_id.code,
|
||||||
|
'cutting_tool_cutterpad_model_code': item.cutting_tool_cutterpad_model_id.code,
|
||||||
|
'cutting_tool_cutterhandle_model_code': item.cutting_tool_cutterhandle_model_id.code,
|
||||||
|
'cutting_tool_cutterhead_model_code': item.cutting_tool_cutterhead_model_id.code,
|
||||||
|
'active': item.active,
|
||||||
|
}
|
||||||
|
functional_tool_list.append(val)
|
||||||
|
kw = json.dumps(functional_tool_list, ensure_ascii=False)
|
||||||
|
r = requests.post(str_url, json={}, data={'kw': kw, 'token': token}, headers=headers)
|
||||||
|
ret = r.json()
|
||||||
|
# self.code = ret['data']
|
||||||
|
# self.state_zc = "已注册"
|
||||||
|
if r == 200:
|
||||||
|
return "功能刀具注册成功"
|
||||||
|
else:
|
||||||
|
raise UserError("没有注册功能刀具信息")
|
||||||
|
|
||||||
|
@api.model_create_multi
|
||||||
|
def create(self, vals_list):
|
||||||
|
records = super(FunctionalCuttingToolEntity, self).create(vals_list)
|
||||||
|
for record in records:
|
||||||
|
if record:
|
||||||
|
record.enroll_functional_tool_entity()
|
||||||
|
return records
|
||||||
|
|
||||||
|
|
||||||
|
class FunctionalToolWarning(models.Model):
|
||||||
|
_inherit = 'sf.functional.tool.warning'
|
||||||
|
_description = '功能刀具预警注册'
|
||||||
|
|
||||||
|
crea_url = "/api/functional_tool_warning/create"
|
||||||
|
|
||||||
|
# 注册同步功能刀具预警
|
||||||
|
def enroll_functional_tool_warning(self):
|
||||||
|
sf_sync_config = self.env['res.config.settings'].get_values()
|
||||||
|
token = sf_sync_config['token']
|
||||||
|
sf_secret_key = sf_sync_config['sf_secret_key']
|
||||||
|
headers = Common.get_headers(self, token, sf_secret_key)
|
||||||
|
str_url = sf_sync_config['sf_url'] + self.crea_url
|
||||||
|
objs_all = self.env['sf.functional.tool.warning'].search([('id', '=', self.id)])
|
||||||
|
tool_warning_list = []
|
||||||
|
if objs_all:
|
||||||
|
for item in objs_all:
|
||||||
|
val = {
|
||||||
|
'id': item.id,
|
||||||
|
'name': item.name,
|
||||||
|
'code': item.code,
|
||||||
|
'tool_groups_name': item.tool_groups_id.name,
|
||||||
|
'production_line': item.production_line_id.name,
|
||||||
|
'machine_tool_id': item.maintenance_equipment_id.code,
|
||||||
|
'machine_tool_code': item.machine_tool_code,
|
||||||
|
'machine_table_type_code': item.machine_table_type_id.code,
|
||||||
|
'cutter_spacing_code': item.cutter_spacing_code_id.code,
|
||||||
|
'functional_tool_name': item.name,
|
||||||
|
'barcode': item.barcode_id.name,
|
||||||
|
'mrs_cutting_tool_type_code': item.mrs_cutting_tool_type_id.code,
|
||||||
|
'diameter': item.diameter,
|
||||||
|
'knife_tip_r_angle': item.knife_tip_r_angle,
|
||||||
|
'install_tool_time': item.install_tool_time.strftime('%Y-%m-%d %H:%M:%S'),
|
||||||
|
'on_board_time': item.on_board_time.strftime('%Y-%m-%d %H:%M:%S'),
|
||||||
|
'max_lifetime_value': item.max_lifetime_value,
|
||||||
|
'alarm_value': item.alarm_value,
|
||||||
|
'used_value': item.used_value,
|
||||||
|
'functional_tool_status': item.functional_tool_status,
|
||||||
|
'alarm_time': item.alarm_time,
|
||||||
|
'dispose_user': item.dispose_user,
|
||||||
|
'dispose_time': item.dispose_time.strftime('%Y-%m-%d %H:%M:%S'),
|
||||||
|
'dispose_func': item.dispose_func,
|
||||||
|
}
|
||||||
|
tool_warning_list.append(val)
|
||||||
|
kw = json.dumps(tool_warning_list, ensure_ascii=False)
|
||||||
|
r = requests.post(str_url, json={}, data={'kw': kw, 'token': token}, headers=headers)
|
||||||
|
ret = r.json()
|
||||||
|
# self.code = ret['data']
|
||||||
|
# self.state_zc = "已注册"
|
||||||
|
if r == 200:
|
||||||
|
return "功能刀具预警注册成功"
|
||||||
|
else:
|
||||||
|
raise UserError("没有注册功能刀具预警信息")
|
||||||
|
|
||||||
|
@api.model_create_multi
|
||||||
|
def create(self, vals_list):
|
||||||
|
records = super(FunctionalToolWarning, self).create(vals_list)
|
||||||
|
for record in records:
|
||||||
|
if record:
|
||||||
|
record.enroll_functional_tool_warning()
|
||||||
|
return records
|
||||||
|
|
||||||
|
|
||||||
|
class StockMoveLine(models.Model):
|
||||||
|
_inherit = 'stock.move.line'
|
||||||
|
_description = '功能刀具出入库记录注册'
|
||||||
|
|
||||||
|
crea_url = "/api/functional_tool_move/create"
|
||||||
|
|
||||||
|
# 注册同步功能刀具出入库记录
|
||||||
|
def enroll_functional_tool_move(self):
|
||||||
|
sf_sync_config = self.env['res.config.settings'].get_values()
|
||||||
|
token = sf_sync_config['token']
|
||||||
|
sf_secret_key = sf_sync_config['sf_secret_key']
|
||||||
|
headers = Common.get_headers(self, token, sf_secret_key)
|
||||||
|
str_url = sf_sync_config['sf_url'] + self.crea_url
|
||||||
|
objs_all = self.env['stock.move.line'].search([('id', '=', self.id), ('functional_tool_name_id', '!=', False)])
|
||||||
|
tool_stock_list = []
|
||||||
|
if objs_all:
|
||||||
|
for item in objs_all:
|
||||||
|
val = {
|
||||||
|
'id': item.id,
|
||||||
|
'name': item.functional_tool_name_id.name,
|
||||||
|
'code': item.code,
|
||||||
|
'tool_groups_name': item.tool_groups_id.name,
|
||||||
|
'reference': item.reference,
|
||||||
|
'barcode': item.lot_id.name,
|
||||||
|
'functional_tool_type_code': item.functional_tool_type_id.code,
|
||||||
|
'diameter': item.diameter,
|
||||||
|
'knife_tip_r_angle': item.knife_tip_r_angle,
|
||||||
|
'install_tool_time': item.install_tool_time.strftime('%Y-%m-%d %H:%M:%S'),
|
||||||
|
'location_id': item.location_id.name,
|
||||||
|
'location_dest_name': item.location_dest_id.name,
|
||||||
|
'date': item.date.strftime('%Y-%m-%d %H:%M:%S'),
|
||||||
|
'qty_done': item.qty_done,
|
||||||
|
}
|
||||||
|
tool_stock_list.append(val)
|
||||||
|
kw = json.dumps(tool_stock_list, ensure_ascii=False)
|
||||||
|
r = requests.post(str_url, json={}, data={'kw': kw, 'token': token}, headers=headers)
|
||||||
|
ret = r.json()
|
||||||
|
# self.code = ret['data']
|
||||||
|
# self.state_zc = "已注册"
|
||||||
|
if r == 200:
|
||||||
|
return "功能刀具出入库记录注册成功"
|
||||||
|
else:
|
||||||
|
raise UserError("没有注册功能刀具出入库记录信息")
|
||||||
|
|
||||||
|
@api.model_create_multi
|
||||||
|
def create(self, vals_list):
|
||||||
|
records = super(StockMoveLine, self).create(vals_list)
|
||||||
|
for record in records:
|
||||||
|
if record.functional_tool_name_id:
|
||||||
|
record.enroll_functional_tool_move()
|
||||||
|
return records
|
||||||
|
|
||||||
|
|
||||||
|
class RealTimeDistributionFunctionalTools(models.Model):
|
||||||
|
_inherit = 'sf.real.time.distribution.of.functional.tools'
|
||||||
|
_description = '功能刀具安全库存注册'
|
||||||
|
|
||||||
|
crea_url = "/api/functional_tool_distribution/create"
|
||||||
|
|
||||||
|
# 注册同步功能刀具预警
|
||||||
|
def enroll_functional_tool_real_time_distribution(self):
|
||||||
|
sf_sync_config = self.env['res.config.settings'].get_values()
|
||||||
|
token = sf_sync_config['token']
|
||||||
|
sf_secret_key = sf_sync_config['sf_secret_key']
|
||||||
|
headers = Common.get_headers(self, token, sf_secret_key)
|
||||||
|
str_url = sf_sync_config['sf_url'] + self.crea_url
|
||||||
|
objs_all = self.env['sf.real.time.distribution.of.functional.tools'].search([('id', '=', self.id)])
|
||||||
|
tool_distribution_list = []
|
||||||
|
if objs_all:
|
||||||
|
for item in objs_all:
|
||||||
|
functional_tool_codes = []
|
||||||
|
for obj in item.sf_functional_cutting_tool_entity_ids:
|
||||||
|
functional_tool_codes.append(obj.code)
|
||||||
|
val = {
|
||||||
|
'id': item.id,
|
||||||
|
'name': item.name,
|
||||||
|
'tool_groups_name': item.tool_groups_id.name,
|
||||||
|
'sf_cutting_tool_type_code': item.sf_cutting_tool_type_id.code,
|
||||||
|
'diameter': item.diameter,
|
||||||
|
'knife_tip_r_angle': item.knife_tip_r_angle,
|
||||||
|
'tool_stock_num': item.tool_stock_num,
|
||||||
|
'side_shelf_num': item.side_shelf_num,
|
||||||
|
'on_tool_stock_num': item.on_tool_stock_num,
|
||||||
|
'tool_stock_total': item.tool_stock_total,
|
||||||
|
'min_stock_num': item.min_stock_num,
|
||||||
|
'max_stock_num': item.max_stock_num,
|
||||||
|
'batch_replenishment_num': item.batch_replenishment_num,
|
||||||
|
'unit': item.unit,
|
||||||
|
'image': '' if not item.image else base64.b64encode(item.image).decode('utf-8'),
|
||||||
|
'functional_tool_codes': str(functional_tool_codes),
|
||||||
|
'whether_standard_knife': item.whether_standard_knife,
|
||||||
|
'coarse_middle_thin': item.coarse_middle_thin,
|
||||||
|
'active': item.active
|
||||||
|
}
|
||||||
|
tool_distribution_list.append(val)
|
||||||
|
kw = json.dumps(tool_distribution_list, ensure_ascii=False)
|
||||||
|
r = requests.post(str_url, json={}, data={'kw': kw, 'token': token}, headers=headers)
|
||||||
|
ret = r.json()
|
||||||
|
# self.code = ret['data']
|
||||||
|
# self.state_zc = "已注册"
|
||||||
|
if r == 200:
|
||||||
|
return "功能刀具出入库记录注册成功"
|
||||||
|
else:
|
||||||
|
raise UserError("没有注册功能刀具出入库记录信息")
|
||||||
|
|
||||||
|
@api.model_create_multi
|
||||||
|
def create(self, vals_list):
|
||||||
|
records = super(RealTimeDistributionFunctionalTools, self).create(vals_list)
|
||||||
|
for record in records:
|
||||||
|
if record.functional_tool_name_id:
|
||||||
|
record.enroll_functional_tool_move()
|
||||||
|
return records
|
||||||
|
|
||||||
|
def write(self, vals):
|
||||||
|
res = super().write(vals)
|
||||||
|
self.enroll_functional_tool_move()
|
||||||
|
return res
|
||||||
@@ -79,6 +79,9 @@ class SfMaintenanceEquipment(models.Model):
|
|||||||
'functional_tool_name_id': functional_tool_id.id,
|
'functional_tool_name_id': functional_tool_id.id,
|
||||||
'tool_install_time': time
|
'tool_install_time': time
|
||||||
})
|
})
|
||||||
|
if functional_tool_id.current_location_id.name != '制造前':
|
||||||
|
# 对功能刀具进行出库到生产线
|
||||||
|
functional_tool_id.tool_inventory_displacement_out()
|
||||||
functional_tool_id.write({
|
functional_tool_id.write({
|
||||||
'max_lifetime_value': data['MaxLife'],
|
'max_lifetime_value': data['MaxLife'],
|
||||||
'used_value': data['UseLife'],
|
'used_value': data['UseLife'],
|
||||||
@@ -101,10 +104,11 @@ class StockLot(models.Model):
|
|||||||
def _compute_tool_material_status(self):
|
def _compute_tool_material_status(self):
|
||||||
for record in self:
|
for record in self:
|
||||||
if record:
|
if record:
|
||||||
if record.quant_ids[-1].location_id.name == '刀具组装位置':
|
if record.quant_ids:
|
||||||
record.tool_material_status = '在用'
|
if record.quant_ids[-1].location_id.name == '刀具组装位置':
|
||||||
else:
|
record.tool_material_status = '在用'
|
||||||
record.tool_material_status = '可用'
|
else:
|
||||||
|
record.tool_material_status = '可用'
|
||||||
|
|
||||||
@api.model
|
@api.model
|
||||||
def name_search(self, name='', args=None, operator='ilike', limit=100):
|
def name_search(self, name='', args=None, operator='ilike', limit=100):
|
||||||
|
|||||||
@@ -311,6 +311,7 @@ class ToolMaterial(models.Model):
|
|||||||
product_id = fields.Many2one('product.product', string='刀具物料产品')
|
product_id = fields.Many2one('product.product', string='刀具物料产品')
|
||||||
|
|
||||||
name = fields.Char('名称', related='product_id.name')
|
name = fields.Char('名称', related='product_id.name')
|
||||||
|
code = fields.Char('编码', store=True)
|
||||||
cutting_tool_material_id = fields.Many2one('sf.cutting.tool.material', '刀具物料',
|
cutting_tool_material_id = fields.Many2one('sf.cutting.tool.material', '刀具物料',
|
||||||
related='product_id.cutting_tool_material_id',
|
related='product_id.cutting_tool_material_id',
|
||||||
store=True,
|
store=True,
|
||||||
@@ -330,6 +331,14 @@ class ToolMaterial(models.Model):
|
|||||||
|
|
||||||
active = fields.Boolean(string='已归档', default=True)
|
active = fields.Boolean(string='已归档', default=True)
|
||||||
|
|
||||||
|
@api.depends('product_id')
|
||||||
|
def _compute_code(self):
|
||||||
|
for record in self:
|
||||||
|
if record:
|
||||||
|
code = '%s_%s' % (record.cutting_tool_standard_library_id.code, record.specification_id.name)
|
||||||
|
obj = self.search([('code', 'like', code)], limit=1, order="id desc")
|
||||||
|
record.code = '%s_%03d' % (code, 1 if obj else int(obj.code[-3:]) + 1)
|
||||||
|
|
||||||
@api.depends('barcode_ids')
|
@api.depends('barcode_ids')
|
||||||
def _compute_number(self):
|
def _compute_number(self):
|
||||||
for record in self:
|
for record in self:
|
||||||
|
|||||||
@@ -40,6 +40,8 @@
|
|||||||
<field name="arch" type="xml">
|
<field name="arch" type="xml">
|
||||||
<form create="0" edit="0" delete="0">
|
<form create="0" edit="0" delete="0">
|
||||||
<header>
|
<header>
|
||||||
|
<button name="enroll_functional_tool_entity" string="功能刀具注册" type="object"
|
||||||
|
class="btn-primary"/>
|
||||||
<field name="functional_tool_status" widget="statusbar" statusbar_visible="正常,报警,已拆除"/>
|
<field name="functional_tool_status" widget="statusbar" statusbar_visible="正常,报警,已拆除"/>
|
||||||
</header>
|
</header>
|
||||||
<sheet>
|
<sheet>
|
||||||
@@ -152,8 +154,8 @@
|
|||||||
<field name="max_lifetime_value"/>
|
<field name="max_lifetime_value"/>
|
||||||
<field name="alarm_value"/>
|
<field name="alarm_value"/>
|
||||||
<field name="used_value"/>
|
<field name="used_value"/>
|
||||||
<field name="current_location_id"/>
|
<field name="current_location_id" invisible="1"/>
|
||||||
<field name="current_location" invisible="1"/>
|
<field name="current_location"/>
|
||||||
</group>
|
</group>
|
||||||
<group>
|
<group>
|
||||||
<field name="tool_loading_length"/>
|
<field name="tool_loading_length"/>
|
||||||
@@ -203,7 +205,7 @@
|
|||||||
<filter string="已归档" name="inactive" domain="[('active', '=', False)]"/>
|
<filter string="已归档" name="inactive" domain="[('active', '=', False)]"/>
|
||||||
<searchpanel>
|
<searchpanel>
|
||||||
<field name="sf_cutting_tool_type_id" icon="fa-building" enable_counters="1"/>
|
<field name="sf_cutting_tool_type_id" icon="fa-building" enable_counters="1"/>
|
||||||
<field name="current_location_id" icon="fa-building" enable_counters="1"/>
|
<field name="current_location" icon="fa-building" enable_counters="1"/>
|
||||||
<field name="functional_tool_status" icon="fa-building" enable_counters="1"/>
|
<field name="functional_tool_status" icon="fa-building" enable_counters="1"/>
|
||||||
</searchpanel>
|
</searchpanel>
|
||||||
</search>
|
</search>
|
||||||
@@ -243,6 +245,8 @@
|
|||||||
<field name="dispose_user"/>
|
<field name="dispose_user"/>
|
||||||
<field name="dispose_time"/>
|
<field name="dispose_time"/>
|
||||||
<field name="dispose_func"/>
|
<field name="dispose_func"/>
|
||||||
|
<button name="enroll_functional_tool_warning" string="刀具预警注册" type="object"
|
||||||
|
class="btn-primary"/>
|
||||||
</tree>
|
</tree>
|
||||||
</field>
|
</field>
|
||||||
</record>
|
</record>
|
||||||
@@ -318,6 +322,10 @@
|
|||||||
<field name="model">sf.real.time.distribution.of.functional.tools</field>
|
<field name="model">sf.real.time.distribution.of.functional.tools</field>
|
||||||
<field name="arch" type="xml">
|
<field name="arch" type="xml">
|
||||||
<form>
|
<form>
|
||||||
|
<header>
|
||||||
|
<button name="enroll_functional_tool_real_time_distribution" string="安全库存注册" type="object"
|
||||||
|
class="btn-primary"/>
|
||||||
|
</header>
|
||||||
<sheet>
|
<sheet>
|
||||||
<div class="oe_title">
|
<div class="oe_title">
|
||||||
<h1>
|
<h1>
|
||||||
@@ -454,6 +462,7 @@
|
|||||||
<field name="date"/>
|
<field name="date"/>
|
||||||
<field name="qty_done" string="数量"/>
|
<field name="qty_done" string="数量"/>
|
||||||
<field name="functional_tool_type_id" invisible="True"/>
|
<field name="functional_tool_type_id" invisible="True"/>
|
||||||
|
<button name="enroll_functional_tool_move" string="安全库存注册" type="object" class="btn-primary"/>
|
||||||
</tree>
|
</tree>
|
||||||
</field>
|
</field>
|
||||||
</record>
|
</record>
|
||||||
|
|||||||
@@ -22,6 +22,9 @@
|
|||||||
<field name="model">sf.tool.material.search</field>
|
<field name="model">sf.tool.material.search</field>
|
||||||
<field name="arch" type="xml">
|
<field name="arch" type="xml">
|
||||||
<form string="刀具物料查询" create="0">
|
<form string="刀具物料查询" create="0">
|
||||||
|
<header>
|
||||||
|
<button string="刀具物料注册" name="enroll_tool_material" type="object" class="btn-primary"/>
|
||||||
|
</header>
|
||||||
<sheet>
|
<sheet>
|
||||||
<div class="oe_title">
|
<div class="oe_title">
|
||||||
<h1>
|
<h1>
|
||||||
|
|||||||
@@ -300,29 +300,32 @@ class FunctionalToolAssemblyOrder(models.TransientModel):
|
|||||||
智能工厂组装单处扫码绑定刀具物料')
|
智能工厂组装单处扫码绑定刀具物料')
|
||||||
"""
|
"""
|
||||||
for record in self:
|
for record in self:
|
||||||
records = record.env['stock.lot'].search([('name', '=', barcode)])
|
if 'DJWL' in barcode:
|
||||||
if not records:
|
records = record.env['stock.lot'].search([('name', '=', barcode)])
|
||||||
raise ValidationError('扫描的条形码数据不存在,请重新扫描!')
|
if not records:
|
||||||
for record_stock_lot in records:
|
raise ValidationError('扫描的条形码数据不存在,请重新扫描!')
|
||||||
if record_stock_lot.quant_ids[-1].location_id.name == '刀具组装位置':
|
for record_stock_lot in records:
|
||||||
raise ValidationError('该刀具物料已使用,请重新选择!!!')
|
if record_stock_lot.quant_ids[-1].location_id.name == '刀具组装位置':
|
||||||
elif record_stock_lot.quant_ids[-1].location_id.name not in '刀具房':
|
raise ValidationError('该刀具物料已使用,请重新选择!!!')
|
||||||
raise ValidationError('该刀具物料未入库,请重新选择!!!')
|
elif record_stock_lot.quant_ids[-1].location_id.name not in '刀具房':
|
||||||
tool_material_name = record_stock_lot.product_id.cutting_tool_material_id.name
|
raise ValidationError('该刀具物料未入库,请重新选择!!!')
|
||||||
if tool_material_name == '整体式刀具':
|
tool_material_name = record_stock_lot.product_id.cutting_tool_material_id.name
|
||||||
record.integral_code_id = record_stock_lot.id
|
if tool_material_name == '整体式刀具':
|
||||||
elif tool_material_name == '刀片':
|
record.integral_code_id = record_stock_lot.id
|
||||||
record.blade_code_id = record_stock_lot.id
|
elif tool_material_name == '刀片':
|
||||||
elif tool_material_name == '刀杆':
|
record.blade_code_id = record_stock_lot.id
|
||||||
record.bar_code_id = record_stock_lot.id
|
elif tool_material_name == '刀杆':
|
||||||
elif tool_material_name == '刀盘':
|
record.bar_code_id = record_stock_lot.id
|
||||||
record.pad_code_id = record_stock_lot.id
|
elif tool_material_name == '刀盘':
|
||||||
elif tool_material_name == '刀柄':
|
record.pad_code_id = record_stock_lot.id
|
||||||
record.handle_code_id = record_stock_lot.id
|
elif tool_material_name == '刀柄':
|
||||||
elif tool_material_name == '夹头':
|
record.handle_code_id = record_stock_lot.id
|
||||||
record.chuck_code_id = record_stock_lot.id
|
elif tool_material_name == '夹头':
|
||||||
else:
|
record.chuck_code_id = record_stock_lot.id
|
||||||
raise ValidationError('扫描的刀具物料不存在,请重新扫描!')
|
else:
|
||||||
|
raise ValidationError('扫描的刀具物料不存在,请重新扫描!')
|
||||||
|
else:
|
||||||
|
record.rfid = barcode
|
||||||
|
|
||||||
# 组装功能刀具参数信息
|
# 组装功能刀具参数信息
|
||||||
barcode_id = fields.Many2one('stock.lot', string='功能刀具序列号')
|
barcode_id = fields.Many2one('stock.lot', string='功能刀具序列号')
|
||||||
@@ -676,7 +679,8 @@ class ProductProduct(models.Model):
|
|||||||
location_inventory_id = self.env['stock.location'].search([('name', '=', 'Production')])
|
location_inventory_id = self.env['stock.location'].search([('name', '=', 'Production')])
|
||||||
stock_location_id = self.env['stock.location'].search([('name', '=', '组装后')])
|
stock_location_id = self.env['stock.location'].search([('name', '=', '组装后')])
|
||||||
# 创建功能刀具该批次/序列号 库存移动和移动历史
|
# 创建功能刀具该批次/序列号 库存移动和移动历史
|
||||||
stock_lot.create_stock_quant(location_inventory_id, stock_location_id, functional_tool_assembly.id)
|
stock_lot.create_stock_quant(location_inventory_id, stock_location_id, functional_tool_assembly.id,
|
||||||
|
'功能刀具组装')
|
||||||
|
|
||||||
return stock_lot
|
return stock_lot
|
||||||
|
|
||||||
@@ -710,20 +714,20 @@ class ProductProduct(models.Model):
|
|||||||
location_inventory_id = tool_material.quant_ids.location_id[-1]
|
location_inventory_id = tool_material.quant_ids.location_id[-1]
|
||||||
stock_location_id = self.env['stock.location'].search([('name', '=', '刀具组装位置')])
|
stock_location_id = self.env['stock.location'].search([('name', '=', '刀具组装位置')])
|
||||||
# 创建功能刀具该批次/序列号 库存移动和移动历史
|
# 创建功能刀具该批次/序列号 库存移动和移动历史
|
||||||
tool_material.create_stock_quant(location_inventory_id, stock_location_id, None)
|
tool_material.create_stock_quant(location_inventory_id, stock_location_id, None, '功能刀具组装')
|
||||||
|
|
||||||
|
|
||||||
class StockLot(models.Model):
|
class StockLot(models.Model):
|
||||||
_inherit = 'stock.lot'
|
_inherit = 'stock.lot'
|
||||||
|
|
||||||
def create_stock_quant(self, location_inventory_id, stock_location_id, functional_tool_assembly_id):
|
def create_stock_quant(self, location_inventory_id, stock_location_id, functional_tool_assembly_id, name):
|
||||||
"""
|
"""
|
||||||
对功能刀具组装过程的功能刀具和刀具物料进行库存移动,以及创建移动历史
|
对功能刀具组装过程的功能刀具和刀具物料进行库存移动,以及创建移动历史
|
||||||
"""
|
"""
|
||||||
|
|
||||||
# 创建库存移动记录
|
# 创建库存移动记录
|
||||||
stock_move_id = self.env['stock.move'].create({
|
stock_move_id = self.env['stock.move'].sudo().create({
|
||||||
'name': '功能刀具组装',
|
'name': name,
|
||||||
'product_id': self.product_id.id,
|
'product_id': self.product_id.id,
|
||||||
'location_id': location_inventory_id.id,
|
'location_id': location_inventory_id.id,
|
||||||
'location_dest_id': stock_location_id.id,
|
'location_dest_id': stock_location_id.id,
|
||||||
@@ -732,7 +736,7 @@ class StockLot(models.Model):
|
|||||||
})
|
})
|
||||||
|
|
||||||
# 创建移动历史记录
|
# 创建移动历史记录
|
||||||
stock_move_line_id = self.env['stock.move.line'].create({
|
stock_move_line_id = self.env['stock.move.line'].sudo().create({
|
||||||
'product_id': self.product_id.id,
|
'product_id': self.product_id.id,
|
||||||
'functional_tool_name_id': functional_tool_assembly_id,
|
'functional_tool_name_id': functional_tool_assembly_id,
|
||||||
'lot_id': self.id,
|
'lot_id': self.id,
|
||||||
|
|||||||
@@ -1,105 +1,104 @@
|
|||||||
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
|
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
|
||||||
|
|
||||||
access_sf_shelf_location_group_sf_stock_user,sf.shelf.location,model_sf_shelf_location,sf_warehouse.group_sf_stock_user,1,0,0,0
|
access_sf_shelf_location_group_sf_stock_user_group_sf_stock_user,sf.shelf.location,model_sf_shelf_location,sf_warehouse.group_sf_stock_user,1,0,0,0
|
||||||
access_sf_shelf_location_group_sf_stock_manager,sf.shelf.location,model_sf_shelf_location,sf_warehouse.group_sf_stock_manager,1,1,1,0
|
access_sf_shelf_location_group_sf_stock_manager,sf.shelf.location,model_sf_shelf_location,sf_warehouse.group_sf_stock_manager,1,1,1,0
|
||||||
access_sf_shelf_group_sf_stock_user,sf.shelf.group.sf.stock.user,model_sf_shelf,sf_warehouse.group_sf_stock_user,1,0,0,0
|
access_sf_shelf_group_sf_stock_user_group_sf_stock_user,sf.shelf.group.sf.stock.user,model_sf_shelf,sf_warehouse.group_sf_stock_user,1,0,0,0
|
||||||
access_sf_shelf_group_sf_stock_manager,sf.shelf.group.sf.stock.manager,model_sf_shelf,sf_warehouse.group_sf_stock_manager,1,1,1,0
|
access_sf_shelf_group_sf_stock_manager,sf.shelf.group.sf.stock.manager,model_sf_shelf,sf_warehouse.group_sf_stock_manager,1,1,1,0
|
||||||
|
|
||||||
access_procurement_group,procurement.group,stock.model_procurement_group,base.group_user,1,1,1,0
|
access_procurement_group,procurement.group,stock.model_procurement_group,base.group_user,1,1,1,0
|
||||||
access_stock_warehouse_manager,stock.warehouse.manager,stock.model_stock_warehouse,sf_warehouse.group_sf_stock_user,1,1,1,0
|
access_stock_warehouse_manager_group_sf_stock_user,stock.warehouse.manager,stock.model_stock_warehouse,sf_warehouse.group_sf_stock_user,1,1,1,0
|
||||||
access_stock_warehouse_user,stock.warehouse.user,stock.model_stock_warehouse,base.group_user,1,0,0,0
|
access_stock_warehouse_user,stock.warehouse.user,stock.model_stock_warehouse,base.group_user,1,0,0,0
|
||||||
access_stock_location_partner_manager,stock.location.partner.manager,stock.model_stock_location,base.group_partner_manager,1,0,0,0
|
access_stock_location_partner_manager,stock.location.partner.manager,stock.model_stock_location,base.group_partner_manager,1,0,0,0
|
||||||
access_stock_location_manager,stock.location.manager,stock.model_stock_location,sf_warehouse.group_sf_stock_user,1,1,1,0
|
access_stock_location_manager_group_sf_stock_user,stock.location.manager,stock.model_stock_location,sf_warehouse.group_sf_stock_user,1,1,1,0
|
||||||
access_stock_location_user,stock.location.user,stock.model_stock_location,base.group_user,1,0,0,0
|
access_stock_location_user,stock.location.user,stock.model_stock_location,base.group_user,1,0,0,0
|
||||||
access_stock_picking_user,stock.picking user,stock.model_stock_picking,sf_warehouse.group_sf_stock_user,1,1,1,0
|
access_stock_picking_user_group_sf_stock_user,stock.picking user,stock.model_stock_picking,sf_warehouse.group_sf_stock_user,1,1,1,0
|
||||||
access_stock_picking_manager,stock.picking manager,stock.model_stock_picking,sf_warehouse.group_sf_stock_user,1,1,1,0
|
access_stock_picking_manager_group_sf_stock_user,stock.picking manager,stock.model_stock_picking,sf_warehouse.group_sf_stock_user,1,1,1,0
|
||||||
access_stock_picking_group_quality_director,stock_picking_group_quality_director,stock.model_stock_picking,sf_base.group_quality_director,1,0,0,0
|
|
||||||
access_stock_picking_type_all,stock.picking.type all users,stock.model_stock_picking_type,base.group_user,1,0,0,0
|
access_stock_picking_type_all,stock.picking.type all users,stock.model_stock_picking_type,base.group_user,1,0,0,0
|
||||||
access_stock_picking_type_user,stock.picking.type user,stock.model_stock_picking_type,sf_warehouse.group_sf_stock_user,1,0,0,0
|
access_stock_picking_type_user_group_sf_stock_user,stock.picking.type user,stock.model_stock_picking_type,sf_warehouse.group_sf_stock_user,1,0,0,0
|
||||||
access_stock_picking_type_manager,stock.picking.type manager,stock.model_stock_picking_type,sf_warehouse.group_sf_stock_user,1,1,1,0
|
access_stock_picking_type_manager_group_sf_stock_user,stock.picking.type manager,stock.model_stock_picking_type,sf_warehouse.group_sf_stock_user,1,1,1,0
|
||||||
access_stock_lot_user,stock.lot user,stock.model_stock_lot,sf_warehouse.group_sf_stock_user,1,1,1,0
|
access_stock_lot_user_group_sf_stock_user,stock.lot user,stock.model_stock_lot,sf_warehouse.group_sf_stock_user,1,1,1,0
|
||||||
access_stock_lot_group_quality_director,stock_lot_group_quality_director,stock.model_stock_lot,sf_base.group_quality_director,1,0,0,0
|
access_stock_move_manager_group_sf_stock_user,stock.move manager,stock.model_stock_move,sf_warehouse.group_sf_stock_user,1,1,1,0
|
||||||
access_stock_move_manager,stock.move manager,stock.model_stock_move,sf_warehouse.group_sf_stock_user,1,1,1,0
|
access_stock_move_user_group_sf_stock_user,stock.move user,stock.model_stock_move,sf_warehouse.group_sf_stock_user,1,1,1,0
|
||||||
access_stock_move_user,stock.move user,stock.model_stock_move,sf_warehouse.group_sf_stock_user,1,1,1,0
|
access_product_product_stock_user_group_sf_stock_user,product_product_stock_user,product.model_product_product,sf_warehouse.group_sf_stock_user,1,0,0,0
|
||||||
access_product_product_stock_user,product_product_stock_user,product.model_product_product,sf_warehouse.group_sf_stock_user,1,0,0,0
|
access_product_template_stock_user_group_sf_stock_user,product.template stock user,product.model_product_template,sf_warehouse.group_sf_stock_user,1,0,0,0
|
||||||
access_product_template_stock_user,product.template stock user,product.model_product_template,sf_warehouse.group_sf_stock_user,1,0,0,0
|
access_uom_category_stock_manager_group_sf_stock_user,uom.category stock_manager,uom.model_uom_category,sf_warehouse.group_sf_stock_user,1,1,1,0
|
||||||
access_uom_category_stock_manager,uom.category stock_manager,uom.model_uom_category,sf_warehouse.group_sf_stock_user,1,1,1,0
|
access_uom_uom_stock_manager_group_sf_stock_user,uom.uom stock_manager,uom.model_uom_uom,sf_warehouse.group_sf_stock_user,1,1,1,0
|
||||||
access_uom_uom_stock_manager,uom.uom stock_manager,uom.model_uom_uom,sf_warehouse.group_sf_stock_user,1,1,1,0
|
access_product_category_stock_manager_group_sf_stock_user,product.category stock_manager,product.model_product_category,sf_warehouse.group_sf_stock_user,1,1,1,0
|
||||||
access_product_category_stock_manager,product.category stock_manager,product.model_product_category,sf_warehouse.group_sf_stock_user,1,1,1,0
|
access_product_template_stock_manager_group_sf_stock_user,product.template stock_manager,product.model_product_template,sf_warehouse.group_sf_stock_user,1,1,1,0
|
||||||
access_product_template_stock_manager,product.template stock_manager,product.model_product_template,sf_warehouse.group_sf_stock_user,1,1,1,0
|
access_product_product_stock_manager_group_sf_stock_user,product.product stock_manager,product.model_product_product,sf_warehouse.group_sf_stock_user,1,1,1,0
|
||||||
access_product_product_stock_manager,product.product stock_manager,product.model_product_product,sf_warehouse.group_sf_stock_user,1,1,1,0
|
access_product_packaging_stock_manager_group_sf_stock_user,product.packaging stock_manager,product.model_product_packaging,sf_warehouse.group_sf_stock_user,1,1,1,0
|
||||||
access_product_packaging_stock_manager,product.packaging stock_manager,product.model_product_packaging,sf_warehouse.group_sf_stock_user,1,1,1,0
|
access_product_supplierinfo_stock_manager_group_sf_stock_user,product.supplierinfo stock_manager,product.model_product_supplierinfo,sf_warehouse.group_sf_stock_user,1,1,1,0
|
||||||
access_product_supplierinfo_stock_manager,product.supplierinfo stock_manager,product.model_product_supplierinfo,sf_warehouse.group_sf_stock_user,1,1,1,0
|
access_product_pricelist_stock_manager_group_sf_stock_user,product.pricelist stock_manager,product.model_product_pricelist,sf_warehouse.group_sf_stock_user,1,1,1,0
|
||||||
access_product_pricelist_stock_manager,product.pricelist stock_manager,product.model_product_pricelist,sf_warehouse.group_sf_stock_user,1,1,1,0
|
access_product_group_res_partner_stock_manager_group_sf_stock_user,res_partner group_stock_manager,base.model_res_partner,sf_warehouse.group_sf_stock_user,1,1,1,0
|
||||||
access_product_group_res_partner_stock_manager,res_partner group_stock_manager,base.model_res_partner,sf_warehouse.group_sf_stock_user,1,1,1,0
|
access_product_pricelist_item_stock_manager_group_sf_stock_user,product.pricelist.item stock_manager,product.model_product_pricelist_item,sf_warehouse.group_sf_stock_user,1,1,1,0
|
||||||
access_product_pricelist_item_stock_manager,product.pricelist.item stock_manager,product.model_product_pricelist_item,sf_warehouse.group_sf_stock_user,1,1,1,0
|
access_product_tag_stock_manager_group_sf_stock_user,product.tag.stock.manager,product.model_product_tag,sf_warehouse.group_sf_stock_user,1,1,1,0
|
||||||
access_product_tag_stock_manager,product.tag.stock.manager,product.model_product_tag,sf_warehouse.group_sf_stock_user,1,1,1,0
|
access_stock_warehouse_orderpoint_group_sf_stock_user,stock.warehouse.orderpoint,stock.model_stock_warehouse_orderpoint,sf_warehouse.group_sf_stock_user,1,0,0,0
|
||||||
access_stock_warehouse_orderpoint,stock.warehouse.orderpoint,stock.model_stock_warehouse_orderpoint,sf_warehouse.group_sf_stock_user,1,0,0,0
|
access_stock_warehouse_orderpoint_system_group_sf_stock_user,stock.warehouse.orderpoint system,stock.model_stock_warehouse_orderpoint,sf_warehouse.group_sf_stock_user,1,1,1,0
|
||||||
access_stock_warehouse_orderpoint_system,stock.warehouse.orderpoint system,stock.model_stock_warehouse_orderpoint,sf_warehouse.group_sf_stock_user,1,1,1,0
|
access_stock_quant_user_group_sf_stock_user,stock.quant user,stock.model_stock_quant,sf_warehouse.group_sf_stock_user,1,1,1,0
|
||||||
access_stock_quant_user,stock.quant user,stock.model_stock_quant,sf_warehouse.group_sf_stock_user,1,1,1,0
|
|
||||||
access_stock_quant_all,stock.quant all users,stock.model_stock_quant,base.group_user,1,0,0,0
|
access_stock_quant_all,stock.quant all users,stock.model_stock_quant,base.group_user,1,0,0,0
|
||||||
access_stock_quant_package_all,stock.quant.package all users,stock.model_stock_quant_package,base.group_user,1,0,0,0
|
access_stock_quant_package_all,stock.quant.package all users,stock.model_stock_quant_package,base.group_user,1,0,0,0
|
||||||
access_stock_quant_package_stock_manager,stock.quant.package stock manager,stock.model_stock_quant_package,sf_warehouse.group_sf_stock_user,1,1,1,0
|
access_stock_quant_package_stock_manager_group_sf_stock_user,stock.quant.package stock manager,stock.model_stock_quant_package,sf_warehouse.group_sf_stock_user,1,1,1,0
|
||||||
access_stock_quant_package_stock_user,stock.quant.package stock user,stock.model_stock_quant_package,sf_warehouse.group_sf_stock_user,1,1,1,0
|
access_stock_quant_package_stock_user_group_sf_stock_user,stock.quant.package stock user,stock.model_stock_quant_package,sf_warehouse.group_sf_stock_user,1,1,1,0
|
||||||
access_stock_package_level_all,stock.package_level all users,stock.model_stock_package_level,base.group_user,1,0,0,0
|
access_stock_package_level_all,stock.package_level all users,stock.model_stock_package_level,base.group_user,1,0,0,0
|
||||||
access_stock_package_level_stock_manager,stock.package_level stock manager,stock.model_stock_package_level,sf_warehouse.group_sf_stock_user,1,1,1,0
|
access_stock_package_level_stock_manager_group_sf_stock_user,stock.package_level stock manager,stock.model_stock_package_level,sf_warehouse.group_sf_stock_user,1,1,1,0
|
||||||
access_stock_package_level_stock_user,stock.package_level stock user,stock.model_stock_package_level,sf_warehouse.group_sf_stock_user,1,1,1,0
|
access_stock_package_level_stock_user_group_sf_stock_user,stock.package_level stock user,stock.model_stock_package_level,sf_warehouse.group_sf_stock_user,1,1,1,0
|
||||||
access_stock_rule_user,stock_rule user,stock.model_stock_rule,sf_warehouse.group_sf_stock_user,1,0,0,0
|
access_stock_rule_user_group_sf_stock_user,stock_rule user,stock.model_stock_rule,sf_warehouse.group_sf_stock_user,1,0,0,0
|
||||||
access_stock_rule_stock_manager,stock_rule stock manager,stock.model_stock_rule,sf_warehouse.group_sf_stock_user,1,1,1,0
|
access_stock_rule_stock_manager_group_sf_stock_user,stock_rule stock manager,stock.model_stock_rule,sf_warehouse.group_sf_stock_user,1,1,1,0
|
||||||
access_stock_location_route_stock_manager,stock.route,stock.model_stock_route,sf_warehouse.group_sf_stock_user,1,1,1,0
|
access_stock_location_route_stock_manager_group_sf_stock_user,stock.route,stock.model_stock_route,sf_warehouse.group_sf_stock_user,1,1,1,0
|
||||||
access_stock_location_route,stock.route,stock.model_stock_route,base.group_user,1,0,0,0
|
access_stock_location_route,stock.route,stock.model_stock_route,base.group_user,1,0,0,0
|
||||||
access_stock_rule_internal,stock.rule.flow internal,stock.model_stock_rule,base.group_user,1,0,0,0
|
access_stock_rule_internal,stock.rule.flow internal,stock.model_stock_rule,base.group_user,1,0,0,0
|
||||||
access_stock_move_line_manager,stock.move.line manager,stock.model_stock_move_line,sf_warehouse.group_sf_stock_user,1,1,1,0
|
access_stock_move_line_manager_group_sf_stock_user,stock.move.line manager,stock.model_stock_move_line,sf_warehouse.group_sf_stock_user,1,1,1,0
|
||||||
access_stock_move_line_user,stock.move.line user,stock.model_stock_move_line,sf_warehouse.group_sf_stock_user,1,1,1,0
|
access_stock_move_line_user_group_sf_stock_user,stock.move.line user,stock.model_stock_move_line,sf_warehouse.group_sf_stock_user,1,1,1,0
|
||||||
access_stock_move_line_all,stock.move.line all users,stock.model_stock_move_line,base.group_user,1,1,1,0
|
access_stock_move_line_all,stock.move.line all users,stock.model_stock_move_line,base.group_user,1,1,1,0
|
||||||
access_stock_putaway_all,stock.putaway.rule all users,stock.model_stock_putaway_rule,base.group_user,1,0,0,0
|
access_stock_putaway_all,stock.putaway.rule all users,stock.model_stock_putaway_rule,base.group_user,1,0,0,0
|
||||||
access_stock_putaway_manager,stock.putaway.rule all managers,stock.model_stock_putaway_rule,sf_warehouse.group_sf_stock_user,1,1,1,0
|
access_stock_putaway_manager_group_sf_stock_user,stock.putaway.rule all managers,stock.model_stock_putaway_rule,sf_warehouse.group_sf_stock_user,1,1,1,0
|
||||||
access_stock_removal_all,product.removal all users,stock.model_product_removal,base.group_user,1,0,0,0
|
access_stock_removal_all,product.removal all users,stock.model_product_removal,base.group_user,1,0,0,0
|
||||||
access_barcode_nomenclature_stock_user,barcode.nomenclature.stock.user,barcodes.model_barcode_nomenclature,sf_warehouse.group_sf_stock_user,1,0,0,0
|
access_barcode_nomenclature_stock_user_group_sf_stock_user,barcode.nomenclature.stock.user,barcodes.model_barcode_nomenclature,sf_warehouse.group_sf_stock_user,1,0,0,0
|
||||||
access_barcode_nomenclature_stock_manager,barcode.nomenclature.stock.manager,barcodes.model_barcode_nomenclature,sf_warehouse.group_sf_stock_user,1,1,1,0
|
access_barcode_nomenclature_stock_manager_group_sf_stock_user,barcode.nomenclature.stock.manager,barcodes.model_barcode_nomenclature,sf_warehouse.group_sf_stock_user,1,1,1,0
|
||||||
access_barcode_rule_stock_user,barcode.rule.stock.user,barcodes.model_barcode_rule,sf_warehouse.group_sf_stock_user,1,0,0,0
|
access_barcode_rule_stock_user_group_sf_stock_user,barcode.rule.stock.user,barcodes.model_barcode_rule,sf_warehouse.group_sf_stock_user,1,0,0,0
|
||||||
access_barcode_rule_stock_manager,barcode.rule.stock.manager,barcodes.model_barcode_rule,sf_warehouse.group_sf_stock_user,1,1,1,0
|
access_barcode_rule_stock_manager_group_sf_stock_user,barcode.rule.stock.manager,barcodes.model_barcode_rule,sf_warehouse.group_sf_stock_user,1,1,1,0
|
||||||
access_stock_scrap_user,stock.scrap.user,stock.model_stock_scrap,sf_warehouse.group_sf_stock_user,1,1,1,0
|
access_stock_scrap_user_group_sf_stock_user,stock.scrap.user,stock.model_stock_scrap,sf_warehouse.group_sf_stock_user,1,1,1,0
|
||||||
access_stock_scrap_manager,stock.scrap.manager,stock.model_stock_scrap,sf_warehouse.group_sf_stock_user,1,1,1,0
|
access_stock_scrap_manager_group_sf_stock_user,stock.scrap.manager,stock.model_stock_scrap,sf_warehouse.group_sf_stock_user,1,1,1,0
|
||||||
access_product_attribute_manager,product.attribute manager,product.model_product_attribute,sf_warehouse.group_sf_stock_user,1,1,1,0
|
access_product_attribute_manager_group_sf_stock_user,product.attribute manager,product.model_product_attribute,sf_warehouse.group_sf_stock_user,1,1,1,0
|
||||||
access_product_attribute_value_manager,product.attribute manager value,product.model_product_attribute_value,sf_warehouse.group_sf_stock_user,1,1,1,0
|
access_product_attribute_value_manager_group_sf_stock_user,product.attribute manager value,product.model_product_attribute_value,sf_warehouse.group_sf_stock_user,1,1,1,0
|
||||||
access_product_product_attribute_manager,product.product.attribute manager value,product.model_product_template_attribute_value,sf_warehouse.group_sf_stock_user,1,1,1,0
|
access_product_product_attribute_manager_group_sf_stock_user,product.product.attribute manager value,product.model_product_template_attribute_value,sf_warehouse.group_sf_stock_user,1,1,1,0
|
||||||
access_product_template_attribute_exclusion_manager,product.attribute manager filter line,product.model_product_template_attribute_exclusion,sf_warehouse.group_sf_stock_user,1,1,1,0
|
access_product_template_attribute_exclusion_manager_group_sf_stock_user,product.attribute manager filter line,product.model_product_template_attribute_exclusion,sf_warehouse.group_sf_stock_user,1,1,1,0
|
||||||
access_product_template_attribute_line_manager,product.attribute manager line,product.model_product_template_attribute_line,sf_warehouse.group_sf_stock_user,1,1,1,0
|
access_product_template_attribute_line_manager_group_sf_stock_user,product.attribute manager line,product.model_product_template_attribute_line,sf_warehouse.group_sf_stock_user,1,1,1,0
|
||||||
access_report_stock_quantity,access_report_stock_quantity,stock.model_report_stock_quantity,base.group_user,1,0,0,0
|
access_report_stock_quantity,access_report_stock_quantity,stock.model_report_stock_quantity,base.group_user,1,0,0,0
|
||||||
access_stock_traceability_report,access.stock.traceability.report,stock.model_stock_traceability_report,sf_warehouse.group_sf_stock_user,1,1,1,0
|
access_stock_traceability_report_group_sf_stock_user,access.stock.traceability.report,stock.model_stock_traceability_report,sf_warehouse.group_sf_stock_user,1,1,1,0
|
||||||
access_stock_assign_serial,access.stock.assign.serial,stock.model_stock_assign_serial,sf_warehouse.group_sf_stock_user,1,1,1,0
|
access_stock_assign_serial_group_sf_stock_user,access.stock.assign.serial,stock.model_stock_assign_serial,sf_warehouse.group_sf_stock_user,1,1,1,0
|
||||||
access_stock_return_picking_line,access.stock.return.picking.line,stock.model_stock_return_picking_line,sf_warehouse.group_sf_stock_user,1,1,1,0
|
access_stock_return_picking_line_group_sf_stock_user,access.stock.return.picking.line,stock.model_stock_return_picking_line,sf_warehouse.group_sf_stock_user,1,1,1,0
|
||||||
access_stock_return_picking,access.stock.return.picking,stock.model_stock_return_picking,sf_warehouse.group_sf_stock_user,1,1,1,0
|
access_stock_return_picking_group_sf_stock_user,access.stock.return.picking,stock.model_stock_return_picking,sf_warehouse.group_sf_stock_user,1,1,1,0
|
||||||
access_stock_change_product_qty,access.stock.change.product.qty,stock.model_stock_change_product_qty,sf_warehouse.group_sf_stock_user,1,1,1,0
|
access_stock_change_product_qty_group_sf_stock_user,access.stock.change.product.qty,stock.model_stock_change_product_qty,sf_warehouse.group_sf_stock_user,1,1,1,0
|
||||||
access_stock_scheduler_compute,access.stock.scheduler.compute,stock.model_stock_scheduler_compute,sf_warehouse.group_sf_stock_user,1,1,1,0
|
access_stock_scheduler_compute_group_sf_stock_user,access.stock.scheduler.compute,stock.model_stock_scheduler_compute,sf_warehouse.group_sf_stock_user,1,1,1,0
|
||||||
access_stock_immediate_transfer_line,access.stock.immediate.transfer.line,stock.model_stock_immediate_transfer_line,sf_warehouse.group_sf_stock_user,1,1,1,0
|
access_stock_immediate_transfer_line_group_sf_stock_user,access.stock.immediate.transfer.line,stock.model_stock_immediate_transfer_line,sf_warehouse.group_sf_stock_user,1,1,1,0
|
||||||
access_stock_immediate_transfer,access.stock.immediate.transfer,stock.model_stock_immediate_transfer,sf_warehouse.group_sf_stock_user,1,1,1,0
|
access_stock_immediate_transfer_group_sf_stock_user,access.stock.immediate.transfer,stock.model_stock_immediate_transfer,sf_warehouse.group_sf_stock_user,1,1,1,0
|
||||||
access_stock_backorder_confirmation_line,access.stock.backorder.confirmation.line,stock.model_stock_backorder_confirmation_line,sf_warehouse.group_sf_stock_user,1,1,1,0
|
access_stock_backorder_confirmation_line_group_sf_stock_user,access.stock.backorder.confirmation.line,stock.model_stock_backorder_confirmation_line,sf_warehouse.group_sf_stock_user,1,1,1,0
|
||||||
access_stock_backorder_confirmation,access.stock.backorder.confirmation,stock.model_stock_backorder_confirmation,sf_warehouse.group_sf_stock_user,1,1,1,0
|
access_stock_backorder_confirmation_group_sf_stock_user,access.stock.backorder.confirmation,stock.model_stock_backorder_confirmation,sf_warehouse.group_sf_stock_user,1,1,1,0
|
||||||
access_stock_quantity_history,access.stock.quantity.history,stock.model_stock_quantity_history,sf_warehouse.group_sf_stock_user,1,1,1,0
|
access_stock_quantity_history_group_sf_stock_user,access.stock.quantity.history,stock.model_stock_quantity_history,sf_warehouse.group_sf_stock_user,1,1,1,0
|
||||||
access_stock_rules_report,access.stock.rules.report,stock.model_stock_rules_report,sf_warehouse.group_sf_stock_user,1,1,1,0
|
access_stock_rules_report_group_sf_stock_user,access.stock.rules.report,stock.model_stock_rules_report,sf_warehouse.group_sf_stock_user,1,1,1,0
|
||||||
access_stock_warn_insufficient_qty_scrap,access.stock.warn.insufficient.qty.scrap,stock.model_stock_warn_insufficient_qty_scrap,sf_warehouse.group_sf_stock_user,1,1,1,0
|
access_stock_warn_insufficient_qty_scrap_group_sf_stock_user,access.stock.warn.insufficient.qty.scrap,stock.model_stock_warn_insufficient_qty_scrap,sf_warehouse.group_sf_stock_user,1,1,1,0
|
||||||
access_product_replenish,access.product.replenish,stock.model_product_replenish,sf_warehouse.group_sf_stock_user,1,1,1,0
|
access_product_replenish_group_sf_stock_user,access.product.replenish,stock.model_product_replenish,sf_warehouse.group_sf_stock_user,1,1,1,0
|
||||||
access_stock_track_confirmation,access.stock.track.confirmation,stock.model_stock_track_confirmation,sf_warehouse.group_sf_stock_user,1,1,1,0
|
access_stock_track_confirmation_group_sf_stock_user,access.stock.track.confirmation,stock.model_stock_track_confirmation,sf_warehouse.group_sf_stock_user,1,1,1,0
|
||||||
access_stock_track_line,access.stock.track.line,stock.model_stock_track_line,sf_warehouse.group_sf_stock_user,1,1,1,0
|
access_stock_track_line_group_sf_stock_user,access.stock.track.line,stock.model_stock_track_line,sf_warehouse.group_sf_stock_user,1,1,1,0
|
||||||
access_stock_package_destination,access.stock.package.destination,stock.model_stock_package_destination,sf_warehouse.group_sf_stock_user,1,1,1,0
|
access_stock_package_destination_group_sf_stock_user,access.stock.package.destination,stock.model_stock_package_destination,sf_warehouse.group_sf_stock_user,1,1,1,0
|
||||||
access_stock_orderpoint_snooze,access_stock_orderpoint_snooze,stock.model_stock_orderpoint_snooze,sf_warehouse.group_sf_stock_user,1,1,1,0
|
access_stock_orderpoint_snooze_group_sf_stock_user,access_stock_orderpoint_snooze,stock.model_stock_orderpoint_snooze,sf_warehouse.group_sf_stock_user,1,1,1,0
|
||||||
access_stock_package_type_user,access_stock_package_type_user,stock.model_stock_package_type,sf_warehouse.group_sf_stock_user,1,0,0,0
|
access_stock_package_type_user_group_sf_stock_user,access_stock_package_type_user,stock.model_stock_package_type,sf_warehouse.group_sf_stock_user,1,0,0,0
|
||||||
access_stock_package_type_manager,access_stock_package_type_manager,stock.model_stock_package_type,sf_warehouse.group_sf_stock_user,1,1,1,0
|
access_stock_package_type_manager_group_sf_stock_user,access_stock_package_type_manager,stock.model_stock_package_type,sf_warehouse.group_sf_stock_user,1,1,1,0
|
||||||
access_stock_storage_category_user,stock.storage.category.user,stock.model_stock_storage_category,base.group_user,1,0,0,0
|
access_stock_storage_category_user_group_sf_stock_user,stock.storage.category.user,stock.model_stock_storage_category,base.group_user,1,0,0,0
|
||||||
access_stock_storage_category_manager,stock.storage.category.manager,stock.model_stock_storage_category,sf_warehouse.group_sf_stock_user,1,1,1,0
|
access_stock_storage_category_manager_group_sf_stock_user,stock.storage.category.manager,stock.model_stock_storage_category,sf_warehouse.group_sf_stock_user,1,1,1,0
|
||||||
access_stock_storage_category_capacity_user,stock.storage.category.capacity.user,stock.model_stock_storage_category_capacity,base.group_user,1,0,0,0
|
access_stock_storage_category_capacity_user,stock.storage.category.capacity.user,stock.model_stock_storage_category_capacity,base.group_user,1,0,0,0
|
||||||
access_stock_storage_category_capacity_manager,stock.storage.category.capacity.manager,stock.model_stock_storage_category_capacity,sf_warehouse.group_sf_stock_user,1,1,1,0
|
access_stock_storage_category_capacity_manager_group_sf_stock_user,stock.storage.category.capacity.manager,stock.model_stock_storage_category_capacity,sf_warehouse.group_sf_stock_user,1,1,1,0
|
||||||
access_stock_inventory_conflict,stock.inventory.conflict,stock.model_stock_inventory_conflict,sf_warehouse.group_sf_stock_user,1,1,1,0
|
access_stock_inventory_conflict_group_sf_stock_user,stock.inventory.conflict,stock.model_stock_inventory_conflict,sf_warehouse.group_sf_stock_user,1,1,1,0
|
||||||
access_stock_inventory_warning,stock.inventory.warning,stock.model_stock_inventory_warning,sf_warehouse.group_sf_stock_user,1,1,1,0
|
access_stock_inventory_warning_group_sf_stock_user,stock.inventory.warning,stock.model_stock_inventory_warning,sf_warehouse.group_sf_stock_user,1,1,1,0
|
||||||
access_stock_inventory_adjustment_name,stock.inventory.adjustment.name,stock.model_stock_inventory_adjustment_name,sf_warehouse.group_sf_stock_user,1,1,1,0
|
access_stock_inventory_adjustment_name_group_sf_stock_user,stock.inventory.adjustment.name,stock.model_stock_inventory_adjustment_name,sf_warehouse.group_sf_stock_user,1,1,1,0
|
||||||
access_stock_request_count,stock.request.count,stock.model_stock_request_count,sf_warehouse.group_sf_stock_user,1,1,1,0
|
access_stock_request_count_group_sf_stock_user,stock.request.count,stock.model_stock_request_count,sf_warehouse.group_sf_stock_user,1,1,1,0
|
||||||
access_stock_replenishment_info,stock.replenishment.info,stock.model_stock_replenishment_info,sf_warehouse.group_sf_stock_user,1,1,1,0
|
access_stock_replenishment_info_group_sf_stock_user,stock.replenishment.info,stock.model_stock_replenishment_info,sf_warehouse.group_sf_stock_user,1,1,1,0
|
||||||
access_stock_picking_label_type_user,picking.label.type.user,stock.model_picking_label_type,sf_warehouse.group_sf_stock_user,1,1,1,0
|
access_stock_picking_label_type_user_group_sf_stock_user,picking.label.type.user,stock.model_picking_label_type,sf_warehouse.group_sf_stock_user,1,1,1,0
|
||||||
access_stock_lot_label_layout_user,lot.label.layout.user,stock.model_lot_label_layout,sf_warehouse.group_sf_stock_user,1,1,1,0
|
access_stock_lot_label_layout_user_group_sf_stock_user,lot.label.layout.user,stock.model_lot_label_layout,sf_warehouse.group_sf_stock_user,1,1,1,0
|
||||||
access_stock_replenish_option,stock.replenishment.option,stock.model_stock_replenishment_option,sf_warehouse.group_sf_stock_user,1,1,1,0
|
access_stock_replenish_option_group_sf_stock_user,stock.replenishment.option,stock.model_stock_replenishment_option,sf_warehouse.group_sf_stock_user,1,1,1,0
|
||||||
access_mrp_production,mrp.production,mrp.model_mrp_production,sf_warehouse.group_sf_stock_user,1,1,1,0
|
access_mrp_production_group_sf_stock_user,mrp.production,mrp.model_mrp_production,sf_warehouse.group_sf_stock_user,1,1,1,0
|
||||||
|
|
||||||
access_sf_shelf_location_group_plan_dispatch,sf.shelf.location,model_sf_shelf_location,sf_base.group_plan_dispatch,1,0,0,0
|
access_sf_shelf_location_group_plan_dispatch,sf.shelf.location,model_sf_shelf_location,sf_base.group_plan_dispatch,1,0,0,0
|
||||||
access_stock_move,stock.move,stock.model_stock_move,sf_base.group_plan_dispatch,1,1,1,0
|
access_stock_move,stock.move,stock.model_stock_move,sf_base.group_plan_dispatch,1,1,1,0
|
||||||
|
|||||||
|
@@ -8,7 +8,7 @@ class Common(models.Model):
|
|||||||
_description = u'公用类'
|
_description = u'公用类'
|
||||||
|
|
||||||
def print_zpl(self, zpl_str):
|
def print_zpl(self, zpl_str):
|
||||||
WinDll_path = "D://桌面//pythonZPL//tsc_python_sdk_example//TSC_Python_SDK_Example//tsc_sample//libs//TSCLIB.dll"
|
WinDll_path = "D://桌面//pythonZPL//zebra_zpl//libs//TSCLIB.dll"
|
||||||
try:
|
try:
|
||||||
tsclibrary = ctypes.WinDLL(WinDll_path)
|
tsclibrary = ctypes.WinDLL(WinDll_path)
|
||||||
tsclibrary.openportW("USB")
|
tsclibrary.openportW("USB")
|
||||||
|
|||||||
Reference in New Issue
Block a user