Beispiel für erweiterte XML-Regel: Zusammenfassung von Daten aus Einzelposten als Hinweis in einer periodischen Rechnung

Periodische Rechnungen können mehrere Einzelposten enthalten, die Sie zur vereinfachten Verarbeitung am Ende der Rechnung in einem Hinweis zusammenfassen können. Dieses Beispiel zeigt, wie das möglich ist.

  1. Wählen Sie in der Registerkarte Felder des XML-Mappers (auf der rechten Seite des Fensters) in der Kategorie Felder das Feld InvoiceNote aus.
  2. Klicken Sie auf die Schaltfläche rechts neben dem Wert, um die Feldzuordnungsregeln für das Feld auf der linken Seite anzuzeigen.
  3. Wählen Sie unten links XSL verwenden aus, und fügen Sie diesen Beispielcode in das Textfeld unterhalb der Einstellung ein.

    Dieser Beispielcode durchsucht die XML-Datei, um festzustellen, wie viele Instanzen jedes einzigartigen Werts für das <Description>-Element gefunden werden können. Danach fasst er alle in einem Hinweis am Ende der Rechnung zusammen. Der grüne Text liefert Informationen darüber, was jeder Codebereich macht. Er kann entfernt werden.

     
    <xsl:template match="/">
    <!-- Get all unique values for ‘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>
  4. Überlegen Sie, ob die Änderung(en) auf alle Rechnungen oder nur jene der aktuellen XML-Rechnungsdefinition angewandt werden soll(en). Klicken Sie auf XML-Definition speichern, um die Änderung nur für die aktuelle XML-Rechnungsdefinition (also den aktuellen Lieferanten) zu speichern. Klicken Sie auf XML-Profil speichern, falls Sie die Regel unabhängig von der XML-Rechnungsdefinition auf alle XML-Rechnungen anwenden möchten, die mit dem XML-Rechnungsprofil übereinstimmen.

Testen der Regel

Testen Sie diese Regel mithilfe der Beispieldatei, die in der Installation bereitgestellt wird: ...\ReadSoft\INVOICES\Samples\XML\SummaryInvoice-Example.xml

  1. Interpretieren Sie die Datei mit einem Job, in dem ein Ordner als Eingabequelle eingerichtet ist. Weitere Informationen finden Sie unter „Konfigurieren eines Dateiordners als Eingabequelle für XML-Dateien“ in der Collector-Hilfe.
  2. Legen Sie in Optimize die erweiterte Regel, wie in den oben stehenden Schritten 1-3 beschrieben, fest.
  3. Klicken Sie auf Extrahieren und dann auf XML-Definition speichern.
  4. Klicken Sie auf Schließen und dann auf Ja, wenn Sie gefragt werden, ob Sie mit dem Optimieren der XML-Rechnungsdefinition fertig sind.
  5. Führen Sie den Interpret-Job erneut durch.
  6. Öffnen Sie die Rechnung in Verify. Auf der letzten Seite der PDF-Datei wird dieser Hinweis angezeigt: