45 lines
1.7 KiB
Python
45 lines
1.7 KiB
Python
# -*- coding: utf-8 -*-
|
|
from odoo import models, fields, api
|
|
|
|
|
|
class SalaryItem(models.Model):
|
|
"""薪资项目 - 定义薪资单中的各个项目"""
|
|
_name = 'yuthon.salary.item'
|
|
_description = '薪资项目'
|
|
_order = 'sequence, id'
|
|
|
|
name = fields.Char(string='项目名称', required=True)
|
|
code = fields.Char(string='项目编码', required=True)
|
|
sequence = fields.Integer(string='排序', default=10)
|
|
category = fields.Selection([
|
|
('basic', '基本工资'),
|
|
('position', '岗位工资'),
|
|
('performance', '绩效工资'),
|
|
('class_hour', '课时费'),
|
|
('allowance', '津贴补贴'),
|
|
('deduction', '扣款项'),
|
|
('social', '社保公积金'),
|
|
('tax', '个人所得税'),
|
|
('other_income', '其他收入'),
|
|
('other_deduction', '其他扣款'),
|
|
], string='项目类别', required=True)
|
|
item_type = fields.Selection([
|
|
('income', '收入项'),
|
|
('deduction', '扣款项'),
|
|
], string='项目类型', required=True, default='income')
|
|
calculation_method = fields.Selection([
|
|
('fixed', '固定金额'),
|
|
('formula', '公式计算'),
|
|
('manual', '手动录入'),
|
|
], string='计算方式', required=True, default='fixed')
|
|
formula = fields.Text(string='计算公式')
|
|
is_taxable = fields.Boolean(string='是否计税', default=False)
|
|
is_social_base = fields.Boolean(string='是否社保基数', default=False)
|
|
is_required = fields.Boolean(string='必填项', default=False)
|
|
active = fields.Boolean(string='启用', default=True)
|
|
note = fields.Text(string='备注')
|
|
|
|
_sql_constraints = [
|
|
('code_uniq', 'unique(code)', '项目编码必须唯一!'),
|
|
]
|