Comment créer des factures/lettres avec le code QR suisse

Le QR-Code suisse est la norme suisse de facturation qui sera obligatoire à partir du 1er octobre 2022.
Banana Comptabilité Plus offre plusieurs méthodes pour créer automatiquement vos factures avec le QR-Code.

Créez vos factures de la meilleure façon qui soit!

Facturation intégrée

Gestion des factures au sein du fichier de comptabilité.
Idéal pour ceux qui veulent tout gérer dans un seul fichier. Principalement utilisé par ceux qui ont une comptabilité de chiffre d'affaires.

Fatturazione integrata nella contabilità in partita doppia
    Points forts
  • Les factures sont créées en tant qu'enregistrements
  • Gestion des clients/fournisseurs avec importation des paiements (format ISO 20022)
  • Rapport sur les factures des clients et impression des rappels
  • Factures pour la Suisse également en EUR
  • Factures avec images des produits (plan Advanced)
Note
Commencez par l'un des modèles prédéfinis ou adaptez votre fichier existant.
Caractéristiques en détail

Offres et factures

Gestion des offres et des factures dans un dossier indépendant de la comptabilité.
Idéal pour ceux qui partent de zéro and ceux qui veulent garder les choses séparées. Généralement utilisé par ceux qui ont une comptabilité sur les reçus ou qui ont besoin de factures très complexes.

Offerte e Fatture

    Points forts
  • Création d'offres, y compris différentes variantes
  • Conversion des offres en factures
  • Duplication de factures, etc.
  • Factures en Suisse également en EUR
  • Plus grande flexibilité sur le nombre d'articles
  • Offres et factures également avec des images de produits (plan Advanced)
Notes
  •  Pas d'intégration avec la comptabilité
  •  Les paiements ne peuvent pas être importés et les rappels ne peuvent pas être créés
  •  Certaines personnalisations ne sont possibles qu'avec le plan Advanced
  •  Il utilise l'Extension CH-10
  •  Fonctions actuellement non disponibles

 

 

Commencez par notre modèle prédéfini
Caractéristiques en détail

Bulletin QR vide

Pas de gestion des factures. Seulement un bulletin QR vide, sans adresse et sans montant. Idéal pour les petits artisans, les freelances ou les associations.

Bollettino QR vuoto
Points forts
  • Bulletin QR vide à joindre aux lettres ou aux factures créées avec d'autres programmes.
  • Pratique et rapide avec notre modèle prédéfini
Notes
Commencez par notre modèle prédéfini

Lettre avec bulletin QR

Lettre adressée à un seul destinataire avec un bulletin QR en bas.
Idéal pour les petits artisans, les freelances ou les associations.

Lettera/fattura singola con bollettino QR
Points forts
  • Même application que le QR vide avec la possibilité de saisir l'adresse d'un destinataire individuel, un texte/une lettre et le montant.
  • Pratique et rapide avec notre modèle prédéfini
Notes

 

Commencez par notre modèle prédéfini

Factures par lots avec des données extraites d'excel

Création automatique de factures QR pour plusieurs clients à partir de données Excel
Idéal pour ceux qui ont l'habitude ou qui disposent déjà de données clients dans Excel, les associations ou organisations qui facturent des cours, des cotisations, etc.

Bollettino QR vuoto
Points forts
  • Créez des factures avec une liste de produits ou de services + des textes supplémentaires pour plusieurs destinataires.
  • Pratique et rapide avec notre modèle prédéfini
Notes
Commencez par notre modèle prédéfini

 

Assistance à la création de factures QR

Grâce à l'importante documentation en ligne et à la facilité d'utilisation du programme, la plupart de nos utilisateurs n'ont pas besoin d'assistance.

En cas de besoins particuliers, nous recommandons le plan Advanced de Banana Comptabilité Plus, à la fois parce qu'il comprend également un support technique par téléphone et par e-mail, mais surtout parce qu'il offre plusieurs fonctionnalités supplémentaires, souvent nécessaires pour les personnalisations souhaitées.

Factures QR passage à des adresses structurées

À partir du 21 novembre 2025, les informations d'adresse pour les factures QR devront être fournies sous forme structurée. En l'absence d'une adresse structurée, le paiement ne pourra pas être effectué.

En prévision de ces changements :

  • Une nouvelle version de Banana Comptabilité+ (version 10.2.2) a été publiée, avec des mises à jour spécifiques pour la gestion des adresses structurées.
  • Les extensions d'impression des factures avec bulletin QR ont été mises à jour et utilisent désormais uniquement des adresses structurées.
  • Les modifications requises de la part de l'utilisateur sont minimes : il suffit de mettre à jour vers Banana Comptabilité+ .

Modifications et mises à jour dans Banana Comptabilité Plus

La version Banana Comptabilité+ (version 10.2.2) comprend les changements suivants :

L'utilisation du champ Numéro de Rue est facultative. Il est toujours possible d'insérer la rue et le numéro dans la même ligne de l'adresse, en laissant le nouveau champ numéro de rue vide.

Ceux qui utilisent la colonne Extra (nom XML : AddressExtra) pour insérer le numéro devront déplacer celui-ci dans la nouvelle colonne. La colonne Extra ne pourra plus être utilisée pour insérer le numéro de rue.

Il est recommandé de vérifier attentivement les premières impressions pour s'assurer de l'affichage correct de l'adresse, aussi bien dans l'en-tête que dans le code QR.

Modifications et mises à jour dans les extensions

Pour prendre en charge les adresses structurées, les extensions suivantes ont été mises à jour :

Les modifications apportées concernent uniquement l'impression et la composition de l'adresse structurée. Les lignes de l'adresse structurée dans le QR sont composées comme suit :

  • Ligne 1 : nom de l'entreprise ou nom et prénom du client
    • obligatoire, maximum 70 caractères
  • Ligne 2 : rue / case postale
    • facultatif, maximum 70 caractères
    • peut inclure le numéro si non indiqué à la ligne 3
  • Ligne 3 : numéro de rue
    • facultatif, maximum 16 caractères
    • si non indiqué à la ligne 2
  • Ligne 4 : code postal
    • facultatif, maximum 16 caractères
  • Ligne 5 : ville
    • obligatoire, maximum 35 caractères
  • Ligne 6 : code pays
    • obligatoire, maximum deux caractères
    • conforme à la norme ISO 3166-1

Comment insérer les adresses dans les tableaux Comptes et Contacts

Le numéro de rue peut être inséré soit dans la colonne Rue, soit dans la colonne Numéro de Rue. Les deux options sont correctes.

La colonne Numéro de Rue accepte tout caractère jusqu'à un maximum de 16 caractères :

 

 

La colonne Rue accepte tout caractère jusqu'à un maximum de 70 caractères :

Mise à jour des extensions personnalisées de mise en page de facture CH10

Si vous utilisez une extension personnalisée, comme par exemple l'extension de mise en page de facture CH10 que vous avez modifiée pour l'impression des factures, vous devez vérifier si l'impression des adresses dans le QR est de type structuré (S).

Étant donné qu’il s’agit d’une extension personnalisée, Banana ne peut pas accéder au code ni le modifier automatiquement ; par conséquent, il ne peut pas garantir le bon fonctionnement pour l’impression des adresses structurées.

Pour vérifier si l'impression des adresses dans le QR est de type structuré (S) :

  • Affichez la fenêtre d'impression des factures.
  • Sélectionnez votre mise en page personnalisée et cliquez sur Paramètres.
  • Cochez l'option Afficher JSON facture (en bas) et confirmez avec OK.
  • Cliquez sur OK pour imprimer la facture.
  • Avant l’impression de la facture, une fenêtre s’affiche avec les données JSON de la facture. Faites défiler vers le bas jusqu’à la section QR Code text et vérifiez que deux "S" apparaissent avant les deux adresses.
  • Si deux "S" apparaissent, cela signifie que les adresses sont déjà de type structuré et qu'aucune modification n’est nécessaire.
  • Si une ou deux "K" apparaissent, cela signifie qu'une ou les deux adresses sont de type combiné et doivent être modifiées. Dans ce cas, vous avez deux possibilités :
    1. Modifier les paramètres de votre mise en page personnalisée comme suit :
      • Dans la section Code QR > Payable à : cochez le champ et saisissez les informations de l’adresse dans les champs suivants (Nom, Rue, Numéro, Code postal, Localité, Code pays).
      • Dans la section Code QR > Type d’adresse client : sélectionnez le type "S" (Structuré).
      • Dans le tableau Comptes/Contacts, entrez le numéro dans la colonne Rue (rue et numéro dans la même colonne) ou séparément dans la colonne Adresse Extra.
      • Important : la colonne Extra doit être utilisée uniquement pour le numéro, et non pour d'autres informations.
    2. Recompiler l’extension personnalisée :
      • Ouvrez le lien du nouveau code swissqrcode.js
      • Enregistrez la page affichée avec le nom exact swissqrcode.js.
      • Remplacez le fichier swissqrcode.js de l'ancienne extension par celui que vous venez de télécharger.
      • Recompilez le paquet .sbaa de l'extension personnalisée.
      • Désinstallez l’ancienne extension et réinstallez la nouvelle.

Si vous souhaitez utiliser la nouvelle colonne Numéro et/ou la colonne Extra pour saisir d'autres informations, vous devez mettre à jour l’extension personnalisée : téléchargez le nouveau code de l’extension CH10 disponible en ligne et adaptez-le à vos besoins.

Tester le code QR

Les PDF de factures avec codes QR peuvent être testés avec le site officiel de validation, comme décrit ci-dessous :

Si le code est correct, la page affiche le contenu du code QR. En revanche, en cas de problème, celui-ci s'affiche en rouge.
Si aucun message rouge ne s'affiche, le QR est considéré comme correct.

Schéma des adresses pour factures QR Suisse

Adresse structurée :

<Cdtr>
    <AdrTp>S</AdrTp>
    <Name>Banana.ch SA</Name>
    <StrtNmOrAdrLine1>Via la Santa</StrtNmOrAdrLine1>
    <BldgNbOrAdrLine2>7</BldgNbOrAdrLine2>
    <PstCd>6962</PstCd>
    <TwnNm>Viganello</TwnNm>
    <Ctry>CH</Ctry>
</Cdtr>

Adresse structurée avec « tolérance » :

<Cdtr>
    <AdrTp>S</AdrTp>
    <Name>Banana.ch SA</Name>
    <StrtNmOrAdrLine1>Via la Santa 7</StrtNmOrAdrLine1>
    <PstCd>6962</PstCd>
    <TwnNm>Viganello</TwnNm>
    <Ctry>CH</Ctry>
</Cdtr>

Remarques :

  • Adresse structurée
    • Aucune combinaison avec l'élément "AdrLine" n'est autorisée.
  • Adresse structurée avec « tolérance »
    • Le numéro de rue peut également apparaître dans l'élément "StrtNm" au lieu de l'élément "BldgNb".

 

Relevés de compte bancaire CAMT

L'extension Relevé bancaire Camt ISO 20022 Suisse (Banana+)  utilise déjà le nouveau format CAMT ISO 20022 V2019, qui prévoit déjà ces modifications.

Ordres de paiement pain.001

À partir du 21 novembre 2026, les adresses dans les fichiers de paiement pain.001 devront être transmises exclusivement sous forme structurée ou hybride. La transmission dans ces formats est déjà possible depuis le 21 novembre 2025.

En vue de ces changements, une nouvelle version de l’extension a été publiée, actuellement disponible uniquement sur le canal bêta. Elle intègre la norme SPS 2025 et permet l’envoi d’ordres de paiement avec des adresses hybrides.

Schéma des adresses de paiement

Adresse structurée :

Suisse SIX

Europe EPC

<Cdtr>
   <Nm>Banana.ch SA</Nm>
   <PstlAdr>
       <StrtNm>Via la Santa</StrtNm>
       <BldgNb>7</BldgNb>
       <PstCd>6962</PstCd>
       <TwnNm>Viganello</TwnNm>
       <Ctry>CH</Ctry>
   </PstlAdr>
</Cdtr>
 
<Dbtr>
   <Nm>Banana.ch SA</Nm>
   <PstlAdr>
       <StrtNm>Via la Santa</StrtNm>
       <BldgNb>7</BldgNb>
       <BldgNm></BldgNm>
       <PstlCd>6962</PstlCd>
       <TwnNm>Viganello</TwnNm>
       <Ctry>CH</Ctry>
   </PstlAdr>
</Dbtr>

Adresse hybride :

Suisse SIX

Europe EPC

<Cdtr>
   <Nm>Banana.ch SA</Nm>
   <PstlAdr>
       <AdrLine>Via la Santa 7</AdrLine>
       <PstCd>6962</PstCd>
       <TwnNm>Viganello</TwnNm>
       <Ctry>CH</Ctry>
   </PstlAdr>
</Cdtr>
<Dbtr>
   <Nm>Banana.ch SA</Nm>
   <PstlAdr>
       <AdrLine>Via la Santa 7</StrtNm>
       <PstlCd>6962</PstlCd>
       <TwnNm>Viganello</TwnNm>
       <Ctry>CH</Ctry>
   </PstlAdr>
</Dbtr>

Ressources

Détails techniques et différents modes du QR-Code suisse

Le code QR suisse pour les factures est la norme pour imprimer les informations relatives au paiement sur la facture afin qu'elle puisse être lue numériquement. À partir du 1er octobre 2022, elle devient la norme obligatoire pour remplacer les bulletins de versement rouges et oranges.

Le QR-Code pour les factures permet différentes configurations, qui seront présentées ci-dessous. Pour des informations techniques, veuillez vous référer aux pages de personnalisation du code QR et aux normes de référence.

Banana Comptabilité Plus fournit le layout CH10 qui permet de personnaliser l'impression et d'inclure la section QR-Code et le paramétrage.

Objectif de la facture avec le Code QR

L'objectif du Code QR est de faire en sorte que les paiements et le rapprochement des factures puissent être automatisés autant que possible. Les informations sont imprimées sur la facture afin qu'elles puissent être récupérées et traitées numériquement.

Les principaux avantages :

  • Le paiement est très rapide et les erreurs dans les paiements de factures sont réduites, car il n'est pas nécessaire de copier les détails du compte, le montant et autres.
  • La personne qui reçoit le paiement a également la possibilité d'enregistrer automatiquement les paiements.

La facture avec la section QR-Code

Les factures avec un code QR ont une section spéciale qui est imprimée à la fin de la facture ou sur une page ultérieure.
Le contenu et la mise en page doivent être imprimés conformément à la norme. La section doit être détachable afin que, lors du paiement, elle puisse être traitée par le système de lecture.

La section Code QR est divisée en deux parties :

  • Récépissé→qui est tamponné et reste lors du paiement au guichet.
  • Section paiement→ avec le Code QR et les détails du paiement.

swiss qr code

(1) Récépissé

Elle contient un résumé des informations permettant de certifier le paiement :

  • Le titre Récépissé
  • Compte/Payable à
    • L'IBAN ou QR-IBAN imprimé en blocs de 4 caractères.
    • L'adresse du titulaire du compte qui est généralement celui qui a émis la facture et qui reçoit le paiement.
  • Référence
    • La référence du créancier (ISO 11649) ou la référence QR.
    • La référence du créancier peut également être manquante.
  • Payable par
    • L'adresse du destinataire de la facture.
    • S'il est vide, un espace est laissé pour saisir manuellement le nom du payeur.
  • Monnaie
    • Seules les monnaies "CHF" et "EUR" sont acceptées.
  • Montant
    • Un point "." est utilisé pour séparer les décimales et un espace pour séparer les milliers.
    • S'il est vide, un espace est laissé pour la saisie manuelle du montant de la facture.
  • Point de dépôt

(2) Section paiement

Elle contient les détails du paiement.

  • Le titre "Section paiement"
  • Le Code QR suisse
    • Un élément graphique qui encode toutes les données qui sont énumérées dans la section paiement.
    • Il peut être lu facilement par les appareils numériques.
  • Compte/Payable à
    • L'IBAN ou QR-IBAN imprimé en blocs de 4 caractères.
    • L'adresse du titulaire du compte qui est généralement celui qui a émis la facture et reçoit le paiement.
  • La référence
    • La référence QR ou la référence du créancier (ISO 11649).
    • Elle peut être présente ou non.
  • Informations complémentaires
    • Des données supplémentaires sur la facture qui peuvent être utiles au destinataire, comme la date d'expiration ou autre.
    • Peut ou non être présent.
  • Payable par
    • L'adresse du destinataire de la facture.
    • S'il est vide, un espace est laissé pour saisir manuellement le nom du payeur.
  • La monnaie
    • Seules les monnaies "CHF" et "EUR" sont acceptées.
  • Le montant
    • Un point "." est utilisé pour séparer les décimales et un espace pour séparer les milliers.
    • S'il est vide, un espace est laissé pour la saisie manuelle du montant de la facture.

Les adresses

Les adresses des sections «Payable à» et «Payable par» du QR doivent toujours contenir le nom de l'organisation ou bien le prénom et le nom de famille.
Le nom de l'organisation a priorité sur le nom / nom de famille: s'il est présent alors le nom de l'organisation sera entré, sinon le nom / nom de famille sera entré.
La saisie des deux n'est pas possible car les lignes sont limitées (max. 3 lignes permises) et chaque ligne doit contenir des informations précises.
La structure d'adresse est la suivante:

  • nom de l'organisation ou prénom / nom
  • Rue et numéro de maison
  • code postal et ville

Les adresses qui apparaissent dans la partie payante du QR sous les rubriques "payable à" et "payable par" suivent les règles du standard QR Suisse.
Il n'est pas possible d'ajouter des lignes ou de modifier la composition des adresses sur la partie paiement du QR de quelque manière que ce soit.

Compte et référence IBAN / QR-IBAN

Le système fonctionne avec deux types de comptes bancaires.

  • L'IBAN
    • Le numéro IBAN normal de votre compte.
    • Si vous utilisez l'IBAN, la facture peut être établie en CHF ou en EUR.
    • Si vous utilisez l'IBAN, vous pouvez utiliser la référence (référence du créancier structuré), qui commence par "RF".
    •  Voir : Facture QR utilisant le compte IBAN,
  • Le QR-IBAN
    • Un compte spécial attribué par votre banque, à utiliser uniquement pour les paiements par code QR.
    • Le deuxième bloc de chiffres est un numéro commençant par 3 : CHXX 3000 0XXX XXXX X.
    • Il contient un code spécial utilisé pour identifier l'institution financière. Les numéros allant de 30000 à 31999 sont réservés pour ce code.
    • Il est obligatoire de disposer de la référence QR compatible avec le RSI (27 caractères numériques).
    • Voir : Facture QR utilisant le QR-IBAN.

Éléments obligatoires

Dans le Code QR, les politiques sont obligatoires :

  • L'IBAN ou le QR-IBAN et l'adresse du titulaire du compte qui a émis la facture et reçoit le paiement.
  • L'adresse du destinataire.
  • Dans le cas de QR-IBAN, il doit également y avoir la référence.

Bulletins avec Code QR sans montant

Dans le cas des polices sans montant, il existe une case vide qui doit être remplie par le payeur. Le montant doit être saisi manuellement.
Ils servent à laisser au client le choix du montant à payer.

La référence du payeur est présente, de sorte que la personne qui reçoit le paiement est en mesure d'attribuer le montant au client.

Utilisé pour :

  • Les contributions volontaires à une association.
  • Les paiements au 3ème pilier.
  • Avances sur carte de crédit.

swiss qr code empty amount

Bulletins avec Code QR sans montant et sans adresse du client

Les bulletins de versement sans montant et sans référence au payeur servent de bulletins de versement généraux pour une entreprise.

La seule information encodée est le numéro de compte sur lequel le paiement doit être effectué.

Le payeur compléte manuellement :

  • Le montant
  • L'adresse du payeur

La personne qui reçoit le paiement doit affecter le montant manuellement.

swiss qr code empty amount and address

Références et Normes

[CH10] Layout avec QR Code suisse (Banana+)

[CH10] Layout avec QR Code suisse (Banana+)

Ce layout d'impression de factures (appelé CH10) permet d'imprimer des factures personnalisées, y compris l'impression du QR-Code suisse, ce qui facilite les paiements et permet de les contrôler facilement.

Conditions préalables

Pour l'utiliser, vous devez télécharger et installer Banana Comptabilité Plus.

Cette disposition, ainsi que toutes les autres, peuvent être utilisées dans les applications :

Comment imprimer une facture

Vous pouvez facilement personnaliser et adapter l'impression des factures à vos besoins.

Personnalisation et configuration du code QR

Dans les paramètres de la facture, vous pouvez activer l'impression du code QR et définir des paramètres.

Note : Les factures QR créées avec Banana Comptabilité+ ne sont pas compatibles avec TWINT. Elles ne peuvent pas être payées avec TWINT et un code QR TWINT ne peut pas être généré.

Personnalisation des impressions de factures

La mise en page de l'impression des factures est déjà définie. Toutefois, vous pouvez le personnaliser si vous le souhaitez. Vous pouvez facilement adapter la mise en page de l'impression de la facture à vos souhaits, décider des éléments à imprimer, modifier la description du texte.

  • Personnalisation via le dialogue de paramétrage
    • Choisir les éléments de la facture que vous voulez inclure dans l'impression.
    • Imprimer l'adresse à droite ou à gauche.
    • Indiquer les colonnes de détail à inclure et définir la séquence. Vous pouvez avoir une facture avec les quantités et les prix, ou seulement les montants totaux ou même les colonnes que vous avez ajoutées dans le tableau Écritures.
    • Modifier les textes par défaut à utiliser pour l'impression.
    • Ajouter des traductions dans d'autres langues.
    • Changer la police et le caractère d'impression.
    • Choisir la combinaison de couleurs que vous souhaitez.
  • Exemples de personnalisation
    • Ajout d'un logo.
    • Impression de l'adresse dans une position différente.
    • Impression de l'adresse de livraison.
    • Ajout d'un texte personnalisé.
    • Modification de la disposition des colonnes.
    • Factures sans montants.
    • Imprimer l'image des produits ou articles.
    • Autres exemples.

Personnalisation avec programmation

La mise en page peut être adaptée par programmation ou de nouvelles mises en page peuvent être créées.

Fonctionnalités disponibles uniquement avec le plan Advanced

Les personnalisations suivantes ne sont disponibles qu'avec le plan Advanced.

  • Imprimer des colonnes supplémentaires de la table Articles ou de la table Écritures (comptabilité).
  • Imprimer l'image des articles.
  • Imprimer les champs personnalisés de la section d'information (Offres et Factures).
  • Personnalisation avec programmation CSS, y compris (voir exemples) :
    • Modifiez la police, la position et la couleur de l'en-tête, de l'adresse et des autres éléments de la facture.
    • Modifiez l'espacement des lignes.
    • Modifier le soulignement des lignes de total.
  • Personnalisation avec la programmation Javascript, y compris (voir exemples) :
    • Modifier le texte de fin ou un autre texte en fonction des données de la facture.
    • Utilisez différents formats de date.
    • Utilisez différents formats d'impression en fonction des éléments imprimés.
  • Insérez les noms des champs dans les titres, le texte de début et le texte de fin.

Historique des changements

Afficher l'historique des modifications (en anglais uniquement).

ivan
URL Stable release
https://github.com/BananaAccounting/Switzerland/raw/master/report/customer/invoice/ch.banana.ch.invoice.ch10.sbaa
Short Description
Mise en page de l'impression de la facture avec le code QR suisse selon les normes. La mise en page vous permet également de personnaliser la facture, notamment en imprimant votre propre logo, en choisissant les couleurs et la position de l'adresse.
Country
Suisse
Publisher
Banana.ch
Extension type
Factures
Help ID
ch.banana.ch.invoice.ch10
Image URL
https://github.com/BananaAccounting/Switzerland/raw/master/report/customer/invoice/images/templateCH10_.png
https://raw.githubusercontent.com/BananaAccounting/Switzerland/master/report/customer/invoice/images/en_layout_ch10.png
URL Beta release
https://github.com/BananaAccounting/Switzerland/raw/master/report/customer/invoice/beta/ch.banana.ch.invoice.ch10.sbaa
Release Date Stable
Release Date Beta

Paramètres et personnalisation de l'impression facture Layout CH10

Cette mise en page (layout) de facture vous permet de modifier les paramètres d'impression via la boîte de dialogue Paramètres.  Les paramètres sont similaires à ceux de la mise en page (layout) UNI11, avec la possibilité supplémentaire d'imprimer le Code QR Suisse.

Voir aussi :

Dialogue des paramètres de facturation

Pour accéder au dialogue de paramétrage des factures, vous avez deux possibilités :

Le dialogue se compose de plusieurs niveaux et sous-niveaux qui vous permettent d'intervenir sur des parties spécifiques de la facture :

  • Imprimer
    Les éléments qui composent l'impression de la facture, avec la possibilité de les personnaliser.
  • Textes
    Les textes, dans les différentes langues, qui sont utilisés pour l'impression.
  • QR-Code
    Les paramètres pour l'impression du QR-Code Suisse.
  • Styles
    Changez la police et les couleurs.
  • Programmation (fichiers JavaScript/CSS propres)
    Il s'agit d'un niveau de personnalisation encore plus élevé, mais qui nécessite des connaissances en programmation.
    Vous pouvez intervenir sur les différents éléments d'impression, les modifier ou les remplacer.

