Marketplace móvil para negocios locales mexicanos. Estructura inicial: - apps/backend (NestJS API) - apps/frontend (React Web) - apps/mobile (Expo/React Native) - apps/mcp-server (Claude MCP Server) - apps/whatsapp-service (WhatsApp Business API) - database/ (PostgreSQL DDL) - docs/ (Documentación) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
73 lines
2.2 KiB
SQL
73 lines
2.2 KiB
SQL
-- =============================================================================
|
|
-- MICHANGARRITO - 09 ORDERS
|
|
-- =============================================================================
|
|
-- Pedidos y entregas
|
|
-- =============================================================================
|
|
|
|
-- Pedidos
|
|
CREATE TABLE IF NOT EXISTS orders.orders (
|
|
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
tenant_id UUID NOT NULL REFERENCES public.tenants(id) ON DELETE CASCADE,
|
|
customer_id UUID REFERENCES customers.customers(id),
|
|
|
|
order_number VARCHAR(20) NOT NULL,
|
|
channel VARCHAR(20) NOT NULL,
|
|
|
|
subtotal DECIMAL(10,2) NOT NULL,
|
|
delivery_fee DECIMAL(10,2) DEFAULT 0,
|
|
discount_amount DECIMAL(10,2) DEFAULT 0,
|
|
total DECIMAL(10,2) NOT NULL,
|
|
|
|
order_type VARCHAR(20) NOT NULL,
|
|
|
|
delivery_address TEXT,
|
|
delivery_notes TEXT,
|
|
estimated_delivery_at TIMESTAMPTZ,
|
|
|
|
status VARCHAR(20) DEFAULT 'pending',
|
|
|
|
payment_status VARCHAR(20) DEFAULT 'pending',
|
|
payment_method VARCHAR(20),
|
|
|
|
confirmed_at TIMESTAMPTZ,
|
|
preparing_at TIMESTAMPTZ,
|
|
ready_at TIMESTAMPTZ,
|
|
completed_at TIMESTAMPTZ,
|
|
cancelled_at TIMESTAMPTZ,
|
|
cancelled_reason TEXT,
|
|
|
|
customer_notes TEXT,
|
|
internal_notes TEXT,
|
|
|
|
created_at TIMESTAMPTZ DEFAULT NOW(),
|
|
updated_at TIMESTAMPTZ DEFAULT NOW()
|
|
);
|
|
|
|
CREATE INDEX idx_orders_tenant ON orders.orders(tenant_id);
|
|
CREATE INDEX idx_orders_customer ON orders.orders(customer_id);
|
|
CREATE INDEX idx_orders_status ON orders.orders(status);
|
|
CREATE INDEX idx_orders_date ON orders.orders(created_at);
|
|
|
|
CREATE TRIGGER update_orders_updated_at
|
|
BEFORE UPDATE ON orders.orders
|
|
FOR EACH ROW EXECUTE FUNCTION update_updated_at();
|
|
|
|
-- Items del pedido
|
|
CREATE TABLE IF NOT EXISTS orders.order_items (
|
|
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
order_id UUID NOT NULL REFERENCES orders.orders(id) ON DELETE CASCADE,
|
|
product_id UUID REFERENCES catalog.products(id),
|
|
|
|
product_name VARCHAR(100) NOT NULL,
|
|
|
|
quantity DECIMAL(10,3) NOT NULL,
|
|
unit_price DECIMAL(10,2) NOT NULL,
|
|
subtotal DECIMAL(10,2) NOT NULL,
|
|
|
|
notes TEXT,
|
|
|
|
created_at TIMESTAMPTZ DEFAULT NOW()
|
|
);
|
|
|
|
CREATE INDEX idx_order_items_order ON orders.order_items(order_id);
|