from auf.django.metadata.models import AUFMetadata
from auf.django.metadata.managers import NoDeleteManager
import datamaster_modeles.models as ref
-
+from validators import validate_date_passee
# Constantes
HELP_TEXT_DATE = "format: aaaa-mm-jj"
# Autres Metadata
date_validation = models.DateTimeField(null=True, blank=True) # de dae
- date_debut = models.DateField(verbose_name="Date de début", null=True,
- help_text=HELP_TEXT_DATE)
+ date_debut = models.DateField(verbose_name="Date de début",
+ help_text=HELP_TEXT_DATE,
+ null=True, blank=True)
date_fin = models.DateField(verbose_name="Date de fin",
help_text=HELP_TEXT_DATE,
null=True, blank=True)
nom = models.CharField(verbose_name="Poste", max_length=255, null=True, blank=True)
montant = models.IntegerField(null=True)
devise = models.ForeignKey("Devise", default=5, related_name='+', null=True, blank=True)
- montant_euros = models.IntegerField(null=True)
+
+ def taux_devise(self):
+ liste_taux = self.devise.tauxchange_set.order_by('-annee').filter(implantation=self.implantation)
+ if len(liste_taux) == 0:
+ raise Exception(u"La devise %s n'a pas de taux pour l'implantation %s" % (self.devise, self.implantation))
+ else:
+ return liste_taux[0].taux
+
+ def montant_euros(self):
+ return round(float(self.montant) * float(self.taux_devise()), 2)
class PosteCommentaire(Commentaire):
verbose_name="Nationalité")
date_naissance = models.DateField(help_text=HELP_TEXT_DATE,
verbose_name="Date de naissance",
+ validators=[validate_date_passee],
null=True, blank=True)
genre = models.CharField(max_length=1, choices=GENRE_CHOICES)
if not nom_affichage:
nom_affichage = u'%s %s' % (self.nom.upper(), self.prenom)
return nom_affichage
+
+ def civilite(self):
+ civilite = u''
+ if self.genre.upper() == u'M':
+ civilite = u'M.'
+ elif self.genre.upper() == u'F':
+ civilite = u'Mme'
+ return civilite
class EmployePiece(models.Model):
"""Documents relatifs à un employé.
verbose_name="Nationalité")
date_naissance = models.DateField(help_text=HELP_TEXT_DATE,
verbose_name="Date de naissance",
+ validators=[validate_date_passee],
null=True, blank=True)
genre = models.CharField(max_length=1, choices=GENRE_CHOICES)
"""
# Identification
employe = models.ForeignKey('Employe', db_column='employe',
- related_name='+',
+ related_name='dossiers',
verbose_name="Employé")
poste = models.ForeignKey('Poste', db_column='poste', related_name='+')
statut = models.ForeignKey('Statut', related_name='+', default=3,
class Meta:
abstract = True
- ordering = ['employe__nom_affichage', 'employe__nom', 'poste__nom']
+ ordering = ['employe__nom', ]
verbose_name = "Dossier"
verbose_name_plural = "Dossiers"
__doc__ = Dossier_.__doc__
-
-class Dossier(Dossier_):
- __doc__ = Dossier_.__doc__
-
-
class DossierPiece(models.Model):
"""Documents relatifs au Dossier (à l'occupation de ce poste par employé).
Ex.: Lettre de motivation.
dossier = models.ForeignKey('Dossier', db_column='dossier',
related_name='+')
+class DossierComparaison(models.Model):
+ """
+ Photo d'une comparaison salariale au moment de l'embauche.
+ """
+ dossier = models.ForeignKey('Dossier', related_name='comparaisons')
+ implantation = models.ForeignKey(ref.Implantation, related_name="+", null=True, blank=True)
+ poste = models.CharField(max_length=255, null=True, blank=True)
+ personne = models.CharField(max_length=255, null=True, blank=True)
+ montant = models.IntegerField(null=True)
+ devise = models.ForeignKey('Devise', default=5, related_name='+', null=True, blank=True)
+
+ def taux_devise(self):
+ liste_taux = self.devise.tauxchange_set.order_by('-annee').filter(implantation=self.dossier.poste.implantation)
+ if len(liste_taux) == 0:
+ raise Exception(u"La devise %s n'a pas de taux pour l'implantation %s" % (self.devise, self.dossier.poste.implantation))
+ else:
+ return liste_taux[0].taux
+
+ def montant_euros(self):
+ return round(float(self.montant) * float(self.taux_devise()), 2)
+
### RÉMUNÉRATION
class TauxChange(TauxChange_):
__doc__ = TauxChange_.__doc__
+class ValeurPointManager(NoDeleteManager):
+ def get_query_set(self):
+ return super(ValeurPointManager, self).get_query_set().select_related('devise', 'implantation')
+
class ValeurPoint_(AUFMetadata):
"""Utile pour connaître, pour un Dossier, le salaire de base théorique lié
salaire de base = coefficient * valeur du point de l'Implantation du Poste
"""
+
+ objects = ValeurPointManager()
+
valeur = models.FloatField(null=True)
devise = models.ForeignKey('Devise', db_column='devise', null=True,
related_name='+', default=5)
annee = models.IntegerField()
class Meta:
- ordering = ['annee', 'implantation__nom']
+ ordering = ['-annee', 'implantation__nom']
abstract = True
- ordering = ['annee']
verbose_name = "Valeur du point"
verbose_name_plural = "Valeurs du point"