Propriété d'impression

Ce niveau définit les éléments de la facture à inclure et ceux à exclure de l'impression de la facture.


Fenêtre paramètres - Propriété d'impression

Elle est divisé en plusieurs sous-niveaux qui vous permettent de gérer un élément spécifique de la facture.

En-tête

Élément de dialogue qui vous permet de définir l'en-tête en haut de la page de la facture.

  • En-tête de page 
    Cochez la case pour inclure des textes dans l'en-tête.
    Les textes sont extraits des données d'adresse de la comptabilité, définies dans Fichier > Propriétés Fichier > Adresse.
    Le code TVA est obligatoire et doit être saisi dans le champ approprié.
  • Texte ligne 1 ... Texte ligne 5
    Si vous ne souhaitez pas utiliser les données d'adresse de base, vous pouvez saisir manuellement les textes que vous souhaitez utiliser.
    Ces textes seront affichés dans l'en-tête et remplaceront tous les textes définis dans Propriétés Fichier.
    Dans ce cas, le numéro de TVA n'est pas imprimé automatiquement. Comme il est obligatoire, vous devez l'ajouter manuellement dans l'une des lignes.
  • Logo
    Cochez la case pour inclure le logo dans l'en-tête.
    Le logo est défini avec la commande menu Fichier > Configuration Logo où vous pouvez également définir la taille, choisir la façon de l'aligner (gauche, centre, droite), et également choisir la façon d'aligner l'adresse par rapport au logo.
  • Nom du Logo
    Saisissez le nom de la personnalisation du logo défini dans le menu Fichier > Configuration logo, en respectant les majuscules et les minuscules.

Adresse client

Élément du dialogue qui vous permet de définir certains paramètres pour l'adresse de facturation.

Les adresses des clients sont extraites des colonnes spécifiques du tableau, voir Comptes > Vue Adresse pour la facturation intégrée, et du tableau Contacts pour l'application Offres et factures.

  • Texte adresse de l'expéditeur.
    Au-dessus de l’adresse du client, vous pouvez insérer une ligne indiquant l’adresse de l’expéditeur, au cas où vous utilisez une enveloppe à fenêtre.
    Laissez le champ vide pour utiliser l’adresse définie dans le menu. Fichier > Propriétés Fichier > Adresse ou saisissez le texte manuellement.
    Entrez <none> pour ne pas inclure la ligne soulignée de l’expéditeur au-dessus de l’adresse du client.
  • Composition de l'adresse
    Décider comment composer l'adresse. Entrez les noms XML des colonnes d'adresses dans l'ordre que vous préférez: pour la facturation intégrée tableau Comptes (vue Adresse), pour l'application Offres et Factures le tableau Contacts. Le nom de chaque colonne doit être défini entre "<" et ">".
    Vous pouvez voir le nom XML de chaque colonne avec la commande Organiser colonnes, onglet Paramètres.

    Vous ne pouvez utiliser que les colonnes suivantes (les autres colonnes ne peuvent pas être utilisées) :

    Colonne Préfixe (nom XML = NamePrefix).
    Colonne Organisation (nom XML = OrganisationName).
    Colonne Prénom (nom XML = FirstName).
    Colonne Nom de Famille (nom XML = FamilyName).
    Colonne Rue (nom XML = Street).
    Colonne N. rue (nome XML = BuildingNumber).
    Colonne Adresse extra (nom XML = AddressExtra).
    Colonne Boîte Postale (nom XML = POBox).
    Colonne Code postal (nom XML = PostalCode).
    Colonne Lieu (nom XML = Locality).
    Colonne Région (nom XML = Region).
    Colonne Pays (nom XML = Country).
    Colonne Code Pays (nom XML = CountryCode).
    Colonne Email Travail (nom XML = EmailWork).

    Quelques exemples:
    • Indiquez le nom de l'organisation, son adresse, son code postal et son lieu :
      <OrganisationName>
      <Street>
      <PostalCode> <Locality>
    • Indiquez le préfixe, le prénom, le nom de famille, l'adresse, le code postal et le lieu :
      <NamePrefix>
      <FirstName> <FamilyName>
      <Street>
      <PostalCode> <Locality>
    • Indiquez une adresse supplémentaire, une boîte postale et le code du pays :
      <OrganisationName>
      <NamePrefix>
      <FirstName> <FamilyName>
      <Street> <AddressExtra>
      <POBox>
      <CountryCode> - <PostalCode> <Locality
  • Aligner à gauche
    Cochez la case pour imprimer l'adresse à gauche, sinon elle sera imprimée à droite
  • Déplacer horizontalement
    Saisissez une valeur en cm pour déplacer l'adresse du client vers la droite (valeur positive) ou vers la gauche (valeur négative).
  • Déplacer verticalement
    Saisissez une valeur en cm pour déplacer l'adresse du client vers le bas (valeur positive) ou vers le haut (valeur négative).
  • Adresse de livraison
    Uniquement disponible pour la facturation intégrée à la comptabilité.
    L'adresse de livraison est également imprimée.
    L'adresse de livraison est saisie à l'aide du code :sadr dans la colonne TypeDoc du tableau Écritures pour définir l'adresse de livraison

Informations

Élément de dialogue qui vous permet de définir les informations de la facture à inclure et celles à exclure de l'impression (en haut à gauche).


Facturation intégrée :

  • Numéro de facture / Note de crédit
    Spécifié dans la colonne PièceFacture du tableau Écritures.
  • Date facture
    Spécifié dans la colonne Date du tableau Écritures.
  • Numéro commande
    Spécifié dans la colonne TypeDoc du tableau Écritures par le code :ordn
  • Date commande
    Spécifié dans la colonne TypeDoc du tableau Écritures par le code :ordd
  • Numéro Client
    Spécifié dans l'opération de facturation du tableau Écritures.
  • Numéro de TVA Client
    Spécifié dans la colonne Numéro de TVA du tableau Comptes, vue Divers.
  • Numéro fiscal Client
    Spécifié dans la colonne Numéro fiscal du tableau Comptes, vue Divers.
  • Échéance facture
    L'échéance d'une facture peut être insérée de différentes manières. Pour plus d'informations, veuillez consulter la page Échéances et modalités de paiement.
  • Numéro de page
    Le numéro de la page en cours.

Application Offres et Factures :

  • Numéro de facture / Offre
    Spécifié dans la colonne Id du tableau Factures / Offres.
  • Date facture
    Spécifié dans la colonne Date du tableau Factures / Offres.
  • Numéro commande
    Spécifié dans le champ Nr commande du dialogue de creation/modification de la facture.
  • Date commande
    Spécifié dans le champ Date commande du dialogue de creation/modification de la facture.
  • Numéro Client
    Spécifié dans la colonne Contact ID du tableau Factures/Offres.
  • Numéro de TVA Client
    Spécifié dans la colonne Numéro de TVA du tableau Contacts.
  • Numéro fiscal Client
    Spécifié dans la colonne Numéro fiscal du tableau Contacts.
  • Échéance facture
    Spécifié dans la colonne Échéance du tableau Factures / Offres.
    L'échéance d'une facture peut être insérée de différentes manières. Pour plus d'informations, veuillez consulter Définir le délai de paiement.
  • Numéro page
    Le numéro de la page en cours.
  • Champs personnalisés
    Seulement avec le Plan Advanced.
    Tous les champs d'informations supplémentaires personnalisés définis dans la section Dialogue des facture sont ajoutés.

Détails de la facture

Par détails de la facture, nous entendons le tableau indiquant les articles, les quantités, les prix et les totaux.

Compositions de colonnes prédéfinies

Permet de sélectionner les colonnes à afficher dans les détails de la facture directement à partir d'une liste.
La liste comprend des compositions de colonnes prédéfinies parmi lesquelles vous pouvez choisir. Certains d'entre eux nécessitent le plan avancé de Banana Comptabilité Plus.

Sélectionnez une composition de colonne dans la liste et confirmez.
Les valeurs des propriétés Noms des colonnes, Largeur des colonnes, Alignement des titres, Alignment des textes de la section Détails de la facture et de la propriété Noms des colonnes détails facture de la section Textes sont définies automatiquement par le programme.

Disponible à partir de la version 10.0.10.21348 ou plus récente de Banana Comptabilité Plus.

Logique de disposition des colonnes

Les colonnes à afficher peuvent être définies manuellement de cette manière :

  • Dans les noms de colonnes, vous indiquez les noms XML des colonnes à imprimer.
  • Dans les champs suivants, les caractéristiques d'impression des différentes colonnes sont indiquées.
    • Largeur de la colonne.
    • Alignement du titre.
    • Alignement du texte.
  • Dans la section Textes, vous indiquez les textes d'en-tête de colonne.
    • Pour chaque langue, le texte de l'en-tête doit être indiqué.

Si vous sélectionnez un paramètre Colonnes par défaut, tous les éléments sont modifiés automatiquement.

Valable pour tous les éléments

  • Les éléments sont séparés par des ';' et doivent correspondre au nombre de colonnes définies.
  • Si l'un de ces éléments est laissé vide, les valeurs par défaut sont prises.

Noms des colonnes

Indiquez manuellement les colonnes à afficher dans les détails de la facture.
Entrez les noms XML des colonnes dans le tableau Écritures. Vous pouvez afficher le nom XML de chaque colonne avec la commande Organiser colonnes, onglet Paramètres. Séparez les noms de colonnes par un ';' (point-virgule).

Les colonnes par défaut sont les suivantes :

  • Pour les factures intégrées dans la comptabilité :
    • Number (Id article). Cela s'applique à la fois à la colonne Id de la table Articles dans l'application Offres et Factures, et à la colonne Article de la table Écritures dans la facturation intégrée.
    • Description
    • Quantity
    • ReferenceUnit
    • UnitPrice
    • Amount
    • VatRate
  • Supplémentaire pour l'application de l'offre de facturation :
    • Date
    • Discount

Avec le Plan Advanced de Banana Comptabilité Plus, vous pouvez imprimer d'autres colonnes du tableau des Écritures (pour la facturation intégrée) et du tableau Articles (pour la facturation intégrée et l'application Offres et Factures) qui ne figurent pas dans la liste ci-dessus.

  • Tableau Écritures (Transactions).
    • La syntaxe à utiliser est T.NomColonne.
      "T." indique qu'il s'agit d'une colonne de la table Écritures (Transactions),
      "NomColonne" est le nom XML de la colonne (par exemple "T.Notes", "T.DateWork", etc.).
  • Tableau Articles (Items).
    • La syntaxe à utiliser est I.NomColonne.
      "I." indique qu'il s'agit d'une colonne du tableau Articles (Items) ,
      "NomColonne"est le nom XML de la colonne (par exemple "I.Links", etc.).

Largeur des colonnes

Entrez la largeur de chaque colonne avec une valeur en pourcentage. Chaque valeur définit l'espace qu'occupe une colonne par rapport à la largeur totale de la page. La somme doit être de 100%.
Séparez les largeurs de colonne par un " ;" (point-virgule).

Alignement des titres

Saisissez l'alignement du titre pour chaque colonne. Vous pouvez aligner le texte à gauche (left) , au centre (center) et à droite (right). Séparez chaque alignement par un " ;" (point-virgule).

Alignement du texte

Entrez l'alignement du texte de chaque colonne. Vous pouvez aligner le texte à gauche (left), au centre (center)  et à droite (right). Séparez chaque alignement par un " ;" (point-virgule).

Montants bruts ( TVA compris)

Vous pouvez décider d'utiliser les montants bruts incluant la TVA ou les montants nets hors TVA.

Impression de descriptions supplémentaires

Disponible uniquement pour la facturation intégrée à la comptabilité.
Vous pouvez décider si vous souhaitez saisir des descriptions supplémentaires sur plusieurs lignes.

  • Dans le tableau Écritures, ajoutez une ou plusieurs colonnes de description supplémentaires à l'aide de la commande Organiser colonnes.
    Pour chaque ligne de description supplémentaire, ajoutez une colonne distincte.
    Créez des colonnes de type Texte avec le nom "Description" suivi d'un numéro (par exemple Description1, Description2, Description3, etc.)
    Le "nom XML" de chaque colonne doit commencer par le mot "Description" (en anglais) suivi d'un nombre.
    Dans le champ "Nom", saisissez ce que vous voulez.

    column invoice with description multiple lines
     
  • Dans ces colonnes, saisissez des textes supplémentaires pour les descriptions des factures.
    Le texte de chaque colonne est inséré sur une nouvelle ligne immédiatement en dessous de la description principale.

Quelques exemples

Inclure les colonnes Description, Quantité, Unité, Prix unitaire et Montant :

  • Description;Quantity;ReferenceUnit;UnitPrice;Amount
    50%;10%;10%;15%;15%
    center;center;center;center;center
    left;center;center;right;right
  • N'incluez que les colonnes Description et Montant :
    • Description;Amount
      70%;30%
      center;right
      left;right
  • Incluez les colonnes Description, Notes et Montant. Notes n'est pas une colonne par défaut, le nom doit être précédé de "T.". Nécessite le plan Banana Accounting Plus Advanced.I
    • Description;T.Notes;Amount
      35%;35%;30%
      left;left;right
      left;left;right
  • Inclure les colonnes Description, DateTravail, Quantité, Prix unitaire et Montant (DateTravail est une colonne créée manuellement, le nom doit être précédé de "T."). Nécessite le plan avancé de Banana Comptabilité Plus.
    Description;T.DateWork;Quantity;ReferenceUnit;UnitPrice;Amount
    35%;15%;10%;10%;15%;15%
    left;center;center;center;right;right
    left;center;center;center;right;right
  • Dans l'application Offres et Factures: inclure les colonnes Numéro, Date, Description, Quantité, Unité, Prix unitaire, Remise e Montant.
    Number;Date;Description;Quantity;ReferenceUnit;UnitPrice;Discount;Amount
    10%;10%;50%;10%;10%,10%;15%;15%
    left;left;left;right;right;right;right;right
    left;left;left;right;right;right;right;right

Pied de page

Élément de dialogue qui permet d'insérer un pied de page.

  • Imprimer pied de page
    Indique s'il faut inclure le pied de page, qui se compose de trois colonnes (voir le chapitre "Propriétés des textes" ci-dessous).
  • Imprimer la bordure de séparation
    Indique s'il faut inclure la bordure en haut du pied de page.

Le pied de page est divisé en trois blocs de texte, disposés comme trois colonnes :

  • Bloc de gauche, aligné à gauche
  • Bloc central, aligné au centre
  • Bloc de droite, aligné à droite

Chaque bloc peut contenir une ou plusieurs lignes de texte. Les contenus sont saisis dans les champs de la section Textes > Pied de page gauche / centre / droite.

Les champs "Pied de page gauche" et "Pied de page droite" contiennent des textes prédéfinis, modifiables à tout moment.

Si vous souhaitez laisser un bloc vide et éviter l’impression de tout contenu, vous devez saisir le texte <none>.

Il est également possible d’imprimer un seul texte occupant toute la largeur de la page. Pour ce faire, saisissez le texte souhaité dans le champ "Pied de page gauche" et indiquez <none> dans les champs "Pied de page centre" et "Pied de page droite".

Le pied de page ne peut être inclus que si le code QR est exclu de l'impression. Lorsque le code QR est inclus, le pied de page est automatiquement exclu de l'impression.

Propriété des textes

Ce niveau définit tous les textes de la facture, qui sont regroupés et subdivisés par langue.


Settings Dialogue - Texts Property

Langues

Vous pouvez modifier les textes à utiliser pour chaque langue et également ajouter des traductions pour d'autres langues.

La langue à utiliser est choisie en fonction de la langue indiquée pour le client:

  • Pour la facturation intégrée, elle est définie dans le tableau Comptes, vue Adresse, colonne Langue.
  • Pour l'application Offres et Factures, elle est définie dans le tableau des contacts, colonne Langue.

Si aucune langue n'est indiquée pour le client, la langue de comptabilité par défaut est utilisée.

Les langues par défaut pour lesquelles il existe une traduction complète sont les suivantes: allemand, anglais, français et italien.

La première langue qui apparaît dans le dialogue est toujours la langue courante du fichier, définie dans le menu Fichier → Propriétés fichier → Divers. Les autres langues sont classées par ordre alphabétique.

Definir langues

  • Valeurs par défaut: de;en;fr;it
  • Entrez la liste des langues en utilisant les codes à deux caractères.
    • de = allemand
    • en = anglais
    • fr = français
    • it = italien
  • Séparez les codes de langue par un " ;" (point-virgule).

Ajouter des langues

  • Dans le champ Langue, entrez le code de la langue que vous voulez ajouter.
  • Cliquez sur Ok.
  • Réouvrez le dialogue des Paramètres. Il y a maintenant une nouvelle section pour la langue que vous avez insérée avec des textes en anglais.
  • Dans la section de la langue ajoutée, remplacez les textes existants par les textes corrects.

Supprimer des langues

  • Dans le champ Langue, supprimez le code de la langue que vous voulez supprimer.
  • Cliquez sur Ok.
  • Confirmez par Oui pour supprimer la langue et ses textes de la liste.
  • Réouvrez le dialogue des Paramètres. Maintenant, la section de la langue concernée a été supprimée.

Section textes pour chaque langue

Pour chaque langue définie, il y a une section commençant par le code de la langue. Elle contient la liste des textes que vous pouvez modifier.
Si vous supprimez le contenu, lorsque vous confirmez avec OK, le texte par défaut sera repris automatiquement.

  • Numéro de facture.
    Saisissez les informations qui précèdent le numéro de facture.
  • Date de la facture.
    Texte dans les informations précédant la date de la facture.
  • Ordre de facturation.
    Saisissez les informations qui précèdent le numéro de commande.
  • Date de commande.
    Texte dans les informations précédant la date de la commande.
  • Numéro de client.
    Saisissez les informations qui précèdent le numéro de client.
  • Numéro de TVA du client.
    Saisissez les informations précédant le numéro de TVA du client.
  • Numéro fiscal du client.
    Saisissez les informations précédant le numéro d'identification fiscale du client.
  • Date d'échéance de la facture.
    Texte dans les informations précédant la date d'échéance de la facture.
  • Numéro de page.
    Texte dans l'information précédant le numéro de page.
  • Adresse de livraison.
    Texte apparaissant au-dessus de l'adresse de livraison.
  • Titre de la facture.
    Texte facultatif inséré avant le tableau des détails.
    Entrez <none> pour ne pas afficher de texte.
  • Titre de la note de crédit
    Texte facultatif inséré avant le tableau des détails.
    Entrez <none> pour ne pas afficher de texte.
  • Texte initial
    Texte facultatif, sur une ou plusieurs lignes, inséré immédiatement après le titre de la facture.
  • Noms des colonnes détails de la facture.
    Textes des intitulés des différentes colonnes du détail de la facture.
    Doivent être séparés par un ';' (point-virgule).
    Lorsque vous modifiez les colonnes à afficher dans la facture (section Impression, Détails de la facture, Noms des colonnes), vous devez toujours adapter également les textes des titres des colonnes.
  • Total de la facture.
    Texte qui apparaît dans la ligne du total de la facture.
  • Texte final
    Texte facultatif, sur une ou plusieurs lignes, inséré à la fin de la facture.
    Ce texte a la priorité sur le texte ajouté à partir du dialogue Imprimer les factures → Options → Texte final.
  • Pied de page gauche/centre/droite.
    Le code <Page> est remplacé par le numéro de page.
    Entrez <none> pour ne pas afficher de texte.

Textes spécifiques pour l'impression des Factures Proforma, Offres, Bons de livraison, Confirmations de commande et des rappels de paiement (nécessite le plan Advanced):

  • Facture Proforma
    • Titre.
      Texte facultatif inséré avant le tableau des détails. Entrez <none> pour ne pas afficher de texte.
    • Texte de début.
      Texte facultatif, sur une ou plusieurs lignes, inséré immédiatement après le titre du facture.
    • Texte final.
      Texte facultatif, sur une ou plusieurs lignes, inséré à la fin du facture.
  • Offre
    • Numéro.
      Saisissez les informations qui précèdent le numéro de l'offre.
    • Date.
      Saisissez les informations précédant la date de l'offre.
    • Validité.
      Saisissez les informations précédant la date de validité de l'offre.
    • Titre.
      Texte facultatif inséré avant le tableau des détails.
    • Texte de début.
      Texte facultatif, sur une ou plusieurs lignes, inséré immédiatement après le titre de l'offre.
    • Texte final.
      Texte facultatif, sur une ou plusieurs lignes, inséré à la fin de l'offre.
  • Bon de livraison
    • Numéro du bon de livraison.
      Texte dans les informations précédant le numéro du bon de livraison.
    • Date du bon de livraison.
      Texte figurant dans les informations précédant la date du bon de livraison.
    • Titre.
      Texte facultatif inséré avant le tableau des détails. Entrez <none> pour ne pas afficher de texte.
    • Texte début.
      Texte facultatif, sur une ou plusieurs lignes, inséré immédiatement après le titre du bon de livraison.
    • Texte final.
      Texte facultatif, sur une ou plusieurs lignes, inséré à la fin du bon de livraison.
  • Confirmation de commande
    • Numéro confirmation de commande.
      Texte dans les informations précédant le numéro du confirmation de commande.
    • Date confirmation de commande.
      Texte figurant dans les informations précédant la date du confirmation de commande.
    • Titre.
      Texte facultatif inséré avant le tableau des détails. Entrez <none> pour ne pas afficher de texte.
    • Texte de début.
      Texte facultatif, sur une ou plusieurs lignes, inséré immédiatement après le titre.
    • Texte final.
      Texte facultatif, sur une ou plusieurs lignes, inséré à la fin.
  • Rappel
    • Date facture (uniquement pour la facturation intégrée dans le fichier comptable).
      Texte figurant dans les informations précédant la date de la facture.
      Utilisé s'il existe la transaction avec la date de rappel créée via la commande Rapports > Clients > Imprimer rappels de paiement.
    • Date (uniquement pour la facturation intégrée dans le fichier comptable).
      Texte figurant dans les informations précédant la date de rappel.
      Utilisé s'il existe la transaction avec la date de rappel créée via la commande Rapports > Clients > Imprimer rappels de paiement.
    • Échéance (uniquement pour la facturation intégrée dans le fichier comptable).
      Texte figurant dans les informations précédant la date d'échéance du rappel.
      Utilisé s'il existe la transaction avec la date de rappel créée via la commande Rapports > Clients > Imprimer rappels de paiement.
    • Titre.
      Texte facultatif inséré avant le tableau des détails. Entrez <none> pour ne pas afficher de texte.
    • Texte de début.
      Texte facultatif, sur une ou plusieurs lignes, inséré immédiatement après le titre d'appel.
    • Texte final.
      Texte facultatif, sur une ou plusieurs lignes, inséré à la fin du rappel.

En gras

Avec une annotation spécifique, vous pouvez appliquer le style en gras à certains textes. Pour ce faire, insérez les textes souhaités entre les doubles astérisques ** .

Applicable à :

  • Texte de départ.
  • Texte final..
  • Descriptions des éléments apparaissant dans les détails de la facture.

Exemples :

**text** = texte
**texte1 texte2**, texte3 = texte1 texte2, texte3

Personnaliser le titre, le texte initial et le texte final

Les données relatives au titre, au texte initial et au texte final sont reprises et insérées automatiquement à chaque nouvelle facture.

Si vous souhaitez également inclure des informations sur le client (nom, prénom, etc.) ou le numéro de facture dans ces textes, vous pouvez le faire :

  • Avec le Plan Professionnel, les données doivent être saisies manuellement chaque fois que vous créez une facture.
  • Avec le Plan Advanced, vous pouvez automatiser la saisie des données sur toutes les factures.

Pour la saisie automatisée des données (uniquement avec le Plan Avanced), vous devez utiliser les colonnes prédéfinies dont les données sont extraites :

  • Colonnes d'adresse du client
    • Dans la facturation intégrée, à partir du tableau Comptes, vue Adresse.
    • Dans l'application Offres et factures, à partir du tableau des Contacts.
  • Colonne du numéro de facture
    • Dans la facturation intégrée, à partir du tableau Comptes, colonne Facture.
    • Dans l'application Offres et Factures, dans le tableau Factures, colonne Id.

Dans les textes, vous devez saisir les colonnes suivantes, en spécifiant les noms de colonnes XML entre les signes "<" et ">".

  • Adresse
    • <NamePrefix>, <OrganisationName>, <FirstName>, <FamilyName>, <Street>, <BuildingNumber>, <AddressExtra>, <POBox>, <PostalCode>, <Locality>, <Region>, <Country>, <CountryCode>, <EmailWork>.
  • Numéro de facture
    • <DocInvoice>.
      Dans ce cas, DocInvoice est utilisé à la fois pour la facturation intégrée et pour l'application offre et facture.

