diff --git a/soong_workflow/models/soong_workflow_mixin.py b/soong_workflow/models/soong_workflow_mixin.py
index 5f55c018d..a0b6396cb 100644
--- a/soong_workflow/models/soong_workflow_mixin.py
+++ b/soong_workflow/models/soong_workflow_mixin.py
@@ -179,9 +179,33 @@ class SoongWorkflowMixin(models.AbstractModel):
state_list = ['拟办' if i.node_name == 'start' else i.node_name for i in btn_rec.workflow_id.node_ids]
# 当前节点状态
self_state = state_list.index('拟办' if self.state == 'start' else self.state)
+ self.env['trans.link'].search([]).unlink()
+ if btn_rec.name == '退回':
+ for state in state_list[0:self_state]:
+ self.env['trans.link'].create({
+ 'node_button_id': btn_rec.id,
+ 'name': state,
+ 'link_type': 'return',
+ 'record_id': self.id,
+ })
+ return {
+ "name": _("评论"),
+ "type": "ir.actions.act_window",
+ "view_mode": "form",
+ "res_model": "soong.workflow.comment.wizard",
+ "views": [(wizard.id, "form")],
+ "view_id": wizard.id,
+ "target": "new",
+ "context": {
+ "default_res_id": self.id,
+ "default_res_model": self._name,
+ "default_log_ids": logs.ids,
+ "default_node_btn_id": btn_rec.id,
+ "default_node_link_len": '转交2' if len(btn_rec.node_id.out_link_ids) > 1 and btn_rec.name == '转交' else '',
+ },
+ }
# 下一个节点
next_state = btn_rec.workflow_id.node_ids[self_state + 1].button_ids[1]
- self.env['trans.link'].search([]).unlink()
if btn_rec.name == '转交' and len(btn_rec.node_id.out_link_ids) > 1:
for state in btn_rec.node_id.out_link_ids:
self.env['trans.link'].create({
@@ -190,14 +214,6 @@ class SoongWorkflowMixin(models.AbstractModel):
'link_type': 'trans',
'record_id': self.id,
})
- elif btn_rec.name == '退回':
- for state in state_list[0:self_state]:
- self.env['trans.link'].create({
- 'node_button_id': btn_rec.id,
- 'name': state,
- 'link_type': 'return',
- 'record_id': self.id,
- })
# 不自动匹配
employee_user_role_ids = self.env['hr.employee'].search([('user_role_id', '=', next_state.users_role_id.id)])
# 自动匹配
@@ -272,14 +288,6 @@ class SoongWorkflowMixin(models.AbstractModel):
"views": [(False, "diagram_plus")],
}
- # @api.model
- # def _get_view(self, view_id=None, view_type='form', **options):
- # """ Set the correct label for `unit_amount`, depending on company UoM """
- # arch, view = super()._get_view(view_id, view_type, **options)
- # for node in arch.xpath("//header"):
- # node.append(etree.XML("""booooooo"""))
- # return arch, view
-
@api.model
def get_view(self, view_id=None, view_type="form", **options):
res = super().get_view(view_id, view_type, **options)
@@ -302,6 +310,8 @@ class SoongWorkflowMixin(models.AbstractModel):
# 收回
def action_withdraw(self):
for record in self:
+ if self.state == 'start':
+ raise UserError('当前节点不允许收回')
employee_id = self.env['hr.employee']
state_list = []
for state in record.workflow_id.node_ids:
diff --git a/soong_workflow/wizard/soong_workflow_comment_wizard.py b/soong_workflow/wizard/soong_workflow_comment_wizard.py
index ab6ef57de..3b550de2f 100644
--- a/soong_workflow/wizard/soong_workflow_comment_wizard.py
+++ b/soong_workflow/wizard/soong_workflow_comment_wizard.py
@@ -2,7 +2,7 @@
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
from odoo import fields, models, api
-
+from odoo.exceptions import UserError, ValidationError
class SoongWorkflowCommentWizard(models.TransientModel):
_name = "soong.workflow.comment.wizard"
@@ -66,6 +66,27 @@ class SoongWorkflowCommentWizard(models.TransientModel):
record_id = self.env[self.res_model].search([('id', '=', self.res_id)])
self.record_id = record_id
+ @api.onchange('return_link_id')
+ 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 == '拟办':
+ self.employee_ids = record_id.user_id.employee_id
+ elif self.node_btn_name == '退回':
+ workflow_id = self.return_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_id = workflow_id.node_ids[self_state].button_ids[1]
+ if button_id.name != '转交':
+ raise UserError('配置错误,请配置当前{}的转交按钮'.format(self_state))
+ if button_id.is_automatic:
+ employee_user_role_ids = self.env['hr.employee'].search([('user_role_id', '=', button_id.users_role_id.id)])
+ employee_user_role_id = self.env['hr.employee'].search(
+ [('user_role_id', '=', button_id.users_role_id.id),
+ ('department_id', '=', record_id.department_id.id)])
+ self.employee_ids = employee_user_role_ids if not button_id.is_automatic else employee_user_role_id
+
+
def add_comment(self):
self.ensure_one()
cx = self.env.context.copy() or {}
diff --git a/soong_workflow/wizard/soong_workflow_comment_wizard_view.xml b/soong_workflow/wizard/soong_workflow_comment_wizard_view.xml
index eaf5da232..11b1db357 100644
--- a/soong_workflow/wizard/soong_workflow_comment_wizard_view.xml
+++ b/soong_workflow/wizard/soong_workflow_comment_wizard_view.xml
@@ -29,7 +29,7 @@
-
+
diff --git a/yuthon_holiday/views/inherit_hr_leave_allocation_views.xml b/yuthon_holiday/views/inherit_hr_leave_allocation_views.xml
index 759edab85..9282d8a19 100644
--- a/yuthon_holiday/views/inherit_hr_leave_allocation_views.xml
+++ b/yuthon_holiday/views/inherit_hr_leave_allocation_views.xml
@@ -22,6 +22,23 @@
结束时间
show
+
+ bottom
+
+
+ 假期余额
+
+
+ hide
+
+
+ 开始时间
+ show
+
+
+ 结束时间
+ show
+
diff --git a/yuthon_wechat/models/wecom_apps.py b/yuthon_wechat/models/wecom_apps.py
index de56809f0..5d832a870 100644
--- a/yuthon_wechat/models/wecom_apps.py
+++ b/yuthon_wechat/models/wecom_apps.py
@@ -32,18 +32,18 @@ class WeComApps(models.Model):
self.access_token = access_token
return access_token
- def sync_function_api(self, apps_type, api_function, data):
- response = self.sync_function_api_base(apps_type, api_function, data)
+ def sync_function_api(self, apps_type, api_function, data, category="default"):
+ response = self.sync_function_api_base(apps_type, api_function, data, category)
result_data = json.loads(response.content)
return result_data
- def sync_function_api_base(self, apps_type, api_function, data):
- wecom_app = self.sudo().env["wecom.apps.config"].search([("wecom_apps_type", "=", apps_type)], limit=1).wecom_apps_id
+ def sync_function_api_base(self, apps_type, api_function, data, category="default"):
+ wecom_app = self.sudo().env["wecom.apps.config"].search([("wecom_apps_type", "=", apps_type), ("wecom_apps_category", "=", category)], limit=1).wecom_apps_id
response = self.sudo().env['wecom.api'].function_http_request(api_function, data, wecom_app.access_token)
result_data = json.loads(response.content)
if result_data.get("errcode", 0) in [40014, 42001]:
wecom_app.sync_access_token()
- wecom_app = self.sudo().env["wecom.apps.config"].search([("wecom_apps_type", "=", apps_type)],
+ wecom_app = self.sudo().env["wecom.apps.config"].search([("wecom_apps_type", "=", apps_type), ("wecom_apps_category", "=", category)],
limit=1).wecom_apps_id
response = self.sudo().env['wecom.api'].function_http_request(api_function, data, wecom_app.access_token)
return response
@@ -91,7 +91,7 @@ class WeComApps(models.Model):
'content': message
}
}
- result_data = self.sync_function_api("message_send", "MESSAGE_SEND", data)
+ result_data = self.sync_function_api("message_send", "MESSAGE_SEND", data, category)
if result_data.get("errcode", None) == 0:
return True, result_data
return False, result_data
@@ -146,7 +146,7 @@ class WeComApps(models.Model):
"btntxt": btntxt
},
}
- result_data = self.sync_function_api("message_send", "MESSAGE_SEND", data)
+ result_data = self.sync_function_api("message_send", "MESSAGE_SEND", data, category)
if result_data.get("errcode", None) == 0:
return True, result_data
return False, result_data
diff --git a/yuthon_work_brand/views/session_board.xml b/yuthon_work_brand/views/session_board.xml
deleted file mode 100644
index 5d8c7820f..000000000
--- a/yuthon_work_brand/views/session_board.xml
+++ /dev/null
@@ -1,83 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 仪表板
- board.board
- form
-
-
-
-
-
-
- Session Dashboard
- board.board
- form
- form
- menu
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file