@@ -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>
|
||||
|
||||
Reference in New Issue
Block a user