Addons a medida / 5585 FEMXA / Sit.Imp.Fmx
Funcionalidad
La aplicación es una única ventana desde la que el usuario elige el periodo y las empresas, y genera un Excel por empresa. Esta página describe el flujo de uso, el contenido del fichero generado y las reglas de negocio que aplican los importes.
Flujo de uso#
1. Pantalla inicial#
Al abrir Sit.Imp.Fmx.exe se muestra la ventana principal.

- Mes / Año: periodo de las pagas a exportar. Por defecto se carga el mes anterior al actual.
- Cargar Empresas A3Innuva: se conecta a la API de a3Innuva Nómina y lista las empresas disponibles. Si no hay sesión activa, primero pide iniciar sesión en Wolters Kluwer (ver Instalación y activación).
- Directorio de salida: carpeta donde se generará el fichero. Se recuerda la última carpeta usada entre ejecuciones.
- Nombre del fichero: nombre base del Excel. Se recuerda el último nombre usado. Al nombre base se le añade siempre el sufijo
-AAAA-MM-CCC(año, mes y código de empresa a 3 dígitos). Por ejemplo, para enero de 2024 y la empresa 8:...-2024-01-008.xlsx.
2. Selección de empresas#
Tras cargar, aparece el listado de empresas del grupo. Es de selección múltiple: se marcan las que se quieren exportar y se pulsa Generar XLS. Se genera un fichero independiente por cada empresa seleccionada.

3. Progreso#
Durante la generación, la ventana muestra en todo momento el paso en curso (empresa, número de paga sobre el total y operación actual).

4. Resultado#
Si todo va bien, al terminar se muestra el mensaje de proceso finalizado.

