-- ═══════════════════════════════════════════════════════════════════════
-- 2026-10-27_01 · Supervisión → Bodega: solicitud de hoja de salida
-- ═══════════════════════════════════════════════════════════════════════
-- El supervisor no prepara la hoja de salida: la pide desde "Pasar a
-- ejecución". Quien tiene escritura en /inventario/salidas (bodega) la ve en
-- Hojas de salida y la prepara (queda atendida, enlazada a la hoja) o la
-- rechaza con motivo. Una solicitud pendiente por proyecto.
--
-- Respaldo: backups/tinsa_db_pre-solicitud-hoja-salida_2026-10-27.sql
-- Reversa:  database/rollback/2026-10-27_01_solicitud_hoja_salida.down.sql
-- ═══════════════════════════════════════════════════════════════════════

USE tinsa_db;

CREATE TABLE solicitud_hoja_salida (
  id                   INT UNSIGNED NOT NULL AUTO_INCREMENT,
  id_proyecto          INT UNSIGNED NOT NULL,
  estado               ENUM('pendiente','atendida','rechazada','cancelada') NOT NULL DEFAULT 'pendiente',
  fecha_necesaria      DATE NULL COMMENT 'para cuándo necesita el material la obra',
  nota                 VARCHAR(500) NULL,
  id_usuario_solicito  INT UNSIGNED NULL,
  fecha_solicitud      DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
  id_orden_salida      INT UNSIGNED NULL COMMENT 'hoja con la que bodega la atendió',
  id_usuario_resolvio  INT UNSIGNED NULL,
  fecha_resolucion     DATETIME NULL,
  motivo_rechazo       VARCHAR(500) NULL,
  PRIMARY KEY (id),
  KEY idx_shs_estado (estado),
  CONSTRAINT fk_shs_proyecto FOREIGN KEY (id_proyecto) REFERENCES proyecto_supervision (id) ON DELETE CASCADE ON UPDATE CASCADE,
  CONSTRAINT fk_shs_hoja FOREIGN KEY (id_orden_salida) REFERENCES orden_salida (id) ON DELETE SET NULL ON UPDATE CASCADE,
  CONSTRAINT fk_shs_solicito FOREIGN KEY (id_usuario_solicito) REFERENCES usuarios (id_usuario) ON DELETE SET NULL ON UPDATE CASCADE,
  CONSTRAINT fk_shs_resolvio FOREIGN KEY (id_usuario_resolvio) REFERENCES usuarios (id_usuario) ON DELETE SET NULL ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
