Files
gzth/yuthon_salary/models/yuthon_individual_tax.py
2025-12-28 21:13:10 +08:00

54 lines
2.2 KiB
Python

from email.policy import default
from odoo import api, fields, models, _
from pypinyin import pinyin, Style
class YuthonIndividualTax(models.Model):
_name = 'yuthon.individual.tax'
_description = '个税'
name =fields.Char(string="名称")
company_id = fields.Many2one('res.company', string="公司", default=lambda self: self.env.company)
start_date = fields.Date(string="生效日期", default=fields.Date.today())
end_date = fields.Date(string="失效日期")
create_time = fields.Date(string="创建日期", default=fields.Datetime.now)
def create_salary_temporary(self):
"""
更新薪资个税
:return:
"""
individual_ids = self.env["yuthon.individual.tax"].browse(
self._context.get('active_ids', self._context.get('active_id')))
category_id = self.env['hr.salary.rule.category'].search([('name', '=', '个税')],limit=1)
if not category_id:
category_id = self.env['hr.salary.rule.category'].create({'name': '个税',
'code': 'gs'
})
for ins in individual_ids:
for sal in self.env["hr.payroll.structure"].search([('company_id', '=', ins.company_id.id)]):
rule_list = []
if ins.name not in sal.rule_ids.mapped('name'):
rule_list.append([0, 0, {
'name': ins.name,
'category_id': category_id.id,
'code': "".join([p[0][0] for p in pinyin(ins.name, style=Style.FIRST_LETTER)]).upper(),
'amount_select': 'fix',
'amount_fix': 0,
'struct_id': sal.id,
}])
sal.write({'rule_ids': rule_list})
@api.depends('start_date', 'end_date')
def compute_is_enable(self):
for rec in self:
if rec.start_date and rec.end_date:
if rec.start_date <= fields.Date.today() < rec.end_date:
rec.is_enable = True
else:
rec.is_enable = False