Masse salariale: ajout de couleur pour les tableaux
authorJean-Philippe Caissy <jpcaissy@piji.ca>
Thu, 29 Mar 2012 21:22:28 +0000 (16:22 -0500)
committerJean-Philippe Caissy <jpcaissy@piji.ca>
Thu, 29 Mar 2012 21:22:28 +0000 (16:22 -0500)
project/rh/masse_salariale.py
project/rh/templates/rh/rapports/masse_salariale.html
project/rh/templates/rh/rapports/table_header.html
project/rh/templatetags/rapports.py
project/rh/views.py

index af50852..8f9553b 100644 (file)
@@ -21,13 +21,14 @@ TYPE_REMUN_BASE = (1,)
 TYPE_REMUN_FONC_RESP = (7, 8)
 TYPE_REMUN_EXPAT = (4,)
 TYPE_REMUN_LOGEMENT = (6,)
+TYPE_REMUN_SCOLARITE = (5,)
 TYPE_REMUN_TRANSP = (9,)
 TYPE_REMUN_13E = (18,)
 TYPE_PRIME_INTERIM = (19,)
 TYPE_REMUN_ALL_INDEMNITES = list(itertools.chain(*(TYPE_REMUN_BSTG,
         TYPE_REMUN_MAD, TYPE_REMUN_BASE, TYPE_REMUN_FONC_RESP,
         TYPE_REMUN_EXPAT, TYPE_REMUN_LOGEMENT, TYPE_REMUN_TRANSP,
-        TYPE_REMUN_13E, TYPE_PRIME_INTERIM)))
+        TYPE_REMUN_13E, TYPE_PRIME_INTERIM, TYPE_REMUN_SCOLARITE)))
 TYPE_PRIME_INSTALLATION = (13,)
 TYPE_PRIME_DEMENAG = (15,)
 TYPE_PRIME_AVION = (14,)
