diff --git a/sf_base/__manifest__.py b/sf_base/__manifest__.py
index da6919a4..e2fb731c 100644
--- a/sf_base/__manifest__.py
+++ b/sf_base/__manifest__.py
@@ -10,7 +10,7 @@
""",
'category': 'sf',
'website': 'https://www.sf.jikimo.com',
- 'depends': ['account', 'base', 'mrp_workorder', 'sale', 'purchase', 'sales_team'],
+ 'depends': ['base', 'mrp_workorder', 'sale', 'purchase', 'sales_team'],
'data': [
'security/group_security.xml',
'security/ir.model.access.csv',
diff --git a/sf_dlm/views/product_template_view.xml b/sf_dlm/views/product_template_view.xml
index 6331d841..3748a669 100644
--- a/sf_dlm/views/product_template_view.xml
+++ b/sf_dlm/views/product_template_view.xml
@@ -42,11 +42,53 @@
- stock.group_stock_user,product.group_stock_packaging
+
+ stock.group_stock_user,product.group_stock_packaging,sf_base.group_sale_salemanager,sf_base.group_sale_director,sf_base.group_purchase,sf_base.group_purchase_director
+
+
+ product.template_procurement.form.inherit.sf
+ product.template
+
+
+
+
+ stock.group_stock_user,sf_base.group_sale_salemanager,sf_base.group_sale_director,sf_base.group_purchase,sf_base.group_purchase_director
+
+
+
+
+ stock.group_stock_user,sf_base.group_sale_salemanager,sf_base.group_sale_director,sf_base.group_purchase,sf_base.group_purchase_director
+
+
+
+
+ stock.group_stock_user,sf_base.group_sale_salemanager,sf_base.group_sale_director,sf_base.group_purchase,sf_base.group_purchase_director
+
+
+
+
+ stock.group_stock_user,sf_base.group_sale_salemanager,sf_base.group_sale_director,sf_base.group_purchase,sf_base.group_purchase_director
+
+
+
+
+
+ stock.group_stock_user,sf_base.group_sale_salemanager,sf_base.group_sale_director,sf_base.group_purchase,sf_base.group_purchase_director
+
+
+
+
+
+
+
+
+
+
+
mrp.bom.form.inherit.sf
mrp.bom
@@ -80,5 +122,6 @@
+
\ No newline at end of file
diff --git a/sf_manufacturing/models/stock.py b/sf_manufacturing/models/stock.py
index 473a9b43..4f2c43f3 100644
--- a/sf_manufacturing/models/stock.py
+++ b/sf_manufacturing/models/stock.py
@@ -201,17 +201,18 @@ class StockRule(models.Model):
sale_order = self.env['sale.order'].sudo().search([('name', '=', production.origin)])
if sale_order:
+ sale_order.write({'schedule_status': 'to schedule'})
self.env['sf.production.plan'].sudo().with_company(company_id). \
create({
- 'name': production.name,
- 'order_deadline': sale_order.deadline_of_delivery,
- 'production_id': production.id,
- 'date_planned_start': production.date_planned_start,
- 'origin': production.origin,
- 'product_qty': production.product_qty,
- 'product_id': production.product_id.id,
- 'state': 'draft',
- })
+ 'name': production.name,
+ 'order_deadline': sale_order.deadline_of_delivery,
+ 'production_id': production.id,
+ 'date_planned_start': production.date_planned_start,
+ 'origin': production.origin,
+ 'product_qty': production.product_qty,
+ 'product_id': production.product_id.id,
+ 'state': 'draft',
+ })
return True
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..ba6a99db 100644
--- a/sf_sale/__manifest__.py
+++ b/sf_sale/__manifest__.py
@@ -10,13 +10,15 @@
""",
'category': 'sf',
'website': 'https://www.sf.jikimo.com',
- 'depends': ['sale', 'sale_management', 'web_widget_model_viewer', 'sf_base'],
+ 'depends': ['sale', 'sale_management', 'web_widget_model_viewer', 'sf_base', 'account', 'purchase'],
'data': [
'security/group_security.xml',
'security/ir.model.access.csv',
'wizard/sale_order_wizard_views.xml',
+ 'wizard/purchase_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/sale_order.py b/sf_sale/models/sale_order.py
index 93bf5c10..04a2d3f2 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 import models, fields, api, _
+from odoo.exceptions import UserError
class ReSaleOrder(models.Model):
@@ -13,14 +13,18 @@ class ReSaleOrder(models.Model):
address_of_delivery = fields.Char('交货人地址')
payments_way = fields.Selection([('现结', '现结'), ('月结', '月结')], '结算方式', default='现结', tracking=True)
pay_way = fields.Selection([('转账', '转账'), ('微信', '微信'), ('支付宝', '支付宝')], '支付方式')
- check_status = fields.Selection([('unchecked', '未审核'), ('checked', '已审核')], '审核状态', default='unchecked')
-
+ check_status = fields.Selection([('pending', '待审核'), ('approved', '已审核'), ('fail', '不通过')], '审核状态')
+ schedule_status = fields.Selection(
+ [('to schedule', '待排程'), ('to process', '待加工'), ('to deliver', '待发货'), ('to receive', '待收货'),
+ ('received', '已收货')],
+ '进度状态')
payment_term_id = fields.Many2one(
comodel_name='account.payment.term',
string="交付条件",
compute='_compute_payment_term_id',
store=True, readonly=False, precompute=True, check_company=True, tracking=True,
domain="['|', ('company_id', '=', False), ('company_id', '=', company_id)]")
+ remark = fields.Text('备注')
# 业务平台分配工厂后在智能工厂先创建销售订单
def sale_order_create(self, company_id, delivery_name, delivery_telephone, delivery_address,
@@ -32,7 +36,7 @@ class ReSaleOrder(models.Model):
'date_order': now_time,
'name': self.env['ir.sequence'].next_by_code('sale.order', sequence_date=now_time),
'partner_id': partner.id,
- 'check_status': 'checked',
+ 'check_status': 'approved',
'state': 'draft',
'person_of_delivery': delivery_name,
'telephone_of_delivery': delivery_telephone,
@@ -43,9 +47,16 @@ class ReSaleOrder(models.Model):
})
return order_id
- # 审核
- def action_check(self):
- self.check_status = 'checked'
+ def write(self, vals):
+ if self.env.user.has_group('sf_base.group_sale_director'):
+ if vals.get('check_status'):
+ if vals['check_status'] in ('pending', False):
+ vals['check_status'] = 'approved'
+ return super().write(vals)
+
+ # 提交
+ def submit(self):
+ self.check_status = 'pending'
def get_customer(self):
customer = self.env['res.partner'].search([('name', '=', '业务平台')])
@@ -80,18 +91,103 @@ class ResaleOrderLine(models.Model):
class RePurchaseOrder(models.Model):
_inherit = 'purchase.order'
- check_status = fields.Selection([('unchecked', '未审核'), ('checked', '已审核')], '审核状态', default='unchecked')
+ check_status = fields.Selection([('pending', '待审核'), ('approved', '已审核'), ('fail', '不通过')], '审核状态')
+ remark = fields.Text('备注')
+
+ def write(self, vals):
+ if self.env.user.has_group('sf_base.group_purchase_director'):
+ if vals.get('check_status'):
+ if vals['check_status'] in ('pending', False):
+ 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
class ResPartnerToSale(models.Model):
_inherit = 'res.partner'
+ purchase_user_id = fields.Many2one('res.users', '采购员')
+
+ @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):
+ 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):
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)]
+ domain = [('customer_rank', '>', 0)]
+ elif self.env.user.has_group('sf_base.group_sale_salemanager'):
+ customer = self.env['res.partner'].search(
+ [('customer_rank', '>', 0), ('user_id', '=', self.env.user.id)])
+ if customer:
+ ids = [t.id for t in customer]
+ domain = [('id', 'in', ids)]
+ 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):
+ if self.customer_rank > 0:
+ self.user_id = self.env.user.id
+
+ @api.onchange('purchase_user_id')
+ def _get_purchaseman(self):
+ if self.supplier_rank > 0:
+ self.purchase_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)
+ elif self._context.get('supplier_rank'):
+ if self.env.user.has_group('sf_base.group_purchase_director'):
+ domain = [('supplier_rank', '>', 0)]
+ elif self.env.user.has_group('sf_base.group_purchase'):
+ supplier = self.env['res.partner'].search(
+ [('supplier_rank', '>', 0), ('purchase_user_id', '=', self.env.user.id)])
+ if supplier:
+ ids = [t.id for t in supplier]
+ domain = [('id', 'in', ids)]
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..8315c30e 100644
--- a/sf_sale/security/group_security.xml
+++ b/sf_sale/security/group_security.xml
@@ -11,7 +11,7 @@
- 销售总监查看所有的订单
+ 销售总监查看所有团队
[(1,'=',1)]
@@ -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)]
+
@@ -40,11 +41,11 @@
-
- 销售经理查看自己的订单
+
+ 销售总监查看所有订单
- [('user_id', '=',user.id)]
-
+ [(1,'=',1)]
+
@@ -65,7 +66,7 @@
['|',('user_id','=',user.id),('create_uid', '=',user.id)]
-
+
@@ -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..9009d87d 100644
--- a/sf_sale/security/ir.model.access.csv
+++ b/sf_sale/security/ir.model.access.csv
@@ -38,13 +38,36 @@ 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_users_group_purchase_director,model_res_users,sf_base.group_purchase_director,1,1,1,0
+access_res_users_group_sale_salemanager,res_users_group_sale_salemanager,model_res_users,sf_base.group_sale_salemanager,1,0,0,0
+access_res_users_group_sale_director,res_users_group_sale_director,model_res_users,sf_base.group_sale_director,1,1,1,0
+
+access_mrp_bom_byproduct_group_purchase,mrp_bom_byproduct_group_purchase,mrp.model_mrp_bom_byproduct,sf_base.group_purchase,1,1,1,0
+access_mrp_bom_byproduct_group_purchase_director,mrp_bom_byproduct_group_purchase_director,mrp.model_mrp_bom_byproduct,sf_base.group_purchase_director,1,1,1,0
+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
+access_purchase_order_line_group_sale_director,purchase_order_line_group_sale_director,purchase_stock.model_purchase_order_line,sf_base.group_sale_director,1,1,1,0
+
+access_purchase_order_wizard_group_purchase,purchase_order_wizard_group_purchase,model_purchase_order_wizard,sf_base.group_purchase,1,1,1,0
+access_purchase_order_wizard_group_purchase_director,purchase_order_wizard_group_purchase_director,model_purchase_order_wizard,sf_base.group_purchase_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/purchase_order_view.xml b/sf_sale/views/purchase_order_view.xml
index 4139dd19..d8a5b840 100644
--- a/sf_sale/views/purchase_order_view.xml
+++ b/sf_sale/views/purchase_order_view.xml
@@ -6,62 +6,136 @@
purchase.order
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 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'])]}
+
+
+
+
+
+
+ purchase.order.tree.inherit.sf
+ purchase.order
+
+
+
+
+
diff --git a/sf_sale/views/res_partner_view.xml b/sf_sale/views/res_partner_view.xml
new file mode 100644
index 00000000..2ab384eb
--- /dev/null
+++ b/sf_sale/views/res_partner_view.xml
@@ -0,0 +1,87 @@
+
+
+
+
+ res.partner.form.inherit.sf
+ res.partner
+
+
+
+
+
+
+
+ 1
+
+
+
+
+
+ {'required': [('phone', '=', False)]}
+
+
+
+ {'required': [('mobile', '=', False)]}
+
+
+
+ {'required': [('supplier_rank','>', 0)]}
+
+
+
+ {'required': [('supplier_rank','>', 0)]}
+
+
+
+ {'required': [('supplier_rank','>', 0)]}
+
+
+
+ {'required': [('supplier_rank','>', 0)]}
+
+
+
+
+
+
+ 1
+
+
+
+
+
+
+ res.partner.property.form.inherit.sf
+ res.partner
+
+
+
+
+
+
+
+
+
+ res.partner.property.form.inherit.sf
+ res.partner
+
+
+
+
+
+
+
+ {'invisible': [('customer_rank','=', 0)]}
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/sf_sale/views/sale_order_view.xml b/sf_sale/views/sale_order_view.xml
index 6df5d955..d1f0dfb8 100644
--- a/sf_sale/views/sale_order_view.xml
+++ b/sf_sale/views/sale_order_view.xml
@@ -1,65 +1,117 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
sale.order.form.inherit.sf
sale.order
+
+
+
-
-
-
- {'invisible': [('check_status', '=', 'unchecked'),('state', 'not in',
- ['sent'])]}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {'invisible': ['|',('check_status', '!=', 'approved'),('schedule_status',
+ 'not in', ['to schedule',False])]}
-
- {'invisible': [('check_status', '=', 'unchecked'),('state', 'in',
- ['draft'])]}
-
+
+ 1
+
+
+
+
+
+ {'readonly': [('state', 'in', ['cancel','sale'])]}
+
-
-
-
+
+
+
+
+
+ {'readonly': [('state', 'in', ['cancel','sale'])]}
+
+
+ {'readonly': [('state', 'in', ['cancel','sale'])]}
+
+
+ {'readonly': [('state', 'in', ['cancel','sale'])]}
+
+
+ {'readonly': [('state', 'in', ['cancel','sale'])]}
+
+
+ {'readonly': [('state', 'in', ['cancel','sale'])]}
+
+
+
+ {'readonly': [('state', 'in', ['cancel','sale'])]}
+
+
+ {'readonly': [('state', 'in', ['cancel','sale'])]}
+
+
+ {'readonly': [('state', 'in', ['cancel','sale'])]}
+
+
+ {'readonly': [('state', 'in', ['cancel','sale'])]}
+
+
+ {'readonly': [('state', 'in', ['cancel','sale'])]}
+
+
+ {'readonly': [('state', 'in', ['cancel','sale'])]}
+
+
+ {'readonly': [('state', 'in', ['cancel','sale'])]}
+
+
+ {'readonly': [('state', 'in', ['cancel','sale'])]}
+
+
+ {'readonly': [('state', 'in', ['cancel','sale'])]}
+
@@ -73,16 +125,13 @@
下单日期
-
-
-
-
-
-
-
-
-
-
+
+
+
+
@@ -102,8 +151,10 @@
下单时间
-
+
@@ -113,9 +164,20 @@
sale.order
+
+ False
+
订单号
+
+
+
diff --git a/sf_sale/wizard/__init__.py b/sf_sale/wizard/__init__.py
index 60c63c76..7f1bd0c7 100644
--- a/sf_sale/wizard/__init__.py
+++ b/sf_sale/wizard/__init__.py
@@ -1 +1,2 @@
from . import sale_order_wizard
+from . import purchase_order_wizard
diff --git a/sf_sale/wizard/purchase_order_wizard.py b/sf_sale/wizard/purchase_order_wizard.py
new file mode 100644
index 00000000..313b60f5
--- /dev/null
+++ b/sf_sale/wizard/purchase_order_wizard.py
@@ -0,0 +1,25 @@
+# -*- coding: utf-8 -*-
+from odoo import models, api, fields
+from odoo.exceptions import UserError
+
+
+class PurchaseOrderWizard(models.TransientModel):
+ _name = 'purchase.order.wizard'
+ _description = '采购向导'
+
+ order_id = fields.Many2one('purchase.order')
+ # check_state = fields.Selection([('pass', '通过'), ('back', '退回')], '处理意见', default='pass')
+ check_audit = fields.Text('审核意见')
+
+ def submit(self):
+ self.order_id.check_status = 'approved'
+ self.order_id.remark = self.check_audit
+
+ def back(self):
+ if not self.check_audit:
+ raise UserError('请输入原因')
+ else:
+ self.order_id.write({'check_status': 'fail', 'remark': self.check_audit})
+
+ def confirm(self):
+ self.order_id.check_status = 'pending'
diff --git a/sf_sale/wizard/purchase_order_wizard_views.xml b/sf_sale/wizard/purchase_order_wizard_views.xml
new file mode 100644
index 00000000..998f02c1
--- /dev/null
+++ b/sf_sale/wizard/purchase_order_wizard_views.xml
@@ -0,0 +1,54 @@
+
+
+
+ purchase.order.check.wizard.form.view
+ purchase.order.wizard
+
+
+
+
+
+
+ 审核
+ purchase.order.wizard
+ form
+ new
+
+
+
+ purchase.order.submit.wizard.form.view
+ purchase.order.wizard
+
+
+
+
+
+
+ 提交
+ purchase.order.wizard
+ form
+ new
+
+
+
\ No newline at end of file
diff --git a/sf_sale/wizard/sale_order_wizard.py b/sf_sale/wizard/sale_order_wizard.py
index 544b5abe..bfcb6466 100644
--- a/sf_sale/wizard/sale_order_wizard.py
+++ b/sf_sale/wizard/sale_order_wizard.py
@@ -1,5 +1,6 @@
# -*- coding: utf-8 -*-
from odoo import models, api, fields
+from odoo.exceptions import UserError
class saleOrderCheckWizard(models.TransientModel):
@@ -8,9 +9,15 @@ class saleOrderCheckWizard(models.TransientModel):
_description = '报价/销售订单审核向导'
order_id = fields.Many2one('sale.order')
- check_state = fields.Selection([('pass', '通过'), ('back', '退回')], '审核状态', default='pass')
+ # 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'
+ self.order_id.check_status = 'approved'
+ self.order_id.remark = self.check_audit
+
+ def back(self):
+ if not self.check_audit:
+ raise UserError('请输入原因')
+ else:
+ self.order_id.write({'check_status': 'fail', 'remark': self.check_audit})
diff --git a/sf_sale/wizard/sale_order_wizard_views.xml b/sf_sale/wizard/sale_order_wizard_views.xml
index db6742fc..a576066b 100644
--- a/sf_sale/wizard/sale_order_wizard_views.xml
+++ b/sf_sale/wizard/sale_order_wizard_views.xml
@@ -6,20 +6,22 @@
- 销售订单审核向导
+ 审核
sale.order.check.wizard
form
new