Pep8
authorJean-Philippe Caissy <jpcaissy@piji.ca>
Wed, 14 Mar 2012 16:14:57 +0000 (11:14 -0500)
committerJean-Philippe Caissy <jpcaissy@piji.ca>
Wed, 14 Mar 2012 16:14:57 +0000 (11:14 -0500)
project/rh/masse_salariale.py

index 13bde66..a39f37e 100644 (file)
@@ -11,6 +11,9 @@ import rh.models as rh
 
 KEY_DATE_DEBUT = "debut"
 KEY_DATE_FIN = "fin"
+TYPE_REMUN_BSTG = 3
+
+
 class MasseSalariale():
     """ Rapport de la masse salariale. """
 
@@ -22,7 +25,7 @@ class MasseSalariale():
                 *time.strptime(date_debut, "%d-%m-%Y")[0:3]
         )
         date_fin = datetime.date(*time.strptime(date_fin, "%d-%m-%Y")[0:3])
-        date_delta = date_fin - date_debut
+        rapport_date_delta = date_fin - date_debut
 
         self.annee = date_fin.year
 
@@ -39,20 +42,22 @@ class MasseSalariale():
         employes = {}
         for r in remunerations:
             if r.dossier.employe_id not in employes:
-                employes[r.dossier.employe_id] = {'dossiers': set(), 
-                        'remunerations': []}
+                employes[r.dossier.employe_id] = {
+                    'dossiers': set(),
+                    'remunerations': []
+                }
             employes[r.dossier.employe_id]['remunerations'].append(r)
             employes[r.dossier.employe_id]['dossiers'].add(r.dossier)
 
         self.employes = employes
+
         self.rapport = []
 
         pays_list = ref.Pays.objects.all()
         valeurs_point_par_imp = \
                 dict(
-                        (v.implantation.id, v) for v in 
-                        rh.ValeurPoint.objects.filter(annee=self.annee).all()
+                    (v.implantation.id, v) for v in \
+                    rh.ValeurPoint.objects.filter(annee=self.annee).all()
                 )
         for item in self.employes.values():
             dossiers = item['dossiers']
@@ -63,14 +68,23 @@ class MasseSalariale():
                 pass
             dossier = list(dossiers)[0]
             regime = dossier.poste.regime_travail
+
             if dossier.poste.expatrie:
                 statut = "E"
             else:
                 statut = "L"
 
-            d_date_fin = dossier.date_fin.year if dossier.date_fin else ""
-            d_date_debut = \
-                dossier.date_debut.year if dossier.date_debut else ""
+            #on détermine la date du début et fin du dossier si année en cours
+            try:
+                d_date_fin = dossier.date_fin \
+                        if dossier.date_fin.year == date_fin.year else None
+            except AttributeError:
+                d_date_fin = None
+            try:
+                d_date_debut = dossier.date_debut \
+                    if dossier.date_debut.year == date_fin.year else None
+            except AttributeError:
+                d_date_debut = None
 
             pays = \
                 pays_list[dossier.poste.implantation.adresse_physique_pays.id]
@@ -91,10 +105,17 @@ class MasseSalariale():
                 if d.organisme_bstg:
                     bstg_dossier = d
 
+            bstg_remun = None
             if bstg_dossier:
-                for r in bstg_dossier.remunerations
-
+                for r in bstg_dossier.rh_remunerations.all():
+                    if r.type == TYPE_REMUN_BSTG:
+                        bstg_remun = r
 
+            #Calcul du nombre de jours pour ce dossier.
+            try:
+                date_delta = dossier.date_fin - dossier.date_debut
+            except:
+                date_delta = rapport_date_delta
 
             item_rapport = {
                     'bureau': dossier.poste.implantation.region.code,
@@ -102,37 +123,41 @@ class MasseSalariale():
                     'implantation': dossier.poste.implantation.nom_court,
                     'type_implantation': dossier.poste.implantation.type,
                     #'imputation': None,
-                    'valeur_point': 
+                    'valeur_point':
+                        #todo valeur du point si pas présent
                         valeurs_point_par_imp.get(
                             dossier.poste.implantation_id
-                        ),#todo valeur du point si pas présent
+                        ),
                     'numero_employe': dossier.employe_id,
                     'nom': dossier.employe.nom.upper(),
                     'prenom': dossier.employe.prenom,
                     'type_de_poste': dossier.poste.type_poste.nom,
                     'intitule_de_poste': dossier.poste.nom,
                     'niveau': dossier.classement,
-                    'point': "%s" % 
+                    'point': "%s" %
                             dossier.classement.coefficient \
-                                    if dossier.classement and 
-                                    dossier.classement.coefficient
+                                    if dossier.classement and
+                                        dossier.classement.coefficient
                                     else "",
                     'regime_de_travail': "%s %%" % regime,
                     'local_expatrie': statut,
                     'statut': dossier.statut.code,
                     'date_fin_contrat': dossier.date_fin,
-                    'date_debut': d_date_fin,
-                    'date_fin': d_date_debut,
+                    'date_debut': d_date_debut,
+                    'date_fin': d_date_fin,
                     'nb_jours': date_delta.days,
                     'devise': remuns[0].devise,
-                    'organismeBSTG': 
-                    'salaire_bstg_annuel': None, #todo
-                    'salaire_bstg_total': None, #todo
+                    'organisme_bstg': dossier.organisme_bstg,
+                    'salaire_bstg_annuel': bstg_remun.montant \
+                            if bstg_remun else None,
+                    'salaire_bstg_total':
+                                self.convertir(bstg_remun) \
+                                * regime * date_delta.days \
+                            if bstg_remun else None,
                     }
 
             self.rapport.append(item_rapport)
 
-
     def build_qs(self, prefix, date_debut, date_fin):
         date_debut_null = \
                 Q(**{"%s%s__isnull" % (prefix, KEY_DATE_DEBUT): True})
@@ -176,9 +201,10 @@ class MasseSalariale():
         return q_range
 
     def convertir(self, remuneration):
-        remuneration.montant = float(remuneration.montant) * \
-            self.trouver_taux(remuneration.devise).taux
-        remuneration.devise = self.devise_base
+        if remuneration.devise != self.devise_base:
+            remuneration.montant = float(remuneration.montant) * \
+                self.trouver_taux(remuneration.devise).taux
+            remuneration.devise = self.devise_base
 
     def trouver_taux(self, devise):
         if devise.code not in self.taux_change:
@@ -187,8 +213,3 @@ class MasseSalariale():
             )[0]
             self.taux_change[devise.code] = t
         return self.taux_change[devise.code]
-
-
-
-
-