Saltar al contenido principal

Plan de Cuentas

Vista del Plan de Cuentas

Listado del plan de cuentas con columna Subtipo y filtros (sub2 — 2026-05-02)

El listado muestra para cada cuenta: código, nombre, tipo (Activo/Pasivo/Patrimonio/Ingreso/Gasto), subtipo VEN-NIIF (CURRENT_ASSET, FIXED_ASSET, OCI, etc.), nivel jerárquico, saldos deudor/acreedor/neto, y estado.

Filtro por subtipo

Filtro de subtipo desplegado mostrando 18 opciones VEN-NIIF

El filtro Subtipo permite acotar el listado por categorías VEN-NIIF para PYMES (Sec 4-5-29-31): Activo Corriente, Propiedad Planta y Equipo, Imp. Diferido Activo, ORI, REI, Costo de Ventas, etc.


Acceso

Ruta: Contabilidad > Plan de Cuentas Permisos: accounting:read o accounting:*

El Plan de Cuentas es la estructura jerárquica de todas las cuentas contables utilizadas en el sistema. Cada cuenta tiene un código único, un subtipo VEN-NIIF, y está clasificada según su naturaleza contable.

Estructura jerárquica

El plan de cuentas usa 5 niveles organizados así:

Nivel 1 (raíz)         1   ACTIVO                    [tipo ASSET]
Nivel 2 (subcategoría) 1.1 ACTIVO CORRIENTE [subtipo CURRENT_ASSET]
Nivel 3 (grupo) 1.1.1 EFECTIVO EN CAJA Y BANCO
Nivel 4 (cuenta mayor) 1.1.1.01 BANCOS NACIONALES VES
Nivel 5 (auxiliar) 1.1.1.01.01 BANCO PROVINCIAL CTA 0108-XXXX
  • Cuentas de resumen: L1, L2, L3 — no aceptan movimientos directos
  • Cuentas de detalle: L4, L5 — aceptan movimientos (acceptsTransactions=true)

Las 6 raíces L1

CodeNombreTipo
1ACTIVOASSET
2PASIVOSLIABILITY
3CAPITALEQUITY
4INGRESOSREVENUE
5GASTOS OPERATIVOSEXPENSE
6COSTOSEXPENSE

Formulario de cuenta

Formulario Nueva Cuenta con campo Código SUDEBAN deprecated y selector de Subtipo VEN-NIIF

El formulario captura todos los campos del modelo. Cambios sub2 destacados:

  • "Código SUDEBAN (legacy, opcional)": el campo lleva un icono ℹ️ con tooltip explicando que es deprecated (ACE no es banco). Si se llena, debe ser exactamente 7 dígitos.
  • Subtipo (selector): cambia de input libre a dropdown con opciones VEN-NIIF según el accountType seleccionado. Es requerido para cuentas L1 y L2.

Selector de Subtipo (dropdown abierto)

Selector de Subtipo desplegado con opciones agrupadas por accountType

El dropdown ofrece sólo subtipos válidos para el tipo de cuenta seleccionado (ASSET → CURRENT_ASSET, FIXED_ASSET, INTANGIBLE_ASSET, NON_CURRENT_ASSET, DEFERRED_TAX_ASSET).

Subtipos VEN-NIIF (sub2 — 2026-05-02)

Cada cuenta L1 y L2 lleva un accountSubtype que clasifica su rol en los EEFF según VEN-NIIF para PYMES Sec 4-5-29-31. Esto permite generar reportes financieros sin parsear el code.

Subtipos por categoría

accountTypeSubtipos válidos
ASSETCURRENT_ASSET, FIXED_ASSET, INTANGIBLE_ASSET, NON_CURRENT_ASSET, DEFERRED_TAX_ASSET
LIABILITYCURRENT_LIABILITY, LONG_TERM_LIABILITY, DEFERRED_TAX_LIABILITY
EQUITYCAPITAL, RETAINED_EARNINGS, OTHER_EQUITY, OCI, REI, RESERVES, DIVIDENDS
REVENUEOPERATING_REVENUE, OTHER_REVENUE, FINANCIAL_REVENUE
EXPENSEOPERATING_EXPENSE, ADMINISTRATIVE_EXPENSE, FINANCIAL_EXPENSE, COST_OF_SALES, NON_OPERATING_EXPENSE

Bloques nuevos sub2 (Sec 5/29/31)

ORI — Otros Resultados Integrales (Sec 5)

3.6   OTROS RESULTADOS INTEGRALES         [subtype OCI]
3.6.01 Ajuste por revaluación PPE
3.6.02 Ganancias/pérdidas actuariales
3.6.03 Otros componentes ORI

Requeridos para presentar el Estado de Resultado Integral según Sec 5.

REI — Resultado por Exposición a la Inflación (Sec 31 / BA VEN-NIF 2 v4)

Reorganización del bloque 5.11 NO MONETARIOS:

5.11    NO MONETARIOS                     [subtype NON_OPERATING_EXPENSE]
5.11.01 REI sobre activos no monetarios
5.11.02 REI sobre patrimonio
5.11.03 REI sobre partidas monetarias

Impuestos diferidos (Sec 29)

1.2.4   IMPUESTO DIFERIDO ACTIVO          [subtype DEFERRED_TAX_ASSET]
1.2.4.01 Diferencias temporales activas
2.2.2 IMPUESTO DIFERIDO PASIVO [subtype DEFERRED_TAX_LIABILITY]
2.2.2.01 Diferencias temporales pasivas

