Jump to content

Delphi chamada_delphi.png acbr.png

C6 chamada_c6.png botao.png

Retorno Sicredi - Captura Tarifas


Valdir Dill
Go to solution Solved by Valdir Dill,
  • Este tópico foi criado há 825 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

  • Membros Pro

Bom dia,

Analisando o arquivo de retorno SICREDI (arquivo anexo), notei que cada título vem com duas linhas de retorno. Uma para os dados  da baixa em si e outra linha para a tarifa.

Eu particularmente nunca tinha notado isso, até porque outros bancos não é assim, ou seja, o valor da tarifa vem na mesma linha da baixa, o que logicamente facilita muito a leitura.

Pergunto:
1 - Isso (duas linhas) é algo novo no layout do retorno SICREDI ou sempre foi assim?

2 - Como tratar isso na varredura para obter os títulos baixados e também a tarifa de baixa de cada um, tenho que varrer o arquivo duas vezes, uma vez para capturar os dados da baixa em si e outro loop para ver a tarifa de cada um dos títulos baixados?
Qual a sugestão?

Obrigado

 

RetornoSicredi.CRT

Valdir Dill

Rio de Janeiro - RJ

 

 

Link to comment
Share on other sites

  • Administradores

Bom dia.

Se você utiliza o componente ACBrBoleto, ele já faz a leitura das informações.

Att.

  • Like 2
Consultora SAC ACBr

Juliana Tamizou
Ajude o Projeto ACBr crescer - Assine o SAC

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 to comment
Share on other sites

  • Membros Pro
1 hora atrás, Juliana Tamizou disse:

Bom dia.

Se você utiliza o componente ACBrBoleto, ele já faz a leitura das informações.

Att.

Bom, eu uso o Acbr para ler o arquivo e, nos demais bancos funciona beleza, mas especificamente com o Sicredi não está dando certo.
O problema é que o arquivo Sicredi vem as informações em duas linhas, enquanto que os demais bancos vem tudo numa única linha

Veja como estou fazendo e por favor me diga se estou fazendo errado ou se poderia ser melhor.
   
ACBrBoleto1.NomeArqRetorno := 'RetornoSicredi.CRT';
ACBrBoleto1.DirArqRetorno := 'C:\Retornos\;
ACBrBoleto1.LerRetorno();
              
 for I := 0 to DM.ACBrBoleto1.ListadeBoletos.Count - 1 do

if ACBrBoleto1.ListadeBoletos.Objects.OcorrenciaOriginal.Tipo in  [toRetornoLiquidado, toRetornoLiquidadoSemRegistro] then
 begin
   ShowMessage(FloatToStr(ACBrBoleto1.ListadeBoletos.Objects.ValorRecebido));
   ShowMessage(FloatToStr(ACBrBoleto1.ListadeBoletos.Objects.ValorDespesaCobranca + ACBrBoleto1.ListadeBoletos.Objects.ValorOutrasDespesas));
 end;
Nesse loop acima, o valor das tarifas será 0. Mas apenas no caso do Sicredi. Nos demais bancos (pelo menos os que uso), traz o valor certo.
Isso porque o Sicredi traz duas linhas para cada boleto no arquivo de retorno, uma para o valor recebido e outra a tarifa.

Aí eu teria que fazer algo mais ou menos assim:
if ACBrBoleto1.ListadeBoletos.Objects.OcorrenciaOriginal.Tipo in  [ttoRetornoDebitoTarifas] then
 begin
   ShowMessage(FloatToStr(ACBrBoleto1.ListadeBoletos.Objects.ValorDespesaCobranca + ACBrBoleto1.ListadeBoletos.Objects.ValorOutrasDespesas));
 end;
 ou seja varrer a lista novamente.

Obrigado.

Valdir Dill

Rio de Janeiro - RJ

 

 

Link to comment
Share on other sites

  • Administradores

Boa tarde.

Não acho que seja necessario varrer a lista novamente, você ir atualizando os dados em seu BD conforme percorre a lista, já que em ambos os registros os dados de identificação do titulo serão os mesmos.

Att.

Consultora SAC ACBr

Juliana Tamizou
Ajude o Projeto ACBr crescer - Assine o SAC

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 to comment
Share on other sites

  • Membros Pro
  • Solution
19 minutos atrás, Juliana Tamizou disse:

Boa tarde.

Não acho que seja necessario varrer a lista novamente, você ir atualizando os dados em seu BD conforme percorre a lista, já que em ambos os registros os dados de identificação do titulo serão os mesmos.

Att.

Agradeço a sugestão, mas não tenho como adotá-la porque preciso das informações antes de gravar no BD. Além disso, nos outros bancos a informações no arquivo de retorno vêm numa linha só. Aí, de toda forma precisaria de rotinas diferentes.

A solução que encontrei foi essa. Deixo aqui para talvez ajudar alguém no futuro:

for I := 0 to ACBrBoleto1.ListadeBoletos.Count - 1 do
  begin
    if (ACBrBoleto1.ListadeBoletos.Objects.OcorrenciaOriginal.Tipo in [toRetornoLiquidado, toRetornoLiquidadoSemRegistro, toRetornoDebitoTarifas]) then
   begin
    if ACBrBoleto1.ListadeBoletos.Objects.OcorrenciaOriginal.Tipo <> toRetornoDebitoTarifas then
     begin
       VNumBoleto := ACBrBoleto1.ListadeBoletos.Objects.NossoNumero;
       VValorRec := ACBrBoleto1.ListadeBoletos.Objects.ValorRecebido;
     end;  

    if VBaixa.FTipoRet = cobSicred then //o sicred o retorno vem em duas linhas. 
      begin
       for M := 0 to ACBrBoleto1.ListadeBoletos.Count - 1 do
        begin
         if (ACBrBoleto1.ListadeBoletos.Objects[M].OcorrenciaOriginal.Tipo = toRetornoDebitoTarifas) and
          (ACBrBoleto1.ListadeBoletos.Objects[M].NossoNumero = ACBrBoleto1.ListadeBoletos.Objects.NossoNumero) then
          VTotTarifas :=  ACBrBoleto1.ListadeBoletos.Objects[M].ValorDespesaCobranca;
        end;
       end
      else VTotTarifas := ACBrBoleto1.ListadeBoletos.Objects[M].ValorDespesaCobranca;
     end;
   end;  
  end;  

Obrigado.

  • Like 1
  • Thanks 1

Valdir Dill

Rio de Janeiro - RJ

 

 

Link to comment
Share on other sites

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.