From e7cc546f94f8731f799b28ec96c2b5f9a379d5fb Mon Sep 17 00:00:00 2001 From: zhou <123@> Date: Mon, 21 Apr 2025 11:53:34 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- yuthon_salary/wizard/salary_compute_wizard.py | 69 ++++++++++--------- 1 file changed, 36 insertions(+), 33 deletions(-) diff --git a/yuthon_salary/wizard/salary_compute_wizard.py b/yuthon_salary/wizard/salary_compute_wizard.py index 931bf7e7b..ad939d9a9 100644 --- a/yuthon_salary/wizard/salary_compute_wizard.py +++ b/yuthon_salary/wizard/salary_compute_wizard.py @@ -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 = ['一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月']