Pragiva — Tecnologia na prática

Retorno CNAB importado e título em aberto: por onde começar

Retorno CNAB importado e título continua em aberto: a ordem de conferência na FINA200 — ocorrência na SEB, localização na SE1 e data de baixa.

Protheus Guia de processo 5 min de leitura

Assista o vídeo

Nesta página6 seções

Rotina: FINA200, retorno de cobrança (Receber Arquivo). A ocorrência vem do arquivo e é traduzida pela SEB. O título é procurado na SE1; sem achar, nada é baixado. A baixa só ocorre para certas ocorrências de liquidação e com data aceita. Antes de reprocessar: descubra em qual dessas etapas o registro parou.

O arquivo foi importado, o banco diz que o cliente pagou e o título continua com saldo. “Importou” não quer dizer “baixou”: cada linha do arquivo passa por etapas, e o título só é baixado se passar por todas. Este artigo é a continuação de baixa de título no contas a receber, que explica a baixa em si. Aqui o assunto é o caminho automático.

Ele descreve o comportamento da FINA200. Layouts e códigos variam por banco e por arquivo de configuração: os códigos de ocorrência abaixo são os do sistema, e o mapeamento do código do seu banco para eles está no seu cadastro.

O caminho de uma linha do arquivo

  1. A rotina lê a linha conforme o arquivo de configuração do parâmetro da rotina e extrai, entre outros, o identificador do título e o código de ocorrência do banco.
  2. Procura esse código na SEB (ocorrências da transmissão bancária), para o banco informado, do tipo retorno.
  3. Procura o título na SE1.
  4. Se a ocorrência é de liquidação e a data permite, baixa o título.

Para cada etapa há um jeito de a linha não gerar baixa.

1. A ocorrência existe na SEB?

A busca usa filial, banco, código da ocorrência do banco (), tipo R e, quando cadastrado, o motivo do banco (). Se não acha nem com o motivo nem sem ele, a rotina emite aviso de ocorrência não localizada. O é o código do sistema, e é ele que decide o que a rotina faz.

Confira no seu ambienteSQL
SELECT EB_BANCO, EB_REFBAN, EB_TIPO, EB_OCORR, EB_DESCRI,
       EB_MOTBAN, EB_MOTSIS
  FROM SEB010
 WHERE EB_BANCO = '001'
   AND EB_TIPO = 'R'
   AND D_E_L_E_T_ = ' '
 ORDER BY EB_REFBAN, EB_MOTBAN

Troque o banco pelo do seu arquivo. Compare a ocorrência da linha do arquivo com essa lista: se não está cadastrada, cadastre antes de reprocessar.

O que o código faz com o EB_OCORR do sistema:

EB_OCORRTratamento na FINA200
06, 36, 37, 38, 39Baixa do título
07, 08Baixa, exceto no fluxo de PIX
02Entrada confirmada: grava = 01 e, se vazio, o
03, 15, 16, 17, 40, 41, 42, 52, 53Rejeição, tratada à parte

Ou seja, uma ocorrência de confirmação de entrada ou de rejeição processa sem erro e não baixa nada, por desenho. Se o título ficou em aberto e a ocorrência é dessas, o comportamento está correto: o dinheiro não veio naquela linha.

2. O título foi localizado?

A rotina tenta primeiro o identificador CNAB (, 10 posições). Se não acha, tenta a chave clássica: prefixo, número e parcela lidos do arquivo mais o tipo. Não achando o título, a linha não baixa nada e a rotina emite o aviso de espécie não localizada para o título (help NOESPECIE, com o número e a espécie lidos do arquivo).

Confira o que está gravado no título:

Confira no seu ambienteSQL
SELECT E1_FILIAL, E1_PREFIXO, E1_NUM, E1_PARCELA, E1_TIPO,
       E1_IDCNAB, E1_NUMBCO, E1_PORTADO, E1_AGEDEP, E1_CONTA,
       E1_SITUACA, E1_OCORREN, E1_SALDO, E1_BAIXA
  FROM SE1010
 WHERE E1_IDCNAB = '0000000001'
   AND D_E_L_E_T_ = ' '

