Masse salariale: ajout des postes vacants
authorJean-Philippe Caissy <jpcaissy@piji.ca>
Thu, 5 Apr 2012 21:26:31 +0000 (16:26 -0500)
committerJean-Philippe Caissy <jpcaissy@piji.ca>
Thu, 5 Apr 2012 21:26:31 +0000 (16:26 -0500)
project/rh/masse_salariale.py

index 8112158..2b47055 100644 (file)
@@ -165,14 +165,14 @@ class MasseSalariale():
                 ('nb_jours', u"Nombre de jours", {'columnwidth': '2.82cm'}),
                 HEADER_SEPARATOR,
                 ('devise', u"Devise", {'columnwidth': '1.46cm'}),
-                ('salaire_bstg_annuel', u"Salaire BSTG annuel",
+                ('salaire_bstg_annuel', u"Salaire BSTG ANNUEL",
                     {'columnwidth': '2.5cm'}),
                 ('salaire_bstg_euro', u"Salaire BSTG EUR",
                     {'columnwidth': '2.5cm'}),
                 ('organisme_bstg', u"Organisme BSTG",
                     {'columnwidth': '2.9cm'}),
                 HEADER_SEPARATOR,
-                ('salaire_theorique', u"Salaire théorique annuel",
+                ('salaire_theorique', u"Salaire théorique ANNUEL",
                     {'columnwidth': '2.5cm', 'background-color': '#ecab44'}),
                 ('salaire_base_brut', u"Salaire de base brut",
                     {'columnwidth': '2.5cm', 'background-color': '#ecab44'}),
@@ -216,22 +216,18 @@ class MasseSalariale():
                 ('charges_sous_total', u"Sous-total des charges patronales",
                     {'columnwidth': '2.5cm', 'background-color': '#fb680f'}),
                 HEADER_SEPARATOR,
-                ('sous_total_traitement_annee', u"Total traitement %s" % \
-                        self.annee,
+                ('sous_total_traitement_annee', u"Total traitements",
                     {'background-color': '#ecab44'}),
-                ('sous_total_indemnite_annee', u"Total indemnités %s" % \
-                        self.annee,
+                ('sous_total_indemnite_annee', u"Total indemnités",
                     {'background-color': '#fff840'}),
-                ('sous_total_accessoire_annee', u"Total accessoires %s" % \
-                        self.annee,
+                ('sous_total_accessoire_annee', u"Total accessoires",
                     {'background-color': '#d7fb0f'}),
-                ('sous_total_charges_annee', u"Total charges %s" % \
-                        self.annee,
+                ('sous_total_charges_annee', u"Total charges",
                     {'background-color': '#fb680f'}),
                 HEADER_SEPARATOR,
-                ('masse_salariale', u"Masse salariale annuelle",
+                ('masse_salariale', u"Masse salariale ANNUELLE",
                     {'columnwidth': '2.5cm', 'background-color': '#e6c6ed'}),
-                ('masse_salariale_annee', u"Masse salariale %s" % self.annee,
+                ('masse_salariale_annee', u"Masse salariale",
                     {'columnwidth': '2.5cm', 'background-color': '#e6c6ed'}),
                 ('masse_salariale_annee_euro', u"Masse salariale %s EUR" % \
                         self.annee, {
@@ -271,6 +267,42 @@ class MasseSalariale():
                         else:
                             contenu[d.id]['dossiers'].add(d)
 
+        postes = rh.Poste.objects
+
+        custom_filter = {}
+        for k, v in self.custom_filter.items():
+            custom_filter[k.replace('dossier__poste__', '')] = v
+
+        if custom_filter:
+            postes = postes.filter(**custom_filter)
+
+        postes_vacants = [p for p in postes.filter(q_range).all()
+                if p.is_vacant()]
+        remuneration_base = rh.TypeRemuneration.objects.get(
+                id=TYPE_REMUN_BASE[0])
+        remuneration_indem = rh.TypeRemuneration(
+                nature_remuneration=TYPE_NATURE_INDEMN)
+        remuneration_charge = rh.TypeRemuneration(
+                nature_remuneration=TYPE_NATURE_CHARGES)
+        for p in postes_vacants:
+            d = rh.Dossier()
+            d.employe = rh.Employe()
+            d.statut = rh.Statut()
+            d.poste = p
+            d.classement = p.classement_max
+            d.point = p.valeur_point_max
+            contenu['p_%s' % p.id] = {
+                    'dossiers': set([d]),
+                    'remunerations': [
+                        rh.Remuneration(montant=p.salaire_max,
+                            devise=p.devise_max, type=remuneration_base),
+                        rh.Remuneration(montant=p.indemn_max,
+                            devise=p.devise_max, type=remuneration_indem),
+                        rh.Remuneration(montant=p.autre_max,
+                            devise=p.devise_max, type=remuneration_charge),
+                        ]
+                    }
+
         for item in contenu.values():
             dossiers = item['dossiers']
             remuns = item['remunerations']
@@ -494,7 +526,7 @@ class MasseSalariale():
                     'intitule_de_poste': dossier.poste.nom_feminin
                             if dossier.employe.genre == "F" else
                             dossier.poste.nom,
-                    'niveau': unicode(dossier.classement),
+                    'niveau': dossier.classement,
                     'point': coefficient,
                     'regime_de_travail': "%s %%" % int(regime * 100),
                     'local_expatrie': statut,