Pour afficher le nom XML de chaque colonne, utilisez la commande Organiser colonnes, section Paramètres.

Lorsque la facture est créée, ces textes sont remplacés par les valeurs réelles.

Exemples :

  • Le texte "Facture <DocInvoice>" est converti en "Facture 10".
  • Le texte "Facture <DocInvoice>, <FirstName> <FamilyName>" est converti en "Facture 10, James Johnson".

Propriétés de Styles

Ce niveau définit les paramètres qui affectent l'aspect visuel de la facture, comme le type de police, la taille et les couleurs.


Settings Dialogue - Styles Property

Type et taille de caractère

Le type de police et la taille sont appliqués à tous les textes de la facture, sauf l'en-tête, qui a une taille fixe qui ne peut être modifiée qu'avec les fonctions CSS.

La taille du titre et la ligne totale sont automatiquement redimensionnées en fonction de la taille du caractère choisi.

Voir la page Créer PDF pour plus d'informations concernant la police que vous pouvez utiliser et exporter au format PDF.

Couleurs

Saisissez les couleurs que vous souhaitez appliquer à l'impression de la facture.

  • Couleur du texte.
    La couleur appliquée à tout le texte de la facture : en-tête, informations, adresse, texte de départ, détails de la facture, texte de fin, pied de page.
    La couleur du bulletin QR ne peut pas être modifiée.
  • Couleur de fond des détails de l'en-tête.
    La couleur principale de la facture. Il s'applique au titre, à l'en-tête des détails de la facture, aux lignes horizontales, à la ligne totale et au double soulignement.
  • Couleur du texte de l'en-tête.
    La couleur du texte dans les en-têtes de colonne du tableau des détails de la facture.
  • Couleur de fond pour les lignes alternés.
    La couleur de fond appliquée aux lignes des différents détails de la facture.

Pour saisir une couleur, vous avez deux possibilités :

  • Sélectionnez une couleur parmi celles disponibles.
  • Entrez le code hexadécimal de la couleur (HEX). Il s'agit d'un code commençant par # suivi de six caractères (par exemple #0000, #009FE3, #FF00EA).
    Les codes de couleur se trouvent facilement sur l'internet. Par exemple, vous pouvez consulter le tableau à l'adresse https://www.w3schools.com/cssref/css_colors.asp.

Textes de facturation intégrée

Dans la facturation intégrée, certains textes peuvent également être définis dans le tableau des Écritures lors de la saisie des données de la facture.

  • Titre de la facture / note de crédit.
    • Saisir dans la colonne TypeDoc la commande 10:tit (12:tit pour la note de crédit).
    • Saisissez le texte souhaité dans la colonne Description.
    • Il a la priorité sur tout texte défini dans les paramètres de la mise en page de la facture.
  • Texte initial.
    • Saisissez dans la colonne TypeDoc la commande 10:beg.
    • Saisissez le texte souhaité dans la colonne Description.
    • È possibile inserire solamente una riga di testo.
    • Ce texte a la priorité sur tout autre texte défini dans les paramètres de la mise en page (layout) de la facture.
  • Notes.
    • Dans la colonne TypeDoc, saisissez la commande 10:not.
    • Saisissez le texte souhaité dans la colonne Description.
    • Il est possible de saisir plusieurs lignes de notes. Chaque note doit être définie sur une nouvelle ligne dans le tableau Écritures.
  • Salutations.
    • Saisissez la commande 10:gre dans la colonne TypeDoc.
    • Saisissez le texte souhaité dans la colonne Description.
    • Une seule ligne de messages d'accueil peut être saisie.

Priorité du Titre et du Texte Initial:

 Priorité 1Priorité 2
Facture
Facture Proforma
Tableau Écritures (10:tit / 10:beg)Dialogue mise en page facture
OffreTableau Écritures (10:tit / 10:beg)Dialogue mise en page facture
Bon de livraisonDialogue mise en page facture-
RappelDialogue mise en page facture-


 

Priorité du Texte final:

 Priorité 1Priorité 2Priorité 3
Facture
Facture Proforma
Tableau Écritures (10:not / 10:gre)Dialogue mise en page factureDialogue Imprimer Factures, section Options
OffreTableau Écritures (10:not / 10:gre)Dialogue mise en page facture-
Bon de livraisonDialogue mise en page facture--
RappelDialogue mise en page facture--

 

Messages d'erreur

  • @error Les noms des textes et les colonnes ne correspondent pas
    Le nombre de colonnes du tableau des détails de la facture (Imprimer → Détails de la facture → Noms des colonnes) ne correspondent pas avec les textes à imprimer (Textes → Code langue → Noms des colonnes sous détails de la facture). Contrôlez les paramètres de la facture.

Personnalisation par QR-Code Impression de la facture Suisse

Cette page explique comment configurer l'impression du Code QR suisse sur les factures et renvoie également à des informations techniques sur les possibilités de personnalisation, l'utilisation des formats d'adresse, etc.
Pour les spécifications techniques, veuillez vous référer aux Références et normes relatives aux codes QR.

Section QR

Dans les Paramètres de la facture, il y a une section spéciale pour la saisie des données pour l'impression de la section QR.

  • Pour imprimer le QR sur la facture, vous devez cocher la case "Imprimer code QR".

Il y a également un choix très important à faire. Le système de code QR comporte deux modes principaux en fonction du type de compte que vous souhaitez utiliser. Dans le Type de référence, vous devez indiquer le système que vous souhaitez utiliser.

  • Imprimer facture QR avec compte IBAN
    Avec cela, vous pouvez immédiatement commencer à imprimer des factures avec le QR. Le relevé bancaire indique le numéro de compte du client et la facture. Vous aurez ainsi un contrôle immédiat et automatisé des paiements.
  • Imprimer facture QR avec compte QR-IBAN
    Si vous souhaitez disposer d'un système compatible avec le DSI, ou si vous souhaitez que les données relatives au paiement de vos factures soient reçues dans un fichier de données différent de celui de l'extrait de compte.
    Votre banque doit vous donner un numéro de compte QR-IBAN et les données de paiement individuel n'apparaîtront pas sur le relevé de compte normal, mais sur un relevé séparé.

Enfin, les paramètres disponibles suivent, quelque soit le type de référence QR choisi.

banana settings qrcode

Changer l'adresse de l'émetteur

  • Adresse payable à
    Le programme définit l'adresse de la personne qui reçoit le paiement en utilisant les données d'adresse dans les Propriétés fichier (à partir du menu Fichier). 
    Cependant, vous pouvez indiquer une autre adresse en remplissant les champs de la section Payable à.

 

Inclure / exclure de l'impression

  • Inclure des informations supplémentaires (nom XML de la colonne)

    Vous pouvez saisir des informations supplémentaires sur la facture à afficher sur le bulletin QR dans la section "Informations supplémentaires".

    Banana QR Invoice Additional Information

Dans la boîte de dialogue des paramètres de la facture → Section QR → Inclure des informations supplémentaires, saisissez le nom XML de la colonne utilisée d'où doivent provenir les informations supplémentaires.
Voir comment afficher les noms de colonnes XML.
Voir comment ajouter de nouvelles colonnes.

  • Facturation intégrée
    Dans le tableau Ecritures, ajouter une nouvelle colonne où les informations supplémentaires doivent être saisies, ou utiliser une colonne existante telle que la colonne Notes.

banana setting qrcode

  • Application Offres et Factures
    Dans le tableau Factures, ajouter une nouvelle colonne dans laquelle les informations supplémentaires doivent être saisies, par exemple Info.
    N'utiliser pas la colonne "Notes", car elle est utilisée pour afficher le texte final de la facture.

banana settings qrcode

  • Inclure les informations de facturation (facultatif).
    Ajouter des informations de facturation structurées générées automatiquement.
    S'ils sont présents, ils sont ajoutés après les informations complémentaires (voir point précédent).
  • Exclure l'adresse de facturation.
    Exclure l'adresse de facturation du client et laisser une case vide pour entrer l'adresse à la main.
  • Exclure le montant de la facture.
    Exclure le montant de la facture et laisser une case vide pour inscrire le montant à la main.
    A utiliser lorsque le client peut choisir le montant à payer.
    exclude amount from qr

Format d'impression de la section QR

  • QR sur une page séparée.
    Imprimer les sections de paiement et de réception de la QR-bill sur une page séparée.
    De cette façon, il y a plus de place pour la facture.
  • Impression de la bordure de séparation.
    Imprimer une bordure de séparation en pointillés pour séparer la facture des parties paiement et réception.
  • Imprimer le symbole des ciseaux.
    Imprime le symbole des ciseaux sur la bordure de séparation.
  • QR Position X et QR Position Y (facultatif).
    Modifie la position horizontale et verticale de la section QR Code - en général, vous n'avez pas besoin de modifier les valeurs par défaut.

Informations complémentaires

  • Les adresses qui apparaissent dans les sections de paiement et de réception doivent contenir:
    • Prénom et le nom ou raison sociale (la raison sociale est prioritaire si les deux sont définis).
    • Adresse.
    • Code postal et lieu.
    • Code du pays (inclus uniquement dans le code QR).
  • Le code pays est un code à deux caractères selon les spécifications de la norme ISO 3166-1 (es. CH, LI, AT, DE, IT, FR).

Informations techniques

Dans le code QR de la QR facture, les adresses de l'émetteur de la facture et du client sont toujours de type structuré (S). Le type définit la manière dont les données d'adresse sont représentées dans l'image du code QR.

L'impression de l'adresse sur la police QR, tant dans la section des reçus que dans celle des paiements, sera la même.

Détails de l’adresse structurée

Les lignes de l’adresse structurée dans le code QR sont composées comme suit :

PositionÉlémentInformations
Ligne 1nom de l'entreprise ou nom et prénom du client- obligatoire, maximum 70 caractères
Ligne 2rue / case postale- facultatif, maximum 70 caractères
- peut inclure le numéro si non indiqué à la ligne 3
Ligne 3numéro de rue- facultatif, maximum 16 caractères
- si non indiqué à la ligne 2
Ligne 4code postal- facultatif, maximum 16 caractères
Ligne 5ville- obligatoire, maximum 35 caractères
Ligne 6code pays- obligatoire, maximum deux caractères
- conforme à la norme ISO 3166-1

Les adresses du QR doivent toujours contenir le nom de l'organisation ou bienle prénom et le nom de famille.
Le nom de l'organisation a priorité sur le nom / nom de famille: s'il est présent alors le nom de l'organisation sera entré, sinon le nom / nom de famille sera entré.
La saisie des deux n'est pas possible car les lignes sont limitées et chaque ligne doit contenir des informations précises.

Dans l’impression de la facture, la structure des adresses est la suivante :

  • nom de l'organisation ou prénom / nom
  • Rue et numéro de maison
  • code postal et ville

Les adresses qui apparaissent dans la partie payante du QR sous les rubriques "payable à" et "payable par" suivent les règles du standard QR Suisse.
Il n'est pas possible d'ajouter des lignes ou de modifier la composition des adresses sur la partie paiement du QR de quelque manière que ce soit.

Adresse de l'émetteur

L’adresse de l’émetteur de la facture peut être définie de deux manières :

  • Depuis les propriétés du fichier
  • Depuis les paramètres de la facture
    • L'adresse est reprise des paramètres de la facture, section Code QR > Payable à.
    • Cochez la section Code QR > Payable à.
    • Saisir les données de l’adresse dans les champs appropriés ci-dessous.

      Adresse émetteur

Adresse Client

L’adresse du client de la facture est saisie dans le tableau Comptes (facturation intégrée) ou dans le tableau Contacts (application Offres et Factures).

Le numéro de rue peut être inséré soit dans la colonne Rue, soit dans la colonne Numéro de Rue. Les deux options sont correctes.

La colonne Numéro de Rue accepte tout caractère jusqu'à un maximum de 16 caractères :

La colonne Rue accepte tout caractère jusqu'à un maximum de 70 caractères :

 

Imprimer et envoyer en format papier

La QR facture peut être imprimée et envoyée en format papier. Pour ce faire, il faut utiliser une feuille de papier blanc spécialement perforée.

Tester le code QR

Les PDF de factures avec codes QR peuvent être testés avec le site officiel de validation, comme décrit ci-dessous :

Si le code est correct, la page affiche le contenu du code QR. En revanche, en cas de problème, celui-ci s'affiche en rouge.

Si aucun message rouge ne s'affiche, le QR est considéré comme correct (voir l'exemple ci-dessous).

test QR-Code Banana

Facture QR en utilisant le compte habituelle IBAN

Avec la facture QR, vous pouvez utiliser votre compte IBAN normal pour recevoir des paiements de factures, que vous verrez apparaître sur votre relevé bancaire avec tous les autres mouvements.
Vous pouvez l'utiliser pour des paiements en CHF ou en EUR, en Suisse ou même dans toute l'Europe.

Le bulletin QR avec l'IBAN et la référence se présente comme suit: 

 

 

Importation des données de paiement

Les données relatives au paiement des factures sont contenues, avec tous les autres mouvements, dans votre compte IBAN.

  • Le format numérique de l'extrait de compte est camt.053.
  • L'extension de l'Extrait de compte Camt ISO 20022 (Suisse) décode la référence du créancier et complète l'entrée avec le compte client et le numéro de la facture.
  • Vous pouvez consulter les factures payées et les factures en suspens ou partiellement payées à partir du relevé de factures ouvert.

 

Introduire le numéro de compte IBAN

  La première fois que vous imprimez les factures, vous devez indiquer votre compte IBAN.

  • L'IBAN pour un compte en devise CHF.
    • Il est repris automatiquement à partir des données de base : Fichier > Propriétés fichier (Données de base) > Adresse. Champ IBAN/Compte bancaire.
    • S'il n'est pas défini dans les données de base, l'IBAN provient des paramètres de la facture, section Code QR > SCOR/NON > IBAN.
    • Si l'IBAN est saisi à la fois dans les propriétés du fichier et dans les paramètres de la facture, l'IBAN saisi dans les paramètres de la facture sera utilisé.
  • L'IBAN pour un compte EUR.

Paramètres du type et IBAN.

  • Accédez à la boîte de dialogue Paramètres de la facture, section Code QR.
  • Assurez-vous que SCOR est sélectionné dans le Type de référence QR.
  • Sous SCOR/NON, saisissez l'IBAN du compte sur lequel vous souhaitez recevoir des paiements.
    Vous pouvez utiliser le champ IBAN par défaut ou le champ IBAN EUR. 

banana settings qrcode

L'IBAN est le numéro de compte sur lequel les paiements seront versés.

  • Il a le format suivant:
    • CHXX 0900 0XXX XXXX XXXX X
      Il commence avec "CH" s'il s'agit d'un compte suisse.
    • LIXX 0900 0XXX XXXX XXXX X
      ll commence avec "LI" s'il s'agit d'un compte du Liechtenstein
  • La longueur est de 21 caractères.
  • L'IBAN est obligatoire et est fourni par la banque.

Référence (Creditor Reference)

Contient le numéro de compte du client et le numéro de facture et sert à automatiser l'enregistrement des paiements de factures.

  • Le Structured Creditor Reference (SCOR) suit la norme ISO 11649, qui permet d'utiliser la facture QR dans les opérations de paiement internationales et européennes (SEPA).
  • Le Creditor Reference est automatiquement générée en utilisant le numéro de client et le numéro de facture.
  • Est dans le format RFXX XXXX XXXX XXXX:
  • Le Creditor Reference est une chaîne alphanumérique de 25 caractères maximum qui commence par les lettres "RF".

Le programme établit automatiquement la référence de cette manière :

  • Les lettres initiales "RF" (1).
  • Après les lettres, il y a deux chiffres de contrôle (calculés selon les spécifications standard) (1).
  • Suivi du numéro de compte du client du plan comptable, qui reçoit la facture (2).
    • Le premier caractère numérique indique la longueur du compte (minimum 1, maximum 7).
    • Le reste est l'identifiant de compte du plan comptable.
      Seuls les chiffres ou les lettres de l'alphabet ASCII (A-Z) peuvent être utilisé.  Il ne doit pas y avoir d'espaces, de séparateurs ou d'autres caractères. Ceux-ci seront supprimés.
    • Si le numéro de client n'est pas présent, un "0" est indiqué.
  • Le numéro de la facture (3).
    • Le premier caractère numérique indique la longueur du compte (minimum 1, maximum 7).
    • Seuls les chiffres ou les lettres de l'alphabet ASCII (A-Z) peuvent être utilisé, pour une longueur maximale de 7 caractères. Il ne doit pas y avoir d'espaces, de séparateurs ou d'autres caractères. Ceux-ci seront supprimés. Il est donc possible que le programme ne soit pas en mesure d'effectuer le rapprochement lors de l'importation des données de paiement.
    • Si le numéro de client n'est pas présent, un "0" est indiqué.

Facture QR avec IBAN et numéro de Référence (Creditor Reference)

La section QR contiendra toutes les données nécessaires au paiement :

  • Le compte IBAN qui recevra le paiement et le nom et l'adresse du titulaire du compte.
  • Le numéro de référence, avec le numéro de client et de facture (voir ci-dessous).
  • L'adresse du client.
  • Peut être utilisé pour des montants en CHF ou en EUR.
stampa fattura anteprima stampa fattura passo 1 

IBAN

Elle doit être saisie soit dans les données de base Fichier > Propriétés fichier (Données de base) > Adresse, soit dans le champ approprié de la boîte de dialogue des paramètres de la facture.

stampa fatture passo 2 

Référence

Est générée automatiquement à partir du numéro de client et du numéro de facture.

 

Facture QR avec IBAN, référence et sans montant

La facture sans montant est utilisée lorsque vous souhaitez laisser le client choisir le montant à payer.
Il contient le numéro de référence du client, de sorte que vous pouvez attribuer les montants au client spécifique et ensuite clôturer automatiquement les factures encore ouvertes.
Une case vide est laissée dans les impressions pour le montant à remplir. Il sert à :

  • Pour les dons dont le montant est librement décidé par le donateur.
  • Pour les associations où le donateur peut choisir différents montants.
  • Pour des paiements divers, toujours spécifiques à un même client.
  • Vous pouvez indiquer les montants en CHF et EUR.
stampa fattura anteprima stampa fattura passo 1 

IBAN

Elle doit être saisie soit dans les données de base Fichier > Propriétés fichier (Données de base) > Adresse, soit dans le champ approprié de la boîte de dialogue des paramètres de la facture.

stampa fatture passo 2 

Référence

Est générée automatiquement à partir du numéro de client et du numéro de facture.

stampa fatture passo 3 

Sans montant

Dans la section Code QR de la boîte de dialogue des paramètres de la facture, l'option Exclure le montant de la facture doit être sélectionnée.

L'impression sans montant ne doit pas être confondue avec la facture à montant zéro. Si le montant est nul, cela signifie que le client n'a rien à payer, il y a donc un avis sur la police qui indique que la police ne doit pas être utilisée.

Facture QR avec IBAN et sans Référence

Ce mode est utilisé dans le cas où vous souhaitez imprimer des bulletins sans numéro de facture et sans numéro de client.
Il ne peut donc pas être utilisé pour enregistrer automatiquement les paiements.

Pour la zone de paiement en CHF (CH/FL), sans référence. Remplace l'actuel bulletin de versement rouge BVR

stampa fattura anteprima stampa fattura passo 1 

IBAN

Elle doit être saisie soit dans les données de base Fichier > Propriétés fichier (Données de base) > Adresse, soit dans le champ approprié de la boîte de dialogue des paramètres de la facture.

  


 

 

 

 

  • Motif du paiement : il n'est pas possible de saisir manuellement le motif du paiement dans la facture QR, celle-ci doit toujours être imprimée avec le code QR.

Insérez vos données:

  • Allez vers le dialogue de paramétrage de la facture
  • Allez à la section Code QR et remplissez les champs suivants.
    • Dans la liste Type de référence QR, sélectionnez NON.
    • Sous la rubrique SCOR/NON insérez l'IBAN.

banana settings qrcode

 

Facture QR utilisant un compte spécial QR-IBAN (compatible avec les BVR)

Le système de facturation avec QR-IBAN est destiné à ceux qui souhaitent disposer d'un système de facturation et de saisie des paiements compatible avec les bulletins de versement orange (BVR) et rouge (BV) du système BVR.

  • Votre banque doit vous donner un numéro de compte QR-IBAN.
    Le numéro IBAN à partir du numéro 5 commence par 3.
  • Dans votre extrait de compte numérique (camt053), vous ne disposez que des données récapitulatives quotidiennes.
  • Pour enregistrer les paiements, vous devez télécharger le fichier de paiement (Camt054).

Introduire le numéro de compte QR-IBAN

Le compte QR-IBAN est repris des paramètres de la facture QR.

Pour utiliser cette variante de facture QR, allez dans la fenêtre de dialogue des paramètres de la facture et saisissez vos données.

  • Allez vers le dialogue de paramétrage de la facture
  • Activez Imprimer QR Code.
  • Dans la liste Type de référence QR, sélectionnez QRR.
  • Sous QRR insérez:
    • Ie QR-IBAN
    • Le Numéro d'adhésion
      Si disponible, il vient communiqué par votre banque.
      Pour  Postfinance laisser vide.

banana settings qrcode

Facture QR avec QR-IBAN

Il remplace l'actuel bulletin de versement orange BVR et est limité à la zone de paiement en CHF (CH/FL).

stampa fattura anteprima 

stampa fattura passo 1

 

QR-IBAN

Doit être saisi dans le champ approprié du dialogue de paramétrage de la facture.

stampa fatture passo 2

 

Référence QR

Elle est générée à l'aide du numéro d'adhésion (si il existe), du numéro de client et du numéro de facture.

Compte QR-IBAN

  • CHXX 3000 0XXX XXXX XXXX X
  • Le QR-IBAN est obligatoire et est fourni par la banque.
  • Le QR-IBAN contient un code spécial qui sert à identifier l'institution financière (IID-QR). Des numéros allant de 30000 à 31999 sont réservés à ce code.

Référence QR (QRR)

Contient les données qui vous permettent d'identifier avec précision la facture qui a été payée. Le QRR est repris au moment du paiement, de sorte que le programme peut automatiquement compléter l'enregistrement de la facture qui a été payée.

  • XX XXXXX XXXXX XXXXX XXXXX XXXXX
  • La référence QR est obligatoire.
  • La référence QR est structurée de la même manière que la référence BVR (27 caractères numériques)

Le programme établit automatiquement la référence de cette manière :

  • Le numéro d'adhésion (1)
    • La longueur maximale autorisée est de 8 chiffres.
    • Le numéro saisi dans les paramètres de la facture est repris.
    • S'il n'existe pas, des zéros sont inscrits.
  • Suivent 3 chiffres, toujours "000" (4).
  • Le numéro de client (2).
    • La longueur maximale autorisée est de 7 chiffres.
    • Peut être composé seulement de chiffres. Il ne doit pas contenir des lettres de l'alphabet ASCII (A-Z), d'espaces, de séparateurs ou d'autres caractères
    • Il est aligné sur la droite avec des zéros devant.
  • Numéro de facture (3).
    • La longueur maximale autorisée est de 7 chiffres.
    • Peut être composé seulement de chiffres. Il ne doit pas contenir des lettres de l'alphabet ASCII (A-Z), d'espaces, de séparateurs ou d'autres caractères
    • Il est aligné sur la droite avec des zéros devant.
  • L'avant-dernier chiffre est toujours un "0" (5).
  • Le dernier chiffre est le chiffre de contrôle (calculé selon des spécifications standard) (5).

Importation données de paiement

Avec l'extension Extrait de compte Camt ISO 20022 (Suisse), vous pouvez importer et convertir des mouvements d'extrait de compte en mouvements comptables.

Les données des factures émises avec le QR-IBAN sont fournies dans un fichier au format camt054.
Dans l'extrait de compte normal (camt053), il y a seulement la somme de tous les paiements de la journée.

 

Personnalisation avancée des factures

Les fonctions de personnalisation avancées suivantes nécessitent le plan Banana Comptabilité Plus Advanced.

Personnalisation avancée de la mise en page (avec programmation)

Le layout du CH10 peut être personnalisé par une programmation spécifique.

  • Programmation en Javascript (documentation en anglais)
    • Vous pouvez personnaliser davantage votre impression en créant des fonctions qui remplacent les fonctions par défaut, pour l'impression de l'en-tête, des adresses, des détails, du texte et du pied de page.
  • Création de styles CSS (documentation en anglais)
    • Vous pouvez adapter encore davantage votre impression en créant vos propres styles afin de modifier l'apparence de votre facture (mise en forme du texte, positionnement des éléments, etc.).

Créer vos propre layout d'impression

Invoice customisation with JavaScript

The Banana invoice is constructed with a Javascript program. The Extension also allows you to add Javascript programming so that you can completely customize the content and format of the invoice (this functionality requires the Advanced plan).

See more about Banana Accounting API Extensions Reference.

Add your custom Javascript file

Three steps are required to define and use your Javascript file:

  1. Add the document table to the Banana Accounting file.
    If it is not already present you need to add the Documents table in the Banana document with the menu command Tools > Add new features > Add document table.
  2. Add a new Javascript type document to the document table.
    1. In the ID column enter the file name including the extension .js (e.g. "myFile.js").
      If the id is missing the ".js" at the end, it won't work.
    2. In the Description column enter a comment (optional).
    3. In the Attachments column, double click on the cell or select the edit symbol, then select Javascript Code and confirm with OK.
    4. An editor will open in which you can write the code.
    5. Delete everything in it.
    6. Insert the Javascript code. You can modify the content at any time.

      invoice custom javascript
      Documents table - Javascript Code attachment
       
  3. Tell the invoice layout to use the customized Javascript attachment file.
    1. Select Settings of the Print invoices dialogue.
    2. In the Javascript/CSS > JS file name, enter the name of the newly created Javascript attachment file with the extension ".js" at the end (e.g. "myFile.js").
    3. Click Ok to confirm.

      dialog_settings_javascript
      Settings Dialogue - Javascript File Property

 

Javascript Hook Replacement Functions

The invoice layout is created with a set of predefined Javascript functions.

The hook functions are Javascript replacements functions to be used instead of the the predefined.

The hook functions should be defined in the ".js" file of the Documents table.

  • The name of the hook function is the name of the predefined function used in the layout, preceded by the text "hook_".
    For example, if you want to change the header printing you have to define the hook_print_header() that will replace the predefined print_header() function.
    • The parameters must be the same as those used in the main function.
    • If you create your own hook function, it is necessary to know how it works the function you want to replaces.
  • When generating the invoice, the layout extension checks for the existence of a hook replacement function and, if available, utilizes it to substitute the predefined function.
  • Hook functions let you selectively change some part of how the invoice is build, without directly modifying the original script of the invoice Layout.

 

Graphic explanation of the Hook functions

With the hook functions, you can customize the following sections of the invoice.

qr invoice javascript functions

 

(1) hook_print_header()

Function that prints the header part of the invoice (logo and texts).

(2) hook_print_info_first_page() and hook_print_info_other_pages()

Functions that print the information parts of the invoice.

(3) hook_print_customer_address()

Function that prints the customer address part of the invoice.

(4) hook_print_shipping_address()

Function that prints the shipping address part of the invoice (in case it exists).

(5) hook_print_text_begin()

Function that prints the title and begin text parts of the invoice.

(6) hook_print_details_net_amounts() and hook_print_details_gross_amounts()

Functions that print the invoice details using net/gross amounts.
Use the hook_formatItemsValue() function to change the format and style of the items.

(7) hook_print_final_texts()

Function that prints the final texts, notes and greetings parts of the invoice, right after the invoice details.

(8) hook_print_footer()

Function that prints the footer at the bottom of the page (usable only when not printing the QR slip).

Invoice Layout Hook Functions Reference

This document provides a reference for all available invoice layout hook functions, including their exact names, the required parameters in the correct order, and detailed descriptions of each parameter’s purpose, and example usage. The empty function bodies should be replaced with your own implementation.

Rules:

  • You must use the exact function name listed.
  • Parameters must be passed in exact order shown.
  • You cannot add, remove, or rename parameters.
  • All parameters are required.

List of available invoice layout hook functions:

/**
 * Sets or updates all variables used by the invoice layout script.
 * @param {Object} variables - MUTABLE object containing layout variables (colors, fonts, decimals, margins).
 * @param {Object} userParam - User parameters that may override or extend the variables.
 * @returns {void}
 */
function hook_set_variables(variables, userParam) {...}

/**
 * Prints the header at the top of the page (logo, company name, address).
 * @param {Object} repDocObj   - Document object for output.
 * @param {Object} userParam   - User parameters that include affecting header content and style.
 * @param {Object} repStyleObj - Document CSS style object.
 * @param {Object} invoiceObj  - Invoice data (issuer, customer, logo, etc.).
 * @param {Object} texts       - Localized labels and strings (e.g., "Address", "Phone").
 * @returns {void}
 */
function hook_print_header(repDocObj, userParam, repStyleObj, invoiceObj, texts) {...}

/**
 * Prints invoice information on the first page (invoice number, date, terms, references).
 * @param {Object} repDocObj  - Document object for output.
 * @param {Object} invoiceObj - Invoice data (number, dates, payment terms, etc.).
 * @param {Object} texts      - Localized labels for displayed fields.
 * @param {Object} userParam  - User parameters that include affecting information content for page 1.
 * @returns {void}
 */
function hook_print_info_first_page(repDocObj, invoiceObj, texts, userParam) {...}

/**
 * Prints invoice information from page 2 onwards (invoice number, date, terms, references).
 * @param {Object} repDocObj  - Document object for output.
 * @param {Object} invoiceObj - Invoice data (number, dates, payment terms, etc.).
 * @param {Object} texts      - Localized labels for displayed fields.
 * @param {Object} userParam  - User parameters that include affecting information content for page > 1.
 * @returns {void}
 */
function hook_print_info_other_pages(repDocObj, invoiceObj, texts, userParam) {...}

/**
 * Prints the customer's billing address.
 * @param {Object} repDocObj  - Document object for output.
 * @param {Object} invoiceObj - Invoice data with customer information (name, street, ZIP, city, country).
 * @param {Object} userParam  - User parameters that include affecting customer address content and style.
 * @returns {void}
 */
function hook_print_customer_address(repDocObj, invoiceObj, userParam) {...}

/**
 * Prints the shipping address.
 * @param {Object} repDocObj  - Document object for output.
 * @param {Object} invoiceObj - Invoice data with shipping information (recipient, address).
 * @param {Object} texts      - Localized labels (e.g., "Ship to").
 * @param {Object} userParam  - User parameters that include affecting shipping address content visibility.
 * @returns {void}
 */
function hook_print_shipping_address(repDocObj, invoiceObj, texts, userParam) {...}

/**
 * Prints the introductory block before the invoice details (title, opening text).
 * @param {Object} repDocObj  - Document object for output.
 * @param {Object} invoiceObj - Invoice data with begin text.
 * @param {Object} texts      - Localized titles and messages (e.g., "Invoice").
 * @param {Object} userParam  - User parameters that include affecting text begin content.
 * @returns {void}
 */
function hook_print_text_begin(repDocObj, invoiceObj, texts, userParam) {...}

/**
 * Prints the details table using NET amounts (VAT excluded).
 * @param {Object} banDoc       - Accounting/data source (for calculations or lookups).
 * @param {Object} repDocObj    - Document object for output.
 * @param {Object} invoiceObj   - Invoice data (currency, items, amounts, VAT, totals, etc.).
 * @param {Object} texts        - Column labels and strings (Qty, Price, VAT, Total, etc.).
 * @param {Object} userParam    - User parameters that include affecting invoice details content and style.
 * @param {Array|Object} detailsTable - Rows/structure of the table (items, quantities, prices).
 * @param {Object} variables    - Calculated layout variables (column widths, CSS classes, partial totals).
 * @returns {void}
 */
function hook_print_details_net_amounts(banDoc, repDocObj, invoiceObj, texts, userParam, detailsTable, variables) {...}

/**
 * Prints the details table using GROSS amounts (VAT included).
 * @param {Object} banDoc       - Accounting/data source (for calculations or lookups).
 * @param {Object} repDocObj    - Document object for output.
 * @param {Object} invoiceObj   - Invoice data (currency, items, amounts, VAT, totals, etc.).
 * @param {Object} texts        - Column labels and strings (Qty, Price, VAT, Total, etc.).
 * @param {Object} userParam    - User parameters that include affecting invoice details content and style.
 * @param {Array|Object} detailsTable - Rows/structure of the table (items, quantities, prices).
 * @param {Object} variables    - Calculated layout variables (column widths, CSS classes, partial totals).
 * @returns {void}
 */
function hook_print_details_gross_amounts(banDoc, repDocObj, invoiceObj, texts, userParam, detailsTable, variables) {...}

/**
 * Prints the final texts (notes, terms, thanks) after the details table.
 * @param {Object} repDocObj  - Document object for output.
 * @param {Object} invoiceObj - Invoice data with final texts.
 * @param {Object} userParam  - User parameters that include affecting final texts content and style.
 * @returns {void}
 */
function hook_print_final_texts(repDocObj, invoiceObj, userParam) {...}

/**
 * Prints the footer at the bottom of the page. Use only when NOT printing the QR slip section.
 * @param {Object} repDocObj - Document object for output.
 * @param {Object} texts     - Localized labels and strings.
 * @param {Object} userParam - User parameters that include affecting footer content and style.
 * @returns {void}
 */
function hook_print_footer(repDocObj, texts, userParam) {...}

/**
 * Formats the value and sets the CSS className of the item.
 * @param {*} value           - Original cell value (number, string, date).
 * @param {Object} variables  - Layout/context variables for formatting rules.
 * @param {string} columnName - Column name (for column-specific rules).
 * @param {string} className  - Initial className that can be changed.
 * @param {Object} item       - The current row/item object (for data-dependent rules).
 * @returns {Object}          - Return the formatted value and className.
 */
function hook_formatItemsValue(value, variables, columnName, className, item) {...}

/**
 * Allows modification of QR code settings (fields and formatting) before printing.
 * @param {Object} invoiceObj - Invoice data relevant to payment/QR.
 * @param {Object} qrcodeData - QR settings object to read/overwrite (IBAN, amount, reference).
 * @returns {void}
 */
function hook_modify_settings_qr(invoiceObj, qrcodeData) {...}

 

Examples of a hook functions 

Within your hook function you can call the original hook function. This way you can limit the changes to the code.
For example this hook function call the original one, only in a specific case.

/** 
 * This function prints the final text only for INVOICES and not for CREDIT NOTES.
 * Invoices = DocType 10
 * Credit notes = DocType 12
 */
function hook_print_final_texts(sectionClassFinalTexts, invoiceObj, userParam) {
   // We can check the DocType and print the text only when is not 12
   if (invoiceObj.document_info.doc_type !== "12") {
      print_final_texts(sectionClassFinalTexts, invoiceObj, userParam);
   }
}

 

Predefined variables

The predefined variables are the default used by the invoice layout script.

The variables for decimals start with "decimals_". (decimals_quantity, decimals_unit_price, decimals_amounts).

The variable that start with "$" are template variable that you can use in the CSS styles ($font_family, $font_size, $text_color, ...).
Example of an extract of the predefined CSS invoice layout.

body {
  font-family: $font_family;
  font-size: $font_size;
  color: $text_color;
}


List of all predefined variables and their default values that you can override with the hook_set_variables() function:

/* Variable that sets the decimals of the Quantity column */
variables.decimals_quantity = "";
/* Variable that sets the decimals of the Unit Price column */
variables.decimals_unit_price = 2;
/* Variable that sets the decimals of the Amount column */
variables.decimals_amounts = 2;
/* Variables that set the colors */
variables.$text_color = userParam.text_color;
variables.$background_color_details_header = userParam.background_color_details_header;
variables.$text_color_details_header = userParam.text_color_details_header;
variables.$background_color_alternate_lines = userParam.background_color_alternate_lines;
variables.$color_title_total = userParam.color_title_total;
/* Variables that set the font */
variables.$font_family = userParam.font_family;
variables.$font_size = userParam.font_size+"pt";
/* Variables that set the font size and margins of the Invoice Begin Text */
variables.$font_size_title = userParam.font_size*1.4 +"pt";
/* Variables that set font size, margins, padding and borders of the Invoice Details */
variables.$font_size_header = userParam.font_size*1.2 +"pt";
variables.$font_size_total = userParam.font_size*1.2 +"pt";
/* Variables that set the position of the invoice address
 * Default margins when the address on right: 12.3cm margin left, 4.5cm margin top
 * Default margins when the address on left: 2.2cm margin left, 5.5cm margin top
 * Sum userParam dX and dY adjustments to default values */
variables.$right_address_margin_left = parseFloat(12.3) + parseFloat(userParam.address_position_dX)+"cm";
variables.$right_address_margin_top = parseFloat(4.5) + parseFloat(userParam.address_position_dY)+"cm";
variables.$left_address_margin_left = parseFloat(2.2) + parseFloat(userParam.address_position_dX)+"cm";
variables.$left_address_margin_top = parseFloat(5.5) + parseFloat(userParam.address_position_dY)+"cm"; 

 

Example of 'hook_set_variables' function

You can overwrite the predefined variable with the hook_set_variables() function. 
Only use the variable that you want to replace. 

// Example of hook function usage that sets
// the decimals of the Amounts columns to 4
// the font type to Times New Roman
function hook_set_variables(variables, userParam) {
   variables.decimals_amounts = 4;
   variables.$font_family = "Times New Roman";
}

 

 

Customize invoice print with Javascript

The following examples show how to adapt invoice printing with custom JavaScript hook function codes.

See Javascript customization for more information.

Add the final text on a new page

This example shows how to add the final text on a new page of the invoice.

/**
 * This function prints the final text on a new page of the invoice.
 */
function hook_print_final_texts(repDocObj, invoiceObj, userParam) {
   // Adds a page break before printing the final text
   repDocObj.addPageBreak();
   print_final_texts(repDocObj, invoiceObj, userParam);
}

Credit Notes without final text

Final text, notes and greetings are always printed, when defined, for both invoices and credit notes document types.
You can define a document type with the Type column of the Transactions table:

  • For credit notes insert the value 12.
  • For invoices insert the value 10.

In this example we want to make sure that all these texts are printed only for invoices but not for credit notes.

To do that, we simply define an hook function that replaces the default print_final_texts() function.

/** 
 * This function prints the final text only for INVOICES and not for CREDIT NOTES.
 * Invoices = DocType 10
 * Credit notes = DocType 12
 */
function hook_print_final_texts(repDocObj, invoiceObj, userParam) {
   // We can check the DocType and print the text only when is not 12
   if (invoiceObj.document_info.doc_type !== "12") {
      print_final_texts(repDocObj, invoiceObj, userParam);
   }
}

With this change the final text, notes and greetings are now printed only for invoices, and not for credit notes anymore.

Add information "Invoice paid" to the final text

This example shows how to add the information "Invoice paid" to the final text, when the invoice is paid.

/** 
 * This function prints the text "Invoice paid" on paid invoices.
 */
function hook_print_final_texts(repDocObj, invoiceObj, userParam) {
   if (invoiceObj.payment_info && invoiceObj.payment_info.payment_date) { 
      var paragraph = repDocObj.addParagraph("","final_texts");
      paragraph.addText("Invoice paid on " + Banana.Converter.toLocaleDateFormat(invoiceObj.payment_info.payment_date));
      // [Optionally] Add a signature
      repDocObj.addImage("documents:sign.jpg", "6cm", "auto");
   }
}

Add a custom table as final text

This example shows how to add a custom table in the final texts of the invoice.
The table consists of 2 columns and three rows:

  • Row 1: the header of the table. Contains the titles of the columns (Description and Amount).
  • Row 2: the first data row of the table.
  • Row 3: the second data row of the table.

To do that, we simply define an hook function that replaces the default print_final_texts() function.

/** 
 * This function adds at the end of the invoice a table with a custom text.
 */
function hook_print_final_texts(repDocObj, invoiceObj, userParam) {
   print_final_texts(repDocObj, invoiceObj, userParam);
   // Add a table
   var mytable = repDocObj.addTable("MyTable");
   var tableRow;
   
   // Row 1: the header of the table, columns titles
   var header = mytable.getHeader();
   tableRow = header.addRow();
   tableRow.addCell("Description").setStyleAttributes("text-align:left; font-weight:bold; border:thin solid black;");
   tableRow.addCell("Amount").setStyleAttributes("text-align:left; font-weight:bold; border:thin solid black;");
   // Row 2: first data row of the table
   tableRow = mytable.addRow();
   tableRow.addCell("Workshop").setStyleAttributes("text-align:left; border:thin solid black;");
   tableRow.addCell("2'600.00").setStyleAttributes("text-align:right; border:thin solid black;");
   // Row 3: second data row of the table
   tableRow = mytable.addRow();
   tableRow.addCell("Material").setStyleAttributes("text-align:left; border:thin solid black;");
   tableRow.addCell("76.00").setStyleAttributes("text-align:right; border:thin solid black;");
   
   //...
}

You can easily add as many columns and rows as you like.

Use the setStyleAttributes() to apply CSS styles, like text-align, font-weight, color, border, ... Find more information on Syntax of a CSS stylesheet.

Find more examples in Working with Report Tables.

Example print:
javascript invoice customization

Add a custom table as final text with bank details

This example shows how to add a custom table in the final texts of the invoice with the bank details for the payment.
The table consists of 2 columns and 6 rows:

  • Row 1: for the beneficiary data.
  • Row 2-3-4: for the bank name and address.
  • Row 5: for the IBAN code.
  • Row 6: for the Swift code.

To do that, we simply define an hook function that replaces the default print_final_texts() function.

/** 
 * This function adds at the end of the invoice a table with bank detais for the payment.
 */
function hook_print_final_texts(repDocObj, invoiceObj, userParam) {
   print_final_texts(repDocObj, invoiceObj, userParam);
   // Add a table
   var mytable = repDocObj.addTable("MyTable");
   var tableRow;
   // Row 1
   tableRow = mytable.addRow();
   tableRow.addCell("Beneficiary:").setStyleAttributes("text-align:left;padding-left:1px;");
   tableRow.addCell("BENEFICIARY NAME, ADDRESS, ZIP LOCALITY, COUNTRY").setStyleAttributes("text-align:left;padding-left:1px;");
   
   // Row 2
   tableRow = mytable.addRow();
   tableRow.addCell("Bank: ").setStyleAttributes("text-align:left;padding-left:1px;");
   tableRow.addCell("BANK NAME").setStyleAttributes("text-align:left;padding-left:1px;");
   // Row 3
   tableRow = mytable.addRow();
   tableRow.addCell("").setStyleAttributes("text-align:left;padding-left:1px;");
   tableRow.addCell("ADDRESS").setStyleAttributes("text-align:left;padding-left:1px;");
   // Row 4
   tableRow = mytable.addRow();
   tableRow.addCell("").setStyleAttributes("text-align:left;padding-left:1px;");
   tableRow.addCell("ZIP LOCALITY").setStyleAttributes("text-align:left;padding-left:1px;");
   // Row 5
   tableRow = mytable.addRow();
   tableRow.addCell("IBAN: ").setStyleAttributes("text-align:left;padding-left:1px;");
   tableRow.addCell("CHXX XXXX XXXX XXXX XXXX X").setStyleAttributes("text-align:left;padding-left:1px;");
   // Row 6
   tableRow = mytable.addRow();
   tableRow.addCell("Swift:").setStyleAttributes("text-align:left;padding-left:1px;");
   tableRow.addCell("AAAABBCCXXX").setStyleAttributes("text-align:left;padding-left:1px;");
   
   //...
}

You can easily add as many columns and rows as you like.

Use the setStyleAttributes() to apply CSS styles, like text-align, font-weight, color, border, ... Find more information on Syntax of a CSS stylesheet.

Example print:
javascript invoice customization

Add a custom table with text translation

This example shows how to add a custom table in the final texts of the invoice with text translations for different languages.
The table consists of 2 columns and three rows:

  • Row 1: the header of the table. Contains the titles of the columns (Description and Amount).
  • Row 2: the first data row of the table.
  • Row 3: the second data row of the table.

To do that, we simply define an hook function that replaces the default print_final_texts() function.

/** 
 * This function adds at the end of the invoice a table with a custom text.
 * The text is translated in different languages.
 * We use the text in the language of the invoice.
 */
function hook_print_final_texts(repDocObj, invoiceObj, userParam) {
   // Define the texts for all languages you need (en, de, fr, it, nl, pt, zh, es, ...)
   // Check the language of the invoice to use the appropriate text translation
   if (lang === "de") {
      var text1 = "Beschreibung";
      var text2 = "Betrag";
      var text3 = "Werkstatt";
      var text4 = "2'600.00";
      var text5 = "Material";
      var text6 = "76.00";
   }
   else if (lang === "it") {
      var text1 = "Descrizione";
      var text2 = "Importo";
      var text3 = "Officina";
      var text4 = "2'600.00";
      var text5 = "Materiale";
      var text6 = "76.00";
   }
   else {
      var text1 = "Description";
      var text2 = "Amount";
      var text3 = "Workshop";
      var text4 = "2'600.00";
      var text5 = "Material";
      var text6 = "76.00";
   }
   // Add a table
   var mytable = repDocObj.addTable("MyTable");
   var tableRow;
   
   // Row 1: the header of the table, columns titles
   var header = mytable.getHeader();
   tableRow = header.addRow();
   tableRow.addCell(text1).setStyleAttributes("text-align:left; font-weight:bold; border:thin solid black;");
   tableRow.addCell(text2).setStyleAttributes("text-align:left; font-weight:bold; border:thin solid black;");
   // Row 2: first data row of the table
   tableRow = mytable.addRow();
   tableRow.addCell(text3).setStyleAttributes("text-align:left; border:thin solid black;");
   tableRow.addCell(text4).setStyleAttributes("text-align:right; border:thin solid black;");
   // Row 3: second data row of the table
   tableRow = mytable.addRow();
   tableRow.addCell(text5).setStyleAttributes("text-align:left; border:thin solid black;");
   tableRow.addCell(text6).setStyleAttributes("text-align:right; border:thin solid black;");
}

You can easily add as many columns and rows as you like.

Use the setStyleAttributes() to apply CSS styles, like text-align, font-weight, color, border, ... Find more information on Syntax of a CSS stylesheet.

Find more examples in Working with Report Tables.

 

Use a very long begin text

When you insert a begin text between the title and details of the invoice, the text is usually quite short. The printing of the invoice is designed for a begin text that is not too long. However, if the text you want to insert is very long (for example, even a page or more), it may not be printed correctly on the invoice, and some parts may be missing. To solve this problem, it is necessary to adapt the part of the script that deals with printing the begin text.

In the example below, we define the hook_print_text_begin() function that replaces the default print_text_begin() function. This function allows to print very long begin texts. While the original function adds all the text in one table cell (and when it gets too big it can cause problems), this version instead adds one row to the table for each row of text (a side effect is that the space between rows increases slightly).

function hook_print_text_begin(repDocObj, invoiceObj, texts, userParam) {
  var textTitle = getTitle(invoiceObj, texts, userParam);
  var textBegin = invoiceObj.document_info.text_begin || 
                    (invoiceObj.document_info.doc_type === "17" ? userParam[lang+'_text_begin_offer'] : userParam[lang+'_text_begin']) || 
                    '';
  var table = repDocObj.addTable("begin_text_table");
  if (textTitle) {
    var titleCell = table.addRow().addCell("", "", 1);
    titleCell.addParagraph(textTitle.replace(/<DocInvoice>/g, invoiceObj.document_info.number.trim()), "title_text");
  }
  var textBeginLines = textBegin.split('\n');
  textBeginLines.forEach(line => {
    var textCell = table.addRow().addCell("", "begin_text", 1);
    addMdBoldText(textCell, columnNamesToValues(invoiceObj, line.trim() || " "));
  });
}

 

Use different long begin texts

This example allows you to define and use different begin texts in order to customize the estimates and invoices.

You can define your begin texts using the Documents table:

  • First you must define the hook function that replaces the default print_text_begin().
    • In the ID column enter the name of the javascript file with the extension .js at the end (e.g., "myFile.js").
    • In the Attachments column, double click on the cell or select the edit symbol, then select Javascript Code and confirm with OK.
    • Copy and paste the Javascript code included below.
    • In the invoice layout settings, at the bottom, section JS file name (column ID in the document table), enter the id name of the javascript file from the Documents table (e.g., "myFile.js").
  • Next you can create the documents you want to include.
    • To include a normal text file
      • In the ID column enter a name as you want.
      • In the Attachments column, select text/plain type. An editor will open in which you can write your text.
    • To include a markdown file
      • In the ID column enter the name of the file with the extension .md at the end (e.g., "file2.md").
      • In the Attachments column, select text/markdown type. An editor will open in which you can write your text.
    • To include an html file
      • In the ID column enter the name of the file with the extension .html at the end (e.g., "file3.html").
      • In the Attachments column, select text/html type. An editor will open in which you can write your text.

To use your texts when creating the estimate or invoice:

  • In the Begin Text field of the estimate/invoice, on a new line enter the text "{{include document:<file>}}" where "<file>" is the ID of the attachment text defined in Documents table (e.g., "{{include document:file1}}", "{{include document:file2.md}}", "{{include document:file3.html}}").

You can add a page break somewhere in the text:

  • In the Begin Text field of the estimate/invoice, on a new line enter the "{{page-break}}" text.

Here are some examples:

  • Example 1: Include the content of the file1 defined in Documents table and a page break right after. In the Begin Text field of the estimate/invoice enter the following text:
    {{include document:file1}}
    {{page-break}}
  • Example 2: Include the content of the file1 defined in Documents table, then add a page break, then include the content of the file2 defined in Documents table, then add a page break, then include the content of the file3 defined in Documents table, then add a final page break.
    {{include document:file1}}
    {{page-break}}
    {{include document:file2.md}}
    {{page-break}}
    {{include document:file3.html}}
    {{page-break}}
  • Example 3: Combine the text written in the Begin Text field of the estimates/invoices with a text defined in Documents table.
    "This is a begin text:"
    {{include document:file1}}
  • Example 4: Simply add a page break after the begin text in the Begin Text filed of the estimates/invoices.
    "This is a begin text"
    {{page-break}}

Add your custom Javascript file using the following Javascript hook_print_text_begin function code:

function hook_print_text_begin(repDocObj, invoiceObj, texts, userParam) {
    var textTitle = getTitle(invoiceObj, texts, userParam);
    var textBegin = invoiceObj.document_info.text_begin || userParam[lang + '_text_begin'] || (invoiceObj.document_info.doc_type === "17" ? userParam[lang + '_text_begin_offer'] : '');
    var section = repDocObj.addSection();
    section.setStyleAttributes("margin-bottom: 1.0cm;");
    if (textTitle) {
        section.addParagraph(textTitle.replace(/<DocInvoice>/g, invoiceObj.document_info.number.trim()), "title_text");
    }
    var textBeginLines = textBegin.split('\n');
    textBeginLines.forEach(line => {
        line = line.trim();
        var paragraph = section.addParagraph("", "");
        if (line === "{{page-break}}") {
            section.addPageBreak();
        } else if (line.includes("{{include document:")) {
            var file = extractFileName(line);
            var text = getEmbeddedTextFile(file);
            if (file.includes(".md")) {
                paragraph.addStructuredText(text || " ", "md", "");
            } else if (file.includes(".html")) {
                paragraph.addStructuredText(text || " ", "html", "");
            } else {
                addMdBoldText(paragraph, columnNamesToValues(invoiceObj, text || " "));
            }
        } else {
            addMdBoldText(paragraph, columnNamesToValues(invoiceObj, line || " "));
        }
    });
}
function extractFileName(inputString) {
    var match = inputString.match(/document:(.*?)\}\}/);
    return match ? match[1] : "";
}
function getEmbeddedTextFile(file) {
    var documentsTable = Banana.document.table("Documents");
    if (!documentsTable) return "";
    
    for (var i = 0; i < documentsTable.rowCount; i++) {
        var tRow = documentsTable.row(i);
        if (tRow.value("RowId") === file) {
            return tRow.value("Attachments");
        }
    }
    return "";
}

Add a begin text with Markdown

This example for the Estimates and Invoice application, shows how to add a begin text of the invoice/estimate using the Markdown (requires Banana+ Dev Channel).

/**
* This function adds the begin text as Markdown
* Works with the Estimate and Invoice Application
*/
function hook_print_text_begin(repDocObj, invoiceObj, texts, userParam) {
  var textTitle = getTitle(invoiceObj, texts, userParam);
  var textBegin = invoiceObj.document_info.text_begin;
  var table = repDocObj.addTable("begin_text_table");
  if (textTitle) {
    textTitle = textTitle.replace("<DocInvoice>", invoiceObj.document_info.number);
    var tableRow = table.addRow();
    var titleCell = tableRow.addCell("","",1);
    titleCell.addParagraph(textTitle, "title_text");
  }
  if (textBegin) {
    var tableRow = table.addRow();
    var textCell = tableRow.addCell("","begin_text",1);
    textCell.addStructuredText(textBegin, "md", "");
  }
}

 

Add a final text with Markdown

This example for the Estimates and Invoice application, shows how to add a final text of the invoice/estimate using the Markdown (requires Banana+ Dev Channel).

/**
* This function adds the final text as Markdown
* Works with the Estimate and Invoice Application
*/
function hook_print_final_texts(repDocObj, invoiceObj, userParam) {
  if (invoiceObj.note.length > 0) {
    for (var i = 0; i < invoiceObj.note.length; i++) {
      if (invoiceObj.note[i].description) {
        var text = invoiceObj.note[i].description;
        var paragraph = repDocObj.addParagraph("","final_texts");
        paragraph.addStructuredText(text, "md", "");
      }
    }    
  }
}

 

First page without page number

Normally the page number is printed on each page of the invoice in the information section.

In this example we want to make sure that the page number is not printed on the first page of the invoice.
To do that, we simply define an hook function that replaces the default print_info_first_page() function. 

/** 
* This function do not prints the PAGE NUMBER on first page
*/
function hook_print_info_first_page(repDocObj, invoiceObj, texts, userParam) {
   // Save the existing settings
   var originalInfoPage = userParam.info_page;
   // Set not to print the info_page
   userParam.info_page = false;
   // call the original function
   print_info_first_page(repDocObj, invoiceObj, texts, userParam);
   // Restore original values
   userParam.info_page = originalInfoPage ;
}

With this change the page number is now printed only from page two and above.

Add an additional image

In case you want to add an additional image in any section of the invoice, you can do it using the Documents table.

  • Add a new image to the Documents table.
    • In the ID column enter the file name (e.g. "myImage").
    • In the Description column enter a comment (optional).
    • In the Attachments column, double click on the cell or select the edit symbol, then select Image and comfirm with Ok.
    • Select the image you want to use and confirm.
  • Use javascript code to add the image in the hook function of the invoice section you want.
    • The code addImage("documents:<id_value>", "<width>", "<height>") allows to add the image to the ReportElement.
    • <id_value> the value of the ID column of the Documents table (e.g. "myImage").
    • <width> you can adjust the width of the image.
    • <height> you can adjust the height of the image.

Let's suppose for example that we want to add an image in the final text section, after the invoice details.
To do that, we simply define an hook function that replaces the default print_final_texts() function.

/*
 * This function adds an image in the final texts section
 */
function hook_print_final_texts(repDocObj, invoiceObj, userParam) {
  
  //Print final texts
  print_final_texts(repDocObj, invoiceObj, userParam);
  //Add an image of the table Documents at the end
  repDocObj.addImage("documents:myImage", "100%", "auto");
}

With this change, the image is printed at the end of the invoice.

It’s possible to achieve the same result for order confirmations as well. In this case, simply replace:

  • the function name "hook_print_final_texts" with "hook_print_final_texts_order_confirmation"
  • the function call "print_final_texts" with "print_final_texts_order_confirmation"
/*
 * This function adds an image in the final texts section in the order confirmation
 */
function hook_print_final_texts_order_confirmation(repDocObj, invoiceObj, userParam) {
  
  //Print final texts
  print_final_texts_order_confirmation(repDocObj, invoiceObj, userParam);
  //Add an image of the table Documents at the end
  repDocObj.addImage("documents:myImage", "100%", "auto");
}

Add additional notes based on quantity

Suppose you have an additional column called "AdditionalNotes", and you want to add a different text to this column depending on the quantity of the item.
For example, for quantities greater than 10 you want to add the text "Special price" in the "AdditionalNotes" column of the print, and you want to do it automatically without entering by hand the text on each invoice.

To do that, we define an hook function that replaces the default formatItemsValue() function.

function hook_formatItemsValue(value, columnName, className, item) {
  var itemFormatted = {};
  itemFormatted.value = "";
  itemFormatted.className = "";
  if (columnName === "additionalnotes") {
    if (item.quantity > 10) {
        itemFormatted.value = "Special price";
        itemFormatted.className = className;
    }
  }
  //If not used it must always return undefined
  return itemFormatted;
}

The itemFormatted object has two properties:

  • value is the value of the column that is printed in the invoice.
  • className is the name of the class in the CSS file.

With this, when you create the invoice all the items with the quantity greater than 10 have an additional text in the "AdditionalNotes" column. For all the others it remains empty.

Example print:
javascript invoice customization

Use macros to add texts

Suppose you want to add a different text to the Description column of the invoice print depending on the item, and you want to do it automatically without entering by hand the text on each invoice.
You could for example associate the desired text to macros, add the macros in the Description column of the Transactions table, and then replace these macros with the acutal text.

To do that:

  • Define the macro name and the text associated to it. For example, we want to associate the text "Special offer!" to the macro called "#macro1".
  • Add the "#macro1" text to the Description column of the Transaction table for all the items we want to add the "Special offer" text.
  • Define an hook function that replaces the default formatItemsValue() function. This automatically replaces "#macro1“ with "Special offer!".
function hook_formatItemsValue(value, columnName, className, item) {
  var itemFormatted = {};
  itemFormatted.value = "";
  itemFormatted.className = "";
  if (columnName === "description") {
    if (value && value.indexOf("#macro1") > -1) {
       itemFormatted.value = value.replace("#macro1","\nSpecial offer!");
       itemFormatted.className = className;
    }
  }
  return itemFormatted;
}

The itemFormatted object has two properties:

  • value is the value of the column that is printed in the invoice.
  • className is the name of the class in the CSS file.

With this, when you create the invoice, the “#macro1“ text contained in the items description are replaced with the "Special offer!" text.

Example print:
javascript invoice customization

Change style of an item value

Suppose you want to change the style of an item in the Description column of the invoice in order to print it bold.

To do that:

  • Define the macro name like for example "#bold".
  • Add the "#bold" text to the Description column of the Transaction table for all the items you want to change the text style to bold.
  • Define an hook function that replaces the default formatItemsValue() function. This automatically removes the "#bold“ text and change the style.
function hook_formatItemsValue(value, columnName, className, item) {
  var itemFormatted = {};
  itemFormatted.value = "";
  itemFormatted.className = "";
  if (columnName === "description") {
    if (value && value.indexOf("#bold") > -1) {
      itemFormatted.value = value.replace("#bold","");
      itemFormatted.className = "bold";
    }
  }
  return itemFormatted;
}

The itemFormatted object has two properties:

  • value is the value of the column that is printed in the invoice.
  • className is the name of the class in the CSS file.

In this case all the texts “#bold“ contained in the items description are not printed, and the styles are changed to bold.

The class "bold" that we set in the line itemFormatted.className = "bold" already exists in the CSS file of the invoice. If you want to use other classes that don't exist, you need also to use the CSS customization in order to create them first.

Example print:
javascript invoice customization

Change the font size of an item description

In this example, we want to change the font size of a specific item description text.

To do that we use the Javascript customization and also the CSS customization:

  • Define a macro name like for example "#myFontSize". For each items description you want to change the font size, add the "#myFontSize" text at the end of the description.
  • In Documents table:
    • Add a new Javascript-type attachment.
      Define then the hook function that replaces the default formatItemsValue() function.
      This automatically removes the "#myFontSize“ text and changes the font size.
      As ID name use for example "myStyle.js".
    • Add a new CSS-type attachment.
      Define then the CSS class with the font size you want to use. Since the class that defines the font size does not exist in the CSS file of the invoice, you also have to create it.
      As ID name use for example "myStyle.css".
  • In CH10 / UNI11 layout settings, section Javascript / CSS, enter the appropriate names ("myStyle.js" and "myStyle.css").

Javascript hook function code:

function hook_formatItemsValue(value, columnName, className, item) {
  var itemFormatted = {};
  itemFormatted.value = "";
  itemFormatted.className = "";
  if (columnName === "description") {
    if (value && value.indexOf("#myFontSize") > -1) {
      itemFormatted.value = value.replace("#myFontSize","");
      itemFormatted.className = "myFontSize";
    }
  }
  return itemFormatted;
}

CSS code:

.myFontSize {
   font-size: 8pt;
}

Change the font size value as you desire.

When you create the invoice, the size of the texts in the descriptions changes.

Use different IBAN codes

The IBAN code is normally set either in the File → File and accounting properties → Address section or directly from the Invoice Settings under the related IBAN entry.

If you have more than one IBAN code to use and you want to decide to use one rather than another, you must manually change it when creating each invoice from the Invoice Settings.

However, using customization with Javascript it is possible to associate a different IBAN code to each customer. In this way, when you create the invoice, the script will automatically assign and insert the IBAN.

To do that we define the hook_modify_settings_qr() function that replaces the default modify_settings_qr() function.

function hook_modify_settings_qr(invoiceObj, qrcodeData) {
   //Assign the IBAN code CHXXXXXXXXXXXXXXXXXXX to the customer 1101
   if (invoiceObj.customer_info.number === "1101") {
      qrcodeData.supplierIbanNumber = "CHXXXXXXXXXXXXXXXXXXX";
   }
   //Assign the IBAN code CHYYYYYYYYYYYYYYYYYYY to the customer 1102
   else if (invoiceObj.customer_info.number === "1102") {
      qrcodeData.supplierIbanNumber = "CHYYYYYYYYYYYYYYYYYYY";
   }
   //Assign the IBAN code CHZZZZZZZZZZZZZZZZZZZ to the customer numbers from 1103 to 1107
   else if (invoiceObj.customer_info.number >= "1103" && invoiceObj.customer_info.number <= "1107") { 
      qrcodeData.supplierIbanNumber = "CHZZZZZZZZZZZZZZZZZZZ";
   }
	// ...
}

Copy the code above and just replace:

  • the value of invoiceObj.customer_info.number with the customer account you want (e.g. 1101, 1102, 1103, ...)
  • the value of qrcodeData.supplierIbanNumber with the IBAN number you want (e.g. CHXXXXXXXXXXXXXXXXXXX, CHYYYYYYYYYYYYYYYYYYY, CHZZZZZZZZZZZZZZZZZZZ, ...)
  • You can also add/remove more cases.

With this, when you create the invoice the IBAN code is set automatically, and it is no longer necessary to change the invoice settings every time.

Select and use different IBAN codes

With JavaScript customization, you can define multiple IBAN codes and choose the appropriate one when printing the invoice.

This method displays a dialog that allows the user to select a specific IBAN from a list. The dialog is shown for each invoice being generated. For this reason, its use is recommended only when printing one invoice at a time.

It works ony for IBAN codes. Special QR-IBAN codes is not supported with this method.

To do this, we define the hook_modify_settings_qr() function, which replaces the default modify_settings_qr() function.

function hook_modify_settings_qr(invoiceObj, qrcodeData) {

	// ENTER ALL THE IBAN CODES HERE
	var ibanList = [
		"CHXXXXXXXXXXXXXXXXXXX",
		"CHYYYYYYYYYYYYYYYYYYY",
		"CHZZZZZZZZZZZZZZZZZZZ"
	];
	
	// ENTER DE DEFAULT IBAN
	var ibanDefault = "CHXXXXXXXXXXXXXXXXXXX";
	
	
	qrcodeData.supplierIbanNumber = ibanDefault;
	var invoiceNumber = invoiceObj.document_info.number;
	var ibanSelected = Banana.Ui.getItem("Invoice " + invoiceNumber, "Select an IBAN account for the invoice " + invoiceNumber, ibanList, 0, false);
	if (ibanSelected) {
		qrcodeData.supplierIbanNumber = ibanSelected;
	}
}

Copy the code above and do the following:

  • Replace ibanList with the actual IBAN codes you want to use. You can add as many IBAN codes as needed.
  • Replace ibanDefault with the IBAN you want to use as the default. Only one default IBAN can be defined.

Use another date format

The date format is taken from the operating system settings.

This example shows how to use another date format for all Date-type columns in the invoice details, without changing the operating system settings.

To do that:

  • The XML name of the column in Transaction table must begin with the word Date (eg DateWork, DateExecution, DateXxx).
  • Define the hook_formatItemsValue() function.
  • In the function set the format of the date you want to use.
    Format examples:
    • dd.mm.yyyy
    • dd/mm/yyyy
    • dd-mm-yyyy
    • yyyy.mm.dd
    • yyyy/mm/dd
    • yyyy-mm-dd

function hook_formatItemsValue(value, columnName, className, item) {
  var itemFormatted = {};
  itemFormatted.value = "";
  itemFormatted.className = "";
  if (columnName.startsWith("date")) {
    itemFormatted.value = Banana.Converter.toLocaleDateFormat(value, "dd.mm.yyyy"); // insert here the format
    itemFormatted.className = className;
  }
  return itemFormatted;
}

When you create the invoice, all dates in details table will be printed with the new format.

Example print:
javascript invoice customization

Print images of items

This example shows how to add and print items images on the invoice details. Each item in the Items table is associated with an image and the image is then printed on the invoice.

To do this see the instructions:

When you print the invoice, the items will be printed with an image.

Example print:
javascript invoice customization

This example shows how to print a column displaying the row numbers of the items.
The first item starts at row 1.

