feat: enhance invoice validation and error handling with detailed messages

This commit is contained in:
AlexeerCT
2026-01-10 23:42:05 -06:00
parent 25c51120f9
commit 887cbfa5ce
9 changed files with 255 additions and 115 deletions

View File

@@ -144,13 +144,23 @@
}
});
console.log('Save result:', result);
if (!result.success) {
throw new Error(result.error || 'Error al guardar la factura');
// Crear un error con validationErrors si existen
const error: any = new Error(result.error || 'Error al guardar la factura');
if (result.validationErrors) {
error.validationErrors = result.validationErrors;
}
throw error;
}
toast.success('Todos los cambios se guardaron correctamente');
} catch (e) {
console.error('Error saving all:', e);
console.log('Error object:', e);
console.log('Has validationErrors?', (e as any)?.validationErrors);
if (e instanceof Error && e.message.includes('401')) {
toast.error('Sesión expirada. Recargando página...');
setTimeout(() => {
@@ -158,9 +168,23 @@
}, 1500);
} else {
const errorMessage = e instanceof Error ? e.message : 'Error al guardar los cambios';
toast.error(errorMessage, {
description: 'Revisa la consola para más detalles'
});
// Si hay errores de validación, mostrarlos en detalle
if (e && typeof e === 'object' && 'validationErrors' in e && Array.isArray((e as any).validationErrors)) {
const validationErrors = (e as any).validationErrors;
console.log('Found validationErrors:', validationErrors);
const errorList = validationErrors.map((err: any) =>
`• ${err.field}: ${err.message}${err.solution ? ' - ' + err.solution.join(', ') : ''}`
).join('\n');
toast.error(errorMessage, {
description: errorList
});
} else {
toast.error(errorMessage, {
description: 'Revisa la consola para más detalles'
});
}
}
} finally {
saving = false;