diff --git a/soong_workflow/data/notice_template_data.xml b/soong_workflow/data/notice_template_data.xml
index 9d3da9201..787aaa779 100644
--- a/soong_workflow/data/notice_template_data.xml
+++ b/soong_workflow/data/notice_template_data.xml
@@ -28,7 +28,7 @@
-
查看
diff --git a/soong_workflow/models/soong_workflow_mixin.py b/soong_workflow/models/soong_workflow_mixin.py
index e1db1c84c..2470589e6 100644
--- a/soong_workflow/models/soong_workflow_mixin.py
+++ b/soong_workflow/models/soong_workflow_mixin.py
@@ -68,7 +68,8 @@ class SoongWorkflowMixin(models.AbstractModel):
string="审批明细")
approval_sign_ids = fields.Many2many('res.users', string="加签人员")
- workflow_approver_ids = fields.One2many('soong.workflow.log', 'w_res_id', string="审批记录", compute='_compute_workflow_approver_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"]
@@ -111,7 +112,6 @@ class SoongWorkflowMixin(models.AbstractModel):
# Get Workflow
rec.workflow_id = wkf_obj.search([("model_id", "=", rec_model), ('is_enable', '=', True)])
-
node_id = fields.Many2one(
comodel_name="soong.workflow.node",
string="Workflow Node Ref.",
@@ -166,7 +166,8 @@ class SoongWorkflowMixin(models.AbstractModel):
"lase_click_date": fields.Datetime.now(),
}
)
- record_obj.update({"workflow_id": btn_rec.workflow_id.id, "node_btn_id": btn_rec.id, "done_by": self.env.uid, "lase_click_date": fields.Datetime.now()})
+ record_obj.update({"workflow_id": btn_rec.workflow_id.id, "node_btn_id": btn_rec.id, "done_by": self.env.uid,
+ "lase_click_date": fields.Datetime.now()})
return record_obj
def btn_exec_action(self):
@@ -200,19 +201,25 @@ class SoongWorkflowMixin(models.AbstractModel):
('user_role_ids', 'in', next_state.users_role_id.id)])
# 自动匹配
employee_user_role_id = self.env['hr.employee'].search(
- [('user_role_id', '=', next_state.users_role_id.id), '|',
- ('department_id', '=', self.department_id.id),
- ('department_ids', 'in', self.department_id.id)])
+ ['|', ('user_role_id', '=', next_state.users_role_id.id),
+ ('user_role_ids', 'in', next_state.users_role_id.id), '|', '&',
+ ('department_id', '=', self.department_id.id),
+ ('department_ids', 'in', self.department_id.id),
+ ('yuthon_company', '=', self.create_uid.employee_id.yuthon_company)])
employee_ids = employee_user_role_ids if not next_state.is_automatic else employee_user_role_id
url = 'https://oa.thtzjt.com/mail/view?model={}&res_id={}'.format(self._name, self.id)
for employee in employee_ids:
self.sudo().env["wecom.apps"].sync_send_message_textcard(category='oa',
user_id=employee.wecom_userid,
title=self._description,
- description="您有新的审批单 {} 请及时处理\n".format(self.name) + self.env.user.name + ' ' + str(fields.Datetime.now() + timedelta(hours=8)),
+ description="标题: {}\n".format(
+ self.name) + self.env.user.name + ' ' + str(
+ fields.Datetime.now() + timedelta(
+ hours=8)),
url=url, btntxt="查看详情")
partner_ids = employee_ids.user_id.partner_id.ids
- self.with_context(lang=self.env.lang)._message_auto_subscribe_notify(partner_ids, 'soong_workflow.message_soong_workflow_users_data')
+ self.with_context(lang=self.env.lang)._message_auto_subscribe_notify(partner_ids,
+ 'soong_workflow.message_soong_workflow_users_data')
return btn_rec.with_context(cx).run()
def _add_comment(self, logs, btn_rec):
@@ -263,9 +270,11 @@ class SoongWorkflowMixin(models.AbstractModel):
('user_role_ids', 'in', next_state.users_role_id.id)])
# 自动匹配
employee_user_role_id = self.env['hr.employee'].search(
- [('user_role_id', '=', next_state.users_role_id.id), '|',
+ ['|', ('user_role_id', '=', next_state.users_role_id.id),
+ ('user_role_id', '=', next_state.users_role_id.id), '|', '&',
('department_id', '=', self.department_id.id),
- ('department_ids', 'in', self.department_id.id)])
+ ('department_ids', 'in', self.department_id.id),
+ ('yuthon_company', '=', self.create_uid.employee_id.yuthon_company)])
employee_ids = employee_user_role_ids.ids if not next_state.is_automatic else employee_user_role_id.ids
if not employee_ids:
@@ -520,7 +529,9 @@ class SoongWorkflowMixin(models.AbstractModel):
if self.env.user not in button.reviewer_group_id.users:
continue
elif button.review_type == 'user_role':
- user_role_id = self.env['res.users'].search([('employee_id.user_role_id', '=', button.users_role_id.id)])
+ user_role_id = self.env['res.users'].search(
+ ['|', ('employee_id.user_role_id', '=', button.users_role_id.id),
+ ('employee_id.user_role_ids', 'in', button.users_role_id.id)])
if self.env.user not in user_role_id:
continue
# 如果是隐藏条件拼接隐藏条件
@@ -724,7 +735,6 @@ class SoongWorkflowMixin(models.AbstractModel):
res["arch"] = etree.tostring(arch, encoding="unicode").replace("\t", "")
return res
-
def _update_fields_view(self, view_type, res):
"""
Updates fields attributes.
diff --git a/soong_workflow/models/soong_workflow_record.py b/soong_workflow/models/soong_workflow_record.py
index 2f52fa101..5ac9b20e0 100644
--- a/soong_workflow/models/soong_workflow_record.py
+++ b/soong_workflow/models/soong_workflow_record.py
@@ -9,7 +9,8 @@ _logger = logging.getLogger(__name__)
class SoongWorkflowRecord(models.Model):
_name = "soong.workflow.record"
- _description = "Soong Workflow Record"
+ _description = "工作流记录"
+ _order = 'write_date'
@api.depends("res_model", "res_id")
def compute_name(self):
diff --git a/soong_workflow/views/soong_workflow_record.xml b/soong_workflow/views/soong_workflow_record.xml
index 46c3732a0..9144930e5 100644
--- a/soong_workflow/views/soong_workflow_record.xml
+++ b/soong_workflow/views/soong_workflow_record.xml
@@ -7,8 +7,7 @@
-
-
+
@@ -55,6 +54,7 @@
soong.workflow.record
tree,form
[('users_ids', 'in', [uid]), ('reclaim_state', '=', False)]
+
@@ -63,6 +63,7 @@
soong.workflow.record
tree,form
[('users_ids', 'in', [uid]), ('reclaim_state', '=', True)]
+
diff --git a/soong_workflow/wizard/soong_workflow_comment_wizard.py b/soong_workflow/wizard/soong_workflow_comment_wizard.py
index 889659936..5272c91aa 100644
--- a/soong_workflow/wizard/soong_workflow_comment_wizard.py
+++ b/soong_workflow/wizard/soong_workflow_comment_wizard.py
@@ -52,7 +52,7 @@ class SoongWorkflowCommentWizard(models.TransientModel):
def onchange_employee_ids(self):
record_id = self.env[self.res_model].search([('id', '=', self.res_id)])
for ret in self.return_link_id:
- if ret.name == '拟办':
+ if ret.name in ['拟办', '申请人']:
self.employee_ids = record_id.users_id.employee_id
elif self.node_btn_name == '退回':
next_list = []
@@ -79,10 +79,23 @@ class SoongWorkflowCommentWizard(models.TransientModel):
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:
+ 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]
+ 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_id = self.env['hr.employee'].search(
+ ['|', ('user_role_id', '=', link_users_id.id),
+ ('user_role_ids', 'in', link_users_id.id), '|', '&',
+ ('department_id', '=', record_id.department_id.id),
+ ('department_ids', 'in', record_id.department_id.id),
+ ('yuthon_company', '=', record_id.create_uid.employee_id.yuthon_company)])
+ self.employee_ids = employee_user_role_ids if not next_is_automatic else employee_user_role_id
if self.node_btn_name == '退回':
next_list = []
- 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]
self_state = state_list.index(ret.name)
button_ids = workflow_id.node_ids[self_state].button_ids
for btn in button_ids:
@@ -116,7 +129,7 @@ class SoongWorkflowCommentWizard(models.TransientModel):
self.sudo().env["wecom.apps"].sync_send_message_textcard(category='oa',
user_id=employee.wecom_userid,
title=record_id._description,
- description="您有新的抄送审批单 {} 请及时查看\n".format(
+ description="标题: {}\n".format(
record_id.name) + self.env.user.name + ' ' + str(
fields.Datetime.now() + timedelta(hours=8)),
url=url, btntxt="查看详情")
@@ -134,7 +147,7 @@ class SoongWorkflowCommentWizard(models.TransientModel):
self.sudo().env["wecom.apps"].sync_send_message_textcard(category='oa',
user_id=employee.wecom_userid,
title=record_id._description,
- description="您有新的审批单 {} 请及时查看\n".format(
+ description="标题: {}\n".format(
record_id.name) + self.env.user.name + ' ' + str(
fields.Datetime.now() + timedelta(
hours=8)),
@@ -149,7 +162,7 @@ class SoongWorkflowCommentWizard(models.TransientModel):
self.sudo().env["wecom.apps"].sync_send_message_textcard(category='oa',
user_id=employee.wecom_userid,
title=record_id._description,
- description="您有新的审批单 {} 被退回请及时查看\n".format(
+ description="标题: {}\n".format(
record_id.name) + self.env.user.name + ' ' + str(
fields.Datetime.now() + timedelta(
hours=8)),
@@ -170,7 +183,7 @@ class SoongWorkflowCommentWizard(models.TransientModel):
self.sudo().env["wecom.apps"].sync_send_message_textcard(category='oa',
user_id=employee.wecom_userid,
title=record_id._description,
- description="您有新的传阅审批单 {} 请及时查看\n".format(
+ description="标题: {}\n".format(
record_id.name) + self.env.user.name + ' ' + str(
fields.Datetime.now() + timedelta(hours=8)),
url=url, btntxt="查看详情")
diff --git a/yuthon_will_task/models/yuthon_will_task.py b/yuthon_will_task/models/yuthon_will_task.py
index 8eb3e9cf7..017393532 100644
--- a/yuthon_will_task/models/yuthon_will_task.py
+++ b/yuthon_will_task/models/yuthon_will_task.py
@@ -44,9 +44,6 @@ class YuthonWillTask(models.Model):
min_start = start_time.minute
if day_now == day_start and hour_now == hour_start and min_now == min_start:
task.add_comment()
- else:
- if now.day == start_time.day and now.hour == start_time.hour and now.minute == start_time.minute:
- task.add_comment()
def _compute_duration(self, task_time):
if task_time.task_unit == 'min':
@@ -65,7 +62,7 @@ class YuthonWillTask(models.Model):
raise UserError("请同步{}的企业微信".format(employee_id.name))
url = "https://oa.thtzjt.com/mail/view?model={}&res_id={}".format(self._name, self.id)
self.sudo().env["wecom.apps"].sync_send_message_textcard(category='task', user_id=employee_id.wecom_userid,
- title="日程事项提醒", description=self.task_content,
+ title="日程事项提醒", description="事项名称: " + self.task_content + '\t' + self.start_time,
url=url, btntxt="详细信息")
for record in self:
partner_ids = record.employee_ids.user_id.partner_id.ids
diff --git a/yuthon_will_task/views/yuthon_will_task_views.xml b/yuthon_will_task/views/yuthon_will_task_views.xml
index f29004a26..8878e065e 100644
--- a/yuthon_will_task/views/yuthon_will_task_views.xml
+++ b/yuthon_will_task/views/yuthon_will_task_views.xml
@@ -15,7 +15,7 @@
-
+
@@ -52,7 +52,7 @@
-
+