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