Saltar a contenido

Correct New Sales

Mediante este punto de entrada SDH recibirá el alta de subsanación de una factura de la que anteriormente se había recibido un rechazo por parte de la administración. Incluye los pasos siguientes:

  • Las validaciones de reglas de la administración pertinentes.
  • Para TicketBAI el envío a la administración del Zuzendu y el tratamiento de la respuesta.
    Para Veri*Factu se realiza encadenamiento de factura y entrega diferida.

LLamada

Dependiendo del destino de la factura, serán necesarios rellenar los distintos campos de la clase SalesInvoice. En cada normativa se especifican los campos requeridos para una correcta conversión del formato.

InvoicingClient client = new InvoicingClient();

...

SalesInvoice si = new()
{
    Number = "", 
    Series = "", 
    DateAndTime = DateTime.Parse(""), 
    ...
};
Solmicro.DigitalHub.Global.Dtos.OutEngineContainer result = client.CorrectNewSales(si);
curl -X POST https://apitest.solmicrosdh.com/invoicing/correctnewsales \
--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",
    "dateAndTime": "datetime",
    ...
}'

Resultado

Veri*Factu

Para esta normativa la factura queda pendiente de entrega en el servicio de la administración y SDH lo entregará más tarde. El resultado será un objeto de tipo VeriFactuResult que contendrá la siguiente información:

  • SalesInvoiceId: Identificador único de la factura en la BBDD de SDH.
  • Hash: Huella de la factura.
  • DateAndTime: Fecha de expedición 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.
  • DestinationStateDateAndTime: La fecha en que se ha procesado en SDH.
  • 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;
}
VeriFactuResult vfResult = result.OfType<VeriFactuResult>().FirstOrDefault();
if (vfResult is not null)
{
    vfResult.SalesInvoiceId
    vfResult.Hash
    vfResult.DateAndTime
    vfResult.PreviousSeries
    vfResult.PreviousNumber
    vfResult.PreviousDateAndTime
    vfResult.DestinationStateDateAndTime
    ...
}
{
    "ContainerId": "string",
    "Results": [],
    "ErrorMessages": [
        {
            "Code": "string",
            "Text": "string"
        }
    ]
}

Veri*Factu

{
    "SalesInvoiceId": "string",
    "Hash": "string",
    "DateAndTime": "datetime",
    "PreviousSeries": "string",
    "PreviousNumber": "string",
    "PreviousDateAndTime": "datetime",
    "DestinationStateDateAndTime": "datetime",
    ...
}