diff --git a/soong_workflow/views/soong_workflow_record.xml b/soong_workflow/views/soong_workflow_record.xml index 1f5301a06..a286b5f71 100644 --- a/soong_workflow/views/soong_workflow_record.xml +++ b/soong_workflow/views/soong_workflow_record.xml @@ -15,6 +15,7 @@ + @@ -119,7 +120,7 @@ ir.actions.act_window soong.workflow.record tree,kanban,search - {'check_employee': 1} + {'check_employee': 1, 'group_by': 'soong_state'} [('employee_ids.user_id', '=', uid), ('reclaim_state', '=', False)] diff --git a/yuthon_hr_employee/models/yuthon_hr_employee.py b/yuthon_hr_employee/models/yuthon_hr_employee.py index 684096a42..023eba838 100644 --- a/yuthon_hr_employee/models/yuthon_hr_employee.py +++ b/yuthon_hr_employee/models/yuthon_hr_employee.py @@ -168,6 +168,11 @@ class YuthonHrEmployee(models.Model): # 工资计算分组 salary_group_id = fields.Many2one('yuthon.salary.group', string="工资单分组", store=True) last_year_salary = fields.Float(string="年金基数") + converted = fields.Float(string="折算实际系数") + conversion_factor = fields.Float(string="上年有效计算") + total_coefficients = fields.Float(string="系数合计", compute='_compute_total_coefficients', store=True) + calculation_totals = fields.Float(string="有效计算合计", compute='_compute_total_coefficients', store=True) + efficient_calculations = fields.Float(string="有效计算") social_base_on = fields.Float(string="1-6月社保薪资基数") social_base_off = fields.Float(string="7-12月社保薪资基数") is_salary = fields.Boolean(string="是否薪资计算", default=True) @@ -184,6 +189,12 @@ class YuthonHrEmployee(models.Model): job_id = fields.Many2one(related='contract_id.job_id', string="工作岗位", store=True) resource_calendar_id = fields.Many2one(compute='_compute_resource_calendar_id', string="工作时间", store=True) + @api.depends('converted') + 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) @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 88dfd274f..4ee8ee20f 100644 --- a/yuthon_hr_employee/views/yuthon_hr_employee_views.xml +++ b/yuthon_hr_employee/views/yuthon_hr_employee_views.xml @@ -151,15 +151,23 @@ - - - - - - - - - + + + + + + + + + + + + + + + + + diff --git a/yuthon_hr_employee/wizard/hr_employee_wizard.py b/yuthon_hr_employee/wizard/hr_employee_wizard.py index 381ac1542..0d5b65f6c 100644 --- a/yuthon_hr_employee/wizard/hr_employee_wizard.py +++ b/yuthon_hr_employee/wizard/hr_employee_wizard.py @@ -26,7 +26,7 @@ class YuthonHrEmployeeWizard(models.Model): sh = book.sheet_by_index(0) for rx in range(2, sh.nrows): row = sh.row(rx) - self.update_lc_employee(row) + self.update_year_salary(row) return { 'name': '批量更新员工', 'type': 'ir.actions.act_window', @@ -353,6 +353,17 @@ class YuthonHrEmployeeWizard(models.Model): employee_id.contract_id.structure_type_id = structure_type_id.id, employee_id.contract_id.salary_group_id = salary_group_id.id, + def update_year_salary(self, row): + employee_id = self.env['hr.employee'].search([('name', '=', row[1].value)]) + converted = row[3].value + conversion_factor = row[4].value + if employee_id: + employee_date = { + 'converted': converted, + 'conversion_factor': conversion_factor, + } + employee_id.write(employee_date) + diff --git a/yuthon_salary/models/yuthon_payroll_project.py b/yuthon_salary/models/yuthon_payroll_project.py index 96293f91d..429f62618 100644 --- a/yuthon_salary/models/yuthon_payroll_project.py +++ b/yuthon_salary/models/yuthon_payroll_project.py @@ -229,8 +229,10 @@ class YuthonPayrollInsurances (models.Model): code = 'GHHF' formula_salary = "result = round((payslip.base_salary * 0.005), 2)" if ins.name == '企业(职业)年金': + if ins.company_id == '天河物管': + code = 'WGQYNJ' + formula_salary = "result = round((employee.converted/total_coefficients * conversion_factor * 0.08 * 0.5)/12, 2)" code = 'QYNJ' - # formula_salary = "result = (employee.last_year_salary * 0.02) if employee.regularization_year != 0 else ((payslip.base_salary + payslip.rank_salary) * 0.02)" formula_salary = "result = round((employee.last_year_salary * 0.02), 0)" if ins.name not in sal.rule_ids.mapped('name'): rule_list.append([0, 0, { diff --git a/yuthon_salary/wizard/salary_compute_wizard.py b/yuthon_salary/wizard/salary_compute_wizard.py index 66967a314..3bf402405 100644 --- a/yuthon_salary/wizard/salary_compute_wizard.py +++ b/yuthon_salary/wizard/salary_compute_wizard.py @@ -31,12 +31,8 @@ class SalaryComputeWizard(models.Model): @api.onchange('company_id') def onchange_company_id(self): - user_obj = self.env['res.users'].sudo().search([]) - hr_employee_obj = self.env['hr.employee'].sudo().search([("user_id", "in", user_obj.ids)]) - resource_user_ids = hr_employee_obj.mapped('resource_calendar_id.resource_user_ids').ids if self.company_id: employees = self.env['hr.employee'].search([ - ('id', 'not in', resource_user_ids), ('company_id', '=', self.company_id.id), ('is_salary', '=', True), ('contract_id.state', 'not in', ['draft', 'cancel']), diff --git a/yuthon_salary/wizard/salary_compute_wizard_views.xml b/yuthon_salary/wizard/salary_compute_wizard_views.xml index 5856f4ec4..80ec82964 100644 --- a/yuthon_salary/wizard/salary_compute_wizard_views.xml +++ b/yuthon_salary/wizard/salary_compute_wizard_views.xml @@ -10,7 +10,7 @@ - +