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_sale/__manifest__.py b/sf_sale/__manifest__.py index 6c65a7d5..ba6a99db 100644 --- a/sf_sale/__manifest__.py +++ b/sf_sale/__manifest__.py @@ -10,11 +10,12 @@ """, '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', diff --git a/sf_sale/models/sale_order.py b/sf_sale/models/sale_order.py index 8f3910b6..38684213 100644 --- a/sf_sale/models/sale_order.py +++ b/sf_sale/models/sale_order.py @@ -1,6 +1,6 @@ import datetime import base64 -from odoo import models, fields, api +from odoo import models, fields, api, _ from odoo.exceptions import UserError @@ -91,12 +91,40 @@ 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)]) @@ -131,7 +159,13 @@ class ResPartnerToSale(models.Model): @api.onchange('user_id') def _get_salesman(self): - self.user_id = self.env.user.id + 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): @@ -145,4 +179,14 @@ class ResUserToSale(models.Model): 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/ir.model.access.csv b/sf_sale/security/ir.model.access.csv index 6645b629..f6164542 100644 --- a/sf_sale/security/ir.model.access.csv +++ b/sf_sale/security/ir.model.access.csv @@ -51,6 +51,14 @@ 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_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 + diff --git a/sf_sale/views/purchase_order_view.xml b/sf_sale/views/purchase_order_view.xml index 4139dd19..9ae8242b 100644 --- a/sf_sale/views/purchase_order_view.xml +++ b/sf_sale/views/purchase_order_view.xml @@ -6,45 +6,51 @@ purchase.order - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + +