KEY_DATE_DEBUT = "debut"
KEY_DATE_FIN = "fin"
+TYPE_REMUN_BSTG = 3
+
+
class MasseSalariale():
""" Rapport de la masse salariale. """
*time.strptime(date_debut, "%d-%m-%Y")[0:3]
)
date_fin = datetime.date(*time.strptime(date_fin, "%d-%m-%Y")[0:3])
- date_delta = date_fin - date_debut
+ rapport_date_delta = date_fin - date_debut
self.annee = date_fin.year
employes = {}
for r in remunerations:
if r.dossier.employe_id not in employes:
- employes[r.dossier.employe_id] = {'dossiers': set(),
- 'remunerations': []}
+ employes[r.dossier.employe_id] = {
+ 'dossiers': set(),
+ 'remunerations': []
+ }
employes[r.dossier.employe_id]['remunerations'].append(r)
employes[r.dossier.employe_id]['dossiers'].add(r.dossier)
self.employes = employes
-
+
self.rapport = []
pays_list = ref.Pays.objects.all()
valeurs_point_par_imp = \
dict(
- (v.implantation.id, v) for v in
- rh.ValeurPoint.objects.filter(annee=self.annee).all()
+ (v.implantation.id, v) for v in \
+ rh.ValeurPoint.objects.filter(annee=self.annee).all()
)
for item in self.employes.values():
dossiers = item['dossiers']
pass
dossier = list(dossiers)[0]
regime = dossier.poste.regime_travail
+
if dossier.poste.expatrie:
statut = "E"
else:
statut = "L"
- d_date_fin = dossier.date_fin.year if dossier.date_fin else ""
- d_date_debut = \
- dossier.date_debut.year if dossier.date_debut else ""
+ #on détermine la date du début et fin du dossier si année en cours
+ try:
+ d_date_fin = dossier.date_fin \
+ if dossier.date_fin.year == date_fin.year else None
+ except AttributeError:
+ d_date_fin = None
+ try:
+ d_date_debut = dossier.date_debut \
+ if dossier.date_debut.year == date_fin.year else None
+ except AttributeError:
+ d_date_debut = None
pays = \
pays_list[dossier.poste.implantation.adresse_physique_pays.id]
if d.organisme_bstg:
bstg_dossier = d
+ bstg_remun = None
if bstg_dossier:
- for r in bstg_dossier.remunerations
-
+ for r in bstg_dossier.rh_remunerations.all():
+ if r.type == TYPE_REMUN_BSTG:
+ bstg_remun = r
+ #Calcul du nombre de jours pour ce dossier.
+ try:
+ date_delta = dossier.date_fin - dossier.date_debut
+ except:
+ date_delta = rapport_date_delta
item_rapport = {
'bureau': dossier.poste.implantation.region.code,
'implantation': dossier.poste.implantation.nom_court,
'type_implantation': dossier.poste.implantation.type,
#'imputation': None,
- 'valeur_point':
+ 'valeur_point':
+ #todo valeur du point si pas présent
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': dossier.classement,
- 'point': "%s" %
+ 'point': "%s" %
dossier.classement.coefficient \
- if dossier.classement and
- dossier.classement.coefficient
+ if dossier.classement and
+ dossier.classement.coefficient
else "",
'regime_de_travail': "%s %%" % regime,
'local_expatrie': statut,
'statut': dossier.statut.code,
'date_fin_contrat': dossier.date_fin,
- 'date_debut': d_date_fin,
- 'date_fin': d_date_debut,
+ 'date_debut': d_date_debut,
+ 'date_fin': d_date_fin,
'nb_jours': date_delta.days,
'devise': remuns[0].devise,
- 'organismeBSTG':
- 'salaire_bstg_annuel': None, #todo
- 'salaire_bstg_total': None, #todo
+ 'organisme_bstg': dossier.organisme_bstg,
+ 'salaire_bstg_annuel': bstg_remun.montant \
+ if bstg_remun else None,
+ 'salaire_bstg_total':
+ self.convertir(bstg_remun) \
+ * regime * date_delta.days \
+ if bstg_remun else None,
}
self.rapport.append(item_rapport)
-
def build_qs(self, prefix, date_debut, date_fin):
date_debut_null = \
Q(**{"%s%s__isnull" % (prefix, KEY_DATE_DEBUT): True})
return q_range
def convertir(self, remuneration):
- remuneration.montant = float(remuneration.montant) * \
- self.trouver_taux(remuneration.devise).taux
- remuneration.devise = self.devise_base
+ if remuneration.devise != self.devise_base:
+ remuneration.montant = float(remuneration.montant) * \
+ self.trouver_taux(remuneration.devise).taux
+ remuneration.devise = self.devise_base
def trouver_taux(self, devise):
if devise.code not in self.taux_change:
)[0]
self.taux_change[devise.code] = t
return self.taux_change[devise.code]
-
-
-
-
-