diff --git a/models/hr_expense.py b/models/hr_expense.py index ef1bb0e5db13a2555034e59695aa1f902a5c9c2e..b57e72b2e492a08e7f0a45ab4c79f5322cc7bdce 100644 --- a/models/hr_expense.py +++ b/models/hr_expense.py @@ -1,4 +1,4 @@ -# © 2019 Le Filament (<http://www.le-filament.com>) + # © 2019 Le Filament (<http://www.le-filament.com>) # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). import re @@ -56,12 +56,14 @@ class CGScopExpense(models.Model): string="Adresse d'arrivée", compute='_compute_to_address', store=True) + is_return = fields.Boolean("Aller/Retour") # ------------------------------------------------------ # Default Fields # ------------------------------------------------------ def _default_from_address(self): return self.env.uid + # ------------------------------------------------------ # Computed Fields # ------------------------------------------------------ @@ -90,6 +92,9 @@ class CGScopExpense(models.Model): # ------------------------------------------------------ @api.onchange('total_amount') def onchange_total_amount(self): + """ + Lève une alerte si le montant dépasse le plafond + """ for exp in self: if exp.product_id.expense_gap > 0: if exp.total_amount > exp.product_id.expense_gap: @@ -101,6 +106,9 @@ class CGScopExpense(models.Model): @api.onchange('product_id') def onchange_product_id(self): + """ + Change l'intégration de la NDF en fonction du type de produite + """ if self.product_id.expense_formula == 'fixed_price': self.unit_amount = self.product_id.standard_price self.update({ @@ -110,6 +118,16 @@ class CGScopExpense(models.Model): self.quantity = 1.0 self.product_id.unit_amount = self.product_id.standard_price + @api.onchange('is_return') + def onchange_is_return(self): + """ + Définit le comportement lorsqu'on coche Aller/Retour + """ + if self.is_return: + self.quantity = self.quantity * 2 + elif not self.is_return: + self.quantity = self.quantity / 2 + # ------------------------------------------------------ # Button function # ------------------------------------------------------ @@ -122,7 +140,11 @@ class CGScopExpense(models.Model): distance = self._get_distance( self._get_coord(self.from_address), self._get_coord(self.to_address)) - self.quantity = ceil(distance/5)*5 + quantity = ceil(distance/5)*5 + if self.is_return: + self.quantity = quantity * 2 + else: + self.quantity = quantity # ------------------------------------------------------ # Global function diff --git a/views/hr_expense.xml b/views/hr_expense.xml index 4994ce2d7435518e3a74a2dc2afaae88d5275257..48a8fa7ec05e85eda04b209d56863e68eb022f4e 100644 --- a/views/hr_expense.xml +++ b/views/hr_expense.xml @@ -72,6 +72,7 @@ <field name="to_address" readonly="False"/> </group> <group attrs="{'invisible':[('is_ik','!=', True)], 'required':[('is_ik','=', True)]}"> + <field name="is_return"/> <button type="object" name="get_ik" string="Calcul distance" class="btn-primary"></button> </group> <group attrs="{'invisible':[('is_ik','!=', True)], 'required':[('is_ik','=', True)]}"></group>