Flujo Operativo — Centros de Costo
Descripción de los flujos operativos del módulo de centros de costo en el sistema ERP del Consorcio Alvorada & Cladoca.
Flujo General: Del Centro de Costo al Dashboard
flowchart TD
A[Configurar Centro de Costo\ncon código PDVSA] --> B{Tipo}
B -->|OPEX| C[Plan Presupuestario OPEX\nBudgetPlan]
B -->|CAPEX| D[Plan Presupuestario CAPEX\nBudgetPlan / AFE]
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 Centro de Costo
sequenceDiagram
actor Admin
participant Sistema
participant BD as Base de Datos
Admin->>Sistema: POST /cost-centers
Note over Admin,Sistema: { code, name, pdvsaCode, costType, departmentId }
Sistema->>BD: INSERT CostCenter
BD-->>Sistema: costCenter creado
Sistema-->>Admin: 201 Created { id, code, pdvsaCode, 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, costCenterId, amount }
Sistema->>BD: INSERT BudgetLine con costCenterId
BD-->>Sistema: línea presupuestaria creada
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 --> AFE: Crear AFE (Authorization For Expenditure)
AFE --> 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 costCenterId]
Q1 --> EP1[GET /dashboard/execution-by-cost-center]
BE1 --> Q2[Query: GROUP BY pdvsaCode]
Q2 --> EP2[GET /dashboard/by-pdvsa-code]
BC[BudgetCommitment] --> Q3[Query: GROUP BY costCenterId]
Q3 --> EP3[GET /commitments/summary/by-cost-center]
end
subgraph Redux
EP1 --> T1[fetchExecutionByCostCenter]
EP2 --> T2[fetchByPdvsaCode]
EP3 --> T3[fetchCommitmentsByCostCenter]
T1 --> S1[state.budget.executionByCostCenter]
T2 --> S2[state.budget.byPdvsaCode]
T3 --> S3[state.budget.commitmentsByCostCenter]
end
subgraph Dashboards
S1 --> D1[BudgetDashboard\nTabla CC + Semáforo]
S2 --> D2[BudgetDashboard\nGráfico Dona PDVSA]
S1 --> D3[RealTimeDashboard\nSección CC Colapsable]
S1 --> D4[BudgetExecutionDashboard\nTab 5 - Por CC]
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 centro de costo | cost-centers:reports |
| Crear/editar centros de costo | 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