-- Sucursales
CREATE TABLE IF NOT EXISTS sucursales (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    nombre TEXT NOT NULL,
    direccion TEXT,
    activa INTEGER DEFAULT 1
);
CREATE INDEX IF NOT EXISTS idx_sucursales_nombre ON sucursales(nombre);

-- Cajeros
CREATE TABLE IF NOT EXISTS cajeros (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    username TEXT NOT NULL UNIQUE,
    nombre TEXT NOT NULL,
    pin TEXT NOT NULL,
    sucursal_id INTEGER,
    rol TEXT DEFAULT 'cajero',
    activo INTEGER DEFAULT 1
);
CREATE INDEX IF NOT EXISTS idx_cajeros_username ON cajeros(username);
CREATE INDEX IF NOT EXISTS idx_cajeros_sucursal_id ON cajeros(sucursal_id);

-- Productos
CREATE TABLE IF NOT EXISTS productos (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    codigo TEXT NOT NULL UNIQUE,
    nombre TEXT NOT NULL,
    categoria TEXT,
    precio REAL NOT NULL,
    stock INTEGER DEFAULT 0,
    imagen TEXT
);
CREATE INDEX IF NOT EXISTS idx_productos_codigo ON productos(codigo);
CREATE INDEX IF NOT EXISTS idx_productos_categoria ON productos(categoria);
CREATE INDEX IF NOT EXISTS idx_productos_nombre ON productos(nombre);

-- Categorias
CREATE TABLE IF NOT EXISTS categorias (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    nombre TEXT NOT NULL,
    color TEXT
);

-- Ventas
CREATE TABLE IF NOT EXISTS ventas (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    ticket TEXT NOT NULL UNIQUE,
    sucursal_id INTEGER,
    cajero_id INTEGER,
    cajero_nombre TEXT,
    fecha TEXT,
    subtotal REAL,
    impuestos REAL,
    total REAL,
    metodo_pago TEXT,
    pagos TEXT,
    estado TEXT DEFAULT 'completada',
    mesa_id INTEGER,
    mesa_numero INTEGER,
    salon_nombre TEXT,
    tipo TEXT DEFAULT 'mesa',
    sincronizado INTEGER DEFAULT 0
);
CREATE INDEX IF NOT EXISTS idx_ventas_ticket ON ventas(ticket);
CREATE INDEX IF NOT EXISTS idx_ventas_sucursal_id ON ventas(sucursal_id);
CREATE INDEX IF NOT EXISTS idx_ventas_cajero_id ON ventas(cajero_id);
CREATE INDEX IF NOT EXISTS idx_ventas_fecha ON ventas(fecha);
CREATE INDEX IF NOT EXISTS idx_ventas_sincronizado ON ventas(sincronizado);

-- Venta Items
CREATE TABLE IF NOT EXISTS venta_items (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    venta_id INTEGER NOT NULL,
    producto_id INTEGER,
    codigo TEXT,
    nombre TEXT,
    precio REAL,
    cantidad INTEGER,
    subtotal REAL
);
CREATE INDEX IF NOT EXISTS idx_venta_items_venta_id ON venta_items(venta_id);

-- Salones
CREATE TABLE IF NOT EXISTS salones (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    nombre TEXT NOT NULL,
    sucursal_id INTEGER,
    activo INTEGER DEFAULT 1
);
CREATE INDEX IF NOT EXISTS idx_salones_sucursal_id ON salones(sucursal_id);
CREATE INDEX IF NOT EXISTS idx_salones_nombre ON salones(nombre);

-- Mesas
CREATE TABLE IF NOT EXISTS mesas (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    numero INTEGER NOT NULL,
    salon_id INTEGER,
    capacidad INTEGER DEFAULT 4,
    activa INTEGER DEFAULT 1
);
CREATE INDEX IF NOT EXISTS idx_mesas_salon_id ON mesas(salon_id);
CREATE INDEX IF NOT EXISTS idx_mesas_numero ON mesas(numero);

-- Ventas Pausa (comandas abiertas)
CREATE TABLE IF NOT EXISTS ventas_pausa (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    mesa_id INTEGER,
    sucursal_id INTEGER,
    cajero_id INTEGER,
    cajero_nombre TEXT,
    mesa_numero INTEGER,
    salon_nombre TEXT,
    items TEXT,
    subtotal REAL,
    impuestos REAL,
    total REAL,
    estado TEXT DEFAULT 'activa',
    fecha_creacion TEXT,
    fecha_actualizacion TEXT
);
CREATE INDEX IF NOT EXISTS idx_ventas_pausa_mesa_id ON ventas_pausa(mesa_id);
CREATE INDEX IF NOT EXISTS idx_ventas_pausa_sucursal_id ON ventas_pausa(sucursal_id);
CREATE INDEX IF NOT EXISTS idx_ventas_pausa_cajero_id ON ventas_pausa(cajero_id);
CREATE INDEX IF NOT EXISTS idx_ventas_pausa_estado ON ventas_pausa(estado);

-- Pedidos Vitrina
CREATE TABLE IF NOT EXISTS pedidos_vitrina (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    numero TEXT NOT NULL UNIQUE,
    vendedor_id INTEGER,
    vendedor_nombre TEXT,
    sucursal_id INTEGER,
    items TEXT,
    total REAL,
    estado TEXT DEFAULT 'pendiente',
    fecha_creacion TEXT
);
CREATE INDEX IF NOT EXISTS idx_pedidos_vitrina_numero ON pedidos_vitrina(numero);
CREATE INDEX IF NOT EXISTS idx_pedidos_vitrina_vendedor_id ON pedidos_vitrina(vendedor_id);
CREATE INDEX IF NOT EXISTS idx_pedidos_vitrina_sucursal_id ON pedidos_vitrina(sucursal_id);
CREATE INDEX IF NOT EXISTS idx_pedidos_vitrina_estado ON pedidos_vitrina(estado);

-- Config (localStorage replacement)
CREATE TABLE IF NOT EXISTS config (
    key TEXT PRIMARY KEY,
    value TEXT
);
