Financial Schema (50-57): - 50-financial-schema.sql: Schema + 10 ENUMs - 51-financial-accounts.sql: account_types, accounts, account_mappings - 52-financial-journals.sql: fiscal_years, fiscal_periods, journals - 53-financial-entries.sql: journal_entries, journal_entry_lines - 54-financial-invoices.sql: invoices, invoice_lines - 55-financial-payments.sql: payments, payment_invoice_allocations - 56-financial-taxes.sql: taxes, tax_groups - 57-financial-bank-reconciliation.sql: bank_statements, bank_statement_lines, rules Purchases Matching (46): - 46-purchases-matching.sql: purchase_order_matching, purchase_matching_lines, matching_exceptions Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
155 lines
4.8 KiB
SQL
155 lines
4.8 KiB
SQL
-- =============================================================
|
|
-- ARCHIVO: 50-financial-schema.sql
|
|
-- DESCRIPCION: Schema de contabilidad financiera y tipos enumerados
|
|
-- VERSION: 1.0.0
|
|
-- PROYECTO: ERP-Core V2
|
|
-- FECHA: 2026-01-20
|
|
-- DEPENDE DE: Ninguno (define el schema base)
|
|
-- =============================================================
|
|
|
|
-- =====================
|
|
-- SCHEMA: financial
|
|
-- Schema para modulo de contabilidad general
|
|
-- =====================
|
|
CREATE SCHEMA IF NOT EXISTS financial;
|
|
|
|
-- =====================
|
|
-- EXTENSIONES REQUERIDAS
|
|
-- =====================
|
|
CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
|
|
|
|
-- =====================
|
|
-- TIPOS ENUMERADOS
|
|
-- =====================
|
|
|
|
-- Tipo de cuenta contable (activo, pasivo, capital, ingreso, gasto)
|
|
DO $$ BEGIN
|
|
CREATE TYPE financial.account_type_enum AS ENUM (
|
|
'asset', -- Activo
|
|
'liability', -- Pasivo
|
|
'equity', -- Capital/Patrimonio
|
|
'income', -- Ingreso
|
|
'expense' -- Gasto
|
|
);
|
|
EXCEPTION
|
|
WHEN duplicate_object THEN null;
|
|
END $$;
|
|
|
|
-- Tipo de diario contable
|
|
DO $$ BEGIN
|
|
CREATE TYPE financial.journal_type_enum AS ENUM (
|
|
'sale', -- Ventas
|
|
'purchase', -- Compras
|
|
'cash', -- Caja
|
|
'bank', -- Banco
|
|
'general' -- General
|
|
);
|
|
EXCEPTION
|
|
WHEN duplicate_object THEN null;
|
|
END $$;
|
|
|
|
-- Estado de asiento contable
|
|
DO $$ BEGIN
|
|
CREATE TYPE financial.entry_status_enum AS ENUM (
|
|
'draft', -- Borrador
|
|
'posted', -- Publicado/Contabilizado
|
|
'cancelled' -- Cancelado
|
|
);
|
|
EXCEPTION
|
|
WHEN duplicate_object THEN null;
|
|
END $$;
|
|
|
|
-- Estado de periodo fiscal
|
|
DO $$ BEGIN
|
|
CREATE TYPE financial.period_status_enum AS ENUM (
|
|
'open', -- Abierto
|
|
'closed' -- Cerrado
|
|
);
|
|
EXCEPTION
|
|
WHEN duplicate_object THEN null;
|
|
END $$;
|
|
|
|
-- Tipo de factura
|
|
DO $$ BEGIN
|
|
CREATE TYPE financial.invoice_type_enum AS ENUM (
|
|
'customer', -- Factura de cliente (venta)
|
|
'supplier' -- Factura de proveedor (compra)
|
|
);
|
|
EXCEPTION
|
|
WHEN duplicate_object THEN null;
|
|
END $$;
|
|
|
|
-- Estado de factura
|
|
DO $$ BEGIN
|
|
CREATE TYPE financial.invoice_status_enum AS ENUM (
|
|
'draft', -- Borrador
|
|
'open', -- Abierta/Validada
|
|
'paid', -- Pagada
|
|
'cancelled' -- Cancelada
|
|
);
|
|
EXCEPTION
|
|
WHEN duplicate_object THEN null;
|
|
END $$;
|
|
|
|
-- Tipo de pago
|
|
DO $$ BEGIN
|
|
CREATE TYPE financial.payment_type_enum AS ENUM (
|
|
'inbound', -- Entrada (cobro)
|
|
'outbound' -- Salida (pago)
|
|
);
|
|
EXCEPTION
|
|
WHEN duplicate_object THEN null;
|
|
END $$;
|
|
|
|
-- Metodo de pago
|
|
DO $$ BEGIN
|
|
CREATE TYPE financial.payment_method_enum AS ENUM (
|
|
'cash', -- Efectivo
|
|
'bank_transfer', -- Transferencia bancaria
|
|
'check', -- Cheque
|
|
'card', -- Tarjeta
|
|
'other' -- Otro
|
|
);
|
|
EXCEPTION
|
|
WHEN duplicate_object THEN null;
|
|
END $$;
|
|
|
|
-- Estado de pago
|
|
DO $$ BEGIN
|
|
CREATE TYPE financial.payment_status_enum AS ENUM (
|
|
'draft', -- Borrador
|
|
'posted', -- Contabilizado
|
|
'reconciled', -- Conciliado
|
|
'cancelled' -- Cancelado
|
|
);
|
|
EXCEPTION
|
|
WHEN duplicate_object THEN null;
|
|
END $$;
|
|
|
|
-- Tipo de impuesto
|
|
DO $$ BEGIN
|
|
CREATE TYPE financial.tax_type_enum AS ENUM (
|
|
'sales', -- Solo ventas
|
|
'purchase', -- Solo compras
|
|
'all' -- Ambos (ventas y compras)
|
|
);
|
|
EXCEPTION
|
|
WHEN duplicate_object THEN null;
|
|
END $$;
|
|
|
|
-- =====================
|
|
-- COMENTARIOS DEL SCHEMA
|
|
-- =====================
|
|
COMMENT ON SCHEMA financial IS 'Schema para el modulo de contabilidad general: plan de cuentas, diarios, asientos, facturas financieras y pagos';
|
|
|
|
COMMENT ON TYPE financial.account_type_enum IS 'Clasificacion de cuentas contables: activo, pasivo, capital, ingreso, gasto';
|
|
COMMENT ON TYPE financial.journal_type_enum IS 'Tipo de diario contable: ventas, compras, caja, banco, general';
|
|
COMMENT ON TYPE financial.entry_status_enum IS 'Estado del asiento contable: borrador, publicado, cancelado';
|
|
COMMENT ON TYPE financial.period_status_enum IS 'Estado del periodo fiscal: abierto, cerrado';
|
|
COMMENT ON TYPE financial.invoice_type_enum IS 'Tipo de factura financiera: cliente (venta), proveedor (compra)';
|
|
COMMENT ON TYPE financial.invoice_status_enum IS 'Estado de factura: borrador, abierta, pagada, cancelada';
|
|
COMMENT ON TYPE financial.payment_type_enum IS 'Direccion del pago: inbound (cobro), outbound (pago)';
|
|
COMMENT ON TYPE financial.payment_method_enum IS 'Metodo de pago: efectivo, transferencia, cheque, tarjeta, otro';
|
|
COMMENT ON TYPE financial.payment_status_enum IS 'Estado del pago: borrador, contabilizado, conciliado, cancelado';
|
|
COMMENT ON TYPE financial.tax_type_enum IS 'Aplicacion del impuesto: ventas, compras, ambos';
|