masse salariale, stylage document ods
authorJean-Philippe Caissy <jpcaissy@piji.ca>
Mon, 26 Mar 2012 21:50:13 +0000 (16:50 -0500)
committerJean-Philippe Caissy <jpcaissy@piji.ca>
Mon, 26 Mar 2012 21:50:13 +0000 (16:50 -0500)
project/rh/masse_salariale.py
project/rh/ods.py

index 2e5cba8..2d5f35b 100644 (file)
@@ -112,51 +112,81 @@ class MasseSalariale():
                 )
 
         self.headers = (
-                ('bureau', u"Bureau"),
-                ('pays', u"Pays"),
-                ('implantation', u"Implantation"),
-                ('valeur_point', u"Valeur du point"),
-                ('numero_employe', u"Numéro d'employé"),
-                ('nom', u"Nom"),
-                ('prenom', u"Prénom"),
-                ('type_de_poste', u"Type de poste"),
-                ('intitule_de_poste', u"Intitulé du poste"),
-                ('niveau', u"Niveau"),
-                ('point', u"Point"),
-                ('regime_de_travail', u"Régime de travail"),
-                ('local_expatrie', u"Local / Expatrié"),
-                ('statut', u"Statut"),
-                ('date_fin_contrat', u"Date de fin de contrat"),
-                ('date_debut', u"Date de début"),
-                ('date_fin', u"Date de fin"),
-                ('nb_jours', u"Nombre de jours"),
-                ('devise', u"Devise"),
-                ('salaire_bstg_annuel', u"Salaire annuel BSTG"),
-                ('salaire_bstg_total', u"Salaire total BSTG"),
-                ('organisme_bstg', u"Organisme BSTG"),
-                ('salaire_theorique', u"Salaire théorique"),
-                ('salaire_base_brut', u"Salaire de base brut"),
-                ('salaire_complementaire', u"Salaire complémentaire"),
-                ('indemnite_fonctions', u"Indemnités de fonctions"),
-                ('indemnite_expat', u"Indemnités d'expatriation"),
-                ('indemnite_logement', u"Indemnités de logement"),
-                ('indemnite_transp', u"Indemnités de transport"),
-                ('indemnite_13e', u"Indemnités 13e mois"),
-                ('prime_interim', u"Prime d'intérim"),
-                ('indemnite_autre', u"Autre indemnités"),
-                ('indemnite_sous_total', u"Sous-total d'indemnités"),
-                ('prime_installation', u"Prime d'installation"),
-                ('prime_demenagement', u"Prime de déménagement"),
-                ('prime_avion', u"Prime d'avion"),
-                ('prime_autre', u"Autre prime"),
-                ('prime_sous_total', u"Total des primes"),
-                ('charges_patronales', u"Charges patronales"),
-                ('charges_autre', u"Autres charges patronales"),
-                ('charges_sous_total', u"Sous-total des charges patronales"),
-                ('masse_salariale', u"Masse salariale"),
-                ('masse_salariale_annee', u"Masse salariale %s" % self.annee),
+                ('bureau', u"Bureau", {'columnwidth': '2cm'}),
+                ('pays', u"Pays", {'columnwidth': '3.5cm'}),
+                ('implantation', u"Implantation", {'columnwidth': '3cm'}),
+                ('valeur_point', u"Valeur du point", 
+                    {'columnwidth': '2.3cm'}),
+                ('numero_employe', u"Numéro d'employé",
+                    {'columnwidth': '2.4cm'}),
+                ('nom', u"Nom", {'columnwidth': '5.4cm'}),
+                ('prenom', u"Prénom", {'columnwidth': '4.8cm'}),
+                ('type_de_poste', u"Type de poste", {'columnwidth': '2.7cm'}),
+                ('intitule_de_poste', u"Intitulé du poste",
+                    {'columnwidth': '7.25cm'}),
+                ('niveau', u"Niveau", {'columnwidth': '1.75cm'}),
+                ('point', u"Point", {'columnwidth': '1.75cm'}),
+                ('regime_de_travail', u"Régime de travail",
+                    {'columnwidth': '2cm'}),
+                ('local_expatrie', u"Local / Expatrié",
+                    {'columnwidth': '2.25cm'}),
+                ('statut', u"Statut", {'columnwidth': '1.25cm'}),
+                ('date_fin_contrat', u"Date de fin de contrat",
+                    {'columnwidth': '2cm'}),
+                ('date_debut', u"Date de début", {'columnwidth': '1.92cm'}),
+                ('date_fin', u"Date de fin", {'columnwidth': '1.92cm'}),
+                ('nb_jours', u"Nombre de jours", {'columnwidth': '2.82cm'}),
+                ('devise', u"Devise", {'columnwidth': '1.46cm'}),
+                ('salaire_bstg_annuel', u"Salaire annuel BSTG",
+                    {'columnwidth': '2.5cm'}),
+                ('salaire_bstg_total', u"Salaire total BSTG",
+                    {'columnwidth': '2.5cm'}),
+                ('organisme_bstg', u"Organisme BSTG",
+                    {'columnwidth': '2.9cm'}),
+                ('salaire_theorique', u"Salaire théorique",
+                    {'columnwidth': '2.5cm'}),
+                ('salaire_base_brut', u"Salaire de base brut",
+                    {'columnwidth': '2.5cm'}),
+                ('salaire_complementaire', u"Salaire complémentaire",
+                    {'columnwidth': '2.5cm'}),
+                ('indemnite_fonctions', u"Indemnités de fonctions",
+                    {'columnwidth': '2.5cm'}),
+                ('indemnite_expat', u"Indemnités d'expatriation",
+                    {'columnwidth': '2.5cm'}),
+                ('indemnite_logement', u"Indemnités de logement",
+                    {'columnwidth': '2.5cm'}),
+                ('indemnite_transp', u"Indemnités de transport",
+                    {'columnwidth': '2.5cm'}),
+                ('indemnite_13e', u"Indemnités 13e mois",
+                    {'columnwidth': '2.5cm'}),
+                ('prime_interim', u"Prime d'intérim",
+                    {'columnwidth': '2.5cm'}),
+                ('indemnite_autre', u"Autre indemnités",
+                    {'columnwidth': '2.5cm'}),
+                ('indemnite_sous_total', u"Sous-total d'indemnités",
+                    {'columnwidth': '2.5cm'}),
+                ('prime_installation', u"Prime d'installation",
+                    {'columnwidth': '2.5cm'}),
+                ('prime_demenagement', u"Prime de déménagement",
+                    {'columnwidth': '2.5cm'}),
+                ('prime_avion', u"Prime d'avion",
+                    {'columnwidth': '2.5cm'}),
+                ('prime_autre', u"Autre prime",
+                    {'columnwidth': '2.5cm'}),
+                ('prime_sous_total', u"Total des primes",
+                    {'columnwidth': '2.5cm'}),
+                ('charges_patronales', u"Charges patronales",
+                    {'columnwidth': '2.5cm'}),
+                ('charges_autre', u"Autres charges patronales",
+                    {'columnwidth': '2.5cm'}),
+                ('charges_sous_total', u"Sous-total des charges patronales",
+                    {'columnwidth': '2.5cm'}),
+                ('masse_salariale', u"Masse salariale",
+                    {'columnwidth': '2.5cm'}),
+                ('masse_salariale_annee', u"Masse salariale %s" % self.annee,
+                    {'columnwidth': '2.5cm'}),
                 ('masse_salariale_annee_euro', u"Masse salariale euro %s" % \
-                        self.annee),
+                        self.annee, {'columnwidth': '2.5cm'}),
         )
 
         grand_total = 0.0
