Skip to content

Commit

Permalink
[ADD] 审批流设置增加一个适用条件的domain字段 osbzr#1501
Browse files Browse the repository at this point in the history
  • Loading branch information
USI-SHRD committed Nov 22, 2017
1 parent bafe677 commit cf8ac87
Show file tree
Hide file tree
Showing 3 changed files with 55 additions and 21 deletions.
70 changes: 50 additions & 20 deletions good_process/models/mail_thread.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
# -*- coding: utf-8 -*-
from odoo import models, fields, api
from odoo.exceptions import ValidationError
from odoo.tools.safe_eval import safe_eval


class MailThread(models.AbstractModel):
Expand Down Expand Up @@ -55,15 +56,28 @@ def __get_user_manager__(self, thread_row, process_rows):
return_vals = staff_row.parent_id.user_id
return return_vals

def __add_approver__(self, thread_row, model_name):
def __add_approver__(self, thread_row, model_name, active_id):
# TODO 加上当前用户的部门经理
approver_rows = []
users = []
process_rows = self.env['good_process.process'].search(
[('model_id.model', '=', model_name), ('type', '=', getattr(thread_row, 'type', False))])
groups = self.__get_groups__(process_rows)
process_rows = self.env['good_process.process'].search([('model_id.model', '=', model_name),
('type', '=', getattr(thread_row, 'type', False))],
order='sequence')
process_row = False
for process in process_rows:
print "__add_approver__", process
domain = [('id', '=', active_id)]
if process.applicable_domain:
domain += safe_eval(process.applicable_domain)
if self.env[model_name].search(domain):
process_row = process
break
if not process_row:
return []

groups = self.__get_groups__(process_row)
department_manager = self.__get_user_manager__(
thread_row, process_rows)
thread_row, process_row)
if department_manager:
users.append((department_manager, 0, False))
users.extend(self.__get_users__(groups))
Expand Down Expand Up @@ -136,7 +150,7 @@ def good_process_refused(self, active_id, active_model):
approver_rows.unlink()
message = self.__good_approver_send_message__(
active_id, active_model, u'拒绝')
return_vals = self.__add_approver__(mode_row, active_model)
return_vals = self.__add_approver__(mode_row, active_model, active_id)

else:
return_vals = u'已经通过不能拒绝!'
Expand All @@ -145,7 +159,7 @@ def good_process_refused(self, active_id, active_model):
@api.model
def create(self, vals):
thread_row = super(MailThread, self).create(vals)
approvers = self.__add_approver__(thread_row, self._name)
approvers = self.__add_approver__(thread_row, self._name, thread_row.id)
thread_row._approver_num = len(approvers)
return thread_row

Expand Down Expand Up @@ -177,7 +191,7 @@ def write(self, vals):
raise ValidationError(u'已审批不可修改')
if change_state == 'draft':
vals.update({
'_approver_num': len(self.__add_approver__(th, th._name)),
'_approver_num': len(self.__add_approver__(th, th._name, th.id)),
})
# 审批中,审核时报错,修改其他字段报错
elif len(th._to_approver_ids) < th._approver_num:
Expand All @@ -202,9 +216,23 @@ def unlink(self):
def __get_user_group__(self, active_id, active_model, users, mode_row):
all_groups = []
process_rows = self.env['good_process.process'].search([('model_id.model', '=', active_model),
('type', '=', getattr(mode_row, 'type', False))])
('type', '=', getattr(mode_row, 'type', False))],
order='sequence')
process_row = False
for process in process_rows:
print "__get_user_group__", process
print "process.applicable_domain", process.applicable_domain
domain = [('id', '=', active_id)]
if process.applicable_domain:
domain += safe_eval(process.applicable_domain)
if self.env[active_model].search(domain):
process_row = process
break
if not process_row:
return users, []

line_rows = self.env['good_process.process_line'].search(
[('process_id', '=', process_rows.id)], order='sequence')
[('process_id', '=', process_row.id)], order='sequence')
least_num = 'default_vals'
for line in line_rows:
approver_s = self.env['good_process.approver'].search([('model', '=', active_model),
Expand Down Expand Up @@ -322,16 +350,18 @@ class Process(models.Model):
line_ids = fields.One2many(
'good_process.process_line', 'process_id', string=u'审批组')
active = fields.Boolean(u'启用', default=True)

@api.one
@api.constrains('model_id', 'type')
def check_model_id(self):
records = self.search([
('model_id', '=', self.model_id.id),
('type', '=', self.type),
('id', '!=', self.id)])
if records:
raise ValidationError(u'同种单据的审批规则必须唯一')
applicable_domain = fields.Char(u'适用条件')
sequence = fields.Integer(u'优先级')

# @api.one
# @api.constrains('model_id', 'type')
# def check_model_id(self):
# records = self.search([
# ('model_id', '=', self.model_id.id),
# ('type', '=', self.type),
# ('id', '!=', self.id)])
# if records:
# raise ValidationError(u'同种单据的审批规则必须唯一')

@api.model
def create(self, vals):
Expand Down
5 changes: 4 additions & 1 deletion good_process/views/good_process.xml
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
<form string='审批'>
<group>
<field name='model_id'/>
<field name='applicable_domain'/>
<field name='type'/>
<field name='is_department_approve'/>
</group>
Expand All @@ -31,10 +32,12 @@
<field name='model'>good_process.process</field>
<field name='arch' type='xml'>
<tree string='审批'>
<field name='sequence'/>
<field name='model_id'/>
<field name='type'/>
<field name='is_department_approve'/>
<field name='active' invisible='1'/>
<field name='applicable_domain'/>
<field name='active' invisible='1'/>
</tree>
</field>
</record>
Expand Down
1 change: 1 addition & 0 deletions money/wizard/bank_statements_wizard.py
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ def confirm_bank_statements(self):
if self.from_date > self.to_date:
raise UserError(u'结束日期不能小于开始日期!\n开始日期:%s 结束日期:%s ' %
(self.from_date, self.to_date))
res = self.env['bank.statements.report'].search([])

view = self.env.ref('money.bank_statements_report_tree')

Expand Down

0 comments on commit cf8ac87

Please sign in to comment.