Ir para conteúdo
  • Cadastre-se

dev botao

PagFor - Sicredi Leitura arquivo retorno


Ver Solução Respondido por Italo Giurizzato Junior,
  • Este tópico foi criado há 678 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

  • Membros Pro

Boa tarde.

Identificamos um problema na leitura do arquivo de retorno do banco Sicredi no PagFor.

No código atual da ACBr na unit CNAB240.LerTxtRetorno.pas, ao ler o Registro1 (header do lote) é realizado um tratamento diferente quando o tipo de serviço é tsBloquetoEletronico, porém não encontramos no manual do banco Sicredi e nem no da FABRABAN tratativas de ajuste para essa situação.

 

Parte do código atual para exemplificar:

with PagFor.Lote.Last.Registro1.Servico do
  begin
    Operacao := StrToTpOperacao(mOk, LerCampo(Linha, 9, 1, tcStr));
    TipoServico := StrToTpServico(mOk, LerCampo(Linha, 10, 2, tcStr));

    //Quando é bloqueto Eletrônico o campo do CNPJ da empresa possui 15 caracteres
    //e para os demais serviços possui 14

    if TipoServico = tsBloquetoEletronico then
      ajusteBloqueto := 1;

    FormaLancamento := StrToFmLancamento(mOk, LerCampo(Linha, 12, 2, tcStr));
  end;

 

Ao considerar o serviço do lote como tsBloquetoEletronico, a procedure TArquivoR_CNAB240.LerRegistro1(I: Integer) tentar ler alguns registro como: Informacao2, DataCredito que não existem no arquivo e nem manual do banco, além de ler algumas informações erradas, com uma posição a frente do correto:

Segue parte do código para exemplificar:

  case PagFor.Lote.Last.Registro1.Servico.TipoServico of
    tsBloquetoEletronico:
      begin
        with PagFor.Lote.Last.Registro1 do
        begin
          Informacao2 := LerCampo(Linha, 144, 40, tcStr);
          ControleCobranca.NumRemRet := LerCampo(Linha, 184, 8, tcInt);
          ControleCobranca.DataGravacao := LerCampo(Linha, 192, 8, tcDat);
          DataCredito := LerCampo(Linha, 200, 8, tcDat);
        end;
      end;
  else
    begin
      with PagFor.Lote.Last.Registro1.Endereco do
      begin
        Logradouro := LerCampo(Linha, 143 + ajusteBloqueto, 30, tcStr);
        Numero := LerCampo(Linha, 173, 5, tcInt);
        Complemento := LerCampo(Linha, 178, 15, tcStr);
        Cidade := LerCampo(Linha, 193, 20, tcStr);
        CEP := LerCampo(Linha, 213, 8, tcInt);
        Estado := LerCampo(Linha, 221, 2, tcStr);
      end;
    end;
  end;

 

Realizamos testes internos comentado as linhas que tratam o tipo de serviço como tsBloquetoEletronico, fazendo com que a execução caia no ELSE do CASE e o arquivo foi carregado com sucesso.

 

Gostaríamos de uma orientação de como proceder, se o melhor a fazer é remover este código da procedure na unit geral CNAB240.LerTxtRetorno.pas, uma vez que não encontramos nos manuais ou deveríamos fazer a reimplementação procedure LerRegistro1 apenas na classe PagFor.Sicredi.LerTxtRetorno.pas especifica do banco Sicredi.

Manual SICREDI: https://www.sicredi.com.br/media/produtos/filer_public/2022/07/21/manual_pagamentos_cnab_240_v33_1.pdf

Manual FEBRABAN: https://cmsarquivos.febraban.org.br/Arquivos/documentos/PDF/Layout padrao CNAB240 V 10 10 - 30_08_2022_2.pdf

Link para o comentário
Compartilhar em outros sites

  • Moderadores
6 minutos atrás, Centrodata Sistemas disse:

Boa tarde.

Identificamos um problema na leitura do arquivo de retorno do banco Sicredi no PagFor.

No código atual da ACBr na unit CNAB240.LerTxtRetorno.pas, ao ler o Registro1 (header do lote) é realizado um tratamento diferente quando o tipo de serviço é tsBloquetoEletronico, porém não encontramos no manual do banco Sicredi e nem no da FABRABAN tratativas de ajuste para essa situação.

 

Parte do código atual para exemplificar:

with PagFor.Lote.Last.Registro1.Servico do
  begin
    Operacao := StrToTpOperacao(mOk, LerCampo(Linha, 9, 1, tcStr));
    TipoServico := StrToTpServico(mOk, LerCampo(Linha, 10, 2, tcStr));

    //Quando é bloqueto Eletrônico o campo do CNPJ da empresa possui 15 caracteres
    //e para os demais serviços possui 14

    if TipoServico = tsBloquetoEletronico then
      ajusteBloqueto := 1;

    FormaLancamento := StrToFmLancamento(mOk, LerCampo(Linha, 12, 2, tcStr));
  end;

 

