conversion euros
authorOlivier Larchevêque <olivier.larcheveque@auf.org>
Thu, 15 Mar 2012 20:24:25 +0000 (16:24 -0400)
committerOlivier Larchevêque <olivier.larcheveque@auf.org>
Thu, 15 Mar 2012 20:24:25 +0000 (16:24 -0400)
project/dae/models.py
project/rh/models.py

index 31fbc10..376a4fd 100644 (file)
@@ -464,26 +464,23 @@ class Dossier(DossierWorkflow, rh.Dossier_):
         return True
 
     def get_salaire_anterieur_euros(self):
-        if self.devise_anterieur.code == 'EUR':
-          tx = 1
-        else:
-            liste_taux = self.devise_anterieur.tauxchange_set.order_by('-annee')
-            if len(liste_taux) == 0:
-                raise DeviseException(u"La devise %s n'a pas de taux pour l'implantation %s" % (self.devise_anterieur, self.poste.implantation))
-            tx = liste_taux[0].taux
-        return (float)(tx) * (float)(self.salaire_anterieur)
+        try:
+            taux = self.taux_devise(self.devise_anterieur)
+        except Exception, e:
+            return e
+        if not taux:
+            return None
+        return int(round(float(self.salaire_anterieur) * float(taux), 2))
+
 
     def get_salaire_titulaire_anterieur_euros(self):
-        if self.devise_titulaire_anterieur is None:
+        try:
+            taux = self.taux_devise(self.devise_anterieur)
+        except Exception, e:
+            return e
+        if not taux:
             return None
-        if self.devise_titulaire_anterieur.code == 'EUR':
-          tx = 1
-        else:
-            liste_taux = self.devise_titulaire_anterieur.tauxchange_set.order_by('-annee')
-            if len(liste_taux) == 0:
-                raise DeviseException(u"La devise %s n'a pas de taux pour l'implantation %s" % (self.devise_titulaire_anterieur, self.poste.implantation))
-            tx = liste_taux[0].taux
-        return (float)(tx) * (float)(self.salaire_titulaire_anterieur)
+        return int(round(float(self.salaire_titulaire_anterieur) * float(taux), 2))
 
     def get_salaire_euros(self):
         tx = self.taux_devise()
index cb1776c..1d953e1 100644 (file)
@@ -59,22 +59,26 @@ class DevisableMixin(object):
     def get_annee_pour_taux_devise(self):
         return datetime.datetime.now().year
 
-    def taux_devise(self):
-        if self.devise is None:
+
+    def taux_devise(self, devise=None):
+        if devise is None:
+            devise = self.devise
+
+        if devise is None:
             return None
-        if self.devise.code == "EUR":
+        if devise.code == "EUR":
             return 1
 
         annee = self.get_annee_pour_taux_devise()
-        taux = [tc.taux for tc in TauxChange.objects.filter(devise=self.devise, annee=annee)]
+        taux = [tc.taux for tc in TauxChange.objects.filter(devise=devise, annee=annee)]
         taux = set(taux)
 
         if len(taux) == 0:
-            raise Exception(u"Pas de taux pour %s en %s" % (self.devise.code, annee))
+            raise Exception(u"Pas de taux pour %s en %s" % (devise.code, annee))
             
         if len(taux) > 1:
             raise Exception(u"Il existe plusieurs taux de %s en %s" %
-                    (self.devise.code, annee))
+                    (devise.code, annee))
         else:
             return list(taux)[0]