Luiz Carlos Rodrigues Postado 24 Outubro, 2024 Postado 24 Outubro, 2024 Quando tento ler o retorno do banco Sofisa está dando um na função GetTipoCobranca em StrToInt(Carteira) no bloco abaixo Devido a Carteira nesse momento estar em branco, ou seja a Carteira que está nos registros Detalhe nem foi lida ainda. Provisoriamente eu fiz uma alteração no fonte ACBrBoleto.pas assumindo cobBancoSofisaSantander só para não dar erro (Isso porque o meu cliente está usando Sofisa Santander). 637: begin if StrToInt(Carteira) = 109 then Result := cobBancoSofisaItau else Result := cobBancoSofisaSantander; end; Não sei se vale a pena colocar o que eu fiz nos fontes do ACBrBoleto já que não é 100% Ficou assim: 637: begin if Carteira = '' then Result := cobBancoSofisaSantander else if StrToInt(Carteira) = 109 then Result := cobBancoSofisaItau else Result := cobBancoSofisaSantander; end;
Moderadores Juliomar Marchetti Postado 24 Outubro, 2024 Moderadores Postado 24 Outubro, 2024 Anexa e se possível repassa como fazer o teste para ocorrer Juliomar Marchetti skype: juliomar telegram: juliomar e-mail: [email protected] http://www.juliomarmarchetti.com.br
Luiz Carlos Rodrigues Postado 25 Outubro, 2024 Autor Postado 25 Outubro, 2024 Bom dia O teste é simples (Arquivo anexo): ACBrBoleto.NomeArqRetorno := edArquivo.Text; ACBrBoleto.LeCedenteRetorno:= True; ACBrBoleto.LerRetorno; PV820358_812_SEC_101_SOFISA.18O
Moderadores Juliomar Marchetti Postado 25 Outubro, 2024 Moderadores Postado 25 Outubro, 2024 16 minutos atrás, Luiz Carlos Rodrigues disse: Bom dia O teste é simples (Arquivo anexo): ACBrBoleto.NomeArqRetorno := edArquivo.Text; ACBrBoleto.LeCedenteRetorno:= True; ACBrBoleto.LerRetorno; PV820358_812_SEC_101_SOFISA.18O 2.36 kB · 0 downloads desmarca a opção lecedente e veja se resolve Juliomar Marchetti skype: juliomar telegram: juliomar e-mail: [email protected] http://www.juliomarmarchetti.com.br
Luiz Carlos Rodrigues Postado 25 Outubro, 2024 Autor Postado 25 Outubro, 2024 Bom dia. Eu já havia feito isso mais ocorre uma exceção conforme o código abaixo no ACBrBoleto if ( IntToStrZero(Banco.Numero, 3) <> BancoRetorno ) and ( IntToStrZero(Banco.NumeroCorrespondente, 3) <> BancoRetorno ) then if LeCedenteRetorno then Banco.TipoCobranca := GetTipoCobranca( StrToIntDef(BancoRetorno, 0)) else raise Exception.Create( ACBrStr( 'Arquivo de retorno de banco diferente do Cedente'));
Moderadores Juliomar Marchetti Postado 25 Outubro, 2024 Moderadores Postado 25 Outubro, 2024 Hum. sugere alguma correção baseado no manual enos erros? Juliomar Marchetti skype: juliomar telegram: juliomar e-mail: [email protected] http://www.juliomarmarchetti.com.br
Luiz Carlos Rodrigues Postado 25 Outubro, 2024 Autor Postado 25 Outubro, 2024 Não é nem pelo manual, Quando vem no Retorno o Código do Banco 637 (Sofisa) o Componente ACBrBoleto está Verificando se a Carteira é 109, Executa Banco Itaú, caso Contrário Executa Santander, só que nesse momento a carteira ainda não foi alimentada pois a mesma fica nos Registros Detalhe e não no Header, ou seja teria que depois de achar o código do banco, achar a carteira no Detalhe para depois fazer a verificação se executa Itaú ou Santander. Provavelmente isso vai acontecer também com o Banco 643 (Pine) pois a condição é a mesma do Sofisa só que nesse caso executa BancoPineBradesco ou BancoPine
Luiz Carlos Rodrigues Postado 25 Outubro, 2024 Autor Postado 25 Outubro, 2024 O manual que eu tenho aqui já tem uns quatro anos e por ele não dá para identificar nada no header se é Itaú ou Santander
Moderadores Juliomar Marchetti Postado 25 Outubro, 2024 Moderadores Postado 25 Outubro, 2024 36 minutos atrás, Luiz Carlos Rodrigues disse: Não é nem pelo manual, Quando vem no Retorno o Código do Banco 637 (Sofisa) o Componente ACBrBoleto está Verificando se a Carteira é 109, Executa Banco Itaú, caso Contrário Executa Santander, só que nesse momento a carteira ainda não foi alimentada pois a mesma fica nos Registros Detalhe e não no Header, ou seja teria que depois de achar o código do banco, achar a carteira no Detalhe para depois fazer a verificação se executa Itaú ou Santander. Provavelmente isso vai acontecer também com o Banco 643 (Pine) pois a condição é a mesma do Sofisa só que nesse caso executa BancoPineBradesco ou BancoPine sugira então uma possível correção anexando a unit modificada e validaremos Juliomar Marchetti skype: juliomar telegram: juliomar e-mail: [email protected] http://www.juliomarmarchetti.com.br
Luiz Carlos Rodrigues Postado 25 Outubro, 2024 Autor Postado 25 Outubro, 2024 Até poderia fazer a mudança o problema é pelo que estou vendo tanto Sofisa Itaú quanto Sofisa Santander a posição da carteira é a mesma e pode vir os mesmos códigos, ou seja pode vir o número 112 por exemplo que tem no Sofisa Itaú quanto no Sofisa Santander, como saber qual executar ? Também não dá para pegar pelo Número do Banco na Câmara de Compensação porque vem vários códigos diferentes.
FabianoCunha Postado 7 Janeiro Postado 7 Janeiro Luiz Carlos, Bom dia! Também estou com esse dilema seu do banco Sofisa. Você conseguiu chegar em alguma solução? Estou pensando em criar no cadastro do banco no sistema um código para identificar se é Santander ou Itau e não utilizar a função de GetTipoCobranca. Assim quando o usuário for fazer a integração, ele escolhe qual banco ele deseja fazer a integração. Se puder compartilhar a sua solução, ficarei agradecido.
FabianoCunha Postado 7 Janeiro Postado 7 Janeiro Em 25/10/2024 at 15:55, Juliomar Marchetti disse: sugira então uma possível correção anexando a unit modificada e validaremos Juliomar, bom dia! Minha sugestão para evitar exception, seria trocar o StrToInt pelo StrToIntDef. na Unit ACBrBoleto, linhas 3898 e 3904. Outra sugestão é colocar o Default na assinatura do Método GetTipoCobranca, ao invés de "Espaço em Banco", colocar "Zero"; function TACBrBoleto.GetTipoCobranca(NumeroBanco: Integer; Carteira: String = ''): TACBrTipoCobranca; //Atualmente esta assim function TACBrBoleto.GetTipoCobranca(NumeroBanco: Integer; Carteira: String = '0'): TACBrTipoCobranca; // Após a sugestão
Luiz Carlos Rodrigues Postado 7 Janeiro Autor Postado 7 Janeiro 31 minutos atrás, FabianoCunha disse: Luiz Carlos, Bom dia! Também estou com esse dilema seu do banco Sofisa. Você conseguiu chegar em alguma solução? Estou pensando em criar no cadastro do banco no sistema um código para identificar se é Santander ou Itau e não utilizar a função de GetTipoCobranca. Assim quando o usuário for fazer a integração, ele escolhe qual banco ele deseja fazer a integração. Se puder compartilhar a sua solução, ficarei agradecido. Bom dia. Por enquanto eu apenas alterei a unit ACBrBoleto assumindo Santander já que o meu cliente nesse caso recebe os retornos bancários Sofisa/Santander, ou seja o problema ainda não foi resolvido porque se algum dia ele passar a receber Sofisa/Itau já não funcionaria. Como o meu cliente recebe os arquivos bancários de terceiros para inserir no sistema não tem como colocar uma condição para saber se é Sofisa/Santander ou Sofisa/Itau 1
Recommended Posts
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 contaEntrar
Já tem uma conta? Faça o login.
Entrar Agora