添加功能
This commit is contained in:
@@ -6,6 +6,7 @@ from odoo.osv import expression
|
||||
from odoo import api, fields, models
|
||||
from datetime import date, datetime
|
||||
from odoo.exceptions import UserError, ValidationError
|
||||
import math
|
||||
|
||||
nation_list = [('a', '汉族'), ('b', '壮族'), ('v', '满族'), ('d', '回族'), ('e', '苗族'), ('f', '维吾尔族'),
|
||||
('g', '土家族'), ('h', '彝族'), ('i', '蒙古族'), ('j', '藏族'), ('k', '布依族'), ('l', '侗族'),
|
||||
@@ -238,6 +239,62 @@ class YuthonHrEmployee(models.Model):
|
||||
recovery_sick_leave = fields.Float(string='病假(出院恢复期)')
|
||||
exam_leave = fields.Integer(string='考试假')
|
||||
|
||||
def update_social_base(self):
|
||||
current_year = fields.Date.today().year
|
||||
group_company = self.env['res.company'].search([('name', '=', '集团本部')], limit=1)
|
||||
official_contract_type = self.env['hr.contract.type'].search(
|
||||
[('name', '=', '正式合同(一签)')],
|
||||
limit=1
|
||||
)
|
||||
eligible_employees = self.env['hr.contract'].search([
|
||||
('employee_id.company_id', '=', group_company.id),
|
||||
('contract_type_id', '=', official_contract_type.id),
|
||||
('date_start', '>=', f'{current_year}-01-01'),
|
||||
('date_start', '<=', f'{current_year}-12-31')
|
||||
]).mapped('employee_id')
|
||||
eighty_percent_items = [
|
||||
'基本工资',
|
||||
'职级工资',
|
||||
'预发绩效奖金'
|
||||
]
|
||||
full_amount_items = [
|
||||
'通讯补贴',
|
||||
'工龄工资'
|
||||
]
|
||||
for employee in eligible_employees:
|
||||
payslip_id = self.env['hr.payslip'].create({
|
||||
'employee_id': employee.id,
|
||||
'name': f"{employee.name}的薪资单-{fields.Date.today().strftime('%Y%m')}",
|
||||
})
|
||||
payslip_id.compute_sheet()
|
||||
eighty_lines = payslip_id.line_ids.filtered(
|
||||
lambda l: l.name in eighty_percent_items
|
||||
)
|
||||
full_lines = payslip_id.line_ids.filtered(
|
||||
lambda l: l.name in full_amount_items
|
||||
)
|
||||
eighty_sum = sum(eighty_lines.mapped('amount'))
|
||||
total_eighty_part = math.ceil(eighty_sum * 0.8)
|
||||
total_full_part = sum(full_lines.mapped('amount')) if full_lines else 0
|
||||
final_total = total_eighty_part + total_full_part + 200
|
||||
employee.write({
|
||||
'social_base_on': final_total,
|
||||
'social_base_off': final_total
|
||||
})
|
||||
payslip_id.action_payslip_cancel()
|
||||
payslip_id.unlink()
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
social_base_on = fields.Float(string="1-6月公积金基数")
|
||||
|
||||
social_base_off = fields.Float(string="7-12月公积金基数")
|
||||
|
||||
def get_my_employee_action(self):
|
||||
current_user = self.env.user
|
||||
my_employee = self.search([('user_id', '=', current_user.id)], limit=1)
|
||||
|
||||
@@ -575,6 +575,14 @@
|
||||
<field name="state">code</field>
|
||||
<field name="code">action = model.action_hr_employee()</field>
|
||||
<field name="groups_id" eval="[(4, ref('base.group_system'))]"/>
|
||||
</record>
|
||||
<record id="all_write_social_base" model="ir.actions.server">
|
||||
<field name="name">更新公积金</field>
|
||||
<field name="model_id" ref="hr.model_hr_employee"/>
|
||||
<field name="binding_model_id" ref="hr.model_hr_employee"/>
|
||||
<field name="state">code</field>
|
||||
<field name="code">action = model.update_social_base()</field>
|
||||
<field name="groups_id" eval="[(4, ref('base.group_system'))]"/>
|
||||
</record>
|
||||
<record id="hr.open_view_employee_list_my" model="ir.actions.act_window">
|
||||
<field name="view_mode">tree,kanban,form,activity,graph,pivot,hierarchy</field>
|
||||
|
||||
Reference in New Issue
Block a user