Steps

  1. Add the JavaScript code as attachment in the Documents table.
  2. Sets the parameters of the invoice layout.
    • In the Invoice Settings:
      • In the Invoice Details section, add the columns "RowNumber".

        RowNumber;Description;Quantity;ReferenceUnit;UnitPrice;Amount
        10%;40%;10%;10%;15%;15%
        left;left;right;center;right;right
        left;left;right;center;right;right
         
      • In the Texts section > Column names invoice details, add the texts for the column headings (e.g., “#;Description;Quantity;Unit;Unit Price;Amount”).
      • In the Javascript / CSS > JS File Name section, enter the id of the attachment that contains the javascript code (e.g., "myFile.js").

Example:
javascript invoice customization

Print 0% VAT rate

This example shows how to print the VAT amounts with a rate of 0%.

To do this:

  • add the following javascript snippet to your accounting in the documents table (see image below)
  • add the reference to this hook in the settings dialog of the invoice extension (see image below)

function hook_print_details_net_amounts(banDoc, repDocObj, invoiceObj, texts, userParam, detailsTable, variables) {
  //PRINT 0% VAT RATE
  if (invoiceObj.billing_info.total_vat_rate_zero) {
    invoiceObj.billing_info.total_vat_rate_zero.vat_rate="0.00";
    invoiceObj.billing_info.total_vat_rates.unshift(invoiceObj.billing_info.total_vat_rate_zero);
  }
  print_details_net_amounts(banDoc, repDocObj, invoiceObj, texts, userParam, detailsTable, variables); 
}

Example print:

javascript invoice customization

Table documents where the custom javascript is defined

javascript invoice customization

Settings dialog of the invoice extension where you have to indicate the hook that overwrites the original function

javascript invoice customization

Print quantities without decimals

This example for the Integrated Invoice, shows how to print quantities without decimals.

To do this:


function hook_set_variables(variables, userParam) {
	variables.decimals_quantity = 0;
}

 

Change decimals of amounts

This example for the integrated invoice shows how to change the decimals of the invoice amounts (quantity, unit price and amounts).

To do this:

  • Add the following javascript code to your accounting in the Documents table.
  • Change the number of decimals according to your needs.
  • Add the reference to this javascript file in the Invoice Settings.
    For more information see Add your custom Javascript file.
function hook_set_variables(variables, userParam) {
   variables.decimals_quantity = 4;
   variables.decimals_unit_price = 4;
   variables.decimals_amounts = 4;
}

Other examples and needs

With CSS and Javascript you can completely customize the invoice appearance.
If you have other specific needs, you can contact our customer service.

 

Invoice formatting with custom CSS Stylesheet

Banana invoices are formatted through a CSS Stylesheet. The extension allows you to use a customized stylesheet so you can fully modify the appearance of the invoice (this functionality requires the Advanced plan).

Following you will find information and examples that let anyone understand the basic of the CSS so that you are able to do a lot of customization to your invoice, even if you are not a CSS professional.

Banana CSS Stylesheet file

The CSS file property let you specify an CSS stylesheet file to be used for formatting the invoice. You have to enter the name of a CSS document, contained in the Documents table.

The properties you define in the custom CSS file will extend or overwrite the styles of the default stylesheet.

Cascading Style Sheet (CSS) is a specification language that allows to customize the appearance of web pages, and a subset of the whole CSS specification is also used in Banana to prepare reports. 
Here are some basics about CSS Stylesheet formatting.

  • The document, in our case the invoice, is composed by a series of Elements that contains all the data of the invoice.
  • Each element can have one or more class properties that specify which style should be used for that element.
  • Each element can contain other elements.
  • In the CSS stylesheet you specify the formatting properties of each class of style.
  • The elements hynnerit the styles of the parent element.
  • The main element for the invoice is the Document.

Add your custom CSS stylesheet

Three steps are required to define and use your CSS file:

  1. Add the document table to the Banana Accounting file.
    If it is not already present you need to add the Documents table in the Banana document with the menu command Tools > Add new features > Add document table.
  2. Add a new CSS type document to the document table.
    1. In the ID column enter the file name including the extension .css (e.g. "myStyle.css").
      If the id is missing the ".css" at the end, it won't work.
    2. In the Description column enter a comment (optional).
    3. In the Attachments column, double click on the cell or select the edit symbol, then select CSS stylesheet and confirm with Ok.
    4. An editor will open in which you can write the code.
    5. Enter or edit the script and confirm with Ok.
    6. Save the Banana Accounting file.

      invoice css customization
      Documents table - CSS stylesheet attachment
       
  3. Specify the CSS file created in the invoice layout extension.
    1. Select Settings of the Print invoices dialogue.
    2. In the Javascript/CSS > CSS file name, enter the name of the newly created CSS attachment file with the extension ".css" at the end (e.g. "myFile.css").
    3. Click Ok to confirm.

      qr invoice css settings dialog
      Settings Dialogue - CSS File Property

 

Syntax of a CSS stylesheet

The syntax of the CSS is quite simple as you see in this style definition that set the size of the Invoice title text element to 14 points and without bold.

/* this two lines are comment 
   title_text is for the invoice number */
.title_text {
  font-family: Arial;
  font-size: 14;
  font-weight: normal;
  color: #6495ED;
}

Syntax rules:

  • Element are case sensitive.
  • You specify the style name ".title_text" starting with a dot (".") and followed by the  curly open bracket "{".
    • Property name, followed by the colon ":"
    • Values followed by the semicolon ";"
    • You can have has many allowed properties you need.
  • End with the curly close bracket "}".
  • You can have has many allowed style classes.
  • The defined values overwrite the predefined one.

Comments:

Most used properties

Font

Text alignment

  • text-align
    Specify the horizontal alignment of the text.
    It is used for example to align on the right of the cell all the amounts of the invoice (i.e. "text-align: right").

Colors

For the main colors you can use the name in English (black, yellow, white, blue, red, ...) or the hexadecimal values (HEX) preceded by the # sign (e.g. #000000, #009FE3, #FF00EA).
For codes see the table at https://www.w3schools.com/cssref/css_colors.asp.

  • color
    Define the color of a text.
  • background-color
    Define the background color of an element.
    It is used for example to set the background color of the header row of the invoice details.

Positioning

All elements in the invoice are positioned relative to the prior element. You can change the positioning.

  • margin
    • margin-top
      To set the margin on the top of the element.
    • margin-right
      To set the margin on the right side of the element.
    • margin-bottom
      To set the margin on the bottom of the element.
    • margin-left
      To set the margin on the left side of the element.
      It is used for example in case it is required to move an element a bit to the right. More margin on the left means move the element to the right.
  • padding
    • padding-top
      Sets the height of the area on the top of an element.
    • padding-right
      Sets the width of the area on the right of an element.
    • padding-bottom
      Sets the height of the area on the bottom of an element.
    • padding-left
      Sets the width of the area on the left of an element.
/* For example it is used for the details table, to avoid that
all the texts are printed too close to the table border. */
.doc_table td {
  padding-top: 5px;
  padding-bottom: 1px;
  padding-left: 4px;
  padding-right: 4px;
}

Absolute positioning

Some elements are positioned relative to the begin of the document. The position of these elements does not depend on any other element in the document.

  • postion
    • For the logo, header text and address elements it is used the absolute positioning ("position: absolute").

Borders

To apply borders to tables and table rows.

  • border-style
    Sets the line style for all four sides of an element's border.
    • border-top-style
    • border-right-style
    • border-bottom-style
    • border-left-style
  • border-color
    Sets the color for all four sides of an element's border.
    • border-top-color
    • border-right-color
    • border-bottom-color
    • border-left-color
  • border-width
    Sets the width for all four sides of an element's border.
    • border-top-width
    • border-right-width
    • border-bottom-width
    • border-left-width
/* For example use it to apply a double underline
 to the total line of the invoice. */
  .total_cell {
  border-bottom-style: double;
  border-bottom-color: #337ab7;
  border-bottom-width: 1px;
}

Display / Hide element

Set the attribute display to none to hide an element.  In this case the Invoice number is hidden.

.title_text {
   display: none;
}

Predefined Invoice CSS stylesheet

The JavaScript layout generates an invoice document where each element is assigned a specific CSS class. These classes control the position, spacing, and formatting of the elements according to the stylesheet rules.

If you need to introduce additional style classes, you must also update the JavaScript code to reference them, typically by using the available hook functions.

The following section shows the complete CSS stylesheet used for invoice documents. This stylesheet defines how each part of the invoice is displayed (e.g., headers, addresses, tables, totals, footers).

  • Some style properties use predefined variables (values starting with $).
    For example, $font_family is replaced with the font name selected by the user, while other variables are initialized through the JavaScript variable initialization function.
  • Comments inside the CSS are written between /* ... */.
    They describe the purpose of each selector and when it should be applied.

Full CSS Code

/* @page
   PURPOSE: Defines the physical page margins for printing.
   EFFECT: All elements are positioned relative to these margins.
   WHEN TO USE: When the user wants to change the page’s margin sizes. */
@page {
  margin-top: 0cm;
  margin-bottom: 0cm;
  margin-left: 0cm;
  margin-right: 0cm;
}

/* body
   PURPOSE: Base style for the whole document.
   EFFECT: Sets default font family, size, and text color for all content.
   WHEN TO USE: When the user wants to change the default font, size, or text color for the whole document. */
body {
  font-family: $font_family;
  font-size: $font_size;
  color: $text_color;
}

/* td
   PURPOSE: Aligns table cell content vertically to the top.
   WHEN TO USE: When the user wants all table cells aligned to the top vertically. */
td {
  vertical-align: top;
}

/* .right
   PURPOSE: Aligns text to the right.
   USAGE: Often combined with other classes for layout control.
   WHEN TO USE: When the user requests right-aligned text. */
.right {
  text-align: right;
}

/* .center
   PURPOSE: Centers text horizontally.
   USAGE: Often combined with other classes for layout control.
   WHEN TO USE: When the user requests centered text. */
.center {
  text-align: center;
}

/* .bold
   PURPOSE: Makes text bold.
   USAGE: Often combined with other classes for layout control.
   WHEN TO USE: When the user wants bold text. */
.bold {
  font-weight: bold;
}

/* .padding-right
   PURPOSE: Adds space inside the element on the right side.
   EFFECT: 20px right padding.
   WHEN TO USE: When the user wants extra padding on the right. */
.padding-right {
  padding-right: 20px;
}

/* .padding-left
   PURPOSE: Adds space inside the element on the left side.
   EFFECT: 20px left padding.
   WHEN TO USE: When the user wants extra padding on the left. */
.padding-left {
  padding-left: 20px;
}

/* .border-top
   PURPOSE: Adds a top border to an element.
   TYPICAL USE: Horizontal separator (e.g., between item list and totals).
   EFFECT: Solid, thin border in $color_title_total.
   WHEN TO USE: When the user requests a horizontal line above an element. */
.border-top {
  border-top-style: solid;
  border-top-color: $color_title_total;
  border-top-width: thin;
}

/* .header_text
   PURPOSE: Styles the header text block alignment and position.
   EFFECT: Sets margins, text alignment, and absolute positioning.
   NOTE: Used when no logo is present, or with right-aligned text layouts.
   WHEN TO USE: When the user wants to change or reposition the main header text. */
.header_text {
  margin-top: 1.2cm;
  margin-left: 1.2cm;
  margin-right: 1.2cm;
  text-align: right;
  position: absolute;
}

/* .header_row_1
   PURPOSE: Styles the first header row.
   EFFECT: Bold text, 16pt font size.
   WHEN TO USE: When the user wants to style the first line of header text (font weight, font size, font color, etc.). */
.header_row_1 {
  font-weight: bold;
  font-size: 16pt;
}

/* .header_row_2_to_5
   PURPOSE: Styles header rows 2–5.
   EFFECT: Bold text, 10pt font size.
   WHEN TO USE: When the user wants to style the lines 2,3,4 and 5 of header text (font weight, font size, font color, etc.). */
.header_row_2_to_5 {
  font-weight: bold;
  font-size: 10pt;
}

/* .logo
   PURPOSE: Positions the logo in the header.
   EFFECT: Sets margins and absolute positioning.
   WHEN TO USE: When the user wants to move or resize the logo position. */
.logo {
  margin-top: 1.2cm;
  margin-left: 1.34cm;
  margin-right: 1.2cm;
  position: absolute;
}

/* .info_table_left
   PURPOSE: Positions and styles the information table on the left side, when the customer address block is positioned on the right side.
   EFFECT: Sets font size and margins.
   WHEN TO USE: When the user wants to style/move the left-side info table. */
.info_table_left {
  font-size: $font_size;
  margin-top: 4.5cm;
  margin-left: 1.2cm;
  margin-right: 1.2cm;
}

/* .info_table_right
   PURPOSE: Positions and styles the information table on the right side, when the customer address block is positioned on the left side.
   EFFECT: Sets font size and margins.
   WHEN TO USE: When the user wants to style/move the right-side info table. */
.info_table_right {
  font-size: $font_size;
  margin-top: 5.5cm;
  margin-left: 12.3cm;
  margin-right: 1.2cm;
}

/* .info_table_row0
   PURPOSE: Positions and styles the information table for page 2 and later.
   EFFECT: Sets font size and margins.
   WHEN TO USE: When the user wants to change the info table style for second and later pages. */
.info_table_row0 {
  font-size: $font_size;
  margin-top: 4.5cm;
  margin-left: 1.2cm;
  margin-right: 1.2cm;
}

/* table.info_table_left td
   PURPOSE: Removes extra vertical padding in cells of left-side info tables.
   WHEN TO USE: When the user wants to change spacing in left-side info table cells. */
table.info_table_left td {
  padding-top: 0px;
  padding-bottom: 0px;
}

/* table.info_table_right td
   PURPOSE: Removes extra vertical padding in cells of right-side info tables.
   WHEN TO USE: When the user wants to change spacing in right-side info table cells. */
table.info_table_right td {
  padding-top: 0px;
  padding-bottom: 0px;
}

/* table.info_table_row0 td
   PURPOSE: Removes extra vertical padding in cells for page 2+ info tables.
   WHEN TO USE: When the user wants to change spacing in page 2+ info table cells. */
table.info_table_row0 td {
  padding-top: 0px;
  padding-bottom: 0px;
}

/* @page:first-view table.info_table_row0
   PURPOSE: Hides the page 2+ info table on the first page only.
   NOTE: :first-view is a custom pseudo-class used to target the first rendering of an element.
   WHEN TO USE: When the user wants to hide elements on the first page only. */
@page:first-view table.info_table_row0 {
  display: none;
}

/* .info_table_first_column
   PURPOSE: Optional override for the width of the first info-table column.
   DEFAULT: If unset, the column uses the default width.
   EXAMPLE: width: 100px;
   WHEN TO USE: When the user wants to set a specific width for the first column. */
.info_table_first_column {}

/* .info_table_second_column
   PURPOSE: Optional override for the width of the second info-table column.
   DEFAULT: If unset, the column uses the default width.
   EXAMPLE: width: 100px;
   WHEN TO USE: When the user wants to set a specific width for the second column. */
.info_table_second_column {}

/* .address_table_right
   PURPOSE: Positions the customer address block on the right side.
   EFFECT: Sets font size, absolute position, and width.
   WHEN TO USE: When the user wants to style or reposition the right-side address block. */
.address_table_right {
  font-size: $font_size;
  top: 4.5cm;
  left: 12.3cm;
  width: 7.5cm;
  position: absolute;
}

/* .address_table_left
   PURPOSE: Positions the customer address block on the left side.
   EFFECT: Sets absolute position and width.
   WHEN TO USE: When the user wants to style or reposition the left-side address block. */
.address_table_left {
  top: 5.5cm;
  left: 2.2cm;
  width: 7.5cm;
  position: absolute;
}

/* .custom_address_table_right
   PURPOSE: Positions the right-side address using configurable margins.
   SOURCE: $right_address_margin_top / $right_address_margin_left come from invoice settings.
   WHEN TO USE: When the user wants to move the right address block using specific measurements. */
.custom_address_table_right {
  font-size: $font_size;
  top: $right_address_margin_top;
  left: $right_address_margin_left;
  width: 7.5cm;
  position: absolute;
}

/* .custom_address_table_left
   PURPOSE: Positions the left-side address using configurable margins.
   SOURCE: $left_address_margin_top / $left_address_margin_left come from invoice settings.
   WHEN TO USE: When the user wants to move the left address block using specific measurements. */
.custom_address_table_left {
  top: $left_address_margin_top;
  left: $left_address_margin_left;
  width: 7.5cm;
  position: absolute;
}

/* .small_address
   PURPOSE: Styles the sender's small address line above the customer address.
   EFFECT: 7pt font, centered text, bottom underline, 0.3cm bottom margin.
   WHEN TO USE: When the user wants to style the small sender address above the customer’s. */
.small_address {
  font-size: 7pt;
  text-align: center;
  border-bottom-style: solid;
  border-bottom-color: $text_color;
  border-bottom-width: 1px;
  margin-bottom: 0.3cm;
}

/* .shipping_address
   PURPOSE: Styles the shipping address block.
   EFFECT: Sets font size and top/side margins.
   WHEN TO USE: When the user wants to style the shipping address section. */
.shipping_address {
  font-size: $font_size;
  margin-top: 0.4cm;
  margin-left: 1.2cm;
  margin-right: 1.2cm;
}

/* .title_shipping_address
   PURPOSE: Styles the "Shipping Address" title.
   EFFECT: Bold text, $color_title_total color.
   WHEN TO USE: When the user wants to style the shipping address title text. */
.title_shipping_address {
  font-weight: bold;
  color: $color_title_total;
}

/* .title_text
   PURPOSE: Styles the invoice title.
   EFFECT: Bold text, $font_size_title size, $color_title_total color.
   WHEN TO USE: When the user wants to style the invoice title text. */
.title_text {
  font-size: $font_size_title;
  font-weight: bold;
  color: $color_title_total;
}

/* .section_class_begin
   PURPOSE: Container for the introductory (begin) text after the invoice title.
   EFFECT: Full width with top/side margins.
   WHEN TO USE: When the user wants to change the position or spacing of the intro text section. */
.section_class_begin {
  margin-top: 1.0cm;
  margin-left: 1.2cm;
  margin-right: 1.2cm;
  width: 100%;
}

/* .begin_text_table
   PURPOSE: Table container for the "begin" text.
   EFFECT: Full width.
   WHEN TO USE: When the user wants to style the table of the begin text. */
.begin_text_table {
  width: 100%;
}

/* .begin_text
   PURPOSE: Styles the "begin" text.
   EFFECT: Sets font size.
   WHEN TO USE: When the user wants to change the style of the introductory text. */
.begin_text {
  font-size: $font_size;
}

/* .section_class_details:first-view
   PURPOSE: Applies a specific top margin to the details section on first render only.
   NOTE: :first-view targets the first time the section is displayed.
   WHEN TO USE: When the user wants to change the details section margin only on the first page. */
.section_class_details:first-view {
  margin-top: 0.5cm;
}

/* .section_class_details
   PURPOSE: Styles the invoice details section on all pages.
   EFFECT: Sets font size and outer margins.
   WHEN TO USE: When the user wants to style or adjust margins for the details section. */
.section_class_details {
  font-size: $font_size;
  margin-top: 0.5cm;
  margin-bottom: 0.5cm;
  margin-left: 1.3cm;
  margin-right: 1.2cm;
}

/* .doc_table
   PURPOSE: Table for invoice details.
   EFFECT: Full width.
   WHEN TO USE: When the user wants to style the details table. */
.doc_table {
  width: 100%;
}

/* .doc_table_header
   PURPOSE: Styles the header row of the invoice details table.
   EFFECT: Bold, $font_size_header, custom text/background colors, bottom border.
   WHEN TO USE: When the user wants to style the column headers of the details table. */
.doc_table_header {
  font-size: $font_size_header;
  font-weight: bold;
  color: $text_color_details_header;
  background-color: $background_color_details_header;
  border-bottom: thin solid $color_title_total;
}

/* .doc_table td
   PURPOSE: Sets cell padding for invoice details rows.
   WHEN TO USE: When the user wants to adjust padding inside detail table cells. */
.doc_table td {
  padding-top: 5px;
  padding-bottom: 1px;
  padding-left: 0px;
  padding-right: 0px;
}

/* .doc_table_header td
   PURPOSE: Sets cell padding for the invoice header row.
   WHEN TO USE: When the user wants to adjust header cell padding in the details table. */
.doc_table_header td {
  padding-top: 4px;
  padding-bottom: 2px;
  padding-left: 0px;
  padding-right: 0px;
}

/* .item_cell
   PURPOSE: Define the text style for each invoice item row.
   USAGE: Apply to cells/rows containing individual items.
   NOTE: Empty by default, add font/spacing/color rules as needed.
   WHEN TO USE: When the user wants to style the text of each line item in the details table. */
.item_cell {}

/* .total_cell
   PURPOSE: Styles the total row.
   EFFECT: Bold, $font_size_total, $color_title_total color, double bottom border.
   WHEN TO USE: When the user wants to style the row containing the total amount. */
.total_cell {
  font-size: $font_size_total;
  font-weight: bold;
  color: $color_title_total;
  border-bottom-style: double;
  border-bottom-color: $color_title_total;
  border-bottom-width: 1px;
}

/* .subtotal_cell
   PURPOSE: Styles the subtotal row.
   EFFECT: Bold text, single bottom border in $color_title_total.
   WHEN TO USE: When the user wants to style the subtotal row in the details table. */
.subtotal_cell {
  font-weight: bold;
  border-bottom-style: solid;
  border-bottom-color: $color_title_total;
  border-bottom-width: thin;
}

/* .header_cell
   PURPOSE: Styles any header cell in the invoice details.
   EFFECT: Bold text.
   WHEN TO USE: When the user wants to make any header cell bold in the details section. */
.header_cell {
  font-weight: bold;
}

/* .vat_info
   PURPOSE: Styles VAT-related text.
   EFFECT: Sets font size (used for gross amount layouts).
   WHEN TO USE: When the user wants to style VAT information text. */
.vat_info {
  font-size: $font_size;
}

/* .even_rows_background_color
   PURPOSE: Sets background color for even-numbered rows (striped tables).
   WHEN TO USE: When the user wants alternating row background colors in tables. */
.even_rows_background_color {
  background-color: $background_color_alternate_lines;
}

/* .section_class_final_texts
   PURPOSE: Styles the final notes/greetings section after the details.
   EFFECT: Sets top/side/bottom margins.
   WHEN TO USE: When the user wants to style or adjust spacing for final texts or notes. */
.section_class_final_texts {
  margin-top: 0cm;
  margin-bottom: 0.5cm;
  margin-left: 1.26cm;
  margin-right: 1.0cm;
}

/* .footer_line
   PURPOSE: Horizontal line above the footer section (separator).
   EFFECT: Top border, side margins.
   WHEN TO USE: When the user wants to add or style a separator line above the footer. */
.footer_line {
  margin-left: 1.2cm;
  margin-right: 1.0cm;
  border-top-style: solid;
  border-top-color: $color_title_total;
  border-top-width: thin;
}

/* .footer_table
   PURPOSE: Styles the footer table.
   EFFECT: 8pt font, bottom margin, full width, side margins.
   WHEN TO USE: When the user wants to style the footer section or adjust its spacing. */
.footer_table {
  font-size: 8pt;
  margin-bottom: 2.0cm;
  margin-left: 1.2cm;
  margin-right: 1.0cm;
  width: 100%;
}

CSS Class Reference

Selector / ClassPurpose / Usage
@pageDefines page margins for printing. Use to change document margins.
bodyBase font, size, and text color for the whole document.
tdAligns table cells vertically to the top.
.rightRight-aligns text content.
.centerCenter-aligns text content.
.boldMakes text bold.
.padding-rightAdds padding on the right.
.padding-leftAdds padding on the left.
.border-topAdds a border at the top (used as separator).
.header_textDefines margins and styles of the header text block.
.header_row_1Defines styles of the first header row.
.header_row_2_to_5Defines styles of the header rows 2–5.
.logoDefines margins of the logo in the header.
.info_table_leftDefines margins and styles of the left-side info table.
.info_table_rightDefines margins and styles of the right-side info table.
.info_table_row0Defines margins and styles of the Info table for page 2 and later.
table.info_table_left tdDefines spacing for left-side info table cells.
table.info_table_right tdDefines spacing for right-side info table cells.
table.info_table_row0 tdDefines spacing for page 2+ info table cells.
@page:first-view table.info_table_row0Hides info table (info_table_row0) on first page.
.info_table_first_columnOptional: defines width for first info table column.
.info_table_second_columnOptional: defines width for second info table column.
.address_table_rightDefines margins and styles for the right-side address block.
.address_table_leftDefines margins and styles for the left-side address block.
.custom_address_table_rightDefines margins and styles for the custom right address block.
.custom_address_table_leftDefines margins and styles for the custom left address block.
.small_addressDefines styles of the sender’s small address line.
.shipping_addressDefines margins and styles of the shipping address block.
.title_shipping_addressDefines styles of the shipping address title.
.title_textDefines styles of the the invoice title.
.section_class_beginDefines margins of the container for introductory text section.
.begin_text_tableDefines styles of the begin text in table.
.begin_textDefines the styles of the introductory text.
.section_class_details:first-viewAdjusts details section margin on first page only.
.section_class_detailsDefines margins and styles of the details section.
.doc_tableDefines the styles of the details table (items list).
.doc_table_headerDefines margins and styles for the header row of details table.
.doc_table tdDefines padding inside details table cells.
.doc_table_header tdDefines padding inside header row cells of details table.
.item_cellDefines the styles of the invoice item rows (per line item).
.total_cellDefines the styles of the total row.
.subtotal_cellDefines the styles of the subtotal row.
.header_cellDefines the styles of the invoice header rows.
.vat_infoDefines the styles of the VAT information text (for gross amounts only).
.even_rows_background_colorApplies background color to even table rows.
.section_class_final_textsDefines margins and styles of the final notes/greetings section.
.footer_lineDefines margins and separator line above footer.
.footer_tableDefines margins and styles of the footer table.

 

How to adapt the invoice print with CSS

The following examples show how to adapt invoice printing with custom CSS stylesheet files.

See CSS customization for more information.

Change margins of the page

Page margins are set automatically when creating the invoice. It is possible to change margins with CSS.

To do this, the different elements of the invoice must be changed in the CSS:

  • Header (Logo and text).
  • Invoice Information.
  • Title and begin text.
  • Invoice details.
  • Final texts.

Copy and paste the following code into the editor, and change the margin-left and margin-right values:

/* Header Logo margins */
.logo {
  margin-left: 1.34cm;
  margin-right: 1.2cm;
  margin-top: 1.2cm;
}
/* Header text margins (when logo is not used) */
.header_text {
  margin-top: 1.2cm;
  margin-left: 1.2cm;
  margin-right: 1.2cm;
}
/* Information margins */
.info_table_left {
  margin-left: 1.2cm;
}
/* Information margins (page 2+) */
.info_table_row0 {
  margin-left: 1.2cm;
}
/* Title and begin texts margins */
.section_class_begin {
  margin-left: 1.2cm;
  margin-right: 1.2cm;
}
/* Invoice details margins */
.section_class_details {
  margin-left: 1.3cm;
  margin-right: 1.2cm;
}
/* Final texts margins */
.section_class_final_texts {
  margin-left: 1.26cm;
  margin-right: 1.2cm;
}

Change style of the header

The header text by default is always printed in bold, the font size of the first line is larger than the others, and the font is the same used for the rest of the invoice.

With this example we want to change something:

  • Set the text color.
    • Add a new declaration using the property color: and enter a color value.
    • The color value is an hexadecimal value (HEX) preceded by the # sign (e.g. #000000, #009FE3, #FF00EA).
      For codes see the table at https://www.w3schools.com/cssref/css_colors.asp.
  • Remove the bold style.
    • Change the font-weight: property value from bold to normal.
  • Set the same font size for all the lines.
    • Change the font-size: property value with a different size, e.g. 12pt.
  • Change the font type.
    • Add a new declaration using the property font-family: and enter a font, e.g. Times New Roman.

Copy and paste the following code into the editor:

/* Header row 1 */
.header_row_1 {
  color: #0000FF;
  font-weight: normal;
  font-size: 12pt;
  font-family: Times New Roman;
}
/* Header text row 2+ */
.header_row_2_to_5 {
  color: #6495ED;
  font-weight: normal;
  font-size: 12pt;
  font-family: Times New Roman;
}

The header text style is now changed from the original settings and is the same for all the lines.

Example print:
javascript invoice customization

Change color of the header

The header text by default is always printed in black.

With this example we want to change the color:

  • Set the text color.
    • Add a new declaration using the property color: and enter a color value.
    • The color value is an hexadecimal value (HEX) preceded by the # sign (e.g. #000000, #009FE3, #FF00EA).
      For codes see the table at https://www.w3schools.com/cssref/css_colors.asp.

Copy and paste the following code into the editor, and change the color code:

/* Header row 1 */
.header_row_1 {
  color: #6495ED;
}
/* Header text row 2+ */
.header_row_2_to_5 {
  color: #6495ED;
}

The header color is now changed from the original settings.

Use grayscale colours

With this example we set text and background colours with grayscale colours.

.total_cell {
   color: black
}
.title_text {
   color: black
}
.header_row_1 {
   color: black;
}
.doc_table_header {
   color: black;
   background-color: white;
   border-bottom: solid black thin; 
}

Change position of information section

The information section of the invoice is always placed at the same height of the invoice address.

In this example we want to change the position of the information section. We do this by changing the the predefined margins values:

  • To move vertically change the margin-top value.
  • To move horizontally change the margin-left value.

In case the information section is on the left, copy and paste the following code into the editor and edit it with your values:

.info_table_left {
  font-size: $font_size;
  margin-top: 4.5cm;
  margin-left: 1.2cm;
  margin-right: 1.2cm;
}

In case the information section is on the right, copy and paste the following code into the editor and edit it with your values:

.info_table_right {
  font-size: $font_size;
  margin-top: 5.5cm;
  margin-left: 12.3cm;
  margin-right: 1.2cm;
}

For the information section on the second page, copy and paste the following code into the editor and edit it with your values:

.info_table_row0 {
  font-size: $font_size;
  margin-top: 4.5cm;
  margin-left: 1.2cm;
  margin-right: 1.2cm;
}

With these changes the information section starts now on a different position (and also the invoice details).

Example print:
javascript invoice customization

Change position of the address

The position of the invoice address is normally fixed, but with this example we want to change it.

First we have to decide whether the address should be printed on the right or on the left.
For this example let's suppose that it is printed on the right.

In order to move the address (up, down, left, right) we can change the predefined margins values of the address element.

  • Move up/down.
    • To move the address up, change the top property value with a smaller value
      (less space from the top margin means that the address goes up).
    • To move the address down, change the top property value with a bigger value
      (more space from the top margin means that the address goes down).
  • Move left/right.
    • To move the address left, change the left property value with a smaller value
      (less space from the left margin means that the address goes left).
    • To move the address right, change the left property value with a bigger value
      (more space from the left margin means that the address goes right).

Copy and paste the following code into the editor and adjust the values of top and left:

.address_table_right {
  font-size: $font_size;
  top: 4.5cm;
  left: 12.3cm;
  width: 7.5cm;
  height: 3.5cm;
  position: absolute;
}

This works both when the address is printed on the right and when it is printed on the left.
Simply use the correct element: ".address_table_right" for the address on the right and ".address_table_left" for the address on the left.

With this change the invoice address starts now on a different position.

N.B. In previous example it was suggested to use margin-left and margin-top. From october 1st 2022 we recommend to use left and top with width and height attributes instead.
If you are using margin-left and margin-top within your custom css, you now have to replace them with left, top, width and height attributes.

Print the address in bold

This example shows how to print the invoice address in bold.

To do that, we have to add the font-weight:bold property to the address style. The address used in the example is the default one positioned on the right.

Copy and paste the following code into the editor:

.address_table_right {
  font-size: $font_size;
  top: 4.5cm;
  left: 12.3cm;
  width: 7.5cm;
  height: 3.5cm;
  position: absolute;
  font-weight: bold;
}

Example print:
javascript invoice customization

Change font type and font size of the address

This example shows how to print the invoice address with different font and size.

To do this:

  • Add the font-family property to the address style. This is used to define the font type.
  • Add the font-size property to the address style. This is used to define the font size.

If you are printing the address on the right, copy and paste the following code into the editor and replace the name of the font and the size:

.address_table_right {
  font-family: Helvetica;
  font-size: 12pt;
  top: 4.5cm;
  left: 12.3cm;
  width: 7.5cm;
  height: 3.5cm;
  position: absolute;
}

If you are printing the address on the left, copy and paste the following code into the editor and replace the name of the font and the size:

.address_table_left {
  font-family: Helvetica;
  font-size: 12pt;
  top: 5.5cm;
  left: 2.2cm;
  width: 7.5cm;
  height: 3.5cm;
  position: absolute;
}

In both examples you can also change the positions by editing the margin properties. More information Change position of the address.

Reduce space before and after invoice details

The positions of the elements and the space between them is predefined.

In this example we want to:

  • Reduce spaces between address and title.
  • Reduce spaces between details table and final texts.

Copy and paste the following code into the editor:

.section_class_begin {
  margin-top: 0mm; /*reduce the default 10mm */
  margin-left: 12mm;
  margin-right: 12mm;
  width: 100%;
}
.section_class_final_texts {
  margin-top: 0mm; /*reduce the default 5mm */
  margin-bottom: 10mm;
  margin-left: 12mm;
  margin-right: 10mm;
}

With this changes the spaces you have now less space before and after the invoice details.

Example print:
javascript invoice customization

Change the title color

The title text by default is always printed with the same color of the total line.

With this example we want to change the title color without changing the total:

  • Copy the code below.
  • Change the color property value with the color you want.
.title_text {
  font-size: $font_size_title;
  font-weight: bold;
  color: black;
}

The title color is now changed from the original settings.

Change the size of the item rows

With this example we want to change the font size of the item rows:

  • Copy the code below
  • Change the font-size property value with the size you want.
.item_cell {
  font-size: 9pt;
}

Add a separator between items

In this example, we add a separator line between each item row.

  • Copy the code below.
  • Change the border-bottom property, specifying:
    • the width of the line (1px, thin, etc.)
    • the style of the line (solid, dotted, etc.)
    • the color of the line (black, #000000, etc.)
.item_cell {
  border-bottom: thin solid black;
}

Change the total line bottom border

The total text by default is always printed with a double bottom border.

With this example we want to:

  • Remove the bottom border.
    • Change the border-bottom-style property value from double to none. This displays no border.
.total_cell {
  font-size: $font_size_total;
  font-weight: bold;
  color: $color_title_total;
  border-bottom-style: none;
  border-bottom-color: $color_title_total;
  border-bottom-width: 1px;
}
  • Change the border style.
    • Change the border-bottom-style property value with a different type (dotted, dashed, solid, double).
    • Change the border-bottom-width property value with a different value (thin, thick, 1px, 2px,...).
    • Change the border-bottom-color property value with a different color.

The total line style is now changed from the original settings.

Example print:
javascript invoice customization

More space between total text and double underline

In this example we want to change the space between the total line text and the double underline.

The text is in the last row of the details table, and the double underline is done using a bottom border.

To increase or decrease the space in between we can use the padding property, that is used to generate space around an element's content (in this case the text), inside of any defined borders.

To do that we have to:

  • Add a new selector that works specifically on all the cells of the total row.
    • We use the total_cell selector that already exists (see example above).
    • We combine it with the td selector in order to work on each data/cell of the row.
  • Add the padding-bottom property only, and define a value we want.

Copy and paste the following code into the editor:

.total_cell td {
   padding-bottom: 10px;
}

The bottom border distance of the total line is now changed from the original settings.

Example print:
javascript invoice customization

Print a stamp

In this example we want print a text as a stamp over and under the invoice's content.

The text will be printed rotated. For that we will use the css attribute transform.

To do that, we have to:

  • Add a new selector that works specifically on the stamp text.
  • Add the text as last first paragraph, so that it will be under the content.
  • Add the text as last last paragraph, so that it will overlap the content.

Copy and paste the following code into the css editor:

.stamp1 {
    position: absolute;
    transform: translate(-0cm,10cm),rotate(-45deg);
    font-size: 60;
    text-align: center;
    color: #CCCCCCCC;
 }
.stamp2 {
    position: absolute;
    transform: translate(-0cm,16cm),rotate(-45deg);
    font-size: 60;
    text-align: center;
    color: #CCCCCCCC;
}

Copy and paste the following code into the js editor:

function hook_print_header(repDocObj, userParam, repStyleObj, invoiceObj, texts) {
   let stamp = repDocObj.addSection("stamp1");
   stamp.addParagraph("Stamp under text!");
   print_header(repDocObj, userParam, repStyleObj, invoiceObj, texts)
}
function hook_print_footer(repDocObj, texts, userParam) {
   print_footer(repDocObj, texts, userParam)
   let stamp = repDocObj.addSection("stamp2");
   stamp.addParagraph("Stamp over text!");
}

The bottom border distance of the total line is now changed from the original settings.

Example print:
javascript invoice customization

 

Messages d'erreur de la facture QR

Erreur QR-IBAN manquant

@erreur QR-IBAN manquant

@erreur QR-IBAN incorrect

Veuillez vérifier que le code QR-IBAN saisi dans les paramètres de la facture est correct. Veuillez également consulter la section Compte QR-IBAN de notre page Web Facture QR avec utilisation d'un compte spécial QR-IBAN.

@erreur IBAN manquant

@erreur IBAN incorrect

@erreur Adresse : nom/société manquante

Configurez le prénom et le nom de l'expéditeur ou le nom de la société à partir de Fichier → Propriétés fichier (données de base) → Adresse,  et du client dans le tableau Comptes → vue Adresse.

@erreur  Adresse : Code postal manquant

Configurez le code postal de l'expéditeur à partir du menu Fichier → Propriétés fichier (données de base) → Adresse, et du client dans le tableau Comptes → vue Adresse.

@erreur Adresse : lieu manquant

Configurer la localité de l'expéditeur à partir du menu Fichier → Propriétés fichier (données de base) → Adresse, et du client dans le tableau Comptes → vue Adresse.

@erreur Adresse : code du pays manquant

Adresse de l’expéditeur (Payable à) :

Adresse du client (Payable par) :

@erreur Adresse : code du pays incorrect

Le code pays doit comporter deux caractères conformément à la norme ISO 3166-1 (par exemple CH, LI, AT, DE, IT, FR).

@error isrId too long, max 8 chars. Your isrId %1

Le numéro d'adhésion est trop long. La longueur maximale autorisée est de 8 chiffres. Pour plus d'informations Référence QR (QRR).

@error isrId invalid, only digits are permitted. Your isrId %1

Le numéro d'adhésion n'est pas valide. Il ne peut être constitué que de chiffres. Pour plus d'informations Référence QR (QRR).

@error customerNo too long, max 7 digits. Your customerNo %1

Le numéro de client est trop long. La longueur maximale autorisée est de 7 chiffres. Pour plus d'informations Référence QR (QRR).

@error customerNo invalid, only digits are permitted. Your customerNo %1

Le numéro de client n'est pas valide. Il peut être composé seulement de chiffres. Il ne doit pas contenir des lettres de l'alphabet ASCII (A-Z), d'espaces, de séparateurs ou d'autres caractères. Pour plus d'informations Référence QR (QRR).

@error invoiceNo too long, max 7 digits. Your invoiceNo %1

Le numéro de facture est trop long. La longueur maximale autorisée est de 7 chiffres. Pour plus d'informations Référence QR (QRR).

@error invoiceNo invalid, only digits are permitted. Your invoiceNo %1

Le numéro de facture n'est pas valide. Il peut être composé seulement de chiffres. Il ne doit pas contenir des lettres de l'alphabet ASCII (A-Z), d'espaces, de séparateurs ou d'autres caractères. Pour plus d'informations Référence QR (QRR).

@error Nom trop long, 70 caractères maximum

Le nom est trop long. La longueur maximale autorisée est de 70 caractères. Pour plus d'informations Informations techniques.

@error Adresse trop long, 70 caractères maximum

L'adresse est trop long. La longueur maximale autorisée est de 70 caractères. Pour plus d'informations Informations techniques.

@error Numéro maison trop long, 16 caractères maximum

Le numéro maison est trop long. La longueur maximale autorisée est de 16 caractères. Pour plus d'informations Informations techniques.

@error Code postal trop long, 16 caractères maximum

Le code postal est trop long. La longueur maximale autorisée est de 16 caractères. Pour plus d'informations Informations techniques.

@error Localité trop long, 35 caractères maximum

Le texte de la localité est trop long. La longueur maximale autorisée est de 35 caractères. Pour plus d'informations Informations techniques.

@error Code postal+Localité trop long, 70 caractères maximum

Le code postal+localité est trop long. La longueur maximale autorisée est de 70 caractères. Pour plus d'informations Informations techniques.

 

Exemples d'impressions de factures QR

Cette page présente quelques exemples d'impressions possibles de factures QR.

Facture avec paramètres par défaut

Exemple d'impression :
tutorial qr invoice default

Facture avec logo

Via le dialogue Fichier > Configuration Logo :

Exemple de facture avec logo aligné à gauche et texte à droite :
tutorial qr invoice logo left

Exemple de facture avec logo aligné à droite et texte à gauche :
tutorial qr invoice logo right

 

Facture avec logo type papier à en-tête (format A4)

Cet exemple explique comment configurer un logo en pleine page (type papier à en-tête). Une image avec un logo en haut et un pied de page en bas est utilisée. L’objectif est d’imprimer la facture avec :

  • Sur les pages contenant les détails de la facture, le logo et le pied de page sont affichés.
  • Sur la dernière page avec le bulletin QR, seul le logo est affiché, sans le pied de page.

C’est utile, par exemple, si l’on souhaite imprimer une facture QR avec également le pied de page, car normalement le pied de page ne peut être ajouté que si le bulletin QR est exclu de l’impression.

Voici comment procéder :

  • Créez une image au format A4 du papier à en-tête, avec le logo en haut et le pied de page en bas.
    Exemple :


     
  • Insérez l’image créée comme logo via le menu Fichier > Configuration logo.
    • Définissez les dimensions : largeur 21 cm et hauteur 29,7 cm (si les dimensions de l’image sont déjà correctes, vous pouvez ignorer ces réglages).
    • Définissez l’alignement à gauche.
    • La position et l’alignement du texte sont sans importance, car aucun texte ne sera imprimé dans l’en-tête.
  • Utilisez la personnalisation avec le CSS pour modifier les marges du logo.
    Dans le tableau Documents, ajoutez une nouvelle ligne et insérez le CSS en tant que pièce jointe.
    • Dans la colonne ID, saisissez un identifiant (par exemple, logo.css). Il doit se terminer par ".css".
    • Dans la colonne Pièces , double-cliquez sur la cellule et sélectionnez Feuille de style CSS.
    • Dans l’éditeur qui s’ouvre, collez le code suivant :
    • .logo {
        margin-top: 0cm;
        margin-left: 0cm;
        margin-right: 0cm;
      }
  • Configurez certains paramètres dans la boîte de dialogue des paramètres de la facture :
    • Dans la section Impression > En-tête, décochez En-tête de page.
    • Dans la section Impression > En-tête, cochez Logo.
    • Dans la section Impression > En-tête, dans le champ Composition pour l’alignement du logo et de l’en-tête, saisissez le nom de la personnalisation que vous avez défini dans Fichier > Configuration logo > Personnalisation > Nom (par défaut "Logo").
    • Dans la section Code QR, cochez QR sur page séparée.
    • Dans la section Javascript / CSS, dans le champ Nom du fichier CSS, entrez l’ID du fichier CSS que vous avez défini dans le tableau Documents (par exemple logo.css).

Exemple de facture QR, avec logo et pied de page sur la première page, logo et bulletin QR sur la deuxième page :




  

 

 

 

 

 

Facture sans logo et adresse entreprise à gauche

Allez dans la fenêtre Fichier > Configuration Logo :

  • N'ajoutez aucune image de logo
  • Comme Position du texte, entrez les paramètres suivants :
    • Position relative par rapport au logo : À gauche
    • Alignement horizontal : Gauche
  • Allez dans la section Personnalisation et, dans le champ Nom, saisissez un nom pour la personnalisation (par exemple, "Logo").

Paramètres pour l'adresse de l'entreprise sur la page en haut à gauche

Allez maintenant dans la fenêtre de configuration de la facture, dans la section Impression > En-tête :

  • Activez la case En-tête de page.
  • Activez la case Logo (bien qu'aucune image de logo ne soit affichée).
  • Dans le champ Composition pour l'alignement du logo et de l'en-tête, entrez le nom de la personnalisation que vous avez définie précédemment dans la fenêtre Configuration logo > Personnalisation > Nom (par exemple, "Logo").

Paramètres du logo dans la mise en page de la facture

Impression d'exemple:

Exemple de facture avec l'adresse de l'entreprise en haut à gauche sans logo

Facture avec adresse clients à gauche

Via la fenêtre de dialogue des paramètres de la facture, section Adresse client :

  • Définissez la composition des adresses en spécifiant les noms XML des colonnes d'adresses du tableau Comptes.
  • Cochez la case Aligner à gauche pour imprimer l'adresse à gauche et la partie des informations à droite.

    invoice dialog settings address left

Exemple d'impression :
tutorial qr invoice address left

Facture avec les en-têtes et les totaux intermédiaires de façon détaillée

Dans certains cas, il peut être utile d'ajouter des en-têtes et des totaux intermédiaires dans les détails de la facture.

Dans le tableau Écritures, définissez les lignes d'en-tête et les totaux intermédiaires à l'aide de la colonne Type :

  • Lignes d'en-tête : entrez la commande 10:hdr et le texte dans la colonne Description.
  • Lignes de totaux intermédiaires : entrez la commande 10:tot et le texte dans la colonne Description.

    invoice headers and subtotals

Exemple de facture sur plusieurs pages :
tutorial qr invoice with headers and subtotals    tutorial qr invoice with headers and subtotals

Les informations concernant l’insertion de l’adresse de l’expéditeur pour les enveloppes à fenêtre se trouvent dans la section Adresse client de la page Personnalisation de l’impression.


Facture avec adresse de livraison et colonnes Description et Montant

Via le dialogue de paramétrage des factures :

  • Dans la section Adresse du client, cochez la case Adresse de livraison.
  • Dans la section Détails de la facture, définissez :
    • Les noms des colonnes à utiliser, en précisant les noms de colonnes XML du tableau Écritures
    • La largeur de chaque colonne.
    • L'alignement des titres et des textes des colonnes.
  • Dans la section Textes, définissez le texte d'en-tête de chaque colonne.
    Ajoutez la traduction pour chaque langue que vous avez l'intention d'utiliser.

    invoice dialog settings shipping address

Exemple d'impression de la facture avec autres paramètres :
tutorial qr invoice shipping address

Utiliser colonne tableau Écritures

Conditions préalables:

  • Avoir le plan Advanced de Banana Comptabilité Plus.

Outre les colonnes par défaut (Libellé, Quantité, Unité, Prix unitaire et Montant) de l'impression de la facture, vous pouvez ajouter d'autres colonnes à partir du tableau Écritures, y compris celles qui ont été ajoutées manuellement au tableau.

Dans certains cas, il peut être utile d'inclure votre propre colonne (non prédéfinie dans le programme) dans les détails de la facture, comme par exemple une colonne dans laquelle indiquer la date d'exécution d'un travail.

Création d'une colonne :

  • Utilisez la commande Organiser colonnes pour ajouter une colonne dans le tableau Écritures.
  • Créez une colonne nommée DateWork de type Date.
    Le nom XML de chaque colonne du type Date doit commencer par le mot Date (par exemple DateWork, DateExecution, DateXXX).
  • Lors de l'impression de la facture, le programme utilise le format de date défini dans les paramètres de votre système d'exploitation.

    Nouvelle colonne
     
  • Saisissez vos écritures pour créer la facture et indiquez dans cette colonne la date d'exécution du travail.

Via la fenêtre de dialogue des paramètres de la facture :

  • Dans la section Détails de la facture, définissez :
    • Les noms de colonnes à utiliser, en précisant les noms XML des colonnes du tableau Écritures ;
      Saisissez la colonne créée ainsi : T.DateWork (vos propres colonnes doivent être précédées par "T.").
    • La largeur de chaque colonne ajoutée, et adapter celles qui existent déjà.
    • Les alignements des titres et des textes de chaque colonne ajoutée, et adapter celles qui existent déjà.
  • Dans la section Textes, définissez le texte d'en-tête de chaque colonne.
    • Ajouter le texte de la colonne ajoutée et éventuellement adapter les colonnes existantes.
    • Ajoutez la traduction pour chaque langue que vous souhaitez utiliser.
       
    • invoice dialog settings custom column

Avec une personnalisation avancée en Javascript, vous pouvez créer une fonction qui change le format dans lequel la date est imprimée. Pour plus d'informations, voir Use another date format.

Exemple d'impression de la facture :
tutorial qr invoice custom column

Facture avec texte initial et final, notes et salutations

Dans le tableau Écritures, définissez les textes initiaux, les notes et les salutations en utilisant la colonne Type :

  • Texte initial : insérez la commande 10:beg et le texte dans la colonne Libellé.
  • Notes : insérez la commande 10:not et le texte dans la colonne Libellé.
  • Salutations :insérez la commande 10:gre et le texte dans la colonne Libellé.
  • Le texte inséré entre les doubles astérisques (**) est affiché en gras.

    invoice begin and final texts

Via la fenêtre de dialogue des paramètres de la facture :

  • Dans la section Textes, définissez le texte final à inclure immédiatement après les détails de la facture.
    Le texte inséré entre les doubles astérisques (**) est affiché en gras.

    invoice dialog settings texts

Exemple d'impression de la facture :
tutorial qr invoice begin and final texts

Facture sans montant

Cette option est utilisée lorsque vous souhaitez laisser la possibilité de choisir le montant à payer à la personne qui effectue le paiement (par exemple pour un don).
Dans la partie QR, le montant est exclu, laissant une case vide pour saisir le montant à la main.

Dans le tableau Écritures, insérez l'écriture du don sans le montant.

Invoice donation transaction

 

Dans la boîte de dialogue de Paramétrage des factures, dans la section QR Code, cochez la case Exclure le montant de la facture.
invoice settings empty amount on QR

Exemple d'impression de la facture :

Tutorial invoice donation without amount

 

Facture avec descriptions sur plusieurs lignes (facturation intégrée)

Cet exemple pour la facturation intégrée montre comment créer des factures avec des descriptions sur plusieurs lignes.

Les étapes à suivre sont les suivantes :

  • Avec la commande Organiser colonnes, ajoutez une ou plusieurs colonnes de descriptions supplémentaires dans le tableau Écritures.
    Créez des colonnes de type Texte avec le nom "Description" suivi d’un numéro (ex. "Description1", "Description2", "Description3", etc.).
    Le nom XML de chaque colonne doit commencer par le mot "Description" (en anglais) suivi d’un numéro.

    colonnes facture avec descriptions multiples
     
  • Dans les colonnes nouvellement créées, insérez les textes supplémentaires pour les descriptions des factures.
    Le texte de chaque colonne sera affiché sur une nouvelle ligne dans la description de la facture.

    écritures facture avec descriptions multiples
     
  • Via la boîte de dialogue des paramètres facture, dans la section Impression > Détails facture, cochez la case Imprimer les descriptions supplémentaires.

    paramètres facture avec descriptions multiples

À ce stade, si le tableau Écritures contient des colonnes de descriptions supplémentaires et que celles-ci contiennent du texte, ce texte sera ajouté à l'impression de la facture.

Exemple d'impression de facture :
impression facture avec descriptions multiples

Facture avec descriptions sur plusieurs lignes (Offres-Factures)

Cet exemple pour l'application Offres et Factures montre comment créer des factures avec des descriptions sur plusieurs lignes.

  • Dans la boîte de dialogue de création/modification de facture, section Détails de la facture, colonne Description :
    • Saisissez les textes des descriptions.
    • Vous pouvez aller à la ligne et insérer autant de lignes que vous le souhaitez.
    • Vous pouvez également laisser des lignes vides.
    • Vous pouvez insérer un ou plusieurs textes entre deux astérisques pour les mettre en gras (ex. **Texte en gras**).
    • Vous pouvez saisir le montant sur la même ligne que la description multi-lignes, ou bien sur une nouvelle ligne (voir image).

      paramètres facture avec descriptions multiples

Lors de l’impression de la facture, les descriptions seront affichées sur plusieurs lignes, comme dans la boîte de dialogue.

Exemple d'impression de facture :
impression facture avec descriptions multiples

 

 

Facture avec colonne de Remise par article

Cet exemple pour la facturation avec l’application Offres et Factures montre comment ajouter la colonne Remise de l'article dans les détails de la facture.

Prérequis :

Les étapes à suivre sont les suivantes :

  • Créez les factures en utilisant la colonne Remise. Indiquez un pourcentage ou une valeur.

    colonne remise facture
     
  • Via le dialogue des paramètres de la facture :
    • Dans la section Impression > Détails de la facture, ajoutez la colonne Remise, définissez les largeurs de colonnes ainsi que l’alignement des titres et du texte.
      • Description;Quantity;ReferenceUnit;UnitPrice;Discount;Amount
        35%;10%;10%;15%;15%;15%
        left;center;center;right;right;right
        left;center;center;right;right;right
    • Dans la section Textes > En-têtes des colonnes de détails de la facture, définissez pour chaque langue les textes des en-têtes de tableau, en ajoutant également le texte pour la colonne Remise.
      • Description;Quantité;Unité;Prix unitaire;Remise;Montant

Exemple impression fatcure: 

 

invoice item discount

Cet exemple montre comment ajouter et imprimer les images des produits dans les détails de la facture.

Prérequis

Étapes

  1. Ajouter les images des produits.
    • Enregistrez les images de chaque produit.
      Utilisez le même dossier que celui du fichier .ac2 ou un sous-dossier.
      Les formats pris en charge sont PNG et JPG.
      Utilisez des images de petite taille pour réduire la taille du fichier PDF généré.
  2. Modifier le tableau Articles
    • Ajouter la colonne Links.
      Dans le tableau Articles, rendez visible la colonne Links avec la commande Organiser les colonnes.
    • Lier les images aux articles.
      Dans la colonne Links du tableau Articles, ajoutez le lien vers l’image pour chaque produit.
      Cliquez sur l’icône en haut à droite de la cellule et sélectionnez l’image correspondante.
  3. Ajouter le tableau Documents.
  4. Ajouter le code JavaScript comme pièce jointe dans le tableau Documents.
  5. Configurer les paramètres de mise en page de la facture.
    • Dans les Paramètres de la facture :
      • Dans la section Détails de la facture, ajoutez les colonnes "I.Links" (colonne pour les images) et "Number" (numéro d'article).

        I.Links;Number;Description;Quantity;ReferenceUnit;UnitPrice;Amount
        10%;10%;30%;10%;10%;15%;15%
        left;left;left;right;center;right;right
        left;left;left;right;center;right;right
         
      • Dans la section Textes, ajoutez les en-têtes des colonnes (ex. "Image;Article;Description;Quantité;Unité;Prix unitaire;Montant").
      • Dans la section Javascript / CSS > Nom du fichier JS saisissez l’ID de la pièce jointe contenant le code JavaScript (ex. "monFichier.js").

Les images des produits seront également incluses dans l’impression de la facture.

Exemple d’impression :

Lettre avec bulletin QR Suisse

Lettre avec bulletin QR Suisse

Les Extensions sont des programmes supplémentaires qui étendent les fonctionnalités de Banana Comptabilité Plus.
Cette extension permet d'imprimer tout simplement des bulletins QR pour la Suisse:

  • bulletin QR vide
  • lettres ou factures QR avec un seul destinataire ou sans destinataire

Diverses options (avec ou sans montant, avec ou sans données client, etc.) peuvent être sélectionnées pour obtenir un large éventail de variantes.

 

Si vous désirez une impression multiple (plusieurs destinataires), utilisez l'Extension QR-Facture sérielle, qui nécessite cependant le plan Advanced de Banana Comptabilité Plus.

Cette extension est très utile par exemple pour:

  • demandes de donations, où le payeur décide librement du montant à verser
  • Paiements pour les associations, où le payeur peut choisir différents montants
  • Factures individuelles avec des montants en CHF ou en EUR

Notes:

  • Si vous choisissez d'inclure les données du client, une seule impression est possible (c'est-à-dire que vous devez retaper manuellement les données de chaque destinataire.
  • Il ne peut être utilisé qu'avec un compte IBAN. Il n'est pas possible d'utiliser un compte IBAN.
    Les bulletin QR sont de type non-référence. Le QR ne peut donc pas être utilisé pour enregistrer automatiquement les paiements.
  • Il s'agit d'une extension qui ne peut pas être utilisée comme modèle de facture.
     

Conditions préalables

Pour utiliser cette extension, il est nécessaire de :

  • Avoir le plan Professionnel ou Advanced de Banana Comptabilité Plus.

Créer un bulletin avec un code QR

Créez des lettres-factures avec QR de cette manière :

  • Ouvrez un fichier Banana Plus existant ou créez-en un nouveau. Vous pouvez utiliser cette extension avec n'importe quel type de fichier Banana Plus.
  • Dans le menu Extensions → Gérer les extensions, recherchez et installez l'extension Lettre avec bulletin QR Suisse.
  • Lancez l'extension à partir du menu Extensions > Lettre avec bulletin QR Suisse.
  • Définissez vos données à travers la boîte de dialogue Paramètres (voir ci-dessous).

Dialogue des paramètres

Exécutez l'extension à partir du menu ExtensionsLettre avec bulletin QR Suisse.

La boîte de dialogue Paramètres de l'extension s'ouvre. À partir de là, vous pouvez définir les informations nécessaires à la création de la lettre avec le bulletin QR ou le QR vide (en fonction des paramètres saisis).

settings single letter-invoice swiss qr

Les champs sont les champs par défaut pour l'impression correcte du QR selon la norme spécifique. Il n'est pas possible de saisir d'autres informations.

Les paramètres sont répartis dans les groupes suivants :

  • Inclure dans la lettre
    • Sélectionnez les éléments à inclure dans l'impression de la lettre. 
  •   Inclure dans le code QR
    • Sélectionne les éléments à inclure dans le code QR.
  • Devise / Montant
    • Définissez la devise, le montant et toute information supplémentaire à inclure dans le QR.
  • Adresse de l'expéditeur (à l'ordre de)
    • Définir l'adresse de l'expéditeur.
  • Adresse du client (à payer par)
    • Définissez l'adresse du client.
    • Peut être inclus ou exclu du QR.
  • Date
    • Indiquez la date de la lettre.
  • Texte de la lettre
    • Saisissez le texte de la lettre.
  • Langue
    • Sélectionnez la langue dans laquelle le bulletin QR doit être imprimé.
  • Styles
    • Définissez le type et les dimensions du texte de la lettre.

Inclure dans la lettre

Vous pouvez décider ici de ce que vous souhaitez imprimer dans la lettre. Si aucune des options n'est sélectionnée, vous obtiendrez une page blanche avec le bulletin QR au bas de la page.

  • Logo
    • Cochez la case pour inclure le logo dans l'en-tête.
    • Le logo est défini avec la commande menu Fichier > Configuration Logo où vous pouvez également définir la taille, choisir la façon de l'aligner (gauche, centre, droite), et également choisir la façon d'aligner l'adresse par rapport au logo.
  • Nom du Logo
    • Saisissez le nom de la personnalisation du logo défini dans le menu Fichier > Configuration logo, en respectant les majuscules et les minuscules.
  • Adresse de l'expéditeur
    • Choisissez d'inclure ou non l'adresse de l'expéditeur dans la lettre.
  • Adresse du client
    • Choisissez si vous souhaitez inclure l'adresse du client dans la lettre.
  • Date
    • Choisissez si vous voulez inclure la date dans la lettre.
  • Texte libre
    • Choisissez d'inclure ou non du texte libre dans la lettre.

Inclure dans le code QR

Ici, vous pouvez décider de ce que vous voulez imprimer sur le code QR.

  • Bord de séparation
    • Choisissez d'inclure ou non la bordure de séparation en pointillés dans le bulletin QR.
  • Ciseaux à symbole
    • Choisir d'inclure ou non le symbole des ciseaux dans le bulletin QR.
  • Montant
    • Choisir si vous voulez inclure le montant dans le bulletin QR.
      S'il n'est pas inclus, une case vide sera laissée pour une saisie manuelle.

Devise / Montant

Dans la section Devise/Montant, vous trouverez les paramètres suivants :

  • Devise
    • Sélectionner la devise, CHF ou EUR.
  • Montant
    • Entrer le montant (par exemple, 1234,56).
  • Informations complémentaires
    • Saisir des informations supplémentaires sur la facture à inclure dans le bulletin QR.

Adresse de l'expéditeur (payable à)

Choisir comment définir l'adresse de l'expéditeur, qui apparaîtra dans la section "Payable à" du bulletin QR et dans la lettre.

  • Utiliser l'adresse de comptabilité
    • Affichez cette option pour utiliser l'adresse saisie dans le menu Fichier > Propriétés du fichier (Données de base) > Section Adresse de votre fichier. Vous devez avoir saisi au moins les données dans les champs Société, Adresse1, Code postal, Localisation, Code pays, IBAN.
    • Vous pouvez également ne pas afficher cette option et saisir l'adresse manuellement à l'aide des options ci-dessous.
  • Nom
    • Saisisser votre prénom et votre nom ou le nom de votre organisation.
  • Rue
    • Saisir la rue.
  • Numéro
    • Saisir le numéro de la maison.
  • Boîte postale
    • Saisir la boîte postal.
  • Pays et lieu
    • Saisir le lieu.
  • Code nation
    • Saisir le code nation (es. CH, LI).
  • IBAN
    • Saisir le compte IBAN.
      Un compte IBAN doit être utilisé. Il n'est pas possible d'utiliser un compte QR-IBAN.

Adresse du client (payable par)

Choisir si inclure ou non l'adresse du client, qui apparaîtra dans la section "Payable par" du bulletin QR (max. 3 lignes permises - veuillez aussi voir Les adresses).

Dans la section Adresse du client, les paramètres suivants sont définis :

  • Inclure le client
    • Afficher cette option pour inclure l'adresse du client dans le bulletin QR.
      S'il n'est pas inclus, une case vide sera laissée pour une saisie manuelle.
  • Nom
    • Saisir votre prénom et votre nom ou le nom de votre organisation.
  • Rue
    • Saisir la rue.
  • Numéro de maison
    • Saisisir le numéro de la maison.
  • Boîte postale
    • Saisir la boîte postal.
  • Lieu
    • Saisir le lieu
  • Code nation
    • Saisir le code nation (ex. CH, LI).

Date

Dans la section Date, saisir la date de la lettre.

Texte de la lettre

Dans la section Texte de la lettre, vous pouvez ajouter le texte de votre lettre. S'il s'agit d'un texte long, le bulletin QR passera automatiquement à la page suivante.

  • Text libre
    • Saisir le texte de la lettre.
    • Il peut s'insérer sur plusieurs lignes.
    • Vous pouvez appliquer le style gras en incluant le texte souhaité entre les doubles astérisques ** (par exemple, **texte1 texte2** texte3 = texte1 texte2 texte3).
    • Vous pouvez saisir des codes spécifiques, qui seront remplacés par leurs valeurs réelles lors de l'impression :
      • <AdditionalInformation> est converti en la valeur saisie dans le champ Informations complémentaires des paramètres.
        (par exemple, "N° de facture <information complémentaire>" = "N° de facture 2022-001").
      • <Currency> est converti dans la devise de la facture, définie dans le champ Devise des paramètres.
      • <Amount> est converti en montant total de la facture, défini dans le champ Montant des paramètres.
    • Exemple:
      Par la présente, nous vous transmettons le détail de la facture n° <AdditionalInformation> totalisant <Currency> <Amount> = Nous vous transmettons le détail de la facture n° 2022-001 totalisant CHF 4'000.

Langue

Dans la section Langue, sélectionner la langue dans laquelle le bulletin QR doit être imprimé.

Les langues disponibles sont l'italien, le français, l'allemand et l'anglais.

Styles

  • Type de police
    • Entrer la police de caractères (Helvetica, Arial, Times New Roman, etc.).
  • Taille de la police
    • Entrer la taille de la police.

Résolution des problèmes

Consultez la page Messages d'erreur de la documentation pour plus d'informations.

paola
URL Stable release
https://github.com/BananaAccounting/Switzerland/raw/master/report/customer/invoice/ch.banana.ch.app.emptyqr.sbaa
Short Description
Cette extension permet de créer facilement des bulletins QR vides pour la Suisse, des lettres avec bulletins QR (avec ou sans destinataire) ou des factures QR individuelles. Nécessite Banana Comptabilité Plus.
Country
Suisse
Publisher
Banana.ch
Extension type
Productivité
Help ID
ch.banana.ch.app.emptyqr
URL Beta release
https://github.com/BananaAccounting/Switzerland/raw/master/report/customer/invoice/beta/ch.banana.ch.app.emptyqr.sbaa
Release Date Stable
Release Date Beta

Facture QR en série à partir d'une liste de données dans Excel

Facture QR en série à partir d'une liste de données dans Excel

Cette extension vous permet d'imprimer rapidement des factures en nombre avec des QR-Codes suisses à partir d'une liste de données Excel. Idéal pour envoyer des factures en vrac à des clients ou à des membres d'une association.

Les Extensions sont des programmes supplémentaires qui étendent les fonctionnalités de Banana Comptabilité Plus.
Cette extension vous permet de créer des factures QR Suisses pour plusieurs destinataires avec la possibilité d'insérer un texte de lettre personnalisé. Les données peuvent être extraites d'Excel.

qr invoice from excel

Conditions préalables

Pour utiliser cette extension, vous devez :

Description

L'extension convient pour :

  • Associations ou personnes qui disposent déjà de toutes les données relatives aux factures dans Excel et qui doivent créer des factures QR :
    • Vous prenez les données d'Excel.
    • Insérez-les dans Banana Plus par copier-coller.
    • Imprimez les factures QR.
  • Associations ou personnes qui partent de zéro et doivent conserver les données des utilisateurs et créer des factures QR :
    • Vous insérez manuellement les données dans Banana Plus.
    • Les factures QR sont imprimées.

Notes:

  •  Il ne peut être utilisé qu'avec un compte IBAN. Il n'est pas possible d'utiliser un compte QR-IBAN.
     Les bulletins QR sont de type non-référence. Le QR ne peut donc pas être utilisé pour enregistrer automatiquement les paiements.
  • Il s'agit d'une extension qui ne peut pas être utilisée comme modèle de facture.
  • L'extension ne fonctionne pas avec d'autres types de fichiers (par exemple, les fichiers comptables).

Création de lettres-factures QR

Les lettres de facturation QR peuvent être créées de cette manière :

  • Téléchargez et ouvrez le modèle.
  • Dans Banana Plus, saisissez l'adresse de votre organisation à partir du menu Fichier > Propriétés du fichier (Données de base) > Section Adresse.
  • Si vous avez déjà toutes les données de la facture dans un fichier Excel, transférez-les vers Banana Plus :
    • Dans Excel, adaptez et triez les colonnes pour qu'elles ressemblent à celles de Banana Plus.
    • Dans Excel, sélectionnez ou filtrez les lignes dont vous avez besoin.
    • Copiez les lignes d'Excel et collez-les dans Banana Plus.
  • Si vous ne disposez pas d'un fichier Excel dans lequel puiser les données :
    • Commencez à travailler directement dans Banana Plus.
    • Insérer manuellement les données de la facture dans les colonnes appropriées de la Table QRCode.
  • Imprimez les factures :
    • Exécutez l'extension à partir du menu Extensions > Factures QR d'Excel.
    • Décidez des éléments à inclure dans la partie lettre et dans la QR.
    • Indiquez les factures que vous souhaitez imprimer.
    • Insérer le texte de la lettre contenant les détails de la facture.

Vos données Excel

L'extension est conçue pour les associations, les organisations ou les particuliers qui disposent de données dans Excel et souhaitent imprimer des factures avec le QR.

Avec quelques petits ajustements au fichier Excel, vous pouvez utiliser vos données, les transférer dans Banana Plus avec un copier-coller, et créer immédiatement des factures QR.                             

  • Dans Excel, vous devez avoir les mêmes colonnes que dans Banana Plus (voir Tableau QRCode).
  • Il est très utile d'avoir les colonnes dans le même ordre. Il est plus facile de copier des données : vous pouvez copier directement des lignes ou une série de colonnes consécutives.
  • Si, par contre, les colonnes ne sont pas dans le même ordre, vous devrez copier/coller colonne par colonne.

QR-Fattura da Excel

Tableau des QR codes

Cette extension utilise le modèle déjà préparé pour saisir les données de la facture.

  • Le modèle consiste en un tableau QRCode préétabli avec les colonnes nécessaires.
  • Les colonnes sont prédéfinies pour l'impression correcte du QR selon la norme spécifique. Les informations/colonnes supplémentaires ne peuvent pas être utilisées.
  • Chaque ligne du tableau représente une facture, dans laquelle vous devez indiquer le numéro de facture, l'adresse du destinataire et les montants des activités à facturer.
  • Chaque activité a sa propre colonne avec son montant.
  • Vous pouvez ajouter autant d'activités que vous souhaitez (voir Colonnes de montants d'activités).
  • Le total de la facture est la somme des différentes activités.
  • Sur la facture, vous verrez un tableau avec le détail des activités et des montants.
  • Vous pouvez décider d'inscrire le total de la facture sur le bulletins QR ou de le laisser vide afin que la personne qui paie la facture puisse décider du montant (par exemple, pour un paiement échelonné ou un paiement volontaire plus élevé).

Pour insérer les données de la facture dans le tableau QRCode de Banana Plus, vous pouvez les copier directement du tableau Excel :

  • Dans Excel, sélectionnez ou filtrez les lignes dont vous avez besoin, puis copiez-les.
  • Allez sur Banana Plus et collez-les
  • Vérifiez que les données ont été copiées dans les bonnes colonnes.  

multiple letter-invoice with swiss qr

Les colonnes

Les colonnes de la table QRCode sont les suivantes :

  • Id (Facture)
    • Insérer le numéro de la facture.
  • Préfixe
    • En option.
    • Entrez le préfixe du destinataire.
    • Il n'est imprimé que dans l'adresse de la facture (section lettre). Il n'est pas imprimé dans le bulletin QR.
  • Nom
    • Saisissez le nom et le prénom du destinataire.
  • Adresse
    • Saisissez l'adresse postale du destinataire.
    • Vous pouvez saisir l'adresse complète (rue et numéro de maison).
  • Numéro de la maison
    • En option.
    • Entrez le numéro de maison du destinataire.
    • Vous pouvez saisir le numéro de maison dans une colonne séparée.
  • Code postal
    • Veuillez saisir le code postal.
  • Lieu
    • Veuillez entrer le lieu
  • Code pays
    • En option.
    • Veuillez entrer le code du pays.
    • Si vous ne saisissez rien, le code pays utilisé par défaut est toujours CH.
  • Activité, Activité1, Activité2, ...
  • Informations complémentaires
    • En option.
    • Vous pouvez saisir des informations supplémentaires qui seront incluses dans le bulletin QR, dans la section "Informations supplémentaires".
  • Texte variable
    • En option.
    • Vous pouvez saisir un texte spécifique pour chaque facture et l'insérer automatiquement dans le texte de la lettre (voir Texte de la lettre).
  • Devise
    • En option.
    • Vous pouvez spécifier la devise à utiliser (CHF ou EUR).
    • Si vous ne saisissez rien, la devise utilisée par défaut est toujours le CHF.
    • Affichez la colonne avec la commande Organiser Colonnes                 

Colonnes du montant de l'activité

Dans les colonnes d'activité, vous saisissez les montants à facturer.

Chaque activité a sa propre colonne avec le montant correspondant. Il y a déjà trois colonnes prédéfinies dans le tableau. Vous pouvez ajouter autant de colonnes pour les activités que vous le souhaitez ou supprimer celles dont vous n'avez pas besoin.

Pour ajouter et personnaliser des colonnes pour les activités:

  • Ajouter une nouvelle colonne.
    • Exécutez la commande du menu Données > Organiser colonnes.
    • Cliquez sur Ajouter pour ajouter une nouvelle colonne.
      IMPORTANT : Le nom XML de chaque colonne doit commencer par le mot "Amount" (en majuscule) suivi d'un nombre (par exemple, Amount1, Amount2, Amount3, etc.).
      Dans les champs Name et Xml Name, entrez par exemple Amount3, et dans le champ Data Type, sélectionnez Amount. 

       multiple letter-invoice with swiss qr

 

  • Modifier les noms des tâches (en-têtes de colonne).
    • Exécutez la commande du menu Données > Organiser les colonnes.
    • Dans le champ En-tête, saisissez le texte de l'activité (par exemple, "Activité 3", "18/12/2021 Splügen").
      Les textes sont utilisés sur l'impression dans le tableau des détails de la facture.

  Remarque : les factures sans montant (lignes dont les colonnes d'activité sont toutes vides) sont automatiquement exclues de l'impression.

Paramètres de dialogue

Exécutez l'extension à partir du menu Extensions > QR-Factures d'Excel.

La boîte de dialogue des Paramètres de l'extension s'ouvre. À partir de là, vous pouvez définir les informations requises pour créer l'impression de la facture.

settings multiple letter-invoice swiss qr

Les champs sont les champs par défaut pour l'impression correcte du QR selon la norme spécifique. Il n'est pas possible de saisir d'autres informations.

Les paramètres sont répartis dans les groupes suivants :

  •  Inclure dans la lettre
    • Sélectionnez les éléments à inclure dans l'impression de la lettre.
  • Inclure dans le code QR
    • Sélectionnez les éléments à inclure dans le bulletin QR.
  • Données du tableau
    • Sélectionne les lignes du tableau à utiliser dans l'impression et les données à inclure.
  • Adresse de l'expéditeur (à payer à)
    • Définir l'adresse de l'expéditeur.
  • Date
    • Indiquez la date de la lettre..
  • Texte de la lettre
    • Saisissez le texte de la lettre.
  • Langue
    • Sélectionnez la langue dans laquelle le QR doit être imprimé.
  • Styles
    • Définissez le type et les dimensions du texte de la lettre.

Inclure dans la lettre

Vous pouvez décider ici de ce que vous souhaitez imprimer dans la lettre. Si aucune des options n'est sélectionnée, vous obtiendrez une page blanche avec le bulletin QR au bas de la page.

  • Logo
    • Cochez la case pour inclure le logo dans l'en-tête.
    • Le logo est défini avec la commande menu Fichier > Configuration Logo où vous pouvez également définir la taille, choisir la façon de l'aligner (gauche, centre, droite), et également choisir la façon d'aligner l'adresse par rapport au logo.
  • Nom du Logo
    • Saisissez le nom de la personnalisation du logo défini dans le menu Fichier > Configuration logo, en respectant les majuscules et les minuscules.
  • Adresse de l'expéditeur
    • Choisissez d'inclure ou non l'adresse de l'expéditeur dans la lettre.
  • Adresse du client
    • Scegli se includere l'indirizzo del cliente nella lettera.
  • Data
    • Choisissez si vous souhaitez inclure l'adresse du client dans la lettre.
  • Texte libre
    • Choisissez d'inclure ou non du texte libre dans la lettre.

Inclure dans le code QR

Ici, vous pouvez décider ce que vous voulez imprimer sur le code QR.

  • Bordure de séparation
    • Choisissez d'inclure ou non la bordure de séparation en pointillés dans le bulletin QR.
  • Symbole des ciseaux
    • Choisissez d'inclure ou non le symbole des ciseaux dans le bulletin QR.
  • Montant
    • Choisissez si vous voulez inclure le montant de chaque facture.
    • S'il est exclu, une case vide sera laissée pour une saisie manuelle du montant.

Données du tableau

Décidez pour quelles lignes de la table QRCode vous voulez créer la facture.
Une facture est créée pour chaque ligne indiquée.
Un rapport unique est créé, contenant toutes les factures sélectionnées dans l'ordre.

  • Lignes à imprimer
    • Pour imprimer toutes les lignes, saisissez l'astérisque *.
    • Pour imprimer des lignes spécifiques
      • Saisissez le nombre de lignes séparées par le virgule (par exemple, "1,2,3").
      • Saisissez une intervalle de lignes (de... à...), en indiquant la première ligne et la dernière ligne séparées par le tiret "-" (par exemple, "1-5").
  • Inclure les détails
    • Choisissez si vous voulez inclure un tableau avec les détails de la facture.
    • Toutes les colonnes d'activité sont listées avec leurs montants respectifs et le total final.
    • Si une colonne d'activité n'a pas de montant, elle est automatiquement exclue des détails. 

Adresse de l'expéditeur (à l'ordre de)

Choisissez comment définir l'adresse de l'expéditeur qui apparaîtra dans la section "Payable à" du bulletin QR et dans la lettre.

  • Utiliser l'adresse des comptes créditeurs
    • Affichez cette option pour utiliser l'adresse saisie dans le menu Fichier > Propriétés du fichier (Données de base) > Section Adresse de votre fichier. Vous devez avoir saisi au moins les données dans les champs Société, Adresse1, Code postal, Localisation, Code pays, IBAN.
    • Vous pouvez également ne pas afficher cette option et saisir l'adresse manuellement à l'aide des options ci-dessous.
  • Nom
    • Veuillez saisir votre nom et votre prénom.
  • Rue
    • Veuillez entrer dans la rue.
  • Numéro de la maison
    • Veuillez entrer le numéro de la maison.
  • Code postal
    • Veuillez saisir le code postal.
  • Lieu
    • Veuillez entrer le lieu.
  • Code pays
    • Veuillez entrer le code du pays.
  • IBAN
    • Veuillez saisir le compte IBAN.  

Date

Dans la section Date, saisissez la date de la lettre. La date peut également être accompagnée du lieu (par exemple, Lugano, 05.04.2022) et peut être saisie dans n'importe quel format (par exemple, Lugano, 5 avril '22).
Il n'est pas possible de modifier la position de l'endroit où la date apparaît dans la facture.

Texte de la lettre

Dans la section Texte de la lettre, vous pouvez ajouter le texte de votre lettre. Dans la section Texte de la lettre, vous pouvez ajouter le texte de votre lettre. S'il s'agit d'un texte long, le QR-Bulletin passera automatiquement à la page suivante.

  • Titre
    • Entrez le titre/objet de votre lettre.
    • Può essere inserito su più righe.
    • Il testo viene impostato automaticamente in grassetto.
  • Testo iniziale
    • Inserisci un testo per la prima parte della lettera.
    • Il peut être saisi sur plusieurs lignes.
    • Le texte est automatiquement mis en gras.
  • Texte final
    • Saisissez un texte pour la partie finale de la lettre.
    • Il peut être inséré sur plusieurs lignes.
    • Le texte est inséré automatiquement à la fin de la lettre.

Notes:

  • Les détails de la facture (tableau des éléments facturés), lorsqu'ils sont inclus, sont automatiquement insérés entre le texte initial et le texte final.
  • Dans ces trois champs, vous pouvez saisir des codes, qui seront remplacés par leurs valeurs réelles lors de l'impression :   
     
    • <AdditionalInformation> est converti en la valeur contenue dans la colonne Additional Information (par exemple, "Invoice No. <AdditionalInformation>" = "Invoice/facture No. 2022-001").
    • <Currency> est converti dans la devise de la facture.
    • <Amount> est converti en montant total de la facture.
    • <VariableText> est converti en la valeur contenue dans la colonne Texte Variable.
    • <Notes> est converti en la valeur contenue dans la colonne Notes.
  • Exemple :
    Nous vous transmettons par la présente le détail de la facture n° <AdditionalInformation> pour un total de <Currency><Amount> = Nous vous transmettons par la présente le détail de la facture n° 2022-001 pour un total de CHF 4'000.    

Langue

Dans la section Langue, sélectionnez la langue dans laquelle le bulletin QR et l'en-tête du tableau des détails doivent être imprimés.

Les langues disponibles sont l'italien, le français, l'allemand et l'anglais.

Styles

  • Type de police
    • Entrez le type de police (Helvetica, Arial, Times New Roman, etc.).
  • Taille de la police
    • Entrez la taille de la police.
  • CSS
    • Optionnel.
    • Vous pouvez modifier l'apparence de l'impression (mise en forme du texte, positionnement de l'adresse, etc.) en insérant le code CSS pour personnaliser le style.

Personnalisation CSS

La feuille de style en cascade (CSS) est un langage qui permet de personnaliser l'apparence des pages web, et un sous-ensemble de la spécification CSS est également utilisé dans Banana pour préparer les rapports. L'extension "Facture QR en série à partir d'Excel" est formatée à l'aide d'une feuille de style CSS. Il est possible de personnaliser l'impression du rapport en modifiant le CSS.

Les propriétés définies dans le CSS personnalisé étendront ou écraseront les styles de la feuille de style par défaut.

Pour ajouter un code CSS personnalisé :

  • Exécuter l'extension depuis le menu Extensions.
  • Dans les paramètres de l'extension, insérez le code dans Styles > CSS.

Exemple 1 : Changer la position de l'adresse

Pour déplacer l'adresse (en haut, en bas, à gauche, à droite), vous devez modifier les valeurs par défaut des marges de l'élément "customer-address".

  • Déplacement vers le haut/bas.
    • Pour déplacer l'adresse vers le haut, modifiez la valeur de la propriété margin-top avec une valeur plus petite.
    • Pour déplacer l'adresse vers le bas, modifiez la valeur de la propriété margin-top avec une valeur plus grande.
  • Déplacement à gauche/droite.
    • Pour déplacer l'adresse vers la gauche, modifiez la valeur de la propriété margin-left avec une valeur plus petite.
    • Pour déplacer l'adresse vers la droite, modifiez la valeur de la propriété margin-left avec une valeur plus grande.

Dans les paramètres de l'extension, dans Styles > CSS, copiez et collez le code suivant et ajustez les valeurs de margin-top et margin-left.

.customer-address {
   margin-top: 4.5cm;
   margin-left:12.3cm;
}

Dépannage

Pour plus d'informations, consultez la page Messages d'erreur de la documentation.

Informations correspondantes

Les données du tableau QRCode peuvent également être utilisées pour imprimer des étiquettes.

isabelle.pasini
URL Stable release
https://github.com/BananaAccounting/Switzerland/raw/master/report/customer/invoice/ch.banana.ch.app.letterqrmultiple.sbaa
Short Description
Cette extension vous permet de créer des factures QR pour la Suisse destinées à plusieurs destinataires, même à partir d'Excel, avec la possibilité d'insérer un texte de lettre personnalisé.
Nécessite le plan Banana Accounting Plus - Advanced.
Country
Suisse
Publisher
Banana.ch
Extension type
Productivité
Help ID
ch.banana.ch.app.letterqrmultiple
URL Beta release
https://github.com/BananaAccounting/Switzerland/raw/master/report/customer/invoice/beta/ch.banana.ch.app.letterqrmultiple.sbaa
Release Date Stable
Release Date Beta