Skip to content

Ejemplos

En esta sección se detallan ejemplos de uso de la extensibilidad de la solución.

Añadir un campo a la línea de una facturas de venta

Este ejemplo añade un campo a la línea de una factura de venta con la finalidad de que aparezca en el XML generado.

Descripción

El cliente Cronus tiene la necesidad de indicar la Referencia del contrato del emisor en las líneas de factura al generar el XML que debe presentar a la administración pública española.

Este campo es optativo en la definición de campos del formato Facturae (Definición campos), por lo que la solución no lo rellena de format automática.

Referencia del campo: 3.1.6.1.1. IssuerContractReference.

Detalle

En esta sección se detallan los pasos a realizar para cumplir con las necesidades del cliente:

  • Crear la extensión
  • Extender la tabla INNESGFeLines
  • Extender la página INNESGFeLines
  • Utilizar el suscriptor OnBeforeInsertLines
  • Utilizar el suscriptor OnAfterSetInvoiceLine

Crear la extensión

Se debe crear una nueva extensión que tenga en el fichero app.json la siguiente dependencia:

  • Id: a61e36f0-17a0-4f2f-8554-de7a0dc7b870
  • Name: eSign Facturae
  • Publisher: Innova Advanced Consulting
  • Version: X.X.X.X

ExtensionDependency

Atención

La información de la extensión se puede ver en las extensiones del sistema. Utilizar la versión que se tenga instalada en la dependencia.

Al descargar los símbolos, se tendrá la posibilidad de extender las tablas y usar los suscriptores.

Extender la tabla INNESGFeLines

La tabla INNESGFeLines contiene la información necesaria para generar las líneas de facturas en el fichero XML.

Debemos generar una extensión de la tabla y añadir el campo IssuerContractReference de tipo Text[20]. Será necesario utilizar un prefijo en el campo para cumplir con la normativa de AppSources.

ExtensionTableFeLines

Extender la página INNESGFeLines

La página INNESGFeLines muestra la información de las líneas de la factura.

Debemos generar una extensión de la página y añadir el campo IssuerContractReference.

ExtensionPageFeLines

Utilizar el suscriptor OnBeforeInsertLines

Una vez creado el campo a rellenar se utilizará el suscriptor OnBeforeInsertLines para informarlo. Este suscriptor está disponible en la codeunit INNESGFePublishers.

Podemos crear una codeunit para añadir los suscriptores, aunque se podría añadir en algún objeto ya creado.

ExtensionSuscriptorInsertLine

Atención

En el ejemplo se usa un texto de prueba para rellenar el campo, aunque se podría utilizar cualquier campo de la tabla, sea personalizado o no.

Cuando se genere el Documento Facturae (Documento Facturae) se debe rellenar en las líneas el nuevo campo.

ExtensionSuscriptorInsertLinePage

Utilizar el suscriptor OnAfterSetInvoiceLine

Una vez rellenado el campo a través del suscriptor OnBeforeInsertLines debemos usar el suscriptor OnAfterSetInvoiceLine para rellenar el node XML correspondiente con el valor del campo.

Podemos crear una codeunit para añadir los suscriptores, aunque se podría añadir en algún objeto ya creado.

ExtensionSuscriptorSetInvoiceLine

Cuando se genere el XML el nodo IssuerContractReference estará dentro del nodo InvoiceLine.

ExtensionSuscriptorSetInvoiceLineXml

Atención

En el ejemplo debemos rellenar el campo IssuerContractReference del nodo InvoiceLine y la normativa dice que dicho nodo debe ir en la posición 3.1.6.1.1. Por ese motivo, se hace la comprobación de si existen otros nodos que son posteriores a este (como el nodo 3.1.6.1.11 SequenceNumber), y así añadirlo antes.

Idiomas

Este documento está disponible en los siguientes idiomas: