Retorno DAVOS¶
O que é¶
Etapa final do ciclo de cessao: depois que o cliente paga a parcela e o operador marca o
pagamento como repassado ao fundo, gera-se um arquivo CNAB de retorno informando à DAVOS
quais parcelas cedidas foram efetivamente pagas. Regra central do ciclo: só é possível
gerar retorno de uma parcela que tem cessão — ou seja, que já tem linha em
cnab_remessa_linhas.
Como funciona¶
Tela /carteira/cessao/retorno-davos
(apps/crm-menos-juros/client/src/pages/carteira/cessao/retorno-davos.tsx, hooks em
apps/crm-menos-juros/client/src/hooks/use-retorno-davos.ts; backend
retorno-davos.controller.ts, gerar-retorno-davos.use-case.ts,
retorno-davos.repository.ts).
Pré-requisito: repasse ao fundo¶
Antes do retorno existe uma etapa intermediária fora desta tela: na tela
/carteira/conciliacao, depois que a parcela é paga (fluxo_pagamentos.status_pagamento =
pago/baixa manual/baixa por quitação etc.), o operador marca a parcela como repassada ao
fundo (fluxo_pagamentos.repassado_fundo='SIM'), individualmente ou em lote. Ver
repasse-ao-fundo.
Parcelas Pendentes¶
São cnab_remessa_linhas com cessao='DAVOS' cujo fluxo_pagamentos.repassado_fundo='SIM',
operacoes.cedido=true, nome_arquivo_retorno IS NULL e cancelado_em IS NULL. Em outras
palavras: cedida + repassada + ainda não retornada.
Gerar Arquivo de Retorno¶
O botão "Gerar Arquivo de Retorno" (GerarRetornoDavosUseCase) toma as parcelas pendentes
(todas ou só as selecionadas), monta o CNAB 400 (buildCnab400), calcula nome e
sequência do arquivo, e carimba essas linhas de cnab_remessa_linhas com
nome_arquivo_retorno, data_retorno e sequencia_arquivo_retorno
(marcarComoRetornado), além de disparar o download do arquivo. Depois disso as linhas saem
de Pendentes e passam a aparecer no Histórico de Retornos.
Cancelar Selecionadas¶
Reverte o repasse: marca cnab_remessa_linhas.cancelado_em e zera
fluxo_pagamentos.repassado_fundo, fazendo a parcela voltar para a tela
/carteira/conciliacao para ser repassada de novo (ou não).
Parcelas "Não incluídas no retorno"¶
Seção colapsável nesta mesma tela. Endpoint GET /v2/cessao/retorno-davos/nao-incluidos
(BuscarNaoIncluidosRetornoQuery + buscarNaoIncluidos no repositório; hook
useRetornoDavosNaoIncluidos). Lista parcelas com repassado_fundo='SIM' em operações
cessao='DAVOS' que não têm linha ativa em cnab_remessa_linhas (anti-join por
fluxo_pagamento_id) — foram marcadas como repassadas, mas não existe cessão para elas
(não entraram em nenhum arquivo, nem por importação nem por "Gerar CNAB"). Como não têm
cessão, não é possível gerar retorno delas: é o alerta de quebra da invariante do ciclo
(repassado sem cessão). É agregada por cliente (CPF distinto) — a badge conta clientes e a
tabela lista nome, CPF, número de parcelas e valor. Em produção (2026-07-16): 10 parcelas /
10 clientes nessa condição.
Invariante do ciclo¶
/carteira/cessao (não cedidas)
→ [Gerar CNAB / Importar CNAB] → [cessao-davos](<./cessao-davos.md>)
→ Cedidos
→ [pagamento + repasse ao fundo] → [repasse-ao-fundo](<../conceitos/repasse-ao-fundo.md>) (tela /carteira/conciliacao)
→ Retorno DAVOS — Pendentes
→ [Gerar Arquivo de Retorno]
→ Histórico de Retornos
A tabela "Não incluídas no retorno" é o sinal de que a invariante foi quebrada em algum ponto: existe repasse sem cessão correspondente.
Onde vive no código¶
- CRM:
apps/crm-menos-juros/client/src/pages/carteira/cessao/retorno-davos.tsx,apps/crm-menos-juros/client/src/hooks/use-retorno-davos.ts - API:
retorno-davos.controller.ts,gerar-retorno-davos.use-case.ts,retorno-davos.repository.ts,BuscarNaoIncluidosRetornoQuery(dentro deapps/api-menos-juros/src/v2/carteira/cessao/) - DB:
cnab_remessa_linhas(nome_arquivo_retorno,data_retorno,sequencia_arquivo_retorno,cancelado_em),fluxo_pagamentos(repassado_fundo,status_pagamento)
Relacionado¶
carteira · cessao · cessao-davos · cnab · repasse-ao-fundo
Histórico¶
- 2026-07-16 — página criada: geração do CNAB 400 de retorno, parcelas pendentes, cancelamento, e a nova seção "Não incluídas no retorno" (alerta de repasse sem cessão).