优化采购和销售

This commit is contained in:
jinling.yang
2023-12-22 17:43:25 +08:00
parent 58d4b3813b
commit 93ce482d40
9 changed files with 252 additions and 47 deletions

View File

@@ -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)