Merge branch 'test' into dev
authorEric Mc Sween <eric.mcsween@auf.org>
Thu, 10 Nov 2011 18:55:56 +0000 (13:55 -0500)
committerEric Mc Sween <eric.mcsween@auf.org>
Thu, 10 Nov 2011 18:55:56 +0000 (13:55 -0500)
project/rh/models.py
project/rh/templates/rh/profil.html
project/rh/views.py

index 59196a2..18d2b48 100644 (file)
@@ -366,7 +366,10 @@ class Employe(AUFMetadata):
                
     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()
@@ -375,7 +378,12 @@ class Employe(AUFMetadata):
     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()
@@ -384,7 +392,17 @@ class Employe(AUFMetadata):
         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é.
@@ -539,6 +557,16 @@ class Dossier_(AUFMetadata):
         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':
@@ -681,7 +709,7 @@ class Contrat(AUFMetadata):
     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")
index 2699c9c..102dc76 100644 (file)
             </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>
index ec2245b..d623ef6 100644 (file)
@@ -18,22 +18,9 @@ def profil(request):
     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