From ef47597cf9aa238403cf0517ac3d04daf9ec026f Mon Sep 17 00:00:00 2001 From: "jinling.yang" Date: Tue, 19 Dec 2023 17:48:30 +0800 Subject: [PATCH] =?UTF-8?q?1.=E5=BC=BA=E5=88=B6=E5=BF=85=E5=A1=AB=E5=AD=97?= =?UTF-8?q?=E6=AE=B5=20=EF=BC=881=EF=BC=89=E3=80=90=E5=AE=A2=E6=88=B7?= =?UTF-8?q?=E5=90=8D=E7=A7=B0=E3=80=91=E3=80=81=E3=80=90=E7=A8=8EID?= =?UTF-8?q?=E3=80=91=E3=80=81=E3=80=90Email=E3=80=91=E3=80=81=E3=80=90?= =?UTF-8?q?=E9=94=80=E5=94=AE=E5=91=98=E3=80=91=E3=80=81=E3=80=90=E6=A0=87?= =?UTF-8?q?=E7=AD=BE=E3=80=91=E4=B8=BA=E5=BC=BA=E5=88=B6=E5=BF=85=E5=A1=AB?= =?UTF-8?q?=20=EF=BC=882=EF=BC=89=E3=80=90=E7=94=B5=E8=AF=9D=E3=80=91?= =?UTF-8?q?=E3=80=81=E3=80=90=E6=89=8B=E6=9C=BA=E3=80=91=E4=B8=A4=E4=B8=AA?= =?UTF-8?q?=E5=AD=97=E6=AE=B5=E6=8E=A7=E5=88=B6=E4=B8=BA=E4=BA=8C=E9=80=89?= =?UTF-8?q?=E4=B8=80=E5=BC=BA=E5=88=B6=E5=BF=85=E5=A1=AB=202.=E5=AE=A2?= =?UTF-8?q?=E6=88=B7=E6=A0=A1=E9=AA=8C=E8=A7=84=E5=88=99=EF=BC=9A=20?= =?UTF-8?q?=EF=BC=881=EF=BC=89=E3=80=90=E5=AE=A2=E6=88=B7=E5=90=8D?= =?UTF-8?q?=E7=A7=B0=E3=80=91+=E3=80=90=E7=A8=8EID=E3=80=91=E4=B8=A4?= =?UTF-8?q?=E4=B8=AA=E5=AD=97=E6=AE=B5=E5=88=86=E5=88=AB=E4=B8=8E=E5=B7=B2?= =?UTF-8?q?=E7=BB=8F=E5=88=9B=E5=BB=BA=E5=AE=A2=E6=88=B7=E7=9A=84=E6=A1=A3?= =?UTF-8?q?=E6=A1=88=E4=BF=A1=E6=81=AF=E8=BF=9B=E8=A1=8C=E6=A0=A1=E9=AA=8C?= =?UTF-8?q?=EF=BC=8C=E4=BB=BB=E6=84=8F=E4=B8=80=E9=A1=B9100%=E5=90=BB?= =?UTF-8?q?=E5=90=88=E5=88=99=E4=B8=8D=E5=85=81=E8=AE=B8=E5=88=9B=E5=BB=BA?= =?UTF-8?q?=E5=AE=A2=E6=88=B7=203.=E5=BC=BA=E5=88=B6=E5=BF=85=E5=A1=AB?= =?UTF-8?q?=E5=AD=97=E6=AE=B5=20=EF=BC=881=EF=BC=89=E3=80=90=E5=90=8D?= =?UTF-8?q?=E7=A7=B0=E3=80=91=E3=80=81=E3=80=90Email=E3=80=91=E3=80=81?= =?UTF-8?q?=E3=80=90=E9=94=80=E5=94=AE=E5=91=98=E3=80=91=E4=B8=BA=E5=BC=BA?= =?UTF-8?q?=E5=88=B6=E5=BF=85=E5=A1=AB=20=EF=BC=882=EF=BC=89=E3=80=90?= =?UTF-8?q?=E7=94=B5=E8=AF=9D=E3=80=91=E3=80=81=E3=80=90=E6=89=8B=E6=9C=BA?= =?UTF-8?q?=E3=80=91=E4=B8=A4=E4=B8=AA=E5=AD=97=E6=AE=B5=E6=8E=A7=E5=88=B6?= =?UTF-8?q?=E4=B8=BA=E4=BA=8C=E9=80=89=E4=B8=80=E5=BC=BA=E5=88=B6=E5=BF=85?= =?UTF-8?q?=E5=A1=AB=204.=E4=B8=AA=E4=BA=BA=E6=A0=A1=E9=AA=8C=E8=A7=84?= =?UTF-8?q?=E5=88=99=EF=BC=9A=20=EF=BC=881=EF=BC=89=E3=80=90=E5=90=8D?= =?UTF-8?q?=E7=A7=B0=E3=80=91+=E3=80=90Email=E3=80=91=E4=B8=A4=E4=B8=AA?= =?UTF-8?q?=E5=AD=97=E6=AE=B5=E5=88=86=E5=88=AB=E4=B8=8E=E5=B7=B2=E7=BB=8F?= =?UTF-8?q?=E5=88=9B=E5=BB=BA=E5=AE=A2=E6=88=B7=E7=9A=84=E6=A1=A3=E6=A1=88?= =?UTF-8?q?=E4=BF=A1=E6=81=AF=E8=BF=9B=E8=A1=8C=E6=A0=A1=E9=AA=8C=EF=BC=8C?= =?UTF-8?q?=E4=B8=A4=E9=A1=B9=E4=B8=80=E8=B5=B7100%=E5=90=BB=E5=90=88?= =?UTF-8?q?=E5=88=99=E4=B8=8D=E5=85=81=E8=AE=B8=E5=88=9B=E5=BB=BA=E4=B8=AA?= =?UTF-8?q?=E4=BA=BA=205.=E4=B8=8B=E6=8B=89=E4=BB=85=E6=98=BE=E7=A4=BA?= =?UTF-8?q?=E9=94=80=E5=94=AE=E4=BA=BA=E5=91=98=E7=9A=84=E8=B4=A6=E6=88=B7?= =?UTF-8?q?=E7=94=A8=E6=88=B7=E5=90=8D(=E9=9D=9E=E7=9B=B8=E5=85=B3?= =?UTF-8?q?=E7=94=A8=E6=88=B7=E5=8F=8A=E5=A7=93=E5=90=8D=E4=B8=8D=E6=98=BE?= =?UTF-8?q?=E7=A4=BA)=EF=BC=8C=E5=AD=97=E6=AE=B5=E4=B8=BA=E5=BC=BA?= =?UTF-8?q?=E5=88=B6=E5=BF=85=E5=A1=AB=0D=EF=BC=881=EF=BC=89=E5=88=9B?= =?UTF-8?q?=E5=BB=BA=E4=BA=BA=E7=9A=84=E6=9D=83=E9=99=90=E4=B8=BA=E9=94=80?= =?UTF-8?q?=E5=94=AE=E7=BB=8F=E7=90=86=EF=BC=8C=E5=88=99=E3=80=90=E9=94=80?= =?UTF-8?q?=E5=94=AE=E5=91=98=E3=80=91=E5=AD=97=E6=AE=B5=E8=87=AA=E5=8A=A8?= =?UTF-8?q?=E9=BB=98=E8=AE=A4=E4=B8=BA=E5=BD=93=E5=89=8D=E8=B4=A6=E5=8F=B7?= =?UTF-8?q?=E7=9A=84=E7=94=A8=E6=88=B7=E5=A7=93=E5=90=8D=EF=BC=8C=E4=B8=94?= =?UTF-8?q?=E4=B8=8D=E5=8F=AF=E4=BF=AE=E6=94=B9=0D=EF=BC=882=EF=BC=89?= =?UTF-8?q?=E5=88=9B=E5=BB=BA=E4=BA=BA=E7=9A=84=E6=9D=83=E9=99=90=E4=B8=BA?= =?UTF-8?q?=E9=94=80=E5=94=AE=E6=80=BB=E7=9B=91=EF=BC=8C=E5=88=99=E3=80=90?= =?UTF-8?q?=E9=94=80=E5=94=AE=E5=91=98=E3=80=91=E5=AD=97=E6=AE=B5=E8=87=AA?= =?UTF-8?q?=E5=8A=A8=E9=BB=98=E8=AE=A4=E4=B8=BA=E5=BD=93=E5=89=8D=E8=B4=A6?= =?UTF-8?q?=E5=8F=B7=E7=9A=84=E7=94=A8=E6=88=B7=E5=A7=93=E5=90=8D=EF=BC=8C?= =?UTF-8?q?=E5=8F=AF=E4=B8=8B=E6=8B=89=E9=80=89=E6=8B=A9=EF=BC=8C=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=E9=94=80=E5=94=AE=E4=BA=BA=E5=91=98=E5=A7=93=E5=90=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sf_manufacturing/models/product_template.py | 4 +-- sf_quality/security/ir.model.access.csv | 7 +++- sf_sale/__manifest__.py | 1 + sf_sale/models/auto_quatotion_common.py | 2 +- sf_sale/models/quick_easy_order.py | 4 +-- sf_sale/models/sale_order.py | 38 ++++++++++++++++++++- sf_sale/security/group_security.xml | 9 ++--- sf_sale/security/ir.model.access.csv | 19 +++++++---- sf_sale/views/res_partner_view.xml | 35 +++++++++++++++++++ 9 files changed, 102 insertions(+), 17 deletions(-) create mode 100644 sf_sale/views/res_partner_view.xml diff --git a/sf_manufacturing/models/product_template.py b/sf_manufacturing/models/product_template.py index 285d43f0..3233e674 100644 --- a/sf_manufacturing/models/product_template.py +++ b/sf_manufacturing/models/product_template.py @@ -6,8 +6,8 @@ import os from odoo import models, fields, api, _ from odoo.exceptions import ValidationError from odoo.modules import get_resource_path -from OCC.Extend.DataExchange import read_step_file -from OCC.Extend.DataExchange import write_stl_file +# from OCC.Extend.DataExchange import read_step_file +# from OCC.Extend.DataExchange import write_stl_file class ResProductMo(models.Model): diff --git a/sf_quality/security/ir.model.access.csv b/sf_quality/security/ir.model.access.csv index 0ed30ac1..d59ff730 100644 --- a/sf_quality/security/ir.model.access.csv +++ b/sf_quality/security/ir.model.access.csv @@ -53,8 +53,13 @@ access_product_template_group_equipment_manager,product_template_group_equipment 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_point_test_type_group_quality,quality_point_test_type_group_quality,quality.model_quality_point_test_type,sf_base.group_quality,1,0,0,0 +access_quality_point_test_type_group_quality_director,quality_point_test_type_group_quality_director,quality.model_quality_point_test_type,sf_base.group_quality_director,1,0,0,0 + +access_quality_point_test_type_group_quality,quality_point_test_type_group_quality,quality.model_quality_point_test_type,sf_base.group_quality,1,0,0,0 +access_quality_point_test_type_group_quality_director,quality_point_test_type_group_quality_director,quality.model_quality_point_test_type,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/__manifest__.py b/sf_sale/__manifest__.py index f30bb014..6c65a7d5 100644 --- a/sf_sale/__manifest__.py +++ b/sf_sale/__manifest__.py @@ -17,6 +17,7 @@ 'wizard/sale_order_wizard_views.xml', 'views/sale_team.xml', 'views/sale_order_view.xml', + 'views/res_partner_view.xml', 'views/purchase_order_view.xml', 'views/quick_easy_order_view.xml' ], diff --git a/sf_sale/models/auto_quatotion_common.py b/sf_sale/models/auto_quatotion_common.py index 09ea3f0f..10b83aed 100644 --- a/sf_sale/models/auto_quatotion_common.py +++ b/sf_sale/models/auto_quatotion_common.py @@ -2,7 +2,7 @@ import logging from odoo.modules import get_resource_path from odoo import fields, models, api -from quatotion import readSql, feature_recognize, auto_quatotion +# from quatotion import readSql, feature_recognize, auto_quatotion __author__ = 'jinling.yang' _logger = logging.getLogger(__name__) diff --git a/sf_sale/models/quick_easy_order.py b/sf_sale/models/quick_easy_order.py index 1e5f274c..7419cc9a 100644 --- a/sf_sale/models/quick_easy_order.py +++ b/sf_sale/models/quick_easy_order.py @@ -5,8 +5,8 @@ import os import json from datetime import datetime import requests -from OCC.Extend.DataExchange import read_step_file -from OCC.Extend.DataExchange import write_stl_file +# from OCC.Extend.DataExchange import read_step_file +# from OCC.Extend.DataExchange import write_stl_file from odoo import models, fields, api from odoo.modules import get_resource_path from odoo.exceptions import ValidationError, UserError diff --git a/sf_sale/models/sale_order.py b/sf_sale/models/sale_order.py index 93bf5c10..aad75979 100644 --- a/sf_sale/models/sale_order.py +++ b/sf_sale/models/sale_order.py @@ -1,7 +1,7 @@ import datetime import base64 from odoo import models, fields, api -from odoo.osv import expression +from odoo.exceptions import UserError class ReSaleOrder(models.Model): @@ -86,6 +86,24 @@ class RePurchaseOrder(models.Model): class ResPartnerToSale(models.Model): _inherit = 'res.partner' + @api.constrains('name') + def _check_name(self): + obj = self.sudo().search([('name', '=', self.name), ('id', '!=', self.id)]) + if obj: + raise UserError('该名称已存在,请重新输入') + + @api.constrains('vat') + def _check_vat(self): + obj = self.sudo().search([('vat', '=', self.vat), ('id', '!=', self.id)]) + if obj: + raise UserError('该税ID已存在,请重新输入') + + @api.constrains('email') + def _check_email(self): + obj = self.sudo().search([('email', '=', self.email), ('id', '!=', self.id)]) + if obj: + raise UserError('该邮箱已存在,请重新输入') + @api.model def _name_search(self, name, args=None, operator='ilike', limit=100, name_get_uid=None): if self._context.get('is_customer'): @@ -95,3 +113,21 @@ class ResPartnerToSale(models.Model): 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) + + @api.onchange('user_id') + def _get_salesman(self): + self.user_id = self.env.user.id + + +class ResUserToSale(models.Model): + _inherit = 'res.users' + + @api.model + def _name_search(self, name, args=None, operator='ilike', limit=100, name_get_uid=None): + if self._context.get('is_sale'): + if self.env.user.has_group('sf_base.group_sale_director'): + domain = [] + elif self.env.user.has_group('sf_base.group_sale_salemanager'): + domain = [('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 5afd8196..1c5b1659 100644 --- a/sf_sale/security/group_security.xml +++ b/sf_sale/security/group_security.xml @@ -23,7 +23,7 @@ 销售总监查看所有客户 - [(1,'=',1),('customer_rank','=',1)] + [(1,'=',1),('customer_rank','>',0)] @@ -32,7 +32,8 @@ 销售经理查看自己的客户 - ['|',('user_id','=',user.id),('create_uid', '=',user.id)] + [('user_id','=',user.id),('customer_rank','>',0)] + @@ -73,7 +74,7 @@ 采购总监查看所有供应商 - [(1,'=',1)] + [(1,'=',1),('supplier_rank','>', 0)] @@ -82,7 +83,7 @@ 采购岗查看自己的供应商 - ['|',('user_id','=',user.id),('create_uid', '=',user.id)] + [('user_id','=',user.id),('supplier_rank','>', 0)] diff --git a/sf_sale/security/ir.model.access.csv b/sf_sale/security/ir.model.access.csv index 7e697a8f..92b4359b 100644 --- a/sf_sale/security/ir.model.access.csv +++ b/sf_sale/security/ir.model.access.csv @@ -38,13 +38,20 @@ access_uom_category_group_purchase_director,uom_category_group_purchase_director 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_account_move_line_group_purchase,account_move_line_group_purchase,account.model_account_move_line,sf_base.group_purchase,1,1,1,0 +access_account_move_line_group_purchase_director,account_move_line_group_purchase_director,account.model_account_move_line,sf_base.group_purchase_director,1,1,1,0 + +access_res_users_group_purchase,res_user_group_purchase,model_res_users,sf_base.group_purchase,1,1,1,0 +access_res_users_group_purchase_director,res_user_group_purchase_director,model_res_users,sf_base.group_purchase_director,1,1,1,0 +access_res_users_sale_salemanager,res_user_group_sale_salemanager,model_res_users,sf_base.group_sale_salemanager,1,0,0,0 +access_res_users_group_sale_director,res_user_group_sale_director,model_res_users,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/res_partner_view.xml b/sf_sale/views/res_partner_view.xml new file mode 100644 index 00000000..9902db34 --- /dev/null +++ b/sf_sale/views/res_partner_view.xml @@ -0,0 +1,35 @@ + + + + + res.partner.form.inherit.sf + res.partner + + + + + + + + + + {'required': [('phone', '=', False),('company_type','=', 'company')]} + + + + {'required': [('mobile', '=', False),('company_type','=', 'company')]} + + + + + + + {'required': [('company_type', '=', 'company')]} + + + + + + + \ No newline at end of file