This commit is contained in:
李鹏宇
2025-02-26 15:34:19 +08:00
parent 8746203445
commit f29b1fde38
3 changed files with 12 additions and 80 deletions
+4 -72
View File
@@ -80,44 +80,6 @@ class SoongWorkflowMixin(models.AbstractModel):
for record in self:
record.approval_sign_ids = record.log_ids.filtered(lambda r: r.node_btn_name == "2" and r.node_id == record.node_id).done_by.ids
# workflow_approver_ids = fields.One2many('soong.workflow.log', 'w_res_id', string="审批记录",
# compute='_compute_workflow_approver_ids')
# def _compute_workflow_approver_ids(self):
# wkf_obj = self.env["soong.workflow"]
# for rec in self:
# log_ids = []
# # Variables
# rec_model = rec._name
# # Get Workflow
# workflow_id = wkf_obj.search([("model_id", "=", rec_model), ('is_enable', '=', True)])
# node_ids = workflow_id.node_ids
# for node_id in node_ids:
# log_obj = self.env["soong.workflow.log"]
# record_obj = log_obj.search(
# [
# ("model", "=", self._name),
# ("res_id", "=", self.id),
# ("node_id", "=", node_id.id),
# ]
# )
# if not record_obj:
# record_obj = log_obj.create(
# {
# "model": self._name,
# "res_id": self.id,
# "node_id": node_id.id,
# "workflow_id": node_id.workflow_id.id,
# "lase_click_date": fields.Datetime.now(),
# }
# )
# log_ids.append(record_obj.id)
# if log_ids:
# rec.workflow_approver_ids = log_ids
# else:
# rec.workflow_approver_ids = None
@api.depends("state")
def _compute_workflow_id(self):
# Objects
@@ -161,52 +123,25 @@ class SoongWorkflowMixin(models.AbstractModel):
def create(self, vals_list):
res = super().create(vals_list)
for record in res:
button_ids = record.sudo().workflow_id.node_ids.button_ids
button_ids = record.sudo().workflow_id.node_ids.button_ids.search([('sequence', '=', '1')]).search([('workflow_id', '=', res.workflow_id.id), ('sequence', '=', 1)])
for button_id in button_ids:
if button_id.users_role_id and record.env.user.employee_id.department_id:
# 不自动匹配
if not button_id.is_automatic:
employee_ids = record.sudo().env['hr.employee'].search(
['|', ('user_role_id', '=', button_id.users_role_id.id),
('user_role_ids', 'in', button_id.users_role_id.id)])
else:
# 自动匹配
employee_ids = record.sudo().env['hr.employee'].search(
['|', ('user_role_id', '=', button_id.users_role_id.id),
('user_role_ids', 'in', button_id.users_role_id.id),
'|', ('department_id', '=', record.env.user.employee_id.department_id.id), ('department_ids', 'in', record.env.user.employee_id.department_id.id),
('yuthon_company', '=', record.env.user.employee_id.yuthon_company)])
# 判断当前用户是否是 当前节点的员工
if record.env.user.employee_id.id in employee_ids.ids:
record.state = button_id.node_id.node_name
return res
def _create_update_logs(self, btn_rec):
log_obj = self.env["soong.workflow.log"]
# if btn_rec.name in ['退回']:
# record_obj = log_obj.search(
# [
# ("model", "=", self._name),
# ("res_id", "=", self.id),
# ("node_id", "=", btn_rec.node_id.id),
# ("workflow_id", "=", btn_rec.workflow_id.id),
# ("node_btn_name", "=", "1")
# ], order="lase_click_date DESC", limit=1
# )
# if not record_obj:
# record_obj = log_obj.create(
# {
# "model": self._name,
# "res_id": self.id,
# "node_id": btn_rec.node_id.id,
# "workflow_id": btn_rec.workflow_id.id,
# "node_btn_id": btn_rec.id,
# "done_by": self.env.uid,
# "node_btn_name": "1",
# "lase_click_date": fields.Datetime.now(),
# }
# )
if btn_rec.name not in ['转交', '加签', '加签确认', '退回', '收回']:
record_obj = log_obj.search(
[
@@ -219,8 +154,7 @@ class SoongWorkflowMixin(models.AbstractModel):
], order="lase_click_date DESC", limit=1
)
if not record_obj:
record_obj = log_obj.create(
{
record_obj = log_obj.create({
"model": self._name,
"res_id": self.id,
"node_id": btn_rec.node_id.id,
@@ -229,11 +163,9 @@ class SoongWorkflowMixin(models.AbstractModel):
"done_by": self.env.uid,
"node_btn_name": "0",
"lase_click_date": fields.Datetime.now(),
}
)
})
record_obj.write({"node_btn_id": btn_rec.id, "done_by": self.env.uid, "approval_state": "2"})
record_obj = log_obj.search(
[
record_obj = log_obj.search([
("model", "=", self._name),
("res_id", "=", self.id),
("node_id", "=", btn_rec.node_id.id),
@@ -62,28 +62,28 @@ class SoongWorkflowCommentWizard(models.TransientModel):
else:
if btn.is_automatic:
employee_user_role_id = self.env['hr.employee'].search(
[('user_role_id', '=', btn.users_role_id.id),
('department_id', '=', record_id.department_id.id)])
[('user_role_id', '=', btn.users_role_id.id), ('department_id', '=', record_id.department_id.id)])
self.employee_ids = employee_user_role_id
else:
employee_user_role_ids = self.env['hr.employee'].search(
[('user_role_id', '=', btn.users_role_id.id)])
employee_user_role_ids = self.env['hr.employee'].search([('user_role_id', '=', btn.users_role_id.id)])
self.employee_ids = employee_user_role_ids
@api.onchange('trans_link_id')
def onchange_trans_employee_ids(self):
record_id = self.env[self.res_model].search([('id', '=', self.res_id)])
for ret in self.trans_link_id:
if '分发' in self.trans_link_id.name:
if ['分发', '信息管理员'] in self.trans_link_id.name:
self.employee_ids = record_id.users_id.employee_id
else:
workflow_id = self.trans_link_id.node_button_id.workflow_id
state_list = ['拟办' if i.node_name == 'start' else i.node_name for i in workflow_id.node_ids]
state_list = [i.node_name for i in workflow_id.node_ids]
link_users_id = workflow_id.node_ids.search(
[('name', '=', self.trans_link_id.name), ('workflow_id', '=', workflow_id.id)]).button_ids[0].users_role_id
next_is_automatic = workflow_id.node_ids.search([('name', '=', self.trans_link_id.name), ('workflow_id', '=', workflow_id.id)]).button_ids[0].is_automatic
# 不自动匹配
employee_user_role_ids = self.env['hr.employee'].search(['|', ('user_role_id', '=', link_users_id.id), ('user_role_ids', 'in', link_users_id.id)])
employee_user_role_ids = self.env['hr.employee'].search(['|', ('user_role_id', '=', link_users_id.id),
('user_role_ids', 'in', link_users_id.id),
('yuthon_company', '=', record_id.create_uid.employee_id.yuthon_company)])
# 自动匹配
employee_user_role_id = self.env['hr.employee'].search(
['|', ('user_role_id', '=', link_users_id.id), ('user_role_ids', 'in', link_users_id.id),
@@ -105,7 +105,7 @@
<field name='name'>全部领导日程</field>
<field name='res_model'>yuthon.will.task</field>
<field name='view_mode'>tree,calendar</field>
<field name='domain'>[('user_role_ids.name', 'in', ['董事长', '分管领导', '总经理'])]</field>
<field name='domain'>[('user_role_ids.name', 'in', ['董事长', '分管领导', '总经理', '部门副经理', '部门经理', '副总经理'])]</field>
<field name="context">{'search_default_next_seven_days': 1, 'search_default_yuthon_company': 1}</field>
</record>
<record id='view_yuthon_will_task_action3' model='ir.actions.act_window'>