62 lines
3.1 KiB
Python
62 lines
3.1 KiB
Python
# -*- coding: utf-8 -*-
|
|
from odoo import api, fields, models, tools
|
|
from odoo.exceptions import ValidationError
|
|
from dateutil.relativedelta import relativedelta
|
|
|
|
|
|
class HrContract(models.Model):
|
|
_inherit = "hr.contract"
|
|
_description = "员工合同拓展"
|
|
|
|
code = fields.Char(string="编号", default=lambda self: self.env['ir.sequence'].next_by_code('contract_code'))
|
|
name = fields.Char(string="合同名称", compute='_compute_name', readonly=False)
|
|
resource_calendar_id = fields.Many2one('resource.calendar', string='考勤时间表')
|
|
date_of_entry = fields.Date(string="入职时间", default=lambda self: self._default_date_of_entry())
|
|
yuthon_company = fields.Selection([('thtz', '集团本部'), ('thwg', '天河物管'), ('thlc', '天河粮储')],
|
|
related='employee_id.yuthon_company', string="所属公司", readonly=False)
|
|
work_entry_source = fields.Selection([
|
|
('calendar', '考勤安排'),
|
|
('attendance', 'Attendances'),
|
|
('planning', '特殊排版')])
|
|
is_probation = fields.Boolean(string="试用期")
|
|
start_date = fields.Date(string="开始日期", required=True, default=fields.Date.today)
|
|
end_date = fields.Date(string="结束日期", required=True,
|
|
default=lambda self: fields.Date.today() + relativedelta(months=+3))
|
|
party_id = fields.Many2one('yuthon.party.setting', string='甲方(用人单位)')
|
|
representatives = fields.Char(related='party_id.representatives', string='法定代表人或委托代理人')
|
|
economy_type = fields.Char(related='party_id.economy_type', string='经济类型')
|
|
address = fields.Text(related='party_id.address', string='通讯地址')
|
|
contact = fields.Char(related='party_id.contact', string='联系人')
|
|
phone = fields.Char(related='party_id.phone',string='电话')
|
|
documents_ids = fields.Many2many('ir.attachment', string="合同附件")
|
|
|
|
@api.model
|
|
def _default_date_of_entry(self):
|
|
return self.date_start or fields.Date.today()
|
|
|
|
@api.depends('contract_type_id')
|
|
def _compute_name(self):
|
|
for record in self:
|
|
if record.contract_type_id and record.employee_id:
|
|
record.name = record.employee_id.name + record.contract_type_id.name + '合同'
|
|
else:
|
|
record.name = ' '
|
|
|
|
@api.onchange('structure_type_id')
|
|
def _compute_wage(self):
|
|
for record in self:
|
|
if record.structure_type_id and record.yuthon_company:
|
|
wage_id = self.env['hr.salary.rule'].search([('struct_id.name', '=', record.structure_type_id.name),
|
|
('yuthon_company','=', record.yuthon_company), ('name', '=','基本工资')])
|
|
if wage_id:
|
|
record.wage = wage_id.amount_fix
|
|
|
|
def action_hr_contract(self):
|
|
return {
|
|
"type": "ir.actions.act_window",
|
|
"name": "批量导入合同",
|
|
"res_model": "yuthon.contract.wizard",
|
|
"view_mode": "form",
|
|
"target": "new",
|
|
}
|