From f53742e097a99df49c5c34f24742032668246f1f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E6=9D=8E=E9=B9=8F=E5=AE=87?=
<9664676+pengyuthon@user.noreply.gitee.com>
Date: Thu, 4 Dec 2025 17:28:20 +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
---
yuthon_hr_attendance/__manifest__.py | 2 +
.../models/yuthon_vacation_reports.py | 8 ++--
.../static/src/js/button_vacation_put.js | 42 +++++++++++++++++++
.../static/src/xml/button_vacation_put.xml | 15 +++++++
.../views/yuthon_vacation_reports_views.xml | 6 +--
.../wizard/vacation_confirm_wizard.py | 14 ++++++-
.../wizard/vacation_confirm_wizard_views.xml | 3 ++
.../wizard/vacation_put_wizard.py | 20 +++------
.../wizard/vacation_put_wizard_views.xml | 3 +-
.../views/property_bills_list_views.xml | 2 +-
10 files changed, 87 insertions(+), 28 deletions(-)
create mode 100644 yuthon_hr_attendance/static/src/js/button_vacation_put.js
create mode 100644 yuthon_hr_attendance/static/src/xml/button_vacation_put.xml
diff --git a/yuthon_hr_attendance/__manifest__.py b/yuthon_hr_attendance/__manifest__.py
index 44d5b403e..0da7f5b45 100644
--- a/yuthon_hr_attendance/__manifest__.py
+++ b/yuthon_hr_attendance/__manifest__.py
@@ -89,6 +89,8 @@
'yuthon_hr_attendance/static/src/css/*.css',
'yuthon_hr_attendance/static/src/js/planning_gantt_renderer.js',
'yuthon_hr_attendance/static/src/xml/planning_gantt_renderer.xml',
+ 'yuthon_hr_attendance/static/src/js/button_vacation_put.js',
+ 'yuthon_hr_attendance/static/src/xml/button_vacation_put.xml',
'yuthon_hr_attendance/static/src/planning_gantt/planning_gantt_controller.xml',
],
},
diff --git a/yuthon_hr_attendance/models/yuthon_vacation_reports.py b/yuthon_hr_attendance/models/yuthon_vacation_reports.py
index 9780b365e..18659319c 100644
--- a/yuthon_hr_attendance/models/yuthon_vacation_reports.py
+++ b/yuthon_hr_attendance/models/yuthon_vacation_reports.py
@@ -72,14 +72,14 @@ class YuthonVacationReports(models.Model):
vacation_state = fields.Selection(
selection=[
- ('unconfirmed', "未确认"),
+ ('not_sent', "未发送"),
('confirmed', "已确认"),
- ('pending', "待定"),
+ ('pending', "待确认"),
],
string="状态",
readonly=True, copy=False, index=True,
tracking=3,
- default='unconfirmed')
+ default='not_sent')
@api.constrains('employee_id', 'vacation_date')
def _check_duplicate_monthly_record(self):
@@ -630,7 +630,7 @@ class YuthonVacationReports(models.Model):
current_date = fields.Date.today()
vacation_ids = self.env["yuthon.vacation.reports"].search([
('vacation_date', '=', current_date.replace(day=1)),
- ('vacation_state', '=', 'unconfirmed')
+ ('vacation_state', '!=', 'confirmed')
])
for rec in vacation_ids:
month_start = current_date.replace(day=1)
diff --git a/yuthon_hr_attendance/static/src/js/button_vacation_put.js b/yuthon_hr_attendance/static/src/js/button_vacation_put.js
new file mode 100644
index 000000000..a545b4b9a
--- /dev/null
+++ b/yuthon_hr_attendance/static/src/js/button_vacation_put.js
@@ -0,0 +1,42 @@
+/** @odoo-module */
+import { ListController } from "@web/views/list/list_controller";
+import { registry } from '@web/core/registry';
+import { listView } from '@web/views/list/list_view';
+
+export class CustomAttendanceVacationPutController extends ListController {
+ setup() {
+ super.setup();
+ }
+
+ openVacationPutWizard() {
+ this.actionService.doAction({
+ type: 'ir.actions.act_window',
+ res_model: 'vacation.put.wizard',
+ name: '批量发送确认弹窗',
+ view_mode: 'form',
+ view_type: 'form',
+ views: [[false, 'form']],
+ target: 'new', // 以弹窗形式打开
+ context: {},
+ });
+ }
+
+ openVacationConfirmWizard(){
+ this.actionService.doAction({
+ type: 'ir.actions.act_window',
+ res_model: 'vacation.confirm.wizard',
+ name: '批量确认弹窗',
+ view_mode: 'form',
+ view_type: 'form',
+ views: [[false, 'form']],
+ target: 'new', // 以弹窗形式打开
+ context: {},
+ });
+ }
+}
+
+registry.category("views").add("custom_vacation_put_button", {
+ ...listView,
+ Controller: CustomAttendanceVacationPutController,
+ buttonTemplate: "vacation_put_module.ListView.Buttons",
+});
\ No newline at end of file
diff --git a/yuthon_hr_attendance/static/src/xml/button_vacation_put.xml b/yuthon_hr_attendance/static/src/xml/button_vacation_put.xml
new file mode 100644
index 000000000..828a3c312
--- /dev/null
+++ b/yuthon_hr_attendance/static/src/xml/button_vacation_put.xml
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/yuthon_hr_attendance/views/yuthon_vacation_reports_views.xml b/yuthon_hr_attendance/views/yuthon_vacation_reports_views.xml
index 936468742..3d443c7ed 100644
--- a/yuthon_hr_attendance/views/yuthon_vacation_reports_views.xml
+++ b/yuthon_hr_attendance/views/yuthon_vacation_reports_views.xml
@@ -4,11 +4,7 @@
yuthon.vacation.reports.tree
yuthon.vacation.reports
-
-
+
diff --git a/yuthon_hr_attendance/wizard/vacation_confirm_wizard.py b/yuthon_hr_attendance/wizard/vacation_confirm_wizard.py
index f4f9ecc2f..79280f140 100644
--- a/yuthon_hr_attendance/wizard/vacation_confirm_wizard.py
+++ b/yuthon_hr_attendance/wizard/vacation_confirm_wizard.py
@@ -1,5 +1,8 @@
# -*- coding: utf-8 -*-
import calendar
+
+from dateutil.relativedelta import relativedelta
+
from odoo import models, api, fields, _
from odoo.tools.float_utils import float_round
from odoo.exceptions import ValidationError, UserError
@@ -12,8 +15,15 @@ class VacationConfirmWizard(models.TransientModel):
_name = 'vacation.confirm.wizard'
_description = '批量确认弹窗'
+ company_id = fields.Many2one('res.company', string='公司', default=lambda self: self.env.user.company_id)
+
def action_confirm(self):
- reports = self.env["yuthon.vacation.reports"].search([('vacation_state', '=', 'unconfirmed')])
+ today = date.today()
+ vacation_date = (today - relativedelta(months=1)).replace(day=1)
+ reports = self.env["yuthon.vacation.reports"].search([('vacation_state', '=', 'pending'),
+ ('vacation_date', '=', vacation_date),
+ ('company_id', '=', self.company_id.id)
+ ])
for rec in reports:
- rec.vacation_state = 'confirmed'
+ rec.vacation_state = 'pending'
rec.automatic_confirmation()
diff --git a/yuthon_hr_attendance/wizard/vacation_confirm_wizard_views.xml b/yuthon_hr_attendance/wizard/vacation_confirm_wizard_views.xml
index 34a916fb4..ad9d08483 100644
--- a/yuthon_hr_attendance/wizard/vacation_confirm_wizard_views.xml
+++ b/yuthon_hr_attendance/wizard/vacation_confirm_wizard_views.xml
@@ -8,6 +8,9 @@
确认要批量确认吗?
+
+
+