-- ============================================================
--  Migración 2026-09-07_02 · Registro de garantías
-- ------------------------------------------------------------
--  Al recibir mercadería específica (una laptop, un equipo) se puede
--  registrar su garantía: serie, plazo, quién la da, qué cubre, nº de
--  documento. NO es inventario serializado — el stock sigue por
--  cantidad; esto es un registro aparte, buscable, ligado a la
--  recepción de la orden de compra que trajo el artículo.
-- ============================================================
USE tinsa_db;

CREATE TABLE garantia_item (
  id                INT UNSIGNED NOT NULL AUTO_INCREMENT,
  id_recepcion_item INT UNSIGNED NOT NULL,
  id_orden          INT UNSIGNED NOT NULL,
  id_producto       INT UNSIGNED NULL,
  descripcion       VARCHAR(200) NULL,
  numero_serie      VARCHAR(120) NULL,
  meses_garantia    INT UNSIGNED NULL,
  fecha_inicio      DATE NOT NULL,
  fecha_fin         DATE NULL,
  garante           ENUM('proveedor','fabricante','otro') NOT NULL DEFAULT 'proveedor',
  garante_nombre    VARCHAR(150) NULL,
  cobertura         TEXT NULL,
  numero_documento  VARCHAR(120) NULL,
  observaciones     TEXT NULL,
  estado            ENUM('activa','reclamada','anulada') NOT NULL DEFAULT 'activa',
  id_usuario        INT UNSIGNED NULL,
  created_at        TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  updated_at        TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (id),
  KEY fk_gi_recepcion_item (id_recepcion_item),
  KEY fk_gi_orden (id_orden),
  KEY fk_gi_producto (id_producto),
  KEY fk_gi_usuario (id_usuario),
  KEY idx_gi_serie (numero_serie),
  KEY idx_gi_vencimiento (estado, fecha_fin),
  CONSTRAINT fk_gi_recepcion_item
    FOREIGN KEY (id_recepcion_item) REFERENCES orden_compra_recepcion_item (id) ON DELETE CASCADE ON UPDATE CASCADE,
  CONSTRAINT fk_gi_orden
    FOREIGN KEY (id_orden) REFERENCES orden_compra (id) ON DELETE CASCADE ON UPDATE CASCADE,
  CONSTRAINT fk_gi_producto
    FOREIGN KEY (id_producto) REFERENCES producto (id) ON DELETE SET NULL ON UPDATE CASCADE,
  CONSTRAINT fk_gi_usuario
    FOREIGN KEY (id_usuario) REFERENCES usuarios (id_usuario) ON DELETE SET NULL ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- Pestaña + permisos del rol Administrador
INSERT INTO pestanas (id_modulo, nombre, ruta, icono, orden, estado)
VALUES (1, 'Garantías', '/inventario/garantias', 'fa-shield-halved', 7, 1);

INSERT INTO permisos_roles (id_rol, id_pestana, puede_leer, puede_escribir, puede_eliminar)
SELECT 1, p.id, 1, 1, 1 FROM pestanas p WHERE p.ruta = '/inventario/garantias';
