Files
gzth/yuthon_contract/models/inherit_hr_contract.py
T
2025-03-15 16:03:49 +08:00

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",
}