diff --git a/yuthon_hr_employee/models/yuthon_hr_employee.py b/yuthon_hr_employee/models/yuthon_hr_employee.py
index c2e4681cc..0ceaea526 100644
--- a/yuthon_hr_employee/models/yuthon_hr_employee.py
+++ b/yuthon_hr_employee/models/yuthon_hr_employee.py
@@ -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)
diff --git a/yuthon_hr_employee/views/yuthon_hr_employee_views.xml b/yuthon_hr_employee/views/yuthon_hr_employee_views.xml
index 5e41a9488..a2a3e6cb3 100644
--- a/yuthon_hr_employee/views/yuthon_hr_employee_views.xml
+++ b/yuthon_hr_employee/views/yuthon_hr_employee_views.xml
@@ -575,6 +575,14 @@
code
action = model.action_hr_employee()
+
+
+ 更新公积金
+
+
+ code
+ action = model.update_social_base()
+
tree,kanban,form,activity,graph,pivot,hierarchy