Estructura del fichero Excel#
El libro tiene tantas hojas como defina la configuración (sección SheetCostAttributionRelations del appsettings.json). Para FEMXA hay dos hojas, DOCENTESCC y ESTRUCTURA, y la paga va a una u otra según su centro de coste de nivel 1 (ver Reparto y enrutado a hojas). Si la configuración no define hojas, se genera una única hoja Hoja1.
Las columnas, en orden, son las siguientes. El "origen" indica de qué llamada de la API y, cuando aplica, de qué concepto interno calculado (llamada calculatedinternalconcepts) proviene cada valor.
| # | Encabezado | Contenido y origen |
|---|---|---|
| 1 | Empresa | companyCode (llamada companies) |
| 2 | Nombre Empresa | companyName (companies) |
| 3 | Trabajador | employeeCode (pays) |
| 4 | Nombre Trabajador | completeName (pays) |
| 5 | NIF | identifierNumber (pays) |
| 6 | ANO | Año introducido por el usuario |
| 7 | MES | Mes introducido por el usuario |
| 8 | Tipo | Tipo de salida derivado del payType según PayTypeCorrelations |
| 9 | Atraso | 1 si el tipo de salida es Atrasos; en caso contrario 0 |
| 10 | Centro de Imputación (código) | Código del centro de nivel 1 (costcenters cruzado con costattribution) |
| 11 | Centro de Imputación (nombre) | Descripciones de los niveles padre concatenadas (todos menos el último) |
| 12 | Sección (código) | Código del centro de último nivel |
| 13 | Sección | Nombre del centro de trabajo, workplaceName (pays) |
| 14 | Centro de Trabajo | Descripción del centro de último nivel |
| 15 | CCC | Nº de cuenta de cotización del centro de trabajo (sspaymentnumbers) |
| 16 | Enf.S.S.60% | Concepto 451 (Enfermedad) |
| 17 | Enf.S.S.75% | Constante 0 (no se utiliza) |
| 18 | AT y EP | Concepto 452 (Accidente) |
| 19 | Anticipos y retenciones judiciales | Importe descontado por embargo (arrestimports) + anticipos (conceptos 791 y 7920) |
| 20 | Otras deducciones | Suma de conceptos 256, 53, 120 y 700–799 (excluidos los anticipos 791 y 7920) |
| 21 | Total a abonar | Concepto 802 (Importe Bruto) |
| 22 | Líquido a percibir | Concepto 801 (Importe Líquido) |
| 23 | Bonificaciones/Reducciones | Concepto 816 (Bonific. de Empresa Total) |
| 24 | IRPF, ingreso a cuenta | Conceptos 9993 (Tributación IRPF) + 987 (Ingr. a cta. esp.) |
| 25 | SS Empresa | Concepto 810 (Seg. Social de Empresa Total) |
| 26 | SS Trabajador | Suma de conceptos 995, 996 y 997 (Contingencias Comunes, Formación Profesional y Desempleo) |
Encabezados repetidos
Las columnas 10–11 comparten el encabezado Centro de Imputación (una lleva el código y otra el nombre) y las columnas 12–13 comparten Sección. Es el formato esperado por el cliente; la columna 13 rotulada Sección contiene realmente el nombre del centro de trabajo, y la 14 rotulada Centro de Trabajo contiene la descripción del centro de último nivel.
Los importes dependen de IDs de concepto fijos
Las columnas de importes se calculan a partir de IDs de concepto interno concretos (802, 810, 801, 816, 451, 452, 995–997, etc.). Si a3Innuva cambia o renumera esos conceptos, o el cliente reporta importes descuadrados, es el primer punto a revisar cotejando las nóminas contra la tabla anterior.
Reglas de negocio#
Tipos de paga que se ignoran#
No se exportan las pagas cuyo tipo (payType) contiene Paga Mensual Atrasos, Paga Mensual Atrasos Diferencias, temporal o simulacion. Se descartan antes de procesarse y no aparecen en el Excel.
Columna Tipo#
El payType que devuelve a3Innuva se traduce al tipo mostrado según la tabla PayTypeCorrelations del appsettings.json. Si un tipo no tiene correspondencia definida, se vuelca tal cual el payType de a3Innuva.
Reparto y enrutado a hojas#
Para cada paga se consulta costattribution:
- Si devuelve atribuciones con porcentaje, los importes se reparten proporcionalmente entre los centros de coste. Cada importe repartido se redondea a 2 decimales (redondeo del 0,5 al alza). La diferencia por redondeo se corrige en la atribución de mayor porcentaje para que la suma de las partes cuadre con el total de la paga.
- Si no devuelve nada, la paga va íntegra en una sola fila, sin centro informado.
El centro de coste de nivel 1 determina la hoja destino según SheetCostAttributionRelations. Para FEMXA: código DO → hoja DOCENTESCC, código ES → hoja ESTRUCTURA. Además, si la paga no trae código de centro pero su sección contiene Activo Docentes se asigna DO, y si contiene Activo Estructura se asigna ES. Si no hay centro o el libro tiene una sola hoja, la paga va a la primera hoja.
Agrupación por trabajador#
Tras el reparto, las filas se agrupan y se suman sus importes:
- Los finiquitos se agrupan por NIF + año + mes.
- El resto se agrupa por NIF + tipo de paga + año + mes.
Las filas cuyos importes queden todos a cero tras la suma se descartan.
Caché del nº de cuenta de cotización (CCC)#
Obtener el CCC requiere dos llamadas (sspaymentnumbers). Para minimizar llamadas a la API, el CCC se cachea por empresa y centro de trabajo durante la ejecución: se consulta una sola vez por combinación.
Gestión de errores#
Los errores de una paga o de una empresa se acumulan y no interrumpen el resto del proceso: la aplicación intenta generar todo lo posible. Al finalizar, si hubo errores, muestra un aviso.

Al desplegar la flecha se ve el detalle de cada error (empresa, paga y paso en el que ocurrió). El botón Copiar al portapapeles vuelca el detalle completo para pegarlo en un ticket o escalarlo a posventa.

Diagnóstico
El detalle de errores indica siempre el paso en curso (extracción de conceptos, nº SS, atribuciones de coste, etc.). Para un diagnóstico más profundo, subir el nivel de log a Trace registra todas las llamadas y respuestas de la API (ver Instalación y activación).