-- 005_create_orders_table.sql
-- Pedidos del usuario, proyectados desde public.orders (WHERE user_id = <dueño>).
--
-- SOBRE status_norm: en produccion `orders.status` llega en mayusculas y
-- minusculas mezcladas (CANCELLED, COMPLETED, NO_SALE, pending, PENDING,
-- PROCESSING). Comparar con '=' contra un literal se deja fuera la mitad de las
-- filas -- de hecho el handler count_pending_orders del IntentRouter comparaba
-- === 'pending' y no veia los PENDING. Se conserva `status` tal cual llega para
-- no perder informacion, y se proyecta `status_norm` en minusculas, que es por
-- donde consultan los repositorios y el indice.

CREATE TABLE IF NOT EXISTS orders (
    order_id        INTEGER PRIMARY KEY,
    id_distributor  INTEGER NOT NULL,
    client_id       INTEGER,
    visit_id        INTEGER,

    status          TEXT NOT NULL,
    status_norm     TEXT NOT NULL DEFAULT '',
    total_amount    REAL NOT NULL DEFAULT 0,
    notes           TEXT,
    order_date      TEXT,

    version         INTEGER NOT NULL DEFAULT 0,
    created_at      TEXT,
    updated_at      TEXT,
    deleted_at      TEXT
);

CREATE INDEX IF NOT EXISTS idx_orders_client ON orders(id_distributor, client_id) WHERE deleted_at IS NULL;
CREATE INDEX IF NOT EXISTS idx_orders_status ON orders(status_norm, order_date)   WHERE deleted_at IS NULL;
CREATE INDEX IF NOT EXISTS idx_orders_visit  ON orders(visit_id)                  WHERE visit_id IS NOT NULL;
