def dossiers_passes(self):
today = date.today()
- return self.dossiers.filter(date_fin__lt=today).order_by('-date_fin')
+ dossiers_passes = self.dossiers.filter(date_fin__lt=today).order_by('-date_fin')
+ for d in dossiers_passes:
+ d.archive = True
+ return dossiers_passes
def dossiers_futurs(self):
today = date.today()
def dossiers_encours(self):
dossiers_p_f = self.dossiers_passes() | self.dossiers_futurs()
ids_dossiers_p_f = [d.id for d in dossiers_p_f]
- return self.dossiers.exclude(id__in=ids_dossiers_p_f).order_by('-date_fin')
+ dossiers_encours = self.dossiers.exclude(id__in=ids_dossiers_p_f).order_by('-date_fin')
+
+ # TODO : supprimer ce code quand related_name fonctionnera ou d.remuneration_set
+ for d in dossiers_encours:
+ d.remunerations = Remuneration.objects.filter(dossier=d.id).order_by('-id')
+ return dossiers_encours
def postes_encours(self):
postes_encours = set()
return postes_encours
def poste_principal(self):
- return self.dossiers_encours()[0].poste
+ """
+ Retourne le Poste du premier Dossier créé parmi les Dossiers en cours.
+ Idée derrière :
+ si on ajout d'autre Dossiers, c'est pour des Postes secondaires.
+ """
+ poste = Poste.objects.none()
+ try:
+ poste = self.dossiers_encours().order_by('date_debut')[0].poste
+ except:
+ pass
+ return poste
class EmployePiece(models.Model):
"""Documents relatifs à un employé.
verbose_name = "Dossier"
verbose_name_plural = "Dossiers"
+ def salaire_theorique(self):
+ annee = date.today().year
+ coeff = self.classement.coefficient
+ implantation = self.poste.implantation
+ point = ValeurPoint.objects.get(implantation=implantation, annee=annee)
+
+ montant = coeff * point.valeur
+ devise = point.devise
+ return {'montant':montant, 'devise':devise}
+
def __unicode__(self):
poste = self.poste.nom
if self.employe.genre == 'F':
objects = ContratManager()
dossier = models.ForeignKey('Dossier', db_column='dossier',
- related_name='+')
+ related_name='contrats')
type_contrat = models.ForeignKey('TypeContrat', db_column='type_contrat',
related_name='+',
verbose_name="Type de contrat")
</tr>
<tr>
<th>Nationalité :</th>
- <td>{{ employe.nationalite }}</td>
+ <td>{{ employe.nationalite.nom }}</td>
</tr>
<tr>
<th>Situation familiale :</th>
- <td>{{ employe.situation_familiale }}</td>
+ <td>{{ employe.get_situation_famille_display }}</td>
</tr>
</tbody>
</table>
</table>
</div>
<div class="clear contenu">
- <h2>Dépendants (ayant-droits)</h2>
+ <h2>
+ Dépendant{{ employe.ayantdroits.all|pluralize }}
+ (ayant{{ employe.ayantdroits.all|pluralize }}-droit)
+ ({{ employe.ayantdroits.count }})
+ </h2>
{% if employe.ayantdroits.all %}
- <ul>
- {% for ad in employe.ayantdroits.all %}
- <li>{{ ad }}</li>
- {% endfor %}
- </ul>
+ <table>
+ <thead>
+ <tr>
+ <th>Nom</th>
+ <th>Nationalité</th>
+ <th>Date de naissance</th>
+ <th>Genre</th>
+ <th>Lien de parenté</th>
+ </tr>
+ </thead>
+ <tbody>
+ {% for personne in employe.ayantdroits.all %}
+ <tr>
+ <td>{{ personne.get_nom }}</td>
+ <td>{{ personne.nationalite.nom }}</td>
+ <td class="date">{{ personne.date_naissance }}</td>
+ <td>{{ personne.get_genre_display }}</td>
+ <td>{{ personne.lien_parente }}</td>
+ {% endfor %}
+ </tbody>
+ </table>
{% else %}
<p>Aucun dépendant.</p>
{% endif %}
<hr />
<div id="postes" class="contenu">
- <h2>Poste{{ employe.dossiers_encours|pluralize }} en cours</h2>
+ <h2>Poste{{ employe.dossiers_encours|pluralize }} en cours ({{ employe.dossiers_encours.count }})</h2>
{% for d in employe.dossiers_encours %}
<h3>{{ d.poste.nom }}</h3>
- <p>
- {{ d.poste.service }}<br />
- {{ d.poste.implantation.nom }}<br />
- {{ d.poste.implantation.adresse_physique_ville }}
- </p>
<table>
<tbody>
<tr>
</table>
<h3>Rémunération</h3>
- {{ d.classement }}<br />
+ <table>
+ <tr>
+ <th>Classification :</th>
+ <td>{{ d.classement.type }}.{{ d.classement.echelon }}.{{ d.classement.degre }}</td>
+ <th>Salaire de base théorique :</th>
+ <td>
+ {{ d.salaire_theorique.montant }} {{ d.salaire_theorique.devise.code }}
+ </td>
+ </tr>
+ </table>
+ <table>
+ <thead>
+ <tr>
+ <th></th>
+ <th>Montant</th>
+ <th>Devise</th>
+ <th>Type</th>
+ <th>Type revalorisation</th>
+ <th>Valide du</th>
+ <th>au</th>
+ <th>Commentaire</th>
+ </tr>
+ </thead>
+ <tbody>
+ {% for r in d.remunerations %}
+ <tr>
+ <td>{{ r.id }}</td>
+ <td class="nombre">{{ r.montant|default_if_none:"?" }}</td>
+ <td>{{ r.devise.code }}</td>
+ <td>{{ r.type }}</td>
+ <td>{{ r.type_revalorisation|default_if_none:"" }}</td>
+ <td class="date">{{ r.date_debut|default_if_none:"(inconnu)" }}</td>
+ <td class="date">{{ r.date_fin|default_if_none:"(indéterminé)" }}</td>
+ <td>{{ r.commentaire|default_if_none:"" }}</td>
+ </tr>
+ {% endfor %}
+ </tbody>
+ </table>
- <h3>Contrats</h3>
- {{ d.contrats }}
+ <h3>Contrat{{ d.contrats|pluralize }} ({{ d.contrats.count }})</h3>
+ <table>
+ {% for c in d.contrats.all %}
+ <tr>
+ <td>{{ c.type_contrat }}</td>
+ <td>du</td>
+ <td>{{ c.date_debut }}</td>
+ <td>au</td>
+ <td>{{ c.date_fin|default_if_none:"(non déterminé)" }}</td>
+ </tr>
+ {% endfor %}
+ </table>
{% endfor %}
</div>
c = {}
employe = rc['this_employe']
-
- # dossiers en cours et passés
- today = date.today()
- dossiers = employe.dossiers.all().order_by('-date_fin')
- dossiers_passes = dossiers.filter(date_fin__lt=today)
- dossiers_futurs = dossiers.filter(date_debut__gt=today)
- dossiers_p_f = dossiers_passes | dossiers_futurs
- ids_dossiers_p_f = [d.id for d in dossiers_p_f]
- dossiers_encours = dossiers.exclude(id__in=ids_dossiers_p_f)
-
- for d in dossiers_passes:
- d.archive = True
-
+
c['user'] = request.user
c['employe'] = employe
- c['dossiers'] = dossiers.count()
return render_to_response('rh/profil.html', c, rc)
# employes