# -*- encoding: utf-8 -*-
import time
import datetime
+import csv
+import StringIO
from django.db.models import Q
from datamaster_modeles import models as ref
-
import rh.models as rh
TYPE_PRIME_INSTALLATION = (13,)
TYPE_PRIME_DEMENAG = (15,)
TYPE_PRIME_AVION = (14,)
-TYPE_NATURE_PAIEMENT = u"Accessoire"
+TYPE_NATURE_PAIEMENT = u"Accessoire"
+TYPE_NATURE_CHARGES = u"Charges"
+
class MasseSalariale():
""" Rapport de la masse salariale. """
remunerations = rh.Remuneration.objects.filter(q_range) \
.filter(q_range_d) \
.exclude(supprime=True) \
- .select_related("dossier", "dossier_employe", "dossier_poste", "type")
+ .select_related(
+ "dossier", "dossier_employe", "dossier_poste", "type"
+ )
employes = {}
for r in remunerations:
'avion': 0.0,
'autre': 0.0,
}
+ charges = 0.0
for r in remuns:
montant = float(r.montant)
r.type.nature_remuneration == TYPE_NATURE_PAIEMENT:
primes['autre'] += montant
+ if r.type.nature_remuneration == TYPE_NATURE_CHARGES:
+ charges += montant
+
total_indemnites = sum(indemnites.values())
#Calcul du nombre de jours pour ce dossier.
else:
date_delta = rapport_date_delta
+ masse_salariale = (salaire_base + total_indemnites + \
+ sum(primes.values()) + charges)
+
item_rapport = {
'bureau': dossier.poste.implantation.region.code,
'pays': pays,
(date_delta.days / rapport_date_delta.days),
'prime_total': sum(primes.values()) * regime * \
(date_delta.days / rapport_date_delta.days),
- }
+ 'charges_patronales': charges,
+ 'charges_patronales_%s' % self.annee: charges * regime * \
+ (date_delta.days / rapport_date_delta.days),
+ 'masse_salariale': masse_salariale,
+ 'masse_salariale_%s' % self.annee: masse_salariale * \
+ regime * (
+ date_delta.days / rapport_date_delta.days
+ ),
+
+ }
self.rapport.append(item_rapport)
)[0]
self.taux_change[devise.code] = t
return self.taux_change[devise.code]
+
+ def csv(self):
+ self.csv_handle = StringIO.StringIO()
+ csv_writer = csv.writer(self.csv_handle)
+ csv_writer.writerow(self.rapport[0].keys())
+ csv_writer.writerow([row.values() for row in self.rapport])
+