--- name: Bugs CronCobranca corrigidos em 2026-04-17 description: Fix do aditivo vigente + limpeza de ligacoes nao atendidas + classificacao de bloqueio legitimo como pulado em vez de erro type: project originSessionId: ff25db81-a051-4175-8cdc-bc6303f57bf0 --- # Bugs CronCobranca corrigidos — 2026-04-17 ## Bug 1 — Aditivos futuros ignorados (`buscarAditivoAtivo`) Funcao verificava so vigencia HOJE. **Caso real MISLENE (cliente 25, contrato 19)**: contrato termina 30/04/2026, aditivo id=4 vai de 30/04 a 30/09 com valor R$ 321. Em 17/04, cron tentou gerar boleto pra 04/05. Query buscava aditivo vigente HOJE (17/04), mas o aditivo so comeca em 30/04 — entao retornava NULL, e o cron bloqueava com "contrato termina em 2026-04-30 e nao ha aditivo vigente". **Why:** Aditivo que cobre periodo futuro (encaixa apos o fim do contrato) precisa ser encontrado ao planejar boletos futuros, nao so para HOJE. ### Fix ```php private function buscarAditivoAtivo($contratoId, ?string $dataCobertura = null) { $dataCobertura = $dataCobertura ?: date('Y-m-d'); return $this->aditivoModel ->where('contrato_id', $contratoId) ->where('data_inicio <=', $dataCobertura) ->where('data_fim >=', $dataCobertura) ->orderBy('id', 'DESC') ->first(); } ``` Caller agora passa a DATA DO VENCIMENTO pretendido (nao hoje): ```php $aditivoVigente = $this->buscarAditivoAtivo($contratoAtual['id'], $dataVencimento); ``` ## Bug 2 — Bloqueio legitimo contado como erro Antes: `gerarBoleto` retornava `false` tanto pra erro real quanto pra bloqueio legitimo (contrato sem aditivo). Caller logava `[ERROR] Falha ao gerar boleto` e contava como erro, poluindo log e estatisticas. **Fix:** retorna a string `'contrato_vencido'` para bloqueio legitimo. Caller distingue: - `'contrato_vencido'` → pulado (log notice). - `false` → erro real (log error). ## Bug 3 — Log de ligacoes cheio de nao_atendidas Nao e bug de codigo — usuario queria saber so das atendidas. Limpeza via SQL: ```sql DELETE FROM cobranca_ligacao_log WHERE status != 'atendida'; ``` ## Como testar ```bash curl 'https://sistema.gotechbr.com.br/cron/cobranca/processar?token=SECRET&cliente_id=25' ``` Deve retornar `boletos_gerados: 1, erros: 0` (antes era `boletos_gerados: 0, erros: 1`). ## Relacionados - [[auditoria_cobranca_2026_04_17]] — auditoria pente-fino completa - [[relatorio_sindicancia_2026_04_17]] — relatorio consolidado