Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into feature/前端样式修改
This commit is contained in:
@@ -38,9 +38,9 @@
|
||||
<xpath expr="//field[@name='state']" position="after">
|
||||
<field name="production_state" invisible="1"/>
|
||||
</xpath>
|
||||
<xpath expr="//button[@name='action_open_wizard']" position="after">
|
||||
<button name="open_tablet_view" type="object" icon="fa-tablet" title="Open Tablet View" context="{'from_production_order': True}" attrs="{'invisible': ['|', ('production_state', 'in', ('draft', 'cancel', 'done')), ('state', '=', 'done')]}"/>
|
||||
</xpath>
|
||||
<!-- <xpath expr="//button[@name='action_open_wizard']" position="after">-->
|
||||
<!-- <button name="open_tablet_view" type="object" icon="fa-tablet" title="Open Tablet View" context="{'from_production_order': True}" attrs="{'invisible': ['|', ('production_state', 'in', ('draft', 'cancel', 'done')), ('state', '=', 'done')]}"/>-->
|
||||
<!-- </xpath>-->
|
||||
</field>
|
||||
</record>
|
||||
|
||||
|
||||
@@ -3,7 +3,6 @@
|
||||
<record id="group_sf_mrp_user" model="res.groups">
|
||||
<field name="name">制造普通用户</field>
|
||||
<field name="category_id" ref="base.module_category_manufacturing_manufacturing"/>
|
||||
<field name="implied_ids" eval="[(4, ref('mrp.group_mrp_user'))]"/>
|
||||
</record>
|
||||
<!-- <record id="group_sf_mrp_manager" model="res.groups">-->
|
||||
<!-- <field name="name">制造管理用户</field>-->
|
||||
|
||||
@@ -543,7 +543,7 @@ class WorkCenterBarcode(models.Model):
|
||||
|
||||
# 如果没有附件,直接返回
|
||||
if not self.cnc_ids:
|
||||
return
|
||||
return None
|
||||
|
||||
# 处理第一个附件的文件名
|
||||
first_attachment = self.cnc_ids[0].cnc_id
|
||||
|
||||
@@ -1,4 +1,56 @@
|
||||
<odoo>
|
||||
<data>
|
||||
|
||||
<data noupdate="1">
|
||||
<record id="sf_group_equipment_user" model="res.groups">
|
||||
<field name="name">维保岗</field>
|
||||
<field name="category_id" ref="base.module_category_manufacturing_maintenance"/>
|
||||
<field name="implied_ids" eval="[(4, ref('maintenance.group_equipment_manager'))]"/>
|
||||
<field name="users" eval="[(4, ref('base.user_root')), (4, ref('base.user_admin'))]"/>
|
||||
</record>
|
||||
<record id="sf_group_equipment_manager" model="res.groups">
|
||||
<field name="name">设备总监</field>
|
||||
<field name="implied_ids" eval="[(4, ref('sf_group_equipment_user'))]"/>
|
||||
<field name="category_id" ref="base.module_category_manufacturing_maintenance"/>
|
||||
</record>
|
||||
|
||||
<!-- <record model="ir.rule" id="crm_team_rule_salemanager">-->
|
||||
<!-- <field name="name">销售经理只可以查看本人所在的团队</field>-->
|
||||
<!-- <field name="model_id" ref="model_crm_team"/>-->
|
||||
<!-- <field name="domain_force">[('crm_team_member_ids.user_id','=',user.id)]</field>-->
|
||||
<!-- <field name="groups" eval="[(4, ref('sf_base.group_sale_salemanager'))]"/>-->
|
||||
<!-- <field name="perm_read" eval="1"/>-->
|
||||
<!-- <field name="perm_write" eval="0"/>-->
|
||||
<!-- <field name="perm_create" eval="0"/>-->
|
||||
<!-- </record>-->
|
||||
|
||||
<!-- <record model="ir.rule" id="crm_team_rule_director">-->
|
||||
<!-- <field name="name">销售总监</field>-->
|
||||
<!-- <field name="model_id" ref="model_crm_team"/>-->
|
||||
<!-- <field name="domain_force">[(1,'=',1)]</field>-->
|
||||
<!-- <field name="groups" eval="[(4, ref('sf_base.group_sale_director'))]"/>-->
|
||||
<!-- <field name="perm_read" eval="1"/>-->
|
||||
<!-- <field name="perm_write" eval="1"/>-->
|
||||
<!-- <field name="perm_create" eval="1"/>-->
|
||||
<!-- </record>-->
|
||||
|
||||
<!-- <record model="ir.rule" id="sale_order_rule_director">-->
|
||||
<!-- <field name="name">销售总监查看所有的订单</field>-->
|
||||
<!-- <field name="model_id" ref="model_sale_order"/>-->
|
||||
<!-- <field name="domain_force">[(1,'=',1)]</field>-->
|
||||
<!-- <field name="groups" eval="[(4, ref('sf_base.group_sale_director'))]"/>-->
|
||||
<!-- <field name="perm_read" eval="1"/>-->
|
||||
<!-- <field name="perm_write" eval="1"/>-->
|
||||
<!-- </record>-->
|
||||
|
||||
<!-- <record model="ir.rule" id="sale_order_rule_salemanager">-->
|
||||
<!-- <field name="name">销售经理查看自己的订单</field>-->
|
||||
<!-- <field name="model_id" ref="model_sale_order"/>-->
|
||||
<!-- <field name="domain_force">['|',('partner_id','=',user.partner_id.id),('create_uid', '=',user.id)]</field>-->
|
||||
<!-- <field name="groups" eval="[(4, ref('sf_base.group_sale_salemanager'))]"/>-->
|
||||
<!-- <field name="perm_read" eval="1"/>-->
|
||||
<!-- <field name="perm_write" eval="1"/>-->
|
||||
<!-- <field name="perm_create" eval="1"/>-->
|
||||
<!-- </record>-->
|
||||
|
||||
</data>
|
||||
</odoo>
|
||||
@@ -1,10 +1,10 @@
|
||||
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,base.group_user,1,1,1,1
|
||||
access_sf_maintenance_logs,sf_maintenance_logs,model_sf_maintenance_logs,base.group_user,1,1,1,1
|
||||
access_maintenance_equipment,maintenance_equipment,model_maintenance_equipment,base.group_user,1,1,1,1
|
||||
access_maintenance_standards,maintenance_standards,model_maintenance_standards,base.group_user,1,1,1,1
|
||||
access_maintenance_standard_image,maintenance_standard_image,model_maintenance_standard_image,base.group_user,1,1,1,1
|
||||
access_sf_robot_axis_num,sf_robot_axis_num,model_sf_robot_axis_num,base.group_user,1,1,1,1
|
||||
access_equipment_maintenance_standards,equipment_maintenance_standards,model_equipment_maintenance_standards,sf_group_equipment_user,1,1,1,1
|
||||
access_sf_maintenance_logs,sf_maintenance_logs,model_sf_maintenance_logs,sf_group_equipment_user,1,1,1,1
|
||||
access_maintenance_equipment,maintenance_equipment,model_maintenance_equipment,sf_group_equipment_user,1,1,1,1
|
||||
access_maintenance_standards,maintenance_standards,model_maintenance_standards,sf_group_equipment_user,1,1,1,1
|
||||
access_maintenance_standard_image,maintenance_standard_image,model_maintenance_standard_image,sf_group_equipment_user,1,1,1,1
|
||||
access_sf_robot_axis_num,sf_robot_axis_num,model_sf_robot_axis_num,sf_group_equipment_user,1,1,1,1
|
||||
|
||||
|
||||
|
||||
|
||||
|
@@ -50,7 +50,9 @@
|
||||
<label for="enroll_machine_tool"/>
|
||||
<div class="col-12 col-lg-6 o_setting_box" style="white-space: nowrap">
|
||||
<button type="object" class="oe_highlight" name='enroll_machine_tool' string="机床注册"
|
||||
attrs="{'invisible': [('equipment_type', '!=', '机床'), ('brand_id','!=',False),('type_id','!=',False),('control_system_id','!=',False)]}"/>
|
||||
attrs="{'invisible': [('equipment_type', '!=', '机床'), ('brand_id','!=',False),
|
||||
('type_id','!=',False),('control_system_id','!=',False),('code','!=', False)]}"
|
||||
groups="sf_maintenance.sf_group_equipment_manager"/>
|
||||
</div>
|
||||
</xpath>
|
||||
<xpath expr="//field[@name='category_id']" position="before">
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
""",
|
||||
'category': 'sf',
|
||||
'website': 'https://www.sf.jikimo.com',
|
||||
'depends': ['sf_base', 'sf_maintenance', 'web_widget_model_viewer', 'stock'],
|
||||
'depends': ['sf_base', 'sf_maintenance', 'web_widget_model_viewer', 'sf_warehouse'],
|
||||
'data': [
|
||||
'data/stock_data.xml',
|
||||
'security/group_security.xml',
|
||||
|
||||
@@ -480,7 +480,7 @@ class ResMrpWorkOrder(models.Model):
|
||||
|
||||
# 重写工单开始按钮方法
|
||||
def button_start(self):
|
||||
if self.routing_type == '装夹':
|
||||
if self.routing_type == '装夹' and self.production_id.move_raw_ids[0].move_line_ids[0].lot_id.name:
|
||||
self.pro_code = self.production_id.move_raw_ids[0].move_line_ids[0].lot_id.name
|
||||
# 外协出库单,从“正在等待”变为“就绪”状态
|
||||
if self.is_subcontract is True:
|
||||
|
||||
@@ -873,3 +873,13 @@ class SfMaintenanceEquipmentTool(models.Model):
|
||||
for record in self:
|
||||
if record.code:
|
||||
record.name = record.code
|
||||
|
||||
@api.model_create_multi
|
||||
def create(self, vals_list):
|
||||
tools = super().create(vals_list)
|
||||
for tool in tools:
|
||||
self.env['sf.machine.table.tool.changing.apply'].sudo().create({
|
||||
'maintenance_equipment_id': tool.equipment_id.id,
|
||||
'cutter_spacing_code_id': tool.id
|
||||
})
|
||||
return tools
|
||||
|
||||
@@ -1,27 +1,5 @@
|
||||
<odoo>
|
||||
<data>
|
||||
<record model="ir.module.category" id="module_category_employee">
|
||||
<field name="name">员工</field>
|
||||
<field name="sequence">1</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.module.category" id="module_category_manage">
|
||||
<field name="name">管理</field>
|
||||
<field name="sequence">2</field>
|
||||
</record>
|
||||
|
||||
|
||||
|
||||
<!-- <!– 系统管理相关 –>-->
|
||||
<!-- <record id="group_master_data_manager" model="res.groups">-->
|
||||
<!-- <field name="name">基础设置</field>-->
|
||||
<!-- <field name="category_id" ref="base.module_category_employee"/>-->
|
||||
<!-- <field name="implied_ids" eval="[(4, ref('base.group_user'))]"/>-->
|
||||
<!-- </record>-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</data>
|
||||
</odoo>
|
||||
@@ -1,18 +1,18 @@
|
||||
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_manager,sf_cnc_processing,model_sf_cnc_processing,sf_base.group_sf_mrp_manager,1,1,1,1
|
||||
access_sf_cnc_processing_manager,sf_cnc_processing,model_sf_cnc_processing,sf_base.group_sf_mrp_manager,1,1,1,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_manager,sf_model_type,model_sf_model_type,sf_base.group_sf_mrp_manager,1,1,1,1
|
||||
access_sf_model_type_manager,sf_model_type,model_sf_model_type,sf_base.group_sf_mrp_manager,1,1,1,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_manager,sf_product_model_type_routing_sort,model_sf_product_model_type_routing_sort,sf_base.group_sf_mrp_manager,1,1,1,1
|
||||
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_manager,sf_embryo_model_type_routing_sort,model_sf_embryo_model_type_routing_sort,sf_base.group_sf_mrp_manager,1,1,1,1
|
||||
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,1
|
||||
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,0,0,0
|
||||
access_sf_production_line_manager,sf.production.line,model_sf_production_line,sf_base.group_sf_mrp_manager,1,1,1,1
|
||||
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_manager,maintenance_equipment_tool,model_maintenance_equipment_tool,sf_base.group_sf_mrp_manager,1,1,1,1
|
||||
access_maintenance_equipment_tool_manager,maintenance_equipment_tool,model_maintenance_equipment_tool,sf_base.group_sf_mrp_manager,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_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
|
||||
@@ -22,6 +22,66 @@ access_mrp_workcenter_manager,mrp_workcenter,model_mrp_workcenter,sf_base.group_
|
||||
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_manager,mrp_workcenter_productivity,model_mrp_workcenter_productivity,sf_base.group_sf_mrp_manager,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,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,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_routing_workcenter,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_line,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_production,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_routing_workcenter_manager,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_line_manager,mrp.bom.line.manager,mrp.model_mrp_bom_line,sf_base.group_sf_mrp_user,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_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_template_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_product_supplierinfo_user,product.supplierinfo user,product.model_product_supplierinfo,sf_base.group_sf_mrp_user,1,1,1,0
|
||||
access_res_partner,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_manager,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_manager,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_manager,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_resource_resource,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_product_supplierinfo_manager,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_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_uom_category_mrp_manager,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_product_category_mrp_manager,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_product_mrp_manager,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_pricelist_mrp_manager,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_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_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_mrp_unbuild,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_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_change_production_qty,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_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_line,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_line,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_line,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,access.mrp.workcenter.tag,mrp.model_mrp_workcenter_tag,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,access.mrp.production.split,mrp.model_mrp_production_split,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,mrp.workcenter.capacity.manager,mrp.model_mrp_workcenter_capacity,sf_base.group_sf_mrp_user,1,1,1,0
|
||||
|
@@ -23,6 +23,21 @@ class ProcedureEquipmentResourceSetting(models.Model):
|
||||
create_time = fields.Datetime(string='新增时间', default=lambda self: fields.Datetime.now(), readonly=True)
|
||||
participate_in_scheduling = fields.Boolean(string='参与排程', default=True)
|
||||
|
||||
# check_status = fields.Selection([('unchecked', '未审核'), ('checked', '已审核')], '审核状态', default='unchecked')
|
||||
check_status = fields.Boolean(string='启用状态', default=False, readonly=True)
|
||||
|
||||
def action_check(self):
|
||||
"""
|
||||
审核启用
|
||||
"""
|
||||
self.check_status = True
|
||||
|
||||
def action_uncheck(self):
|
||||
"""
|
||||
审核禁用
|
||||
"""
|
||||
self.check_status = False
|
||||
|
||||
@api.depends('work_center_name_id')
|
||||
def _compute_equipment_name_id(self):
|
||||
for record in self:
|
||||
|
||||
@@ -38,6 +38,19 @@ class WorkLogSetting(models.Model):
|
||||
update_time = fields.Datetime(string='更新时间', default=lambda self: fields.Datetime.now())
|
||||
|
||||
setting_to_calendar_ids = fields.One2many('sf.work.schedule.calendar', 'name_id', '工作日历')
|
||||
check_status = fields.Boolean(string='启用状态', default=False, readonly=True)
|
||||
|
||||
def action_check(self):
|
||||
"""
|
||||
审核启用
|
||||
"""
|
||||
self.check_status = True
|
||||
|
||||
def action_uncheck(self):
|
||||
"""
|
||||
审核禁用
|
||||
"""
|
||||
self.check_status = False
|
||||
|
||||
@api.depends('working_shift_ids')
|
||||
def _compute_working_shift_ids(self):
|
||||
@@ -233,6 +246,19 @@ class WorkingShift(models.Model):
|
||||
start_time = fields.Datetime('班次开始时间')
|
||||
end_time = fields.Datetime('班次结束时间')
|
||||
remark = fields.Char('备注')
|
||||
check_status = fields.Boolean(string='启用状态', default=False, readonly=True)
|
||||
|
||||
def action_check(self):
|
||||
"""
|
||||
审核启用
|
||||
"""
|
||||
self.check_status = True
|
||||
|
||||
def action_uncheck(self):
|
||||
"""
|
||||
审核禁用
|
||||
"""
|
||||
self.check_status = False
|
||||
|
||||
|
||||
class DayOff(models.Model):
|
||||
@@ -247,6 +273,19 @@ class DayOff(models.Model):
|
||||
('Friday ', '星期五'),
|
||||
('Saturday ', '星期六'),
|
||||
('Sunday ', '星期日')], '休息日名称')
|
||||
check_status = fields.Boolean(string='启用状态', default=False, readonly=True)
|
||||
|
||||
def action_check(self):
|
||||
"""
|
||||
审核启用
|
||||
"""
|
||||
self.check_status = True
|
||||
|
||||
def action_uncheck(self):
|
||||
"""
|
||||
审核禁用
|
||||
"""
|
||||
self.check_status = False
|
||||
|
||||
|
||||
class WorkScheduleCalendar(models.Model):
|
||||
|
||||
@@ -16,6 +16,10 @@
|
||||
<field name="status"/>
|
||||
<field name="update_person"/>
|
||||
<field name="update_time"/>
|
||||
|
||||
<field name="check_status" widget="boolean_toggle"/>
|
||||
<button name="action_check" string="启用" type="object" class="oe_highlight" attrs="{'invisible': [('check_status', '=', True)]}" groups="sf_base.group_plan_director"/>
|
||||
<button name="action_uncheck" string="禁用" type="object" class="oe_highlight" attrs="{'invisible': [('check_status', '=', False)]}" groups="sf_base.group_plan_director"/>
|
||||
<button string="查看日历"
|
||||
type="object"
|
||||
name="open_work_schedule_calendar"
|
||||
@@ -46,6 +50,8 @@
|
||||
</div>
|
||||
<group>
|
||||
<group>
|
||||
|
||||
<field name="check_status" widget="boolean_toggle"/>
|
||||
<field name="code"/>
|
||||
<field name="day_off_ids" widget="many2many_tags" placeholder="请选择"
|
||||
options="{'no_create': True, 'no_quick_create': True}"/>
|
||||
@@ -82,6 +88,9 @@
|
||||
<field name="arch" type="xml">
|
||||
<tree string="休息日" editable="bottom" delete="0">
|
||||
<field name="name"/>
|
||||
<field name="check_status" widget="boolean_toggle"/>
|
||||
<button name="action_check" string="启用" type="object" class="oe_highlight" attrs="{'invisible': [('check_status', '=', True)]}" groups="sf_base.group_plan_director"/>
|
||||
<button name="action_uncheck" string="禁用" type="object" class="oe_highlight" attrs="{'invisible': [('check_status', '=', False)]}" groups="sf_base.group_plan_director"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
@@ -104,6 +113,9 @@
|
||||
<field name="start_time" placeholder="请选择"/>
|
||||
<field name="end_time" placeholder="请选择"/>
|
||||
<field name="remark"/>
|
||||
<field name="check_status" widget="boolean_toggle"/>
|
||||
<button name="action_check" string="启用" type="object" class="oe_highlight" attrs="{'invisible': [('check_status', '=', True)]}" groups="sf_base.group_plan_director"/>
|
||||
<button name="action_uncheck" string="禁用" type="object" class="oe_highlight" attrs="{'invisible': [('check_status', '=', False)]}" groups="sf_base.group_plan_director"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
@@ -221,6 +233,10 @@
|
||||
<field name="status"/>
|
||||
<field name="participate_in_scheduling"/>
|
||||
<field name="name" invisible="True"/>
|
||||
|
||||
<field name="check_status" widget="boolean_toggle"/>
|
||||
<button name="action_check" string="启用" type="object" class="oe_highlight" attrs="{'invisible': [('check_status', '=', True)]}" groups="sf_base.group_plan_director"/>
|
||||
<button name="action_uncheck" string="禁用" type="object" class="oe_highlight" attrs="{'invisible': [('check_status', '=', False)]}" groups="sf_base.group_plan_director"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
@@ -230,6 +246,10 @@
|
||||
<field name="model">sf.procedure.equipment.resource.setting</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="产线设备资源设置">
|
||||
<header>
|
||||
<button name="action_check" string="启用" type="object" class="oe_highlight" attrs="{'invisible': [('check_status', '=', True)]}" groups="sf_base.group_plan_director"/>
|
||||
<button name="action_uncheck" string="禁用" type="object" class="oe_highlight" attrs="{'invisible': [('check_status', '=', False)]}" groups="sf_base.group_plan_director"/>
|
||||
</header>
|
||||
<sheet>
|
||||
<div>
|
||||
<h1>
|
||||
@@ -238,6 +258,8 @@
|
||||
</div>
|
||||
<group>
|
||||
<group>
|
||||
|
||||
<field name="check_status" widget="boolean_toggle"/>
|
||||
<field name="work_center_name_id" placeholder="请选择"/>
|
||||
<field name="production_capacity"/>
|
||||
<field name="working_calendar_id" placeholder="请选择"/>
|
||||
|
||||
@@ -20,23 +20,23 @@
|
||||
<field name="perm_create" eval="1"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.rule" id="sale_order_rule_director">
|
||||
<field name="name">销售总监查看所有的订单</field>
|
||||
<field name="model_id" ref="model_sale_order"/>
|
||||
<field name="domain_force">[(1,'=',1)]</field>
|
||||
<field name="groups" eval="[(4, ref('sf_base.group_sale_director'))]"/>
|
||||
<field name="perm_read" eval="1"/>
|
||||
<field name="perm_write" eval="1"/>
|
||||
</record>
|
||||
<!-- <record model="ir.rule" id="sale_order_rule_director">-->
|
||||
<!-- <field name="name">销售总监查看所有的订单</field>-->
|
||||
<!-- <field name="model_id" ref="model_sale_order"/>-->
|
||||
<!-- <field name="domain_force">[(1,'=',1)]</field>-->
|
||||
<!-- <field name="groups" eval="[(4, ref('sf_base.group_sale_director'))]"/>-->
|
||||
<!-- <field name="perm_read" eval="1"/>-->
|
||||
<!-- <field name="perm_write" eval="1"/>-->
|
||||
<!-- </record>-->
|
||||
|
||||
<record model="ir.rule" id="sale_order_rule_salemanager">
|
||||
<field name="name">销售经理查看自己的订单</field>
|
||||
<field name="model_id" ref="model_sale_order"/>
|
||||
<field name="domain_force">['|',('partner_id','=',user.partner_id.id),('create_uid', '=',user.id)]</field>
|
||||
<field name="groups" eval="[(4, ref('sf_base.group_sale_salemanager'))]"/>
|
||||
<field name="perm_read" eval="1"/>
|
||||
<field name="perm_write" eval="1"/>
|
||||
<field name="perm_create" eval="1"/>
|
||||
</record>
|
||||
<!-- <record model="ir.rule" id="sale_order_rule_salemanager">-->
|
||||
<!-- <field name="name">销售经理查看自己的订单</field>-->
|
||||
<!-- <field name="model_id" ref="model_sale_order"/>-->
|
||||
<!-- <field name="domain_force">['|',('partner_id','=',user.partner_id.id),('create_uid', '=',user.id)]</field>-->
|
||||
<!-- <field name="groups" eval="[(4, ref('sf_base.group_sale_salemanager'))]"/>-->
|
||||
<!-- <field name="perm_read" eval="1"/>-->
|
||||
<!-- <field name="perm_write" eval="1"/>-->
|
||||
<!-- <field name="perm_create" eval="1"/>-->
|
||||
<!-- </record>-->
|
||||
</data>
|
||||
</odoo>
|
||||
@@ -42,10 +42,12 @@ class FunctionalCuttingToolEntity(models.Model):
|
||||
# 计算库存位置数量
|
||||
# """
|
||||
# for obj in self:
|
||||
# if obj.current_location_id:
|
||||
# if obj.current_location_id.name in ('组装后', '刀具房'):
|
||||
# obj.tool_room_num = 1
|
||||
# obj.line_edge_knife_library_num = 0
|
||||
# obj.machine_knife_library_num = 0
|
||||
#
|
||||
|
||||
@api.model
|
||||
def _read_group_mrs_cutting_tool_type_id(self, categories, domain, order):
|
||||
@@ -230,7 +232,13 @@ class RealTimeDistributionOfFunctionalTools(models.Model):
|
||||
def _compute_tool_stock_total(self):
|
||||
for record in self:
|
||||
if record:
|
||||
self.tool_stock_total = record.tool_stock_num + record.side_shelf_num + record.on_tool_stock_num
|
||||
record.tool_stock_total = record.tool_stock_num + record.side_shelf_num + record.on_tool_stock_num
|
||||
|
||||
# @api.depends('tool_stock_total', 'min_stock_num', 'max_stock_num')
|
||||
# def _compute_batch_replenishment_num(self):
|
||||
# for record in self:
|
||||
# if record.tool_stock_total < record.min_stock_num:
|
||||
# record.batch_replenishment_num = record.max_stock_num - record.tool_stock_total
|
||||
|
||||
def create_or_edit_safety_stock(self, vals, sf_functional_cutting_tool_entity_ids):
|
||||
"""
|
||||
@@ -258,14 +266,14 @@ class MachineTableToolChangingApply(models.Model):
|
||||
|
||||
name = fields.Char('名称', related='maintenance_equipment_id.name', store=True)
|
||||
# 设备信息
|
||||
maintenance_equipment_id = fields.Many2one('maintenance.equipment', string='CNC机床', required=True, readonly=False,
|
||||
maintenance_equipment_id = fields.Many2one('maintenance.equipment', string='CNC机床', readonly=True,
|
||||
domain=[('category_id.equipment_type', '=', '机床')])
|
||||
production_line_id = fields.Many2one('sf.production.line', string='生产线', readonly=True,
|
||||
group_expand='_read_group_names')
|
||||
machine_table_type_id = fields.Many2one('maintenance.equipment.category', string='机床类型', readonly=True,
|
||||
compute='_compute_machine_table_type_id')
|
||||
machine_tool_code = fields.Char(string='机台号', store=True, invisible=True, readonly=True)
|
||||
cutter_spacing_code_id = fields.Many2one('maintenance.equipment.tool', string='刀位号', readonly=False,
|
||||
cutter_spacing_code_id = fields.Many2one('maintenance.equipment.tool', string='刀位号', readonly=True,
|
||||
required=True, domain="[('equipment_id', '=', maintenance_equipment_id)]")
|
||||
# 功能刀具信息
|
||||
functional_tool_name = fields.Char(string='刀具名称', related='functional_tool_name_id.name', store=True)
|
||||
@@ -279,7 +287,7 @@ class MachineTableToolChangingApply(models.Model):
|
||||
tool_position_interface_type = fields.Selection(
|
||||
[('BT刀柄式', 'BT刀柄式'), ('SK刀柄式', 'SK刀柄式'), ('HSK刀柄式', 'HSK刀柄式'),
|
||||
('CAT刀柄式', 'CAT刀柄式'), ('ISO刀盘式', 'ISO刀盘式'), ('DIN刀盘式', 'DIN刀盘式'),
|
||||
('直装固定式', '直装固定式')], string='刀位接口型号', required=True)
|
||||
('直装固定式', '直装固定式')], string='刀位接口型号')
|
||||
diameter = fields.Integer(string='刀具直径(mm)', )
|
||||
knife_tip_r_angle = fields.Float(string='刀尖R角(mm)')
|
||||
max_lifetime_value = fields.Integer(string='最大寿命值(min)')
|
||||
@@ -305,7 +313,7 @@ class MachineTableToolChangingApply(models.Model):
|
||||
@api.depends('alarm_value', 'used_value')
|
||||
def _compute_functional_tool_status(self):
|
||||
for record in self:
|
||||
if record.alarm_value <= record.used_value:
|
||||
if record.alarm_value < record.used_value:
|
||||
record.functional_tool_status = '报警'
|
||||
else:
|
||||
record.functional_tool_status = '正常'
|
||||
@@ -363,7 +371,7 @@ class MachineTableToolChangingApply(models.Model):
|
||||
'use_tool_time': fields.Datetime.now() + timedelta(hours=4),
|
||||
'production_line_name_id': self.production_line_id.id,
|
||||
'machine_tool_name_id': self.maintenance_equipment_id.id,
|
||||
'applicant': self.applicant,
|
||||
'applicant': '系统自动',
|
||||
'apply_time': fields.Datetime.now(),
|
||||
'cutter_spacing_code_id': self.cutter_spacing_code_id.id,
|
||||
'whether_standard_knife': self.whether_standard_knife,
|
||||
@@ -685,6 +693,20 @@ class FunctionalToolAssembly(models.Model):
|
||||
code = False
|
||||
return code
|
||||
|
||||
def get_functional_tool(self, val):
|
||||
functional_tools = self.env['sf.functional.tool.assembly'].search(
|
||||
[('after_assembly_functional_tool_name', '=', val.get('after_assembly_functional_tool_name')),
|
||||
('after_assembly_functional_tool_diameter', '=', val.get('after_assembly_functional_tool_diameter')),
|
||||
('after_assembly_knife_tip_r_angle', '=', val.get('after_assembly_knife_tip_r_angle')),
|
||||
('after_assembly_coarse_middle_thin', '=', val.get('after_assembly_coarse_middle_thin'))])
|
||||
for functional_tool in functional_tools:
|
||||
if functional_tool.barcode_id.quant_ids[-1].location_id.name == '刀具线边库':
|
||||
return functional_tool
|
||||
for functional_tool in functional_tools:
|
||||
if functional_tool.barcode_id.quant_ids[-1].location_id.name == '刀具房':
|
||||
return functional_tool
|
||||
return False
|
||||
|
||||
def automated_assembly(self):
|
||||
"""
|
||||
todo 自动组装
|
||||
|
||||
@@ -301,7 +301,7 @@
|
||||
<field name="name">功能刀具安全库存</field>
|
||||
<field name="model">sf.real.time.distribution.of.functional.tools</field>
|
||||
<field name="arch" type="xml">
|
||||
<form create="0" edit="0" delete="0">
|
||||
<form create="0" edit="1" delete="0">
|
||||
<sheet>
|
||||
<div class="oe_title">
|
||||
<h1>
|
||||
@@ -310,41 +310,44 @@
|
||||
</div>
|
||||
<group>
|
||||
<group>
|
||||
<field name="sf_cutting_tool_type_id"/>
|
||||
<field name="diameter"/>
|
||||
<field name="knife_tip_r_angle"/>
|
||||
<field name="coarse_middle_thin"/>
|
||||
<field name="whether_standard_knife"/>
|
||||
<field name="sf_cutting_tool_type_id" readonly="1"/>
|
||||
<field name="diameter" readonly="1"/>
|
||||
<field name="knife_tip_r_angle" readonly="1"/>
|
||||
<field name="coarse_middle_thin" readonly="1"/>
|
||||
<field name="whether_standard_knife" readonly="1"/>
|
||||
<field name="min_stock_num"/>
|
||||
<field name="max_stock_num"/>
|
||||
<field name="batch_replenishment_num"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="image" widget='image'/>
|
||||
<field name="image" widget='image' readonly="1"/>
|
||||
</group>
|
||||
</group>
|
||||
<group col="1">
|
||||
<group string="适合加工方式">
|
||||
<field name="suitable_machining_method_ids" string=""
|
||||
widget="custom_many2many_checkboxes"
|
||||
widget="custom_many2many_checkboxes" readonly="1"
|
||||
domain="[('id','in',suitable_machining_method_ids)]"/>
|
||||
</group>
|
||||
<group>
|
||||
<group string="刀尖特征">
|
||||
<field name="blade_tip_characteristics_id" string=""
|
||||
widget="many2one_radio"
|
||||
widget="many2one_radio" readonly="1"
|
||||
domain="[('id','in',blade_tip_characteristics_id)]"/>
|
||||
</group>
|
||||
<group string="柄部类型">
|
||||
<field name="handle_type_id" string=""
|
||||
widget="many2one_radio"
|
||||
widget="many2one_radio" readonly="1"
|
||||
domain="[('id','in',handle_type_id)]"/>
|
||||
</group>
|
||||
</group>
|
||||
<group>
|
||||
<group string="走刀方向">
|
||||
<field name="cutting_direction_ids" string="" widget="custom_many2many_checkboxes"
|
||||
<field name="cutting_direction_ids" string="" widget="custom_many2many_checkboxes" readonly="1"
|
||||
domain="[('id','in',cutting_direction_ids)]"/>
|
||||
</group>
|
||||
<group string="适合冷却液">
|
||||
<field name="suitable_coolant_ids" string="" widget="custom_many2many_checkboxes"
|
||||
<field name="suitable_coolant_ids" string="" widget="custom_many2many_checkboxes" readonly="1"
|
||||
domain="[('id','in',suitable_coolant_ids)]"/>
|
||||
</group>
|
||||
</group>
|
||||
@@ -352,7 +355,7 @@
|
||||
<notebook>
|
||||
<page string="刀具信息">
|
||||
<field name="sf_functional_cutting_tool_entity_ids" widget="many2many">
|
||||
<tree>
|
||||
<tree edit="0" create="0" delete="0">
|
||||
<field name="barcode_id"/>
|
||||
<field name="functional_tool_name_id"/>
|
||||
<field name="new_former"/>
|
||||
@@ -468,7 +471,7 @@
|
||||
<field name="name">机床换刀申请</field>
|
||||
<field name="model">sf.machine.table.tool.changing.apply</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree>
|
||||
<tree create="0" delete="0">
|
||||
<field name="name" invisible="1"/>
|
||||
<field name="production_line_id" invisible="1"/>
|
||||
<field name="maintenance_equipment_id"/>
|
||||
@@ -634,15 +637,15 @@
|
||||
<sheet>
|
||||
<div class="oe_title">
|
||||
<h1>
|
||||
<field name="maintenance_equipment_id" readonly="0" placeholder="请选择"/>
|
||||
<field name="maintenance_equipment_id" readonly="1" placeholder="请选择"/>
|
||||
</h1>
|
||||
</div>
|
||||
<group>
|
||||
<group>
|
||||
<field name="production_line_id"/>
|
||||
<field name="machine_table_type_id"/>
|
||||
<field name="cutter_spacing_code_id"/>
|
||||
<field name="tool_position_interface_type" placeholder="请选择"/>
|
||||
<field name="cutter_spacing_code_id" options="{'no_create': True}"/>
|
||||
<field name="tool_position_interface_type" placeholder="请选择" required="1"/>
|
||||
<field name="sf_functional_tool_assembly_id" string="组装单"/>
|
||||
</group>
|
||||
</group>
|
||||
@@ -698,6 +701,7 @@
|
||||
<field name="applicant" optional="hide"/>
|
||||
<searchpanel>
|
||||
<field name="production_line_id" enable_counters="1" icon="fa-building"/>
|
||||
<field name="maintenance_equipment_id" enable_counters="1" icon="fa-building"/>
|
||||
<field name="functional_tool_status" enable_counters="1" icon="fa-building"/>
|
||||
</searchpanel>
|
||||
</search>
|
||||
|
||||
@@ -62,6 +62,20 @@ class ToolChangeRequirementInformation(models.TransientModel):
|
||||
('cutter_spacing_code_id', '=', self.cutter_spacing_code_id.id)
|
||||
])
|
||||
|
||||
# 搜索满足需求的功能刀具
|
||||
functional_tool = self.env['sf.functional.tool.assembly'].get_functional_tool({
|
||||
'after_assembly_functional_tool_name': self.replacement_tool_name,
|
||||
'after_assembly_functional_tool_diameter': self.replacement_diameter,
|
||||
'after_assembly_knife_tip_r_angle': self.replacement_knife_tip_r_angle,
|
||||
'after_assembly_coarse_middle_thin': self.replacement_tool_coarse_middle_thin
|
||||
})
|
||||
# 如果有满足需求的刀具,就返回刀具信息
|
||||
if functional_tool:
|
||||
record.write({'status': '3'})
|
||||
# todo 将功能刀具信息传递到机床
|
||||
return functional_tool
|
||||
# 如果没有满足需求的刀具,就创建功能刀具组装单
|
||||
else:
|
||||
# 功能刀具组装创建新任务(new_assembly_task)
|
||||
sf_functional_tool_assembly = self.env['sf.functional.tool.assembly'].sudo().create({
|
||||
'functional_tool_name': self.replacement_tool_name,
|
||||
@@ -323,14 +337,14 @@ class FunctionalToolAssemblyOrder(models.TransientModel):
|
||||
string='组装后功能刀具类型')
|
||||
after_assembly_functional_tool_diameter = fields.Integer(string='组装后功能刀具直径(mm)')
|
||||
after_assembly_knife_tip_r_angle = fields.Float(string='组装后刀尖R角(mm)')
|
||||
after_assembly_new_former = fields.Selection([('0', '新'), ('1', '旧')], string='组装后新/旧')
|
||||
after_assembly_new_former = fields.Selection([('0', '新'), ('1', '旧')], string='组装后新/旧', default='0')
|
||||
cut_time = fields.Integer(string='已切削时间(min)')
|
||||
cut_length = fields.Float(string='已切削长度(mm)')
|
||||
cut_number = fields.Integer(string='已切削次数')
|
||||
|
||||
after_assembly_whether_standard_knife = fields.Boolean(string='组装后是否标准刀', default=True)
|
||||
after_assembly_coarse_middle_thin = fields.Selection([("1", "粗"), ('2', '中'), ('3', '精')],
|
||||
string='组装后粗/中/精')
|
||||
string='组装后粗/中/精', default='3')
|
||||
after_assembly_max_lifetime_value = fields.Integer(string='组装后最大寿命值(min)')
|
||||
after_assembly_alarm_value = fields.Integer(string='组装后报警值(min)')
|
||||
after_assembly_used_value = fields.Integer(string='组装后已使用值(min)')
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
'website': 'https://www.sf.jikimo.com',
|
||||
'depends': ['stock', 'web', ],
|
||||
'data': [
|
||||
# 'security/group_security.xml',
|
||||
'security/sf_stock_security.xml',
|
||||
'security/ir.model.access.csv',
|
||||
'views/view.xml',
|
||||
'views/shelf_location.xml',
|
||||
|
||||
@@ -1,4 +1,96 @@
|
||||
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
|
||||
access_sf_shelf_location,sf.shelf.location,model_sf_shelf_location,base.group_user,1,1,1,1
|
||||
|
||||
access_stock_location,stock.location,model_stock_location,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_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_manager,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_picking_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_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_manager,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_move_manager,stock.move manager,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,product_product_stock_user,product.model_product_product,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,uom.category stock_manager,uom.model_uom_category,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,product.category stock_manager,product.model_product_category,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,product.product stock_manager,product.model_product_product,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,product.supplierinfo stock_manager,product.model_product_supplierinfo,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,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,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,product.tag.stock.manager,product.model_product_tag,sf_warehouse.group_sf_stock_user,1,1,1,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,stock.warehouse.orderpoint system,stock.model_stock_warehouse_orderpoint,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_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_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_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_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_stock_manager,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.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_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_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_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_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_manager,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_manager,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_manager,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_value_manager,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_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_line_manager,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_stock_traceability_report,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_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,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_scheduler_compute,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,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,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_rules_report,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_product_replenish,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_line,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_orderpoint_snooze,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_manager,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_manager,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_manager,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_warning,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_request_count,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_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_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_replenish_option,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
|
||||
|
||||
|
18
sf_warehouse/security/sf_stock_security.xml
Normal file
18
sf_warehouse/security/sf_stock_security.xml
Normal file
@@ -0,0 +1,18 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
<data noupdate="0">
|
||||
|
||||
<record id="group_sf_stock_user" model="res.groups">
|
||||
<field name="name">仓储岗</field>
|
||||
<field name="category_id" ref="base.module_category_inventory_inventory"/>
|
||||
<field name="implied_ids" eval="[(4, ref('base.group_user'))]"/>
|
||||
</record>
|
||||
<record id="group_sf_stock_manager" model="res.groups">
|
||||
<field name="name">仓储总监</field>
|
||||
<field name="category_id" ref="base.module_category_inventory_inventory"/>
|
||||
<field name="implied_ids" eval="[(4, ref('group_sf_stock_user'))]"/>
|
||||
</record>
|
||||
|
||||
|
||||
</data>
|
||||
</odoo>
|
||||
Reference in New Issue
Block a user