-- ---------------------------------------------------------------------------
-- Desde quando o fechamento do caixa grava o dinheiro contado na gaveta: a linha `valorContado` de
-- `colunas_gravadas` (03/11/2026, a fatia 72 da fila das telas que faltam, PDV-GAVETA-CONTADA; a
-- P1/P2 da secao 4 de `docs/f3-relatorios/spec-ordem.md`, a pergunta 15 (c) do dono e a nota 4 da
-- fatia 70).
--
--   docker compose exec -T mysql mysql -uroot -proot franquiabv_dev < scripts/colunas-gravadas-valor-contado.sql
--
-- O MOLDE E O DO CANCELAMENTO E O DO DESCONTO MANUAL (`scripts/colunas-gravadas-cancelamento.sql`,
-- `-desconto-manual.sql`), pelo mesmo porque: NAO E MIGRACAO DE ESQUEMA, E NAO VAI AO LACO DO PASSO 0.
-- A coluna (`caixas.valor_contado`) ja existe desde a P0 (a fatia 70); esta linha diz ao Caixa "o
-- fechamento pede e grava o dinheiro contado desde este instante", e a quebra (contado - gaveta ao
-- fechar) so sai para o caixa fechado a partir do dia dela. Escrita antes do codigo que grava, o caixa
-- fechado entre as duas datas teria a quebra nula com cara de registro.
--
-- POR ISSO RODA DEPOIS DO CODIGO QUE GRAVA, sempre, e DEPOIS DA LINHA DO CANCELAMENTO: a quebra so sai
-- a partir das duas datas, e o invariante dela (toda cancelada depois do fechamento tem o instante) pede
-- o escritor do cancelamento no ar antes. Na copia local, no dia da fatia 72 (o codigo que grava ja esta
-- nela); em producao, NA ETAPA 1, NO PASSO 7 DA JANELA, logo depois da linha do desconto manual, com a
-- aplicacao em manutencao -- ninguem fecha caixa 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-valor-contado.sql`, o irmao deste) nao a
-- muda.
--
-- So o `valorContado`: o `motivoDaRetirada` e o `cotaDoPacote` ganham a sua linha na fatia que liga o
-- escritor de cada uma (73 e 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 = 'valorContado';` -- o Caixa volta a dizer
-- "ainda nao gravado", e a quebra volta a ser nula em toda parte.
-- ---------------------------------------------------------------------------

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

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