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 @@
-
+