-- ---------------------------------------------------------------------------
-- Desde quando o PDV grava o custo do produto em cada item vendido: a linha `custoDoItem` de `colunas_gravadas`
-- (03/11/2026, a fatia 74b da fila das telas que faltam, PDV-CUSTO-DO-ITEM; a resposta 224 (b) do dono, de
-- 15/10/2026, a secao 3 de `docs/f3-relatorios/spec-produtos.md` e a nota 4 da fatia 70). A SEXTA linha.
--
--   docker compose exec -T mysql mysql -uroot -proot franquiabv_dev < scripts/colunas-gravadas-custo-do-item.sql
--
-- O MOLDE E O DAS CINCO DE ANTES (`scripts/colunas-gravadas-cancelamento.sql`, `-desconto-manual.sql`,
-- `-valor-contado.sql`, `-motivo-da-retirada.sql`, `-cota-do-pacote.sql`), pelo mesmo porque: NAO E MIGRACAO DE
-- ESQUEMA, E NAO VAI AO LACO DO PASSO 0. A coluna (`vendas_produtos.custo_unitario`) entra pela
-- `scripts/migracao-custo-do-item.sql`, no passo 0; esta linha diz ao Produtos / Servicos e a Retirada "todo item de
-- produto vendido desde este instante tem o custo da epoca": o lancamento (`VendaProdutoService::insert`, o PDV antigo
-- e a comanda nova) e a agenda gravam o custo do cadastro no item. A partir do dia dela, o Produtos / Servicos mostra o
-- custo e a margem dos produtos, e a Retirada conta as cortesias pelo custo gravado; antes, "sem registro". Escrita
-- antes do codigo que grava, o item sem custo entre as duas datas pareceria registro, e a margem dele sumiria calada.
--
-- POR ISSO RODA DEPOIS DO CODIGO QUE GRAVA, sempre: na copia local, no dia da fatia 74b (o codigo que grava ja esta
-- nela); em producao, NA ETAPA 1, NO PASSO 7 DA JANELA, logo depois da linha da cota do pacote, com a aplicacao em
-- manutencao -- ninguem vende 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-custo-do-item.sql`, o
-- irmao deste) nao a muda. Nao depende das outras cinco: a ordem e so a do passo.
--
-- So o `custoDoItem`: as outras cinco tem os seus arquivos, e o `indicacaoDoFormulario` e da I3.
--
-- 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 = 'custoDoItem';` -- o Produtos / Servicos volta a dizer
-- "ainda nao gravado", sem custo nem margem, e a Retirada volta a contar toda cortesia pelo custo de hoje (o custo
-- gravado fica nos itens, e volta a contar quando a linha voltar).
-- ---------------------------------------------------------------------------

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

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