Insérer des informations complémentaires ou des notes importantes dans l'image PDF pour les factures XML

Les factures XML peuvent contenir des informations importantes qui n'ont pas besoin d'être extraites, mais qui devraient être visibles dans les factures pour aider les opérateurs Verify à faire leur travail. Il peut s'agit d'informations de contact ou d'instructions spéciales, par exemple. Un champ de note unique à cet effet peut être affiché à la fin de l'image PDF.

Pour activer cette possibilité, le champ InvoiceNote est situé à l'extrémité de la catégorie Champs dans l'onglet Champs du Mappeur XML. L'élément XML <Notes></Notes> est mappé à cela.

Pour les normes de factures XML qui utilisent un seul élément remarque pour des informations complémentaires

Cette option est automatiquement intégrée aux normes de factures XML prises en charge qui mettent des informations supplémentaires dans un seul élément XML (Svefaktura, OIOUBL, OIOXML, XML Général).

  • Si l'élément <Notes> se trouve à l'emplacement prévu, les informations qu'il contient sont ajoutées au bas de la facture sous forme d'annexe (si les informations sont assez longues, des pages annexes supplémentaires seront ajoutées).
  • Si l'élément se trouve dans la facture, mais pas au bon emplacement, vous pouvez mapper les informations avec le champ InvoiceNote.
  • Si l'élément existe dans le XML mais qu'il est vide, rien ne s'affichera dans l'image de la facture.
  • XLS peut être utilisé en lien avec le champ InvoiceNote pour inclure l'ensemble du code XML dans l'image PDF (voir les exemples ci-dessous).

Pour les normes de facture XML qui permettent d'avoir plusieurs éléments pour des informations complémentaires

Les normes de facture XML telles que E2B et Finvoice permettent d'ajouter des informations supplémentaires aux factures à partir de plusieurs éléments XML. Pour pouvoir ajouter ces informations au bas de ces factures, les fragments XLS doivent être spécifiés dans le champ InvoiceNote :

  1. Lorsque vous êtes dans le Mappeur XML en train d'optimiser une définition de facture E2B ou Finvoice, sélectionnez l'onglet Champs dans la partie droite de la fenêtre, développez la section Champs, puis sélectionnez le champ InvoiceNote qui se trouve au bas de la liste.
  2. Dans l'onglet Règles de mappage des champs qui se trouve dans la partie gauche de la fenêtre vers le bas, sélectionnez Utiliser XSL.
  3. Collez le fragment XLS approprié au-dessous dans la zone de texte :
    • Fragment E2B

Le premier échantillon de code devrait être utilisé si un espace de nom XML par défaut est déclaré dans le fichier XML utilisant xmlns, tel que <Invoice xmlns="http://www.e2b.no/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" :

<xsl:template match="/">
     <xsl:for-each select="x:Invoice/x:InvoiceHeader/x:FreeText">
               <xsl:value-of select="."/>
               <xsl:text>&#13;</xsl:text>
     </xsl:for-each>
</xsl:template>

Si une telle déclaration est introuvable, utilisez ce fragment de code :

<xsl:template match="/">
     <xsl:for-each select="Invoice/InvoiceHeader/FreeText">
               <xsl:value-of select="."/>
               <xsl:text>&#13;</xsl:text>
     </xsl:for-each>
</xsl:template>
  • Fragment Finvoice

Le premier échantillon de code devrait être utilisé si un espace de nom XML par défaut est déclaré dans le fichier XML utilisant xmlns, tel que <Invoice xmlns="http://www.e2b.no/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance :

<xsl:template match="/">
     <xsl:for-each select="x:Finvoice/x:SpecificationDetails/x:SpecificationFreeText">
               <xsl:value-of select="."/>
               <xsl:text>&#13;</xsl:text>
     </xsl:for-each>
</xsl:template>

Si une telle déclaration est introuvable, utilisez ce fragment de code :

<xsl:template match="/">
     <xsl:for-each select="Finvoice/SpecificationDetails/SpecificationFreeText">
               <xsl:value-of select="."/>
               <xsl:text>&#13;</xsl:text>
     </xsl:for-each>
</xsl:template>
  1. Cliquez sur Extraire et vérifiez que la valeur du commentaire extrait s'affiche dans le champ InvoiceNote dans la liste, puis cliquez sur l'onglet Image pour vous assurer qu'il apparaît dans l'image de la facture.

Déterminez si les modifications doivent s'appliquer à toutes les factures ou uniquement à celles de la définition de facture XML actuelle. Cliquez sur Enregistrer la définition XML pour enregistrer la modification pour la définition de facture XML actuelle uniquement (c'est-à-dire le fournisseur actuel). Cliquez sur Enregistrer le profil XML si vous souhaitez que la règle s'applique à toutes les factures XML qui correspondent au profil de facture XML quelle que soit la définition de facture XML.

  1. N'oubliez pas de supprimer les factures et les définitions de facture qui sont liées à la définition de facture XML optimisée avant de réinterpréter les factures. (Plus d'informations.)
Remarque Chaque définition de facture E2B ou Finvoice dans laquelle une note ou des informations supplémentaires doivent être incluses dans l'image PDF doit être optimisé de cette façon pour que cela soit possible.

Exemples

Suivez les étapes telles qu'elles sont décrites dans la section précédente pour toutes les normes de facture XML (c'est-à-dire pas seulement E2B et Finvoice), mais à l'étape 3, utilisez l'un des fragments XLS suivants à la place :

  • Affichage de la totalité du code XML au bas de la facture sans formatage particulier
    <xsl:template match="/">
    <xsl:copy-of select="."/>
    </xsl:template>
  • Liste des éléments de code XML au bas de la facture dans l'ordre alphabétique avec les valeurs correspondantes dans la facture
<xsl:template match="/">
<xsl:variable name="unique-list" select="//*[not(.=following::*)]"/>
<xsl:for-each select="$unique-list">
<xsl:sort select="name(.)"/>
<xsl:value-of select="name(.)"/>=<xsl:value-of select="."/>
<xsl:text>
</xsl:text>
</xsl:for-each>
</xsl:template>
  • Affichage d'une simple facture récapitulative par personne au bas de la facture
<xsl:template match="/">
<!-- Get all unique values of ‘Description‘ -->
      <xsl:for-each select="//cac:InvoiceLine[not(cac:Item/cbc:Description = preceding::cac:Item/cbc:Description)]">
                               <xsl:sort select="cac:Item/cbc:Description"/> <!-- Sort by Description  -->
                             <!-- For each Description -->
                             <xsl:variable name='CurrentPerson' select="cac:Item/cbc:Description" />      <!-- Get value of Description -->
                             <xsl:variable name='NodeForCurrentPerson' select="//cac:InvoiceLine[cac:Item/cbc:Description=$CurrentPerson]" />         <!-- Get node set of Description -->
                             <xsl:variable name='NumOfRows' select="count($NodeForCurrentPerson)" />      <!-- Count number of nodes for Description -->
                             <xsl:variable name='SumOfCost' select="sum($NodeForCurrentPerson/cac:Item/cac:BasePrice/cbc:PriceAmount)" />       <!-- Sum of value of all PriceAmount nodes for Description -->
             Person: <xsl:value-of select="$CurrentPerson"/> #Rows: <xsl:value-of select="$NumOfRows"/>  Totalt:<xsl:value-of select="$SumOfCost"/>         <!-- Compose the value of the Note field -->
      </xsl:for-each>
</xsl:template>