Ir para conteúdo
  • Cadastre-se

dev botao

Tratamento de Remessa e Retorno para outros Bancos


jpedrosojr
  • Este tópico foi criado há 4810 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Ola a todos,

Gostaria de saber se alguém ja iniciou ou esta pensando em iniciar a implementação dos seguintes recursos:

1) Tratamento do arquivo Retorno para Banco do Brasil

2) Tratamento do arquivo Remessa e Retorno para Nossa Caixa Nosso Banco e Santander

Estou precisando desses e se alguem ja começou ou vai começar e quer uma ajuda, entre em contato pela e-mail [email protected]

Link para o comentário
Compartilhar em outros sites

Olá jpedrosojr, eu fiz a remessa e retorno do banco itaú e fiz uns ajustes no bradesco, e estou aguardando a avaliação do ACBr para eles postarem no SVN, se você quiser iniciar o retorno do Banco do Brasil eu te dou uma mão.

Para fazer o retorno do Itaú eu tomei como base o retorno do Bradesco, você pode tomar como base o Itaú e o Bradesco.

Procure o manual do CNAB 240 e 400 do Banco do Brasil e acompanhe o manual para fazer a leitura do arquivo de retorno e qualquer dúvida post no fórum que eu respondo.

Att.

Carlos Fitl.

Link para o comentário
Compartilhar em outros sites

  • Administradores

Olá Carlos.

Vc anexou onde os fontes com as alterações sobre o retorno do Bradesco(motivos de rejeição)....já estão no svn suas alterações referentes ao Recibo de Entrega, mas estas últimas ainda não estavam nos fontes que baixei..

Att

Consultora SAC ACBr

Juliana Tamizou

Gerente de Projetos ACBr / Diretora de Marketing AFRAC
Ajude o Projeto ACBr crescer - Seja Pro

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.  Discord

Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil


Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

Link para o comentário
Compartilhar em outros sites

Olá Carlos.

Vc anexou onde os fontes com as alterações sobre o retorno do Bradesco(motivos de rejeição)....já estão no svn suas alterações referentes ao Recibo de Entrega, mas estas últimas ainda não estavam nos fontes que baixei..

Att

Eu postei no Mantis como você solicitou.

Veja no link: http://www.djsystem.com.br/acbr/mantis/ ... 2#bugnotes

Att.

Carlos Fitl.

Link para o comentário
Compartilhar em outros sites

  • Administradores

Olá.

Pretendo iniciar a implementação do Santander, assim que estiver concluido disponibilizarei no svn.

Att

Consultora SAC ACBr

Juliana Tamizou

Gerente de Projetos ACBr / Diretora de Marketing AFRAC
Ajude o Projeto ACBr crescer - Seja Pro

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.  Discord

Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil


Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

Link para o comentário
Compartilhar em outros sites

  • Administradores

Bom dia.

No link abaixo estão disponiveis os manuais de todos os bancos que estão sendo implementados no ACBrBoleto.

https://acbr.svn.sourceforge.net/svnroo ... ols/Bancos

Att

Consultora SAC ACBr

Juliana Tamizou

Gerente de Projetos ACBr / Diretora de Marketing AFRAC
Ajude o Projeto ACBr crescer - Seja Pro

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.  Discord

Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil


Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

Link para o comentário
Compartilhar em outros sites

Ola Carlos e Juliana, segue em anexo o codigo que estamos desenvolvendo. Favor ver comentario que fiz no centro dele

-----------------------------------------------------------------------------

procedure TACBrBancoBrasil.LerRetorno240(ARetorno: TStringList);

var

  ContLinha: Integer;

  Titulo: TACBrTitulo;


  Linha, rCedente: String;

  rCNPJCPF: String;


  CodOCorrencia: Integer;

  i, MotivoLinha: Integer;

begin

  ContLinha := 0;


  // informação do Header

  // Verifica se o arquivo pertence ao banco

  if strtoint(copy(ARetorno.Strings[0], 3, 3)) <> Numero then

    raise Exception.create(ACBrStr(ACBrBanco.ACBrBoleto.NomeArqRetorno +

          'não' + 'é um arquivo de retorno do ' + Nome));


  rCedente := trim(copy(ARetorno[0], 73, 30));

  rCNPJCPF := trim(IntToStr(StrToIntDef(copy(ARetorno[1], 19, 14), 0)));


  with ACBrBanco.ACBrBoleto do

  begin

    if (not LeCedenteRetorno) and (rCNPJCPF <> Cedente.CNPJCPF) then

      raise Exception.create(ACBrStr('CNPJ\CPF do arquivo inválido'));


    Cedente.Nome := rCedente;

    Cedente.CNPJCPF := rCNPJCPF;


    case StrToIntDef(copy(ARetorno[0], 18, 1), 0) of

      01:

        Cedente.TipoInscricao := pFisica;

      02:

        Cedente.TipoInscricao := pJuridica;

    else

      Cedente.TipoInscricao := pOutras;

    end;


    ACBrBanco.ACBrBoleto.ListadeBoletos.Clear;

  end;


  for ContLinha := 1 to ARetorno.Count - 2 do

  begin

    Linha := ARetorno[ContLinha];


    if copy(Linha, 8, 8) <> '3' then // verifica se o registro (linha) é um registro detalhe (segmento J)

      Continue;


    if copy(Linha, 14, 1) = 'T' then // se for segmento T cria um novo titulo

      Titulo := ACBrBanco.ACBrBoleto.CriarTituloNaLista;


    with Titulo do

    begin