Ao considerar o serviço do lote como tsBloquetoEletronico, a procedure TArquivoR_CNAB240.LerRegistro1(I: Integer) tentar ler alguns registro como: Informacao2, DataCredito que não existem no arquivo e nem manual do banco, além de ler algumas informações erradas, com uma posição a frente do correto:

Segue parte do código para exemplificar:

  case PagFor.Lote.Last.Registro1.Servico.TipoServico of
    tsBloquetoEletronico:
      begin
        with PagFor.Lote.Last.Registro1 do
        begin
          Informacao2 := LerCampo(Linha, 144, 40, tcStr);
          ControleCobranca.NumRemRet := LerCampo(Linha, 184, 8, tcInt);
          ControleCobranca.DataGravacao := LerCampo(Linha, 192, 8, tcDat);
          DataCredito := LerCampo(Linha, 200, 8, tcDat);
        end;
      end;
  else
    begin
      with PagFor.Lote.Last.Registro1.Endereco do
      begin
        Logradouro := LerCampo(Linha, 143 + ajusteBloqueto, 30, tcStr);
        Numero := LerCampo(Linha, 173, 5, tcInt);
        Complemento := LerCampo(Linha, 178, 15, tcStr);
        Cidade := LerCampo(Linha, 193, 20, tcStr);
        CEP := LerCampo(Linha, 213, 8, tcInt);
        Estado := LerCampo(Linha, 221, 2, tcStr);
      end;
    end;
  end;

 

Realizamos testes internos comentado as linhas que tratam o tipo de serviço como tsBloquetoEletronico, fazendo com que a execução caia no ELSE do CASE e o arquivo foi carregado com sucesso.

 

Gostaríamos de uma orientação de como proceder, se o melhor a fazer é remover este código da procedure na unit geral CNAB240.LerTxtRetorno.pas, uma vez que não encontramos nos manuais ou deveríamos fazer a reimplementação procedure LerRegistro1 apenas na classe PagFor.Sicredi.LerTxtRetorno.pas especifica do banco Sicredi.

Manual SICREDI: https://www.sicredi.com.br/media/produtos/filer_public/2022/07/21/manual_pagamentos_cnab_240_v33_1.pdf

Manual FEBRABAN: https://cmsarquivos.febraban.org.br/Arquivos/documentos/PDF/Layout padrao CNAB240 V 10 10 - 30_08_2022_2.pdf

se tem mudança só implementa na classe do banco. pois deve ser somente para ele

  • Curtir 1
Consultor SAC ACBr Juliomar Marchetti
 

Projeto ACBr

skype: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br
MVP_NewLogo_100x100_Transparent-02.png
 

 

Link para o comentário
Compartilhar em outros sites

  • Moderadores
6 horas atrás, Centrodata Sistemas disse:

Poderia informar para que serve esses tratamentos diferentes para tsBloquetoEletronico e para qual banco?

E acho que será o primeiro banco com implementação diferente para o Registro1.

Não mas teria que ver os manuais. eu geralmente quando vou implementar leio do banco que vou fazer e trato pra ele. deixando estendivel aos demais

Consultor SAC ACBr Juliomar Marchetti
 

Projeto ACBr

skype: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br
MVP_NewLogo_100x100_Transparent-02.png
 

 

Link para o comentário
Compartilhar em outros sites

  • Consultores

Bom dia,

Segundo o manual da Febraban - 240 versão 10.7 nas páginas 54 (Títulos em Cobrança), 69 (Boleto de Pagamento Eletrônico) e 77 (Alegação do Pagador) o Número de Inscrição da Empresa tem um tamanho de 15 dígitos, os demais tem 14. 

Mas no meu entendimento e segundo o mesmo manual a linha que lê o logradouro esta errada, deveria ser:

      with PagFor.Lote.Last.Registro1.Endereco do
      begin
        Logradouro := LerCampo(Linha, 143, 30, tcStr);  <=== remover o "+ ajusteBloqueto"
        Numero := LerCampo(Linha, 173, 5, tcInt);
        Complemento := LerCampo(Linha, 178, 15, tcStr);
        Cidade := LerCampo(Linha, 193, 20, tcStr);
        CEP := LerCampo(Linha, 213, 8, tcInt);
        Estado := LerCampo(Linha, 221, 2, tcStr);
      end;

 

Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / Araraquara-SP

Araraquara - A era dos Trólebus

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.

The popup will be closed in 10 segundos...
The popup will be closed in 10 segundos...