def get_total_charges_salariales(self):
total = 0.0
for r in self.get_charges_salariales():
- total += r.montant_euro()
+ total += r.montant_euros()
return total
def get_charges_patronales(self):
def get_total_charges_patronales(self):
total = 0.0
for r in self.get_charges_patronales():
- total += r.montant_euro()
+ total += r.montant_euros()
return total
def get_salaire_brut(self):
"""
total = 0.0
for r in self.get_remunerations_brutes():
- total += r.montant_euro()
+ total += r.montant_euros()
return total
def get_salaire_net(self):
"""
total_charges = 0.0
for r in self.get_charges_salariales():
- total_charges += r.montant_euro()
+ total_charges += r.montant_euros()
return self.get_salaire_brut() - total_charges
def get_couts_auf(self):
"""
total_charges = 0.0
for r in self.get_charges_patronales():
- total_charges += r.montant_euro()
+ total_charges += r.montant_euros()
return self.get_salaire_net() + total_charges
def get_remunerations_tierces(self):
def get_total_remunerations_tierces(self):
total = 0.0
for r in self.get_remunerations_tierces():
- total += r.montant_euro()
+ total += r.montant_euros()
return total
def valide(self):
<td class="montant">{{ remun.montant_mois|floatformat:0 }} {{ remun.devise.code }}</td>
<td class="montant">{{ remun.montant|floatformat:0 }} {{ remun.devise.code }}</td>
<td class="montant">{{ remun.montant_euro_mois|floatformat:0 }}€</td>
- <td class="montant">{{ remun.montant_euro|floatformat:0 }}€</td>
+ <td class="montant">{{ remun.montant_euros }}€</td>
<td>{{ remun.precision }}</td>
</tr>
{% endfor %}
<td class="montant">{{ remun.montant_mois|floatformat:0 }} {{ remun.devise.code }}</td>
<td class="montant">{{ remun.montant|floatformat:0 }} {{ remun.devise.code }}</td>
<td class="montant">{{ remun.montant_euro_mois|floatformat:0 }}€</td>
- <td class="montant">{{ remun.montant_euro|floatformat:0 }}€</td>
+ <td class="montant">{{ remun.montant_euros }}€</td>
<td>{{ remun.precision }}</td>
</tr>
{% endfor %}
<td class="montant">{{ remun.montant_mois|floatformat:0 }} {{ remun.devise.code }}</td>
<td class="montant">{{ remun.montant|floatformat:0 }} {{ remun.devise.code }}</td>
<td class="montant">{{ remun.montant_euro_mois|floatformat:0 }}€</td>
- <td class="montant">{{ remun.montant_euro|floatformat:0 }}€</td>
+ <td class="montant">{{ remun.montant_euros }}€</td>
<td>{{ remun.precision }}</td>
</tr>
{% endfor %}
<td class="montant">{{ remun.montant_mois|floatformat:0 }} {{ remun.devise.code }}</td>
<td class="montant">{{ remun.montant|floatformat:0 }} {{ remun.devise.code }}</td>
<td class="montant">{{ remun.montant_euro_mois|floatformat:0 }}€</td>
- <td class="montant">{{ remun.montant_euro|floatformat:0 }}€</td>
+ <td class="montant">{{ remun.montant_euros }}€</td>
<td>{{ remun.precision }}</td>
</tr>
{% endfor %}
</td>
<td id="montant_euro_mois-{{ remun.id }}" class="montant">
{{ remun.montant_euro_mois }}</td>
- <td id="montant_euro-{{ remun.id }}" class="montant cumulable">{{ remun.montant_euro }}</td>
+ <td id="montant_euro-{{ remun.id }}" class="montant cumulable">{{ remun.montant_euros }}</td>
<td><input type="text" name="cg-precision-{{ remun.id }}"
value="{{ remun.precision|default_if_none:'' }}" /></td>
</tr>
</td>
<td id="montant_euro_mois-{{ remun.id }}" class="montant">
{{ remun.montant_euro_mois }}</td>
- <td id="montant_euro-{{ remun.id }}" class="montant cumulable">{{ remun.montant_euro }}</td>
+ <td id="montant_euro-{{ remun.id }}" class="montant cumulable">{{ remun.montant_euros }}</td>
<td><input type="text" name="cg-precision-{{ remun.id }}"
value="{{ remun.precision|default_if_none:'' }}" /></td>
</tr>
<td>{{ dc.personne }}</td>
<td>{{ dc.poste }}</td>
<td>{{ dc.montant|floatformat:0 }} {{ dc.devise.code }}</td>
- <td>{{ dc.montant_euros|floatformat:0 }} EUR</td>
+ <td>{{ dc.montant_euros }} EUR</td>
</tr>
{% endfor %}
</tbody>
<td>{{ poste_connexe.nom }}</td>
<td>{{ poste_connexe.implantation }}</td>
<td>{{ poste_connexe.montant|floatformat:0 }} {{ poste_connexe.devise.code }}</td>
- <td>{{ poste_connexe.montant_euros|floatformat:0 }} €</td>
+ <td>{{ poste_connexe.montant_euros }} €</td>
</tr>
{% endfor %}
</tbody>
data['montant'] = None
if salaire is not None and salaire.devise is not None:
data['devise'] = salaire.devise.id
- data['montant_euros'] = salaire.montant_euro()
+ data['montant_euros'] = salaire.montant_euros()
else:
data['devise'] = None
data['montant_euros'] = 0
if salaire is not None:
data['devise'] = salaire.devise.id
data['montant'] = float(salaire.montant)
- data['montant_euros'] = salaire.montant_euro()
+ data['montant_euros'] = salaire.montant_euros()
else:
data['devise'] = None
data['montant'] = ""
for r in remunnow:
nature = r.type.nature_remuneration
sums[nature] += r.montant
- sums_euro[nature] += r.montant_euro()
+ sums_euro[nature] += r.montant_euros()
remun_sum += r.montant
- remun_sum_euro += r.montant_euro()
+ remun_sum_euro += r.montant_euros()
remun = {}
sums = dict(sums)
return path
+class DevisableMixin(object):
+
+ def get_annee_pour_taux_devise(self):
+ raise NotImplementedError
+
+ def taux_devise(self):
+ if self.devise is None:
+ return None
+ if self.devise.code == "EUR":
+ return 1
+
+ annee = self.get_annee_pour_taux_devise()
+ taux = [tc.taux for tc in TauxChange.objects.filter(devise=self.devise, annee=annee)]
+ taux = set(taux)
+
+ if len(taux) == 0:
+ raise Exception(u"Pas de taux pour %s en %s" % (self.devise.code, annee))
+
+ if len(taux) > 1:
+ raise Exception(u"Il existe plusieurs taux de %s en %s" %
+ (self.devise.code, annee))
+ else:
+ return list(taux)[0]
+
+ def montant_euros(self):
+ try:
+ taux = self.taux_devise()
+ except Exception, e:
+ return e
+ if not taux:
+ return None
+ return int(round(float(self.montant) * float(taux), 2))
+
+
class Commentaire(AUFMetadata):
texte = models.TextField()
owner = models.ForeignKey('auth.User', db_column='owner', related_name='+', verbose_name=u"Commentaire de")
class PostePiece(PostePiece_):
pass
-class PosteComparaison_(AUFMetadata):
+class PosteComparaison_(AUFMetadata, DevisableMixin):
"""
De la même manière qu'un dossier, un poste peut-être comparé à un autre poste.
"""
class Meta:
abstract = True
- def taux_devise(self):
- if self.devise is None:
- return None
- if self.devise.code == "EUR":
- return 1
- annee = self.poste.date_debut.year
- taux = [tc.taux for tc in TauxChange.objects.filter(devise=self.devise, annee=annee)]
- taux = set(taux)
- if len(taux) != 1:
- raise Exception(u"Le taux de la devise %s n'a pas n'existe pas pour %s ou il existe plusieurs taux pour la même année" % (self.devise.id, annee))
- else:
- return list(taux)[0]
- def montant_euros(self):
- taux = self.taux_devise()
- if not taux:
- return None
- return round(float(self.montant) * float(taux), 2)
+ def get_annee_pour_taux_devise(self):
+ return self.poste.date_debut.year
def __unicode__(self):
return self.nom
class DossierCommentaire(DossierCommentaire_):
pass
-class DossierComparaison_(models.Model):
+class DossierComparaison_(models.Model, DevisableMixin):
"""
Photo d'une comparaison salariale au moment de l'embauche.
"""
class Meta:
abstract = True
- def taux_devise(self):
- if self.devise is None:
- return None
- annee = self.dossier.contrat_date_debut.year
- taux = [tc.taux for tc in TauxChange.objects.filter(devise=self.devise, annee=annee)]
- taux = set(taux)
- if len(taux) != 1:
- raise Exception(u"Le taux de la devise %s n'a pas n'existe pas pour %s ou il existe plusieurs taux pour la même année" % (self.devise.id, annee))
- else:
- return list(taux)[0]
+ def get_annee_pour_taux_devise(self):
+ return self.dossier.contrat_date_debut.year
- def montant_euros(self):
- taux = self.taux_devise()
- if not taux:
- return None
- return round(float(self.montant) * float(taux), 2)
class DossierComparaison(DossierComparaison_):
pass
def __unicode__(self):
return u'%s %s (%s)' % (self.montant, self.devise.code, self.type.nom)
-class Remuneration_(RemunerationMixin):
+class Remuneration_(RemunerationMixin, DevisableMixin):
"""Structure de rémunération (données budgétaires) en situation normale
pour un Dossier. Si un Evenement existe, utiliser la structure de
rémunération EvenementRemuneration de cet événement.
def montant_avec_regime(self):
return round(self.montant * (self.dossier.regime_travail/100), 2)
- def taux_devise(self):
- if self.devise.code == "EUR":
- return 1
-
+ def get_annee_pour_taux_devise(self):
annee = datetime.datetime.now().year
if self.dossier.poste.date_debut is not None:
annee = self.dossier.poste.date_debut.year
annee = self.dossier.date_debut.year
if self.date_debut is not None:
annee = self.date_debut.year
-
- taux = [tc.taux for tc in TauxChange.objects.filter(devise=self.devise_id, annee=annee)]
- taux = set(taux)
- if len(taux) != 1:
- raise Exception(u"Le taux de la devise %s n'a pas n'existe pas pour %s ou il existe plusieurs taux pour la même année %s (%s)" % (self.devise.code, annee, taux, self.dossier))
- else:
- return list(taux)[0]
-
- def montant_euro(self):
- return round(float(self.montant) * float(self.taux_devise()), 2)
+ return annee
def montant_euro_mois(self):
- return round(self.montant_euro() / 12, 2)
+ return round(self.montant_euros() / 12, 2)
def __unicode__(self):
try: