Saltar al contenido principal

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:

EtapaMonto ComprometidoMonto Ejecutado
Requisición aprobada+X0
OC aprobadaX (sin cambio)0
RecepciónX (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ónColorSignificado
< 80%VerdeEjecución normal
80% - 95%AmarilloPrecaución — cerca del límite
> 95%RojoAlerta — presupuesto casi agotado
> 100%RojoSobre-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.budgetType no 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 include de BudgetPlan, no en BudgetLine.

Permisos Requeridos

AcciónPermiso
Ver dashboards de presupuestobudget:read
Ver desgloses por centro de costocost-centers:reports
Crear/editar centros de costocost-centers:write
Ver reportes de compromisosbudget:read

Referencias