Standards

Certaines tâches fournissent des templates standards qui sont directement disponibles à travers le paramétrage. Ceux-ci peuvent donc être également personnalisés selon les modules (voir règles de fusion).

Afin d’utiliser un template du paramétrage, celui-ci doit être déclaré dans la classe TemplatesManager. Tous les templates déclarés à ce niveau peuvent être personnalisés par site en utilisant le même identifiant dans la tâche UNI94.

Templates standards

Ci-dessous, la liste des templates directement inclus dans SAINet:

Tâche Identifiant (UNI94) Configuration Description
SAL47 SAL47_CERTIFICAT Certificat de salaire standard (certifié Swissdec).
STO3E STO3E_INVOICE détails Modèle de facture standard (également utilisé par DEB54).
DEB65 DEB65_RAPPEL détails Modèle de rappel standard.
PPE74 PPE74_DECOMPTE détails Modèle de décompte PPE standard.
FOU3B FOU3B_SWITCH Modèle de bons de travaux par défaut.

Fragmentation des templates

Certains templates (notamment les factures) sont séparés en différentes parties qui sont externalisées dans différents fichiers, grâce à la macro #parse. Il est possible de personnaliser uniquement certaines parties d’un template et de garder l’utilisation du standard pour d’autres. Cela est dépendant de la constitution de chaque template.

Les sous-chapitres ci-dessous décrivent différents templates et les différents identifiants ainsi que les tâches dans lesquelles ils peuvent être utilisés.

Note:

il est recommandé de toujours utiliser la tâche UNI18 lorsque c’est possible pour personnaliser le contenu désiré.

Modèle de facture (STO3E_INVOICE)

Les différentes parties suivantes peuvent être redéfinies:

ID Tâche Description Paramétrage
STO3E_INVOICE UNI94 Point d’entrée du modèle de facture. Ce template ne fait principalement qu’assembler toutes les parties. /server/templates/sto3e/invoice.html
INVOICE.CSS UNI94,UNI18 CSS globale du modèle de facture. /server/templates/sto3e/invoice.css
INVOICE_HEADER_COMPANY.HTML UNI94,UNI18 En-tête de la société. Cette partie est reprise sur toutes les pages de la facture (utilisé également dans les rappels). /server/templates/sto3e/invoice_header_company.html
INVOICE_HEADER.HTML UNI94,UNI18 En-tête principale (première page de la facture). /server/templates/sto3e/invoice_header.html
INVOICE_HEADER_LIGHT.HTML UNI94,UNI18 En-tête légère (dès la 2ème page de la facture). /server/templates/sto3e/invoice_header_light.html
INVOICE_CONTENT.HTML UNI94,UNI18 Contenu (lignes de facture, gestion des sauts de pages, etc). /server/templates/sto3e/invoice_content.html
INVOICE_FOOTER.HTML UNI94,UNI18 Pied de page (uniquement sur la dernière page). /server/templates/sto3e/invoice_footer.html

Par exemple, il est possible de simplement déclarer INVOICE_HEADER_COMPANY.HTML dans UNI18 avec le contenu HTML souhaité pour que celui-ci soit repris dans la facture standard en lieu et place du contenu de la configuration. Ce mécanisme fonctionne à l’identique pour chacune des parties ci-dessus.

Par défaut, il est possible de spécifier différents modèles de factures (voir dans DEB02). Chacun de ceux-ci utilisent les identifiants suivants (n est un chiffre de 1 à 5):

ID Tâche Description Paramétrage
INVOICEn.CSS UNI94,UNI18 CSS du modèle n. Par défaut, redirige sur INVOICE.CSS. /server/templates/sto3e/invoicencss
INVOICEn_CONTENT.HTML UNI94,UNI18 Contenu du modèle n. Par défaut, redirige sur INVOICE_CONTENT.HTML. /server/templates/sto3e/invoicen_content.html

Afin d’éviter de devoir reprendre entièrement une partie du template de facture afin de modifier le contenu, certaines variables de calcul et de rendu peuvent êtres modifiées par plusieurs macros à déclarer dans UNI93.

Note:

Plusieurs macros UNI93 peuvent être déclarées dans le même corpus de script. Cela pour centraliser les modifications de génération de facture afin d’éviter qu’il y en ait trop.

Initialisation contexte Velocity

Le contexte Velocity est initialisé avec les variables nécessaires à l’impression d’une facture.

Variable velocity Provenance
$handler Handler générique pour la facture (voir ici).
$account Entité de la table DEBCCP.
$debitor Entité de la table DEBDEB.
$address Entité de la table DEBDE1.
$invoice Entité de la table STOFAH.
$condition Entité de la table DEBCON.
$DEBSOC Entité de la table DEBSOC.
$STOSOC Entité de la table STOSOC.
$CGESOC Entité de la table CGESOC.

Initialisation des variables (sto3e_vars)

La macro sto3e_vars() permet de modifier les variables globales utilisées dans tous les calculs et le rendu des factures.

Pour définir la taille des lignes et leurs impact en terme de saut de page, certaines variables ont été mises en place. Elles permettent de définir la taille verticale disponible et la place qu’occupent les lignes. A noter que la notion de “ligne” a été rammenée à un calcul unitaire qui est ensuite comparé avec la place que prennent les lignes de facture qui elle est basé sur une approximation faite par le template suivant le contenu, le type, et la place en largeur disponible.

Variable Type Valeur par défaut Description
invoiceAvailableLinesOnFirstPage int 44 Nombre de lignes disponibles sur la page avec l’entête.
invoiceAvailableLinesOnEmptyPage int 58 Nombre de lignes disponibles sur une page blanche entière.
invoiceAvailableLinesOnLastPageWithBVR int 33 Nombre de lignes disponibles sur une page avec BVR.
mainLabelFontSize int 12 Taille en points (pt) des libel1 des lignes.
subLabelFontSize int 10 Taille en points (pt) des libel2 des lignes.
longLabelFontSize int 10 Taille en points (pt) des libel4 des lignes.
bvrWidth int 204 Largeur du BVR/QR (en mm).
bvrHeight int 100 Hauteur du QR (en mm). N’est pas pris en compte par les BVR.
bvrOnSinglePage boolean false Permet de forcer la partie BVR/QR-code sur une page unique supplémentaire.
bvrTopOffsetCorrection int 0 Permet d’ajuster la position verticale du BVR/QR, en mm.
Attention:

Si les tailles des composantes sont changées il faudra nécessairement faire des essais pour calculer le nombre de lignes disponibles en hauteur.

Certains modèles de facture nécessitent de cacher de l’information visuellement. Par exemple, lors de ruptures particulières ou simplement pour noter de l’information en interne. Pour ce faire, les variables ci-dessous permettent de décider si les sous-libellés des lignes de factures sont affichés ou non sur le document final. Ces variables impactent le calcul interne sur la place occupée par les lignes de facture

Variable Type Valeur par défaut Description
displayCounter boolean true Permet de forcer l’affichage/masquage du compteur en début de chaque ligne.
displaySubLabel boolean true Affiche le libellé secondaire des lignes (STOSMO.LIBEL2)
displayLongLabel boolean true Affiche le libellé long des lignes (STOSMO.LIBEL4)

Exemple de macro dans UNI93:

#macro(sto3e_vars)
  #set($displayLongLabel = false)
#end

Initialisation du rendu (sto3e_init)

La macro sto3e_init() permet de modifier les variables calculées dynamiquement pour influer uniquement sur le rendu des factures.

Variable Type Valeur par défaut Description
mainColor string #F6872B Couleur principale du template, utilisée notamment dans le titre.
mainTitle string $handler.getTitleType() Titre (Facture, Note de crédit). Peut-être défini par STO08.
footerText string $VELOHLP.toValueData("FR={Avec nos meilleures salutations.} DE={Mit unseren freundlichen Grüßen.}") Texte de salutation en base de page.
saiLogo string SAI_Logo.jpg ID du logo qui sera inclus depuis UNI18.
invoiceHeaderShowEmissionDate boolean true Affichage de la date d’émission dans l’en-tête de la facture.
invoiceHeaderShowDueDate boolean true Affichage de la date d’échéance dans l’en-tête de la facture.
invoiceHeaderShowConditions boolean true Affichage des conditions de paiement dans l’en-tête de la facture.
invoiceHeaderShowLabel boolean true Affichage du libellé dans l’en-tête de la facture.
invoiceAddressTop string 5cm Positionnement vertical (marge du haut) de l’adresse du débiteur.
invoiceAddressRight string 1.7cm Positionnement horizontal (marge de droite) de l’adresse du débiteur.
invoiceLabelPage string $VELOHLP.toValueData("FR={page} DE={Seite}") Libellé pour “Page”.
invoiceLabelEmis string $VELOHLP.toValueData("FR={Émise le} DE={Ausgabedatum}") Libellé pour “Émise le”.
invoiceLabelEcheance string $VELOHLP.toValueData("FR={Échéance le} DE={Fälligkeit}") Libellé pour “Échance”.
invoiceLabelReference string $VELOHLP.toValueData("FR={Référence} DE={Referenz}") Libellé pour “Référence”.
invoiceLabelTVAAdherent string $VELOHLP.toValueData("FR={No TVA} DE={MWSt-Nr.}") Libellé pour “No TVA”.
invoiceTableLabelTitle string $VELOHLP.toValueData("FR={Intitulé} DE={Bezeichnung}") En-tête de colonne pour le libellé de la ligne.
invoiceTableLabelQuantity string $VELOHLP.toValueData("FR={Qté} DE={Mge}") En-tête de colonne pour la quantité de la ligne.
invoiceTableLabelPrice string $VELOHLP.toValueData("FR={Prix} DE={Preis}") En-tête de colonne pour le prix unitaire de la ligne.
invoiceTableLabelRabais string % En-tête de colonne pour le rabais de la ligne.
invoiceTableLabelTVA string $VELOHLP.toValueData("FR={TVA} DE={MWSt}") En-tête de colonne pour le taux TVA.
invoiceTableLabelAmount string $VELOHLP.toValueData("FR={Montant} DE={Total}") En-tête de colonne pour le total de la ligne.
invoiceTableLabelRecap string $VELOHLP.toValueData("FR={Récapitulatif} DE={Zusammenfassung}") Libellé pour le récapitulatif.
invoiceTitleFacture string $VELOHLP.toValueData("FR={Facture} DE={Faktura}") Titre par défaut pour “Facture”. Uniquement si $mainTitle n’est pas défini.
invoiceTitleNC string $VELOHLP.toValueData("FR={Note de crédit} DE={Gutschrift}") Titre par défaut pour "Note de crédit. Uniquement si $mainTitle n’est pas défini.
invoiceTotalHT string $VELOHLP.toValueData("FR={Total HT} DE={Insgesamt ohne Steuer}") Libellé pour le total hors taxe.
invoiceTotalTTC string $VELOHLP.toValueData("FR={Total TTC} DE={Gesamtpreis}") Libellé pour le total TTC.
invoiceTotalTVAIncludedLabel string $VELOHLP.toValueData("FR={TVA incluse} DE={MWSt inklusive}") Libellé pour “TVA incluse”.
invoiceTotalTVAExcludedLabel string $VELOHLP.toValueData("FR={TVA} DE={MWSt}") Libellé pour le total TVA.
invoiceTotalTVAOn string $VELOHLP.toValueData("FR={sur} DE={auf}") Libellé pour “sur” (dans le contexte de la TVA).
invoiceDisplayPriceForcedValue string Permet de forcer l’affichage/masquage de la colonne “Prix unitaire”. Valeurs possibles: vide, always, never.
invoiceDisplayQuantityForcedValue string Permet de forcer l’affichage/masquage de la colonne “Quantité”. Valeurs possibles: vide, always, never.
invoiceDisplayRabaisForcedValue string Permet de forcer l’affichage/masquage de la colonne “Rabais”. Valeurs possibles: vide, always, never.
invoiceDisplayTVAForcedValue string Permet de forcer l’affichage/masquage de la colonne “TVA”. Valeurs possibles: vide, always, never.
invoiceCounterColumnWidth int 15 Largeur de colonne pour le no de ligne.
invoiceLabelColumnWidth int 421 Largeur de colonne pour l’intitulé de la ligne.
invoiceQuantityColumnWidth int 50 Largeur de colonne pour la quantité.
invoicePriceColumnWidth int 65 Largeur de colonne pour le prix unitaire.
invoiceRabaisColumnWidth int 30 Largeur de colonne pour le rabais.
invoiceTVAColumnWidth int 35 Largeur de colonne pour le taux TVA.
invoiceAmountColumnWidth int 65 Largeur de colonne pour le total de la ligne.

Exemple de macro dans UNI93:

#macro(sto3e_init)
  #set($mainColor = "#000000")
  #set($invoiceHeaderShowEmissionDate = false)
#end

Gestion des ruptures

Voici un exemple de données de lignes de factures suivantes

Libel1 Libel2 Projet Quantité Prix unitaire Montant
Article 1 Cat1 MonProjet 1 10 10
Article 2 Cat1 MonProjet 2 20 40
Article 3 Cat2 MonProjet 3 30 90
Article 4 Cat2 MonProjet 3 30 90
Article 5 Cat2 MonProjet 3 30 90

En pratique, la catégorie n’apparait pas sur la facture. Le template donnera donc un résultat approchant ceci :

Intitulé Quantité Prix unitaire Montant
Article 1 - Cat1 1 10 10
Article 2 - Cat1 2 20 40
Article 3 - Cat2 3 30 90
Article 4 - Cat2 3 30 90
Article 5 - Cat2 3 30 90

Dans certains déploiements, il est souhaitable regrouper les lignes suivant un critère. Celui-ci peut se retrouver dans un libellé comme dans l’exemple ci dessus, ou alors provenir d’un autre colonne interne de la ligne (par exemple, le projet).

Une macro sto3e_rupture est à disposition permettant pour chaque ligne d’indiquer si oui ou non il faut générer une rupture. Voici un exemple de code de cette macro :

#macro(sto3e_rupture $oldL $newL)
  #if($oldL.toString() == "" || $oldL.LIBEL2.toString() != $newL.LIBEL2.toString())
    #set($rupture = true)
  #end
  #if($rupture)
    #set($ruptureTitle = $!newL.LIBEL2.toString())
  #end
#end

La macro reçoit deux paramètres $oldL et $newL qui représentent la ligne précédente de la boucle et la ligne courante actuellement traitée. Dans l’exemple de code ci dessus, deux variables sont définies :

Variable Type Utilité
$rupture boolean Indique si la ligne est la première d’une nouvelle rupture
$ruptureTitle boolean Indique Dans le cas d’un rupture son titre

Dans le code, la variable $rupture est vraie si c’est la première ligne ou si la ligne précédente a un LIBEL2 différent de la ligne actuelle. Dans le cas d’une rupture, le titre est tout simplement LIBEL2.

Ainsi, avec les données originales de l’exemple et la macro définie, la facture affichera le rendu suivant :

Cat 1

Intitulé Quantité Prix unitaire Montant
Article 1 - Cat1 1 10 10
Article 2 - Cat1 2 20 40

Cat2

Intitulé Quantité Prix unitaire Montant
Article 3 - Cat2 3 30 90
Article 4 - Cat2 3 30 90
Article 5 - Cat2 3 30 90
Note:

Généralement, lorsque le libellé 2 est utilisé comme rupture, la macro sto3e_vars est utilisée afin de le cacher avec $displaySubLabel = false pour simplifier les intitulés.

Cat 1

Intitulé Quantité Prix unitaire Montant
Article 1 1 10 10
Article 2 2 20 40

Cat2

Intitulé Quantité Prix unitaire Montant
Article 3 3 30 90
Article 4 3 30 90
Article 5 3 30 90
Attention:

Il est tout à fait possible de cumuler plusieurs critères, par exemple le projet et le libellé 2, pour générer des ruptures plus complexes. Il est par contre nécessaire que les lignes soient triées en amont par l’utilisateur ou par le générateur de lignes.

Regroupement de lignes

