@login_required
@drh_or_admin_required
+def rapports_employes_sans_contrat(request):
+ """
+ Employé sans contrat = a un Dossier qui n'a pas de Contrat associé
+ Employé avec contrat échu = a un Dossier avec un Contrat se terminant hier
+ au plus tard... (aujourd'hui = ok, pas date de fin = illimité donc ok)
+ """
+ lookup_params = get_lookup_params(request)
+
+ # contrats échus
+ contrats_echus = rh.Contrat.objects.filter(
+ date_fin__lt=date.today()
+ ).filter(
+ **lookup_params
+ )
+
+ # dossiers en cours sans contrat ou contrats échus
+ dossiers = rh.Dossier.objects.filter(
+ Q(date_debut=None) | Q(date_debut__lte=date.today()),
+ ).filter(
+ Q(date_fin=None) | Q(date_fin__gte=date.today()),
+ ).exclude(
+ date_debut__gt=date.today()
+ ).filter(
+ # sans contrat | contrat échu
+ Q(rh_contrats=None) | Q(rh_contrats__in=contrats_echus)
+ ).distinct()
+
+ # employés sans contrat ou contrats échus
+ employes = rh.Employe.objects.filter(rh_dossiers__in=dossiers) \
+ .distinct().count()
+
+ # tri
+ if 'o' in request.GET:
+ dossiers = dossiers.order_by(
+ ('-' if request.GET.get('ot') == "desc" else '') + request.GET['o']
+ )
+
+ # affichage
+ headers = [
+ ("employe__id", u"#"),
+ ("employe__nom", u"Employé"),
+ ("dossier", u"Dossier : Poste"),
+ ("rh_contrats__type_contrat", u"Contrat"),
+ ("rh_contrats__date_debut", u"Début contrat"),
+ ("rh_contrats__date_fin", u"Fin contrat"),
+ ("statut_residence", u"Statut"),
+ ("poste__implantation__region__code", u"Région"),
+ ("poste__implantation__nom", u"Implantation"),
+ ]
+ h = SortHeaders(
+ request, headers, order_field_type="ot", order_field="o",
+ not_sortable=('dossier',)
+ )
+
+ c = {
+ 'title': u'Rapport des employés sans contrat ou contrat échu',
+ 'employes': employes,
+ 'dossiers': dossiers,
+ 'headers': list(h.headers()),
+ }
+
+ return render(request, 'rh/rapports/employes_sans_contrat.html', c)
+
+
+@login_required
+@drh_or_admin_required
def rapports_masse_salariale(request):
class RechercheTemporelle(forms.Form):
@login_required
@drh_or_admin_required
-def rapports_employes_sans_contrat(request):
- lookup_params = get_lookup_params(request)
-
- # contrats échus
- contrats_echus = rh.Contrat.objects.filter(
- date_fin__lt=date.today()
- ).filter(
- **lookup_params
- )
-
- # dossiers en cours sans contrat
- dossiers_sans_contrat = rh.Dossier.objects.filter(
- Q(date_fin=None) | Q(date_fin__gt=date.today()),
- ).exclude(
- date_debut__gt=date.today()
- ).filter(
- rh_contrats__in=contrats_echus
- )
-
- # employés sans contrat
- employes = rh.Employe.objects.filter(
- rh_dossiers__in=dossiers_sans_contrat
- ).distinct()
- if 'o' in request.GET:
- employes = employes.order_by(
- ('-' if request.GET.get('ot') == "desc" else '') + request.GET['o']
- )
-
- # affichage
- headers = [
- ("id", u"#"),
- ("nom", u"Employé"),
- ("dossier", u"Dossier : Poste"),
- ("dossier_date_debut", u"Début dossier"),
- ("dossier_date_fin", u"Fin dossier"),
- ]
- h = SortHeaders(
- request, headers, order_field_type="ot", order_field="o",
- not_sortable=('dossier','dossier_date_debut','dossier_date_fin',)
- )
-
- c = {
- 'title': u'Rapport des employés sans contrat',
- 'employes': employes,
- 'dossiers_sans_contrat':dossiers_sans_contrat,
- 'headers': list(h.headers()),
- }
-
- return render(request, 'rh/rapports/employes_sans_contrat.html', c)
-
-
-@login_required
-@drh_or_admin_required
def rapports_postes_modelisation(request):
c = {}
data = []