From 0a5a4ee2dbe9551557ecc4681518505c082e5a5b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E9=B9=8F=E5=AE=87?= Date: Mon, 9 Feb 2026 00:25:23 +0800 Subject: [PATCH 1/5] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- yuthon_hr_attendance/wizard/export_date_wizard.py | 7 +++++++ yuthon_hr_attendance/wizard/export_date_wizard_views.xml | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/yuthon_hr_attendance/wizard/export_date_wizard.py b/yuthon_hr_attendance/wizard/export_date_wizard.py index e1e9cdbe2..6274b5528 100644 --- a/yuthon_hr_attendance/wizard/export_date_wizard.py +++ b/yuthon_hr_attendance/wizard/export_date_wizard.py @@ -74,6 +74,7 @@ class ExportDateWizard(models.TransientModel): 'fields_name': fields_name, 'field_label': field_label, 'active_ids': filtered_ids, + 'date_field': False, } return { @@ -117,6 +118,7 @@ class ExportDateWizard(models.TransientModel): 'fields_name': fields_name, 'field_label': field_label, 'active_ids': filtered_ids, + 'date_field': False, } return { @@ -155,6 +157,7 @@ class ExportDateWizard(models.TransientModel): 'fields_name': fields_name, 'field_label': field_label, 'active_ids': filtered_ids, + 'date_field': False, } return { @@ -194,6 +197,7 @@ class ExportDateWizard(models.TransientModel): 'fields_name': fields_name, 'field_label': field_label, 'active_ids': filtered_ids, + 'date_field': False, } return { @@ -233,6 +237,7 @@ class ExportDateWizard(models.TransientModel): 'fields_name': fields_name, 'field_label': field_label, 'active_ids': filtered_ids, + 'date_field': False, } return { @@ -272,6 +277,7 @@ class ExportDateWizard(models.TransientModel): 'fields_name': fields_name, 'field_label': field_label, 'active_ids': filtered_ids, + 'date_field': False, } return { @@ -311,6 +317,7 @@ class ExportDateWizard(models.TransientModel): 'fields_name': fields_name, 'field_label': field_label, 'active_ids': filtered_ids, + 'date_field': False, } return { diff --git a/yuthon_hr_attendance/wizard/export_date_wizard_views.xml b/yuthon_hr_attendance/wizard/export_date_wizard_views.xml index 1a7ccef00..a6edfa6cb 100644 --- a/yuthon_hr_attendance/wizard/export_date_wizard_views.xml +++ b/yuthon_hr_attendance/wizard/export_date_wizard_views.xml @@ -6,7 +6,7 @@
- + From 80b2bae4feaf053620e8d9825b2573c9af75f789 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E9=B9=8F=E5=AE=87?= Date: Mon, 9 Feb 2026 00:35:21 +0800 Subject: [PATCH 2/5] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../wizard/export_date_wizard.py | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/yuthon_hr_attendance/wizard/export_date_wizard.py b/yuthon_hr_attendance/wizard/export_date_wizard.py index 6274b5528..4a90b8e05 100644 --- a/yuthon_hr_attendance/wizard/export_date_wizard.py +++ b/yuthon_hr_attendance/wizard/export_date_wizard.py @@ -75,6 +75,10 @@ class ExportDateWizard(models.TransientModel): 'field_label': field_label, 'active_ids': filtered_ids, 'date_field': False, + 'date_name': '', + 'start_date': False, + 'end_date': False, + 'field_order': '', } return { @@ -119,6 +123,10 @@ class ExportDateWizard(models.TransientModel): 'field_label': field_label, 'active_ids': filtered_ids, 'date_field': False, + 'date_name': '', + 'start_date': False, + 'end_date': False, + 'field_order': '', } return { @@ -158,6 +166,10 @@ class ExportDateWizard(models.TransientModel): 'field_label': field_label, 'active_ids': filtered_ids, 'date_field': False, + 'date_name': '', + 'start_date': False, + 'end_date': False, + 'field_order': '', } return { @@ -198,6 +210,10 @@ class ExportDateWizard(models.TransientModel): 'field_label': field_label, 'active_ids': filtered_ids, 'date_field': False, + 'date_name': '', + 'start_date': False, + 'end_date': False, + 'field_order': '', } return { @@ -238,6 +254,10 @@ class ExportDateWizard(models.TransientModel): 'field_label': field_label, 'active_ids': filtered_ids, 'date_field': False, + 'date_name': '', + 'start_date': False, + 'end_date': False, + 'field_order': '', } return { @@ -278,6 +298,10 @@ class ExportDateWizard(models.TransientModel): 'field_label': field_label, 'active_ids': filtered_ids, 'date_field': False, + 'date_name': '', + 'start_date': False, + 'end_date': False, + 'field_order': '', } return { @@ -318,6 +342,10 @@ class ExportDateWizard(models.TransientModel): 'field_label': field_label, 'active_ids': filtered_ids, 'date_field': False, + 'date_name': '', + 'start_date': False, + 'end_date': False, + 'field_order': '', } return { From 605b33cee527b08c2dcd46566040e7a84c3b0350 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E9=B9=8F=E5=AE=87?= Date: Mon, 9 Feb 2026 00:41:06 +0800 Subject: [PATCH 3/5] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- excel_report_designer/controllers/excel_report_designer.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/excel_report_designer/controllers/excel_report_designer.py b/excel_report_designer/controllers/excel_report_designer.py index c068dda19..a902a9bcb 100644 --- a/excel_report_designer/controllers/excel_report_designer.py +++ b/excel_report_designer/controllers/excel_report_designer.py @@ -50,12 +50,18 @@ class XLSXReportController(http.Controller): report_obj.get_xlsx_salary_report(options, response) elif report_name == '请假情况报表': report_obj.get_xlsx_leave_report(options, response) + elif report_name == '归档请假情况报表': + report_obj.get_xlsx_leave_report(options, response) elif report_name == '加班明细报表': report_obj.get_xlsx_overtime_report(options, response) elif report_name == '加班详情报表': report_obj.get_xlsx_overtime_detail_report(options, response) elif report_name == '加班归档明细报表': report_obj.get_xlsx_overtime_active_report(options, response) + elif report_name == '误餐明细报表': + report_obj.get_xlsx_meal_report(options, response) + elif report_name == '误餐归档明细报表': + report_obj.get_xlsx_meal_active_report(options, response) else: report_obj.get_xlsx_report(options, response) response.set_cookie('fileToken', token) From 2b0f5268be2c334cda567772a47070946aa028de Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E9=B9=8F=E5=AE=87?= Date: Mon, 9 Feb 2026 00:45:45 +0800 Subject: [PATCH 4/5] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../wizard/export_date_wizard.py | 35 ------------------- 1 file changed, 35 deletions(-) diff --git a/yuthon_hr_attendance/wizard/export_date_wizard.py b/yuthon_hr_attendance/wizard/export_date_wizard.py index 4a90b8e05..e1e9cdbe2 100644 --- a/yuthon_hr_attendance/wizard/export_date_wizard.py +++ b/yuthon_hr_attendance/wizard/export_date_wizard.py @@ -74,11 +74,6 @@ class ExportDateWizard(models.TransientModel): 'fields_name': fields_name, 'field_label': field_label, 'active_ids': filtered_ids, - 'date_field': False, - 'date_name': '', - 'start_date': False, - 'end_date': False, - 'field_order': '', } return { @@ -122,11 +117,6 @@ class ExportDateWizard(models.TransientModel): 'fields_name': fields_name, 'field_label': field_label, 'active_ids': filtered_ids, - 'date_field': False, - 'date_name': '', - 'start_date': False, - 'end_date': False, - 'field_order': '', } return { @@ -165,11 +155,6 @@ class ExportDateWizard(models.TransientModel): 'fields_name': fields_name, 'field_label': field_label, 'active_ids': filtered_ids, - 'date_field': False, - 'date_name': '', - 'start_date': False, - 'end_date': False, - 'field_order': '', } return { @@ -209,11 +194,6 @@ class ExportDateWizard(models.TransientModel): 'fields_name': fields_name, 'field_label': field_label, 'active_ids': filtered_ids, - 'date_field': False, - 'date_name': '', - 'start_date': False, - 'end_date': False, - 'field_order': '', } return { @@ -253,11 +233,6 @@ class ExportDateWizard(models.TransientModel): 'fields_name': fields_name, 'field_label': field_label, 'active_ids': filtered_ids, - 'date_field': False, - 'date_name': '', - 'start_date': False, - 'end_date': False, - 'field_order': '', } return { @@ -297,11 +272,6 @@ class ExportDateWizard(models.TransientModel): 'fields_name': fields_name, 'field_label': field_label, 'active_ids': filtered_ids, - 'date_field': False, - 'date_name': '', - 'start_date': False, - 'end_date': False, - 'field_order': '', } return { @@ -341,11 +311,6 @@ class ExportDateWizard(models.TransientModel): 'fields_name': fields_name, 'field_label': field_label, 'active_ids': filtered_ids, - 'date_field': False, - 'date_name': '', - 'start_date': False, - 'end_date': False, - 'field_order': '', } return { From c26bc44b3267c37aa3668236f0fc52a098c43a5a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E9=B9=8F=E5=AE=87?= Date: Mon, 9 Feb 2026 00:58:58 +0800 Subject: [PATCH 5/5] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- excel_report_designer/models/report_excel.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/excel_report_designer/models/report_excel.py b/excel_report_designer/models/report_excel.py index 7be98878c..aa14f078b 100644 --- a/excel_report_designer/models/report_excel.py +++ b/excel_report_designer/models/report_excel.py @@ -1390,7 +1390,19 @@ class ReportExcel(models.Model): for rec in records: col = 0 for field_name in data['fields_name']: + # 特殊处理:vacation.meal.active 没有 department_id,通过 employee_id 获取 + if field_name == 'department_id' and 'department_id' not in rec._fields: + value = rec.employee_id.department_id.display_name if rec.employee_id and rec.employee_id.department_id else '' + sheet.write(row, col, value, data_format) + col += 1 + continue + field = rec._fields.get(field_name) + if not field: + sheet.write(row, col, '', data_format) + col += 1 + continue + value = rec[field_name] if isinstance(value, datetime.datetime): if value: