--- name: nfse-ordem-pagamento-2026-05-12 description: Ordem obrigatoria pagamento confirmado WhatsApp PRIMEIRO depois emite NFSe metadata: node_type: memory type: project originSessionId: 3cc4e2da-474d-47ee-96aa-7e15c6fdf186 --- # Ordem do envio: WhatsApp de confirmacao ANTES da NFSe (2026-05-12) **Regra de negocio (pedido explicito do usuario)**: ao detectar pagamento confirmado: 1. PRIMEIRO: enviar WhatsApp de agradecimento/confirmacao 2. DEPOIS: emitir NFSe **Antes**: os 2 crons rodavam independentes (`CronBoletos::sincronizar` e `CronNfseAutomatica::processar`). Qualquer um podia pegar o boleto primeiro. Ordem nao garantida — comum NFSe sair antes do WhatsApp. **Fix aplicado** em `app/Controllers/CronNfseAutomatica.php`: ```sql SELECT ... FROM boletos b WHERE b.status = 'pago' AND ... -- ORDEM OBRIGATORIA: WhatsApp primeiro, NFSe depois AND ( b.agradecimento_enviado = 1 OR b.data_pagamento <= DATE_SUB(NOW(), INTERVAL 24 HOUR) ) ... ``` A coluna `boletos.agradecimento_enviado` ja existia (setada por `CronBoletos.enviarAgradecimentoWhatsApp`). Agora o cron de NFSe so emite quando essa flag esta 1 OU quando o pagamento e antigo (>24h sem WhatsApp por falha ou cliente sem telefone — fallback pra nao travar). **Why**: usuario quer que o cliente receba "Pagamento Confirmado!" antes da nota fiscal. Garantia: NFSe nunca sai sem antes a confirmacao (exceto fallback 24h). **How to apply**: nao quebrou nada — a coluna ja era setada normalmente pelo CronBoletos. So adicionou condicao na query. Apenas mudou a ORDEM. Outros fluxos (boleto manual via Nfse controller, retry de erro etc) continuam intactos. Backup do arquivo anterior: `CronNfseAutomatica.php.bak_ordem` no servidor. Ver tambem: [[nfse_emissao_sefin]], [[auditoria_cobranca_2026_04_17]].