-- =============================================================================
-- XPERT SAP B1 - Migracion 053
-- Liberacion de recall: RecallService::blockStock (agregada en el commit
-- anterior) bloquea automaticamente (stock_status=BLOCKED) toda posicion
-- de stock encontrada al abrir un recall. Cerrar el recall (status=
-- CLOSED) nunca desbloqueaba nada a proposito -- pero sin ninguna forma
-- de revertirlo, un recall abierto por error de lote/item, o uno donde
-- la investigacion confirma que no habia problema real (o era corregible,
-- ej. una etiqueta mal impresa), dejaba el stock bloqueado para siempre.
-- released_at/by/reason quedan separados de closed_at/status a proposito:
-- registran especificamente LA decision de liberar stock (quien, cuando,
-- por que), no solo que el recall se cerro -- mismo criterio que
-- initiated_at/by ya separa "quien abrio" de "que paso despues".
-- =============================================================================

ALTER TABLE `recalls`
    ADD COLUMN `released_at`     DATETIME NULL AFTER `closed_at`,
    ADD COLUMN `released_by`     INT UNSIGNED NULL AFTER `released_at`,
    ADD COLUMN `release_reason`  VARCHAR(255) NULL COMMENT 'Motivo de la liberacion: lote/item equivocado, problema descartado, corregido, etc.' AFTER `released_by`,
    ADD CONSTRAINT `fk_recalls_released_by` FOREIGN KEY (`released_by`) REFERENCES `users`(`id`);
