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.SalesInvoiceQueryGroupResult results = client.QuerySales(idSalesInvoiceList);
curl -X POST https://apitest.solmicrosdh.com/v2.0/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
El resultado será un objeto de tipo SalesInvoiceQueryGroupResult que contendrá la siguiente información:
ResultList: Lista con la información:- Clave correspondiente a
Series + Numberde la factura consultada. - Lista de objetos de tipo
SalesInvoiceQueryGroupcon la información:VeriFactuConsultaResult: Información de estado en Veri*Factu.InvoiceStatusResults: Lista de objetos de tipoInvoiceStatusen B2B.
- Clave correspondiente a
VeriFactuConsultaResult contiene 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.
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.HashType: Tipo de huella de la factura.Hash: Huella de la factura.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 respuesta servicios administración.
if (result is not null)
{
foreach (var item in result.ResultList)
{
string key = item.Key; // Series+Number
var vf = item.Value.VeriFactuConsultaResult;
var b2bStatuses = item.Value.InvoiceStatusResults;
vf.Series
vf.Number
vf.SalesInvoiceId
vf.DateAndTime
vf.Type
vf.DestinationStateState
vf.DestinationStateResponse
vf.DestinationStateErrorCode
vf.DestinationStateDateAndTime
vf.HashType
vf.Hash
vf.PreviousSeries
vf.PreviousNumber
vf.PreviousDateAndTime
vf.UrlQR
vf.QRBase64
...
foreach (var status in b2bStatuses)
{
status.Id
status.StatusType
...
}
}
}
{
"resultList": {
"serie1numero1": {
"veriFactuConsultaResult": {
"series": "string",
"number": "string",
"salesInvoiceId": "guid",
"dateAndTime": "datetime",
"type": integer,
"destinationStateState": integer,
"destinationStateResponse": "string",
"destinationStateErrorCode": "string",
"destinationStateDateAndTime": "datetime",
"hashType": "string",
"hash": "string",
"previousSeries": "string",
"previousNumber": "string",
"previousDateAndTime": "datetime",
"urlQR": "string",
"qrBase64": "string"
...
},
"invoiceStatusResults": [
{
"id": "guid",
"statusType": integer,
"action": integer,
"statusDate": "datetime"
...
}
]
}
}
}