54 lines
2.2 KiB
Python
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
|
|
|
|
|