Flujo Operativo — Renglones Presupuestarios y Centros de Costo
Cambio importante (mayo 2026): Tras el Sub-proyecto 1, lo que antes se llamaba "centro de costo" en este flujo es ahora un renglón presupuestario (
budget_position). Los centros de costo verdaderos (cost_centersnuevo) son unidades organizacionales que aparecen como dimensión adicional en cada operación. Ver Dimensiones Contables.
Descripción de los flujos operativos de las dimensiones contables (renglón presupuestario, área funcional, centro de costo) en el sistema ERP del Consorcio Alvorada & Cladoca.
Flujo General: Del Renglón al Dashboard
flowchart TD
A[Configurar Renglón Presupuestario\ncon Área Funcional PDVSA] --> B{Tipo}
B -->|OPEX| C[Plan Presupuestario OPEX\nBudgetPlan]
B -->|CAPEX| D[Plan Presupuestario CAPEX\nBudgetPlan / Línea CAPEX]
C --> E[Línea Presupuestaria\nBudgetLine]
D --> F[Línea Presupuestaria\nBudgetLine]
E --> G{Origen del Gasto}
F --> G
G -->|Orden de Compra| H[PurchaseOrder\nRequisición → OC → Recepción]
G -->|Contrato / Valuación| I[ProjectValuation\nContrato → Valuación → Pago]
G -->|Gasto Interno| J[ProjectExpense\nGasto → Aprobación → Pago]
H --> K[BudgetCommitment\nComprometido]
I --> K
J --> K
K --> L[BudgetExecution\nEjecutado al Pagar]
L --> M[Dashboard]
M --> N[Ejecución por CC]
M --> O[Agrupación PDVSA]
M --> P[OPEX vs CAPEX]
Flujo de Creación de un Renglón Presupuestario
sequenceDiagram
actor Admin
participant Sistema
participant BD as Base de Datos
Admin->>Sistema: POST /budget/positions
Note over Admin,Sistema: { code, name, costType, functionalAreaId, category }
Sistema->>BD: INSERT BudgetPosition
BD-->>Sistema: budgetPosition creado
Sistema-->>Admin: 201 Created { id, code, functionalAreaId, costType }
Admin->>Sistema: POST /budget/plans
Note over Admin,Sistema: { fiscalYear, budgetType: OPEX/CAPEX }
Sistema->>BD: INSERT BudgetPlan
BD-->>Sistema: plan creado
Admin->>Sistema: POST /budget/lines
Note over Admin,Sistema: { budgetPlanId, budgetPositionId, costCenterId, amount }
Sistema->>BD: INSERT BudgetLine con budgetPositionId + costCenterId
BD-->>Sistema: línea presupuestaria creada (functionalAreaId inferido desde bp)
Flujo OPEX: Requisición → Orden de Compra → Ejecución
stateDiagram-v2
[*] --> Requisicion: Solicitud de Compra
Requisicion --> OC_Pendiente: Aprobar Requisición\nGenerates BudgetCommitment (PENDING)
OC_Pendiente --> OC_Aprobada: Aprobar OC\nBudgetCommitment = APPROVED
OC_Aprobada --> Recepcion: Recibir Mercancía/Servicio
Recepcion --> Factura: Generar Factura Proveedor
Factura --> Pago: Procesar Pago
Pago --> [*]: BudgetExecution creado\nBudgetCommitment = PAID
Impacto presupuestario por etapa:
| Etapa | Monto Comprometido | Monto Ejecutado |
|---|---|---|
| Requisición aprobada | +X | 0 |
| OC aprobada | X (sin cambio) | 0 |
| Recepción | X (sin cambio) | 0 |
| Pago procesado | -X | +X |
Flujo CAPEX: Contrato → Valuación → Pago
stateDiagram-v2
[*] --> Contrato: Crear Contrato con Contratista
Contrato --> Línea CAPEX: Crear Línea CAPEX (Authorization For Expenditure)
Línea CAPEX --> Valuacion_Draft: Crear Valuación\nBudgetCommitment = PENDING
Valuacion_Draft --> Valuacion_Aprobada: Aprobar Valuación\nAsiento: Construcción D / CxP C
Valuacion_Aprobada --> Factura_Contratista: Generar Factura Contratista
Factura_Contratista --> Pago_Contratista: Procesar Pago\nAsiento: CxP D / Banco C
Pago_Contratista --> [*]: BudgetExecution creado\nBudgetCommitment = PAID
Flujo de Datos en el Dashboard
flowchart LR
subgraph Backend
BE1[BudgetExecution] --> Q1[Query: GROUP BY budgetPositionId]
Q1 --> EP1[GET /dashboard/execution-by-position]
BE1 --> Q2[Query: GROUP BY functionalAreaId]
Q2 --> EP2[GET /dashboard/by-functional-area]
BC[BudgetCommitment] --> Q3[Query: GROUP BY costCenterId]
Q3 --> EP3[GET /commitments/summary/by-cost-center]
end
subgraph Redux
EP1 --> T1[fetchExecutionByPosition]
EP2 --> T2[fetchByFunctionalArea]
EP3 --> T3[fetchCommitmentsByCostCenter]
T1 --> S1[state.budget.executionByPosition]
T2 --> S2[state.budget.byFunctionalArea]
T3 --> S3[state.budget.commitmentsByCostCenter]
end
subgraph Dashboards
S1 --> D1[BudgetDashboard\nTabla Renglón + Semáforo]
S2 --> D2[BudgetDashboard\nGráfico Dona Áreas Funcionales]
S1 --> D3[RealTimeDashboard\nSección por Dimensión]
S1 --> D4[BudgetExecutionDashboard\nTab 5 - Por Renglón]
S3 --> D5[BudgetCommitmentDashboard\nSección Compromisos CC]
end
Reglas de Negocio
Semáforo de Ejecución
El color del indicador de progreso en tablas de centros de costo sigue estas reglas:
| % Ejecución | Color | Significado |
|---|---|---|
| < 80% | Verde | Ejecución normal |
| 80% - 95% | Amarillo | Precaución — cerca del límite |
| > 95% | Rojo | Alerta — presupuesto casi agotado |
| > 100% | Rojo | Sobre-presupuesto |
Disponible = Planificado - Comprometido - Ejecutado
El monto disponible se calcula:
disponible = planificado - comprometido - ejecutado
Si disponible < 0, el centro de costo está sobre-presupuesto y se muestra en rojo en los dashboards.
Herencia de Tipo (OPEX/CAPEX)
BudgetLine.budgetTypeno existe como columna independiente.- El tipo se determina siempre a través de
BudgetLine → BudgetPlan.budgetType. - Al filtrar por OPEX/CAPEX, siempre se aplica el filtro en el
includedeBudgetPlan, no enBudgetLine.
Permisos Requeridos
| Acción | Permiso |
|---|---|
| Ver dashboards de presupuesto | budget:read |
| Ver desgloses por renglón | budget:positions:read |
| Crear/editar renglones | budget:positions:write |
| Ver desgloses por centro de costo | accounting:cost-centers:read |
| Crear/editar centros de costo | accounting:cost-centers:write |
| Ver reportes de compromisos | budget:read |
Referencias
- nomenclatura-pdvsa.md — Códigos PDVSA
- guia-usuario-centros-de-costo.md — Guía para usuarios finales
- api-reference-centros-de-costo.md — API Reference