添加功能
This commit is contained in:
@@ -93,6 +93,7 @@ class HrContract(models.Model):
|
||||
|
||||
@api.constrains('change_ids')
|
||||
def _onchange_change_ids(self):
|
||||
if self.change_ids:
|
||||
latest = self.change_ids.sorted('change_end_date', reverse=True)[0]
|
||||
self.department_id = latest.department_id
|
||||
self.job_id = latest.job_id
|
||||
|
||||
@@ -86,65 +86,57 @@ class YuthonReassignmentApproval(models.Model):
|
||||
|
||||
def end_approval(self):
|
||||
current_date = fields.Date.today()
|
||||
# 筛选已完成审批的记录
|
||||
# reassignment_approval_ids = self.search([('work_end', '=', True),
|
||||
# ('is_execution', '=', False),
|
||||
# ])
|
||||
for record in self:
|
||||
if record.change_date <= current_date:
|
||||
# if not record.is_execution and record.change_date <= current_date and record.work_end:
|
||||
employee = record.employee_id
|
||||
old_contract = employee.contract_id
|
||||
update_vals = {}
|
||||
original_contract = employee.contract_id #
|
||||
if not original_contract:
|
||||
continue
|
||||
|
||||
emp_update_vals = {}
|
||||
if record.change_company_id:
|
||||
update_vals['company_id'] = record.change_company_id.id
|
||||
emp_update_vals['company_id'] = record.change_company_id.id
|
||||
if record.change_department_id:
|
||||
update_vals['department_id'] = record.change_department_id.id
|
||||
emp_update_vals['department_id'] = record.change_department_id.id
|
||||
if record.change_job_id:
|
||||
update_vals['job_id'] = record.change_job_id.id
|
||||
emp_update_vals['job_id'] = record.change_job_id.id
|
||||
if record.change_parent_id:
|
||||
update_vals['parent_id'] = record.change_parent_id.id
|
||||
if update_vals:
|
||||
employee.write(update_vals)
|
||||
emp_update_vals['parent_id'] = record.change_parent_id.id
|
||||
if emp_update_vals:
|
||||
employee.write(emp_update_vals)
|
||||
|
||||
if old_contract:
|
||||
version_str = self.version.lstrip('V')
|
||||
main_version = version_str.split('.')[0]
|
||||
if original_contract.version:
|
||||
version_str = original_contract.version.lstrip('V')
|
||||
main_version = version_str.split('.')[0] if '.' in version_str else version_str
|
||||
try:
|
||||
new_main_version = int(main_version) + 1
|
||||
new_version = f"V{new_main_version}.0"
|
||||
new_contract_vals = {
|
||||
'employee_id': old_contract.employee_id.id,
|
||||
'name': old_contract.name,
|
||||
'state': 'open',
|
||||
'party_id': old_contract.party_id.id,
|
||||
'company_id': record.change_company_id.id,
|
||||
'is_annual_salary': old_contract.is_annual_salary,
|
||||
'date_start': record.change_date,
|
||||
'date_end': False,
|
||||
'resource_calendar_id': old_contract.resource_calendar_id.id,
|
||||
# 'structure_type_id': old_contract.structure_type_id.id,
|
||||
'department_id': old_contract.department_id.id,
|
||||
'job_id': old_contract.job_id.id,
|
||||
'termination_date': old_contract.termination_date,
|
||||
'salary_group_id': old_contract.salary_group_id.id,
|
||||
'contract_type_id': old_contract.contract_type_id.id,
|
||||
'version': new_version,
|
||||
'wage': old_contract.wage,
|
||||
}
|
||||
|
||||
if record.change_job_id:
|
||||
new_contract_vals['job_id'] = record.change_job_id.id
|
||||
if record.change_structure_id:
|
||||
new_contract_vals[ 'structure_type_id'] = record.change_structure_id.type_id.id
|
||||
if record.change_department_id:
|
||||
new_contract_vals['department_id'] = record.change_department_id.id
|
||||
old_contract.write({
|
||||
'state': 'cancel',
|
||||
'date_end': record.change_date - timedelta(days=1),
|
||||
except ValueError:
|
||||
new_main_version = 2
|
||||
original_contract.write({
|
||||
'version': f"V{new_main_version}.0"
|
||||
})
|
||||
new_contract = self.env['hr.contract'].create(new_contract_vals)
|
||||
employee.contract_id = new_contract.id
|
||||
|
||||
existing_line = self.env['hr.contract.change.line'].search([
|
||||
('contract_id', '=', original_contract.id),
|
||||
('change_start_date', '=', record.change_date),
|
||||
('job_id', '=', record.change_job_id.id or original_contract.job_id.id)
|
||||
], limit=1)
|
||||
|
||||
if not existing_line:
|
||||
line_vals = {
|
||||
'contract_id': original_contract.id,
|
||||
'department_id': record.change_department_id.id or original_contract.department_id.id,
|
||||
'job_id': record.change_job_id.id or original_contract.job_id.id,
|
||||
'structure_type_id': record.change_structure_id.type_id.id if record.change_structure_id else original_contract.structure_type_id.id,
|
||||
'salary_group_id': original_contract.salary_group_id.id if original_contract.salary_group_id else False,
|
||||
'change_start_date': record.change_date,
|
||||
'change_end_date': False,
|
||||
}
|
||||
self.env['hr.contract.change.line'].create(line_vals)
|
||||
original_contract._onchange_change_ids()
|
||||
record.is_execution = True
|
||||
|
||||
|
||||
class HrJobType(models.Model):
|
||||
_name = "hr.job.type"
|
||||
|
||||
|
||||
Reference in New Issue
Block a user