diff --git a/yuthon_salary/wizard/salary_compute_wizard.py b/yuthon_salary/wizard/salary_compute_wizard.py index bd3391e72..d49af58de 100644 --- a/yuthon_salary/wizard/salary_compute_wizard.py +++ b/yuthon_salary/wizard/salary_compute_wizard.py @@ -93,60 +93,61 @@ class SalaryComputeWizard(models.Model): }) payslip.compute_sheet() internship_ids = self.env['hr.payslip'].search([ + ('employee_id.name', '=', '王鸿怡'), ('employee_id.contract_id.is_probation', '=', True), ('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) or (start_date < contract_start_date <= end_date): - # if internship_id.line_ids: - # target_names = { - # '基本工资': 'base_salary', - # '职级工资': 'rank_salary', - # '岗位工资': 'post_salary', - # '预发绩效奖金': 'performance_bonuses', - # '通讯补贴': 'commuting_allowance', - # '工龄工资': 'seniority_salary' - # } - # for line in internship_id.line_ids: - # if line.name in target_names: - # result = line.total * 0.8 - # field_name = target_names[line.name] - # setattr(internship_id, field_name, result) - # line.write({'total': 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 - # leave_days.unlink() - # days = self._process_shift_days(days, start_date, end_date) # 总工作日 - # leave_internship = self._create_leave_record(start_date, contract_end_date) - # internship_days = leave_internship.number_of_days - # leave_internship.unlink() - # internship_days = self._process_shift_days(internship_days, start_date, contract_end_date) # 实习期工作日 - # leave_work = self._create_leave_record(contract_end_date, end_date) - # work_days = leave_work.number_of_days - # leave_work.unlink() - # work_days = self._process_shift_days(work_days, contract_end_date, end_date) # 转正工作日 - # if internship_id.line_ids: - # target_names = { - # '基本工资': 'base_salary', - # '职级工资': 'rank_salary', - # '岗位工资': 'post_salary', - # '预发绩效奖金': 'performance_bonuses', - # '通讯补贴': 'commuting_allowance', - # '工龄工资': 'seniority_salary' - # } - # 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 - # field_name = target_names[line.name] - # setattr(internship_id, field_name, result) - # line.write({'total': result}) + 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) or (start_date < contract_start_date <= end_date): + if internship_id.line_ids: + target_names = { + '基本工资': 'base_salary', + '职级工资': 'rank_salary', + '岗位工资': 'post_salary', + '预发绩效奖金': 'performance_bonuses', + '通讯补贴': 'commuting_allowance', + '工龄工资': 'seniority_salary' + } + for line in internship_id.line_ids: + if line.name in target_names: + result = line.total * 0.8 + field_name = target_names[line.name] + setattr(internship_id, field_name, result) + line.write({'total': 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 + leave_days.unlink() + days = self._process_shift_days(days, start_date, end_date) # 总工作日 + leave_internship = self._create_leave_record(start_date, contract_end_date) + internship_days = leave_internship.number_of_days + leave_internship.unlink() + internship_days = self._process_shift_days(internship_days, start_date, contract_end_date) # 实习期工作日 + leave_work = self._create_leave_record(contract_end_date, end_date) + work_days = leave_work.number_of_days + leave_work.unlink() + work_days = self._process_shift_days(work_days, contract_end_date, end_date) # 转正工作日 + if internship_id.line_ids: + target_names = { + '基本工资': 'base_salary', + '职级工资': 'rank_salary', + '岗位工资': 'post_salary', + '预发绩效奖金': 'performance_bonuses', + '通讯补贴': 'commuting_allowance', + '工龄工资': 'seniority_salary' + } + 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 + field_name = target_names[line.name] + setattr(internship_id, field_name, result) + line.write({'total': result}) def _get_chinese_month(self, month):