erp-transportistas-database-v2/ddl/00-schemas-init.sql
Adrian Flores Cortes c93e2b1e0e feat: Initial database structure for ERP Transportistas
- PostgreSQL 15 with PostGIS extension
- 8 schemas for transport domain
- ENUMs for viaje states, unit types, events
- DDL documentation and conventions

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-25 09:51:31 -06:00

141 lines
3.6 KiB
SQL

-- =============================================================================
-- ERP TRANSPORTISTAS - Inicializacion de Schemas
-- =============================================================================
-- Archivo: 00-schemas-init.sql
-- Version: 1.0.0
-- Fecha: 2026-01-25
-- Descripcion: Crea los schemas especificos del giro transporte
-- =============================================================================
-- Extensiones requeridas
CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
CREATE EXTENSION IF NOT EXISTS "postgis"; -- Para geolocalizacion
-- =============================================================================
-- SCHEMAS DEL GIRO TRANSPORTE
-- =============================================================================
-- Schema principal de transporte
CREATE SCHEMA IF NOT EXISTS transport;
COMMENT ON SCHEMA transport IS 'Ordenes de transporte, embarques, viajes, POD';
-- Schema de flota
CREATE SCHEMA IF NOT EXISTS fleet;
COMMENT ON SCHEMA fleet IS 'Unidades, remolques, operadores, documentos';
-- Schema de tracking
CREATE SCHEMA IF NOT EXISTS tracking;
COMMENT ON SCHEMA tracking IS 'Eventos GPS, geocercas, alertas';
-- Schema de combustible y gastos
CREATE SCHEMA IF NOT EXISTS fuel;
COMMENT ON SCHEMA fuel IS 'Control de combustible, peajes, gastos de viaje';
-- Schema de mantenimiento
CREATE SCHEMA IF NOT EXISTS maintenance;
COMMENT ON SCHEMA maintenance IS 'Mantenimiento preventivo y correctivo de flota';
-- Schema de carriers (terceros)
CREATE SCHEMA IF NOT EXISTS carriers;
COMMENT ON SCHEMA carriers IS 'Gestion de transportistas subcontratados';
-- Schema de facturacion transporte
CREATE SCHEMA IF NOT EXISTS billing;
COMMENT ON SCHEMA billing IS 'Tarifas, facturacion, recargos especificos transporte';
-- Schema de cumplimiento normativo
CREATE SCHEMA IF NOT EXISTS compliance;
COMMENT ON SCHEMA compliance IS 'Carta Porte, HOS, inspecciones, NOM-087/068';
-- =============================================================================
-- TIPOS ENUMERADOS COMUNES
-- =============================================================================
-- Estados del viaje
CREATE TYPE transport.estado_viaje AS ENUM (
'BORRADOR',
'PLANEADO',
'DESPACHADO',
'EN_TRANSITO',
'EN_DESTINO',
'ENTREGADO',
'CERRADO',
'FACTURADO',
'COBRADO',
'CANCELADO'
);
-- Tipos de unidad
CREATE TYPE fleet.tipo_unidad AS ENUM (
'TRACTORA',
'REMOLQUE',
'CAJA_SECA',
'CAJA_REFRIGERADA',
'PLATAFORMA',
'TANQUE',
'PORTACONTENEDOR',
'TORTON',
'RABON',
'CAMIONETA'
);
-- Estados de unidad
CREATE TYPE fleet.estado_unidad AS ENUM (
'DISPONIBLE',
'EN_VIAJE',
'EN_TALLER',
'BLOQUEADA',
'BAJA'
);
-- Tipos de evento tracking
CREATE TYPE tracking.tipo_evento AS ENUM (
'SALIDA',
'ARRIBO_ORIGEN',
'INICIO_CARGA',
'FIN_CARGA',
'ARRIBO_DESTINO',
'INICIO_DESCARGA',
'FIN_DESCARGA',
'ENTREGA_POD',
'DESVIO',
'PARADA',
'INCIDENTE',
'GPS_POSICION'
);
-- Fuente del evento
CREATE TYPE tracking.fuente_evento AS ENUM (
'GPS',
'APP_OPERADOR',
'SISTEMA',
'MANUAL',
'GEOCERCA'
);
-- Tipos de incidencia
CREATE TYPE transport.tipo_incidencia AS ENUM (
'RETRASO',
'RECHAZO',
'DANO',
'ROBO',
'FALTANTE',
'DEVOLUCION',
'ACCIDENTE',
'MULTA',
'OTRO'
);
-- Modalidad de servicio
CREATE TYPE transport.modalidad_servicio AS ENUM (
'FTL', -- Full Truck Load
'LTL', -- Less Than Truck Load
'DEDICADO',
'EXPRESS',
'CONSOLIDADO'
);
-- =============================================================================
-- FIN DE INICIALIZACION
-- =============================================================================