erp-construccion/docs/02-definicion-modulos/MAE-014-finanzas-controlling/especificaciones/ET-FIN-001-modelo de datos financiero.md

1.5 KiB

ET-FIN-001: Modelo de Datos Financiero

ID: ET-FIN-001 | Módulo: MAE-014

Schema

CREATE SCHEMA finance;

CREATE TYPE finance.transaction_type AS ENUM ('income', 'expense');
CREATE TYPE finance.payment_status AS ENUM ('pending', 'partial', 'paid', 'overdue');

CREATE TABLE finance.cash_flows (
  id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
  project_id UUID REFERENCES projects.projects(id),
  type finance.transaction_type NOT NULL,
  category VARCHAR(100) NOT NULL,
  amount BIGINT NOT NULL,
  projected_date DATE NOT NULL,
  actual_date DATE,
  actual_amount BIGINT,
  description TEXT,
  created_at TIMESTAMPTZ DEFAULT NOW()
);

CREATE TABLE finance.receivables (
  id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
  project_id UUID REFERENCES projects.projects(id),
  client_id UUID REFERENCES clients.clients(id),
  invoice_number VARCHAR(50) UNIQUE,
  amount BIGINT NOT NULL,
  paid_amount BIGINT DEFAULT 0,
  due_date DATE NOT NULL,
  status finance.payment_status DEFAULT 'pending',
  created_at TIMESTAMPTZ DEFAULT NOW()
);

CREATE TABLE finance.payables (
  id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
  project_id UUID REFERENCES projects.projects(id),
  vendor_id UUID REFERENCES preconstruction.vendors(id),
  invoice_number VARCHAR(50),
  amount BIGINT NOT NULL,
  paid_amount BIGINT DEFAULT 0,
  due_date DATE NOT NULL,
  status finance.payment_status DEFAULT 'pending',
  created_at TIMESTAMPTZ DEFAULT NOW()
);

Generado: 2025-11-21