Skip to content

Cálculos laborales e integración en AXIA ​

AXIA utiliza @dikaia-io/[email protected] para liquidación de cese y recargos salariales. Es un paquete separado de @dikaia-io/honorarios: recibe datos laborales y devuelve importes y escenarios, sin utilizar el jornal mínimo ni la política del estudio del cotizador.

La referencia corresponde al repositorio de AXIA calculadora_honorarios, commit 0ad80cb, revisado el 4 de septiembre de 2026. Se contrastaron las pantallas, los adaptadores y el paquete instalado; los planes de implementación no se utilizan como prueba de funciones disponibles.

Instalación e importaciones ​

El paquete privado se distribuye mediante GitHub Packages. Requiere acceso de lectura a dikaia-io/dikaia-laboral y un token con read:packages. Usá la configuración del registro con acceso al repositorio laboral.

bash
npm install @dikaia-io/[email protected]

En una integración externa, importá desde @dikaia-io/laboral. Dentro de AXIA, los componentes usan @/lib/laboral, que reexporta el paquete y los adaptadores propios de la aplicación.

Liquidación de cese ​

ts
import { calculateLiquidacion } from '@dikaia-io/laboral';

const resultado = calculateLiquidacion({
  fechaIngreso: '2019-03-01',
  fechaEgreso: '2026-06-30',
  motivoEgreso: 'despido-injustificado',
  sede: 'extrajudicial',
  tipoTrabajador: 'mensualero',
  salarioBaseMensual: 3_000_000,
});

const principal = resultado.escenarios.find(
  (escenario) => escenario.id === resultado.escenarioPrincipal,
);

console.log(principal?.total, resultado.warnings);

LiquidacionInput requiere fechas ISO YYYY-MM-DD, motivo, sede, tipo de trabajador y salario mensual. Los motivos admitidos son despido-injustificado, despido-justificado, renuncia, retiro-justificado, mutuo-acuerdo y termino-plazo.

Entradas opcionalesUso
mesesTrabajados, remuneracionDevengadaAnioHistorial salarial y base factual de aguinaldo
diasTrabajadosMesEgresoNecesario para jornaleros
periodoPrueba, preavisoCategoría, días pactados y preaviso otorgado
tramosFechas, salario real y salario registrado por período
vacacionesCausadasPendientes, vacacionesPeríodos pendientes y días anuales convencionales
complementariaMeses, compensatoriaPorcentaje, interesesParámetros del reclamo judicial en los supuestos admitidos
aplicarAporteIPS, descuentosAporte y descuentos adicionales

LiquidacionResult devuelve escenarios, escenarioPrincipal, comparaciones y warnings. Cada escenario contiene antigüedad, rubros, subtotal, aporte IPS, descuentos, intereses si corresponden y total. Los importes monetarios de salida son cadenas, por ejemplo '336700'.

No tomes el primer elemento del arreglo como principal: buscá por escenarioPrincipal. Los IDs disponibles son base, solo-registrado, estabilidad-doble, vacaciones-convencionales y art91-estricto; los escenarios adicionales dependen de los datos del caso.

El motor puede lanzar LiquidacionInputError, con codigo tipado, por fechas o salario inválidos, tramos solapados, salario registrado mayor que el real o parámetros fuera de rango. Los supuestos y estimaciones se comunican por warnings, no como errores de validación.

Horas extras y recargos ​

ts
import { calculateRubrosSalariales } from '@dikaia-io/laboral';

const resultado = calculateRubrosSalariales({
  salarioMensual: 2_400_000,
  horas: {
    'extra-diurna': 10,
    'nocturna-ordinaria': 20,
    feriado: 8,
  },
});

console.log(resultado.totalAdicional); // '370000'
console.log(resultado.aporteIPS); // '33300'
console.log(resultado.netoAdicional); // '336700'

RubrosInput.horas acepta parcialmente los IDs extra-diurna, nocturna-ordinaria, extra-nocturna y feriado. aplicarIPS permite configurar el aporte en una integración; la pantalla de AXIA utiliza el descuento predeterminado.

RubrosResult incluye lineas, totalConceptos, totalAdicional, aporteIPS, netoAdicional y warnings. Cada línea distingue factorTotal, factorAdicional, total y adicional. Conservá esa distinción al mostrar o exportar datos; no reconstruyas los recargos en la interfaz.

Rutas y flujo de la aplicación ​

RutaFunción
/laboralAcceso a las dos calculadoras
/laboral/liquidacionAsistente de cuatro pasos
/laboral/horas-extrasFormulario de salario y horas por concepto
/dashboard/calculationsHistorial que también incluye registros laborales
/dashboard/calculations/[id]Lectura del resultado guardado y versión del motor

En liquidación, toLiquidacionInput convierte LiquidacionWizardState a la entrada del motor. Por defecto utiliza sede extrajudicial y aporte IPS activo. La categoría No sé omite periodoPrueba; los campos judiciales se envían cuando está seleccionada esa sede.

La interfaz restringe el paso avanzado mediante FeatureGate y la capacidad laboral-modo-abogado. PRO activo y trial vigente habilitan esas opciones. El paquete de cálculo no conoce planes ni identidades; el adaptador no filtra permisos comerciales.

Persistencia y reapertura ​

saveLaboralCalculation es una server action interna, no un endpoint REST público. Valida origen y estructura, garantiza la existencia del usuario y guarda mediante el contexto autenticado. Usa los modos LIQUIDACION y HORAS_EXTRAS, con jornalUsed y politicaUsed en null.

buildLaboralResultsPayload guarda en Calculation.results:

CampoContenido
schemaVersion1
engine@dikaia-io/laboral
engineVersionVERSION del paquete usado
resultLiquidacionResult o RubrosResult completo
summaryMotivo, años de antigüedad, escenario principal y total principal

La acción crea un registro nuevo en estado DRAFT y actualiza las vistas del panel. getLaboralCalculation restringe la lectura al propietario autenticado.

La liquidación admite ?calculationId=<id>: recupera las entradas, ejecuta el motor actual y compara el total con el guardado. El detalle del historial conserva la lectura del resultado persistido. En horas extras, el enlace Recalcular abre el formulario sin recuperar las entradas anteriores.

Exportación y límites de la integración ​

  • Liquidación: generarTextoLiquidacion y generateLiquidacionPDF.
  • Horas extras: resumen de conceptos y generateHorasExtrasPDF.
  • Los dos módulos permiten PDF y copia sin autenticación; guardar exige cuenta.
  • El historial oculta Compartir y PDF PRO para ambos modos laborales.
  • Los resultados de horas extras no se transfieren automáticamente a liquidación.
  • No hay una regla combinada de feriado y nocturnidad ni una entrada de plazo restante para terminación anticipada de contratos temporales.

Las instrucciones de uso y los supuestos visibles están en Liquidación laboral y Horas extras y recargos.

Documentación del Ecosistema Dikaia — Tecnología justa para el derecho