Ir al contenido

Documentación de Selega

Selega es una herramienta de control para legalizar estados contables (EECC). Toma las cifras canónicas de un juego de estados, corre sobre ellas un conjunto de cruces numéricos, recorre un checklist por jurisdicción y propone un desenlace. Esta página describe cada parte.

El flujo: carga → validación en vivo → desenlace

Sección titulada «El flujo: carga → validación en vivo → desenlace»
  1. Trae las cifras. Selega completa un esquema canónico de cifras repartidas entre el estado de situación patrimonial (ESP), el estado de resultados (ER), el estado de evolución del patrimonio neto (EEPN), el estado de flujo de efectivo (EFE), los anexos y las notas. El esquema se puede completar de tres maneras:
    • A mano, en una grilla — siempre disponible.
    • Con el motor de extracción local — una plantilla por formato sobre un lienzo de PDF, con OCR por región (Tesseract) y procedencia. Sin red, privado. Es el camino por defecto.
    • Con el motor de IA gateado — generaliza a cualquier formato pero manda datos a la nube, así que está apagado por defecto y es opt-in (ver IA gateada más abajo).
  2. Validación en vivo. A medida que llegan las cifras, los cruces corren continuamente. Cada cifra se pinta de verde cuando un cruce la corrobora, o de ámbar cuando entra en un cruce que no cierra. El revisor confirma; ningún número inconsistente pasa.
  3. Checklist. Junto con los cruces numéricos, se revisa el checklist de controles formales de la jurisdicción.
  4. Desenlace. El motor de decisión agrega los cruces que fallan y propone el desenlace — legalizar, observar, certificar la firma o denegar / devolver.

Selega modela un juego de estados contables como un esquema plano de cifras y flags (definido en src/core/schema.js), agnóstico del formato de PDF del que vinieron. Las cifras abarcan:

  • ESP (situación patrimonial): activo total, pasivo total, patrimonio neto, caja y bancos al cierre y al inicio.
  • EEPN (evolución del PN): patrimonio neto al cierre, resultado del ejercicio.
  • ER (estado de resultados): resultado final.
  • EFE (flujo de efectivo): método (directo / indirecto), efectivo al inicio y al cierre, variación del efectivo, flujos de operación / inversión / financiación, RECPAM del efectivo.
  • Anexos: amortización de bienes de uso del ejercicio, amortización en el anexo de gastos.
  • Notas / carátula: deuda de seguridad social SIPA, tipo societario, nota de prescindencia de la sindicatura, nota por patrimonio neto negativo.

Los cruces son el corazón de Selega. Son universales — las normas FACPCE rigen en todo el país — así que el mismo conjunto siembra cada jurisdicción; lo que cambia según el Consejo es el catálogo de controles formales y sus consecuencias. Se guardan como datos (un conjunto de cruces en JSON dentro del rule-pack) y los evalúa un motor genérico, de modo que un admin puede editarlos desde un constructor visual sin tocar código.

El conjunto por defecto viene con los cruces de abajo. Las comparaciones usan una tolerancia chica (por defecto, 1 unidad de moneda) para absorber el redondeo. Cada uno es una comparación (dos lados deben ser iguales) o un control de presencia (una cifra o nota debe estar presente bajo una condición). Por defecto, cada cruce de este conjunto carga una consecuencia de denegación directa, pero la consecuencia es configurable por cruce.

#CruceQué valida
1Igualdad patrimonial (A = P + PN)El activo total es igual al pasivo total más el patrimonio neto (ESP).
2PN: ESP = EEPNEl patrimonio neto del ESP es igual al patrimonio neto al cierre del EEPN.
3Resultado: ER = EEPNEl resultado final del estado de resultados es igual al resultado arrastrado en el EEPN.
4Efectivo: ESP = EFE (cierre)Caja y bancos al cierre en el ESP es igual al efectivo al cierre en el EFE.
5Variación EFE = cierre − inicioLa variación del efectivo es igual al efectivo al cierre menos el efectivo al inicio.
5bVariación EFE = Op + Inv + FinLa variación del efectivo es igual a los flujos de operación más inversión más financiación.
6Resultado: ER = EFE (indirecto)El resultado final concilia con el resultado del EFE. Solo cuando el método del EFE es indirecto.
7Amortizaciones: ER = EFE (indirecto)Las amortizaciones del estado de resultados son iguales a las del EFE. Solo método indirecto.
8Imp. Ganancias: ER = EFE (indirecto)El impuesto a las ganancias del estado de resultados es igual al del EFE. Solo método indirecto.
9RECPAM del efectivo expuesto en EFEHay una línea dedicada de RECPAM del efectivo. Solo cuando el método del EFE es directo.
10Amortizaciones: Anexo Bs.Uso = Anexo GastosLa amortización del ejercicio coincide entre los dos anexos.
11Seg. social art. 10 ley 17.250Está presente la declaración de deuda de seguridad social SIPA.
12Nota por PN negativoCuando el patrimonio neto es menor que cero, debe estar la nota requerida.
13Nota prescindencia sindicatura (SA/SAS)Para sociedades SA / SAS, debe estar la nota de prescindencia de la sindicatura (art. 284).

