-- ============================================================= -- 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';