Gestión de Centros de Costo
Cambio importante (mayo 2026): Esta guía describe el modelo nuevo de Centros de Costo (unidades organizacionales con responsable, departamento y jerarquía). Si lo que buscas es la matriz de partidas presupuestarias y códigos PDVSA, ve a Renglones Presupuestarios.
Guía operativa para crear, editar y gestionar centros de costo en el sistema.
Cómo acceder
- En el menú lateral, seleccione "Contabilidad".
- Haga clic en "Centros de Costo".
- Verá la vista de árbol o lista con los 22 CCs iniciales.
URL: /accounting/cost-centers
Permisos requeridos: accounting:cost-centers:read (lectura), accounting:cost-centers:write (escritura).
Vista de Árbol vs. Vista de Lista
| Vista | Descripción | Cuándo usarla |
|---|---|---|
| Árbol | Jerarquía visual padre-hijo con expansión por nivel | Para entender la estructura organizacional completa |
| Lista | Tabla con filtros y búsqueda | Para encontrar y editar un CC específico |
Crear un Centro de Costo
Paso 1
En la vista de lista o árbol, haga clic en "+ Nuevo Centro de Costo".
Paso 2: Datos del Centro de Costo
| Campo | Requerido | Descripción |
|---|---|---|
| Código | ✅ | UNIQUE; máx. 20 caracteres (ej. CC-OPS-NORTE) |
| Nombre | ✅ | Nombre descriptivo (máx. 150 caracteres) |
| Tipo | ✅ | PRODUCTIVE, ADMINISTRATIVE, SUPPORT, PROJECT |
| Departamento | ✅ | Departamento al que pertenece (FK NOT NULL) |
| CC Padre | CC del que cuelga en la jerarquía (opcional) | |
| Responsable | Empleado gerente del CC (opcional) | |
| Vigente desde | Default: fecha actual | |
| Vigente hasta | Default: NULL (vigente sin fin) | |
| Estado | ACTIVE o INACTIVE |
Paso 3: Guardar
El sistema calcula automáticamente:
level: profundidad en el árbol (parent.level + 1).id: UUID generado.
Estructura Jerárquica
Los CCs se organizan en árbol con tantos niveles como necesite la organización. La jerarquía actual de ACE tiene 3 niveles:
Nivel 0 — Raíz organizacional
CC-DIR (Dirección Técnica)
CC-PLT (Planta)
CC-PROD (Producción)
Nivel 1 — Gerencia
CC-OPS (bajo CC-PROD), CC-MTO (bajo CC-DIR), CC-FIN, CC-RRHH, …
Nivel 2 — Áreas productivas
CC-OPS-POZOS, CC-OPS-ESTACIONES, CC-MTO-PLANTA, …
Reglas de la jerarquía
- Un CC puede tener múltiples hijos.
parent_id != id(no se permite auto-referencia — enforced por CHECK constraint).- No se permiten ciclos (
parent → … → self). - Los gastos pueden imputarse a CCs de cualquier nivel; los reportes consolidan saldos hacia los padres.
Departamento Asociado
Todo CC pertenece a un único departamento (department_id NOT NULL). Esto reemplaza la referencia circular previa donde Department.cost_center_id apuntaba al CC y al revés.
Mapeo inicial CC ↔ Departamento
| Departamento | CC asociado |
|---|---|
| DIR (Dirección Técnica) | CC-DIR |
| PLT (Planta) | CC-PLT |
| PROD (Producción) | CC-PROD |
| OPS (Operaciones) | CC-OPS, CC-OPS-POZOS, CC-OPS-ESTACIONES, CC-OPS-RECOLECCION |
| MTO (Mantenimiento) | CC-MTO, CC-MTO-POZOS, CC-MTO-PLANTA, CC-MTO-FLOTA |
| YAC (Yacimientos) | CC-YAC |
| COM, CONT, FIN, INF, LEG, LOG, PCP, PLAN, RRHH, SIHOA | (uno cada uno) |
Nota: Las migraciones M5/M9 crean automáticamente los departamentos
PLTyPRODsi no existían en bases preexistentes.
Editar un Centro de Costo
- En lista o árbol, localice el CC.
- Clic en lápiz (✏️).
- Modifique los campos.
- Guardar.
Limitaciones:
- No puede cambiar el código de un CC con asientos contables asociados.
- Cambiar el padre recalcula
levelautomáticamente.
Activar / Desactivar un Centro de Costo
Un CC inactivo no aparece en selectores de nuevos asientos:
- Vaya al detalle del CC.
- Cambie Estado a
INACTIVE. - Guarde.
Esta es la forma de "retirar" un CC que ya tiene historial. La eliminación física sólo es posible si no tiene asientos, líneas presupuestarias ni hijos activos (validado por
costCenterService.delete()).
Asignar un Responsable
El campo manager_id apunta a un empleado del módulo Empleados:
- Detalle del CC > Responsable.
- Seleccione un empleado activo.
- Guarde.
El responsable aparece en reportes de ejecución como contraparte para escalamientos y aprobaciones.
Reportes por Centro de Costo
Desde el detalle de un CC puede ver:
| Reporte | Contenido |
|---|---|
| Asientos del período | Líneas de journal_entry_lines filtradas por cost_center_id |
| Ejecución por renglón | Cruce CC × renglón presupuestario |
| Ejecución por área funcional | Cruce CC × área funcional PDVSA |
| Comparativo histórico | Evolución mes a mes |
| Árbol de hijos | Si es CC padre, consolida saldos de descendientes |
Asignar un CC en Otros Módulos
En Requisiciones
Al crear una requisición, el formulario obliga a seleccionar cost_center_id (responsable) además de budget_position_id (renglón). El selector usa CostCenterTreeSelector con árbol expandible.
En Órdenes de Compra
Hereda cost_center_id de la requisición; es editable hasta que la OC esté APROBADA.
En Asientos Contables (manuales)
El formulario de líneas de JE ofrece los 5 campos dimensionales. cost_center_id es obligatorio para cuentas EXPENSE y REVENUE. Ver Dimensiones Contables.
En Nómina
payrollService propaga cost_center_id desde el departamento del empleado al asiento de cierre del período (área funcional PER).
Permisos
| Acción | Permiso |
|---|---|
| Ver CCs | accounting:cost-centers:read |
| Crear / editar / desactivar | accounting:cost-centers:write |
Roles típicos:
| Rol | Permisos |
|---|---|
| Super Admin | *:* |
| Director Técnico | `accounting:cost-centers:read |
| Gerente Finanzas | `accounting:cost-centers:read |
| Contador | accounting:cost-centers:read |
| Analista | accounting:cost-centers:read |
Preguntas Frecuentes
"¿Puedo eliminar un CC?"
Sólo si no tiene asientos, ni líneas presupuestarias, ni hijos activos. Si tiene historial, desactívelo (status=INACTIVE).
"¿Cuál es la diferencia entre Centro de Costo y Renglón Presupuestario?"
- Centro de Costo: ¿quién es responsable? (organizacional, 22 unidades).
- Renglón Presupuestario: ¿qué partida del presupuesto consume? (matriz PDVSA, 149 partidas).
Las dos dimensiones se cruzan libremente en cada asiento. Ver Dimensiones Contables.
"¿Por qué cambió la URL?"
La URL de los CCs reales pasó a /accounting/cost-centers. La URL antigua /cost-centers redirige (308) a /budget/positions durante un release porque ese path estaba realmente apuntando a los renglones presupuestarios.
"¿Puedo tener un CC sin padre?"
Sí. Los CCs raíz (level=0) no tienen padre. Hoy son CC-DIR, CC-PLT y CC-PROD.
"¿Cómo agrego un nuevo nivel jerárquico?"
Cree un CC nuevo seleccionando como CC Padre el nivel superior. El sistema calcula level automáticamente.