Ir para conteúdo
  • Cadastre-se

denerbuzato

Membros
  • Total de ítens

    152
  • Registro em

  • Última visita

  • Days Won

    4

Tudo que denerbuzato postou

  1. Bom dia! Você pode criar um campo em sua tabela "cont_remessa_bancotal" por exemplo, e durante o dia inicializa com 0. Quando for gerar a remessa incrementa essa campo e passa o valor dele para o componente. No caso terá o valor de 1. ACBrBoleto1.GerarRemessa( SeqRemessa ); A cada remessa o valor será incrementado durante aquele dia. No dia seguinte você volta o contador para 0 e ao gerar as remessas entrará no processo novamente.
  2. Alguém tem alguma sugestão de como resolver o problema apresentado?
  3. Bom dia Juliana, Poderia por favor disponibilizar as alterações no svn? Obrigado.
  4. Bom dia Juliana, Poderia por favor disponibilizar as alterações no svn? Obrigado.
  5. Boa tarde a todos, Espero que as minhas alterações sejam disponibilizadas no SVN, pois recebi o seguinte e-mail do banco: Hoje pela manhã (sex 20/11/2015 10:09): Agora a tarde (sex 20/11/2015 12:40): Sendo assim, a cobrança foi homologada pelo banco. Sendo necessário os ajustes proposto no post. Estou no aguardo. Obrigado.
  6. Boa tarde, Funcionou com a sugestão oferecida, apesar de não concordar em ter que recalcular o digito uma vez que ele já faz parte do nosso numero e o manual contempla ele, mas irei utilizar desta maneira para evitar ficar com o componente desatualizado. Obrigado pela atenção.
  7. Prezados, Estou homologando a cobrança bancária do banco HSBC, porém, foi rejeitado tanto o boleto quanto o arquivo remessa CNAB 400. Resposta do Banco sobre o arquivo remessa: Segue algumas considerações sobre como resolver alguns dos problemas que observei. Pelo visto essa informação deveria constar tanto a agencia quanto a conta para que dê os 11 dígitos conforme diz o manual. No meu caso a agencia sendo 1256 e a conta 00775-17, deveria constar 12560077517. Liguei para o suporte do HSBC no telefone 31-3503-5342 e falei com Sr. Rodrigo G. Rodrigues o qual está acompanhando o processo de homologação e esclareci com ele o seguinte: A conta do HSBC é de 7 números, porém, será sempre 5 + 2, sendo os 5 primeiros da conta e 2 do dígito. Isso é padrão do HSBC no mundo todo. Assim sendo, observei que alguns pontos da unit “ACBrBancoHSBC” não estão trazendo os dados da conta corretos, pois como ele atribui 7 para conta, o numero da conta sem o digito que é 00775, e a conta fica 0000775. Dessa maneira, nos locais que ele junta conta + digito para resultar em 7, ele não faz pois a conta já está com 7 digitos. Exemplo: wConta := PadLeft( OnlyNumber(Conta) + ContaDigito, 7, '0'); Neste caso a conta já está com 7 digitos e não acrescenta o digito da conta, fazendo com que fique errado o valor final da variável. Fica com valor 0000775 sendo que o correto seria 00775 para que ao somar com o digito fique 0077517. Vamos as modificações: No “create” do “ACBrBancoHSBC”, na linha 119, a conta está sendo fixada com tamanho de 7. fpTamanhoConta := 7; Sugiro que seja alterado para: fpTamanhoConta := 5; Na procedure “GerarRegistroHeader400” na linha 265 consta o seguinte: wConta + // Conta Corrente //Removi agencia repetido //ALFEU MOTA // Sugiro a alteração para: wAgencia + wConta + // Conta Corrente (Agência + Conta Corrente) Visto que no manual é tratado agencia e conta junto totalizando 11 digitos. Também na linha 356 onde consta PadLeft(OnlyNumber(Cedente.Agencia) + OnlyNumber(Cedente.Conta)+Cedente.ContaDigito, 11, '0') + Deverá ser alterado para: PadLeft(OnlyNumber(Cedente.Agencia) + OnlyNumber(Cedente.Conta)+Cedente.ContaDigito, 11, '0') + //Conta Corrente (Agência + Conta Corrente) Visto que no manual é tratado agencia e conta junto totalizando 11 digitos. Obs: Lembrando que para as variáveis ficarem corretas, o tamanho da conta tem que ficar 5. Resposta do Banco sobre o boleto: Minhas Considerações: Observei no fonte “ACBrBancoHSBC.pas” na function “MontarCodigoBarras” na linha 224 consta o seguinte: PadLeft(IfThen(ACBrBoleto.Cedente.Conta[1] = '0', RightStr(OnlyNumber(ACBrBoleto.Cedente.Conta),6) + Observem que a conta está ficando com 6 digitos, sendo que o correto seria 7. Como iremos setar a conta para 5 digitos, o copy deverá ser de 5 para que ao somar com o digito resulte em 7. Sugiro a alteração para: PadLeft(IfThen(ACBrBoleto.Cedente.Conta[1] = '0', RightStr(OnlyNumber(ACBrBoleto.Cedente.Conta),5) + Fiz essa alterações no componente e enviei para o banco para novos testes. Obs.: Embora o desenvolvimento do arquivo retorno irei fazer após a homologação da cobrança, resolvi fazer uma conferencia entre o código fonte e o manual, onde observei alguns pontos a ajustar, sendo eles. Na procedure "LerRetorno400" é atribuído os seguintes valores para as variáveis: rCodigoCedente := Copy(ARetorno[0], 109, 10); rConta := trim(Copy(ARetorno[0], 38, 6)); rDigitoConta := Copy(ARetorno[0], 44, 1); No manual na página 16, observei que na posição 109 com tamanho de 11 contém a seguinte informação "Uso do Banco", então embora não tenha um arquivo retorno, o copy está errado. Ajustei para o seguinte: rCodigoCedente := Copy(ARetorno[0], 109, 11); rConta := trim(Copy(ARetorno[0], 38, 5)); rDigitoConta := Copy(ARetorno[0], 43, 2); Segue manual e unit alterada para disponibilizar. Grato. cob400_jan.pdf Codigo Barras COB.pdf ACBrBancoHSBC.pas
  8. Boa tarde, Tentei fazer exatamente isso, porém, não consigo chamar a função. Segue um pedaço do meu código para ver se consegue me dizer como usar if Open.Execute then begin //Configurar banco ConfiguraComponenteAcBr; // ACBrBoleto1.NomeArqRetorno := ExtractFileName(Open.FileName); ACBrBoleto1.DirArqRetorno := ExtractFilePath(Open.FileName); ACBrBoleto1.LerRetorno; for i := 0 to ACBrBoleto1.ListadeBoletos.Count-1 do begin if ACBrBoleto1.ListadeBoletos.Objects.ValorRecebido > 0 then begin // Grava a baixa da conta - recebimentos try ... aqui tem um sql para localizar qual conta baixar com o filtro, que é o ponto que estou com problema... qryCRBLanc.Parameters.ParamByName('NossoNumero').Value := StrToInt(ACBrBoleto1.ListadeBoletos.Objects.NossoNumero); ... caso ele encontre o registro ele processa as baixas mais abaixo. Obs.: Esse digito que você me ajudará a calcular vou usar concatenando com o nosso numero para localizar o lançamento. Grato
  9. Bom dia Juliana, Obrigado pelo retorno. Realmente sabia que poderia afetar outros usuários, tanto que no início do post dei duas opções para desenvolvimento. Só que a criação do dígito no "ACBrBoleto" atenderia apenas o SICOOB, e pensei que seria mais fácil retirar o dígito do nosso numero (já que ele viria com 8) para quem usa com ele com 7, do que não ter ele para o caso de quem precisa. É melhor ter do que não ter. Pois tendo pode ser tratado para retirar, agora não tendo não tem como fazer nada. Observe que quem usa assim, está usando errado, pois não está de acordo com o manual. Como no boleto e remessa estão contemplando o dígito, logo o retorno também deveria contemplar. A sua sugestão para calcular o digito me chamou atenção, porém não consegui usar ela. Poderia me dar um exemplo de como usar? Já que pelo visto o retorno continuará em desacordo com o manual. Obs.: Fiz a atualização do componente hoje pela manhã "revisão 10489" e fiz novamente o ajuste do copy como estou usando. Grato. ACBrBancoBancoob.pas
  10. Bom dia, Estou tentando abrir um post novo, porém, gostaria de anexar dois arquivos ".pdf". Um arquivo tem 655kb e outro 443kb dando um total de 1098kb. Compactando os dois consigo chegar a 1034kb. Não queria abrir dois tópicos, um para cada arquivo, mas sim anexar os dois no mesmo tópico. Talvez a solução seria aumentar a permissão para o tamanho total do arquivo a ser anexado. Minha conta esta limitada a 1MB, porém, no geral estou usando 1MB dos 5MB que posso usar. Verifiquei isso em: "Meus Anexos" onde diz que uso 22% Observação: Neste post, iria anexar três telas, nas quais estava demonstrando os itens citados. Essas imagens são de 52KB, 36BK e 17KB, dando um total de 105KB, ou seja, bem menor que 1MB e apresenta a mesma mensagem: "Você só tem permissão para fazer o uploade de 1024kb." Como proceder neste caso? Desde já obrigado.
  11. Boa tarde Juliana, Pela manhã postei alguns itens que observei inconsistência no Banestes. Revolvi fazer mais testes e conferir os dados ente manual com os fontes onde encontrei mais ajustes a serem realizados. Segue considerações como sequência do post anterior. 4 - GerarRegistroHeader400 Nesta procedure observei que a Conta está copiando a partir 2º posição, sendo que o correto seria da 1º. O Banestes não possui digito na conta, sendo assim, pode-se retirar o digito da conta, pois ele sempre ficará vazio. Código atual: PadLeft(OnlyNumber(Copy(Trim(Conta),2,10)+trim(ContaDigito)), 11, '0')+ // Código da Empresa no Banco Como deveria ficar: PadLeft(OnlyNumber(Copy(Trim(Conta),1,11)), 11, '0')+ // Conta Corrente Alterações em comentários no código: No local onde passa "IntToStrzero(Numero,3)" incluído comentário para identificar que se trata do código do banco "021" e no local onde está "PadRight('BANESTES', 8)" com o comentário "Código e Nome do Banco(237 - Bradesco)" alterado comentário para "Nome do Banco (Banestes)" Obs.: Manual página 07 5 - GerarRegistroTransacao400 Nesta procedure observei que a Conta está copiando a partir 2º posição, sendo que o correto seria da 1º. O Banestes não possui digito na conta, sendo assim, pode-se retirar o digito da conta, pois ele sempre ficará vazio. Código atual: PadLeft(OnlyNumber(Copy(Trim(Cedente.Conta),2,10)+trim(cedente.ContaDigito)), 11, '0')+ // Codigo da Empresa no Banco Como deveria ficar: PadLeft(OnlyNumber(Copy(Trim(Cedente.Conta),1,11)), 11, '0')+ // Conta Corrente Obs.: Manual página 08 6 - LerRetorno400 Nesta procedure foram observados variáveis desnecessárias e copy de posições erradas. Removido a variável “rDigitoConta” e uso dela “rDigitoConta := Copy(ARetorno[0],38,1);” pois o Banestes não utiliza digito de conta. Removido a variável “rAgencia” e uso dela “rAgencia := trim(Copy(ARetorno[0],27,4));” pois no caso do arquivo retorno não consta no layout a agencia do cedente. A única agencia que vem mencionada no layout é a agencia onde foi recebido o titulo, porém, essa agencia não seria necessário usar. Ajustado copy da conta corrente. Código atual: rConta := trim(Copy(ARetorno[0],33,5)); Como deveria ficar: rConta := trim(Copy(ARetorno[0],27,11)); Removido códigos: “Cedente.AgenciaDigito:= '0';” / “Cedente.Agencia := rAgencia;” / “Cedente.ContaDigito:= rDigitoConta;” pois não está sendo necessário no arquivo retorno. Retirado comparação de "(rAgencia <> OnlyNumber(Cedente.Agencia)" pois não mais está usando a agencia no retorno. Uma informação que não consegui ajustar foi o "Código Lançamento (Aviso de Movimentação)" que no manual diz que está na posição 83 com 2 posições. Observei que no fonte a propriedade "Carteira" está sendo atribuída com sendo este aviso de movimentação. Mas logo abaixo no código a mesa "Carteira" está sendo atribuída com a informação correta. 1 Vez: Carteira := copy(Linha,83,3); 2 Vez Carteira := Copy(Linha,108,1); Removido a primeira citação da carteira "Carteira := copy(Linha,83,3);" Não sei qual propriedade deveria ser usada para armazenar o "Código Lançamento (Aviso de Movimentação)" para fazer o copy correto desta posição. "Copy(Linha,83,2);". Por enquanto este item não foi implementado. Obs.: Manual página 13 e 14 Segue a unit modificada com essas novas informações. Grato. ACBrBancoBanestes.pas
  12. Bom dia! Como não tive sugestões quanto a solução para o problema apresentado, resolvi por uma solução mais simples. Resolvi usar a sugestão 1, ajustar o copy do nosso numero. Assim, não precisaremos alterar o ACBrBoleto. Código atual: NossoNumero := copy( Copy(Linha,63,11),Length( Copy(Linha,63,11) )-TamanhoMaximoNossoNum+1 ,TamanhoMaximoNossoNum); Como deveria ficar: NossoNumero := copy( Copy(Linha,63,12),Length( Copy(Linha,63,12) )-TamanhoMaximoNossoNum+1 ,TamanhoMaximoNossoNum); Segue a unit modificada para atualização no SVN. Grato. ACBrBancoBancoob.pas
  13. Bom dia Juliana, Após atualizar o componente agora pela manhã, “revisão 10475”, para fazer uso da propriedade “modalidade” na composição da chave ASBACE, observei que ocorreram diferenças nos cálculos. Também os arquivos de remessa e retorno apresentaram problemas. Após localizar o problema, resolvi consultar o manual para saber quem estava correto. Segue minhas considerações: 1 - CalcularCampoASBACE Nesta função, observei que o nosso numero está copiando a partir 2º posição, sendo que o correto seria da 1º. Também no numero da conta corrente está sendo copiadas apenas 10 posições, a parir da 2º posição, sendo que o correto seria 11 a partir da 1º. O Banestes não possui digito na conta, sendo assim, pode-se retirar o digito da conta, pois ele sempre ficará vazio. Obs.: Manual página 27 Código atual: cLivreAsbace := copy(ACBrTitulo.NossoNumero,2,8) + copy(trim(ACBrTitulo.ACBrBoleto.Cedente.Conta), 2, 10) + ACBrtitulo.ACBrBoleto.Cedente.ContaDigito + IfThen(ACBrtitulo.ACBrBoleto.Cedente.Modalidade = '', '4', ACBrtitulo.ACBrBoleto.Cedente.Modalidade) + IntToStrZero(fpNumero,3); Como deveria ficar: cLivreAsbace := copy(ACBrTitulo.NossoNumero,1,8) + copy(trim(ACBrTitulo.ACBrBoleto.Cedente.Conta), 1, 11) + IfThen(ACBrtitulo.ACBrBoleto.Cedente.Modalidade = '', '4', ACBrtitulo.ACBrBoleto.Cedente.Modalidade) + IntToStrZero(fpNumero,3); 2 - GerarRegistroTransacao400 Nesta procedure observei que o nosso numero está copiando a partir 2º posição, sendo que o correto seria da 1º. Obs.: Manual página 08 Código atual: PadRight(Copy(NossoNumero, 2, 8) + DigitoNossoNumero, 10, '0') + Como deveria ficar: PadRight(Copy(NossoNumero, 1, 8) + DigitoNossoNumero, 10, '0') + 3 - LerRetorno400 Nesta procedure observei que o nosso numero está copiando a partir 64º posição e 9 posições, sendo que o correto seria da 63º e 10 posições. Obs.: Manual página 14 Código atual: NossoNumero := Copy(Linha,64,9); Como deveria ficar: NossoNumero := Copy(Linha,63,10); Segue a unit modificada para atualização no SVN. Grato. layout_cobrança_cnab400.pdf ACBrBancoBanestes.pas
  14. Boa tarde, Alguém tem alguma sugestão para a solução deste problema?
  15. Prezados, Estou desenvolvendo uma rotina de baixa do arquivo retorno para o banco SICOOB. O boleto e o arquivo remessa já foram homologados pelo banco e meu cliente já está utilizando. Agora que ele recebeu um arquivo de retorno onde irei programar esta rotina. Observei que o nosso numero para o SICOOB é 7. Ele calcula o digito e no final fica com 8. Meu sistema grava o nosso numero completo no banco de dados, ou seja, os 8 dígitos. A composição do código de barras, está sendo composta por 8 dígitos. {Montando Campo Livre} CampoLivre := PadLeft(trim(ACBrTitulo.ACBrBoleto.Cedente.Modalidade), 2, '0') + PadLeft(trim(ACBrTitulo.ACBrBoleto.Cedente.CodigoCedente), 7, '0') + PadLeft(Copy(ANossoNumero,1,8), 8, '0') + //7 Sequenciais + 1 do digito IntToStrZero(Max(1,ACBrTitulo.Parcela),3); Se analisarmos os layouts tanto do arquivo remessa, quanto do arquivo retorno, observaremos que o nosso numero começa na posição 63 e termina na posição 74 com o digito. Na geração do arquivo remessa, está sendo levado os 8 dígitos. PadLeft( NossoNumero + DigitoNossoNumero, 12, '0') + // Nosso Número + //nosso numero com digito Já no arquivo retorno, ele não está considerando o digito, ou seja, apenas os 7 dígitos. NossoNumero := copy( Copy(Linha,63,11),Length( Copy(Linha,63,11) )-TamanhoMaximoNossoNum+1 ,TamanhoMaximoNossoNum); Desse jeito, meu sistema não consegue localizar o nosso numero no banco de dados e não consegue realizar a baixa. Para resolver isso, poderíamos usar o copy de 12, para contemplar o digito NossoNumero := copy( Copy(Linha,63,12),Length( Copy(Linha,63,12) )-TamanhoMaximoNossoNum+1 ,TamanhoMaximoNossoNum); Ou criar uma propriedade para o digito “DigitoNossoNumero”para que eu possa concatenar no momento de localizar. Na remessa existe essa propriedade, já no retorno não. Se tiver essa propriedade, usaríamos assim: DigitoNossoNumero:= copy( Copy(Linha,74,1); Só que para incluir o “DigitoNossoNumero” teria que alterar o “ACBrBoleto” já a alteração do copy não precisaria, seria apenas no “ACBrBancoBancoob” O que acham? Alguém tem alguma sugestão? Rotina “LerRetorno400” da unit “ACBrBancoBancoob” Boleto - SICOOB Ag3008-2 Conta00078942-9.pdf REMESSA05A09-1 - TESTE.TXT RETORNO05A09-1 - TESTE.ret
  16. Bom dia Weber, Acredito que os valores a serem usados seriam esses: ACBrBoleto1.Cedente.Agencia := 3031 ACBrBoleto1.Cedente.AgenciaDigito := 7 ACBrBoleto1.Cedente.Conta := 23449 ACBrBoleto1.Cedente.ContaDigito := 4 ACBrBoleto1.Cedente.CodigoCedente := 190926 Obs.: No seu caso o problema acredito estar no digito da agencia e o codigo do cedente faltou um digito. Seguindo os dados da planilha que você postou acima.
  17. Boa tarde Juliana, Vou usar a propriedade "modalidade" como sugeriu, porém, foi necessário ajustar a unit do banestes "ACBrBancoBanestes" para usar essa propriedade, pois antes estava com valor "4" fixo e agora terá que usar o valor da modalidade. Fiz a alteração e segue a unit em anexo para inclusão no SVN. Grato. ACBrBancoBanestes.pas
  18. Boa tarde Carlos, Que bom que atendeu sua necessidade. Agora vamos aguardar os moderadores subirem no SVN.
  19. Boa tarde João de Carlos, Qual é sua dúvida e/ou necessidade?
  20. Bom dia Juliana, Observei a propriedade que você pediu, porém não entendi que ela funcione para o fim do assunto do post, pois ela não permite usar variações de códigos para cobrança registrada, como é o assunto em questão. Observe como é essa propriedade: TACBrCaracTitulo = (tcSimples,tcVinculada,tcCaucionada,tcDescontada,tcVendor); Se eu estiver enganado, favor me dizer então como usar essa propriedade para cobrança com registro no código 6. Caso eu esteja certo, favor analisar a solução proposta pois depois que implementei consegui ter os resultados que necessitava. O problema é que quando atualizar o componente, terei que sempre ficar alterando. Por isso se fosse possível subir seria muito bom. Obrigado.
  21. Prezados, Como não obtive resposta no post, resolvi fazer a implementação necessária para atender essa necessidade. Na unit “ACBrBoleto” criei “TipoRegCob” e na unit “ACBrBancoBanestes” na function CalcularCampoASBACE passo o “TipoRegCob” no lugar onde estava fixo o valor "4" fixo, onde ele poderá ter os valores 2, 3, 4, 5, 6 ou 7 de acordo como for alimentado. Ficou assim: ACBrBoleto TACBrTipoRegCob = (SemRegitro=2, Caucionada=3, ComRegistroTp4=4, ComRegistroTp5=5,ComRegistroTp6=6,ComRegistroTp7=7); ACBrBancoBanestes cLivreAsbace := copy(ACBrTitulo.NossoNumero,1,8)+ copy(trim(ACBrTitulo.ACBrBoleto.Cedente.Conta), 1, 11)+ ACBrtitulo.ACBrBoleto.Cedente.ContaDigito+ VarToStr(ACBrtitulo.ACBrBoleto.Cedente.TipoRegCob)+ IntToStrZero(fpNumero,3); No meu caso estou usando assim: case AnsiIndexStr(qryBanco.FieldByName('TIPO_REG_COB').AsString,['2','3','4','5','6','7']) of 0: ACBrBoleto1.Cedente.TipoRegCob := SemRegitro; 1: ACBrBoleto1.Cedente.TipoRegCob := Caucionada; 2: ACBrBoleto1.Cedente.TipoRegCob := ComRegistroTp4; 3: ACBrBoleto1.Cedente.TipoRegCob := ComRegistroTp5; 4: ACBrBoleto1.Cedente.TipoRegCob := ComRegistroTp6; 5: ACBrBoleto1.Cedente.TipoRegCob := ComRegistroTp7; -1: ACBrBoleto1.Cedente.TipoRegCob := SemRegitro; End; Sendo assim, na composição da Chave Asbase o valor estará de acordo como for alimentado. Caso queiram subir para o SVN para que outros possam usar, está em anexo as units Abraço a todos! ACBrBoleto.pas ACBrBancoBanestes.pas ACBrBancoBanestes.pas
  22. Prezados, Alguém saberia me dizer se já foi solucionado o problema da function "CalcularCampoASBACE" no "ACBrBancoBanestes" onde o componente passa o valor "4" na posição registro sendo que este valor pode mudar de acordo com a tipo de cobrança. Estou olhando o manual do banestes e na página 24 diz assim: No BANESTES a Chave ASBACE. NNNNNNNNCCCCCCCCCCCR021DD Onde: NNNNNNNN --------------------------------- > Nosso Número (sem os dois dígitos). CCCCCCCCCCC -------------------------- > Conta Corrente. R > 2- Sem registro; 3- Caucionada; 4,5,6 e 7-Cobrança com registro. 021 --------------------------------------------- > Código do BANESTES . DD ---------------------------------------------- > Dígitos Verificadores. Isso quer dizer que o campo registro pode variar entre 2, 3, 4, 5, 6 e 7 e atualmente o componente passa 4 fixo. Como em Janeiro deste ano foi levantado esta questão, gostaria de saber se alguém já solucionou e talvez não tenham disponibilizado para subir no svn, pois estou como o componente atualizado e ainda continua com os valor 4 fixo, não possibilitando passar o tipo de cobrança desejada. Desde já obrigado. CNAB400-B.DOC
  23. Excelente a iniciativa e resultado da implementação. Obrigado a todos!
  24. Resolvido com as soluções apresentadas. Obrigado a todos!
  25. Boa tarde Carlos, Bem vinda sua sugestão. Também senti essa necessidade. Pois tanto a quantidade como o valor unitário terão a formatação de casas decimais somente quando necessário. Sua implementação deu este bom resultado como os anexos. Antes Depois Ficou mais limpo a leitura dos valores de quantidade e valor unitário
×
×
  • 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.