diff --git a/yuthon_hr_employee/models/yuthon_hr_employee.py b/yuthon_hr_employee/models/yuthon_hr_employee.py index a94624281..0db386f64 100644 --- a/yuthon_hr_employee/models/yuthon_hr_employee.py +++ b/yuthon_hr_employee/models/yuthon_hr_employee.py @@ -167,6 +167,13 @@ class YuthonHrEmployee(models.Model): # 工资计算分组 salary_group_id = fields.Many2one('yuthon.salary.group', string="工资单分组", store=True) salary_date = fields.Date(string="薪资计算时间", store=True) + salary_year_jin_ids = fields.Many2many( + 'hr.employee', # 自关联到hr.employee + relation='hr_employee_salary_year_jin_rel', # 显式指定关联表名 + column1='employee_id', # 当前员工ID在关联表中的字段名 + column2='related_employee_id', # 关联员工ID在关联表中的字段名 + string='薪资计算年金人员' + ) salary_year = fields.Integer(compute='_compute_salary_year', store=True) last_year_salary = fields.Float(string="年金基数") converted = fields.Float(string="折算实际系数") @@ -234,12 +241,11 @@ class YuthonHrEmployee(models.Model): record.subsidy_amount = amount - @api.depends('converted') + @api.depends('converted', 'salary_year_jin_ids') def _compute_total_coefficients(self): for record in self: - company_employees = self.env['hr.employee'].search([]) - record.total_coefficients = sum(employee.converted for employee in company_employees) - record.calculation_totals = sum(employee.conversion_factor for employee in company_employees) + record.total_coefficients = sum(employee.converted for employee in self.salary_year_jin_ids) + record.calculation_totals = sum(employee.conversion_factor for employee in self.salary_year_jin_ids) @api.depends('contract_id') def _compute_resource_calendar_id(self): diff --git a/yuthon_hr_employee/views/yuthon_hr_employee_views.xml b/yuthon_hr_employee/views/yuthon_hr_employee_views.xml index 5480985e0..a3dd48769 100644 --- a/yuthon_hr_employee/views/yuthon_hr_employee_views.xml +++ b/yuthon_hr_employee/views/yuthon_hr_employee_views.xml @@ -166,7 +166,8 @@ - + + diff --git a/yuthon_salary/wizard/salary_compute_wizard.py b/yuthon_salary/wizard/salary_compute_wizard.py index 9f2faf5a5..c3f7e20ae 100644 --- a/yuthon_salary/wizard/salary_compute_wizard.py +++ b/yuthon_salary/wizard/salary_compute_wizard.py @@ -85,6 +85,7 @@ class SalaryComputeWizard(models.Model): ('date_to', '>=', start_date) ]) employee.salary_date = start_date + employee.salary_year_jin_ids = [(6, 0, self.employee_ids.ids)] # if existing_payslip: # raise UserError(f"员工 {employee.name} 在 {start_date} 到 {end_date} 日期范围内已有工资单记录,无法创建新的工资单。") self.env['hr.payslip'].create({