Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into feature/修复表面工艺工单
# Conflicts: # sf_manufacturing/models/mrp_workorder.py
This commit is contained in:
@@ -84,6 +84,17 @@
|
|||||||
<field name="category_id" ref="base.module_category_inventory_purchase"/>
|
<field name="category_id" ref="base.module_category_inventory_purchase"/>
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
|
<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>
|
</data>
|
||||||
</odoo>
|
</odoo>
|
||||||
@@ -49,7 +49,7 @@ access_sf_functional_cutting_tool_admin,sf_functional_cutting_tool_admin,model_s
|
|||||||
access_sf_functional_cutting_tool_model,sf_functional_cutting_tool_model,model_sf_functional_cutting_tool_model,base.group_user,1,1,1,0
|
access_sf_functional_cutting_tool_model,sf_functional_cutting_tool_model,model_sf_functional_cutting_tool_model,base.group_user,1,1,1,0
|
||||||
access_sf_functional_cutting_tool_model_admin,sf_functional_cutting_tool_model_admin,model_sf_functional_cutting_tool_model,base.group_system,1,1,1,0
|
access_sf_functional_cutting_tool_model_admin,sf_functional_cutting_tool_model_admin,model_sf_functional_cutting_tool_model,base.group_system,1,1,1,0
|
||||||
access_sf_fixture_material,sf_fixture_material,model_sf_fixture_material,base.group_user,1,1,1,0
|
access_sf_fixture_material,sf_fixture_material,model_sf_fixture_material,base.group_user,1,1,1,0
|
||||||
access_sf_fixture_material_group_sf_stock_user,sf_fixture_material_group_sf_stock_user,model_sf_fixture_material,sf_warehouse.group_sf_stock_user,1,1,1,0
|
access_sf_fixture_material_group_sf_stock_user,sf_fixture_material_group_sf_stock_user,model_sf_fixture_material,sf_base.group_sf_stock_user,1,1,1,0
|
||||||
access_sf_fixture_material_admin,sf_fixture_material_admin,model_sf_fixture_material,base.group_system,1,1,1,0
|
access_sf_fixture_material_admin,sf_fixture_material_admin,model_sf_fixture_material,base.group_system,1,1,1,0
|
||||||
access_sf_fixture_materials_basic_parameters,sf_fixture_materials_basic_parameters,model_sf_fixture_materials_basic_parameters,base.group_user,1,1,1,0
|
access_sf_fixture_materials_basic_parameters,sf_fixture_materials_basic_parameters,model_sf_fixture_materials_basic_parameters,base.group_user,1,1,1,0
|
||||||
access_sf_fixture_materials_basic_parameters_admin,sf_fixture_materials_basic_parameters_admin,model_sf_fixture_materials_basic_parameters,base.group_system,1,1,1,0
|
access_sf_fixture_materials_basic_parameters_admin,sf_fixture_materials_basic_parameters_admin,model_sf_fixture_materials_basic_parameters,base.group_system,1,1,1,0
|
||||||
@@ -234,11 +234,11 @@ access_sf_fixture_model_group_plan_director,sf_fixture_model_group_plan_director
|
|||||||
access_sf_fixture_materials_basic_parameters_group_plan_director,sf_fixture_materials_basic_parameters_group_plan_director,model_sf_fixture_materials_basic_parameters,sf_base.group_plan_director,1,0,0,0
|
access_sf_fixture_materials_basic_parameters_group_plan_director,sf_fixture_materials_basic_parameters_group_plan_director,model_sf_fixture_materials_basic_parameters,sf_base.group_plan_director,1,0,0,0
|
||||||
access_sf_multi_mounting_type_group_plan_director,sf_multi_mounting_type_group_plan_director,model_sf_multi_mounting_type,sf_base.group_plan_director,1,0,0,0
|
access_sf_multi_mounting_type_group_plan_director,sf_multi_mounting_type_group_plan_director,model_sf_multi_mounting_type,sf_base.group_plan_director,1,0,0,0
|
||||||
|
|
||||||
access_sf_production_materials_group_sf_stock_manager,sf_production_materials_group_sf_stock_manager,model_sf_production_materials,sf_warehouse.group_sf_stock_manager,1,0,0,0
|
access_sf_production_materials_group_sf_stock_manager,sf_production_materials_group_sf_stock_manager,model_sf_production_materials,sf_base.group_sf_stock_manager,1,0,0,0
|
||||||
access_sf_materials_model_group_sf_stock_manager,sf_materials_model_group_sf_stock_manager,model_sf_materials_model,sf_warehouse.group_sf_stock_manager,1,0,0,0
|
access_sf_materials_model_group_sf_stock_manager,sf_materials_model_group_sf_stock_manager,model_sf_materials_model,sf_base.group_sf_stock_manager,1,0,0,0
|
||||||
access_sf_fixture_material_group_sf_stock_manager,sf_fixture_material_group_sf_stock_manager,model_sf_fixture_material,sf_warehouse.group_sf_stock_manager,1,0,0,0
|
access_sf_fixture_material_group_sf_stock_manager,sf_fixture_material_group_sf_stock_manager,model_sf_fixture_material,sf_base.group_sf_stock_manager,1,0,0,0
|
||||||
access_sf_fixture_model_group_sf_stock_manager,sf_fixture_model_group_sf_stock_manager,model_sf_fixture_model,sf_warehouse.group_sf_stock_manager,1,0,0,0
|
access_sf_fixture_model_group_sf_stock_manager,sf_fixture_model_group_sf_stock_manager,model_sf_fixture_model,sf_base.group_sf_stock_manager,1,0,0,0
|
||||||
access_sf_fixture_materials_basic_parameters_group_sf_stock_manager,sf_fixture_materials_basic_parameters_group_sf_stock_manager,model_sf_fixture_materials_basic_parameters,sf_warehouse.group_sf_stock_manager,1,0,0,0
|
access_sf_fixture_materials_basic_parameters_group_sf_stock_manager,sf_fixture_materials_basic_parameters_group_sf_stock_manager,model_sf_fixture_materials_basic_parameters,sf_base.group_sf_stock_manager,1,0,0,0
|
||||||
access_sf_multi_mounting_type_group_sf_stock_manager,sf_multi_mounting_type_group_sf_stock_manager,model_sf_multi_mounting_type,sf_warehouse.group_sf_stock_manager,1,0,0,0
|
access_sf_multi_mounting_type_group_sf_stock_manager,sf_multi_mounting_type_group_sf_stock_manager,model_sf_multi_mounting_type,sf_base.group_sf_stock_manager,1,0,0,0
|
||||||
access_sf_machine_brand_group_sf_stock_manager,sf_machine_brand_group_sf_stock_manager,model_sf_machine_brand,sf_warehouse.group_sf_stock_manager,1,0,0,0
|
access_sf_machine_brand_group_sf_stock_manager,sf_machine_brand_group_sf_stock_manager,model_sf_machine_brand,sf_base.group_sf_stock_manager,1,0,0,0
|
||||||
access_sf_cutting_tool_type_group_sf_stock_manager,sf_cutting_tool_type_group_sf_stock_manager,model_sf_cutting_tool_type,sf_warehouse.group_sf_stock_manager,1,0,0,0
|
access_sf_cutting_tool_type_group_sf_stock_manager,sf_cutting_tool_type_group_sf_stock_manager,model_sf_cutting_tool_type,sf_base.group_sf_stock_manager,1,0,0,0
|
||||||
|
|||||||
|
@@ -715,15 +715,15 @@ class ReStockMove(models.Model):
|
|||||||
class ReStockQuant(models.Model):
|
class ReStockQuant(models.Model):
|
||||||
_inherit = 'stock.quant'
|
_inherit = 'stock.quant'
|
||||||
|
|
||||||
def action_apply_inventory(self):
|
# def action_apply_inventory(self):
|
||||||
inventory_diff_quantity = self.inventory_diff_quantity
|
# inventory_diff_quantity = self.inventory_diff_quantity
|
||||||
super(ReStockQuant, self).action_apply_inventory()
|
# super(ReStockQuant, self).action_apply_inventory()
|
||||||
if inventory_diff_quantity >= 1:
|
# if inventory_diff_quantity >= 1:
|
||||||
stock = self.env['stock.move'].search([('product_id', '=', self.product_id.id), ('is_inventory', '=', True),
|
# stock = self.env['stock.move'].search([('product_id', '=', self.product_id.id), ('is_inventory', '=', True),
|
||||||
('reference', '=', '更新的产品数量'), ('state', '=', 'done')],
|
# ('reference', '=', '更新的产品数量'), ('state', '=', 'done')],
|
||||||
limit=1, order='id desc')
|
# limit=1, order='id desc')
|
||||||
if self.product_id.categ_type == '夹具':
|
# if self.product_id.categ_type == '夹具':
|
||||||
stock._register_fixture()
|
# stock._register_fixture()
|
||||||
elif self.product_id.categ_type == '刀具':
|
# elif self.product_id.categ_type == '刀具':
|
||||||
stock._register_cutting_tool()
|
# stock._register_cutting_tool()
|
||||||
return True
|
# return True
|
||||||
|
|||||||
@@ -135,6 +135,7 @@ access_sf_agv_site_group_sf_order_user,sf_agv_site_group_sf_order_user,model_sf_
|
|||||||
access_sf_agv_task_route_group_sf_order_user,sf_agv_task_route_group_sf_order_user,model_sf_agv_task_route,sf_base.group_sf_order_user,1,1,1,0
|
access_sf_agv_task_route_group_sf_order_user,sf_agv_task_route_group_sf_order_user,model_sf_agv_task_route,sf_base.group_sf_order_user,1,1,1,0
|
||||||
access_center_control_interface_log_admin,center_control_interface_log_admin,model_center_control_interface_log,base.group_system,1,1,1,0
|
access_center_control_interface_log_admin,center_control_interface_log_admin,model_center_control_interface_log,base.group_system,1,1,1,0
|
||||||
|
|
||||||
access_sf_model_type_group_sf_stock_manager,sf_model_type_group_sf_mrp_manager,model_sf_model_type,sf_warehouse.group_sf_stock_manager,1,0,0,0
|
access_sf_model_type_group_sf_stock_manager,sf_model_type_group_sf_mrp_manager,model_sf_model_type,sf_base.group_sf_stock_manager,1,0,0,0
|
||||||
access_mrp_bom_byproduct_group_sf_stock_manager,mrp_bom_byproduct_group_sf_mrp_manager,mrp.model_mrp_bom_byproduct,sf_warehouse.group_sf_stock_manager,1,0,0,0
|
access_mrp_bom_byproduct_group_sf_stock_user,mrp_bom_byproduct_group_sf_stock_user,mrp.model_mrp_bom_byproduct,sf_base.group_sf_stock_user,1,0,0,0
|
||||||
|
access_mrp_bom_byproduct_group_sf_stock_manager,mrp_bom_byproduct_group_sf_mrp_manager,mrp.model_mrp_bom_byproduct,sf_base.group_sf_stock_manager,1,0,0,0
|
||||||
|
|
||||||
|
|||||||
|
@@ -1,4 +1,6 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
import logging
|
||||||
|
|
||||||
import re
|
import re
|
||||||
from datetime import timedelta
|
from datetime import timedelta
|
||||||
from odoo import SUPERUSER_ID
|
from odoo import SUPERUSER_ID
|
||||||
@@ -46,6 +48,16 @@ class FunctionalCuttingToolEntity(models.Model):
|
|||||||
|
|
||||||
active = fields.Boolean(string='已归档', default=True)
|
active = fields.Boolean(string='已归档', default=True)
|
||||||
|
|
||||||
|
safe_inventory_id = fields.Many2one('sf.real.time.distribution.of.functional.tools',
|
||||||
|
string='功能刀具安全库存', readonly=True)
|
||||||
|
|
||||||
|
def button_safe_inventory_id(self):
|
||||||
|
"""更新功能刀具关联的安全库存记录"""
|
||||||
|
tool_is = self.search([])
|
||||||
|
for item in tool_is:
|
||||||
|
item.safe_inventory_id = self.env['sf.real.time.distribution.of.functional.tools'].search(
|
||||||
|
[('functional_name_id', '=', item.tool_name_id.id)])[0]
|
||||||
|
|
||||||
@api.depends('barcode_id.quant_ids', 'functional_tool_status')
|
@api.depends('barcode_id.quant_ids', 'functional_tool_status')
|
||||||
def _compute_current_location_id(self):
|
def _compute_current_location_id(self):
|
||||||
for record in self:
|
for record in self:
|
||||||
@@ -136,13 +148,11 @@ class FunctionalCuttingToolEntity(models.Model):
|
|||||||
def _compute_maintenance_equipment_image(self):
|
def _compute_maintenance_equipment_image(self):
|
||||||
for record in self:
|
for record in self:
|
||||||
if record.cutting_tool_integral_model_id:
|
if record.cutting_tool_integral_model_id:
|
||||||
print(record.cutting_tool_integral_model_id)
|
|
||||||
record.sudo().suitable_machining_method_ids = record.cutting_tool_integral_model_id.suitable_machining_method_ids.ids
|
record.sudo().suitable_machining_method_ids = record.cutting_tool_integral_model_id.suitable_machining_method_ids.ids
|
||||||
record.sudo().blade_tip_characteristics_id = record.cutting_tool_integral_model_id.blade_tip_characteristics_id.id
|
record.sudo().blade_tip_characteristics_id = record.cutting_tool_integral_model_id.blade_tip_characteristics_id.id
|
||||||
record.sudo().handle_type_id = record.cutting_tool_integral_model_id.handle_type_id.id
|
record.sudo().handle_type_id = record.cutting_tool_integral_model_id.handle_type_id.id
|
||||||
record.sudo().cutting_direction_ids = record.cutting_tool_integral_model_id.cutting_direction_ids.ids
|
record.sudo().cutting_direction_ids = record.cutting_tool_integral_model_id.cutting_direction_ids.ids
|
||||||
record.sudo().suitable_coolant_ids = record.cutting_tool_integral_model_id.suitable_coolant_ids.ids
|
record.sudo().suitable_coolant_ids = record.cutting_tool_integral_model_id.suitable_coolant_ids.ids
|
||||||
print(record.cutting_tool_integral_model_id.blade_tip_characteristics_id.ids)
|
|
||||||
elif record.cutting_tool_blade_model_id:
|
elif record.cutting_tool_blade_model_id:
|
||||||
record.sudo().suitable_machining_method_ids = record.cutting_tool_blade_model_id.suitable_machining_method_ids.ids
|
record.sudo().suitable_machining_method_ids = record.cutting_tool_blade_model_id.suitable_machining_method_ids.ids
|
||||||
record.sudo().blade_tip_characteristics_id = record.cutting_tool_blade_model_id.blade_tip_characteristics_id.id
|
record.sudo().blade_tip_characteristics_id = record.cutting_tool_blade_model_id.blade_tip_characteristics_id.id
|
||||||
@@ -340,28 +350,31 @@ class RealTimeDistributionOfFunctionalTools(models.Model):
|
|||||||
suitable_machining_method_ids = fields.Many2many(
|
suitable_machining_method_ids = fields.Many2many(
|
||||||
'maintenance.equipment.image', 'rel_machining_product_template_distribution', '适合加工方式',
|
'maintenance.equipment.image', 'rel_machining_product_template_distribution', '适合加工方式',
|
||||||
domain=[('type', '=', '加工能力')],
|
domain=[('type', '=', '加工能力')],
|
||||||
related='sf_functional_cutting_tool_entity_ids.suitable_machining_method_ids')
|
related='sf_functional_tool_entity_ids.suitable_machining_method_ids')
|
||||||
blade_tip_characteristics_id = fields.Many2one(
|
blade_tip_characteristics_id = fields.Many2one(
|
||||||
'maintenance.equipment.image', '刀尖特征',
|
'maintenance.equipment.image', '刀尖特征',
|
||||||
domain=[('type', '=', '刀尖特征')],
|
domain=[('type', '=', '刀尖特征')],
|
||||||
related='sf_functional_cutting_tool_entity_ids.blade_tip_characteristics_id')
|
related='sf_functional_tool_entity_ids.blade_tip_characteristics_id')
|
||||||
handle_type_id = fields.Many2one(
|
handle_type_id = fields.Many2one(
|
||||||
'maintenance.equipment.image', '柄部类型',
|
'maintenance.equipment.image', '柄部类型',
|
||||||
domain=[('type', '=', '柄部类型')], related='sf_functional_cutting_tool_entity_ids.handle_type_id')
|
domain=[('type', '=', '柄部类型')], related='sf_functional_tool_entity_ids.handle_type_id')
|
||||||
cutting_direction_ids = fields.Many2many(
|
cutting_direction_ids = fields.Many2many(
|
||||||
'maintenance.equipment.image', 'rel_cutting_product_template_distribution', '走刀方向',
|
'maintenance.equipment.image', 'rel_cutting_product_template_distribution', '走刀方向',
|
||||||
domain=[('type', '=', '走刀方向')], related='sf_functional_cutting_tool_entity_ids.cutting_direction_ids')
|
domain=[('type', '=', '走刀方向')], related='sf_functional_tool_entity_ids.cutting_direction_ids')
|
||||||
suitable_coolant_ids = fields.Many2many(
|
suitable_coolant_ids = fields.Many2many(
|
||||||
'maintenance.equipment.image', 'rel_coolants_product_template_distribution', '适合冷却方式',
|
'maintenance.equipment.image', 'rel_coolants_product_template_distribution', '适合冷却方式',
|
||||||
domain=[('type', '=', '冷却方式')], related='sf_functional_cutting_tool_entity_ids.suitable_coolant_ids')
|
domain=[('type', '=', '冷却方式')], related='sf_functional_tool_entity_ids.suitable_coolant_ids')
|
||||||
|
|
||||||
sf_functional_cutting_tool_entity_ids = fields.Many2many('sf.functional.cutting.tool.entity',
|
sf_functional_cutting_tool_entity_ids = fields.Many2many('sf.functional.cutting.tool.entity',
|
||||||
'sf_functional_cutting_tool_entity_ref',
|
'sf_functional_cutting_tool_entity_ref',
|
||||||
string='功能刀具列表信息', readonly=True)
|
string='功能刀具列表信息')
|
||||||
|
|
||||||
sf_functional_tool_assembly_ids = fields.Many2many('sf.functional.tool.assembly', 'sf_functional_tool_assembly_ref',
|
sf_functional_tool_assembly_ids = fields.Many2many('sf.functional.tool.assembly', 'sf_functional_tool_assembly_ref',
|
||||||
'功能刀具组装单', readonly=True)
|
'功能刀具组装单', readonly=True)
|
||||||
|
|
||||||
|
sf_functional_tool_entity_ids = fields.One2many('sf.functional.cutting.tool.entity', 'safe_inventory_id',
|
||||||
|
string='功能刀具信息')
|
||||||
|
|
||||||
active = fields.Boolean(string='已归档', default=True)
|
active = fields.Boolean(string='已归档', default=True)
|
||||||
|
|
||||||
@api.onchange('functional_name_id')
|
@api.onchange('functional_name_id')
|
||||||
@@ -392,12 +405,11 @@ class RealTimeDistributionOfFunctionalTools(models.Model):
|
|||||||
mrs_cutting_tool_type_ids = categories._search([], order=order, access_rights_uid=SUPERUSER_ID)
|
mrs_cutting_tool_type_ids = categories._search([], order=order, access_rights_uid=SUPERUSER_ID)
|
||||||
return categories.browse(mrs_cutting_tool_type_ids)
|
return categories.browse(mrs_cutting_tool_type_ids)
|
||||||
|
|
||||||
@api.depends('sf_functional_cutting_tool_entity_ids', 'min_stock_num', 'max_stock_num')
|
@api.depends('sf_functional_tool_entity_ids', 'min_stock_num', 'max_stock_num')
|
||||||
def _compute_batch_replenishment_num(self):
|
def _compute_batch_replenishment_num(self):
|
||||||
for tool in self:
|
for tool in self:
|
||||||
if tool:
|
if tool:
|
||||||
# 判断功能刀具组装单是否已经完成
|
# 计算刀具房数量、线边刀库数量、机内刀库数量
|
||||||
tool.sudo().estimate_functional_tool_assembly_ids(tool)
|
|
||||||
tool.sudo().get_stock_num(tool)
|
tool.sudo().get_stock_num(tool)
|
||||||
# 计算当前库存量
|
# 计算当前库存量
|
||||||
tool.sudo().tool_stock_total = tool.tool_stock_num + tool.side_shelf_num + tool.on_tool_stock_num
|
tool.sudo().tool_stock_total = tool.tool_stock_num + tool.side_shelf_num + tool.on_tool_stock_num
|
||||||
@@ -409,9 +421,10 @@ class RealTimeDistributionOfFunctionalTools(models.Model):
|
|||||||
计算批次补货量
|
计算批次补货量
|
||||||
"""
|
"""
|
||||||
if tool.tool_stock_total < tool.min_stock_num:
|
if tool.tool_stock_total < tool.min_stock_num:
|
||||||
tool.sudo().batch_replenishment_num = tool.max_stock_num - tool.tool_stock_total
|
|
||||||
# 根据判断创建功能刀具组装单
|
# 根据判断创建功能刀具组装单
|
||||||
if not tool.sf_functional_tool_assembly_ids and re.match(r'^\d+$', str(tool.id)):
|
if not tool.sf_functional_tool_assembly_ids.filtered(lambda item: item.assemble_status == '0') and re.match(
|
||||||
|
r'^\d+$', str(tool.id)):
|
||||||
|
tool.sudo().batch_replenishment_num = tool.max_stock_num - tool.tool_stock_total
|
||||||
for i in range(tool.batch_replenishment_num):
|
for i in range(tool.batch_replenishment_num):
|
||||||
tool.sudo().create_functional_tool_assembly(tool)
|
tool.sudo().create_functional_tool_assembly(tool)
|
||||||
print(i, ": ", tool.sf_functional_tool_assembly_ids)
|
print(i, ": ", tool.sf_functional_tool_assembly_ids)
|
||||||
@@ -438,15 +451,6 @@ class RealTimeDistributionOfFunctionalTools(models.Model):
|
|||||||
})
|
})
|
||||||
tool.sudo().sf_functional_tool_assembly_ids = [(4, functional_tool_assembly.id)]
|
tool.sudo().sf_functional_tool_assembly_ids = [(4, functional_tool_assembly.id)]
|
||||||
|
|
||||||
def estimate_functional_tool_assembly_ids(self, tool):
|
|
||||||
"""
|
|
||||||
判断功能刀具组装单是否完成,如果全部完成清空sf_functional_tool_assembly_ids的数据
|
|
||||||
"""
|
|
||||||
for sf_functional_tool_assembly_id in tool.sf_functional_tool_assembly_ids:
|
|
||||||
if sf_functional_tool_assembly_id.assemble_status == '0':
|
|
||||||
return False
|
|
||||||
tool.sudo().sf_functional_tool_assembly_ids = []
|
|
||||||
|
|
||||||
def get_stock_num(self, tool):
|
def get_stock_num(self, tool):
|
||||||
"""
|
"""
|
||||||
计算刀具房数量、线边刀库数量、机内刀库数量
|
计算刀具房数量、线边刀库数量、机内刀库数量
|
||||||
@@ -455,16 +459,20 @@ class RealTimeDistributionOfFunctionalTools(models.Model):
|
|||||||
tool.tool_stock_num = 0
|
tool.tool_stock_num = 0
|
||||||
tool.side_shelf_num = 0
|
tool.side_shelf_num = 0
|
||||||
tool.on_tool_stock_num = 0
|
tool.on_tool_stock_num = 0
|
||||||
if tool.sf_functional_cutting_tool_entity_ids:
|
if tool.sf_functional_tool_entity_ids:
|
||||||
for cutting_tool in tool.sf_functional_cutting_tool_entity_ids:
|
for cutting_tool in tool.sf_functional_tool_entity_ids:
|
||||||
if cutting_tool.tool_room_num > 0:
|
if cutting_tool.tool_room_num > 0:
|
||||||
tool.tool_stock_num += 1
|
tool.tool_stock_num += 1
|
||||||
elif cutting_tool.line_edge_knife_library_num > 0:
|
elif cutting_tool.line_edge_knife_library_num > 0:
|
||||||
tool.side_shelf_num += 1
|
tool.side_shelf_num += 1
|
||||||
elif cutting_tool.machine_knife_library_num > 0:
|
elif cutting_tool.machine_knife_library_num > 0:
|
||||||
tool.on_tool_stock_num += 1
|
tool.on_tool_stock_num += 1
|
||||||
|
else:
|
||||||
|
tool.tool_stock_num = 0
|
||||||
|
tool.side_shelf_num = 0
|
||||||
|
tool.on_tool_stock_num = 0
|
||||||
|
|
||||||
def create_or_edit_safety_stock(self, vals, sf_functional_cutting_tool_entity_ids):
|
def create_or_edit_safety_stock(self, vals, sf_functional_tool_entity_ids):
|
||||||
"""
|
"""
|
||||||
根据传入的信息新增或者更新功能刀具安全库存的信息
|
根据传入的信息新增或者更新功能刀具安全库存的信息
|
||||||
"""
|
"""
|
||||||
@@ -473,9 +481,9 @@ class RealTimeDistributionOfFunctionalTools(models.Model):
|
|||||||
[('functional_name_id', '=', vals['functional_name_id'])])
|
[('functional_name_id', '=', vals['functional_name_id'])])
|
||||||
if len(record) > 0:
|
if len(record) > 0:
|
||||||
for obj in record:
|
for obj in record:
|
||||||
obj.write({'sf_functional_cutting_tool_entity_ids': [(4, sf_functional_cutting_tool_entity_ids.id)]})
|
obj.write({'sf_functional_tool_entity_ids': [(4, sf_functional_tool_entity_ids.id)]})
|
||||||
else:
|
else:
|
||||||
vals['sf_functional_cutting_tool_entity_ids'] = sf_functional_cutting_tool_entity_ids.ids
|
vals['sf_functional_tool_entity_ids'] = sf_functional_tool_entity_ids.ids
|
||||||
self.env['sf.real.time.distribution.of.functional.tools'].create(vals)
|
self.env['sf.real.time.distribution.of.functional.tools'].create(vals)
|
||||||
|
|
||||||
status_create = fields.Boolean('是否是新增状态', default=True)
|
status_create = fields.Boolean('是否是新增状态', default=True)
|
||||||
|
|||||||
@@ -81,6 +81,7 @@ class StockLot(models.Model):
|
|||||||
|
|
||||||
def _get_sync_stock_lot(self, objs_all, str_url, token, headers):
|
def _get_sync_stock_lot(self, objs_all, str_url, token, headers):
|
||||||
tool_material_stock_list = []
|
tool_material_stock_list = []
|
||||||
|
try:
|
||||||
if objs_all:
|
if objs_all:
|
||||||
for item in objs_all:
|
for item in objs_all:
|
||||||
val = {
|
val = {
|
||||||
@@ -97,6 +98,8 @@ class StockLot(models.Model):
|
|||||||
return '刀具物料序列号注册成功'
|
return '刀具物料序列号注册成功'
|
||||||
else:
|
else:
|
||||||
logging.info("没有注册刀具物料序列号信息")
|
logging.info("没有注册刀具物料序列号信息")
|
||||||
|
except Exception as e:
|
||||||
|
logging.info("捕获错误信息:%s" % e)
|
||||||
|
|
||||||
|
|
||||||
class ToolMaterial(models.Model):
|
class ToolMaterial(models.Model):
|
||||||
@@ -127,6 +130,7 @@ class ToolMaterial(models.Model):
|
|||||||
|
|
||||||
def _get_sync_tool_material_search(self, objs_all, str_url, token, headers):
|
def _get_sync_tool_material_search(self, objs_all, str_url, token, headers):
|
||||||
tool_material_list = []
|
tool_material_list = []
|
||||||
|
try:
|
||||||
if objs_all:
|
if objs_all:
|
||||||
for item in objs_all:
|
for item in objs_all:
|
||||||
val = {
|
val = {
|
||||||
@@ -149,6 +153,8 @@ class ToolMaterial(models.Model):
|
|||||||
return '刀具物料注册成功'
|
return '刀具物料注册成功'
|
||||||
else:
|
else:
|
||||||
logging.info('没有注册刀具物料信息')
|
logging.info('没有注册刀具物料信息')
|
||||||
|
except Exception as e:
|
||||||
|
logging.info("捕获错误信息:%s" % e)
|
||||||
|
|
||||||
@api.model_create_multi
|
@api.model_create_multi
|
||||||
def create(self, vals_list):
|
def create(self, vals_list):
|
||||||
@@ -188,6 +194,7 @@ class FunctionalCuttingToolEntity(models.Model):
|
|||||||
|
|
||||||
def _get_sync_functional_cutting_tool_entity(self, objs_all, str_url, token, headers):
|
def _get_sync_functional_cutting_tool_entity(self, objs_all, str_url, token, headers):
|
||||||
functional_tool_list = []
|
functional_tool_list = []
|
||||||
|
try:
|
||||||
if objs_all:
|
if objs_all:
|
||||||
for item in objs_all:
|
for item in objs_all:
|
||||||
val = {
|
val = {
|
||||||
@@ -238,6 +245,8 @@ class FunctionalCuttingToolEntity(models.Model):
|
|||||||
return "功能刀具注册成功"
|
return "功能刀具注册成功"
|
||||||
else:
|
else:
|
||||||
logging.info('没有注册功能刀具信息')
|
logging.info('没有注册功能刀具信息')
|
||||||
|
except Exception as e:
|
||||||
|
logging.info("捕获错误信息:%s" % e)
|
||||||
|
|
||||||
@api.model_create_multi
|
@api.model_create_multi
|
||||||
def create(self, vals_list):
|
def create(self, vals_list):
|
||||||
@@ -283,6 +292,7 @@ class FunctionalToolWarning(models.Model):
|
|||||||
|
|
||||||
def get_sync_functional_tool_warning(self, objs_all, str_url, token, headers):
|
def get_sync_functional_tool_warning(self, objs_all, str_url, token, headers):
|
||||||
tool_warning_list = []
|
tool_warning_list = []
|
||||||
|
try:
|
||||||
if objs_all:
|
if objs_all:
|
||||||
for item in objs_all:
|
for item in objs_all:
|
||||||
val = {
|
val = {
|
||||||
@@ -319,6 +329,8 @@ class FunctionalToolWarning(models.Model):
|
|||||||
return "功能刀具预警注册成功"
|
return "功能刀具预警注册成功"
|
||||||
else:
|
else:
|
||||||
logging.info('没有注册功能刀具预警信息')
|
logging.info('没有注册功能刀具预警信息')
|
||||||
|
except Exception as e:
|
||||||
|
logging.info("捕获错误信息:%s" % e)
|
||||||
|
|
||||||
@api.model_create_multi
|
@api.model_create_multi
|
||||||
def create(self, vals_list):
|
def create(self, vals_list):
|
||||||
@@ -358,6 +370,7 @@ class StockMoveLine(models.Model):
|
|||||||
|
|
||||||
def get_sync_stock_move_line(self, objs_all, str_url, token, headers):
|
def get_sync_stock_move_line(self, objs_all, str_url, token, headers):
|
||||||
tool_stock_list = []
|
tool_stock_list = []
|
||||||
|
try:
|
||||||
if objs_all:
|
if objs_all:
|
||||||
for item in objs_all:
|
for item in objs_all:
|
||||||
val = {
|
val = {
|
||||||
@@ -385,6 +398,8 @@ class StockMoveLine(models.Model):
|
|||||||
return "功能刀具出入库记录注册成功"
|
return "功能刀具出入库记录注册成功"
|
||||||
else:
|
else:
|
||||||
logging.info('没有注册功能刀具出入库记录信息')
|
logging.info('没有注册功能刀具出入库记录信息')
|
||||||
|
except Exception as e:
|
||||||
|
logging.info("捕获错误信息:%s" % e)
|
||||||
|
|
||||||
@api.model_create_multi
|
@api.model_create_multi
|
||||||
def create(self, vals_list):
|
def create(self, vals_list):
|
||||||
@@ -424,10 +439,11 @@ class RealTimeDistributionFunctionalTools(models.Model):
|
|||||||
|
|
||||||
def get_sync_real_time_distribution_functional_tools(self, objs_all, str_url, token, headers):
|
def get_sync_real_time_distribution_functional_tools(self, objs_all, str_url, token, headers):
|
||||||
tool_distribution_list = []
|
tool_distribution_list = []
|
||||||
|
try:
|
||||||
if objs_all:
|
if objs_all:
|
||||||
for item in objs_all:
|
for item in objs_all:
|
||||||
functional_tool_codes = []
|
functional_tool_codes = []
|
||||||
for obj in item.sf_functional_cutting_tool_entity_ids:
|
for obj in item.sf_functional_tool_entity_ids:
|
||||||
functional_tool_codes.append(obj.code)
|
functional_tool_codes.append(obj.code)
|
||||||
val = {
|
val = {
|
||||||
'id': item.id,
|
'id': item.id,
|
||||||
@@ -463,6 +479,8 @@ class RealTimeDistributionFunctionalTools(models.Model):
|
|||||||
return "功能刀具出入库记录注册成功"
|
return "功能刀具出入库记录注册成功"
|
||||||
else:
|
else:
|
||||||
logging.info('没有注册功能刀具出入库记录信息')
|
logging.info('没有注册功能刀具出入库记录信息')
|
||||||
|
except Exception as e:
|
||||||
|
logging.info("捕获错误信息:%s" % e)
|
||||||
|
|
||||||
@api.model_create_multi
|
@api.model_create_multi
|
||||||
def create(self, vals_list):
|
def create(self, vals_list):
|
||||||
@@ -474,6 +492,6 @@ class RealTimeDistributionFunctionalTools(models.Model):
|
|||||||
|
|
||||||
def write(self, vals):
|
def write(self, vals):
|
||||||
res = super().write(vals)
|
res = super().write(vals)
|
||||||
if vals.get('sf_functional_cutting_tool_entity_ids') or vals.get('min_stock_num') or vals.get('max_stock_num'):
|
if vals.get('sf_functional_tool_entity_ids') or vals.get('min_stock_num') or vals.get('max_stock_num'):
|
||||||
self.enroll_functional_tool_real_time_distribution()
|
self.enroll_functional_tool_real_time_distribution()
|
||||||
return res
|
return res
|
||||||
|
|||||||
@@ -46,6 +46,8 @@
|
|||||||
</header>
|
</header>
|
||||||
<sheet>
|
<sheet>
|
||||||
<div class="oe_button_box" name="button_box">
|
<div class="oe_button_box" name="button_box">
|
||||||
|
<button name="button_safe_inventory_id" string="更新功能刀具关联的安全库存记录"
|
||||||
|
type="object" class="btn-primary"/>
|
||||||
<button class="oe_stat_button" groups="sf_base.group_sf_mrp_user"
|
<button class="oe_stat_button" groups="sf_base.group_sf_mrp_user"
|
||||||
name="open_functional_tool_warning"
|
name="open_functional_tool_warning"
|
||||||
icon="fa-list-ul"
|
icon="fa-list-ul"
|
||||||
@@ -89,9 +91,9 @@
|
|||||||
attrs="{'invisible': [('functional_tool_status', '=', '已拆除')]}"/>
|
attrs="{'invisible': [('functional_tool_status', '=', '已拆除')]}"/>
|
||||||
<field name="rfid_dismantle" readonly="1"
|
<field name="rfid_dismantle" readonly="1"
|
||||||
attrs="{'invisible': [('functional_tool_status', '!=', '已拆除')]}"/>
|
attrs="{'invisible': [('functional_tool_status', '!=', '已拆除')]}"/>
|
||||||
<field name="tool_name_id" invisible="0"
|
<field name="tool_name_id" invisible="0" readonly="1"
|
||||||
placeholder="请输入20字以内的名称"/>
|
placeholder="请输入20字以内的名称"/>
|
||||||
<field name="sf_cutting_tool_type_id"/>
|
<field name="sf_cutting_tool_type_id" readonly="1"/>
|
||||||
<field name="tool_groups_id"/>
|
<field name="tool_groups_id"/>
|
||||||
<field name="cutting_tool_integral_model_id"
|
<field name="cutting_tool_integral_model_id"
|
||||||
options="{'no_create': True, 'no_quick_create': True}"
|
options="{'no_create': True, 'no_quick_create': True}"
|
||||||
@@ -113,6 +115,7 @@
|
|||||||
options="{'no_create': True, 'no_quick_create': True}"/>
|
options="{'no_create': True, 'no_quick_create': True}"/>
|
||||||
<field name="cutting_tool_cutterhead_model_id"
|
<field name="cutting_tool_cutterhead_model_id"
|
||||||
options="{'no_create': True, 'no_quick_create': True}"/>
|
options="{'no_create': True, 'no_quick_create': True}"/>
|
||||||
|
<field name="safe_inventory_id" readonly="0"/>
|
||||||
</group>
|
</group>
|
||||||
<group>
|
<group>
|
||||||
<field name="image" nolabel="1" widget="image"/>
|
<field name="image" nolabel="1" widget="image"/>
|
||||||
@@ -188,7 +191,8 @@
|
|||||||
<field name="tool_name_id"/>
|
<field name="tool_name_id"/>
|
||||||
<field name="functional_tool_diameter"/>
|
<field name="functional_tool_diameter"/>
|
||||||
<field name="knife_tip_r_angle"/>
|
<field name="knife_tip_r_angle"/>
|
||||||
<filter string="未拆除" name="no_state_removed" domain="[('functional_tool_status', '!=', '已拆除')]"/>
|
<filter string="未拆除" name="no_state_removed"
|
||||||
|
domain="[('functional_tool_status', '!=', '已拆除')]"/>
|
||||||
<filter string="已拆除" name="state_removed" domain="[('functional_tool_status', '=', '已拆除')]"/>
|
<filter string="已拆除" name="state_removed" domain="[('functional_tool_status', '=', '已拆除')]"/>
|
||||||
<separator/>
|
<separator/>
|
||||||
<filter string="已归档" name="inactive" domain="[('active', '=', False)]"/>
|
<filter string="已归档" name="inactive" domain="[('active', '=', False)]"/>
|
||||||
@@ -385,7 +389,8 @@
|
|||||||
</group>
|
</group>
|
||||||
<notebook>
|
<notebook>
|
||||||
<page string="刀具信息">
|
<page string="刀具信息">
|
||||||
<field name="sf_functional_cutting_tool_entity_ids" widget="many2many">
|
<field name="sf_functional_cutting_tool_entity_ids" invisible="1" widget="many2many"/>
|
||||||
|
<field name="sf_functional_tool_entity_ids" widget="one2many">
|
||||||
<tree edit="0" create="0" delete="0">
|
<tree edit="0" create="0" delete="0">
|
||||||
<field name="rfid"/>
|
<field name="rfid"/>
|
||||||
<field name="tool_name_id"/>
|
<field name="tool_name_id"/>
|
||||||
|
|||||||
@@ -607,7 +607,7 @@ class FunctionalToolAssemblyOrder(models.TransientModel):
|
|||||||
# 对物料做必填判断
|
# 对物料做必填判断
|
||||||
self.materials_must_be_judged()
|
self.materials_must_be_judged()
|
||||||
|
|
||||||
product_id = self.env['product.product'].search([('name', '=', '功能刀具')])
|
product_id = self.env['product.product']
|
||||||
# 创建组装入库单
|
# 创建组装入库单
|
||||||
# 创建功能刀具批次/序列号记录
|
# 创建功能刀具批次/序列号记录
|
||||||
stock_lot = product_id.create_assemble_warehouse_receipt(self.id, functional_tool_assembly, self)
|
stock_lot = product_id.create_assemble_warehouse_receipt(self.id, functional_tool_assembly, self)
|
||||||
@@ -803,8 +803,8 @@ class ProductProduct(models.Model):
|
|||||||
创建功能刀具批次/序列号记录
|
创建功能刀具批次/序列号记录
|
||||||
"""
|
"""
|
||||||
product_id = self.env['product.product'].search([('name', '=', '功能刀具')])
|
product_id = self.env['product.product'].search([('name', '=', '功能刀具')])
|
||||||
|
if not product_id:
|
||||||
logging.info("product_id: %s" % product_id)
|
logging.info('没有搜索到功能刀具产品:%s' % product_id)
|
||||||
stock_lot = self.env['stock.lot'].create({
|
stock_lot = self.env['stock.lot'].create({
|
||||||
'name': self.get_stock_lot_name(tool_assembly_order_id),
|
'name': self.get_stock_lot_name(tool_assembly_order_id),
|
||||||
'product_id': product_id.id,
|
'product_id': product_id.id,
|
||||||
@@ -849,7 +849,8 @@ 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, assembly_order_code, False, False)
|
tool_material.create_stock_quant(location_inventory_id, stock_location_id, None, assembly_order_code, False,
|
||||||
|
False)
|
||||||
|
|
||||||
def material_stock_moves(self, shelf_location_barcode, assembly_order_code):
|
def material_stock_moves(self, shelf_location_barcode, assembly_order_code):
|
||||||
# 创建库存移动记录
|
# 创建库存移动记录
|
||||||
|
|||||||
@@ -13,7 +13,7 @@
|
|||||||
'depends': ['stock', 'web', 'sf_base'],
|
'depends': ['stock', 'web', 'sf_base'],
|
||||||
'data': [
|
'data': [
|
||||||
'data/ir_cron_data.xml',
|
'data/ir_cron_data.xml',
|
||||||
'security/sf_stock_security.xml',
|
# 'security/sf_stock_security.xml',
|
||||||
'security/ir.model.access.csv',
|
'security/ir.model.access.csv',
|
||||||
'wizard/wizard_view.xml',
|
'wizard/wizard_view.xml',
|
||||||
'views/view.xml',
|
'views/view.xml',
|
||||||
|
|||||||
@@ -1,104 +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_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_base.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_base.group_sf_stock_manager,1,1,1,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_user_group_sf_stock_user,sf.shelf.group.sf.stock.user,model_sf_shelf,sf_base.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_base.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_group_sf_stock_user,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_base.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_group_sf_stock_user,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_base.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_group_sf_stock_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_base.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_manager_group_sf_stock_user,stock.picking manager,stock.model_stock_picking,sf_base.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_all,stock.picking.type all users,stock.model_stock_picking_type,base.group_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_user_group_sf_stock_user,stock.picking.type user,stock.model_stock_picking_type,sf_base.group_sf_stock_user,1,0,0,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_picking_type_manager_group_sf_stock_user,stock.picking.type manager,stock.model_stock_picking_type,sf_base.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_user_group_sf_stock_user,stock.lot user,stock.model_stock_lot,sf_base.group_sf_stock_user,1,1,1,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_group_sf_stock_user,stock.move manager,stock.model_stock_move,sf_base.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_group_sf_stock_user,stock.move user,stock.model_stock_move,sf_base.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_group_sf_stock_user,product_product_stock_user,product.model_product_product,sf_base.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_group_sf_stock_user,product.template stock user,product.model_product_template,sf_base.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_group_sf_stock_user,uom.category stock_manager,uom.model_uom_category,sf_base.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_group_sf_stock_user,uom.uom stock_manager,uom.model_uom_uom,sf_base.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_group_sf_stock_user,product.category stock_manager,product.model_product_category,sf_base.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_group_sf_stock_user,product.template stock_manager,product.model_product_template,sf_base.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_group_sf_stock_user,product.product stock_manager,product.model_product_product,sf_base.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_group_sf_stock_user,product.packaging stock_manager,product.model_product_packaging,sf_base.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_group_sf_stock_user,product.supplierinfo stock_manager,product.model_product_supplierinfo,sf_base.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_group_sf_stock_user,product.pricelist stock_manager,product.model_product_pricelist,sf_base.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_group_sf_stock_user,res_partner group_stock_manager,base.model_res_partner,sf_base.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_group_sf_stock_user,product.pricelist.item stock_manager,product.model_product_pricelist_item,sf_base.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_group_sf_stock_user,product.tag.stock.manager,product.model_product_tag,sf_base.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_group_sf_stock_user,stock.warehouse.orderpoint,stock.model_stock_warehouse_orderpoint,sf_base.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_group_sf_stock_user,stock.warehouse.orderpoint system,stock.model_stock_warehouse_orderpoint,sf_base.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_group_sf_stock_user,stock.quant user,stock.model_stock_quant,sf_base.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_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_manager_group_sf_stock_user,stock.quant.package stock manager,stock.model_stock_quant_package,sf_base.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_quant_package_stock_user_group_sf_stock_user,stock.quant.package stock user,stock.model_stock_quant_package,sf_base.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_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_manager_group_sf_stock_user,stock.package_level stock manager,stock.model_stock_package_level,sf_base.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_package_level_stock_user_group_sf_stock_user,stock.package_level stock user,stock.model_stock_package_level,sf_base.group_sf_stock_user,1,1,1,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_user_group_sf_stock_user,stock_rule user,stock.model_stock_rule,sf_base.group_sf_stock_user,1,0,0,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_rule_stock_manager_group_sf_stock_user,stock_rule stock manager,stock.model_stock_rule,sf_base.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_manager_group_sf_stock_user,stock.route,stock.model_stock_route,sf_base.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_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_manager_group_sf_stock_user,stock.move.line manager,stock.model_stock_move_line,sf_base.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_user_group_sf_stock_user,stock.move.line user,stock.model_stock_move_line,sf_base.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_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_putaway_manager_group_sf_stock_user,stock.putaway.rule all managers,stock.model_stock_putaway_rule,sf_base.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_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_user_group_sf_stock_user,barcode.nomenclature.stock.user,barcodes.model_barcode_nomenclature,sf_base.group_sf_stock_user,1,0,0,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_nomenclature_stock_manager_group_sf_stock_user,barcode.nomenclature.stock.manager,barcodes.model_barcode_nomenclature,sf_base.group_sf_stock_user,1,1,1,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_user_group_sf_stock_user,barcode.rule.stock.user,barcodes.model_barcode_rule,sf_base.group_sf_stock_user,1,0,0,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_barcode_rule_stock_manager_group_sf_stock_user,barcode.rule.stock.manager,barcodes.model_barcode_rule,sf_base.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_user_group_sf_stock_user,stock.scrap.user,stock.model_stock_scrap,sf_base.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_stock_scrap_manager_group_sf_stock_user,stock.scrap.manager,stock.model_stock_scrap,sf_base.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_manager_group_sf_stock_user,product.attribute manager,product.model_product_attribute,sf_base.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_attribute_value_manager_group_sf_stock_user,product.attribute manager value,product.model_product_attribute_value,sf_base.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_product_attribute_manager_group_sf_stock_user,product.product.attribute manager value,product.model_product_template_attribute_value,sf_base.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_exclusion_manager_group_sf_stock_user,product.attribute manager filter line,product.model_product_template_attribute_exclusion,sf_base.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_product_template_attribute_line_manager_group_sf_stock_user,product.attribute manager line,product.model_product_template_attribute_line,sf_base.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_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_traceability_report_group_sf_stock_user,access.stock.traceability.report,stock.model_stock_traceability_report,sf_base.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_assign_serial_group_sf_stock_user,access.stock.assign.serial,stock.model_stock_assign_serial,sf_base.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_line_group_sf_stock_user,access.stock.return.picking.line,stock.model_stock_return_picking_line,sf_base.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_return_picking_group_sf_stock_user,access.stock.return.picking,stock.model_stock_return_picking,sf_base.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_change_product_qty_group_sf_stock_user,access.stock.change.product.qty,stock.model_stock_change_product_qty,sf_base.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_scheduler_compute_group_sf_stock_user,access.stock.scheduler.compute,stock.model_stock_scheduler_compute,sf_base.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_line_group_sf_stock_user,access.stock.immediate.transfer.line,stock.model_stock_immediate_transfer_line,sf_base.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_immediate_transfer_group_sf_stock_user,access.stock.immediate.transfer,stock.model_stock_immediate_transfer,sf_base.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_line_group_sf_stock_user,access.stock.backorder.confirmation.line,stock.model_stock_backorder_confirmation_line,sf_base.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_backorder_confirmation_group_sf_stock_user,access.stock.backorder.confirmation,stock.model_stock_backorder_confirmation,sf_base.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_quantity_history_group_sf_stock_user,access.stock.quantity.history,stock.model_stock_quantity_history,sf_base.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_rules_report_group_sf_stock_user,access.stock.rules.report,stock.model_stock_rules_report,sf_base.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_stock_warn_insufficient_qty_scrap_group_sf_stock_user,access.stock.warn.insufficient.qty.scrap,stock.model_stock_warn_insufficient_qty_scrap,sf_base.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_product_replenish_group_sf_stock_user,access.product.replenish,stock.model_product_replenish,sf_base.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_confirmation_group_sf_stock_user,access.stock.track.confirmation,stock.model_stock_track_confirmation,sf_base.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_track_line_group_sf_stock_user,access.stock.track.line,stock.model_stock_track_line,sf_base.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_package_destination_group_sf_stock_user,access.stock.package.destination,stock.model_stock_package_destination,sf_base.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_orderpoint_snooze_group_sf_stock_user,access_stock_orderpoint_snooze,stock.model_stock_orderpoint_snooze,sf_base.group_sf_stock_user,1,1,1,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_user_group_sf_stock_user,access_stock_package_type_user,stock.model_stock_package_type,sf_base.group_sf_stock_user,1,0,0,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_package_type_manager_group_sf_stock_user,access_stock_package_type_manager,stock.model_stock_package_type,sf_base.group_sf_stock_user,1,1,1,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_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_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_manager_group_sf_stock_user,stock.storage.category.manager,stock.model_stock_storage_category,sf_base.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_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_storage_category_capacity_manager_group_sf_stock_user,stock.storage.category.capacity.manager,stock.model_stock_storage_category_capacity,sf_base.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_conflict_group_sf_stock_user,stock.inventory.conflict,stock.model_stock_inventory_conflict,sf_base.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_warning_group_sf_stock_user,stock.inventory.warning,stock.model_stock_inventory_warning,sf_base.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_inventory_adjustment_name_group_sf_stock_user,stock.inventory.adjustment.name,stock.model_stock_inventory_adjustment_name,sf_base.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_request_count_group_sf_stock_user,stock.request.count,stock.model_stock_request_count,sf_base.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_replenishment_info_group_sf_stock_user,stock.replenishment.info,stock.model_stock_replenishment_info,sf_base.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_picking_label_type_user_group_sf_stock_user,picking.label.type.user,stock.model_picking_label_type,sf_base.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_lot_label_layout_user_group_sf_stock_user,lot.label.layout.user,stock.model_lot_label_layout,sf_base.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_stock_replenish_option_group_sf_stock_user,stock.replenishment.option,stock.model_stock_replenishment_option,sf_base.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_mrp_production_group_sf_stock_user,mrp.production,mrp.model_mrp_production,sf_base.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
|
||||||
@@ -126,18 +126,22 @@ access_stock_lot_group_quality_director,stock_lot_group_quality_director,stock.m
|
|||||||
access_mrp_workcenter_productivity_group_purchase,mrp_workcenter_productivity_group_purchase,mrp.model_mrp_workcenter_productivity,sf_base.group_purchase,1,0,0,0
|
access_mrp_workcenter_productivity_group_purchase,mrp_workcenter_productivity_group_purchase,mrp.model_mrp_workcenter_productivity,sf_base.group_purchase,1,0,0,0
|
||||||
access_mrp_workcenter_productivity_group_purchase_director,mrp_workcenter_productivity_group_purchase_director,mrp.model_mrp_workcenter_productivity,sf_base.group_purchase_director,1,0,0,0
|
access_mrp_workcenter_productivity_group_purchase_director,mrp_workcenter_productivity_group_purchase_director,mrp.model_mrp_workcenter_productivity,sf_base.group_purchase_director,1,0,0,0
|
||||||
|
|
||||||
access_sf_cutting_speed_group_sf_stock_manager,sf_cutting_speed_group_sf_stock_manager,sf_base.model_sf_cutting_speed,sf_warehouse.group_sf_stock_manager,1,0,1,0
|
access_sf_cutting_speed_group_sf_stock_user,sf_cutting_speed_group_sf_stock_user,sf_base.model_sf_cutting_speed,sf_base.group_sf_stock_user,1,0,0,0
|
||||||
access_sf_feed_per_tooth_group_sf_stock_manager,sf_feed_per_tooth_group_sf_stock_manager,sf_base.model_sf_feed_per_tooth,sf_warehouse.group_sf_stock_manager,1,0,1,0
|
access_sf_cutting_speed_group_sf_stock_manager,sf_cutting_speed_group_sf_stock_manager,sf_base.model_sf_cutting_speed,sf_base.group_sf_stock_manager,1,0,1,0
|
||||||
access_sf_cutting_tool_material_group_sf_stock_manager,sf_cutting_tool_material_group_sf_stock_manager,sf_base.model_sf_cutting_tool_material,sf_warehouse.group_sf_stock_manager,1,0,1,0
|
access_sf_feed_per_tooth_group_sf_stock_user,sf_feed_per_tooth_group_sf_stock_user,sf_base.model_sf_feed_per_tooth,sf_base.group_sf_stock_user,1,0,0,0
|
||||||
access_sf_cutting_tool_standard_library_group_sf_stock_manager,sf_cutting_tool_standard_library_group_sf_stock_manager,sf_base.model_sf_cutting_tool_standard_library,sf_warehouse.group_sf_stock_manager,1,0,1,0
|
access_sf_feed_per_tooth_group_sf_stock_manager,sf_feed_per_tooth_group_sf_stock_manager,sf_base.model_sf_feed_per_tooth,sf_base.group_sf_stock_manager,1,0,1,0
|
||||||
access_sf_tool_materials_basic_parameters_group_sf_stock_manager,sf_tool_materials_basic_parameters_group_sf_stock_manager,sf_base.model_sf_tool_materials_basic_parameters,sf_warehouse.group_sf_stock_manager,1,0,1,0
|
access_sf_cutting_tool_material_group_sf_stock_user,sf_cutting_tool_material_group_sf_stock_user,sf_base.model_sf_cutting_tool_material,sf_base.group_sf_stock_user,1,0,0,0
|
||||||
|
access_sf_cutting_tool_material_group_sf_stock_manager,sf_cutting_tool_material_group_sf_stock_manager,sf_base.model_sf_cutting_tool_material,sf_base.group_sf_stock_manager,1,0,1,0
|
||||||
|
access_sf_cutting_tool_standard_library_group_sf_stock_manager,sf_cutting_tool_standard_library_group_sf_stock_manager,sf_base.model_sf_cutting_tool_standard_library,sf_base.group_sf_stock_manager,1,0,1,0
|
||||||
|
access_sf_tool_materials_basic_parameters_group_sf_stock_manager,sf_tool_materials_basic_parameters_group_sf_stock_manager,sf_base.model_sf_tool_materials_basic_parameters,sf_base.group_sf_stock_manager,1,0,1,0
|
||||||
|
|
||||||
access_sf_shelf_location_wizard_group_plan_dispatch,sf_shelf_location_wizard_group_plan_dispatch,model_sf_shelf_location_wizard,sf_base.group_plan_dispatch,1,0,0,0
|
access_sf_shelf_location_wizard_group_plan_dispatch,sf_shelf_location_wizard_group_plan_dispatch,model_sf_shelf_location_wizard,sf_base.group_plan_dispatch,1,0,0,0
|
||||||
access_sf_shelf_location_wizard_group_sf_stock_user_group_sf_stock_user,sf_shelf_location_wizard_group_sf_stock_user_group_sf_stock_user,model_sf_shelf_location_wizard,sf_warehouse.group_sf_stock_user,1,0,0,0
|
access_sf_shelf_location_wizard_group_sf_stock_user_group_sf_stock_user,sf_shelf_location_wizard_group_sf_stock_user_group_sf_stock_user,model_sf_shelf_location_wizard,sf_base.group_sf_stock_user,1,0,0,0
|
||||||
access_sf_shelf_location_wizard_group_sf_stock_manager,sf_shelf_location_wizard_group_sf_stock_manager,model_sf_shelf_location_wizard,sf_warehouse.group_sf_stock_manager,1,1,1,0
|
access_sf_shelf_location_wizard_group_sf_stock_manager,sf_shelf_location_wizard_group_sf_stock_manager,model_sf_shelf_location_wizard,sf_base.group_sf_stock_manager,1,1,1,0
|
||||||
|
|
||||||
access_sf_shelf_location_group_sf_tool_user,sf.shelf.location.group_sf_tool_user,model_sf_shelf_location,sf_base.group_sf_tool_user,1,1,0,0
|
access_sf_shelf_location_group_sf_tool_user,sf.shelf.location.group_sf_tool_user,model_sf_shelf_location,sf_base.group_sf_tool_user,1,1,0,0
|
||||||
access_sf_shelf_group_user,sf.shelf.location.group_user,model_sf_shelf_location,base.group_user,1,1,0,0
|
access_sf_shelf_group_user,sf.shelf.location.group_user,model_sf_shelf_location,base.group_user,1,1,0,0
|
||||||
|
|
||||||
|
|
||||||
access_ir_model_group_sf_stock_user,ir_model_group_sf_stock_user,base.model_ir_model,sf_warehouse.group_sf_stock_user,1,1,0,0
|
access_ir_model_group_sf_stock_user,ir_model_group_sf_stock_user,base.model_ir_model,sf_base.group_sf_stock_user,1,1,0,0
|
||||||
|
access_mrp_workorder_group_sf_stock_user,mrp_workorder_group_sf_stock_user,mrp.model_mrp_workorder,sf_base.group_sf_stock_user,1,0,0,0
|
||||||
|
|||||||
|
@@ -91,28 +91,28 @@
|
|||||||
<xpath expr="//form//header//button[@name='action_cancel']" position="replace">
|
<xpath expr="//form//header//button[@name='action_cancel']" position="replace">
|
||||||
<button name="action_cancel"
|
<button name="action_cancel"
|
||||||
attrs="{'invisible': [('state', 'not in', ('assigned', 'confirmed', 'draft', 'waiting'))]}"
|
attrs="{'invisible': [('state', 'not in', ('assigned', 'confirmed', 'draft', 'waiting'))]}"
|
||||||
string="取消" groups="sf_warehouse.group_sf_stock_user" type="object" data-hotkey="z"/>
|
string="取消" groups="sf_base.group_sf_stock_user" type="object" data-hotkey="z"/>
|
||||||
</xpath>
|
</xpath>
|
||||||
<xpath expr="//form//header//button[@name='do_unreserve']" position="replace">
|
<xpath expr="//form//header//button[@name='do_unreserve']" position="replace">
|
||||||
<button name="do_unreserve" string="取消保留" groups="sf_warehouse.group_sf_stock_user"
|
<button name="do_unreserve" string="取消保留" groups="sf_base.group_sf_stock_user"
|
||||||
type="object"
|
type="object"
|
||||||
attrs="{'invisible': ['|', '|', '|', ('picking_type_code', '=', 'incoming'), ('immediate_transfer', '=', True), '&', ('state', '!=', 'assigned'), ('move_type', '!=', 'one'), '&', ('state', 'not in', ('assigned', 'confirmed')), ('move_type', '=', 'one')]}"
|
attrs="{'invisible': ['|', '|', '|', ('picking_type_code', '=', 'incoming'), ('immediate_transfer', '=', True), '&', ('state', '!=', 'assigned'), ('move_type', '!=', 'one'), '&', ('state', 'not in', ('assigned', 'confirmed')), ('move_type', '=', 'one')]}"
|
||||||
data-hotkey="w"/>
|
data-hotkey="w"/>
|
||||||
</xpath>
|
</xpath>
|
||||||
<xpath expr="//form//header//button[@name='button_scrap']" position="replace">
|
<xpath expr="//form//header//button[@name='button_scrap']" position="replace">
|
||||||
<button name="button_scrap" groups="sf_warehouse.group_sf_stock_user" type="object" string="报废"
|
<button name="button_scrap" groups="sf_base.group_sf_stock_user" type="object" string="报废"
|
||||||
attrs="{'invisible': ['|', '&', ('picking_type_code', '=', 'incoming'), ('state', '!=', 'done'), '&', ('picking_type_code', '=', 'outgoing'), ('state', '=', 'done')]}"
|
attrs="{'invisible': ['|', '&', ('picking_type_code', '=', 'incoming'), ('state', '!=', 'done'), '&', ('picking_type_code', '=', 'outgoing'), ('state', '=', 'done')]}"
|
||||||
data-hotkey="y"/>
|
data-hotkey="y"/>
|
||||||
</xpath>
|
</xpath>
|
||||||
<xpath expr="//form//header//button[@name='action_assign']" position="replace">
|
<xpath expr="//form//header//button[@name='action_assign']" position="replace">
|
||||||
<button name="action_assign" attrs="{'invisible': [('show_check_availability', '=', False)]}"
|
<button name="action_assign" attrs="{'invisible': [('show_check_availability', '=', False)]}"
|
||||||
string="检查可用量" type="object" class="oe_highlight"
|
string="检查可用量" type="object" class="oe_highlight"
|
||||||
groups="sf_warehouse.group_sf_stock_user" data-hotkey="q"/>
|
groups="sf_base.group_sf_stock_user" data-hotkey="q"/>
|
||||||
</xpath>
|
</xpath>
|
||||||
<xpath expr="//form//header//button[@name='%(stock.act_stock_return_picking)d']" position="replace">
|
<xpath expr="//form//header//button[@name='%(stock.act_stock_return_picking)d']" position="replace">
|
||||||
<button name="%(stock.act_stock_return_picking)d" string="退回"
|
<button name="%(stock.act_stock_return_picking)d" string="退回"
|
||||||
attrs="{'invisible': [('state', '!=', 'done')]}" type="action"
|
attrs="{'invisible': [('state', '!=', 'done')]}" type="action"
|
||||||
groups="sf_warehouse.group_sf_stock_user" data-hotkey="k"/>
|
groups="sf_base.group_sf_stock_user" data-hotkey="k"/>
|
||||||
</xpath>
|
</xpath>
|
||||||
|
|
||||||
<!-- <xpath expr="//form//sheet//notebook//page//field[@name='move_ids_without_package']" position="before"> -->
|
<!-- <xpath expr="//form//sheet//notebook//page//field[@name='move_ids_without_package']" position="before"> -->
|
||||||
@@ -131,7 +131,7 @@
|
|||||||
<xpath expr="//header//button[@name='action_validate']" position="replace">
|
<xpath expr="//header//button[@name='action_validate']" position="replace">
|
||||||
<button name="action_validate" states="draft" string="确认" type="object" class="oe_highlight"
|
<button name="action_validate" states="draft" string="确认" type="object" class="oe_highlight"
|
||||||
context="{'not_unlink_on_discard': True}" data-hotkey="v"
|
context="{'not_unlink_on_discard': True}" data-hotkey="v"
|
||||||
groups="sf_warehouse.group_sf_stock_user"/>
|
groups="sf_base.group_sf_stock_user"/>
|
||||||
</xpath>
|
</xpath>
|
||||||
</field>
|
</field>
|
||||||
</record>
|
</record>
|
||||||
@@ -143,11 +143,11 @@
|
|||||||
<field name="arch" type="xml">
|
<field name="arch" type="xml">
|
||||||
<xpath expr="//header//button[@name='do_unreserve']" position="replace">
|
<xpath expr="//header//button[@name='do_unreserve']" position="replace">
|
||||||
<button name="do_unreserve" type="object" string="取消保留"
|
<button name="do_unreserve" type="object" string="取消保留"
|
||||||
groups="sf_warehouse.group_sf_stock_user"/>
|
groups="sf_base.group_sf_stock_user"/>
|
||||||
</xpath>
|
</xpath>
|
||||||
<xpath expr="//header//button[@name='action_assign']" position="replace">
|
<xpath expr="//header//button[@name='action_assign']" position="replace">
|
||||||
<button name="action_assign" type="object" string="检查可用量"
|
<button name="action_assign" type="object" string="检查可用量"
|
||||||
groups="sf_warehouse.group_sf_stock_user"/>
|
groups="sf_base.group_sf_stock_user"/>
|
||||||
</xpath>
|
</xpath>
|
||||||
</field>
|
</field>
|
||||||
</record>
|
</record>
|
||||||
|
|||||||
@@ -72,7 +72,7 @@
|
|||||||
parent="stock.menu_warehouse_config"
|
parent="stock.menu_warehouse_config"
|
||||||
sequence="19"
|
sequence="19"
|
||||||
action="sf_shelf_action"
|
action="sf_shelf_action"
|
||||||
groups="sf_warehouse.group_sf_stock_user"/>
|
groups="sf_base.group_sf_stock_user"/>
|
||||||
|
|
||||||
|
|
||||||
<record id="view_shelf_location_tree" model="ir.ui.view">
|
<record id="view_shelf_location_tree" model="ir.ui.view">
|
||||||
@@ -87,7 +87,7 @@
|
|||||||
<!-- options="{'classes': {'unchecked':'warning','checked': 'success'}}"/>-->
|
<!-- options="{'classes': {'unchecked':'warning','checked': 'success'}}"/>-->
|
||||||
<!-- <button name="action_check" string="审核" type="object"-->
|
<!-- <button name="action_check" string="审核" type="object"-->
|
||||||
<!-- attrs="{'invisible': [('check_state','=', 'enable')]}"-->
|
<!-- attrs="{'invisible': [('check_state','=', 'enable')]}"-->
|
||||||
<!-- groups="sf_warehouse.group_sf_stock_manager"-->
|
<!-- groups="sf_base.group_sf_stock_manager"-->
|
||||||
<!-- class="oe_highlight"/>-->
|
<!-- class="oe_highlight"/>-->
|
||||||
</tree>
|
</tree>
|
||||||
</field>
|
</field>
|
||||||
@@ -282,7 +282,7 @@
|
|||||||
<menuitem id="shelf_location_kanban_menu" name="货位看板" parent="stock.menu_stock_root"
|
<menuitem id="shelf_location_kanban_menu" name="货位看板" parent="stock.menu_stock_root"
|
||||||
sequence="51"
|
sequence="51"
|
||||||
action="shelf_location_kanban_action_id"
|
action="shelf_location_kanban_action_id"
|
||||||
groups="sf_warehouse.group_sf_stock_user"/>
|
groups="sf_base.group_sf_stock_user"/>
|
||||||
|
|
||||||
<record id="action_sf_shelf_location" model="ir.actions.act_window">
|
<record id="action_sf_shelf_location" model="ir.actions.act_window">
|
||||||
<field name="name">货位</field>
|
<field name="name">货位</field>
|
||||||
@@ -311,7 +311,7 @@
|
|||||||
<menuitem id="menu_sf_shelf_location" name="货位" parent="stock.menu_warehouse_config"
|
<menuitem id="menu_sf_shelf_location" name="货位" parent="stock.menu_warehouse_config"
|
||||||
sequence="20"
|
sequence="20"
|
||||||
action="action_sf_shelf_location"
|
action="action_sf_shelf_location"
|
||||||
groups="sf_warehouse.group_sf_stock_user"/>
|
groups="sf_base.group_sf_stock_user"/>
|
||||||
|
|
||||||
|
|
||||||
</data>
|
</data>
|
||||||
|
|||||||
Reference in New Issue
Block a user