diff --git a/sf_base/security/group_security.xml b/sf_base/security/group_security.xml
index 72310cfc..dd78c2c0 100644
--- a/sf_base/security/group_security.xml
+++ b/sf_base/security/group_security.xml
@@ -60,7 +60,6 @@
销售总监
-
@@ -72,7 +71,7 @@
计划总监
-
+
diff --git a/sf_quality/__manifest__.py b/sf_quality/__manifest__.py
index d6f946e1..cec1a0f9 100644
--- a/sf_quality/__manifest__.py
+++ b/sf_quality/__manifest__.py
@@ -13,7 +13,7 @@
'author': 'jikimo',
'website': 'https://sf.cs.jikimo.com',
# 此处依赖sf_manufacturing是因为我要重写其中的一个字段operation_id的string,故需要sf_manufacturing先安装
- 'depends': ['quality_control', 'sf_maintenance'],
+ 'depends': ['quality_control'],
'data': [
'security/ir.model.access.csv',
# 'views/view.xml'
diff --git a/sf_quality/security/ir.model.access.csv b/sf_quality/security/ir.model.access.csv
index 0d2b16ef..0ed30ac1 100644
--- a/sf_quality/security/ir.model.access.csv
+++ b/sf_quality/security/ir.model.access.csv
@@ -39,6 +39,20 @@ access_quality_alert_team_group_sf_tool_user,quality_alert_team_group_sf_tool_us
access_quality_alert_team_group_sf_order_user,quality_alert_team_group_sf_order_user,quality.model_quality_alert_team,sf_base.group_sf_order_user,1,0,0,0
access_quality_alert_team_group_sf_mrp_manager,quality_alert_team_group_sf_mrp_manager,quality.model_quality_alert_team,sf_base.group_sf_mrp_manager,1,0,0,0
+access_product_template_group_quality,product_template_group_quality,product.model_product_template,sf_base.group_quality,1,0,0,0
+access_product_template_group_quality_director,product_template_group_quality_director,product.model_product_template,sf_base.group_quality_director,1,0,0,0
+access_product_template_group_plan_dispatch,product_template_group_plan_dispatch,product.model_product_template,sf_base.group_plan_dispatch,1,0,0,0
+access_product_template_group_plan_director,product_template_group_plan_director,product.model_product_template,sf_base.group_plan_director,1,0,0,0
+access_product_template_group_sf_equipment_user,product_template_group_sf_equipment_user,product.model_product_template,sf_base.group_sf_equipment_user,1,0,0,0
+access_product_template_group_sf_tool_user,product_template_group_sf_tool_user,product.model_product_template,sf_base.group_sf_tool_user,1,0,0,0
+access_product_template_group_sf_order_user,product_template_group_sf_order_user,product.model_product_template,sf_base.group_sf_order_user,1,0,0,0
+access_product_template_group_sf_mrp_manager,product_template_group_sf_mrp_manager,product.model_product_template,sf_base.group_sf_mrp_manager,1,0,0,0
+access_product_template_group_equipment_user,product_template_group_equipment_user,product.model_product_template,sf_maintenance.sf_group_equipment_user,1,0,0,0
+access_product_template_group_equipment_manager,product_template_group_equipment_manager,product.model_product_template,sf_maintenance.sf_group_equipment_manager,1,0,0,0
+
+access_quality_alert_stage_group_quality,quality_alert_stage_group_quality,quality.model_quality_alert_stage,sf_base.group_quality,1,0,0,0
+access_quality_alert_stage_group_quality_director,quality_alert_stage_group_quality_director,quality.model_quality_alert_stage,sf_base.group_quality_director,1,0,0,0
+
access_quality_alert_stage,quality.alert.stage,quality.model_quality_alert_stage,sf_base.group_plan_dispatch,1,0,0,0
diff --git a/sf_sale/__init__.py b/sf_sale/__init__.py
index 0650744f..a22f9844 100644
--- a/sf_sale/__init__.py
+++ b/sf_sale/__init__.py
@@ -1 +1,3 @@
from . import models
+from . import wizard
+
diff --git a/sf_sale/__manifest__.py b/sf_sale/__manifest__.py
index a20be38b..f30bb014 100644
--- a/sf_sale/__manifest__.py
+++ b/sf_sale/__manifest__.py
@@ -14,6 +14,7 @@
'data': [
'security/group_security.xml',
'security/ir.model.access.csv',
+ 'wizard/sale_order_wizard_views.xml',
'views/sale_team.xml',
'views/sale_order_view.xml',
'views/purchase_order_view.xml',
diff --git a/sf_sale/models/feature.sqlite b/sf_sale/models/feature.sqlite
index f03f3437..e69de29b 100644
Binary files a/sf_sale/models/feature.sqlite and b/sf_sale/models/feature.sqlite differ
diff --git a/sf_sale/models/price.sqlite b/sf_sale/models/price.sqlite
index 50faad92..e69de29b 100644
Binary files a/sf_sale/models/price.sqlite and b/sf_sale/models/price.sqlite differ
diff --git a/sf_sale/models/process_time.db b/sf_sale/models/process_time.db
index 0b48a3da..e69de29b 100644
Binary files a/sf_sale/models/process_time.db and b/sf_sale/models/process_time.db differ
diff --git a/sf_sale/models/sale_order.py b/sf_sale/models/sale_order.py
index ec994fed..93bf5c10 100644
--- a/sf_sale/models/sale_order.py
+++ b/sf_sale/models/sale_order.py
@@ -1,6 +1,7 @@
import datetime
import base64
-from odoo import models, fields
+from odoo import models, fields, api
+from odoo.osv import expression
class ReSaleOrder(models.Model):
@@ -81,7 +82,16 @@ class RePurchaseOrder(models.Model):
check_status = fields.Selection([('unchecked', '未审核'), ('checked', '已审核')], '审核状态', default='unchecked')
- # 审核
- def action_check(self):
- self.check_status = 'checked'
+class ResPartnerToSale(models.Model):
+ _inherit = 'res.partner'
+
+ @api.model
+ def _name_search(self, name, args=None, operator='ilike', limit=100, name_get_uid=None):
+ if self._context.get('is_customer'):
+ if self.env.user.has_group('sf_base.group_sale_director'):
+ domain = [('customer_rank', '=', 1)]
+ else:
+ domain = [('user_id', '=', self.env.user.id)]
+ return self._search(domain, limit=limit, access_rights_uid=name_get_uid)
+ return super()._name_search(name, args, operator, limit, name_get_uid)
diff --git a/sf_sale/security/group_security.xml b/sf_sale/security/group_security.xml
index f40225e1..5afd8196 100644
--- a/sf_sale/security/group_security.xml
+++ b/sf_sale/security/group_security.xml
@@ -11,7 +11,7 @@
- 销售总监
+ 销售总监查看所有的订单
[(1,'=',1)]
@@ -20,20 +20,30 @@
-
-
-
-
-
-
-
-
+
+ 销售总监查看所有客户
+
+ [(1,'=',1),('customer_rank','=',1)]
+
+
+
+
+
+
+ 销售经理查看自己的客户
+
+ ['|',('user_id','=',user.id),('create_uid', '=',user.id)]
+
+
+
+
+
销售经理查看自己的订单
- ['|',('partner_id','=',user.partner_id.id),('create_uid', '=',user.id)]
+ [('user_id', '=',user.id)]
@@ -60,7 +70,7 @@
-
+
采购总监查看所有供应商
[(1,'=',1)]
diff --git a/sf_sale/security/ir.model.access.csv b/sf_sale/security/ir.model.access.csv
index c4900a5f..7e697a8f 100644
--- a/sf_sale/security/ir.model.access.csv
+++ b/sf_sale/security/ir.model.access.csv
@@ -8,6 +8,40 @@ access_sale_order_line_director,sale_order_line_director,model_sale_order_line,s
access_crm_team_member_manager,crm_team_manager,sales_team.model_crm_team,sf_base.group_sale_director,1,1,1,0
access_crm_team_member_director,crm_team_member_director,sales_team.model_crm_team_member,sf_base.group_sale_director,1,1,1,0
access_res_users,res_users,base.model_res_users,sf_base.group_sale_director,1,1,1,0
+access_product_template_group_sale_salemanager,product_template_group_sale_salemanager,product.model_product_template,sf_base.group_sale_salemanager,1,0,0,0
+access_product_template_group_sale_director,product_template_group_sale_director,product.model_product_template,sf_base.group_sale_director,1,0,0,0
+access_product_template_group_purchase,product_template_group_purchase,product.model_product_template,sf_base.group_purchase,1,0,0,0
+access_product_template_group_purchase_director,product_template_group_purchase_director,product.model_product_template,sf_base.group_purchase_director,1,0,0,0
+access_stock_picking_group_sale_salemanager,stock_picking_group_sale_salemanager,stock.model_stock_picking,sf_base.group_sale_salemanager,1,0,0,0
+access_stock_picking_group_sale_director,stock_picking_group_sale_director,stock.model_stock_picking,sf_base.group_sale_director,1,0,0,0
+access_stock_picking_group_purchase,stock_picking_group_purchase,stock.model_stock_picking,sf_base.group_purchase,1,0,0,0
+access_stock_picking_group_purchase_director,stock_picking_group_purchase_director,stock.model_stock_picking,sf_base.group_purchase_director,1,0,0,0
+access_account_move_group_sale_salemanager,account_move_group_sale_salemanager,account.model_account_move,sf_base.group_sale_salemanager,1,0,0,0
+access_account_move_group_sale_director,account_move_group_sale_director,account.model_account_move,sf_base.group_sale_director,1,0,0,0
+access_resource_resource_group_sale_director,resource_resource_group_sale_director,resource.model_resource_resource,sf_base.group_sale_director,1,1,1,0
+
+access_mrp_bom_group_purchase,mrp_bom_group_purchase,mrp.model_mrp_bom,sf_base.group_purchase,1,0,0,0
+access_mrp_bom_group_purchase_director,mrp_bom_group_purchase_director,mrp.model_mrp_bom,sf_base.group_purchase_director,1,0,0,0
+access_stock_move_group_purchase,stock_move_group_purchase,stock.model_stock_move,sf_base.group_purchase,1,0,0,0
+access_stock_move_group_purchase_director,stock_move_group_purchase_director,stock.model_stock_move,sf_base.group_purchase_director,1,0,0,0
+
+access_uom_uom_group_sale_salemanager,uom_uom_group_sale_salemanager,uom.model_uom_uom,sf_base.group_sale_salemanager,1,0,0,0
+access_uom_uom_group_sale_director,uom_uom_group_sale_director,uom.model_uom_uom,sf_base.group_sale_director,1,1,1,0
+access_uom_uom_group_purchase,uom_uom_group_purchase,uom.model_uom_uom,sf_base.group_purchase,1,0,0,0
+access_uom_uom_group_purchase_director,uom_uom_group_purchase_director,uom.model_uom_uom,sf_base.group_purchase_director,1,0,0,0
+
+access_uom_category_group_sale_salemanager,uom_category_group_sale_salemanager,uom.model_uom_category,sf_base.group_sale_salemanager,1,0,0,0
+access_uom_category_group_sale_director,uom_category_group_sale_director,uom.model_uom_category,sf_base.group_sale_director,1,1,1,0
+access_uom_category_group_purchase,uom_category_group_purchase,uom.model_uom_category,sf_base.group_purchase,1,0,0,0
+access_uom_category_group_purchase_director,uom_category_group_purchase_director,uom.model_uom_category,sf_base.group_purchase_director,1,0,0,0
+
+access_sale_order_check_wizard_group_sale_salemanager,sale_order_check_wizard_group_sale_salemanager,model_sale_order_check_wizard,sf_base.group_sale_salemanager,1,1,1,0
+access_sale_order_check_wizard_group_sale_director,sale_order_check_wizard_group_sale_director,model_sale_order_check_wizard,sf_base.group_sale_director,1,1,1,0
+
+
+
+
+
access_sale_order,sale_order,model_sale_order,sf_base.group_plan_dispatch,1,0,0,0
diff --git a/sf_sale/views/sale_order_view.xml b/sf_sale/views/sale_order_view.xml
index 0abe7989..6df5d955 100644
--- a/sf_sale/views/sale_order_view.xml
+++ b/sf_sale/views/sale_order_view.xml
@@ -2,6 +2,25 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
sale.order.form.inherit.sf
sale.order
@@ -9,13 +28,11 @@
-
-
- sf_base.group_sale_director
-
{'invisible': [('check_status', '=', 'unchecked'),('state', 'not in',
['sent'])]}
@@ -26,6 +43,10 @@
['draft'])]}
+
+
+
diff --git a/sf_sale/wizard/__init__.py b/sf_sale/wizard/__init__.py
new file mode 100644
index 00000000..60c63c76
--- /dev/null
+++ b/sf_sale/wizard/__init__.py
@@ -0,0 +1 @@
+from . import sale_order_wizard
diff --git a/sf_sale/wizard/sale_order_wizard.py b/sf_sale/wizard/sale_order_wizard.py
new file mode 100644
index 00000000..544b5abe
--- /dev/null
+++ b/sf_sale/wizard/sale_order_wizard.py
@@ -0,0 +1,16 @@
+# -*- coding: utf-8 -*-
+from odoo import models, api, fields
+
+
+class saleOrderCheckWizard(models.TransientModel):
+ _name = 'sale.order.check.wizard'
+
+ _description = '报价/销售订单审核向导'
+
+ order_id = fields.Many2one('sale.order')
+ check_state = fields.Selection([('pass', '通过'), ('back', '退回')], '审核状态', default='pass')
+ check_audit = fields.Text('审核意见')
+
+ def submit(self):
+ self.order_id.check_status = 'unchecked' if not self.check_state == 'pass' else 'checked'
+ self.order_id.message_ids = '1'
diff --git a/sf_sale/wizard/sale_order_wizard_views.xml b/sf_sale/wizard/sale_order_wizard_views.xml
new file mode 100644
index 00000000..db6742fc
--- /dev/null
+++ b/sf_sale/wizard/sale_order_wizard_views.xml
@@ -0,0 +1,28 @@
+
+
+
+ sale.order.check.wizard.form.view
+ sale.order.check.wizard
+
+
+
+
+
+
+ 销售订单审核向导
+ sale.order.check.wizard
+ form
+ new
+
+
+
\ No newline at end of file
diff --git a/sf_tool_management/__init__.py b/sf_tool_management/__init__.py
index bb4c0be1..fb05df81 100644
--- a/sf_tool_management/__init__.py
+++ b/sf_tool_management/__init__.py
@@ -1,20 +1,15 @@
# -*-coding:utf-8-*-
from . import models
from . import wizard
+from odoo import api, SUPERUSER_ID
-# from odoo import api, SUPERUSER_ID
-# import logging
-# _logger = logging.getLogger(__name__)
-#
-#
-# def _sf_tool_management_post_install(cr, registry):
-# # 这里执行你想要在安装模块时执行的操作,包括调用和执行模型的方法
-# env = api.Environment(cr, SUPERUSER_ID, {})
-#
-# # 获取需要执行方法的模型
-# model_obj = env['sf.machine.table.tool.changing.apply']
-# logging.info('post_install方法执行了')
-# print('post_install方法执行了')
-#
-# # 调用模型方法
-# model_obj.create_tool_change_application()
+
+def _post_install(cr, registry):
+ # 这里执行你想要在安装模块时执行的操作,包括调用和执行模型的方法
+ env = api.Environment(cr, SUPERUSER_ID, {})
+
+ # 获取需要执行方法的模型
+ model_obj = env['sf.machine.table.tool.changing.apply']
+
+ # 调用模型方法
+ model_obj.create_tool_change_application()
diff --git a/sf_tool_management/__manifest__.py b/sf_tool_management/__manifest__.py
index a3350a58..c3bb2e19 100644
--- a/sf_tool_management/__manifest__.py
+++ b/sf_tool_management/__manifest__.py
@@ -21,6 +21,7 @@
],
'demo': [
],
+ 'post_init_hook': '_post_install',
'assets': {
'web.assets_qweb': [
diff --git a/sf_tool_management/models/base.py b/sf_tool_management/models/base.py
index 71cb41f5..54834390 100644
--- a/sf_tool_management/models/base.py
+++ b/sf_tool_management/models/base.py
@@ -477,7 +477,17 @@ class MachineTableToolChangingApply(models.Model):
[('name', '=', self.name.id)]).write({'status': '0'})
def create_tool_change_application(self):
- print("调用了create_tool_change_application()")
+ maintenance_equipment_ids = self.env['maintenance.equipment'].sudo().search(
+ [('product_template_ids', '!=', False)])
+ tool_changing_apply = self.env['sf.machine.table.tool.changing.apply']
+ if maintenance_equipment_ids:
+ for maintenance_equipment_id in maintenance_equipment_ids:
+ if maintenance_equipment_id.product_template_ids:
+ for product_template_id in maintenance_equipment_id.product_template_ids:
+ tool_changing_apply.sudo().create({
+ 'maintenance_equipment_id': product_template_id.equipment_id.id,
+ 'cutter_spacing_code_id': product_template_id.id
+ })
class CAMWorkOrderProgramKnifePlan(models.Model):
diff --git a/sf_tool_management/views/tool_base_views.xml b/sf_tool_management/views/tool_base_views.xml
index 3227b185..0553eb97 100644
--- a/sf_tool_management/views/tool_base_views.xml
+++ b/sf_tool_management/views/tool_base_views.xml
@@ -533,7 +533,7 @@
'default_replacement_extension_length': extension_length,
'default_replacement_effective_length': effective_length,
}"
- attrs="{'invisible': ['|',('status', '!=', '0'), ('functional_tool_name_id', '=', False)]}"
+ attrs="{'invisible': [('status', '!=', '0')]}"
class="btn-primary"
/>
sf.functional.tool.assembly
-
+
@@ -907,7 +907,7 @@
功能刀具组装
sf.functional.tool.assembly
-