Merge branch 'dev', remote-tracking branch 'origin' into masse_salariale_jp
authorJean-Philippe Caissy <jpcaissy@piji.ca>
Wed, 14 Mar 2012 21:29:07 +0000 (16:29 -0500)
committerJean-Philippe Caissy <jpcaissy@piji.ca>
Wed, 14 Mar 2012 21:29:07 +0000 (16:29 -0500)
1  2 
project/rh/views.py

diff --combined project/rh/views.py
@@@ -154,7 -154,7 +154,7 @@@ def rapports_contrat(request)
  
      contrats = rh.Contrat.objects.select_related('dossier', 'dossier__poste', 'dossier__poste__implantation', 'type_contrat', 'dossier__employe')
  
-     cl = RechercheTemporelle(request, rh.Contrat)
+     cl = RechercheTemporelle(dict(request.GET.items()), rh.Contrat)
      lookup_params = cl.purge_params(lookup_params)
      contrats = contrats.filter(**lookup_params).exclude(dossier__employe__supprime=1)
      contrats = cl.filter_temporel(contrats)
  
  @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())
@@@ -628,3 -561,4 +628,3 @@@ def organigrammes_region(request, id)
      }
  
      return render_to_response('rh/organigrammes/vide.html', c, RequestContext(request), mimetype="image/svg+xml")
 -