!3242 添加功能

Merge pull request !3242 from 李鹏宇/dev_zhou
This commit is contained in:
李鹏宇
2025-06-12 04:05:37 +00:00
committed by Gitee
7 changed files with 46 additions and 17 deletions
@@ -15,6 +15,7 @@
<field name="documents_ids" optional="hide"/>
<group expand="0" string="审批分组">
<filter string="审批类型分组" name='group_by_approvals_group_id' context="{'group_by':'approvals_group_id'}"/>
<filter string="状态" name="group_soong_state" context="{'group_by':'soong_state'}"/>
</group>
</search>
</field>
@@ -119,7 +120,7 @@
<field name="type">ir.actions.act_window</field>
<field name="res_model">soong.workflow.record</field>
<field name="view_mode">tree,kanban,search</field>
<field name="context">{'check_employee': 1}</field>
<field name="context">{'check_employee': 1, 'group_by': 'soong_state'}</field>
<field name="domain">[('employee_ids.user_id', '=', uid), ('reclaim_state', '=', False)]</field>
<field name="search_view_id" ref="soong_workflow_record_search"/>
</record>
@@ -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):
@@ -151,15 +151,23 @@
</group>
</xpath>
<xpath expr="//page[@name='public']//group[@name='departure']" position="after">
<group string="工资计算">
<field name="salary_group_id" options="{'no_create': True}"/>
<field name="last_year_salary"/>
<field name="social_base_on"/>
<field name="social_base_off"/>
<field name="medical_insurance_base"/>
<field name="pension_insurance_base"/>
<field name="work_injury_insurance_base"/>
<field name="housing_fund_base"/>
<group string="工资计算" col="2">
<group>
<field name="salary_group_id" options="{'no_create': True}"/>
<field name="last_year_salary"/>
<field name="social_base_on"/>
<field name="social_base_off"/>
<field name="medical_insurance_base"/>
<field name="pension_insurance_base"/>
<field name="work_injury_insurance_base"/>
<field name="housing_fund_base"/>
</group>
<group>
<field name="converted"/>
<field name="conversion_factor"/>
<field name="total_coefficients"/>
<field name="calculation_totals"/>
</group>
</group>
<group col="2">
<group>
@@ -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)
@@ -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, {
@@ -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']),
@@ -10,7 +10,7 @@
<field name="select_year"/>
<field name="select_time"/>
<field name="company_id" domain="[('id', '=', company_id)]" invisible="1"/>
<field name="employee_ids" widget="many2many_tags" force_save="1" options="{'no_create': True}"/>
<field name="employee_ids" widget="many2many_tags" force_save="1" options="{'no_create': True}" domain="[('company_id', '=', company_id)]"/>
<field name="employee_number"/>
</group>
<footer>