Saltar a contenido

Query Sales

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.
Esto no aplica para TicketBAI, ya que la entrega es inmediata.

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.

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"
        }
    ]
}
{
    "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",
    ...
}