Part 1 du bug fix, instable
[auf_rh_dae.git] / project / rh / models.py
index 4944fbf..8f3b423 100644 (file)
@@ -31,6 +31,8 @@ from project.rh.managers import (
     )
 
 
+TWOPLACES = Decimal('0.01')
+
 from project.rh.validators import validate_date_passee
 
 # import pour relocaliser le modèle selon la convention (models.py pour
@@ -124,14 +126,17 @@ class DevisableMixin(object):
                 .order_by('-annee')
         return taux[0].taux
 
-    def montant_euros(self):
+    def montant_euros_float(self):
         try:
             taux = self.taux_devise()
         except Exception, e:
             return e
         if not taux:
             return None
-        return int(round(float(self.montant) * float(taux), 2))
+        return float(self.montant) * float(taux)
+
+    def montant_euros(self):
+        return int(round(self.montant_euros_float(), 2))
 
 
 class Commentaire(models.Model):
@@ -1289,6 +1294,38 @@ class Remuneration_(RemunerationMixin, DevisableMixin):
     """
     objects = RemunerationManager()
 
+    def montant_ajuste_euros(self, annee=None):
+        """
+        Le montant ajusté représente le montant annuel, ajusté sur la
+        période de temps travaillée, multipliée par le ratio de temps
+        travaillé (en rapport au temps plein).
+        """
+        if not annee:
+            annee = min(
+                self.date_debut or date.today(), date.today()).year
+
+        debut_annee = date(annee, 1, 1)
+        fin_annee = date(annee, 12, 31)
+        jours_annee = (fin_annee - debut_annee).days + 1
+
+        date_count_debut = max(
+            self.date_debut or debut_annee, debut_annee)
+        date_count_fin = min(self.date_fin or fin_annee, fin_annee)
+        jours = (date_count_fin - date_count_debut).days + 1
+        print "Date debut: ", date_count_debut
+        print "Date fin: ", date_count_fin
+        print "Jours: ", jours
+
+        montant_euro = Decimal(str(self.montant_euros_float()))
+        if self.type.nature_remuneration != u'Accessoire':
+            return (montant_euro * ((
+                        min(self.date_fin or fin_annee, fin_annee) -
+                        max(self.date_debut or debut_annee, debut_annee)
+                    ).days + 1) / jours_annee * self.dossier.regime_travail / 100)
+        else:
+            return montant_euro
+
+
     def montant_mois(self):
         return round(self.montant / 12, 2)
 
@@ -1940,7 +1977,10 @@ class ChangementPersonnel(models.Model):
         )
 
     valide = models.BooleanField(default=True)
-    communique = models.BooleanField(default=False)
+    communique = models.BooleanField(
+        u'Communiqué',
+        default=False,
+        )
     date_communication = models.DateTimeField(
                 null=True,
                 blank=True,