Cada cruce evalúa a uno de cuatro estados: OK (cierra), DIFIERE (no cierra — las cifras involucradas quedan marcadas en ámbar), NA (no aplicable bajo las condiciones actuales, p. ej. un cruce de solo-indirecto cuando el EFE es directo) o FALTA (falta una cifra requerida).

Los cruces que vuelven como DIFIERE se convierten en observaciones, cada una con la consecuencia definida por su cruce. El motor de decisión (src/core/decision.js) computa entonces el desenlace agregado por prioridad de consecuencia:

  • Denegación directa → el trabajo se deniega / devuelve. Si se pagó una tasa borrador, en cambio se devuelve para corregir.
  • Subsanable → se devuelve para corregir si se pagó una tasa borrador; si no, si el profesional opta por no corregir, se legaliza.
  • Certificar firma → degrada a certificar solo la firma.
  • Sin observación bloqueante → se legaliza.

Una tasa urgente combinada con cualquier observación pierde su carácter de urgente y el trabajo vuelve a la lista general de reingreso. Los desenlaces posibles son: Se legaliza, Se devuelve para corregir (tasa borrador), Se certifica solo la firma y Se deniega / se devuelve.

  • Selega trae un registro de las 24 jurisdicciones de Argentina; cada una está completamente definida o es una plantilla por completar.
  • Cada Consejo define su propio rule-pack: el catálogo de controles formales, qué cruces están habilitados y las consecuencias. El rule-pack editado localmente de una jurisdicción pisa al que viene en el repo.
  • Los cruces son universales (las normas FACPCE rigen en todo el país); los controles formales y las consecuencias son lo que varía según el Consejo.
  • Un admin elige qué jurisdicciones atiende una instalación dada, y cambia la jurisdicción activa desde el encabezado.

Selega tiene cinco roles — agente, supervisor, auditor, admin, superadmin — con un circuito de revisión configurable, una bandeja con semáforo y un expediente exportable de solo lectura. El acceso está gateado tanto visualmente (deshabilitando lo que un rol no puede hacer) como de verdad en el backend.

La IA está apagada por defecto y es enchufable. Puede correr contra un motor local (Ollama, p. ej. Qwen2.5-VL en CPU) o la nube (OpenRouter), local-first. El camino de nube está gateado por tres condiciones: habilitada en Admin, una API key presente y autorización por documento — porque es el único camino que manda datos fuera de la caja. La API key vive del lado del servidor (guardada write-only cuando se carga desde Admin).

El estado de Selega vive en PostgreSQL (el servicio db del compose, conectado vía DATABASE_URL). La base persiste en el volumen selega-pg — es el registro de las legalizaciones, así que respáldalo. El contenedor de la aplicación en sí solo lee /app y escribe la salida de OCR en /tmp.

Todo se configura por variables de entorno (12-factor) — ver Instalar Selega para la tabla completa. En lo operativo, lo que configuras es POSTGRES_PASSWORD (obligatoria), el email de admin, si estás detrás de TLS (SELEGA_SECURE_COOKIE), el puerto del host y, opcionalmente, la API key de IA nube (mejor cargada desde Admin). Las reglas por jurisdicción, los cruces, el checklist y los usuarios se editan todos desde los paneles de Administración y Sistema en la interfaz — sin tocar código.

JS vanilla (módulos ES, sin framework) · Node.js (su propio servidor HTTP) · PostgreSQL (pg) · Docker · pdf.js / Tesseract.js / pdf-lib vendorizados · Ollama opcional para IA local.