From 21d19623493748dee6cd11f188420f2ebfafcf17 Mon Sep 17 00:00:00 2001 From: zhou <123@> Date: Mon, 6 Jan 2025 15:11:10 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../data/attendance_time_data.xml | 398 ++++++++-------- yuthon_hr_attendance/data/data_other.xml | 82 ++-- yuthon_hr_attendance/models/hr_attendance.py | 444 +++++++++--------- .../views/all_attendance_menu.xml | 6 + yuthon_property/__manifest__.py | 1 + .../models/property_meter_archives.py | 9 + yuthon_property/security/ir.model.access.csv | 3 +- .../views/property_meter_archives_views.xml | 7 + yuthon_property/wizard/__init__.py | 3 +- .../wizard/property_meter_wizard.py | 49 ++ .../wizard/property_meter_wizard_views.xml | 34 ++ 11 files changed, 572 insertions(+), 464 deletions(-) create mode 100644 yuthon_property/wizard/property_meter_wizard.py create mode 100644 yuthon_property/wizard/property_meter_wizard_views.xml diff --git a/yuthon_hr_attendance/data/attendance_time_data.xml b/yuthon_hr_attendance/data/attendance_time_data.xml index 11418679d..56dec9a51 100644 --- a/yuthon_hr_attendance/data/attendance_time_data.xml +++ b/yuthon_hr_attendance/data/attendance_time_data.xml @@ -1,205 +1,205 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + 定时任务:检查考勤是否异 + + code + model.card_remind() + + + 1 + days + + -1 + + + + 定时任务:粮库上班打卡提醒 + + code + model.card_lc_remind_in() + + + 1 + days + + -1 + + + + 定时任务:粮储下班打卡提醒 + + code + model.card_lc_remind_out() + + + 1 + days + + -1 + + + + 定时任务:粮库值班上班打卡提醒 + + code + model.card_lc_shift_remind_in() + + + 1 + days + + -1 + + + + 定时任务:粮库值班打卡提醒 + + code + model.card_lc_shift_remind() + + + 1 + days + + -1 + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + 定时任务:工程部白班上班打卡提醒 + + code + model.gc_white_in_remind() + + + 1 + days + + -1 + + + + 定时任务:工程部白班值班打卡提醒 + + code + model.gc_white_shift_remind() + + + 1 + days + + -1 + + + + 定时任务:工程部白班下班打卡提醒 + + code + model.gc_white_out_remind() + + + 1 + days + + -1 + + + + 定时任务:工程部中值夜班上班打卡提醒 + + code + model.gc_night_remind_in() + + + 1 + days + + -1 + + + + 定时任务:工程部中值夜班值班打卡提醒 + + code + model.gc_night_remind_shift() + + + 1 + days + + -1 + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + 定时任务:保安部白班下班打卡提醒 + + code + model.ba_card_white_down() + + + 1 + days + + -1 + + + + 定时任务:保安部中班上班打卡提醒 + + code + model.ba_card_mid_up() + + + 1 + days + + -1 + + + + 定时任务:保安部中班下班打卡提醒 + + code + model.ba_card_mid_down() + + + 1 + days + + -1 + + + + 定时任务:保安部夜班上班打卡提醒 + + code + model.ba_card_night_up() + + + 1 + days + + -1 + + + + 定时任务:保安部夜班下班打卡提醒 + + code + model.ba_card_night_down() + + + 1 + days + + -1 + + + diff --git a/yuthon_hr_attendance/data/data_other.xml b/yuthon_hr_attendance/data/data_other.xml index 4864337e4..75529a148 100644 --- a/yuthon_hr_attendance/data/data_other.xml +++ b/yuthon_hr_attendance/data/data_other.xml @@ -1,46 +1,46 @@ - - - - - - - - - - - - - - + + + 定时任务:粮储值班下班打卡提醒 + + code + model.card_lc_shift_remind_out() + + + 1 + days + + -1 + + - - - - - - - - - - - - - + + 定时任务:工程部中值夜班下班打卡提醒 + + code + model.gc_night_remind_out() + + + 1 + days + + -1 + + - - - - - - - - - - - - - - + + 定时任务:保安部白班上班打卡提醒 + + code + model.ba_card_white_up() + + + 1 + days + + -1 + + + \ No newline at end of file diff --git a/yuthon_hr_attendance/models/hr_attendance.py b/yuthon_hr_attendance/models/hr_attendance.py index bc7817302..cf2d32362 100644 --- a/yuthon_hr_attendance/models/hr_attendance.py +++ b/yuthon_hr_attendance/models/hr_attendance.py @@ -191,228 +191,228 @@ class HrAttendance(models.Model): title="打卡异常提醒", description="异常提醒", url=str, btntxt="详细信息") - # # 保安部 - 白班 - # def ba_card_white_up(self): - # ba_up_users = self.env['planning.slot'].search( - # [('role_id.name', '=', '保安部'), ('template_id.planning_name', '=', '白班')]) - # for user in ba_up_users: - # if user.start_datetime.date() == fields.date.today(): - # self.env['card.remind.form'].create({ - # 'name': user.resource_id.employee_id.name, - # 'start_time': datetime.now(), - # 'shift': user.template_id.planning_name, - # 'department': user.department_id.name, }) - # self.card_in_comment(user.resource_id.employee_id,user.template_id.planning_name) - # - # def ba_card_white_down(self): - # ba_up_users = self.env['planning.slot'].search( - # [('role_id.name', '=', '保安部'), ('template_id.planning_name', '=', '白班')]) - # for user in ba_up_users: - # if user.start_datetime.date() == fields.date.today(): - # self.env['card.remind.form'].create({ - # 'name': user.resource_id.employee_id.name, - # 'start_time': datetime.now(), - # 'shift': user.template_id.planning_name, - # 'department': user.department_id.name, }) - # self.card_out_comment(user.resource_id.employee_id,user.template_id.planning_name) - # - # # 保安部 - 中班 - # def ba_card_mid_up(self): - # ba_up_users = self.env['planning.slot'].search( - # [('role_id.name', '=', '保安部'), ('template_id.planning_name', '=', '中班')]) - # for user in ba_up_users: - # if user.start_datetime.date() == fields.date.today(): - # self.env['card.remind.form'].create({ - # 'name': user.resource_id.employee_id.name, - # 'start_time': datetime.now(), - # 'shift': user.template_id.planning_name, - # 'department': user.department_id.name, }) - # self.card_in_comment(user.resource_id.employee_id,user.template_id.planning_name) - # - # def ba_card_mid_down(self): - # ba_up_users = self.env['planning.slot'].search( - # [('role_id.name', '=', '保安部'), ('template_id.planning_name', '=', '中班')]) - # for user in ba_up_users: - # if user.start_datetime.date() == fields.date.today(): - # self.env['card.remind.form'].create({ - # 'name': user.resource_id.employee_id.name, - # 'start_time': datetime.now(), - # 'shift': user.template_id.planning_name, - # 'department': user.department_id.name, }) - # self.card_out_comment(user.resource_id.employee_id,user.template_id.planning_name) - # - # # 保安部 - 夜班 - # def ba_card_night_up(self): - # ba_up_users = self.env['planning.slot'].search( - # [('role_id.name', '=', '保安部'), ('template_id.planning_name', '=', '夜班')]) - # for user in ba_up_users: - # if user.start_datetime.date() == fields.date.today(): - # self.env['card.remind.form'].create({ - # 'name': user.resource_id.employee_id.name, - # 'start_time': datetime.now(), - # 'shift': user.template_id.planning_name, - # 'department': user.department_id.name, }) - # self.card_in_comment(user.resource_id.employee_id,user.template_id.planning_name) - # - # def ba_card_night_down(self): - # ba_up_users = self.env['planning.slot'].search( - # [('role_id.name', '=', '保安部'), ('template_id.planning_name', '=', '夜班')]) - # for user in ba_up_users: - # if user.end_datetime.date() == fields.date.today(): - # self.env['card.remind.form'].create({ - # 'name': user.resource_id.employee_id.name, - # 'start_time': datetime.now(), - # 'shift': user.template_id.planning_name, - # 'department': user.department_id.name, }) - # self.card_out_comment(user.resource_id.employee_id,user.template_id.planning_name) - # - # # 工程部 - 白班 白值 - # def gc_white_in_remind(self): - # ba_up_users = self.env['planning.slot'].search( - # [('role_id.name', '=', '工程部'), ('template_id.planning_name', 'in', ['白班', '白值'])]) - # for user in ba_up_users: - # if user.start_datetime.date() == fields.date.today(): - # self.env['card.remind.form'].create({ - # 'name': user.resource_id.employee_id.name, - # 'start_time': datetime.now(), - # 'shift': user.template_id.planning_name, - # 'department': user.department_id.name, }) - # self.card_in_comment(user.resource_id,user.template_id.planning_name) - # - # def gc_white_shift_remind(self): - # ba_up_users = self.env['planning.slot'].search( - # [('role_id.name', '=', '工程部'), ('template_id.planning_name', '=', '白值')]) - # for user in ba_up_users: - # if user.start_datetime.date() == fields.date.today(): - # self.env['card.remind.form'].create({ - # 'name': user.resource_id.employee_id.name, - # 'start_time': datetime.now(), - # 'shift': user.template_id.planning_name, - # 'department': user.department_id.name, }) - # self.card_duty_remind(user.resource_id.employee_id) - # - # def gc_white_out_remind(self): - # ba_up_users = self.env['planning.slot'].search( - # [('role_id.name', '=', '工程部'), ('template_id.planning_name', 'in', ['白班', '白值'])]) - # for user in ba_up_users: - # if user.start_datetime.date() == fields.date.today(): - # self.env['card.remind.form'].create({ - # 'name': user.resource_id.employee_id.name, - # 'start_time': datetime.now(), - # 'shift': user.template_id.planning_name, - # 'department': user.department_id.name, }) - # self.card_out_comment(user.resource_id.employee_id,user.template_id.planning_name) - # - # # 工程部-中值夜 - # def gc_night_remind_in(self): - # ba_up_users = self.env['planning.slot'].search( - # [('role_id.name', '=', '工程部'), ('template_id.planning_name', '=', '中夜')]) - # for user in ba_up_users: - # if user.start_datetime.date() == fields.date.today(): - # self.env['card.remind.form'].create({ - # 'name': user.resource_id.employee_id.name, - # 'start_time': datetime.now(), - # 'shift': user.template_id.planning_name, - # 'department': user.department_id.name, }) - # self.card_in_comment(user.resource_id.employee_id,user.template_id.planning_name) - # - # def gc_night_remind_shift(self): - # ba_up_users = self.env['planning.slot'].search( - # [('role_id.name', '=', '工程部'), ('template_id.planning_name', '=', '中夜')]) - # for user in ba_up_users: - # if user.end_datetime.date() == fields.date.today(): - # self.env['card.remind.form'].create({ - # 'name': user.resource_id.employee_id.name, - # 'start_time': datetime.now(), - # 'shift': user.template_id.planning_name, - # 'department': user.department_id.name, }) - # self.card_duty_remind(user.resource_id.employee_id) - # - # def gc_night_remind_out(self): - # ba_up_users = self.env['planning.slot'].search( - # [('role_id.name', '=', '工程部'), ('template_id.planning_name', '=', '中夜')]) - # for user in ba_up_users: - # if user.end_datetime.date() == fields.date.today(): - # self.env['card.remind.form'].create({ - # 'name': user.resource_id.employee_id.name, - # 'start_time': datetime.now(), - # 'shift': user.template_id.planning_name, - # 'department': user.department_id.name, }) - # self.card_out_comment(user.resource_id.employee_id,user.template_id.planning_name) - # - # # 粮储-白班 - # def card_lc_remind_in(self): - # ba_up_users = self.env['planning.slot'].search( - # [('role_id.name', '=', '联安粮库'), ('template_id.planning_name', '=', '白班')]) - # for user in ba_up_users: - # if user.start_datetime.date() == fields.date.today(): - # self.env['card.remind.form'].create({ - # 'name': user.resource_id.employee_id.name, - # 'start_time': datetime.now(), - # 'shift': user.template_id.planning_name, - # 'department': user.department_id.name, }) - # self.card_in_comment(user.resource_id.employee_id,user.template_id.planning_name) - # - # def card_lc_remind_out(self): - # ba_up_users = self.env['planning.slot'].search( - # [('role_id.name', '=', '联安粮库'), ('template_id.planning_name', '=', '白班')]) - # for user in ba_up_users: - # if user.start_datetime.date() == fields.date.today(): - # self.env['card.remind.form'].create({ - # 'name': user.resource_id.employee_id.name, - # 'start_time':datetime.now(), - # 'shift':user.template_id.planning_name, - # 'department': user.department_id.name,}) - # self.card_out_comment(user.resource_id.employee_id,user.template_id.planning_name) - # - # # 粮储-值班 - # def card_lc_shift_remind_in(self): - # ba_up_users = self.env['planning.slot'].search( - # [('role_id.name', '=', '联安粮库'), ('template_id.planning_name', '=', '白值')]) - # for user in ba_up_users: - # if user.start_datetime.date() == fields.date.today(): - # self.env['card.remind.form'].create({ - # 'name': user.resource_id.employee_id.name, - # 'start_time': datetime.now(), - # 'shift': user.template_id.planning_name, - # 'department': user.department_id.name, }) - # self.card_in_comment(user.resource_id.employee_id,user.template_id.planning_name) - # - # def card_lc_shift_remind(self): - # ba_up_users = self.env['planning.slot'].search( - # [('role_id.name', '=', '联安粮库'), ('template_id.planning_name', '=', '白值')]) - # for user in ba_up_users: - # if user.start_datetime.date() == fields.date.today(): - # self.env['card.remind.form'].create({ - # 'name': user.resource_id.employee_id.name, - # 'start_time': datetime.now(), - # 'shift': user.template_id.planning_name, - # 'department': user.department_id.name, }) - # self.card_duty_remind(user.resource_id.employee_id) - # - # def card_lc_shift_remind_out(self): - # ba_up_users = self.env['planning.slot'].search( - # [('role_id.name', '=', '联安粮库'), ('template_id.planning_name', '=', '白值')]) - # for user in ba_up_users: - # if user.start_datetime.date() == fields.date.today(): - # self.env['card.remind.form'].create({ - # 'name': user.resource_id.employee_id.name, - # 'start_time': datetime.now(), - # 'shift': user.template_id.planning_name, - # 'department': user.department_id.name, }) - # self.card_out_comment(user.resource_id.employee_id,user.template_id.planning_name) - # - # def card_in_comment(self, employee_id, planning_name): - # data = f"您的班次是{planning_name},还有10分钟上班,记得打卡" - # self.sudo().env["wecom.apps"].sync_send_message(category='att', user_id=employee_id.wecom_userid, message=data) - # - # def card_out_comment(self, employee_id,planning_name): - # data = f"您的班次是{planning_name},您该下班了,记得打卡" - # self.sudo().env["wecom.apps"].sync_send_message(category='att', user_id=employee_id.wecom_userid, message=data) - # - # def card_duty_remind(self, employee_id): - # data = "今天您值班,记得打卡" - # self.sudo().env["wecom.apps"].sync_send_message(category='att', user_id=employee_id.wecom_userid, message=data) + # 保安部 - 白班 + def ba_card_white_up(self): + ba_up_users = self.env['planning.slot'].search( + [('role_id.name', '=', '保安部'), ('template_id.planning_name', '=', '白班')]) + for user in ba_up_users: + if user.start_datetime.date() == fields.date.today(): + self.env['card.remind.form'].create({ + 'name': user.resource_id.employee_id.name, + 'start_time': datetime.now(), + 'shift': user.template_id.planning_name, + 'department': user.department_id.name, }) + self.card_in_comment(user.resource_id.employee_id,user.template_id.planning_name) + + def ba_card_white_down(self): + ba_up_users = self.env['planning.slot'].search( + [('role_id.name', '=', '保安部'), ('template_id.planning_name', '=', '白班')]) + for user in ba_up_users: + if user.start_datetime.date() == fields.date.today(): + self.env['card.remind.form'].create({ + 'name': user.resource_id.employee_id.name, + 'start_time': datetime.now(), + 'shift': user.template_id.planning_name, + 'department': user.department_id.name, }) + self.card_out_comment(user.resource_id.employee_id,user.template_id.planning_name) + + # 保安部 - 中班 + def ba_card_mid_up(self): + ba_up_users = self.env['planning.slot'].search( + [('role_id.name', '=', '保安部'), ('template_id.planning_name', '=', '中班')]) + for user in ba_up_users: + if user.start_datetime.date() == fields.date.today(): + self.env['card.remind.form'].create({ + 'name': user.resource_id.employee_id.name, + 'start_time': datetime.now(), + 'shift': user.template_id.planning_name, + 'department': user.department_id.name, }) + self.card_in_comment(user.resource_id.employee_id,user.template_id.planning_name) + + def ba_card_mid_down(self): + ba_up_users = self.env['planning.slot'].search( + [('role_id.name', '=', '保安部'), ('template_id.planning_name', '=', '中班')]) + for user in ba_up_users: + if user.start_datetime.date() == fields.date.today(): + self.env['card.remind.form'].create({ + 'name': user.resource_id.employee_id.name, + 'start_time': datetime.now(), + 'shift': user.template_id.planning_name, + 'department': user.department_id.name, }) + self.card_out_comment(user.resource_id.employee_id,user.template_id.planning_name) + + # 保安部 - 夜班 + def ba_card_night_up(self): + ba_up_users = self.env['planning.slot'].search( + [('role_id.name', '=', '保安部'), ('template_id.planning_name', '=', '夜班')]) + for user in ba_up_users: + if user.start_datetime.date() == fields.date.today(): + self.env['card.remind.form'].create({ + 'name': user.resource_id.employee_id.name, + 'start_time': datetime.now(), + 'shift': user.template_id.planning_name, + 'department': user.department_id.name, }) + self.card_in_comment(user.resource_id.employee_id,user.template_id.planning_name) + + def ba_card_night_down(self): + ba_up_users = self.env['planning.slot'].search( + [('role_id.name', '=', '保安部'), ('template_id.planning_name', '=', '夜班')]) + for user in ba_up_users: + if user.end_datetime.date() == fields.date.today(): + self.env['card.remind.form'].create({ + 'name': user.resource_id.employee_id.name, + 'start_time': datetime.now(), + 'shift': user.template_id.planning_name, + 'department': user.department_id.name, }) + self.card_out_comment(user.resource_id.employee_id,user.template_id.planning_name) + + # 工程部 - 白班 白值 + def gc_white_in_remind(self): + ba_up_users = self.env['planning.slot'].search( + [('role_id.name', '=', '工程部'), ('template_id.planning_name', 'in', ['白班', '白值'])]) + for user in ba_up_users: + if user.start_datetime.date() == fields.date.today(): + self.env['card.remind.form'].create({ + 'name': user.resource_id.employee_id.name, + 'start_time': datetime.now(), + 'shift': user.template_id.planning_name, + 'department': user.department_id.name, }) + self.card_in_comment(user.resource_id,user.template_id.planning_name) + + def gc_white_shift_remind(self): + ba_up_users = self.env['planning.slot'].search( + [('role_id.name', '=', '工程部'), ('template_id.planning_name', '=', '白值')]) + for user in ba_up_users: + if user.start_datetime.date() == fields.date.today(): + self.env['card.remind.form'].create({ + 'name': user.resource_id.employee_id.name, + 'start_time': datetime.now(), + 'shift': user.template_id.planning_name, + 'department': user.department_id.name, }) + self.card_duty_remind(user.resource_id.employee_id) + + def gc_white_out_remind(self): + ba_up_users = self.env['planning.slot'].search( + [('role_id.name', '=', '工程部'), ('template_id.planning_name', 'in', ['白班', '白值'])]) + for user in ba_up_users: + if user.start_datetime.date() == fields.date.today(): + self.env['card.remind.form'].create({ + 'name': user.resource_id.employee_id.name, + 'start_time': datetime.now(), + 'shift': user.template_id.planning_name, + 'department': user.department_id.name, }) + self.card_out_comment(user.resource_id.employee_id,user.template_id.planning_name) + + # 工程部-中值夜 + def gc_night_remind_in(self): + ba_up_users = self.env['planning.slot'].search( + [('role_id.name', '=', '工程部'), ('template_id.planning_name', '=', '中夜')]) + for user in ba_up_users: + if user.start_datetime.date() == fields.date.today(): + self.env['card.remind.form'].create({ + 'name': user.resource_id.employee_id.name, + 'start_time': datetime.now(), + 'shift': user.template_id.planning_name, + 'department': user.department_id.name, }) + self.card_in_comment(user.resource_id.employee_id,user.template_id.planning_name) + + def gc_night_remind_shift(self): + ba_up_users = self.env['planning.slot'].search( + [('role_id.name', '=', '工程部'), ('template_id.planning_name', '=', '中夜')]) + for user in ba_up_users: + if user.end_datetime.date() == fields.date.today(): + self.env['card.remind.form'].create({ + 'name': user.resource_id.employee_id.name, + 'start_time': datetime.now(), + 'shift': user.template_id.planning_name, + 'department': user.department_id.name, }) + self.card_duty_remind(user.resource_id.employee_id) + + def gc_night_remind_out(self): + ba_up_users = self.env['planning.slot'].search( + [('role_id.name', '=', '工程部'), ('template_id.planning_name', '=', '中夜')]) + for user in ba_up_users: + if user.end_datetime.date() == fields.date.today(): + self.env['card.remind.form'].create({ + 'name': user.resource_id.employee_id.name, + 'start_time': datetime.now(), + 'shift': user.template_id.planning_name, + 'department': user.department_id.name, }) + self.card_out_comment(user.resource_id.employee_id,user.template_id.planning_name) + + # 粮储-白班 + def card_lc_remind_in(self): + ba_up_users = self.env['planning.slot'].search( + [('role_id.name', '=', '联安粮库'), ('template_id.planning_name', '=', '白班')]) + for user in ba_up_users: + if user.start_datetime.date() == fields.date.today(): + self.env['card.remind.form'].create({ + 'name': user.resource_id.employee_id.name, + 'start_time': datetime.now(), + 'shift': user.template_id.planning_name, + 'department': user.department_id.name, }) + self.card_in_comment(user.resource_id.employee_id,user.template_id.planning_name) + + def card_lc_remind_out(self): + ba_up_users = self.env['planning.slot'].search( + [('role_id.name', '=', '联安粮库'), ('template_id.planning_name', '=', '白班')]) + for user in ba_up_users: + if user.start_datetime.date() == fields.date.today(): + self.env['card.remind.form'].create({ + 'name': user.resource_id.employee_id.name, + 'start_time':datetime.now(), + 'shift':user.template_id.planning_name, + 'department': user.department_id.name,}) + self.card_out_comment(user.resource_id.employee_id,user.template_id.planning_name) + + # 粮储-值班 + def card_lc_shift_remind_in(self): + ba_up_users = self.env['planning.slot'].search( + [('role_id.name', '=', '联安粮库'), ('template_id.planning_name', '=', '白值')]) + for user in ba_up_users: + if user.start_datetime.date() == fields.date.today(): + self.env['card.remind.form'].create({ + 'name': user.resource_id.employee_id.name, + 'start_time': datetime.now(), + 'shift': user.template_id.planning_name, + 'department': user.department_id.name, }) + self.card_in_comment(user.resource_id.employee_id,user.template_id.planning_name) + + def card_lc_shift_remind(self): + ba_up_users = self.env['planning.slot'].search( + [('role_id.name', '=', '联安粮库'), ('template_id.planning_name', '=', '白值')]) + for user in ba_up_users: + if user.start_datetime.date() == fields.date.today(): + self.env['card.remind.form'].create({ + 'name': user.resource_id.employee_id.name, + 'start_time': datetime.now(), + 'shift': user.template_id.planning_name, + 'department': user.department_id.name, }) + self.card_duty_remind(user.resource_id.employee_id) + + def card_lc_shift_remind_out(self): + ba_up_users = self.env['planning.slot'].search( + [('role_id.name', '=', '联安粮库'), ('template_id.planning_name', '=', '白值')]) + for user in ba_up_users: + if user.start_datetime.date() == fields.date.today(): + self.env['card.remind.form'].create({ + 'name': user.resource_id.employee_id.name, + 'start_time': datetime.now(), + 'shift': user.template_id.planning_name, + 'department': user.department_id.name, }) + self.card_out_comment(user.resource_id.employee_id,user.template_id.planning_name) + + def card_in_comment(self, employee_id, planning_name): + data = f"您的班次是{planning_name},还有10分钟上班,记得打卡" + self.sudo().env["wecom.apps"].sync_send_message(category='att', user_id=employee_id.wecom_userid, message=data) + + def card_out_comment(self, employee_id,planning_name): + data = f"您的班次是{planning_name},您该下班了,记得打卡" + self.sudo().env["wecom.apps"].sync_send_message(category='att', user_id=employee_id.wecom_userid, message=data) + + def card_duty_remind(self, employee_id): + data = "今天您值班,记得打卡" + self.sudo().env["wecom.apps"].sync_send_message(category='att', user_id=employee_id.wecom_userid, message=data) # @api.depends('employee_id') # def compute_shift_id(self): diff --git a/yuthon_hr_attendance/views/all_attendance_menu.xml b/yuthon_hr_attendance/views/all_attendance_menu.xml index 637c0e7f7..fa51c1325 100644 --- a/yuthon_hr_attendance/views/all_attendance_menu.xml +++ b/yuthon_hr_attendance/views/all_attendance_menu.xml @@ -23,6 +23,12 @@ groups="group_he_attendance_user" action="hr_attendance_action1" sequence="1"/> + property.meter.archives tree,form + + 导入电表 + + + code + action = model.action_property_meter_wizard() + \ No newline at end of file diff --git a/yuthon_property/wizard/__init__.py b/yuthon_property/wizard/__init__.py index 47e9aac28..d3ac592d8 100644 --- a/yuthon_property/wizard/__init__.py +++ b/yuthon_property/wizard/__init__.py @@ -1 +1,2 @@ -from . import yuthon_property_wizard \ No newline at end of file +from . import yuthon_property_wizard +from . import property_meter_wizard \ No newline at end of file diff --git a/yuthon_property/wizard/property_meter_wizard.py b/yuthon_property/wizard/property_meter_wizard.py new file mode 100644 index 000000000..774d8e8f9 --- /dev/null +++ b/yuthon_property/wizard/property_meter_wizard.py @@ -0,0 +1,49 @@ +# -*- coding: utf-8 -*- +from odoo import models, fields, api, _, SUPERUSER_ID +from odoo.exceptions import ValidationError, UserError +from pypinyin import pinyin, Style +import xlrd +import base64 +import datetime +from datetime import datetime + + +class PropertyMeterWizard(models.Model): + _name = 'property.meter.wizard' + + excel_file = fields.Binary(string="上传Excel表") + excel_name = fields.Char(string="文件名") + + def confirm(self): + """ + 导入excel文件,按行读取数据并处理 + """ + if not self.excel_file: + raise ValidationError('请上传文件。') + book = xlrd.open_workbook(file_contents=base64.decodebytes(self.excel_file)) + sh = book.sheet_by_index(0) + for rx in range(1, sh.nrows): + row = sh.row(rx) + self.property_meter_data(row) + + def property_meter_data(self,row): + name = row[0].value + unit_number = row[1].value + property_id = self.env['yuthon.property'].search([('name', '=', row[2].value)]) + meter_list = [] + type_dict = {'公共':'public', '收费':'fees', '':''} + type = type_dict.get(row[3].value) + meter_data = { + 'name': name, + 'unit_number': unit_number, + 'type': type + } + meter_id = self.env['property.meter.archives'].create(meter_data) + if property_id: + meter_list.append((0, 0, { + 'property_meter_archives_id': meter_id.id, + })) + property_id.write({ + 'is_electricity_meter' : True, + }) + property_id.energy_meter_ids = meter_list diff --git a/yuthon_property/wizard/property_meter_wizard_views.xml b/yuthon_property/wizard/property_meter_wizard_views.xml new file mode 100644 index 000000000..3deac741e --- /dev/null +++ b/yuthon_property/wizard/property_meter_wizard_views.xml @@ -0,0 +1,34 @@ + + + + 电仪表模板 下载 + self + . + + + 审批意见弹窗 + property.meter.wizard + +
+ +
+
+ + + + + + + + +
+ +
+
+
+
\ No newline at end of file