Arquitectura del motor
El paquete separa el dominio, el catálogo y las funciones de cálculo. No tiene I/O ni estado persistente: para una misma entrada produce el mismo resultado.
Entrada del consumidor
│
├── actuación judicial o penal ──> calculateHonorarios
├── contexto sucesorio ──────────> calculateHonorariosSucesion
└── servicio extrajudicial ──────> calculateHonorariosExtrajudiciales
│
Catálogo y tipos ────────────────────────────┘
│
└── resultado, referencias, notas y alertasMódulos principales
| Archivo | Responsabilidad |
|---|---|
src/types.ts | Tipos de dominio, entradas y resultados |
src/calculations.ts | Los tres motores públicos de cálculo |
src/mappers.ts | Mapeo de IDs extrajudiciales a serviceType |
src/data/*.ts | Catálogos judicial, penal y extrajudicial |
src/data/index.ts | Catálogo consolidado y helpers |
src/index.ts | Superficie pública del paquete |
Despacho judicial
Cuando se recibe actuacionId, el motor busca la actuación en los catálogos judicial y penal. Después aplica tipoCalculo:
| Tipo | Comportamiento |
|---|---|
jornales-fijos | Multiplica los jornales por jornalMinimo |
porcentaje | Aplica el rango porcentual a la base correspondiente |
mixto | Calcula el porcentaje y aplica el piso de jornales cuando existe |
Si no hay actuacionId, puede utilizarse caseType para mantener la compatibilidad con consumidores anteriores. Las nuevas integraciones deberían preferir el catálogo porque aporta una regla y referencia legal específica.
Bases directas y derivadas
La mayoría de las actuaciones interpreta caseAmount como la base monetaria indicada por baseCalculo. Hay dos grupos con transformación adicional:
- Bases anualizadas: multiplican una entrada mensual por 12 o 24.
- Bases derivadas de honorarios: calculan primero el rango general del Art. 32 y luego aplican el porcentaje propio de la actuación.
Consultá el detalle generado en Bases de cálculo.
Roles e instancias
Después de calcular el primer tramo judicial, el motor aplica el rol profesional:
| Rol | Multiplicador |
|---|---|
patrocinante o ausente | 1.0 |
procurador | 0.5 |
doble-caracter | 1.5 |
La segunda y tercera instancia se calculan cada una entre el 25% y el 35% del tramo de primera instancia. La tercera exige que la segunda esté incluida.
Jornal mínimo
jornalMinimo es opcional en el tipo para conservar compatibilidad, pero es necesario para:
- convertir jornales fijos a guaraníes;
- aplicar pisos mínimos de jornales;
- expresar montos porcentuales también en jornales.
Una aplicación de producción debe suministrar explícitamente el valor vigente y registrar cuál fue utilizado en cada cálculo.
Redondeo
El motor redondea los importes calculados a dos decimales. Las horas de una consulta verbal se redondean hacia arriba con Math.ceil. El formateo visual en guaraníes corresponde a la aplicación consumidora y no debe modificar el valor numérico original.