@@ -151,58 +152,68 @@ class MasseSalariale():
                     {'columnwidth': '2.9cm'}),
                 HEADER_SEPARATOR,
                 ('salaire_theorique', u"Salaire théorique",
-                    {'columnwidth': '2.5cm'}),
+                    {'columnwidth': '2.5cm', 'background-color': '#ecab44'}),
                 ('salaire_base_brut', u"Salaire de base brut",
-                    {'columnwidth': '2.5cm'}),
+                    {'columnwidth': '2.5cm', 'background-color': '#ecab44'}),
                 ('salaire_complementaire', u"Salaire complémentaire",
-                    {'columnwidth': '2.5cm'}),
+                    {'columnwidth': '2.5cm', 'background-color': '#ecab44'}),
                 HEADER_SEPARATOR,
                 ('indemnite_fonctions', u"Indemnités de fonctions",
-                    {'columnwidth': '2.5cm'}),
+                    {'columnwidth': '2.5cm', 'background-color': '#fff840'}),
                 ('indemnite_expat', u"Indemnités d'expatriation",
-                    {'columnwidth': '2.5cm'}),
+                    {'columnwidth': '2.5cm', 'background-color': '#fff840'}),
+                ('indemnite_scolarite', u"Indemnités de frais de scolarité",
+                    {'columnwidth': '2.5cm', 'background-color': '#fff840'}),
                 ('indemnite_logement', u"Indemnités de logement",
-                    {'columnwidth': '2.5cm'}),
+                    {'columnwidth': '2.5cm', 'background-color': '#fff840'}),
                 ('indemnite_transp', u"Indemnités de transport",
-                    {'columnwidth': '2.5cm'}),
+                    {'columnwidth': '2.5cm', 'background-color': '#fff840'}),
                 ('indemnite_13e', u"Indemnités 13e mois",
-                    {'columnwidth': '2.5cm'}),
+                    {'columnwidth': '2.5cm', 'background-color': '#fff840'}),
                 ('prime_interim', u"Prime d'intérim",
-                    {'columnwidth': '2.5cm'}),
+                    {'columnwidth': '2.5cm', 'background-color': '#fff840'}),
                 ('indemnite_autre', u"Autre indemnités",
-                    {'columnwidth': '2.5cm'}),
+                    {'columnwidth': '2.5cm', 'background-color': '#fff840'}),
                 ('indemnite_sous_total', u"Sous-total d'indemnités",
-                    {'columnwidth': '2.5cm'}),
+                    {'columnwidth': '2.5cm', 'background-color': '#fff840'}),
                 HEADER_SEPARATOR,
                 ('prime_installation', u"Prime d'installation",
-                    {'columnwidth': '2.5cm'}),
+                    {'columnwidth': '2.5cm', 'background-color': '#d7fb0f'}),
                 ('prime_demenagement', u"Prime de déménagement",
-                    {'columnwidth': '2.5cm'}),
+                    {'columnwidth': '2.5cm', 'background-color': '#d7fb0f'}),
                 ('prime_avion', u"Prime d'avion",
-                    {'columnwidth': '2.5cm'}),
+                    {'columnwidth': '2.5cm', 'background-color': '#d7fb0f'}),
                 ('prime_autre', u"Autre prime",
-                    {'columnwidth': '2.5cm'}),
+                    {'columnwidth': '2.5cm', 'background-color': '#d7fb0f'}),
                 ('prime_sous_total', u"Total des primes",
-                    {'columnwidth': '2.5cm'}),
+                    {'columnwidth': '2.5cm', 'background-color': '#d7fb0f'}),
                 HEADER_SEPARATOR,
                 ('charges_patronales', u"Charges patronales",
-                    {'columnwidth': '2.5cm'}),
+                    {'columnwidth': '2.5cm', 'background-color': '#fb680f'}),
                 ('charges_autre', u"Autres charges patronales",
-                    {'columnwidth': '2.5cm'}),
+                    {'columnwidth': '2.5cm', 'background-color': '#fb680f'}),
                 ('charges_sous_total', u"Sous-total des charges patronales",
-                    {'columnwidth': '2.5cm'}),
+                    {'columnwidth': '2.5cm', 'background-color': '#fb680f'}),
                 HEADER_SEPARATOR,
-                ('sous_total_traitement_annee', u"Total traitement annuel"),
-                ('sous_total_indemnite_annee', u"Total indemnités annuel"),
-                ('sous_total_accessoire_annee', u"Total accessoires annuel"),
-                ('sous_total_charges_annee', u"Total charges annuel"),
+                ('sous_total_traitement_annee', u"Total traitement annuel",
+                    {'background-color': '#f88680'}),
+                ('sous_total_indemnite_annee', u"Total indemnités annuel",
+                    {'background-color': '#f88680'}),
+                ('sous_total_accessoire_annee', u"Total accessoires annuel",
+                    {'background-color': '#f88680'}),
+                ('sous_total_charges_annee', u"Total charges annuel",
+                    {'background-color': '#f88680'}),
                 HEADER_SEPARATOR,
                 ('masse_salariale', u"Masse salariale annuelle",
-                    {'columnwidth': '2.5cm'}),
+                    {'columnwidth': '2.5cm', 'background-color': '#e6c6ed'}),
                 ('masse_salariale_annee', u"Masse salariale %s" % self.annee,
-                    {'columnwidth': '2.5cm'}),
+                    {'columnwidth': '2.5cm', 'background-color': '#e6c6ed'}),
                 ('masse_salariale_annee_euro', u"Masse salariale %s EUR" % \
-                        self.annee, {'columnwidth': '2.5cm'}),
+                        self.annee, {
+                            'columnwidth': '2.5cm',
+                            'background-color': '#e6c6ed'
+                            }
+                ),
         )
 
         grand_total = 0.0
