Saltar a contenido

New Sales

Mediante este punto de entrada SDH recibirá el alta de una nueva factura y lo convertirá a todas las normativas de destino. Incluye los pasos siguientes:

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.NewSales(si);
curl -X POST https://apitest.solmicrosdh.com/invoicing/newsales \
--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.
  • UrlQR: Texto con la información necesaria para generar el QR.
  • QRBase64: Texto codificado en Base64 que contiene la imagen QR.
  • 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.UrlQR
    vfResult.QRBase64
    vfResult.Hash
    vfResult.DateAndTime
    vfResult.PreviousSeries
    vfResult.PreviousNumber
    vfResult.PreviousDateAndTime
    vfResult.DestinationStateDateAndTime
    ...
}
{
    "ContainerId": "string",
    "Results": [],
    "ErrorMessages": [
        {
            "Code": "string",
            "Text": "string"
        }
    ]
}

Veri*Factu

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