-- Tabla de Categorías (Ej: Cafetería, Pastelería, Juegos de Mesa, Merchandising)
CREATE TABLE categorias (
    id INT AUTO_INCREMENT PRIMARY KEY,
    nombre VARCHAR(50) NOT NULL,
    orden INT DEFAULT 0 COMMENT 'Para ordenar cómo aparecen en el POS',
    estado BOOLEAN DEFAULT TRUE
);

-- Inserción de prueba
INSERT INTO categorias (nombre, orden) VALUES ('Cafetería', 1), ('Pastelería', 2), ('Juegos', 3);

-- Tabla de Productos
CREATE TABLE productos (
    id INT AUTO_INCREMENT PRIMARY KEY,
    categoria_id INT NOT NULL,
    nombre VARCHAR(100) NOT NULL,
    precio DECIMAL(10,2) NOT NULL COMMENT 'Decimal para soportar monedas exactas',
    
    -- Control de Inventario (Punto 13)
    maneja_inventario BOOLEAN DEFAULT TRUE COMMENT 'Falso para servicios o cosas intangibles',
    stock_actual INT DEFAULT 0,
    stock_minimo INT DEFAULT 5,
    stock_maximo INT DEFAULT 100,
    
    -- Reglas de Negocio del POS (Punto 1)
    requiere_leche BOOLEAN DEFAULT FALSE COMMENT 'Si es True, el POS abre modal de leches al presionar',
    permite_observaciones BOOLEAN DEFAULT FALSE COMMENT 'Si es True, permite escribir notas especiales',
    
    estado BOOLEAN DEFAULT TRUE,
    FOREIGN KEY (categoria_id) REFERENCES categorias(id)
);

-- Inserciones de prueba para probar la lógica
INSERT INTO productos (categoria_id, nombre, precio, requiere_leche, permite_observaciones) 
VALUES 
(1, 'Latte Macchiato', 3500, TRUE, TRUE),
(1, 'Espresso Doble', 2200, FALSE, TRUE),
(2, 'Galleta Robot de Chocolate', 1500, FALSE, FALSE);