@@ -47,9 +47,15 @@ class SoongWorkflowRecord(models.Model):
|
||||
department_id = fields.Many2one("hr.department", string="部门", required=True)
|
||||
done_by = fields.Many2one(comodel_name="res.users", string="发起人")
|
||||
active = fields.Boolean(string="归档", default=True)
|
||||
is_manager = fields.Boolean(string="是否管理员", compute='_compute_part_of_department', store=True)
|
||||
soong_state = fields.Selection([('to_do', '待办'), ('done', '已办')], string="流程状态", default="done")
|
||||
member_of_department = fields.Boolean("是否是本部门数据", compute='_compute_part_of_department', search='_search_part_of_department')
|
||||
|
||||
@api.depends_context('uid')
|
||||
def _compute_is_manager(self):
|
||||
for record in self:
|
||||
record.is_manager = self.env.user.has_group('soong_workflow.group_soong_workflow_manager')
|
||||
|
||||
def admin_end(self):
|
||||
pass
|
||||
|
||||
@@ -72,9 +78,9 @@ class SoongWorkflowRecord(models.Model):
|
||||
|
||||
|
||||
@api.depends_context('uid', 'company')
|
||||
@api.depends('department_id')
|
||||
def _compute_part_of_department(self):
|
||||
user_employee = self._get_valid_employee_for_user()
|
||||
self.is_manager = self.env.user.has_group('soong_workflow.group_soong_workflow_manager')
|
||||
active_department = user_employee.department_id
|
||||
parent_department = active_department.parent_id
|
||||
# 递归获取父部门的所有子部门
|
||||
|
||||
@@ -83,7 +83,9 @@
|
||||
<field name="soong_state"/>
|
||||
<field name="reclaim_state" column_invisible="1"/>
|
||||
<field name="member_of_department" optional="hide"/>
|
||||
<button name="delete_record" type="object" string="删除" class="btn-primary" confirm="你确定要删除吗?" groups="soong_workflow.group_soong_workflow_manager"/>
|
||||
<field name="is_manager" optional="hide"/>
|
||||
<button name="delete_record" type="object" string="删除" class="btn-primary" confirm="你确定要删除吗?"
|
||||
invisible="not (is_manager or approve_state == 'draft')"/>
|
||||
<button name="reminders_record" type="object" string="催办" class="btn-primary"
|
||||
groups="soong_workflow.group_soong_workflow_manager"/>
|
||||
<button name="revoke_record" type="object" string="撤销" class="btn-primary"
|
||||
|
||||
@@ -114,14 +114,9 @@ class HrAttendance(models.Model):
|
||||
def compute_company_id(self):
|
||||
employee_date_records = {}
|
||||
for att in self.env["hr.attendance"].browse(self._context.get('active_ids', self._context.get('active_id'))):
|
||||
if not (att.employee_id and att.current_data):
|
||||
continue # 跳过缺少员工或日期的记录
|
||||
|
||||
# 获取员工ID和记录日期(忽略时间部分)
|
||||
employee_id = att.employee_id.id
|
||||
# 创建唯一分组键 (员工ID, 日期)
|
||||
group_key = (employee_id, att.current_data)
|
||||
|
||||
# 将记录按员工+日期分组
|
||||
if group_key not in employee_date_records:
|
||||
employee_date_records[group_key] = []
|
||||
@@ -224,7 +219,7 @@ class HrAttendance(models.Model):
|
||||
if record.absenteeism_card:
|
||||
absenteeism_card += 1
|
||||
if has_abnormal:
|
||||
url = "#小程序://天投云/XttsPpKg3MEpY7h"
|
||||
url = f"http://oa.thtzjt.com/#/clock_in_staticstis?user_id={employee.user_id.id}"
|
||||
self.sudo().env["wecom.apps"].sync_send_message_textcard(category='att', user_id=employee.wecom_userid, title="打卡异常提醒",
|
||||
description="本月迟到: {}\n本月缺卡: {}\n本月早退: {}\n本月异常:{}\n 本月旷工: {}\n"
|
||||
.format(is_late_card, is_no_card, is_early_card, is_abnormal, absenteeism_card),
|
||||
|
||||
@@ -128,7 +128,7 @@ class YuthonNotice(models.Model):
|
||||
menu_id = self.env['ir.ui.menu'].search([('name', '=', '通知公告'), ('parent_id', '!=', False)])
|
||||
conf_old = self.env['yuthon.confirm.users'].search([('notice_id', '=', self.id), ('employee_id', 'in', self.users_ids.ids)])
|
||||
for user_id in self.users_ids:
|
||||
url = f'https://oa.thtzjt.com/web?login={user_id.login}&oauth_uid={user_id.employee_id.wecom_userid}#id={self.id}&cids=2&action={menu_id.action.id}&model=yuthon.notice&view_type=form&menu_id={menu_id.id}'
|
||||
url = f'http://oa.thtzjt.com/webh5#/notice?id={self.id}'
|
||||
if conf_old:
|
||||
for co in conf_old:
|
||||
co.write({'state': 'no'})
|
||||
|
||||
@@ -174,8 +174,7 @@ class YuthonWillTask(models.Model):
|
||||
for employee_id in self.env['hr.employee'].search([('id', 'in', employee_list)]):
|
||||
if not employee_id.wecom_userid:
|
||||
raise UserError("请同步{}的企业微信".format(employee_id.name))
|
||||
menu_id = self.env['ir.ui.menu'].search([('name', '=', '我的日程')])
|
||||
url = f'https://oa.thtzjt.com/web?login={employee_id.user_id.login}#id={self.id}&cids=2&action={menu_id.action.id}&model=yuthon.will.task&view_type=form&menu_id={menu_id.id}'
|
||||
url = f'http:://oa.thtzjt.com/webh5#/journey?id={self.id}'
|
||||
data_name = "事项名称: " + self.name + '\n'
|
||||
# data_start_time = '开始时间:' + str(self.start_time + timedelta(hours=8)) + '\n'
|
||||
data_user_ids = '参与人: ' + ', '.join(self.employee_ids.mapped('name')) + '\n'
|
||||
|
||||
Reference in New Issue
Block a user