apercu
[auf_rh_dae.git] / project / rh / views.py
index 2f05329..ce2802d 100644 (file)
@@ -2,6 +2,7 @@
 from datetime import date
 
 from django.contrib.auth.decorators import login_required
+from django.utils.encoding import smart_str
 from django.shortcuts import redirect, render_to_response, get_object_or_404
 from django.template import RequestContext
 
@@ -9,6 +10,7 @@ from datamaster_modeles import models as ref
 from project.lib import get_employe_from_id
 
 from rh import models as rh
+from rh.lib import calc_remun
 
 # homes
 @login_required
@@ -59,7 +61,24 @@ def employe(request, id):
 @login_required
 def rapports_poste(request):
 
+    lookup_params = dict(request.GET.items())
+
+    comble = 'all'
+
+    for key, value in lookup_params.items():
+        if not isinstance(key, str):
+            # 'key' will be used as a keyword argument later, so Python
+            # requires it to be a string.
+            del lookup_params[key]
+            lookup_params[smart_str(key)] = value
+
+        if key == 'comble':
+            comble = value
+            del lookup_params[key]
+
     postes = rh.Poste.actifs.select_related('implantation').all()
+    postes = postes.filter(**lookup_params)
+
     poste_ids = set([p.pk for p in postes])
 
     dossiers = rh.Dossier.objects.select_related('poste', 'employe').filter(poste__in=poste_ids)
@@ -69,13 +88,20 @@ def rapports_poste(request):
     out = []
 
     for p in postes:
+        employe = employes.get(p.id)
+
+        if comble == 'c' and not employe:
+            continue
+
+        if comble == 'n' and employe:
+            continue
+
         line = {}
         out.append(line)
 
         line['id'] = p.id
         line['nom'] = p.nom
         line['implantation'] = p.implantation.nom
-        employe = employes.get(p.id)
         if employe:
             line['employe_id'] = employe.id
             line['employe_nom'] = employe.nom
@@ -87,3 +113,91 @@ def rapports_poste(request):
     }
 
     return render_to_response('rh/rapports/postes.html', c, RequestContext(request))
+
+
+def rapports_contrat(request):
+
+    lookup_params = dict(request.GET.items())
+
+    for key, value in lookup_params.items():
+        if not isinstance(key, str):
+            # 'key' will be used as a keyword argument later, so Python
+            # requires it to be a string.
+            del lookup_params[key]
+            lookup_params[smart_str(key)] = value
+
+    contrats = rh.Contrat.objects.select_related('dossier', 'dossier__poste', 'dossier__poste__implantation', 'type_contrat', 'dossier__employe').all()
+    contrats = contrats.filter(**lookup_params)
+
+    c = {
+        'title': 'Rapport des contrats',
+        'contrats': contrats,
+    }
+
+    return render_to_response('rh/rapports/contrats.html', c, RequestContext(request))
+
+
+def rapports_remuneration(request):
+
+    lookup_params = dict(request.GET.items())
+
+    for key, value in lookup_params.items():
+        if not isinstance(key, str):
+            # 'key' will be used as a keyword argument later, so Python
+            # requires it to be a string.
+            del lookup_params[key]
+            lookup_params[smart_str(key)] = value
+
+    employes = rh.Employe.objects.all()
+    employes = employes.filter(**lookup_params)
+
+    output = []
+
+    for employe in employes:
+        line = {}
+        output.append(line)
+
+        dossiers = employe.dossiers.all()
+
+        remun = {}
+        remun_sum_euro = 0
+
+        for dossier in dossiers:
+            this_remun, this_remun_sum, this_remun_sum_euro = calc_remun(dossier)
+
+            for item in this_remun:
+                if item not in remun:
+                    remun[item] = this_remun[item]
+                else:
+                    remun[item][0] += this_remun[item][0]
+                    remun[item][1] += this_remun[item][1]
+
+            remun_sum_euro += this_remun_sum_euro
+
+        line['remun_sum_euro'] = remun_sum_euro
+
+        for r in remun:
+            if r == u'Indemnité':
+                line['Indemnite'] = remun[r][1]
+            else:
+                line[r] = remun[r][1]
+
+        line['id'] = employe.id
+        line['nom'] = employe.nom
+        line['prenom'] = employe.prenom
+
+
+    c = {
+        'title': 'Rapport de remuneration',
+        'employes': output,
+    }
+
+    return render_to_response('rh/rapports/remuneration.html', c, RequestContext(request))
+
+def dossier_apercu(request, dossier_id):
+    c = {
+        'is_popup' : request.GET.get('_popup', False),
+        'dossier' : get_object_or_404(rh.Dossier, pk=dossier_id)
+
+    }
+    return render_to_response('admin/rh/dossier/apercu.html', c, RequestContext(request))