Ir para conteúdo
  • Cadastre-se

neto

Membros
  • Total de ítens

    8
  • Registro em

  • Última visita

Tudo que neto postou

  1. Jaime, Fiz a alteração aqui e também funcionou 100%, Valeu!
  2. Opa, mesma dificuldade por aqui vou tentar isso agora..
  3. Fiz algumas alterações mais profundas, seguindo o que o Jaime apresentou: function TACBrBancoBrasil.FormataNossoNumero(const ACBrTitulo :TACBrTitulo): String; var ANossoNumero, AConvenio : string; aCarteira: LongInt; begin with ACBrTitulo do begin AConvenio := ACBrBoleto.Cedente.Convenio; ANossoNumero := OnlyNumber(NossoNumero); aCarteira := StrToIntDef(Carteira,0); // CCCCNNNNNNN-X if (Length(AConvenio) <= 4) and (fpTamanhoMaximoNossoNum = 7) then ANossoNumero := padR(AConvenio, 4, '0') + padR(ANossoNumero, 7, '0') // CCCCCCNNNNN-X else if (Length(AConvenio) > 4) and (Length(AConvenio) <= 6) and (fpTamanhoMaximoNossoNum = 5) then ANossoNumero := padR(AConvenio, 6, '0') + padR(ANossoNumero, 5, '0') // CCCCCCCNNNNNNNNNN else if (Length(AConvenio) = 7) and (fpTamanhoMaximoNossoNum = 10) then ANossoNumero := padR(AConvenio, 7, '0') + padR(ANossoNumero, 10, '0') // NNNNNNNNNNNNNNNNN else if (Length(AConvenio) > 4) and (Length(AConvenio) <= 6) and (fpTamanhoMaximoNossoNum = 17) and ((ACBrTitulo.Carteira = '16') or (ACBrTitulo.Carteira = '18')) then ANossoNumero := padR(ANossoNumero, 17, '0'); end; Result := ANossoNumero; end; Removi o 1° if que validava as carteiras, pois a única excessão que achei na documentação é quando o nosso número tem 17 posições (anexo 5), e ai o convênio deve ser 6 posições e as carteiras só 16 ou 18. Pros demais não achei nada de diferente.. A mesma coisa pro método MontarCodigoBarras(): function TACBrBancoBrasil.MontarCodigoBarras(const ACBrTitulo : TACBrTitulo): String; var CodigoBarras, FatorVencimento, DigitoCodBarras :String; a, ANossoNumero, AConvenio: string; begin AConvenio := ACBrTitulo.ACBrBoleto.Cedente.Convenio; ANossoNumero := FormataNossoNumero(ACBrTitulo); {Codigo de Barras} with ACBrTitulo.ACBrBoleto do begin FatorVencimento := CalcularFatorVencimento(ACBrTitulo.Vencimento); if ((ACBrTitulo.Carteira = '18') or (ACBrTitulo.Carteira = '16')) and (Length(AConvenio) = 6) and (fpTamanhoMaximoNossoNum = 17) then begin CodigoBarras := IntToStrZero(Banco.Numero, 3) + '9' + FatorVencimento + IntToStrZero(Round(ACBrTitulo.ValorDocumento * 100), 10) + AConvenio + ANossoNumero + '21'; end else begin CodigoBarras := IntToStrZero(Banco.Numero, 3) + '9' + FatorVencimento + IntToStrZero(Round(ACBrTitulo.ValorDocumento * 100), 10) + IfThen((Length(AConvenio) = 7), '000000', '') + ANossoNumero + IfThen((Length(AConvenio) < 7), padR(Cedente.Agencia, 4, '0'), '') + IfThen((Length(AConvenio) < 7), padR(Cedente.Conta, 8, '0'), '') + ACBrTitulo.Carteira; end; DigitoCodBarras := CalcularDigitoCodigoBarras(CodigoBarras); end; Result:= copy( CodigoBarras, 1, 4) + DigitoCodBarras + copy( CodigoBarras, 5, 44) ; end; Assim acho que cobre todas as opções.. testei aqui e agora estou tentando resolver o problema da conta do cedente, que mesmo estando setada para tamanho 5, é alterada para 10 (com zeros precedendo a conta) e no momento da geração do cód. de barras, ela sai errado. Um detalhe muito importante: como não conseguimos alterar o valor da propriedade TamanhoMaximoNossoNum, esse valor tem que ser definido dentro da classe ACBrBancoBrasil.pas... não precisa nem dizer que isso é tosco mas não sei como acertar essa questão da propriedade..
  4. Beleza Jaime!, É exatamente isso que entendi também, e nosso problema está no caso 2... Agora é só tentar achar a solução
  5. Olá!, estou tendo problemas com a geração do nosso número também. Estou usando a carteira 18 com 6 dígitos para convênio + 5 dígitos para sequencial. No nosso número, é apresentado só o sequencial precedido de zeros (totalizando 17 dígitos) sem os 6 dígitos do convênio; Pelo que entendi de um boleto gerado pelo sistema (e confirmei na pg. 8 da documentação no SVN), o nosso número no cód. de barras deveria ser: 5 dígitos do serial + 4 dígitos da agência + 8 dígitos da conta + 2 dígitos da carteira. Tentei alterar o AcbrBancoBrasil sem sucesso.. no método formataNossoNumero() forcei a geração do ANossoNumero com essa regra: ANossoNumero := padR(AConvenio, 6, '0') + padR(ANossoNumero, 5, '0') só que por algum motivo, o ANossoNumero vem com o sequencial precedido de zeros (totalizando 10 dígitos). Como a função pega os 5 primeiros (todos zeros), deu erro. Em seguida alterei o fpTamanhoMaximoNossoNum para 5; ai o NossoNumero foi gerado certo (no boleto), entretanto o código de barras ficou errado (não seguindo o modelo 5 + 4 + 8 + 2 descrito acima). No final alterei o método MontarCodigoBarras() forçando a geração do código de barras com as linhas: CodigoBarras := IntToStrZero(Banco.Numero, 3) + '9' + FatorVencimento + IntToStrZero(Round(ACBrTitulo.ValorDocumento * 100), 10) + IfThen((Length(AConvenio) = 7), '000000', '') + ANossoNumero + IfThen((Length(AConvenio) < 7), padR(Cedente.Agencia, 4, '0'), '') + IfThen((Length(AConvenio) < 7), padR(Cedente.Conta, 8, '0'), '') + ACBrTitulo.Carteira; e Quase deu certo.. o Cedente.Conta vem com 10 caracteres, ele corta os últimos valores (a conta em si) ficando com os zeros iniciais.. Não sei exatamente como funciona a geração dos boletos (comecei a estudar sobre isso a pouco tempo..). Minhas alterações nem se contam, pois com certeza quebrariam o funcionamento para outros tamanhos de convênios, etc.. mas espero que esses testes possam ajudar a achar a solução correta. Se descobrir mais alguma coisa posto por aqui... se alguém tiver alguma luz acerca da solução para este problema, agradeço. att,
  6. Já tentei corrigir e não consegui..ainda estou entendendo como tudo funciona. Se conseguir enviarei o código. Obrigado pelos esclarecimentos!
  7. Olá João, Sim removi várias vezes todos os componentes/ bpls além de reverter as alterações na árvore SVN do acbr (baixada aqui) seguido de um update. Alguma outra sugestão? Obrigado!
  8. Bom dia pessoal, Instalei e configurei todo o ACBr conforme as instruções do site; atualizei o RAVE para o 5.0.8 e consigo compilar o exemplo do ACBrNFe sem problemas. Porem ao tentar compilar o projeto ACBrNFeMonitor, ocorreram alguns erros no arquivo DoACBrNFeUnit.pas. Os erros referem-se a 'Undeclared Identifier' para os atributos: - vagao e balsa (linhas 1540 e 1541) referente ao Transp.Reboque.add; - qTotMes, qTotAnt, qTotGer (Linhas 1682~1684) referente ao cana.fordia.add; - vFor, vTotDed, vLiqFor (Linhas 1701~1703) referente ao cana.deduc.add; Vi no changelog que houveram alterações de cardinalidade no MANTIS (casos 860 e 863) que podem estar ligado a esse erro. Mas não tenho certeza... estou começando a trabalhar com o ACBr esta semana e ainda estou meio perdido, procurei no forum sobre este erro mas não achei nada que possa resolver. Alguém está com a mesma dificuldade? será um caso para reportar no MANTIS mesmo ou eu que estou fazendo algo errado? Obrigado! Neto.
×
×
  • 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.