diff --git a/mrp_workorder/views/mrp_workorder_views.xml b/mrp_workorder/views/mrp_workorder_views.xml
index 61491d4c..37702c00 100644
--- a/mrp_workorder/views/mrp_workorder_views.xml
+++ b/mrp_workorder/views/mrp_workorder_views.xml
@@ -38,9 +38,9 @@
-
-
-
+
+
+
diff --git a/sf_base/models/base.py b/sf_base/models/base.py
index 29e37630..d9dc1691 100644
--- a/sf_base/models/base.py
+++ b/sf_base/models/base.py
@@ -40,7 +40,7 @@ class MachineBrand(models.Model):
active = fields.Boolean('有效', default=True)
-# 机床
+#机床
class MachineTool(models.Model):
_name = 'sf.machine_tool'
_description = '机床'
diff --git a/sf_base/security/group_security.xml b/sf_base/security/group_security.xml
index 4d57bc43..89dfa51a 100644
--- a/sf_base/security/group_security.xml
+++ b/sf_base/security/group_security.xml
@@ -3,7 +3,6 @@
制造普通用户
-
diff --git a/sf_maintenance/security/group_security.xml b/sf_maintenance/security/group_security.xml
index b8668782..4966ef8a 100644
--- a/sf_maintenance/security/group_security.xml
+++ b/sf_maintenance/security/group_security.xml
@@ -1,4 +1,56 @@
-
+
+
+
+ 维保岗
+
+
+
+
+
+ 设备总监
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/sf_maintenance/security/ir.model.access.csv b/sf_maintenance/security/ir.model.access.csv
index 5a022f14..e8f2ab32 100644
--- a/sf_maintenance/security/ir.model.access.csv
+++ b/sf_maintenance/security/ir.model.access.csv
@@ -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
diff --git a/sf_maintenance/views/maintenance_views.xml b/sf_maintenance/views/maintenance_views.xml
index ff0b6e73..b7cb707e 100644
--- a/sf_maintenance/views/maintenance_views.xml
+++ b/sf_maintenance/views/maintenance_views.xml
@@ -50,7 +50,9 @@
+ attrs="{'invisible': [('equipment_type', '!=', '机床'), ('brand_id','!=',False),
+ ('type_id','!=',False),('control_system_id','!=',False),('code','!=', False)]}"
+ groups="sf_maintenance.sf_group_equipment_manager"/>
diff --git a/sf_manufacturing/__manifest__.py b/sf_manufacturing/__manifest__.py
index d963ab3e..85e71a5d 100644
--- a/sf_manufacturing/__manifest__.py
+++ b/sf_manufacturing/__manifest__.py
@@ -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',
diff --git a/sf_manufacturing/models/mrp_workorder.py b/sf_manufacturing/models/mrp_workorder.py
index 8d3bf6c2..d1fae8e6 100644
--- a/sf_manufacturing/models/mrp_workorder.py
+++ b/sf_manufacturing/models/mrp_workorder.py
@@ -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:
diff --git a/sf_manufacturing/security/group_security.xml b/sf_manufacturing/security/group_security.xml
index c32538c7..fdbc3ae5 100644
--- a/sf_manufacturing/security/group_security.xml
+++ b/sf_manufacturing/security/group_security.xml
@@ -1,27 +1,5 @@
-
- 员工
- 1
-
-
-
- 管理
- 2
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/sf_manufacturing/security/ir.model.access.csv b/sf_manufacturing/security/ir.model.access.csv
index 1eadee0a..0c620608 100644
--- a/sf_manufacturing/security/ir.model.access.csv
+++ b/sf_manufacturing/security/ir.model.access.csv
@@ -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
\ No newline at end of file
diff --git a/sf_sale/security/group_security.xml b/sf_sale/security/group_security.xml
index 00e4561a..0e14e0af 100644
--- a/sf_sale/security/group_security.xml
+++ b/sf_sale/security/group_security.xml
@@ -20,23 +20,23 @@
-
- 销售总监查看所有的订单
-
- [(1,'=',1)]
-
-
-
-
+
+
+
+
+
+
+
+
-
- 销售经理查看自己的订单
-
- ['|',('partner_id','=',user.partner_id.id),('create_uid', '=',user.id)]
-
-
-
-
-
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/sf_warehouse/__manifest__.py b/sf_warehouse/__manifest__.py
index 45143693..29b396dc 100644
--- a/sf_warehouse/__manifest__.py
+++ b/sf_warehouse/__manifest__.py
@@ -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',
diff --git a/sf_warehouse/security/ir.model.access.csv b/sf_warehouse/security/ir.model.access.csv
index 46c1988e..2b36e265 100644
--- a/sf_warehouse/security/ir.model.access.csv
+++ b/sf_warehouse/security/ir.model.access.csv
@@ -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
diff --git a/sf_warehouse/security/sf_stock_security.xml b/sf_warehouse/security/sf_stock_security.xml
new file mode 100644
index 00000000..0ed46055
--- /dev/null
+++ b/sf_warehouse/security/sf_stock_security.xml
@@ -0,0 +1,18 @@
+
+
+
+
+
+ 仓储岗
+
+
+
+
+ 仓储总监
+
+
+
+
+
+
+