Ir para conteúdo
  • Cadastre-se

dev botao

Retorno Sicredi - Captura Tarifas


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

Recommended Posts

  • Membros Pro
Postado

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

 

 

  • Administradores
Postado

Bom dia.

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

Att.

  • Curtir 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 !!

  • Membros Pro
Postado
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

 

 

  • Administradores
Postado

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

  • Membros Pro
  • Solution
Postado
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.

  • Curtir 1
  • Obrigado 1

Valdir Dill

Rio de Janeiro - RJ

 

 

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