VeriFactu 1.0.3

dotnet add package VeriFactu --version 1.0.3
NuGet\Install-Package VeriFactu -Version 1.0.3
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="VeriFactu" Version="1.0.3" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add VeriFactu --version 1.0.3
#r "nuget: VeriFactu, 1.0.3"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install VeriFactu as a Cake Addin
#addin nuget:?package=VeriFactu&version=1.0.3

// Install VeriFactu as a Cake Tool
#tool nuget:?package=VeriFactu&version=1.0.3

image

Descripción

La finalidad de esta biblioteca es la generación, conservación y envío de registros relacionados con la emisión de facturas a la AEAT mediante un sistema VERI*FACTU.

En primer lugar se encuentran los ejemplos de la operativa básica más común. Después encontraremos causísticas más complejas...

Esperamos que esta documentación sea de utilidad, y agradeceremos profundamente cualquier tipo de colaboración o sugerencia.

Podéis dirigir cualquier duda o consulta a info@irenesolutions.com.

Irene Solutions

Ejemplos

1. Generación de la huella o hash de un registro de alta de factura

En este ejemplo calcularemos el hash de el registro de alta de verifactu que aparece en la documentación técnica.

image

          
// Creamos una instacia de la clase factura
var invoice = new Invoice() 
{
    InvoiceType = TipoFactura.F1,
    InvoiceID = "12345678/G33",
    InvoiceDate = new DateTime(2024, 1, 1),
    SellerID = "89890001K",
    TotalTaxOutput = 12.35m,
    TotalAmount = 123.45m
};

// Obtenemos una instancia de la clase RegistroAlta a partir de
// la instancia del objeto de negocio Invoice
var registro = invoice.GetRegistroAlta();

// El registro no ha sido envíado, pero forzamos el valor de
// FechaHoraHusoGenRegistro para que coincida con el ejemplo de la AEAT
var fechaHoraHusoGenRegistro = new DateTime(2024, 1, 1, 19, 20, 30); //2024-01-01T19:20:30+01:00 en España peninsula
registro.FechaHoraHusoGenRegistro = XmlParser.GetXmlDateTimeIso8601(fechaHoraHusoGenRegistro);

// Obtenemos el valor de la huella
var hash = registro.GetHashOutput(); // 3C464DAF61ACB827C65FDA19F352A4E3BDC2C640E9E9FC4CC058073F38F12F60

2. Obtención de la «URL» de cotejo o remisión de información de la factura contenida en el código «QR»

En este ejemplo obtendremos la url para el servicio de validación de una factura de las especificaciones técnicas de la AEAT.

image

[!NOTE]
En la documentación técnica de la AEAT el último carácter debería se '1' pero por error consta '4'.

          
// Creamos una instacia de la clase factura
var invoice = new Invoice()
{
    InvoiceType = TipoFactura.F1,
    InvoiceID = "12345678&G33",
    InvoiceDate = new DateTime(2024, 1, 1),
    SellerID = "89890001K",
    TotalAmount = 241.1m
};

// Obtenemos una instancia de la clase RegistroAlta a partir de
// la instancia del objeto de negocio Invoice
var registro = invoice.GetRegistroAlta();

// Obtenemos la url de validación
var urlValidacion = registro.GetUrlValidate(); // https://prewww2.aeat.es/wlpl/TIKE-CONT/ValidarQR?nif=89890001K&numserie=12345678%26G33&fecha=01-01-2024&importe=241.1


3. Obtención de Bitmap con el QR con la URL de cotejo o remisión de información de la factura

En este ejemplo obtendremos la imágen del QR de la url para el servicio de validación de una factura de las especificaciones técnicas de la AEAT, que hemos visto en el ejemplo anterior.

          
// Creamos una instacia de la clase factura
var invoice = new Invoice()
{
    InvoiceType = TipoFactura.F1,
    InvoiceID = "12345678&G33",
    InvoiceDate = new DateTime(2024, 1, 1),
    SellerID = "89890001K",
    TotalAmount = 241.1m
};

// Obtenemos una instancia de la clase RegistroAlta a partir de
// la instancia del objeto de negocio Invoice
var registro = invoice.GetRegistroAlta();

// Obtenemos la imágen del QR
var bmQr = registro.GetValidateQr();

bmQr.Save(@"C:\Users\usuario\Downloads\zz\ValidateQrSampe.bmp");


El bitmap obtenido:

image

Url que consta en el QR:

https://prewww2.aeat.es/wlpl/TIKE-CONT/ValidarQR?nif=89890001K&numserie=12345678%26G33&fecha=01-01-2024&importe=241.1

Product Compatible and additional computed target framework versions.
.NET net5.0 was computed.  net5.0-windows was computed.  net6.0 was computed.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed. 
.NET Core netcoreapp3.1 is compatible. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
1.0.3 88 6/16/2024
1.0.2 86 6/14/2024
1.0.1 76 6/8/2024
1.0.0 75 6/8/2024