Dans certains déploiements, il est nécessaire de simplifier les factures transmises en proposant des montants globaux ou suivant un format différent de la liste de lignes de la facture initiale. Il est possible d’influer sur le rendu des lignes en modifiant la variable $invoiceLines qui contient initialement la liste de toutes les lignes (STOFAL) de la facture.

La liste doit être modifiée lors de l’initialisation de la facture dans la macro sto3e_vars.

Annexes à la facture

Il est possible de générer des annexes à la facture directement dans le template de celle ci sous la forme d’un contenu html. La ressource a implémenter dans UNI94 ou UNI18 est invoice_annexe.html

Modèle de rappel (DEB65_RAPPEL)

Les différentes parties suivantes peuvent être redéfinies:

ID Tâche Description Paramétrage
DEB65_RAPPEL UNI94 Point d’entrée du modèle de rappel. Ce template ne fait principalement qu’assembler toutes les parties. /server/templates/deb65/rappel.html
RAPPEL.CSS UNI94,UNI18 CSS globale du modèle de rappel. /server/templates/deb65/rappel.css
RAPPEL_HEADER.HTML UNI94,UNI18 En-tête principale (première page du rappel). /server/templates/deb65/rappel_header.html
RAPPEL_HEADER_LIGHT.HTML UNI94,UNI18 En-tête légère (dès la 2ème page du rappel). /server/templates/deb65/rappel_header_light.html
RAPPEL_CONTENT.HTML UNI94,UNI18 Contenu (lignes de rappel, gestion des sauts de pages, etc). /server/templates/deb65/rappel_content.html
RAPPEL_FOOTER.HTML UNI94,UNI18 Pied de page (uniquement sur la dernière page). /server/templates/deb65/rappel_footer.html
Note:

Le template de rappel utilise INVOICE_HEADER_COMPANY.HTML pour l’en-tête de la société.

Initialisation des variables (deb65_vars)

Comme pour le modèle de facture, il est possible de modifier certaines variables en créant une macro deb65_vars dans UNI93:

Variable Type Valeur par défaut Description
mainColor string #F6872B Couleur principale du template, utilisée dans le titre.
mainTitle string “Rappel $corapp” Titre du rappel. La variable $corapp représente le no de rappel.
mainSubtitle string “# Relevé $norele” Sous-titre du rappel. La variable $norele représente le relevé duquel fait partie le rappel (il peut y avoir plusieurs rappels sur le même relevé).
saiLogo string SAI_Logo.jpg ID du logo qui sera inclus depuis UNI18.
rappelHeaderShowEmissionDate boolean true Affichage de la date d’émission dans l’en-tête du rappel.
rappelHeaderShowDueDate boolean true Affichage de la date d’échéance dans l’en-tête du rappel.
rappelShowDebitorId boolean false Affichage du numéro du débiteur.
rappelShowChildrenName boolean false Affichage du prénom des enfants concernés par le rappel. (Uniquement client crèche)
rappelLabelPage string page Libellé pour “page”.
rappelLabelLibelle string Libellé En-tête de colonne pour le libellé des factures.
rappelLabelDate string Date En-tête de colonne pour la date des factures.
rappelLabelMontant string Montant En-tête de colonne pour le montant des factures.
rappelLabelSolde string Solde En-tête de colonne pour le solde des factures.
rappelLabelTotal string Total Libellé du montant total des factures.
rappelLabelAPayer string A payer Libellé du montant à payer.
rappelLabelRecap string Récapitulatif Libellé pour le récapitulatif.
rappelText1 string Occupés à la vérification… Texte de rappel pour le rappel 1.
rappelText2 string Nous constatons qu’en date du $HEADER.DATE_JOURNAL,… Texte de rappel pour le rappel 2.
rappelText3 string Nous constatons qu’en date du $HEADER.DATE_JOURNAL,… Texte de rappel pour le rappel 3 et suivants.
rappelNul string Si ces factures ont été réglées dans l’intervalle,… Texte d’information pour le paiement croisé.
rappelCounterColumnWidth int 15 Taille de la colonne pour le no de ligne.
rappelLabelColumnWidth int 345 Taille de la colonne pour le libellé sans frais de rappel.
rappelLabelColumnWidth int 300 Taille de la colonne pour le libellé avec frais de rappel.
rappelDateColumnWidth int 100 Taille de la colonne pour la date sans frais de rappel.
rappelDateColumnWidth int 70 Taille de la colonne pour la date avec frais de rappel.
rappelFraisColumnWidth int 75 Taille de la colonne pour les frais de rappel.
rappelAmountColumnWidth int 65 Taille de la colonne pour le montant.
rappelSoldeColumnWidth int 65 Taille de la colonne pour le solde.
rappelAvailableLinesOnFirstPage int 20 Nombre de lignes disponibles sur la 1ère page.
rappelAvailableLinesOnEmptyPage int 40 Nombre de lignes disponibles sur une page vide.
rappelAvailableLinesOnLastPageWithBVR int 27 Nombre de lignes disponibles sur une page avec BVR.
rappelNeededLinesForSums int 5 Nombre de lignes nécessaires pour la somme finale.