{=====================================================

neste ponto abaixo comentado eu fiquei com duvidas como no caso da "Especie de documento"

nao encontrei esta informacao no retorno e no caso da ocorrencia estava vendo o manual da febraban.

Nele ele mostra todos os codigos de ocorrencias de 01 a 99 e outros como A1 ate A4.

Nao seria interessante criar uma procedure derivada da classe TACBrBancoClass, deste modo

ficaria padrao para todos (bem, na verdade existe, mas o q eu digo se nao pode colocar

todos os codigos ja nela e permitir o OVERRIDE apenas para complementar um ou outro

codigo?

}


      { OcorrenciaOriginal.Tipo := CodOcorrenciaToTipo

        (StrToIntDef(copy(Linha, 214, 2), 0));


        MotivoLinha := 214;

        for i := 0 to 3 do

        begin

        MotivoRejeicaoComando.Add(IfThen(copy(Linha, MotivoLinha, 2) = '  ',

        '00', copy(Linha, MotivoLinha, 2)));


        if MotivoRejeicaoComando[i] <> '00' then

        begin

        CodOCorrencia := StrToIntDef(MotivoRejeicaoComando[i], 0);

        DescricaoMotivoRejeicaoComando.Add(CodMotivoRejeicaoToDescricao

        (OcorrenciaOriginal.Tipo, CodOCorrencia));

        end;


        MotivoLinha := MotivoLinha + 2;

        end; }


      { Espécie do documento }

      { if Trim(Copy(Linha,174,2)) = '' then

        EspecieDoc := '99'

        else

        case StrToInt(Copy(Linha,174,2)) of

        01 : EspecieDoc := 'DM';

        02 : EspecieDoc := 'NP';

        03 : EspecieDoc := 'NS';

        04 : EspecieDoc := 'ME';

        05 : EspecieDoc := 'RC';

        06 : EspecieDoc := 'CT';

        07 : EspecieDoc := 'CS';

        08 : EspecieDoc := 'DS';

        09 : EspecieDoc := 'LC';

        13 : EspecieDoc := 'ND';

        15 : EspecieDoc := 'DD';

        16 : EspecieDoc := 'EC';

        17 : EspecieDoc := 'PS';

        99 : EspecieDoc := 'DV';

        else

        EspecieDoc := 'DV';

        end;

        }

      if copy(Linha, 14, 1) = 'T' then

      begin

        SeuNumero := copy(Linha, 106, 25);

        NumeroDocumento := copy(Linha, 59, 15);

        Carteira := copy(Linha, 58, 1);


        Vencimento := StringToDateTimeDef(copy(Linha, 74, 8), 0, 'DDMMYY');


        ValorDocumento := StrToFloatDef(copy(Linha, 82, 15), 0) / 100;


        NossoNumero := copy(Linha, 38, 20);

        ValorDespesaCobranca := StrToFloatDef(copy(Linha, 199, 15), 0) / 100;


      end

      else // segmento U

      begin


        ValorIOF := StrToFloatDef(copy(Linha, 63, 15), 0) / 100;

        ValorAbatimento := StrToFloatDef(copy(Linha, 48, 15), 0) / 100;

        ValorDesconto := StrToFloatDef(copy(Linha, 33, 15), 0) / 100;

        ValorMoraJuros := StrToFloatDef(copy(Linha, 18, 15), 0) / 100;

        ValorOutrosCreditos := StrToFloatDef(copy(Linha, 108, 15), 0) / 100;

        ValorRecebido := StrToFloatDef(copy(Linha, 78, 15), 0) / 100;

        DataOcorrencia := StringToDateTimeDef(copy(Linha, 138, 8), 0, 'DDMMYY');

        DataCredito := StringToDateTimeDef(copy(Linha, 146, 8), 0, 'DDMMYY');

      end;

    end;

  end;

end;

Link para o comentário
Compartilhar em outros sites

Olá jpedrosojr, vou verificar suas dúvidas e te retornos.

Quanto as ocorrências fica difícil criar algo genérico pois cada banco tem uma nomenclatura para a ocorrência, mas se tiver algo em mente para tratar isso post aqui no fórum.

Se você tiver algum arquivo de retorno do banco do brasil post aqui no fórum para eu fazer um teste, pois eu não tenho nenhum para testar sua implementação.

Att.

Carlos Fitl.

Link para o comentário
Compartilhar em outros sites

  • 1 mês depois ...

Boa Tarde a Todos,

Aproveitando este tópico aonde foram divulgados os links para os manuais de integração com os bancos, gostaria de disponibilizar uma versão mais atual do manual do Bradesco. layout_cobranca.rar

Também estou realizando alguns ajustes/inclusões na parte de retorno do CNAB400 do Bradesco, assim que estiver pronto estarei enviando os códigos fonte.

Att.

Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 4810 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

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