fix implantation pour établissement devise dans nouveau dossier
authorOlivier Larchevêque <olivier.larcheveque@auf.org>
Mon, 22 Aug 2011 15:16:50 +0000 (11:16 -0400)
committerOlivier Larchevêque <olivier.larcheveque@auf.org>
Mon, 22 Aug 2011 15:16:50 +0000 (11:16 -0400)
project/dae/forms.py
project/dae/models.py

index bda8037..c06fed9 100644 (file)
@@ -111,9 +111,10 @@ class FlexibleRemunForm(forms.ModelForm):
 
     def clean_devise(self):
         devise = self.cleaned_data['devise']
-        liste_taux = devise.tauxchange_set.order_by('-annee').filter(implantation=self.instance.dossier.poste.implantation)
+        implantation = ref.Implantation.objects.get(id=self.data['implantation'])
+        liste_taux = devise.tauxchange_set.order_by('-annee').filter(implantation=implantation)
         if len(liste_taux) == 0:
-            raise forms.ValidationError(u"La devise %s n'a pas de taux pour l'implantation %s" % (devise, self.instance.dossier.poste.implantation))
+            raise forms.ValidationError(u"La devise %s n'a pas de taux pour l'implantation %s" % (devise, implantation))
         else:
             return devise
 
index 7eb2f16..5a66598 100644 (file)
@@ -546,11 +546,17 @@ class Dossier(DossierWorkflow, models.Model):
     def __unicode__(self):
         return u'[%s] %s - %s' % (self.poste.implantation, self.poste.nom, self.employe)
 
+    def taux_devise(self):
+        if self.devise.code == 'EUR':
+          return 1
+        liste_taux = self.devise.tauxchange_set.order_by('-annee').filter(implantation=self.poste.implantation)
+        if len(liste_taux) == 0:
+            raise DeviseException(u"La devise %s n'a pas de taux pour l'implantation %s" % (self.devise, self.poste.implantation))
+        else:
+            return liste_taux[0].taux
+
     def get_salaire_euros(self):
-        try:
-            tx = self.devise.tauxchange_set.order_by('-annee').filter(implantation=self.poste.implantation)[0].taux
-        except:
-            tx = 0
+        tx = self.taux_devise()
         return (float)(tx) * (float)(self.salaire)
 
     def get_remunerations_brutes(self):