From 8a90b3ecfed46d14c54a26f86cfbd9d96214b57d 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: Mon, 26 Jan 2026 17:35: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
---
yuthon_hr_attendance/__manifest__.py | 1 +
yuthon_hr_attendance/models/__init__.py | 1 +
yuthon_hr_attendance/models/card_approval.py | 1 +
.../models/overtime_approval.py | 1 +
.../models/yuthon_overtime_line.py | 23 ++++++++++++++++
.../security/ir.model.access.csv | 4 ++-
.../static/src/js/button_vacation_confirm.js | 6 +++++
.../static/src/js/button_vacation_put.js | 18 ++-----------
.../src/xml/button_vacation_confirm.xml | 6 +++++
yuthon_hr_attendance/views/card_approval.xml | 1 +
.../views/yuthon_overtime_line_views.xml | 26 +++++++++++++++++++
.../views/yuthon_vacation_reports_views.xml | 2 +-
12 files changed, 72 insertions(+), 18 deletions(-)
create mode 100644 yuthon_hr_attendance/models/yuthon_overtime_line.py
create mode 100644 yuthon_hr_attendance/views/yuthon_overtime_line_views.xml
diff --git a/yuthon_hr_attendance/__manifest__.py b/yuthon_hr_attendance/__manifest__.py
index f775b316b..2162b408c 100644
--- a/yuthon_hr_attendance/__manifest__.py
+++ b/yuthon_hr_attendance/__manifest__.py
@@ -58,6 +58,7 @@
'views/card_remind_form.xml',
'views/yuthon_customer_planning_views.xml',
'views/planning_slot_template_views.xml',
+ 'views/yuthon_overtime_line_views.xml',
'views/vacation_overtime_active_views.xml',
'views/hr_attendance_month_views.xml',
'views/wifi_message_view.xml',
diff --git a/yuthon_hr_attendance/models/__init__.py b/yuthon_hr_attendance/models/__init__.py
index c401c8c4e..523464933 100644
--- a/yuthon_hr_attendance/models/__init__.py
+++ b/yuthon_hr_attendance/models/__init__.py
@@ -36,6 +36,7 @@ from . import yuthon_holiday_statement
from . import yuthon_meal_case
from . import yuthon_parenting_allocate
from . import vacation_overtime_active
+from . import yuthon_overtime_line
# from odoo.tools import SQL
# import odoo
# odoo.models.READ_GROUP_AGGREGATE.update({
diff --git a/yuthon_hr_attendance/models/card_approval.py b/yuthon_hr_attendance/models/card_approval.py
index 5f628d663..8411d2866 100644
--- a/yuthon_hr_attendance/models/card_approval.py
+++ b/yuthon_hr_attendance/models/card_approval.py
@@ -23,6 +23,7 @@ class CardApprovals(models.Model):
reason_application = fields.Text(string="申请事由")
documents_ids = fields.Many2many('ir.attachment', string="附件")
attendance_id = fields.Many2one('hr.attendance', string="补卡日期")
+ number_cards_replaced = fields.Integer(string="已补卡次数")
attendance = fields.Char(string="补卡日期")
is_attendance = fields.Boolean(string="字段隐藏")
replacement_time = fields.Selection([('work', '上班卡'), ('quitting', '下班卡'), ('all', '全天卡')], string="补卡", store=True)
diff --git a/yuthon_hr_attendance/models/overtime_approval.py b/yuthon_hr_attendance/models/overtime_approval.py
index 4c2611136..6d0b44506 100644
--- a/yuthon_hr_attendance/models/overtime_approval.py
+++ b/yuthon_hr_attendance/models/overtime_approval.py
@@ -14,6 +14,7 @@ class OvertimeApprovals(models.Model):
_rec_name = 'name'
name = fields.Char(string="标题", compute='_compute_name')
+ number_card = fields.Char(string="补卡次数")
code = fields.Char(string="编号", default=lambda self: self.env['ir.sequence'].next_by_code('overtime_approval'))
users_id = fields.Many2one('res.users', string="申请人", default=lambda self: self.env.user.id)
company_id = fields.Many2one(related='users_id.employee_ids.company_id', string="公司")
diff --git a/yuthon_hr_attendance/models/yuthon_overtime_line.py b/yuthon_hr_attendance/models/yuthon_overtime_line.py
new file mode 100644
index 000000000..6c0d97cc1
--- /dev/null
+++ b/yuthon_hr_attendance/models/yuthon_overtime_line.py
@@ -0,0 +1,23 @@
+from odoo import api, fields, models, tools, _
+from datetime import datetime, time, timedelta
+from odoo.exceptions import UserError
+from datetime import date, timedelta
+
+
+
+class YuthonOvertimeLine(models.Model):
+ _name = 'yuthon.overtime.line'
+ _description = '加班明细'
+
+ employee_id = fields.Many2one('hr.employee', string="员工")
+ last_balance = fields.Float(string="上年结余")
+ valid_date = fields.Date(string="有效至")
+ workday = fields.Float(string='工作日')
+ public_holidays = fields.Float(string='公休日')
+ vacation_sum = fields.Float(string='合计数')
+ carry_forward_quantity = fields.Float(string="结转时长")
+ carry_forward_date = fields.Date(string="结转日期")
+ remaining_quantity = fields.Float(string="剩余数")
+
+ def open_record(self):
+ pass
\ No newline at end of file
diff --git a/yuthon_hr_attendance/security/ir.model.access.csv b/yuthon_hr_attendance/security/ir.model.access.csv
index b6c9c65d3..c19fbb2f2 100644
--- a/yuthon_hr_attendance/security/ir.model.access.csv
+++ b/yuthon_hr_attendance/security/ir.model.access.csv
@@ -88,4 +88,6 @@ access_yuthon_meal_case,access_yuthon_meal_case,model_yuthon_meal_case,base.grou
access_pay_carryover_wizard,pay.carryover.wizard,model_pay_carryover_wizard,base.group_user,1,1,1,1
access_vacation_parenting_line,vacation.parenting.line,model_vacation_parenting_line,base.group_user,1,1,1,1
access_yuthon_parenting_allocate,yuthon.parenting.allocate,model_yuthon_parenting_allocate,base.group_user,1,1,1,1
-access_vacation_overtime_active,vacation.overtime.active,model_vacation_overtime_active,base.group_user,1,1,1,1
\ No newline at end of file
+access_vacation_overtime_active,vacation.overtime.active,model_vacation_overtime_active,base.group_user,1,1,1,1
+
+access_yuthon_overtime_line,yuthon.overtime.line,model_yuthon_overtime_line,base.group_user,1,1,1,1
\ No newline at end of file
diff --git a/yuthon_hr_attendance/static/src/js/button_vacation_confirm.js b/yuthon_hr_attendance/static/src/js/button_vacation_confirm.js
index d70f42708..ef52c8ffa 100644
--- a/yuthon_hr_attendance/static/src/js/button_vacation_confirm.js
+++ b/yuthon_hr_attendance/static/src/js/button_vacation_confirm.js
@@ -11,6 +11,12 @@ export class CustomAttendanceVacationConfirmController extends ListController {
async getAction(lock_type) {
await this.orm.call('vacation.over.line', 'confirm', []);
}
+ async getNextAction(lock_type) {
+ await this.orm.call('vacation.meal.line', 'confirm', []);
+ }
+ async getLastAction(lock_type) {
+ await this.orm.call('vacation.meal.line', 'confirm', []);
+ }
}
registry.category("views").add("custom_vacation_confirm_button", {
diff --git a/yuthon_hr_attendance/static/src/js/button_vacation_put.js b/yuthon_hr_attendance/static/src/js/button_vacation_put.js
index db91e9075..51b4db269 100644
--- a/yuthon_hr_attendance/static/src/js/button_vacation_put.js
+++ b/yuthon_hr_attendance/static/src/js/button_vacation_put.js
@@ -42,27 +42,13 @@ export class CustomAttendanceVacationPutController extends ListController {
openVacationOverWizard() {
this.actionService.doAction({
type: 'ir.actions.act_window',
- res_model: 'vacation.over.line',
+ res_model: 'yuthon.overtime.line',
name: '加班合计数报表',
view_mode: 'tree',
view_type: 'form',
views: [[false, 'tree']],
target: 'current',
- context: {'tree_view_ref': "yuthon_hr_attendance.view_yuthon_vacation_overtime_briefly_tree"},
- domain: [
- '|',
- ['is_initial_number', '=', true],
- '&',
- ['is_initial_number', '=', false],
- '&',
- ['update_type', '=', 'add'],
- '&',
- ['workflow_record_id', '!=', false],
- '!',
- '&',
- ['start_time', '>=', '2025-12-01 00:00:00'],
- ['start_time', '<', '2026-01-01 00:00:00']
- ],
+ context: {'tree_view_ref': "yuthon_hr_attendance.view_yuthon_overtime_line_tree"},
});
}
diff --git a/yuthon_hr_attendance/static/src/xml/button_vacation_confirm.xml b/yuthon_hr_attendance/static/src/xml/button_vacation_confirm.xml
index a62709af5..14211cb33 100644
--- a/yuthon_hr_attendance/static/src/xml/button_vacation_confirm.xml
+++ b/yuthon_hr_attendance/static/src/xml/button_vacation_confirm.xml
@@ -5,6 +5,12 @@
+
+
\ No newline at end of file
diff --git a/yuthon_hr_attendance/views/card_approval.xml b/yuthon_hr_attendance/views/card_approval.xml
index 090e92c4f..34b519359 100644
--- a/yuthon_hr_attendance/views/card_approval.xml
+++ b/yuthon_hr_attendance/views/card_approval.xml
@@ -49,6 +49,7 @@
+
diff --git a/yuthon_hr_attendance/views/yuthon_overtime_line_views.xml b/yuthon_hr_attendance/views/yuthon_overtime_line_views.xml
new file mode 100644
index 000000000..26dd21690
--- /dev/null
+++ b/yuthon_hr_attendance/views/yuthon_overtime_line_views.xml
@@ -0,0 +1,26 @@
+
+
+
+ yuthon.overtime.line.tree
+ yuthon.overtime.line
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 加班合计数报表
+ yuthon.overtime.line
+ tree
+
+
\ No newline at end of file
diff --git a/yuthon_hr_attendance/views/yuthon_vacation_reports_views.xml b/yuthon_hr_attendance/views/yuthon_vacation_reports_views.xml
index 030a9a7e2..ec8b4a413 100644
--- a/yuthon_hr_attendance/views/yuthon_vacation_reports_views.xml
+++ b/yuthon_hr_attendance/views/yuthon_vacation_reports_views.xml
@@ -620,7 +620,7 @@
vacation.over.line.overtime.briefly.tree
vacation.over.line
-
+