Pular para conteúdo

Cessão DAVOS

O que é

Passo em que uma operação de crédito é cedida ao fundo DAVOS: a partir daí a operação passa a ter as parcelas rastreadas para efeito de repasse e retorno ao fundo. É a primeira etapa do ciclo de cessao/retorno-davos — sem cessão registrada não é possível gerar retorno de uma parcela.

Como funciona

Tela /carteira/cessao (apps/crm-menos-juros/client/src/pages/carteira/cessao/index.tsx) lista as operações ainda não cedidas: operacoes.cedido=false, cessao='DAVOS', codigo_operacao_fiducia preenchido, excluindo aceite do próprio dia (hook useOperacoesCessao({cedido:false})). O que aparece aqui é operação para a qual não foi gerada cessão nem importado arquivo correspondente do cliente.

Duas formas de gerar a cessão, ambas terminam no mesmo estado final (cria linha em cnab_remessa_linhas + operacoes.cedido=true + operacoes.data_cessao):

  • Gerar CNAB (interno)handleGerarCNAB chama gerarCNAB444(), que monta o arquivo CNAB 444 (.REM) e dispara o download; em seguida marcarCedidasESalvarLinhas faz upsert das linhas em cnab_remessa_linhas (chave de conflito nome_arquivo, codigo_operacao_ fiducia, numero_parcela) e marca operacoes.cedido=true. Serviço: apps/crm-menos-juros/client/src/services/cnab-cessao-service.ts.
  • Importar CNAB (arquivo enviado pela FIDEM) — faz parse do CNAB 444/400 e concilia por CPF + número da parcela + valor contra as parcelas internas (fluxo_pagamentos). O resultado é dividido em três baldes principais (mais atualizadas/protegidas, ver abaixo), e cada um tem um comportamento de gravação diferente:

  • Casada — a parcela do arquivo casa com exatamente 1 parcela interna (CPF + parcela + valor). Ação: grava linha em cnab_remessa_linhas e marca operacoes.cedido=true com data_cessao = data do header do arquivo.

  • Órfã — a parcela do arquivo não existe no sistema (nenhuma parcela interna com aquele CPF+parcela+valor). Ação: apenas registra no log de importação (log_importacao_cessao, payload orfas) — não cria linha em cnab_remessa_linhas nem toca em nenhuma operação. Resumindo: "importou e não achou no sistema → só loga, não faz nada".
  • Empate — a parcela do arquivo casa com mais de uma parcela interna (ambíguo, não dá pra decidir sozinho qual ceder). Ação: apenas registra no log (log_importacao_cessao, payload empates), sem gravar nada — precisa de resolução manual.
  • Atualizadas/protegidas — casos de reimportação de um arquivo já processado antes.

A confirmação é atômica (RPC transacional): só as casadas geram efeito em cnab_remessa_linhas/operacoes; órfãs e empates nunca gravam nada, só aparecem no log. Backend: apps/api-menos-juros/src/v2/carteira/cessao/ (importar-remessa.use-case.ts, conciliacao-remessa.service.ts, cnab-444.parser.ts).

Em ambos os casos, a operação sai da lista de não-cedidas e passa a aparecer em Cedidos (/carteira/cessao/cedidos, filtrado por data_cessao). Verificado em produção: as 1012 operações importadas via arquivo da FIDEM estão com cedido=true.

cnab_remessa_linhas é a fonte de verdade da cessão: 1 linha por parcela cedida (identificador, CPF, nome do sacado, vencimento, valor da parcela, nome do arquivo, tipo de cessão, fluxo_pagamento_id, operacao_id, e os campos de retorno usados na etapa seguinte: nome_arquivo_retorno, data_retorno, sequencia_arquivo_retorno, cancelado_em).

Arquivos de cessão gerados pelo caminho "Gerar CNAB" também ficam registrados em cnab_cessao_arquivos + cnab_cessao_arquivo_operacoes. Importações (caminho "Importar CNAB") logam o resultado em log_importacao_cessao, com o payload dos baldes casadas/órfãs/empates/atualizadas/protegidas.

Três estados que se confundem (e não são o mesmo)

Três situações parecidas, mas com origem e efeito diferentes:

  1. Órfã — parcela que veio no arquivo importado mas não está no sistema (sem parcela interna com aquele CPF+parcela+valor). Só gera log; não existe como operação nem como linha de cessão.
  2. Não cedida (esta tela, /carteira/cessao) — parcela que está no sistema (fluxo_pagamentos de uma operação real), mas nenhum arquivo casou com ela e não houve "Gerar CNAB" para ela: operacoes.cedido=false. É a lista mostrada nesta tela.
  3. Não incluída no retorno (tela retorno-davos) — parcela que está no sistema, foi repassada ao fundo (fluxo_pagamentos.repassado_fundo='SIM'), mas sem cessão (nenhuma linha ativa em cnab_remessa_linhas) — logo não dá pra gerar retorno dela. É o sinal de que a invariante do ciclo foi quebrada em algum ponto anterior.

Onde vive no código

  • CRM: apps/crm-menos-juros/client/src/pages/carteira/cessao/index.tsx, apps/crm-menos-juros/client/src/pages/carteira/cessao/cedidos.tsx, apps/crm-menos-juros/client/src/pages/carteira/cessao/importar-remessa-dialog.tsx, apps/crm-menos-juros/client/src/services/cnab-cessao-service.ts
  • API: apps/api-menos-juros/src/v2/carteira/cessao/ (importar-remessa.use-case.ts, conciliacao-remessa.service.ts, cnab-444.parser.ts)
  • DB: operacoes (cedido, cessao, data_cessao), cnab_remessa_linhas, cnab_cessao_arquivos, cnab_cessao_arquivo_operacoes, log_importacao_cessao

Relacionado

carteira · cessao · cnab · repasse-ao-fundo · retorno-davos

Histórico

  • 2026-07-16 — página criada: fluxo de geração/importação de cessão DAVOS (tela /carteira/cessao), fonte de verdade cnab_remessa_linhas, verificação em prod (1012/1012 cedidas via FIDEM).
  • 2026-07-16 — detalhamento do comportamento exato de cada balde da conciliação na importação (casada grava, órfã e empate só logam) e distinção explícita entre órfã / não cedida / não incluída no retorno.