Jump to content

dev botao

Retorno Sicredi - Captura Tarifas


Valdir Dill
Go to solution Solved by Valdir Dill,
  • Este tópico foi criado há 1697 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

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 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

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

The popup will be closed in 10 seconds...