WIP masse salariale
authorJean-Philippe Caissy <jpcaissy@piji.ca>
Wed, 14 Mar 2012 18:59:56 +0000 (13:59 -0500)
committerJean-Philippe Caissy <jpcaissy@piji.ca>
Wed, 14 Mar 2012 18:59:56 +0000 (13:59 -0500)
project/rh/masse_salariale.py

index a39f37e..974c5cc 100644 (file)
@@ -11,7 +11,17 @@ import rh.models as rh
 
 KEY_DATE_DEBUT = "debut"
 KEY_DATE_FIN = "fin"
-TYPE_REMUN_BSTG = 3
+
+TYPE_REMUN_BSTG = (3,)
+TYPE_REMUN_MAD = (2,)
+TYPE_REMUN_BASE = (1,)
+TYPE_REMUN_FONC_RESP = (7,8)
+TYPE_REMUN_EXPAT = (4,)
+TYPE_REMUN_LOGEMENT = (6,)
+TYPE_REMUN_TRANSP = (9,)
+TYPE_REMUN_13E = (18,)
+TYPE_REMUN_AUTRE_RECURR_NOT = (1,2,3,4,6,7,8,9,18,13,14,15,19)
+TYPE_PAIEMENT_PONCTUEL = u"Ponctuel"
 
 
 class MasseSalariale():
@@ -108,13 +118,58 @@ class MasseSalariale():
             bstg_remun = None
             if bstg_dossier:
                 for r in bstg_dossier.rh_remunerations.all():
-                    if r.type == TYPE_REMUN_BSTG:
+                    if r.type in TYPE_REMUN_BSTG:
                         bstg_remun = r
 
+            salaire_complement = 0.0
+            salaire_base = 0.0
+            indemnites = {
+                    'fonc_resp': 0.0,
+                    'expat': 0.0,
+                    'logement': 0.0,
+                    'transp': 0.0,
+                    '13e': 0.0,
+                    'autre_recurr': 0.0,
+            }
+            for r in remuns:
+                montant = float(r.montant)
+                if r.type in TYPE_REMUN_MAD:
+                    salaire_complement += montant
+
+                if r.type in TYPE_REMUN_BASE:
+                    salaire_base += montant
+
+                if r.type in TYPE_REMUN_FONC_RESP:
+                    indemnites['fonc_resp'] += montant
+
+                if r.type in TYPE_REMUN_EXPAT:
+                    indemnites['expat'] += montant
+
+                if r.type in TYPE_REMUN_LOGEMENT:
+                    indemnites['logement'] += montant
+
+                if r.type in TYPE_REMUN_TRANSP:
+                    indemnites['transp'] += montant
+
+                if r.type in TYPE_REMUN_13E:
+                    indemnites['13e'] += montant
+
+                if r.type not in TYPE_REMUN_AUTRE_RECURR_NOT \
+                        and r.type.type_paiement != TYPE_PAIEMENT_PONCTUEL:
+                    indemnites['autre_recurr'] += montant
+
+            total_indemnites = sum(indemnites.values())
+
             #Calcul du nombre de jours pour ce dossier.
-            try:
-                date_delta = dossier.date_fin - dossier.date_debut
-            except:
+            if dossier.date_debut and dossier.date_debut > date_debut and \
+                    not dossier.date_fin:
+                date_delta = date_fin - dossier.date_fin
+            elif dossier.date_fin and dossier.date_fin < date_fin and \
+                    not dossier.date_debut:
+                date_delta = dossier.date_fin - date_debut
+            elif dossier.date_fin and dossier.date_debut:
+                date_delta = dossier.date_fin - date_debut
+            else:
                 date_delta = rapport_date_delta
 
             item_rapport = {
@@ -147,13 +202,16 @@ class MasseSalariale():
                     'date_fin': d_date_fin,
                     'nb_jours': date_delta.days,
                     'devise': remuns[0].devise,
-                    '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,
+                    'organisme_bstg': dossier.organisme_bstg,
+                    'salaire_base_brut': \
+                            salaire_base * regime * date_delta.days
+                    'salaire_
                     }
 
             self.rapport.append(item_rapport)