!3514 添加功能

Merge pull request !3514 from 李鹏宇/dev_zhou
This commit is contained in:
李鹏宇
2025-06-25 08:04:14 +00:00
committed by Gitee
+14 -3
View File
@@ -85,6 +85,7 @@ class SalaryComputeWizard(models.Model):
'payslip_count': 0
})
existing_payslip = self.env['hr.payslip'].search([
('is_push', '=', False),
('employee_id', '=', employee.id),
('date_from', '<=', end_date),
('date_to', '>=', start_date)
@@ -93,20 +94,30 @@ class SalaryComputeWizard(models.Model):
employee.salary_year_jin_ids = [(6, 0, self.employee_ids.ids)]
if existing_payslip:
raise UserError(f"员工 {employee.name} 在 {start_date} 到 {end_date} 日期范围内已有工资单记录,无法创建新的工资单。")
# 查找有效合同:date_start <= start_date <= date_end(或date_end为空)
contract_id = self.env['hr.contract'].search([
('employee_id', '=', employee.id),
('date_start', '<=', start_date),
'|',
('date_end', '>=', start_date),
('date_end', '=', False),
], limit=1)
# 创建工资单,使用找到的合同或默认合同
self.env['hr.payslip'].create({
'is_bold': is_bold,
'name': employee.name,
'employee_id': employee.id,
'contract_id': contract_id.id,
'contract_id': contract_id.id or employee.contract_id.id, # 使用找到的合同或员工默认合同
'date_from': start_date,
'date_to': end_date,
'salary_group_id': employee.contract_id.salary_group_id.id,
'salary_group_id': contract_id.salary_group_id.id if contract_id else employee.contract_id.salary_group_id.id,
'payslip_run_id': payslip_run_id.id,
'state': 'draft',
}).compute_sheet()
internship_ids = self.env['hr.payslip'].search([
('is_push', '=', False),
('employee_id.contract_id.is_probation', '=', True),
('is_push', '=', False),
('date_from', '<=', end_date),
('date_to', '>=', start_date),
])