@@ -492,5 +522,13 @@ class MasseSalariale():
             )
 
     def ods(self):
-        self.ods = ods.OpenDocumentSpreadsheet()
-        self.ods
+        self.doc = ods.OpenDocumentSpreadsheet()
+        table = self.doc.add_table(name=u'Masse salariale %s' % self.annee)
+
+        for h in self.headers:
+            if len(h) > 2:
+                table.add_column(**h[2])
+
+        table.add_row([h[1] for h in self.headers], rowheight='2cm', verticalalign='middle')
+
+
index 442663e..eb84a37 100644 (file)
@@ -43,6 +43,26 @@ class Table(Wrapper):
     _wrapper_constructor = staticmethod(odf.table.Table)
 
     def add_row(self, values=[], **kwargs):
+         # attributs appartenant à table-column-poperties
+        props = {}
+        for attr in ['rowheight']:
+            if attr in kwargs:
+                props[attr] = kwargs.pop(attr)
+
+        style = self._doc.add_automatic_style()
+        if 'rowheight' in kwargs:
+            style.addElement(odf.style.TableRowProperties(
+                rowheight=kwargs['rowheight']))
+            kwargs['stylename'] = style.getAttribute('name')
+            del kwargs['rowheight']
+
+        if 'verticalalign' in kwargs:
+            style.addElement(odf.style.TableCellProperties(
+                verticalalign=kwargs['verticalalign']))
+            kwargs['stylename'] = style.getAttribute('name')
+            del kwargs['verticalalign']
+
+
         row = TableRow(**kwargs)
         for value in values:
             row.add_cell(value)