5.6 KiB
5.6 KiB
Database - ERP Generic
Version: 1.1.0 Database: PostgreSQL 15+ Schemas: 12 Tables: 118 Last Updated: 2025-12-06
Quick Start
Prerequisites
- Docker & Docker Compose
- PostgreSQL 15+ (or use Docker)
- psql CLI
Setup
# 1. Start PostgreSQL with Docker
docker-compose up -d
# 2. Create database and run migrations
./scripts/create-database.sh
# 3. Load seed data (development)
./scripts/load-seeds.sh dev
Directory Structure
database/
├── ddl/ # Data Definition Language (SQL schemas)
│ ├── 00-prerequisites.sql # Extensions, common functions
│ ├── 01-auth.sql # Authentication, users, roles
│ ├── 02-core.sql # Partners, catalogs, master data
│ ├── 03-analytics.sql # Analytic accounting
│ ├── 04-financial.sql # Accounts, journals, invoices
│ ├── 05-inventory.sql # Products, stock, warehouses
│ ├── 06-purchase.sql # Purchase orders, vendors
│ ├── 07-sales.sql # Sales orders, customers
│ ├── 08-projects.sql # Projects, tasks, timesheets
│ ├── 09-system.sql # Messages, notifications, logs
│ ├── 10-billing.sql # SaaS subscriptions, plans, payments
│ ├── 11-crm.sql # Leads, opportunities, pipeline
│ └── 12-hr.sql # Employees, contracts, leaves
├── scripts/ # Shell scripts
│ ├── create-database.sh # Master creation script
│ ├── drop-database.sh # Drop database
│ ├── load-seeds.sh # Load seed data
│ └── reset-database.sh # Drop and recreate
├── seeds/ # Initial data
│ ├── dev/ # Development seeds
│ └── prod/ # Production seeds
├── migrations/ # Incremental changes (empty by design)
├── docker-compose.yml # PostgreSQL container
└── .env.example # Environment variables template
Schemas
| Schema | Module | Tables | Description |
|---|---|---|---|
auth |
MGN-001 | 10 | Authentication, users, roles, permissions, multi-tenancy |
core |
MGN-002, MGN-003 | 12 | Partners, addresses, currencies, countries, UoM, categories |
analytics |
MGN-008 | 7 | Analytic plans, accounts, distributions, cost centers |
financial |
MGN-004 | 15 | Chart of accounts, journals, entries, invoices, payments |
inventory |
MGN-005 | 10 | Products, warehouses, locations, stock moves, pickings |
purchase |
MGN-006 | 8 | RFQs, purchase orders, vendor pricelists, agreements |
sales |
MGN-007 | 10 | Quotations, sales orders, pricelists, teams |
projects |
MGN-011 | 10 | Projects, tasks, milestones, timesheets |
system |
MGN-012, MGN-014 | 13 | Messages, notifications, activities, logs, reports |
billing |
MGN-015 | 11 | SaaS subscriptions, plans, payments, coupons |
crm |
MGN-009 | 6 | Leads, opportunities, pipeline, activities |
hr |
MGN-010 | 6 | Employees, departments, contracts, leaves |
Execution Order
The DDL files must be executed in order due to dependencies:
00-prerequisites.sql- Extensions, base functions01-auth.sql- Base schema (no dependencies)02-core.sql- Depends on auth03-analytics.sql- Depends on auth, core04-financial.sql- Depends on auth, core, analytics05-inventory.sql- Depends on auth, core, analytics06-purchase.sql- Depends on auth, core, inventory, analytics07-sales.sql- Depends on auth, core, inventory, analytics08-projects.sql- Depends on auth, core, analytics09-system.sql- Depends on auth, core10-billing.sql- Depends on auth, core11-crm.sql- Depends on auth, core, sales12-hr.sql- Depends on auth, core
Features
Multi-Tenancy (RLS)
All transactional tables have:
tenant_idcolumn- Row Level Security (RLS) policies
- Context functions:
get_current_tenant_id(),get_current_user_id()
Audit Trail
All tables include:
created_at,created_byupdated_at,updated_bydeleted_at,deleted_by(soft delete)
Automatic Triggers
updated_atauto-update on all tables- Balance validation for journal entries
- Invoice totals calculation
- Stock quantity updates
Environment Variables
# Database connection
POSTGRES_HOST=localhost
POSTGRES_PORT=5432
POSTGRES_DB=erp_generic
POSTGRES_USER=erp_admin
POSTGRES_PASSWORD=your_secure_password
# Optional
POSTGRES_SCHEMA=public
Commands
# Create database from scratch (DDL only)
./scripts/create-database.sh
# Drop database
./scripts/drop-database.sh
# Reset (drop + create DDL + seeds dev) - RECOMENDADO
./scripts/reset-database.sh # Pide confirmación
./scripts/reset-database.sh --force # Sin confirmación (CI/CD)
./scripts/reset-database.sh --no-seeds # Solo DDL, sin seeds
./scripts/reset-database.sh --env prod # Seeds de producción
# Load seeds manualmente
./scripts/load-seeds.sh dev # Development
./scripts/load-seeds.sh prod # Production
NOTA: No se usan migrations. Ver
DIRECTIVA-POLITICA-CARGA-LIMPIA.mdpara detalles.
Statistics
- Schemas: 12
- Tables: 144 (118 base + 26 extensiones)
- DDL Files: 15
- Functions: 63
- Triggers: 92
- Indexes: 450+
- RLS Policies: 85+
- ENUMs: 64
- Lines of SQL: ~10,000