Andréa Ascont Sistemas Postado 5 Novembro Postado 5 Novembro Bom Dia! Um de nossos clientes reclamou do seguinte erro ao ler o Retorno gerado pelo Banco Bradesco: "Could not convert variant of type (UnicodeString) into type (Double)" Analisando o erro, percebemos que no arquivo de retorno, na posição 321, referente ao segundo motivo, continha uma letra (P4) "00P4000000" Se a letra estiver na primeira posição do Motivo (coluna 319) o erro não ocorre, mas da segunda para frente temos esse problema. Olhando o código fonte, o sistema tenta verificar se o Motivo é diferente de 0, mas como contém uma letra, o erro ocorre nesse momento: --------------------------------------------------------------------------------------------------------------------------------------------- unit ACBrBoleto; //Apos o 1º motivo os 00 significam que não existe mais motivo if(CodMotivo <> 0)then begin MotivoRejeicaoComando.Add(IfThen(copy(Linha,MotivoLinha,2) = ' ','00',copy(Linha,MotivoLinha,2))); if VarIsNumeric(CodMotivo) then DescricaoMotivoRejeicaoComando.Add(CodMotivoRejeicaoToDescricao(OcorrenciaOriginal.Tipo,Integer(CodMotivo))) else DescricaoMotivoRejeicaoComando.Add(CodMotivoRejeicaoToDescricao(OcorrenciaOriginal.Tipo,VarToStr(CodMotivo))); end; ---------------------------------------------------------------------------------------------------------------------------------------------
Moderadores Juliomar Marchetti Postado 5 Novembro Moderadores Postado 5 Novembro está marcado no componente para utilizar os dados do arquivo de retorno para a conta? Juliomar Marchetti skype: juliomar telegram: juliomar e-mail: [email protected] http://www.juliomarmarchetti.com.br
Andréa Ascont Sistemas Postado 6 Novembro Autor Postado 6 Novembro Utilizando o Demo da ACBR, alterei apenas uma propriedade, as outras ficaram com as configurações padrões. Configurei os dados do cliente, e alterei a propriedade "Ler Cedente do Arq. Retorno" para Sim:
Moderadores Juliomar Marchetti Postado 6 Novembro Moderadores Postado 6 Novembro Certo consegue pegar o manual a conferir os possiveis dados a vir e quem sabe implementar no fonte uma possível correção? e depois de testar anexar aqui Juliomar Marchetti skype: juliomar telegram: juliomar e-mail: [email protected] http://www.juliomarmarchetti.com.br
Andréa Ascont Sistemas Postado 6 Novembro Autor Postado 6 Novembro O Manual de Procedimentos Operacionais para Troca de Arquivos (Bradesco) trata dessa informação na Página 41 svn: ..\tools\Bancos\237-Bradesco\CNAB400_Cobranca_2022_VER003.pdf Para nossa aplicação, se verificar se o código do motivo é um número já resolve o problema. if (not(VarIsNumeric(CodMotivo)) or (CodMotivo <> 0)) then ACBrBoleto.pas
Moderadores Juliomar Marchetti Postado 6 Novembro Moderadores Postado 6 Novembro não seria AND? Juliomar Marchetti skype: juliomar telegram: juliomar e-mail: [email protected] http://www.juliomarmarchetti.com.br
Andréa Ascont Sistemas Postado 7 Novembro Autor Postado 7 Novembro Não pode ser "AND". Como o motivo é "P4", verifico primeiro se não é número, se não é número, como usei "OR", ele já entra no if e nem verifica a segunda instrução (codmotivo <> 0) Se ele verificar a segunda instrução o erro ocorre. Ele precisa entrar no if se o código do motivo não for número ou se for diferente de 0 (caso seja numérico), por isso usei desta forma: Se "Não for número" ou se for "diferente de 0". if (not(VarIsNumeric(CodMotivo)) or (CodMotivo <> 0)) then
Moderadores Juliomar Marchetti Postado 11 Novembro Moderadores Postado 11 Novembro Em 07/11/2024 at 07:40, Andréa Ascont Sistemas disse: Não pode ser "AND". Como o motivo é "P4", verifico primeiro se não é número, se não é número, como usei "OR", ele já entra no if e nem verifica a segunda instrução (codmotivo <> 0) Se ele verificar a segunda instrução o erro ocorre. Ele precisa entrar no if se o código do motivo não for número ou se for diferente de 0 (caso seja numérico), por isso usei desta forma: Se "Não for número" ou se for "diferente de 0". if (not(VarIsNumeric(CodMotivo)) or (CodMotivo <> 0)) then Hum no svn ciente que pode ser mudado Juliomar Marchetti skype: juliomar telegram: juliomar e-mail: [email protected] http://www.juliomarmarchetti.com.br
Andréa Ascont Sistemas Postado 12 Novembro Autor Postado 12 Novembro Não tem problema ser implementado de outra forma. Para nossa aplicação não faz muita diferença, pois não salvamos todos os motivos, só precisamos que o erro não ocorra para podermos dar continuidade na leitura do arquivo.
Moderadores Juliomar Marchetti Postado 12 Novembro Moderadores Postado 12 Novembro Obrigado por reportar. Fechando. Para novas dúvidas, criar um novo tópico. Juliomar Marchetti skype: juliomar telegram: juliomar e-mail: [email protected] http://www.juliomarmarchetti.com.br
Recommended Posts