Exemple de macro dans UNI93:

#macro(deb65_vars)
  #set($mainColor = "#000000")
  #set($rappelLabelPage = "No")
  #set($rappelNul = "")
#end

Initialisation du rendu (deb65_init)

La macro deb65_init() permet de modifier les variables calculées dynamiquement pour influer uniquement sur le rendu des rappels.

Variable Type Valeur par défaut Description
rappelLabel string Libellé final du rappel. Dépend du code de rappel ($rappelText1, rappelText2 ou rappelText3).

Exemple de macro dans UNI93:

#macro(deb65_init)
  #set($rappelLabel = "Libellé final du rappel")
#end

Modèle email de rappel

Les modèles d’emails des rappels se trouvent en UNI95 avec les identifiants : DEB65_EMAIL_RAPPEL1, DEB65_EMAIL_RAPPEL2 et DEB65_EMAIL_RAPPEL3. Chacun des templates représentent une étape d’un rappel.

Variable Type Description
dateRappel Date Date de génération du document de rappel.
codeRappel String Numéro du rappel.

Frais de rappels (DEB65)

Lors de la génération d’un rappel, si des frais de rappel s’appliquent, une colonne Frais sera présente dans le document généré.
Les largeurs de colonnes sont automatiquement adaptées via les variables $rappelLabelColumnWidth, $rappelDateColumnWidth et $rappelFraisColumnWidth pour donner un total de 590px. Les frais à 0 ne sont pas affichés.

Modèle de décompte (PPE74_DECOMPTE)

Ce modèle de décompte PPE permet de modifier les variables suivantes en créant une macro ppe74_init:

Variable Type Valeur par défaut Description
titleDecompte string Décompte de copropriété $handler.getCurrentExercise() Titre pour les décomptes aux copropriétaires.
titleAttestation string Attestation fiscale $handler.getCurrentExercise() Titre pour les attestations fiscales.
titleVotreImmeuble string Votre immeuble Libellé.
labelJoursPresence string Jours de présence Libellé.
labelVotreNoRef string Votre numéro de référence Libellé.
textDecomptePersoText string Voici votre décompte personnel… Texte de bas de page (décomptes aux copropriétaires).
textDecomptePersoSalu string Veuillez agréer… Texte de bas de page pour les salutations (décomptes aux copropriétaires).
textAttestationPersoHeader string Madame, Monsieur, Texte de bas de page pour les salutations initiales (attestations fiscales).
textAttestationPersoText string Veuillez trouver… Texte de bas de page (attestations fiscales).
textAttestationPersoSalu string Avec nos salutations respectueuses. Texte de bas de page pour les salutations (attestations fiscales).
textAttestationPS string PS. Cette pièce… Texte de bas de page pour le PS (attestations fiscales).
minDataHeight int 300 Hauteur minimal du contenu des lignes de décompte. Permet de gérer la position verticale des données en bas de page.

Exemple de macro dans UNI93:

#macro(ppe74_init)
  #set($titleDecompte = "Gestion des communs")
  #set($textAttestationPersoHeader = "Cher Copropriétaire,")
#end