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á 726 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

  • Membros Pro
Postado

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

  • Moderadores
Postado
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
 

 

  • Moderadores
Postado
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
 

 

  • Consultores
Postado

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

  • Membros Pro
Postado

Boa tarde Italo,

 

Os pontos do manual que você indicou pertence a seção de Cobrança, que neste caso é tratado pela ACBr no componente ACBrBoleto, então em teoria o PagFor não deveria implementar esta tratativa.

×
×
  • 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.