</thead>
{% spaceless %}{% for contrat in contrats %}
<tr class="{% cycle 'row1' 'row2' %}">
- <td>{{ contrat.dossier.employe.id }}</td>
- <td>{{ contrat.dossier.employe.nom }}</td>
- <td>{{ contrat.dossier.employe.prenom }}</td>
- <td>{{ contrat.dossier.poste }}</td>
+ <td style="text-align:right"><a href="{% url admin:rh_employe_change contrat.dossier.employe.id %}">{{ contrat.dossier.employe.id }}</a></td>
+ <td><a href="{% url admin:rh_employe_change contrat.dossier.employe.id %}">{{ contrat.dossier.employe.nom|upper }}</a></td>
+ <td><a href="{% url admin:rh_employe_change contrat.dossier.employe.id %}">{{ contrat.dossier.employe.prenom }}</a></td>
+ <td><a href="{% url admin:rh_poste_change contrat.dossier.poste.id %}">{{ contrat.dossier.poste }}</a></td>
<td>{{ contrat.type_contrat.nom }}</td>
<td>{{ contrat.date_debut }}</td>
<td>{{ contrat.date_fin|default:'' }}</td>
</thead>
{% spaceless %}{% for poste in postes %}
<tr class="{% cycle 'row1' 'row2' %}">
- <td>{{ poste.id }}</td>
- <td>{{ poste.nom }}</td>
- <td>{{ poste.implantation }}</td>
- <td>{{ poste.employe_id }}</td>
- <td>{{ poste.employe_nom }}</td>
- <td>{{ poste.employe_prenom }}</td>
+ <td style="text-align:right"><a href="{% url admin:rh_poste_change poste.id %}">{{ poste.id }}</td>
+ <td><a href="{% url admin:rh_poste_change poste.id %}">{{ poste.nom|upper }}</a></td>
+ <td>{{ poste.implantation }}</td>
+ <td>
+ {% if poste.employe_id %}
+ <ul>
+ {% for e in poste.employe_id|split:'|' %}
+ <li><a href="{% url admin:rh_employe_change e %}">{{ e }}</a></li>
+ {% endfor %}
+ </ul>
+ {% else %}
+ Vacant
+ {% endif %}
+ </td>
+ <td>
+ {% if poste.employe_nom %}
+ <ul>
+ {% for e in poste.employe_nom|split:'|' %}
+ <li>{{ e }}</li>
+ {% endfor %}
+ </ul>
+ {% endif %}
+ </td>
+
+ <td>
+ {% if poste.employe_prenom %}
+ <ul>
+ {% for e in poste.employe_prenom|split:'|' %}
+ <li>{{ e }}</li>
+ {% endfor %}
+ </ul>
+ {% endif %}
+ </td>
</tr>
{% endfor %}{% endspaceless %}
</table>
<table id="result_list">
<thead>
<tr>
- <th># de l'employé</th>
- <th>Nom</th>
- <th>Prénom</th>
- <th>Salaire</th>
- <th><span title="Rémunération autres sources">RAS</span></th>
- <th>Indemnités</th>
- <th>Accessoires</th>
- <th>Charges patronales</th>
- <th>Total</th>
+ {% table_header headers %}
</tr>
</thead>
{% spaceless %}{% for employe in employes %}
<tr class="{% cycle 'row1' 'row2' %}">
- <td>{{ employe.id }}</td>
- <td>{{ employe.nom }}</td>
- <td>{{ employe.prenom }}</td>
+ <td style="text-align:right"><a href="{% url admin:rh_employe_change emploey.id %}">{{ employe.id }}</a></td>
+ <td><a href="{% url admin:rh_employe_change employe.id %}">{{ employe.nom|upper }}</td></a>
+ <td><a href="{% url admin:rh_employe_change employe.id %}">{{ employe.prenom }}</a></td>
<td align="right">{{ employe.Traitement|default:0|floatformat:2 }} €</td>
<td align="right">{{ employe.RAS|default:0|floatformat:2 }} €</td>
<td align="right">{{ employe.Indemnite|default:0|floatformat:2 }} €</td>
def field_sorted(self, field):
return True if field not in self.not_sortable else False
-
+@register.filter
+def split(str, splitter):
+ return str.split(splitter)
#postes = rh.Poste.actifs.select_related('implantation', 'dossier').all()
postes = rh.Poste.actifs.select_related('implantation') \
- .extra(select={'employe_id':'select group_concat(employe) from rh_dossier where poste=rh_poste.id and rh_dossier.actif = 1'}) \
- .extra(select={'employe_nom':'select group_concat(rh_employe.nom) from rh_dossier inner join rh_employe on rh_dossier.employe = rh_employe.id where poste=rh_poste.id and rh_dossier.actif = 1'}) \
- .extra(select={'employe_prenom':'select group_concat(rh_employe.prenom) from rh_dossier inner join rh_employe on rh_dossier.employe = rh_employe.id where poste=rh_poste.id and rh_dossier.actif = 1'})
+ .extra(select={'employe_id':'select group_concat(employe separator "|") from rh_dossier where poste=rh_poste.id and rh_dossier.actif = 1 and rh_dossier.date_fin is null %s' % \
+ ("%s" % (('order by employe %s' % ('asc' if 'ot' in request.GET and request.GET['ot'] == "asc" else "desc"))) if 'o' in request.GET and request.GET['o'] == "employe_id" else "") \
+ }) \
+ .extra(select={'employe_nom':'select group_concat(rh_employe.nom separator "|") from rh_dossier inner join rh_employe on rh_dossier.employe = rh_employe.id where poste=rh_poste.id and rh_dossier.actif = 1 and rh_dossier.date_fin is null %s' % \
+ ("%s" % (('order by rh_employe.nom %s' % ('asc' if 'ot' in request.GET and request.GET['ot'] == "asc" else "desc"))) if 'o' in request.GET and request.GET['o'] == "employe_nom" else "") \
+ }) \
+ .extra(select={'employe_prenom':'select group_concat(rh_employe.prenom separator "|") from rh_dossier inner join rh_employe on rh_dossier.employe = rh_employe.id where poste=rh_poste.id and rh_dossier.actif = 1 and rh_dossier.date_fin is null %s' % \
+ ("%s" % (('order by rh_employe.prenom %s' % ('asc' if 'ot' in request.GET and request.GET['ot'] == "asc" else "desc"))) if 'o' in request.GET and request.GET['o'] == "employe_prenom" else "") \
+ })
postes = postes.filter(**lookup_params)
if 'o' in request.GET:
def rapports_remuneration(request):
lookup_params = dict(request.GET.items())
+ if 'ot' in lookup_params:
+ del lookup_params['ot']
+ if 'o' in lookup_params:
+ del lookup_params['o']
for key, value in lookup_params.items():
if not isinstance(key, str):
lookup_params[smart_str(key)] = value
employes = rh.Employe.objects.all()
+ if 'o' in request.GET:
+ employes = employes.order_by("%s%s" % ('-' if 'ot' in request.GET and request.GET['ot'] == "desc" else '', request.GET['o']))
+
employes = employes.filter(**lookup_params)
output = []
+ headers = [
+ ("id", u"# de l'employé"),
+ ("nom", u"Nom"),
+ ("prenom", u"Prénom"),
+ ("", u"Salaire"),
+ ("", u"RAS"),
+ ("", u"Indemnités"),
+ ("", u"Accessoire"),
+ ("", u"Charges patronales"),
+ ("", u"Total"),
+ ]
+ h = SortHeaders(request, headers, order_field_type="ot", order_field="o")
for employe in employes:
line = {}
c = {
'title': 'Rapport de remuneration',
'employes': output,
+ 'headers': list(h.headers()),
}
return render_to_response('rh/rapports/remuneration.html', c, RequestContext(request))