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.
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.
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, …).