5834
[auf_rh_dae.git] / project / dae / models.py
index 7a57911..0223445 100644 (file)
@@ -1,6 +1,7 @@
 # -=- encoding: utf-8 -=-
 
 import os
+from decimal import Decimal
 from dateutil.relativedelta import relativedelta
 from datetime import date, timedelta
 
@@ -78,6 +79,16 @@ class Poste(PosteWorkflow, rh.Poste_):
     # Managers
     objects = PosteManager()
 
+    @property
+    def indemn_min_cad(self):
+        return ((self.indemn_expat_min or Decimal('0')) +
+                (self.indemn_fct_min or Decimal('0')))
+
+    @property
+    def indemn_max_cad(self):
+        return ((self.indemn_expat_max or Decimal('0')) +
+                (self.indemn_fct_max or Decimal('0')))
+
     def _get_key(self):
         """
         Les vues sont montées selon une clef spéciale
@@ -729,6 +740,34 @@ class Dossier(DossierWorkflow, rh.Dossier_):
 
         return dossier_rh
 
+    def get_dossier_precedent_titulaire(self):
+        try:
+            rh_poste = self.poste.id_rh
+        except rh.Poste.DoesNotExist:
+            return None
+
+        try:
+            precedent_employe = self.employe_anterieur
+        except rh.Employe.DoesNotExist:
+            return None
+        
+        qs = rh.Dossier.objects.filter(
+            poste=rh_poste,
+            employe=precedent_employe,
+            ).order_by(
+            '-principal', 'date_fin')
+
+        if qs.count() == 0:
+            return None
+        
+        # Retourne en le premier du queryset si la date de fin est None
+        # Sinon, retourne le plus récent selon la date de fin.
+        first = qs[0]
+        if first.date_fin == None:
+            return first
+        else:
+            return qs.order_by('-principal', '-date_fin')[0]
+
     def get_salaire_anterieur_euros(self):
         if self.devise_anterieur is None:
             return None