From f35d90275681c35e8e9a72613e04b6e2960f3728 Mon Sep 17 00:00:00 2001
From: zhou <123@>
Date: Thu, 12 Jun 2025 10:52:59 +0800
Subject: [PATCH 1/2] =?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
---
.../views/soong_workflow_record.xml | 3 ++-
.../models/yuthon_hr_employee.py | 20 ++++++++++++++
.../views/yuthon_hr_employee_views.xml | 26 ++++++++++++-------
.../wizard/hr_employee_wizard.py | 13 +++++++++-
.../models/yuthon_payroll_project.py | 4 ++-
yuthon_salary/wizard/salary_compute_wizard.py | 4 ---
.../wizard/salary_compute_wizard_views.xml | 2 +-
7 files changed, 55 insertions(+), 17 deletions(-)
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..72d754efb 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="2024年有效计算")
+ total_coefficients = fields.Float(string="系数合计", compute='_compute_total_coefficients', store=True)
+ calculation_totals = fields.Float(string="有效计算合计", compute='_compute_calculation_totals', 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,21 @@ 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([
+ ('company_id', '=', record.company_id.id)
+ ])
+ record.total_coefficients = sum(employee.converted for employee in company_employees)
+
+ @api.depends('conversion_factor')
+ def _compute_calculation_totals(self):
+ for record in self:
+ company_employees = self.env['hr.employee'].search([
+ ('company_id', '=', record.company_id.id)
+ ])
+ 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..e5784771c 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 @@
-
+
+
-