Validaciones (sub2)

El servicio chartOfAccountsService aplica:

  1. accountSubtype requerido para cuentas L1 y L2.
  2. Nombre child ≠ parent: rechaza child con nombre idéntico al padre (case-insensitive). Anti-patrón detectado en auditoría.
  3. No proveedores en PUC: rechaza L4+ con razón social (matching S.A., C.A., LTDA, INDUSTRIES, CORP, INC, LLC). Los proveedores van al módulo Vendors.
  4. Hard-delete bloqueado si la cuenta está referenciada en accounting_link_configurations, accounting_mapping_configurations, accounting_transaction_mappings, o journal_entry_lines. Usar softDeleteAccount (isActive=false).

Campos del modelo

CampoTipoDescripción
idUUIDPK
codevarchar(20)Código jerárquico único (1.1.01.001)
namevarchar(200)Nombre de la cuenta
accountTypeenumASSET / LIABILITY / EQUITY / REVENUE / EXPENSE
accountSubtypevarchar(30)Subtipo VEN-NIIF (CHECK constraint enum)
parentIdUUID nullableFK a accounting_accounts(id)
levelint1-5
isDebitNaturebooltrue=deudora, false=acreedora
acceptsTransactionsboolSi acepta movimientos (cuentas de detalle)
currencyvarchar(3)USD / VES / EUR
isActiveboolSoft-delete vía isActive=false
fullCodevarchar(200)Read-only, sincronizado con code por trigger
code_sort_keytextGENERATED ALWAYS (M8). Padding 4-dígitos por segmento para sort lexicográfico correcto.
externalCodevarchar(10)DEPRECATED: PDCA SUDEBAN 7-dígitos. Opcional, validado por regex ^\d{7}$. ACE no es banco.
balance, balanceDebit, balanceCreditdecimalSaldos calculados

Sort lexicográfico (code_sort_key)

Antes de sub2, ordenar por code daba: 5.1 < 5.10 < 5.11 < 5.2 (string-sort roto).

code_sort_key resuelve esto padeando cada segmento a 4 dígitos:

codecode_sort_key
5.10005.0001
5.100005.0010
5.110005.0011
5.20005.0002

Sort lexicográfico produce 5.1, 5.2, 5.10, 5.11 ✓.

Reportes y queries deben usar ORDER BY code_sort_key no ORDER BY code.

Endpoints API

MétodoRutaPermiso
GET/api/accounting/accountsaccounting:read
GET/api/accounting/accounts/:idaccounting:read
POST/api/accounting/accountsaccounting:create
PUT/api/accounting/accounts/:idaccounting:update
DELETE/api/accounting/accounts/:idaccounting:delete (hard-delete; bloqueado si tiene refs)
GET/api/accounting/accounts/treeaccounting:read

Filtros soportados en GET list: accountType, accountSubtype, isActive, acceptsTransactions, search (buscar en code, name, externalCode).

Migraciones aplicadas (sub2 — 2026-05-02)

#ArchivoAcción
M220260502000001-sub2-repair-full-code-nulls.jsRepara full_code NULL legacy
M320260502000002-sub2-add-account-subtype-check.jsEnum CHECK + populate de account_subtype
M420260502000003-sub2-add-external-code-format-check.jsRegex CHECK ^\d{7}$ + COMMENT deprecated
M520260502000004-sub2-sync-full-code-trigger.jsTrigger sync full_code = code
M620260502000005-sub2-eliminate-redundant-l3.jsElimina L3 con name=parent.name; reasigna L4 al abuelo
M720260502000006-sub2-detect-vendor-accounts.jsDetecta+elimina razones sociales L5 (no crea Vendor automático)
M820260502000007-sub2-add-code-sort-key.jsColumna GENERATED code_sort_key + index
M920260502000008-sub2-seed-venniif-blocks.jsSiembra ORI (3.6.x), REI (5.11.0x), Imp. Diferido (1.2.4 + 2.2.2)

Estado en producción tras sub2 (2026-05-02)

MétricaValor
Total cuentas387 (era 401, -14)
Cuentas con subtype poblado367 / 387 (95%)
Subtipos distintos en uso18
Cuentas con full_code desfasado0 (trigger M5)
external_code mal formado0 (CHECK M4)
Cuentas con code_sort_key calculado387 (100%, columna GENERATED)
Cuentas L3 redundantes eliminadas21 (M6)
Cuentas-de-proveedor eliminadas4 (M7 — 6 quedaron pendientes por refs)
Cuentas nuevas sembradas (Sec 5/29/31)11 (ORI 4, REI 3, Imp.Diferido 4)
NormaAplicación
VEN-NIIF para PYMES Sec 4-5-29✅ EEFF + impuestos diferidos
BA VEN-NIF 2 v4 (vigente 01-ene-2025)✅ Reexpresión INPC obligatoria + REI granular
Código de Comercio Art. 32-34✅ Libros obligatorios — NO impone PUC
PDCA SUDEBAN 7-dígitos❌ NO aplica a ACE (no es banco) — externalCode opcional
LISLR Art. 173⚠️ Depende de contribuyente especial

ACE tiene libertad técnica total para definir su PUC mientras los EEFF cumplan VEN-NIIF Sec 4-7 + reexpresión Sec 31.