Pesquisar na Comunidade
Showing results for tags 'HSBC'.
Encontrado 8 registros
-
Bom dia! Estou no processo de homologação da carteira Com Registro do HSBC em um cliente, e encontrei um problema ao ler o arquivo de retorno no padrão CNAB400. A mensagem original era "Cedente do arquivo inválido. Informado = '11251477284' Esperado = '' ". Trecho do código da leitura do cedente: rCodigoCedente := Copy(ARetorno[0], 109, 11); Mas, no manual do banco da cobrança registrada, este campo é reservado ao banco. Fiz uma alteração no código, de acordo com o manual do site do banco, prevendo ainda o caso da carteira sem registro: if Trim(Copy(ARetorno[0], 12, 15)) = 'COBRANCA' Then rCodigoCedente := Copy(ARetorno[0], 34, 11) else rCodigoCedente := Copy(ARetorno[0], 109, 11); Além disso, precisei alterar o código onde os campos são comparados, pois era realizada uma conversão de string para inteiro estourando o valor máximo permitido para este tipo de dado: DE: if not(LeCedenteRetorno) and (StrToIntDef(rCodigoCedente, -1) <> StrToIntDef(OnlyNumber(Cedente.CodigoCedente), 0)) then raise Exception.Create(ACBrStr('Cedente do arquivo inválido' + #13 + #13 + 'Informado = ' + OnlyNumber(Cedente.CodigoCedente) + #13 + 'Esperado = '+ rCodigoCedente)); PARA: if Trim(Copy(ARetorno[0], 12, 15)) = 'COBRANCA CNR' Then if not(LeCedenteRetorno) and (StrToIntDef(rCodigoCedente, -1) <> StrToIntDef(OnlyNumber(Cedente.CodigoCedente), 0)) then raise Exception.Create(ACBrStr('Cedente do arquivo inválido' + #13 + #13 + 'Informado = ' + OnlyNumber(Cedente.CodigoCedente) + #13 + 'Esperado = '+ rCodigoCedente)) else if not(LeCedenteRetorno) and (rCodigoCedente <> OnlyNumber(Cedente.CodigoCedente)) then raise Exception.Create(ACBrStr('Cedente do arquivo inválido' + #13 + #13 + 'Informado = ' + OnlyNumber(Cedente.CodigoCedente) + #13 + 'Esperado = '+ rCodigoCedente)); Em anexo a unit alterada para análise e aprovação. Abaixo o link com o manual do banco. https://www.hsbc.com.br/1/PA_esf-ca-app-content/content/hbbr-pws-gip16/portugues/business/comum/pdf/cob400_jan.pdf Obrigada! ACBrBancoHSBC.pas
-
Boa Tarde! Um cliente me chamou hoje com problemas na transmissão do arquivo de remessa do HSBC, analisando o código vi uma alteração na unit ACBrBancoHSBC: 355 //"Valor do Abatimento" - Valor do abatimento concedido somente quando o código de ocorrência for igual a “04” ou “05” / "Multa" - Quando utilizar as instruções 15,16,19,22,24,29,73 e 74. 356 if ((Ocorrencia = '04') or (Ocorrencia = '05')) and (ValorAbatimento > 0) then 357 AbatimentoMulta := IntToStrZero( round( ValorAbatimento * 100 ), 13) // valor do abatimento 358 else if ((Trim(Instrucao1) = '15') or (Trim(Instrucao1) = '16')) and (PercentualMulta > 0) then 359 AbatimentoMulta := FormatDateTime( 'ddmmyy', DataMoraJuros) + IntToStrZero( round( PercentualMulta * 100 ), 4) + ' ' // Multa 360 else if (Trim(Instrucao1) = '22') and (PercentualMulta > 0) then 361 AbatimentoMulta := IntToStrZero( round( (ValorDocumento *(PercentualMulta/100)) * 100 ), 10) + IntToStrZero(DaysBetween(Vencimento, DataMoraJuros),3) // Multa 362 else if (Trim(Instrucao1) = '24') and (PercentualMulta > 0) then 363 AbatimentoMulta := IntToStrZero( round( (ValorDocumento *(PercentualMulta/100)) * 100 ), 10) + '000' // Multa 364 else if ((Trim(Instrucao1) = '73') or (Trim(Instrucao1) = '74')) and (PercentualMulta > 0) then 365 AbatimentoMulta := ' ' + IntToStrZero( round( PercentualMulta * 100 ), 4) + IntToStrZero(DaysBetween(Vencimento, DataMoraJuros),3) // Multa 366 else 367 AbatimentoMulta := IntToStrZero(0,4); O problema ocorre quando não entra em nenhuma das condições previstas, quando cai na linha 367 o "AbatimentoMulta" fica com valor '0000' e pelo layout esse campo tem tamanho 13, gerando a remessa dessa forma os registros de detalhe na remessa ficam com apenas 391 posições dando erro ao transmitir o arquivo. Sugiro alterar a linha 367 pra variavel ficar com 13 posicoes deixando assim: AbatimentoMulta := IntToStrZero(0,13); Aguardo uma posição a respeito, desde já agradeço.
-
Remessa Banco HSBC - Composição campo Conta Corrente
um tópico no fórum postou Valdemir Jacon Sanches Boleto
Boa Tarde! Comparando o arquivo de remessa gerado pelo componente com o gerado pelo sistema do banco observei uma divergência na composição da conta corrente do cliente: Posições 34 a 44 Registro Header / Posições 25 a 35 Registro Detalhe. De acordo com o layout padrao CNAB 400 nota explicativa 1: NOTA CAMPO CONTEÚDO / SIGNIFICADO 1 CONTA CORRENTE É composto pelo código da agência onde o Cliente / Beneficiário mantém conta corrente, e pelo respectivo número. Exemplo: Agência 4321; Conta 56789-00 Campo Conta Corrente então será: 43215678900 O componente monta somente com a conta e o DV: ACBrBancoHSBC linha 259: padR(OnlyNumber(Conta)+ContaDigito, 11, '0') + // Conta Corrente //Removi agencia repetido //ALFEU MOTA // Obs: A nota explicativa pode ser conferida no layout do banco que vou deixar em anexo na página 19. Obrigado a todos e qualquer dúvida estarei a disposição. multi400.pdf -
Boa tarde, Precisei incluir o tratamento para as ocorrências 31 e 38 na unit do HSBC. 31-Liquidação normal em Cheque/Compensação/Banco Correspondente 38-Liquidação de título não registrado - em dinheiro Segue em anexo para análise e, se possível, inclusão ao SVN. ACBrBancoHSBC.pas
- 2 replies
-
- 1
-
- ocorrência
- hsbc
-
(e 1 mais)
Tags:
-
Bom Dia! Notei o que pode ser um erro na rotina de retorno do banco HSBC: na linha 583 da unit "ACBrBancoHSBC.pas" tem um copy para pegar o nosso número: NossoNumero := Copy(Linha, 63, 16); O problema é que para a carteira "CNR" o tamanho máximo do nosso número é 13, assim quando da o copy passa para o "SetNossoNumerro" da unit "ACBrBoleto" uma string de tamanho 16, caindo no exception da linha 1043 por ter o tamanho maior que o permitido: raise Exception.Create( ACBrStr('Tamanho Máximo do Nosso Número é: '+ IntToStr(wTamNossoNumero) )); Para solucionar para o cliente tenho alterado o copy para: NossoNumero := Copy(Linha, 63, 13); Deem uma olhadinha por favor. Desde já agradeço.
-
Olá pessoas. Há alguma implementação disponivel do CNAB 240 do Banco HSBC disponivel para o componente? Atualmente só exite a implementação da CNAB400 (Remessa e Retorno); Grato.
-
Olá a todos. Para a cobrança não registrada (CNR) do banco HSBC, está havendo um pequeno problema quanto à posição do campo Nosso Número dentro da linha digitável. Onde segundo o modelo da ficha de cobrança o Nosso Número deveria estar entre as posições (13-20) e (22-26), totalizando assim 13 posições. Mas na Unit do HSBC o tamanho máximo do Nosso Número está como 16, assim sendo o campo acaba sendo preenchido com "zeros" a esquerda até completar as 16 posições e no momento de monta o código de barras ele copia as 13 primeiras posições. Dessa forma quando o cliente visualiza a francesinha(Demonstrativo Analítico) no site praticamente todos os boletos estarão com o mesmo valor para a coluna "Código do documento" que corresponde ao Nosso Número, visto que ao copiar as 13 primeiras posições foi perdido a unidade, a dezena e a centena do campo Nosso Número. O que fiz em minha base foi limitar o tamanho máximo do nosso número para 13, assim sendo não perco mais as 3 ultimas posições no momento de montar a linha digitável. Gostaria de solicitar a correção no projeto principal. Anexo segue a francesinha com o problema e um modelo do CNR.
- 8 replies
-
- ACBRBoleto
- HSBC
-
(e 3 mais)
Tags:
-
O componente acho que esta gerando errado o registro Header o campo Conta Corrente Número da conta Corrente do Cliente Posicao 034 a 044. De acordo com o layout que o banco me enviou esta assim LAYOUT PADRÃO CNAB 400 TABELA DE NOTAS EXPLICATIVAS É composto pelo código da agência onde o Cliente mantém conta corrente, e pelo respectivo número da conta utilizada para a Cobrança. Exemplo: Agência 4321; Conta 56789-00 Campo Conta Corrente então será: 43215678900 E no fonte do componente esta (ACBrBancoHSBC.pas ) linha 257 padR(OnlyNumber(Conta)+ContaDigito, 11, '0') + // Conta Corrente //Removi agencia repetido //ALFEU MOTA // Esta pegando a conta + a conta digito , e acho que o correto seria Agencia+Conta