Query Sales
Mediante este punto de entrada SDH realizará la consulta, de una lista de hasta 1.000 facturas, para obtener información del estado de la factura en SDH y en la administración.
Tener en cuenta que en Veri*Factu se realiza entrega diferida, por lo que cobra sentido la consulta del estado de la entrega de la factura a la administración.
LLamada
Los datos necesarios para esta entrada son la lista de series y sus números de factura.
InvoicingClient client = new InvoicingClient();
...
List<IdSalesInvoice> idSalesInvoiceList = new List<IdSalesInvoice>();
idSalesInvoiceList.Add(new IdSalesInvoice() { Series = series, Number = number });
...
Solmicro.DigitalHub.Global.Dtos.OutEngineContainer result = client.QuerySales(idSalesInvoiceList);
curl -X POST https://apitest.solmicrosdh.com/invoicing/querysales \
--cert /ruta/al/certificado.pfx \
--cert-type P12 \
--pass mypfxpassword \
-H "Content-Type: application/json" \
-H "CompanyId: guid-unico-empresa" \
-H "InstallationId: guid-unico-instalacion" \
-d '[
{
"series": "string",
"number": "string"
}
]'
Resultado
Veri*Factu
El resultado será un objeto de tipo VeriFactuConsultasResult que contendrá la lista VeriFactuConsultaResults con la siguiente información:
Series: Serie de la factura.Number: Número de la factura.SalesInvoiceId: Identificador único de la factura en la BBDD de SDH.DateAndTime: Fecha de expedición de la factura.Type: Tipo de la factura.DestinationStateState: En caso que la factura esté entregada en la administración, el estado actual en el que se encuentra el registro para la administración.DestinationStateResponse: En caso que la factura esté entregada en la administración con error, el texto del error reportado por la administración.DestinationStateErrorCode: En caso que la factura esté entregada en la administración con error, el código del error reportado por la administración.DestinationStateDateAndTime: En caso que la factura esté entregada en la administración, la fecha en la que se ha recibido la contestación de la administración. Si no se ha entregado a la administración, la fecha en que se ha procesado en SDH.Hash: Huella de la factura.PreviousSeries: Serie de la factura con la que se ha realizado el encadenamiento.PreviousNumber: Número de la factura con la que se ha realizado el encadenamiento.PreviousDateAndTime: Fecha de la factura con la que se ha realizado el encadenamiento.UrlQR: Texto con la información necesaria para generar el QR.QRBase64: Texto codificado en Base64 que contiene la imagen QR.- Para el resto de campos ver información de resultado.
if (result.ErrorMessages.Count() > 0)
{
// Habrá que recorrerse la lista y tratar los errores
return;
}
VeriFactuConsultasResult vfResults = result.OfType<VeriFactuConsultasResult>().FirstOrDefault();
if (vfResults is not null)
{
foreach (var vfResult in vfResults.VeriFactuConsultaResults)
{
vfResult.Series
vfResult.Number
vfResult.SalesInvoiceId
vfResult.DateAndTime
vfResult.Type
vfResult.DestinationStateState
vfResult.DestinationStateResponse
vfResult.DestinationStateErrorCode
vfResult.DestinationStateDateAndTime
vfResult.Hash
vfResult.PreviousSeries
vfResult.PreviousNumber
vfResult.PreviousDateAndTime
vfResult.UrlQR
vfResult.QRBase64
...
}
}
{
"ContainerId": "string",
"Results": [],
"ErrorMessages": [
{
"Code": "string",
"Text": "string"
}
]
}
Veri*Factu
{
"Series": "string",
"Number": "string",
"SalesInvoiceId": "string",
"DateAndTime": "datetime",
"Type": integer,
"DestinationStateState": integer,
"DestinationStateResponse": "string",
"Hash": "string",
"PreviousSeries": "string",
"PreviousNumber": "string",
"PreviousDateAndTime": "datetime",
"UrlQR": "string",
"QRBase64": "string",
...
}