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

52 lines
1.5 KiB
Markdown

# ET-FIN-001: Modelo de Datos Financiero
**ID:** ET-FIN-001 | **Módulo:** MAE-014
## Schema
```sql
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