Integración en una aplicación
La aplicación consumidora debe separar la captura de datos, el cálculo y la presentación. El motor no conoce monedas, sesiones, formularios ni persistencia.
Flujo recomendado
1. Seleccionar categoría y actuación
2. Consultar tipoCalculo y baseCalculo
3. Solicitar únicamente los campos necesarios
4. Validar y normalizar números
5. Ejecutar la función correspondiente
6. Comprobar isValid
7. Guardar entrada, versión y resultado
8. Mostrar montos, referencia, notas y alertasConstruir un formulario desde el catálogo
import {
calculateHonorarios,
getActuacionesByCategoria,
} from '@dikaia-io/honorarios';
const actuaciones = getActuacionesByCategoria('familia');
const seleccionada = actuaciones.find((item) => item.id === actuacionId);
if (!seleccionada) {
throw new Error('Actuación no encontrada');
}
const requiereMonto = seleccionada.tipoCalculo !== 'jornales-fijos';La etiqueta del campo económico debe derivarse de baseCalculo. Por ejemplo, alimentos-anual recibe la prestación mensual y el motor la anualiza, mientras que valor-inmueble espera directamente el valor total del inmueble.
Adaptador seguro
Centralizá la validación de la entrada antes de llamar al paquete:
import {
calculateHonorarios,
type HonorarioInputs,
} from '@dikaia-io/honorarios';
export function calcularJudicial(inputs: HonorarioInputs) {
if (!Number.isFinite(inputs.caseAmount) || inputs.caseAmount < 0) {
return { ok: false as const, errors: ['Monto inválido'] };
}
if (!Number.isFinite(inputs.jornalMinimo) || (inputs.jornalMinimo ?? 0) <= 0) {
return { ok: false as const, errors: ['Jornal mínimo requerido'] };
}
const result = calculateHonorarios(inputs);
return result.isValid
? { ok: true as const, value: result }
: { ok: false as const, errors: result.errors ?? [] };
}Esta capa permite aplicar reglas más estrictas que las requeridas por compatibilidad dentro del paquete.
Persistencia y auditoría
Para reproducir un cálculo, guardá como mínimo:
- versión exacta de
@dikaia-io/honorarios; - entrada completa enviada al motor;
actuacionIdoserviceType;- jornal mínimo utilizado;
- resultado completo, incluidas referencias, notas y alertas;
- fecha de cálculo;
- versión o fecha del catálogo si la aplicación mantiene un snapshot.
No guardes solamente el monto final: una actualización legal o del catálogo podría producir otro resultado para la misma pantalla.
Presentación
- Formateá guaraníes en la interfaz, sin transformar el número persistido.
- Mostrá rangos como rangos; no elijas automáticamente un punto intermedio.
- No presentes
amountMaxausente como cero. - Identificá qué valor es un piso legal y cuál es un monto fijo.
- Incluí
reference,notesyalertsjunto al cálculo.
Actualizaciones
Fijá una versión exacta en aplicaciones críticas y actualizala mediante una revisión controlada:
- leer el changelog;
- ejecutar tests del consumidor;
- comparar casos de regresión relevantes;
- regenerar snapshots o catálogos derivados;
- desplegar con registro de la nueva versión.