|  | # Copyright 2016 上海开阖软件有限公司 (http://www.osbzr.com)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from odoo import fields, models, api
class StaffContract(models.Model):
    _name = 'staff.contract'
    _description = '员工合同'
    staff_id = fields.Many2one('staff', '员工', required=True)
    over_date = fields.Date(string='到期日', required=True)
    basic_wage = fields.Float(string='基础工资', digits=(12, 2), default='', )
    base_social_payment = fields.Float(string='社保缴费基数', digits=(12, 2), default='', )
    base_provident = fields.Float(string='公积金缴费基数', digits=(12, 2), default='', )
    company_social_payment = fields.Float(string='单位社保', digits=(12, 2), default='', )
    personal_social_payment = fields.Float(string='个人社保', digits=(12, 2), default='', )
    endowment = fields.Float(string='个人养老保险', digits=(12, 2), default='', )
    health = fields.Float(string='个人医疗保险', digits=(12, 2), default='', )
    unemployment = fields.Float(string='个人失业保险', digits=(12, 2), default='', )
    housing_fund = fields.Float(string='个人住房公积金', digits=(12, 2), default='', )
    endowment_co = fields.Float(string='公司养老保险', digits=(12, 2), default='', help='公司承担的养老保险')
    health_co = fields.Float(string='公司医疗保险', digits=(12, 2), default='',  help='公司承担的医疗保险')
    unemployment_co = fields.Float(string='公司失业保险', digits=(12, 2), default='', help='公司承担的失业保险')
    injury = fields.Float(string='公司工伤保险', digits=(12, 2), default='', help='公司承担的工伤保险')
    maternity = fields.Float(string='公司生育保险', digits=(12, 2), default='', help='公司承担的生育保险')
    housing_fund_co = fields.Float(string='公司住房公积金', digits=(12, 2), default='', help='公司承担的住房公积金')
    job_id = fields.Many2one('staff.job', string='岗位', required=True)
    company_id = fields.Many2one(
        'res.company',
        string='公司',
        change_default=True,
        default=lambda self: self.env.company)
    @api.onchange('basic_wage')
    def onchange_basic_wage(self):
        # 选择基本工资时带出五险一金比例,计算出应交金额并填充
        if self.basic_wage:
            company = self.env.company
            self.endowment = company.endowment_ratio * 0.01 * self.basic_wage
            self.health = company.health_ratio * 0.01 * self.basic_wage
            self.unemployment = company.unemployment_ratio * 0.01 * self.basic_wage
            self.housing_fund = company.housing_fund_ratio * 0.01 * self.basic_wage
            self.endowment_co = company.endowment_co_ratio * 0.01 * self.basic_wage
            self.health_co = company.health_co_ratio * 0.01 * self.basic_wage
            self.unemployment_co = company.unemployment_co_ratio * 0.01 * self.basic_wage
            self.injury = company.injury_ratio * 0.01 * self.basic_wage
            self.maternity = company.maternity_ratio * 0.01 * self.basic_wage
            self.housing_fund_co = company.housing_fund_co_ratio * 0.01 * self.basic_wage
class ResCompany(models.Model):
    _inherit = 'res.company'
    endowment_ratio = fields.Float(string='个人养老保险比例(%)')
    health_ratio = fields.Float(string='个人医疗保险比例(%)')
    unemployment_ratio = fields.Float(string='个人失业保险比例(%)')
    housing_fund_ratio = fields.Float(string='个人住房公积金比例(%)')
    endowment_co_ratio = fields.Float(string='公司养老保险比例(%)',
                                      help='公司承担的养老保险比例')
    health_co_ratio = fields.Float(string='公司医疗保险比例(%)',
                                   help='公司承担的医疗保险比例')
    unemployment_co_ratio = fields.Float(string='公司失业保险比例(%)',
                                         help='公司承担的失业保险比例')
    injury_ratio = fields.Float(string='公司工伤保险比例(%)',
                                help='公司承担的工伤保险比例')
    maternity_ratio = fields.Float(string='公司生育保险比例(%)',
                                   help='公司承担的生育保险比例')
    housing_fund_co_ratio = fields.Float(string='公司住房公积金比例(%)',
                                        help='公司承担的住房公积金比例')
 |