Merge branch 'olivier' into test
[auf_rh_dae.git] / project / rh / views.py
index 2353e7a..9cb8ceb 100644 (file)
@@ -1,5 +1,6 @@
 # -*- encoding: utf-8 -*-
 
+import urllib
 from datetime import date
 from itertools import izip
 
@@ -7,11 +8,13 @@ import pygraphviz as pgv
 
 from django.core.urlresolvers import reverse
 from django.db.models import Q
-from django.contrib.auth.decorators import login_required
 from django.utils.encoding import smart_str
 from django.shortcuts import render_to_response, get_object_or_404
 from django.template import RequestContext
 from django.http import HttpResponse
+from django import forms
+from django.contrib.auth.decorators import login_required
+from django.contrib.admin import widgets as adminwidgets
 
 from datamaster_modeles import models as ref
 
@@ -21,6 +24,7 @@ from rh.decorators import drh_or_admin_required
 from rh.templatetags.rapports import SortHeaders
 from rh.change_list import RechercheTemporelle
 from rh import graph as rh_graph
+from rh.masse_salariale import MasseSalariale
 
 # pas de reference a DAE devrait etre refactorisé
 from dae.utils import get_employe_from_user
@@ -195,6 +199,70 @@ def rapports_contrat(request):
 
 @login_required
 @drh_or_admin_required
+def rapports_masse_salariale(request):
+
+    class RechercheTemporelle(forms.Form):
+        CHOICE_ANNEES = range(
+                rh.Remuneration.objects.exclude(date_debut=None) \
+                        .order_by('date_debut')[0].date_debut.year
+                , date.today().year + 1)
+        CHOICE_ANNEES.append('')
+
+        #date_debut pour que le script javascript le mette dans le querystring
+        date_debut = forms.CharField(widget=forms.Select(choices=
+                    ((a, a) for a in reversed(CHOICE_ANNEES)
+                    ))
+                )
+
+        #date_debut = forms.DateField(widget=adminwidgets.AdminDateWidget)
+        #date_fin = forms.DateField(widget=adminwidgets.AdminDateWidget)
+
+
+    form = RechercheTemporelle(request.GET)
+    get_filtre = [(k, v) for k,v in request.GET.items() \
+            if k not in ('date_debut', 'date_fin', 'implantation', )]
+    query_string = urllib.urlencode(get_filtre)
+
+    date_debut = None
+    date_fin = None
+    if request.GET.get('date_debut', None):
+        date_debut = "01-01-%s" % request.GET.get('date_debut', None)
+        date_fin = "31-12-%s" % request.GET.get('date_debut', None)
+
+    implantation = request.GET.get('dossier__poste__implantation')
+    region = request.GET.get('dossier__poste__implantation__region')
+
+    custom_filter = {}
+    if implantation:
+        custom_filter['dossier__poste__implantation'] = implantation
+    if region:
+        custom_filter['dossier__poste__implantation__region'] = region
+
+    c = {
+            'title': 'Rapport de masse salariale',
+            'form': form,
+            'headers': [],
+            'query_string': query_string,
+    }
+    if date_debut or date_fin:
+        masse = MasseSalariale(date_debut, date_fin, custom_filter,
+                request.GET.get('ne_pas_grouper', False))
+        if masse.rapport:
+            c['rapport'] = masse.rapport
+            headers = masse.headers
+            c['header_keys'] = [h[0] for h in masse.headers]
+            h = SortHeaders(request, headers, order_field_type="ot",
+                    not_sortable=c['header_keys'], order_field="o")
+            c['headers'] = list(h.headers())
+            c['total'] = masse.grand_totaux[0]
+            c['total_euro'] = masse.grand_totaux[1]
+            c['colspan'] = len(c['header_keys']) - 2
+
+    return render_to_response('rh/rapports/masse_salariale.html', c, RequestContext(request))
+
+
+@login_required
+@drh_or_admin_required
 def rapports_remuneration(request):
 
     lookup_params = dict(request.GET.items())
@@ -571,4 +639,3 @@ def organigrammes_region(request, id):
     }
 
     return render_to_response('rh/organigrammes/vide.html', c, RequestContext(request), mimetype="image/svg+xml")
-