Use o identificador que aparece na linha do arquivo. Se a consulta não devolve nada, o título pode ter sido gerado em outra filial, o identificador pode ter sido alterado depois do envio, ou o arquivo pertence a outro movimento. Nenhum desses casos se resolve reprocessando.

3. O título já estava baixado?

Com o parâmetro diferente de 1 (o padrão é 2), um título com zerado não é baixado de novo. Com MV_REC2TIT igual a 1, essa checagem de saldo não se aplica; a descrição do parâmetro fala em gerar RA quando o título já estava baixado. Na consulta acima, o saldo zerado aparece como E1_SALDO = 0 e preenchido. No relatório do retorno automático, a rotina classifica esse caso como baixado anteriormente. Antes de achar que o retorno falhou, confira se outro arquivo, a baixa manual ou um processamento anterior já tratou aquele pagamento (o histórico está na SE5, como no artigo de baixa).

Confira no seu ambienteSQL
SELECT X6_VAR, X6_TIPO, X6_DESCRIC, X6_CONTEUD
  FROM SX6010
 WHERE X6_VAR = 'MV_REC2TIT'
   AND D_E_L_E_T_ = ' '

4. A data de baixa é aceita?

Mesmo com ocorrência de liquidação e título localizado, a baixa só acontece se a data passar por uma condição: o parâmetro igual a 1 (permite data anterior ao limite) ou a data ser aceita pela validação de movimento financeiro, que considera o , o calendário contábil e um ponto de entrada de datas, se existir. Se a data do crédito for anterior ao limite financeiro do ambiente e o parâmetro não liberar, a linha não baixa.

Confira no seu ambienteSQL
SELECT X6_VAR, X6_TIPO, X6_DESCRIC, X6_CONTEUD
  FROM SX6010
 WHERE X6_VAR IN ('MV_BXDTFIN', 'MV_DATAFIN')
   AND D_E_L_E_T_ = ' '

O resultado mostra o que o seu ambiente tem cadastrado. Ele não diz por si só se aquela linha foi barrada por isso: para saber, compare a data do crédito do arquivo com o MV_DATAFIN.

Reprocessar: antes, saiba onde parou

Reprocessar sem entender a etapa repete o mesmo resultado, ou pior, mistura baixas. O código da rotina mantém um log de processamento do arquivo (tabelas FI0, cabeçalho, e FI1, detalhe, com ocorrência do arquivo e ocorrência do sistema por título) e, ao reler um arquivo já registrado nesse log, pula os títulos cujo saldo já está zerado. Esse log só existe se as tabelas estão no dicionário do ambiente. O detalhe (FI1) só é gravado para o título que foi baixado ou que o ponto de entrada de log liberou. Por isso ele serve para confirmar o que já foi baixado, não para descobrir onde um título parou: título com ocorrência sem liquidação, data recusada ou não localizado não aparece nele, e a ausência na FI1 não indica a etapa.

Confira no seu ambienteSQL
SELECT FI1_IDARQ, FI1_IDTIT, FI1_OCORB, FI1_OCORS, FI1_SEQ
  FROM FI1010
 WHERE FI1_IDTIT = 'SUBSTITUA'
   AND D_E_L_E_T_ = ' '

A ordem prática (a FI1 fica só para conferir baixas já feitas):

  1. Pegue uma linha concreta do arquivo: identificador e ocorrência.
  2. Veja se a ocorrência está na SEB e qual EB_OCORR ela tem. Se não é de liquidação, acabou.
  3. Localize o título pelo identificador; sem achar, o problema é de cadastro ou de arquivo.
  4. Veja o saldo: zerado significa que já foi tratado.
  5. Confira a data de crédito contra o limite financeiro.
  6. Só então corrija a causa e reprocesse, em homologação primeiro.

A FINA200 também tem pontos de entrada que podem alterar os valores lidos, filtrar o título ou impedir o processamento da linha. Se o ambiente tem personalização e nenhuma das etapas acima explica, é a próxima suspeita.

Continue por aqui