Ejemplo de regla XML avanzada: Resume los datos de las líneas de artículos en forma de una nota en una factura de resumen

Es posible que las facturas resumidas incluyan diferentes líneas de artículos que quiera resumir en una nota al final de la factura para facilitar su procesamiento. En este ejemplo se muestra cómo hacerlo.

  1. Seleccione el campo InvoiceNote en la sección Campos de la ficha Campos del Asignador XML (en la parte derecha de la ventana).
  2. Haga clic en el botón que se encuentra a la derecha del valor para visualizar las Reglas asignación de campos del campo de la izquierda.
  3. Seleccione Utilizar XSL en la parte inferior izquierda de la pantalla y añada este código de ejemplo en el cuadro de texto que se encuentra debajo del parámetro.

    Este código de ejemplo recorre todo el XML para averiguar cuántas instancias de cada valor único del elemento <Description> se encuentran y las resume en una nota al final de la factura. El texto verde ofrece información sobre lo que hace cada sección del código. Se puede borrar.

     
    <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. Tenga en cuenta si los cambios se deben aplicar a todas las facturas o sólo a aquellas que tengan la definición de facturas de XML actual. Haga clic en Guardar definición XML para guardar el cambio solo para la definición actual de factura XML (esto es, el proveedor actual). Haga clic en Guardar el perfil XML si quiere que las reglas se apliquen a todas las facturas XML que coinciden con el perfil de factura de XML independientemente de la definición de factura XML.

Probar la regla

Pruebe esta regla utilizando el archivo de muestra facilitado en la instalación: ...\ReadSoft\INVOICES\Samples\XML\SummaryInvoice-Example.xml

  1. Interprete el archivo utilizando un trabajo en el que haya una carpeta configurada como origen de entrada. Para obtener más información, consulte «Configuración de una carpeta de archivos como el origen de entrada para archivos XML» en la ayuda de Collector.
  2. En Optimizar, configure la regla avanzada tal y como se indica en los pasos 1-3 anteriores.
  3. Haga clic en Extraer y, a continuación, en Guardar definición XML.
  4. Haga clic en Cerrar y, a continuación, en cuando se le solicite si ha terminado de optimizar la definición de facturas en XML.
  5. Vuelva a ejecutar el trabajo de Interpret.
  6. Abra la factura en Verify y esta nota aparecerá en la última página del PDF: