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-de7a0dc7b870Name
: eSign FacturaePublisher
: Innova Advanced ConsultingVersion
: X.X.X.X
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.
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
.
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.
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.
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.
Cuando se genere el XML
el nodo IssuerContractReference
estará dentro del nodo InvoiceLine
.
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: