-- =============================================================================
-- XPERT SAP B1 - Migracion 050
-- Excepcion de vida util remanente por cliente, autorizada en Empaque.
--
-- Algunos clientes exigen por contrato un minimo de dias de vida util
-- remanente al recibir un pedido (ej. no aceptan lotes con menos de 365
-- dias de vencimiento). El Picking no cambia -- sigue FEFO/FIFO + pallet
-- tal cual, sin filtrar por esto, para no generar SHORT por este motivo.
-- El control es en Empaque (packing_lines.batch_id ya sabe con certeza
-- que lote se va a despachar): si no cumple el minimo del cliente, la
-- linea queda marcada y bloquea completar el empaque hasta que alguien
-- con el permiso correspondiente la autorice con un motivo.
-- =============================================================================

ALTER TABLE `customers`
    ADD COLUMN `min_remaining_shelf_life_days` INT UNSIGNED NULL
    COMMENT 'Minimo de dias de vida util remanente que este cliente exige por contrato -- opt-in, NULL = sin exigencia. Se verifica en Empaque, nunca bloquea el Picking.';

ALTER TABLE `packing_lines`
    ADD COLUMN `requires_shelf_life_authorization` TINYINT(1) NOT NULL DEFAULT 0
    COMMENT 'El lote de esta linea no alcanza el minimo del cliente -- bloquea completar el empaque hasta autorizarse',
    ADD COLUMN `shelf_life_authorized_by` INT UNSIGNED NULL,
    ADD COLUMN `shelf_life_authorized_at` DATETIME NULL,
    ADD COLUMN `shelf_life_authorization_reason` VARCHAR(255) NULL,
    ADD CONSTRAINT `fk_packingline_authorized_by` FOREIGN KEY (`shelf_life_authorized_by`) REFERENCES `users`(`id`);
