@@ -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),
|
||||
])
|
||||
|
||||
Reference in New Issue
Block a user