!2520 添加功能

Merge pull request !2520 from 李鹏宇/dev_zhou
This commit is contained in:
李鹏宇
2025-04-21 03:54:30 +00:00
committed by Gitee
+36 -33
View File
@@ -92,40 +92,43 @@ class SalaryComputeWizard(models.Model):
'state': 'draft',
})
payslip.compute_sheet()
internship_id = self.env['hr.payslip'].search([
internship_ids = self.env['hr.payslip'].search([
('employee_id.contract_id.is_probation', '=', True),
])
if internship_id:
start_date = internship_id.date_from
end_date = internship_id.date_to
contract_start_date = internship_id.employee_id.contract_id.start_date
contract_end_date = internship_id.employee_id.contract_id.end_date
if contract_end_date <= start_date and contract_start_date >= end_date:
if internship_id.line_ids:
target_names = ['基本工资', '职级工资', '岗位工资', '预发绩效奖金', '通讯补贴', '工龄工资']
for line in internship_id.line_ids:
if line.name in target_names:
result = line.total * 0.8
line.total.write(result)
elif contract_end_date.year == end_date.year and contract_end_date.month == end_date.month:
leave_days = self._create_leave_record(start_date, end_date)
days = leave_days.number_of_days
days.unlink()
days = self._process_shift_days(days, start_date, end_date) # 总工作日
leave_internship = self._create_leave_record(start_date, contract_end_date)
leave_internship.unlink()
internship_days = leave_internship.number_of_days
internship_days = self._process_shift_days(internship_days, start_date, contract_end_date) # 实习期工作日
leave_work = self._create_leave_record(contract_end_date, end_date)
leave_work.unlink()
work_days = leave_work.number_of_days
work_days = self._process_shift_days(work_days, contract_end_date, end_date) # 转正工作日
if internship_id.line_ids:
target_names = ['基本工资', '职级工资', '岗位工资', '预发绩效奖金', '通讯补贴', '工龄工资']
for line in internship_id.line_ids:
if line.name in target_names:
result = line.total * 0.8 * internship_days / days + line.total * 0.8 * work_days / days
line.total.write(result)
('date_from', '<=', end_date),
('date_to', '>=', start_date)
])
if internship_ids:
for internship_id in internship_ids:
start_date = internship_id.date_from
end_date = internship_id.date_to
contract_start_date = internship_id.employee_id.contract_id.start_date
contract_end_date = internship_id.employee_id.contract_id.end_date
if contract_end_date <= start_date and contract_start_date >= end_date:
if internship_id.line_ids:
target_names = ['基本工资', '职级工资', '岗位工资', '预发绩效奖金', '通讯补贴', '工龄工资']
for line in internship_id.line_ids:
if line.name in target_names:
result = line.total * 0.8
line.total.write(result)
elif contract_end_date.year == end_date.year and contract_end_date.month == end_date.month:
leave_days = self._create_leave_record(start_date, end_date)
days = leave_days.number_of_days
days.unlink()
days = self._process_shift_days(days, start_date, end_date) # 总工作日
leave_internship = self._create_leave_record(start_date, contract_end_date)
leave_internship.unlink()
internship_days = leave_internship.number_of_days
internship_days = self._process_shift_days(internship_days, start_date, contract_end_date) # 实习期工作日
leave_work = self._create_leave_record(contract_end_date, end_date)
leave_work.unlink()
work_days = leave_work.number_of_days
work_days = self._process_shift_days(work_days, contract_end_date, end_date) # 转正工作日
if internship_id.line_ids:
target_names = ['基本工资', '职级工资', '岗位工资', '预发绩效奖金', '通讯补贴', '工龄工资']
for line in internship_id.line_ids:
if line.name in target_names:
result = line.total * 0.8 * internship_days / days + line.total * 0.8 * work_days / days
line.total.write(result)
def _get_chinese_month(self, month):
chinese_months = ['一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月']