diff --git a/sf_manufacturing/models/product_template.py b/sf_manufacturing/models/product_template.py
index 3233e674..285d43f0 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_sale/models/auto_quatotion_common.py b/sf_sale/models/auto_quatotion_common.py
index 10b83aed..09ea3f0f 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 7419cc9a..1e5f274c 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 38684213..04a2d3f2 100644
--- a/sf_sale/models/sale_order.py
+++ b/sf_sale/models/sale_order.py
@@ -101,23 +101,23 @@ class RePurchaseOrder(models.Model):
vals['check_status'] = 'approved'
return super().write(vals)
- @api.model_create_multi
- def create(self, vals_list):
- # res = super().create(vals_list)
- if self.env.user.has_group('sf_base.group_purchase'):
- view = self.env.ref('sf_sale.action_purchase_order_submit_wizard')
- return {
- 'name': _('确认?'),
- 'type': 'ir.actions.act_window',
- 'view_mode': 'form',
- 'res_model': 'purchase.order.wizard',
- 'views': [(view.id, 'form')],
- 'view_id': view.id,
- 'target': 'new',
- 'context': dict(self.env.context),
- }
- res = super().create(vals_list)
- return res
+ # @api.model_create_multi
+ # def create(self, vals_list):
+ # # res = super().create(vals_list)
+ # if self.env.user.has_group('sf_base.group_purchase'):
+ # view = self.env.ref('sf_sale.action_purchase_order_submit_wizard')
+ # return {
+ # 'name': _('确认?'),
+ # 'type': 'ir.actions.act_window',
+ # 'view_mode': 'form',
+ # 'res_model': 'purchase.order.wizard',
+ # 'views': [(view.id, 'form')],
+ # 'view_id': view.id,
+ # 'target': 'new',
+ # 'context': dict(self.env.context),
+ # }
+ # res = super().create(vals_list)
+ # return res
class ResPartnerToSale(models.Model):
@@ -139,9 +139,10 @@ class ResPartnerToSale(models.Model):
@api.constrains('email')
def _check_email(self):
- obj = self.sudo().search([('email', '=', self.email), ('id', '!=', self.id)])
- if obj:
- raise UserError('该邮箱已存在,请重新输入')
+ if self.customer_rank > 0:
+ 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):
diff --git a/sf_sale/security/group_security.xml b/sf_sale/security/group_security.xml
index 67478aa6..8315c30e 100644
--- a/sf_sale/security/group_security.xml
+++ b/sf_sale/security/group_security.xml
@@ -66,7 +66,7 @@
['|',('user_id','=',user.id),('create_uid', '=',user.id)]
-
+
diff --git a/sf_sale/security/ir.model.access.csv b/sf_sale/security/ir.model.access.csv
index f6164542..9009d87d 100644
--- a/sf_sale/security/ir.model.access.csv
+++ b/sf_sale/security/ir.model.access.csv
@@ -51,6 +51,9 @@ access_mrp_bom_byproduct_group_purchase_director,mrp_bom_byproduct_group_purchas
access_mrp_bom_byproduct_group_sale_salemanager,mrp_bom_byproduct_group_sale_salemanager,mrp.model_mrp_bom_byproduct,sf_base.group_sale_salemanager,1,0,0,0
access_mrp_bom_byproduct_group_sale_director,mrp_bom_byproduct_group_sale_director,mrp.model_mrp_bom_byproduct,sf_base.group_sale_director,1,1,1,0
+access_purchase_order_group_purchase,purchase_order_group_purchase,purchase.model_purchase_order,sf_base.group_purchase,1,1,1,0
+access_purchase_order_group_purchase_director,purchase_order_group_purchase_director,purchase.model_purchase_order,sf_base.group_purchase_director,1,1,1,0
+
access_purchase_order_line_group_purchase,purchase_order_line_group_purchase,purchase_stock.model_purchase_order_line,sf_base.group_purchase,1,1,1,0
access_purchase_order_line_group_purchase_director,purchase_order_line_group_purchase_director,purchase_stock.model_purchase_order_line,sf_base.group_purchase_director,1,1,1,0
access_purchase_order_line_group_sale_salemanager,purchase_order_line_group_sale_salemanager,purchase_stock.model_purchase_order_line,sf_base.group_sale_salemanager,1,0,0,0
diff --git a/sf_sale/views/purchase_order_view.xml b/sf_sale/views/purchase_order_view.xml
index 9ae8242b..d8a5b840 100644
--- a/sf_sale/views/purchase_order_view.xml
+++ b/sf_sale/views/purchase_order_view.xml
@@ -7,67 +7,121 @@
-
-
+
+
-
-
-
-
-
-
+
-
+
-
+
-
+
- sf_base.group_purchase
+ sf_base.group_purchase,sf_base.group_purchase_director
-
+
-
+
- sf_base.group_purchase
+ sf_base.group_purchase,sf_base.group_purchase_director
- sf_base.group_purchase
+ sf_base.group_purchase,sf_base.group_purchase_director
- sf_base.group_purchase
+ sf_base.group_purchase,sf_base.group_purchase_director
- sf_base.group_purchase
+ sf_base.group_purchase,sf_base.group_purchase_director
- sf_base.group_purchase
+ sf_base.group_purchase,sf_base.group_purchase_director
+
+ {'readonly': ['&',('state', 'in', ['purchase']),('check_status','in',
+ ['approved'])]}
+
+
+
+ {'readonly': ['&',('state', 'in', ['purchase']),('check_status','in',
+ ['approved'])]}
+
+
+
+ {'readonly': ['&',('state', 'in', ['purchase']),('check_status','in',
+ ['approved'])]}
+
+
+
+ {'readonly': ['&',('state', 'in', ['purchase']),('check_status','in',
+ ['approved'])]}
+
+
+
+ {'readonly': ['&',('state', 'in', ['purchase']),('check_status','in',
+ ['approved'])]}
+
+
+
+ {'readonly': ['&',('state', 'in', ['purchase']),('check_status','in',
+ ['approved'])]}
+
+
+
+ {'readonly': ['&',('state', 'in', ['purchase']),('check_status','in',
+ ['approved'])]}
+
+
+
+ {'readonly': ['&',('state', 'in', ['purchase']),('check_status','in',
+ ['approved'])]}
+
+
+
+
+
+
+
+ purchase.stock.order.form.inherit.sf
+ purchase.order
+
+
+
+ {'readonly': ['&',('state', 'in', ['purchase']),('check_status','in',
+ ['approved'])]}
+
+
+
+ {'readonly': ['&',('state', 'in', ['purchase']),('check_status','in',
+ ['approved'])]}
+
+