-- Modulo de Productos
USE pos_torti;

-- Tabla de categorias de productos
CREATE TABLE IF NOT EXISTS categorias_productos (
    id INT AUTO_INCREMENT PRIMARY KEY,
    nombre VARCHAR(100) NOT NULL,
    descripcion TEXT,
    orden INT DEFAULT 0,
    activo TINYINT(1) DEFAULT 1,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- Tabla principal de productos
CREATE TABLE IF NOT EXISTS productos (
    id INT AUTO_INCREMENT PRIMARY KEY,
    nombre VARCHAR(150) NOT NULL,
    descripcion TEXT,
    precio DECIMAL(10,2) NOT NULL DEFAULT 0,
    categoria_id INT,
    unidad VARCHAR(20) DEFAULT 'pza',
    stock DECIMAL(10,2) DEFAULT 0,
    stock_minimo DECIMAL(10,2) DEFAULT 0,
    codigo VARCHAR(50),
    imagen VARCHAR(255),
    activo TINYINT(1) DEFAULT 1,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    FOREIGN KEY (categoria_id) REFERENCES categorias_productos(id) ON DELETE SET NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- Tabla de relacion producto-ingredientes (para saber que ingredientes usa cada producto)
CREATE TABLE IF NOT EXISTS producto_ingredientes (
    id INT AUTO_INCREMENT PRIMARY KEY,
    producto_id INT NOT NULL,
    ingrediente_id INT NOT NULL,
    cantidad DECIMAL(10,4) NOT NULL DEFAULT 0,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (producto_id) REFERENCES productos(id) ON DELETE CASCADE,
    FOREIGN KEY (ingrediente_id) REFERENCES ingredientes(id) ON DELETE CASCADE,
    UNIQUE KEY unique_producto_ingrediente (producto_id, ingrediente_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- Insertar categorias por defecto
INSERT INTO categorias_productos (nombre, descripcion, orden) VALUES
('Tortillas', 'Tortillas de maiz y harina', 1),
('Tostadas', 'Tostadas y totopos', 2),
('Antojitos', 'Gorditas, sopes, tlacoyos', 3),
('Masa', 'Masa para tortillas y tamales', 4),
('Otros', 'Otros productos', 5)
ON DUPLICATE KEY UPDATE nombre = VALUES(nombre);

-- Insertar productos de ejemplo
INSERT INTO productos (nombre, descripcion, precio, categoria_id, unidad, stock, stock_minimo) VALUES
('Tortilla de Maiz', 'Tortilla tradicional de maiz', 22.00, 1, 'kg', 50, 10),
('Tortilla de Harina', 'Tortilla de harina de trigo', 35.00, 1, 'kg', 30, 5),
('Tostada Natural', 'Tostada de maiz natural', 25.00, 2, 'pza', 100, 20),
('Totopos', 'Totopos de maiz', 30.00, 2, 'kg', 20, 5),
('Gordita', 'Gordita de maiz', 8.00, 3, 'pza', 0, 0),
('Sope', 'Sope de maiz', 10.00, 3, 'pza', 0, 0),
('Masa de Maiz', 'Masa fresca para tortillas', 18.00, 4, 'kg', 100, 20)
ON DUPLICATE KEY UPDATE nombre = VALUES(nombre);
