-- ---------------------------------------------------------------------------
-- Desde quando a saida de estoque grava o motivo: a linha `motivoDaRetirada` de `colunas_gravadas`
-- (03/11/2026, a fatia 73 da fila das telas que faltam, PDV-MOTIVO-DA-RETIRADA; a P4 da secao 4 de
-- `docs/f3-relatorios/spec-ordem.md`, a secao 3 do `spec-retirada.md`, a pergunta 9 (a) do dono e a
-- nota 4 da fatia 70).
--
--   docker compose exec -T mysql mysql -uroot -proot franquiabv_dev < scripts/colunas-gravadas-motivo-da-retirada.sql
--
-- O MOLDE E O DAS TRES DE ANTES (`scripts/colunas-gravadas-cancelamento.sql`, `-desconto-manual.sql`,
-- `-valor-contado.sql`), pelo mesmo porque: NAO E MIGRACAO DE ESQUEMA, E NAO VAI AO LACO DO PASSO 0. A
-- coluna (`produtos_estoque.motivo`) ja existe desde a P0 (a fatia 70); esta linha diz a Retirada de
-- Produtos "toda saida desde este instante tem o motivo": a tela de estoque (a antiga, a nova e a API)
-- pede perda, vencimento ou acerto de inventario, e a retirada de uso interno (o PDV antigo e a comanda
-- nova) grava `uso`. A partir do dia dela, a Retirada mostra as colunas Perda, Vencimento e Acerto (este
-- fora do total); antes, "sem registro". Escrita antes do codigo que grava, a saida sem motivo entre as
-- duas datas pareceria registro, e o acerto de inventario entraria calado no "saiu sem receita".
--
-- POR ISSO RODA DEPOIS DO CODIGO QUE GRAVA, sempre: na copia local, no dia da fatia 73 (o codigo que
-- grava ja esta nela); em producao, NA ETAPA 1, NO PASSO 7 DA JANELA, logo depois da linha do valor
-- contado, com a aplicacao em manutencao -- ninguem lanca saida de estoque entre o codigo e a linha
-- (`docs/procedimento-de-corte-etapa-1.md`). A carga da etapa 2 a leva ao PostgreSQL, e o "7d" de
-- `docs/procedimento-de-corte.md` (`postgres/colunas-gravadas-motivo-da-retirada.sql`, o irmao deste)
-- nao a muda. Nao depende das outras tres: a ordem e so a do passo.
--
-- So o `motivoDaRetirada`: o `cotaDoPacote` ganha a sua linha na fatia que liga o escritor dela (74),
-- por um arquivo como este.
--
-- IDEMPOTENTE: so escreve se nao houver a linha (a segunda vez nao muda o instante da primeira). Nao
-- apaga nada.
--
-- PARA DESFAZER: `DELETE FROM colunas_gravadas WHERE nome = 'motivoDaRetirada';` -- a Retirada volta a
-- dizer "ainda nao gravado", e a perda, o vencimento e o acerto voltam a ser nulos em toda parte.
-- ---------------------------------------------------------------------------

INSERT INTO colunas_gravadas (nome, desde)
SELECT 'motivoDaRetirada', NOW()
  FROM DUAL
 WHERE NOT EXISTS (SELECT 1 FROM colunas_gravadas WHERE nome = 'motivoDaRetirada');

-- Conferencia. O esperado: as linhas `cancelamento`, `descontoManual`, `motivoDaRetirada` e `valorContado`.
SELECT nome, desde FROM colunas_gravadas ORDER BY nome;
