Comprobante por URL

Manejo de errores

Tipos de errores que puede arrojar el SDK y cómo mostrarlos en tu sistema.

El SDK solo valida que los parámetros de la URL sean correctos y si hay un error falla para que pueda manejarlo.

Las reglas que corre el SDK son las mismas que corre el formulario de Factumono de manera local. Pero se pueden generar otros errores al momento de emitir si por ejemplo se define un punto de venta que no existe o si no pasa alguna validación de ARCA, de todos modos estos errores se le informan al emisor en Factumono para que los resuelva.

Mostrarlos en tu formulario

Factumono.createVoucherUrl tira un ValidationError si la URL no se puede armar, con todos los errores juntos:

import { Factumono, ValidationError, VoucherType } from "@factumono/sdk";

try {
  const url = Factumono.createVoucherUrl({
    taxId: "20000000002", // CUIT con dígito verificador inválido
    type: VoucherType.FacturaC,
    items: [{ description: "Bananas premium", quantity: 6 }],
  });
} catch (error) {
  if (!(error instanceof ValidationError)) throw error;

  // { code: "taxIdEnd", path: "taxId", message: "taxId is not a valid CUIT: …" }
  // { code: "itemUnitPriceRequired", path: "items[0].unitPrice", message: "unitPrice is required." }
  for (const { path, message } of error.errors) {
    mostrarErrorEn(path, message);
  }
}

Usá como referencia el code, nunca el texto de message: los mensajes son copy y cambian. path viene con la forma de los parámetros que vos mandaste, así que lo podés usar de clave para pintar el error bajo el campo que corresponde.

Códigos de error

El código de error se forma con la regla de zod que lo produjo, en camelCase, así que un código no puede desalinearse de la regla (itemUnitPriceRequired, customerTaxIdRequiredOverMax, issuedAtMax10DaysPast, paymentDueAtNotBeforeIssuedAt, taxIdEnd, …).

Logo de WhatsApp