[#3068] [#3069] [#3133] Réécriture du rapport de masse salariale
[auf_rh_dae.git] / project / rh / forms.py
index a1671a2..c2d1aff 100644 (file)
@@ -1,9 +1,15 @@
 # -*- encoding: utf-8 -*-
 
-from django import forms
+from datetime import date
+
 from ajax_select.fields import AutoCompleteSelectField
-from project.rh.models import Dossier, Contrat, AyantDroit, Employe, \
-        ResponsableImplantation
+from auf.django.references import models as ref
+from django import forms
+from django.db.models import Min
+
+from project.groups import get_employe_from_user
+from project.permissions import user_gere_obj_de_sa_region
+from project.rh import models as rh
 
 
 class AjaxSelect(object):
@@ -38,13 +44,13 @@ class FormDate(object):
 class DossierForm(forms.ModelForm, FormDate):
 
     class Model:
-        model = Dossier
+        model = rh.Dossier
 
 
 class ContratForm(forms.ModelForm, FormDate):
 
     class Model:
-        model = Contrat
+        model = rh.Contrat
 
 
 class AyantDroitForm(forms.ModelForm, AjaxSelect):
@@ -56,11 +62,10 @@ class AyantDroitForm(forms.ModelForm, AjaxSelect):
         self.fields['date_naissance'].widget = forms.widgets.DateInput()
 
     class Meta:
-        model = AyantDroit
+        model = rh.AyantDroit
 
 
 class EmployeAdminForm(forms.ModelForm, AjaxSelect):
-
     nationalite = AutoCompleteSelectField(
         'pays', help_text="Taper le nom ou le code du pays", required=False
     )
@@ -69,7 +74,7 @@ class EmployeAdminForm(forms.ModelForm, AjaxSelect):
     )
 
     class Meta:
-        model = Employe
+        model = rh.Employe
 
     def __init__(self, *args, **kwargs):
         super(EmployeAdminForm, self).__init__(*args, **kwargs)
@@ -77,8 +82,41 @@ class EmployeAdminForm(forms.ModelForm, AjaxSelect):
 
 
 class ResponsableInlineForm(forms.ModelForm):
-    employes_actifs = Employe.objects.actifs()
+    employes_actifs = rh.Employe.objects.actifs()
     employe = forms.ModelChoiceField(queryset=employes_actifs)
 
     class Meta:
-        model = ResponsableImplantation
+        model = rh.ResponsableImplantation
+
+
+class MasseSalarialeForm(forms.Form):
+    region = forms.ModelChoiceField(
+        label=u'Région', queryset=ref.Region.objects.all(), required=False
+    )
+    implantation = forms.ModelChoiceField(
+        label=u'Implantation', queryset=ref.Implantation.objects.all(),
+        required=False
+    )
+
+    def __init__(self, user, *args, **kwargs):
+        super(MasseSalarialeForm, self).__init__(*args, **kwargs)
+        min_date = rh.Remuneration.objects \
+                .aggregate(Min('date_debut'))['date_debut__min']
+        years = range(
+            date.today().year,
+            min_date.year if min_date else 1997,
+            -1
+        )
+        self.fields['annee'] = forms.TypedChoiceField(
+            label='Année', choices=zip(years, years), coerce=int,
+            required=False
+        )
+        if user_gere_obj_de_sa_region(user):
+            employe = get_employe_from_user(user)
+            self.fields['region'].queryset = ref.Region.objects.filter(
+                id=employe.implantation.region.id
+            )
+            self.fields['implantation'].queryset = \
+                    ref.Implantation.objects.filter(
+                        region=employe.implantation.region
+                    )