Merge branch 'dev', remote-tracking branch 'origin' into masse_salariale_jp
[auf_rh_dae.git] / project / rh / views.py
index 0d0ca46..0a29c1f 100644 (file)
@@ -189,6 +189,73 @@ def rapports_contrat(request):
 
 @login_required
 @drh_or_admin_required
+def rapports_masse_salariale(request):
+
+    annee = 2012
+    dossier_qs = rh.Dossier.objects \
+            .filter(
+                (Q(date_fin__gt=date.today()) | Q(date_fin=None)) & \
+                (Q(date_debut__lt=date.today()) | Q(date_debut=None))
+            ).select_related("poste", "employe", "poste__implantation", "poste__implantation__region", "poste__type_poste", "classement", "statut") \
+            .extra(select={
+                'nombre_dossier': "SELECT 1"
+            })
+    dossiers_par_employe = {}
+    rapport = []
+    
+    pays = ref.Pays.objects.all()
+    valeurs_point_par_imp = dict((v.implantation.id, v) for v in  rh .ValeurPoint.objects.filter(annee=annee).all())
+
+    #Ça va être mieux comme ça, allons-y en mappant les employés aux dossiers avec une seule requête
+    for dossier in dossier_qs.all():
+        if dossier.employe_id not in dossiers_par_employe:
+            dossiers_par_employe[dossier.employe_id] = [dossier]
+        else:
+            dossiers_par_employe[dossier.employe_id].append(dossier)
+
+    for employe_id, dossiers in dossiers_par_employe.items():
+        #TODO, choisir le dossier primaire
+        if len(dossiers) > 1:
+            #TODO
+            pass
+        dossier = dossiers[0]
+        regime = dossier.poste.regime_travail
+        if dossier.poste.expatrie:
+            statut = "E"
+        else:
+            statut = "L"
+
+        pays = pays[dossier.poste.implantation.adresse_physique_pays]
+        item_rapport = {
+                'bureau': dossier.poste.implantation.region.code,
+                'pays': pays,
+                'implantation': dossier.poste.implantation.nom_court,
+                'type_implantation': dossier.poste.implantation.type,
+                #'imputation': None,
+                'valeur_point': 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_%s' % annee: dossier.classement,
+                'point': dossier.classement.coefficient,
+                'regime_de_travail': "%s %" % regime,
+                'local_expatrie': statut,
+                'statut': dossier.statut.code,
+                'date_fin_contrat': None, #on prends quelle date de fin déjà?
+                'date_debut_%s' % annee: None, #todo
+                'date_fin_%s' % annee: None, #todo
+                'nb_jours': None, #todo
+                }
+
+        rapport.append(item_rapport)
+
+    
+
+
+@login_required
+@drh_or_admin_required
 def rapports_remuneration(request):
 
     lookup_params = dict(request.GET.items())
@@ -561,4 +628,3 @@ def organigrammes_region(request, id):
     }
 
     return render_to_response('rh/organigrammes/vide.html', c, RequestContext(request), mimetype="image/svg+xml")
-