diff --git a/yuthon_hr_attendance/models/overtime_approval.py b/yuthon_hr_attendance/models/overtime_approval.py
index b89fea4e5..e88f03ecb 100644
--- a/yuthon_hr_attendance/models/overtime_approval.py
+++ b/yuthon_hr_attendance/models/overtime_approval.py
@@ -31,6 +31,7 @@ class OvertimeApprovals(models.Model):
duration = fields.Float(string="时长", compute='_compute_duration', store=True, help="如果时长大于8则按8小时算")
overtime_hours = fields.Float(string="本月加班时长")
start_time = fields.Datetime(string="开始时间")
+ attendance_id = fields.Many2one('hr.attendance', string="当天考勤")
start_week = fields.Char(string="星期", compute='_compute_weekday')
end_time = fields.Datetime(string="结束时间")
end_week = fields.Char(string="星期", compute='_compute_weekday')
@@ -52,12 +53,10 @@ class OvertimeApprovals(models.Model):
def open_record(self):
if self.start_time and self.end_time and self.employee_ids:
start_date = fields.Date.to_date(self.start_time)
- end_date = fields.Date.to_date(self.end_time)
# 构建 domain 查询条件
domain = [
('employee_id.user_id', 'in', self.employee_ids.user_id.ids),
- ('current_data', '>=', fields.Datetime.to_datetime(start_date)),
- ('current_data', '<=', fields.Datetime.to_datetime(end_date)),
+ ('current_data', '=', fields.Datetime.to_datetime(start_date)),
]
return {
'name': '考勤记录',
@@ -67,6 +66,16 @@ class OvertimeApprovals(models.Model):
'domain': domain,
}
+ @api.onchange('users_id', 'start_time')
+ def _onchange_att(self):
+ if self.users_id and self.start_time:
+ attendance = self.env['hr.attendance'].search([
+ ('employee_id.user_id', '=', self.users_id.id),
+ ('current_data', '=', self.start_time.date()),
+ ])
+ if attendance:
+ self.attendance_id = attendance.id
+
@api.depends('users_id')
def _compute_is_thwg(self):
for rec in self:
@@ -74,13 +83,18 @@ class OvertimeApprovals(models.Model):
rec.is_thwg = rec.users_id.company_id.name == '天河物管'
- @api.depends('start_time', 'end_time')
+ @api.depends('start_time', 'end_time', 'attendance_id')
def _compute_duration(self):
for rec in self:
rec.duration = 0.0
if not (rec.start_time and rec.end_time):
continue
- total_seconds = (rec.end_time - rec.start_time).total_seconds()
+ if rec.attendance_id.shift_id:
+ rel_end_time = rec.attendance_id.shift_id.end_datetime + timedelta(hours=8)
+ else:
+ rel_end_time = rec.start_time.replace(hour=18, minute=0, second=0, microsecond=0)
+ end_time = rec.end_time + timedelta(hours=8)
+ total_seconds = (end_time - rel_end_time).total_seconds()
original_hours = total_seconds / 3600
# 加班起步一小时
if original_hours < 1.0:
@@ -136,37 +150,6 @@ class OvertimeApprovals(models.Model):
'approval_date': fields.Datetime.now(),
})
- @api.onchange('overtime_department_id')
- def onchange_overtime_users(self):
- users_data_list = []
- default_datetime = datetime.combine(datetime.now().date(), time(hour=17, minute=30)) - timedelta(hours=8),
- users_list = []
- for user in self.overtime_user_ids:
- users_list.append(user.user_id.id)
- for over in self:
- if not over.overtime_department_id:
- if over.users_id.id not in users_list:
- users_data_list.append((0, 0, {
- 'overtime_approval_id': over.id,
- 'user_id': over.users_id.id,
- 'start_time': default_datetime[0],
- 'type_overtime': 'work',
- 'compensation_mode': 'salary',
- }))
- else:
- employee_ids = self.env['hr.employee'].search(
- [('department_id', '=', self.overtime_department_id.id)])
- for user in employee_ids:
- if user.user_id.id not in users_list:
- users_data_list.append((0, 0, {
- 'overtime_approval_id': over.id,
- 'user_id': user.user_id.id,
- 'start_time': default_datetime[0],
- 'type_overtime': 'work',
- 'compensation_mode': 'salary',
- }))
- over.overtime_user_ids = users_data_list
-
@api.onchange('company_id')
def onchange_company(self):
for record in self:
diff --git a/yuthon_hr_attendance/views/overtime_approval.xml b/yuthon_hr_attendance/views/overtime_approval.xml
index 9061347e9..4aa85c303 100644
--- a/yuthon_hr_attendance/views/overtime_approval.xml
+++ b/yuthon_hr_attendance/views/overtime_approval.xml
@@ -88,6 +88,7 @@
+
diff --git a/yuthon_property_approval/wizard/property_rental_wizard.py b/yuthon_property_approval/wizard/property_rental_wizard.py
index 9196c0b16..297aea419 100644
--- a/yuthon_property_approval/wizard/property_rental_wizard.py
+++ b/yuthon_property_approval/wizard/property_rental_wizard.py
@@ -196,7 +196,7 @@ class PropertyRentalWizard(models.Model):
date_str = f"{date_field_year_month}-{start_day}"
start_date = datetime.strptime(date_str, "%Y-%m-%d")
# 当期应收日期
- if start_year_month <= date_field_year_month < end_year_month:
+ if start_year_month <= date_field_year_month <= end_year_month:
self.create_rent_list(record, rent_id, rent_amount, start_date, multiplier)
self.create_management_list(record, start_date)
@@ -219,6 +219,7 @@ class PropertyRentalWizard(models.Model):
records = self.env['property.lease.contract'].search([
('actual_start_time', '<=', last_day),
('actual_end_time', '>=', first_day),
+ ('contract_code', '=', '租(2022)N01号')
])
for record in records:
date_data = {