@@ -271,6 +282,7 @@ class MasseSalariale():
             indemnites = {
                     'fonc_resp': 0.0,
                     'expat': 0.0,
+                    'scolarite': 0.0,
                     'logement': 0.0,
                     'transp': 0.0,
                     '13e': 0.0,
@@ -311,6 +323,9 @@ class MasseSalariale():
                 if r.type_id in TYPE_REMUN_EXPAT:
                     indemnites['expat'] += montant
 
+                if r.type_id in TYPE_REMUN_SCOLARITE:
+                    indemnites['scolarite'] += montant
+
                 if r.type_id in TYPE_REMUN_LOGEMENT:
                     indemnites['logement'] += montant
 
@@ -435,6 +450,8 @@ class MasseSalariale():
                             regime * rapport_nombre_jours,
                     'indemnite_expat': indemnites['expat'] * regime * \
                             rapport_nombre_jours,
+                    'indemnite_scolarite': indemnites['scolarite'] * \
+                            regime * rapport_nombre_jours,
                     'indemnite_logement': indemnites['logement'] * \
                             regime * rapport_nombre_jours,
                     'indemnite_transp': indemnites['transp'] * regime * \
index 4ff9be5..a250df2 100644 (file)
                 <td style="background:gray;">&nbsp;</td>
             {% else %}
                 {% if row|hash:column|is_float %}
-                <td>{{ row|hash:column|floatformat:2|localize }}
+                <td>
+                    {% comment %}
+                    {% if options.backgroundcolor %}
+                    style="background-color:{{ options.backgroundcolor }}"
+                    {% endif %}
+                    {% endcomment %}
+                    {{ row|hash:column|floatformat:2|localize }}
                     {% if forloop.last %}
                         EUR
                     {% else %}
index dad0517..5cf8a98 100644 (file)
@@ -1,4 +1,7 @@
-{% for header in headers %}<th class="{{ header.class_attr }}">
+{% for header in headers %}<th class="{{ header.class_attr }}"
+    style="{% for k,v in header.style_attr.items %}
+    {{ k }}:{{ v }};
+    {% endfor %}">
 {% if header.sortable %}<a href="{{ header.url|escape }}">{% endif %}
 {{ header.text }}
   {% if header.sortable %}</a>{% endif %}
index 72f3ccc..2f251e9 100644 (file)
@@ -138,7 +138,7 @@ def filter_implantation_remun(context):
 
 @register.inclusion_tag('rh/rapports/table_header.html', takes_context=True)
 def table_header(context, headers):
-        return {'headers': headers}
+    return {'headers': headers}
 
 def get_query_string(request, new_params=None, remove=None):
     if new_params is None: new_params = {}
@@ -215,7 +215,8 @@ class SortHeaders:
                     "class_attr": "sorted %s" % class_order if self.field_sorted(h[0]) else "",
                     "sortable": self.field_sorted(h[0]),
                     "url": url,
-                    "text": h[1]
+                    "text": h[1],
+                    "style_attr": h[2] if len(h) > 2 else "",
             }
 
     def field_sorted(self, field):
index cdf4874..907ef0d 100644 (file)
@@ -260,11 +260,15 @@ def rapports_masse_salariale(request):
                 request.GET.get('ne_pas_grouper', False))
         if masse.rapport:
             c['rapport'] = masse.rapport
-            headers = masse.headers
             c['header_keys'] = [h[0] for h in masse.headers]
-            h = SortHeaders(request, headers, order_field_type="ot",
+            #on enleve le background pour le header
+            for h in (h for h in masse.headers if 'background-color' in h[2]):
+                h[2]['background'] = 'none'
+            h = SortHeaders(request, masse.headers, order_field_type="ot",
                     not_sortable=c['header_keys'], order_field="o")
             c['headers'] = list(h.headers())
+            for key, nom, opts in masse.headers:
+                c['headers']
             c['total'] = masse.grand_totaux[0]
             c['total_euro'] = masse.grand_totaux[1]
             c['colspan'] = len(c['header_keys']) - 2