add fixed-term contract renewal

16-career-dev
Florian Roger 6 months ago
parent 607b979702
commit f6dc026a39

@ -10,7 +10,7 @@ Addons for Odoo 16.
| gn_l10n_fr_pcg_asso | 16.0.0.0.3 | French chart of account and fiscal position for NGO's |
| gn_cc | 16.0.0.0.2 | Configuration for French convention collective, with data for IDCC3442 |
| gn_holidays | 16.0.0.0.1 | French configuration for Publics Holidays and Leave Management |
| gn_contract | 16.0.0.0.3 | Amendements to Hr Contracts |
| gn_contract | 16.0.0.0.4 | Amendements to Hr Contracts |
## ToDo

@ -19,7 +19,10 @@ Module de gestion des avenants aux contrats
- Liens entre contrats liés passés et futurs
- model method and Cron job for contract status automation (!! NOT TESTED !!)
- Add date_validity_start and date_validity_end to keep date_start and date_end from contract and keep track of child contracts (avenants) date ranges.
- Addlink to previous and next contract
- Add link to previous and next contract
- v16.0.0.0.4 (2024/03/13):
- Create Action for Fixed-Term contract renewal
- Readonly attribute for date_end field in contract
## Issues
@ -27,4 +30,5 @@ Module de gestion des avenants aux contrats
- [x] Needs an Action to Create a New Contract linked with a Previous one (cf issue #10)
- [x] Creating a New Contract (Avenant) should lead to changements to parent_contract
- [x] associated_contracts should be in the past, and also in the future, so recomputed automatically
- [x] Manage contract's status automatically
- [x] Manage contract's status automatically
- [] No CDI should have a date_end

@ -1,6 +1,6 @@
{
"name": "Gestion des Contrats: Typologie et Gestion des Avenants",
"version": "16.0.0.0.3",
"version": "16.0.0.0.4",
"category": "HR",
"summary": "Permet de relier entre eux les contrats",
"author": "Le Garage Numérique",

@ -42,6 +42,10 @@ class GnHrContract(models.Model):
contract.related_contract_ids = [(6, 0, associated_contract_ids)]
else:
contract.related_contract_ids = False
associated_contracts = self.env['hr.contract'].browse(associated_contract_ids)
for related_contract in associated_contracts:
related_contract._compute_related_contracts()
@api.depends('previous_contract_id')
@ -99,6 +103,39 @@ class GnHrContract(models.Model):
'target': 'current',
}
def action_renew_contract(self):
self.ensure_one()
date_start = fields.Date.from_string(self.date_end) + timedelta(days=1)
duration = fields.Date.from_string(self.date_end) - fields.Date.from_string(self.date_start)
date_end = date_start + duration
return {
'type': 'ir.actions.act_window',
'name': 'Renouveller le contrat',
'view_mode': 'form',
'res_model': 'hr.contract',
'context': {
'default_name': "Renouvellement du contrat " + self.name,
'default_employee_id': self.employee_id.id,
'default_structure_type_id': self.structure_type_id.id,
'default_previous_contract_id': self.id,
'default_date_start': date_start,
'default_date_end': date_end,
'default_date_validity_start': date_start,
'default_date_validity_end': date_end,
'default_resource_calendar_id': self.resource_calendar_id.id,
'default_department_id': self.department_id.id,
'default_job_id': self.job_id.id,
'default_contract_type_id': self.contract_type_id.id,
'default_hr_responsible_id': self.hr_responsible_id.id,
'default_wage': self.wage,
'default_notes': self.notes,
'default_schedule_pay': self.schedule_pay,
'default_struct_id': self.struct_id.id,
},
'target': 'current',
}
def cron_update_contract_status(self):
"""Scheduled action to update contract statuses based on start and end dates."""
today = fields.Date.context_today(self)

@ -24,11 +24,14 @@
<attribute name="invisible">1</attribute>
</xpath>
<xpath expr="//field[@name='date_end']" position="after">
<field name="date_end" attrs="{'readonly': [('previous_contract_id', '!=', False)]}"/>
<field name="date_end" attrs="{'readonly': [('previous_contract_id', '!=', False), ('date_end', '=', False)]}"/>
<field name="date_validity_end" attrs="{'invisible': [('previous_contract_id', '=', False)]}"/>
</xpath>
<header>
<button name="create_child_contract" type="object" string="Créer un avenant" class="oe_highlight"/>
<button name="action_renew_contract" type="object" string="Renouveller un CDD" class="oe_highlight" attrs="{'invisible': [('date_end', '=', False)]}"/>
</header>
</field>
</record>

Loading…
Cancel
Save