-- Opcional v4: tablas/campos de cierre y auditoría si tu usuario MySQL no puede migrar automáticamente.
ALTER TABLE nomina_corridas
  MODIFY estado ENUM('BORRADOR','CALCULADA','REVISADA','APROBADA','PAGADA','CERRADA','ANULADA') NOT NULL DEFAULT 'BORRADOR';

ALTER TABLE nomina_corridas
  ADD COLUMN revisada_at DATETIME NULL AFTER legal_snapshot,
  ADD COLUMN revisada_por VARCHAR(120) NULL AFTER revisada_at,
  ADD COLUMN aprobada_por VARCHAR(120) NULL AFTER aprobada_at,
  ADD COLUMN pagada_por VARCHAR(120) NULL AFTER pagada_at,
  ADD COLUMN estado_motivo VARCHAR(255) NULL AFTER cerrada_por;

CREATE TABLE IF NOT EXISTS nomina_corrida_estado_historial (
  id INT AUTO_INCREMENT PRIMARY KEY,
  corrida_id INT NOT NULL,
  estado_anterior VARCHAR(30) NULL,
  estado_nuevo VARCHAR(30) NOT NULL,
  usuario VARCHAR(120) NULL,
  motivo VARCHAR(255) NULL,
  ip VARCHAR(64) NULL,
  created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
  KEY idx_corrida (corrida_id),
  KEY idx_estado_fecha (estado_nuevo, created_at)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- Opcional: sacar demos de la nómina real sin borrar histórico.
-- Revisa primero con SELECT. Ejecuta el UPDATE solo si esos registros son pruebas.
SELECT id, cedula, nombre, apellido, estatus_laboral
FROM personas
WHERE cedula LIKE 'DEMO-%' OR nombre LIKE '%DEMO%' OR apellido LIKE '%DEMO%';

-- UPDATE personas SET estatus_laboral = 'INACTIVO'
-- WHERE cedula LIKE 'DEMO-%' OR nombre LIKE '%DEMO%' OR apellido LIKE '%DEMO%';
