Moderadores Juliomar Marchetti Postado Terça as 21:14 Moderadores Postado Terça as 21:14 tu tem alterações locais. acabei de atualizar e rodar o instalador após ler sua mensagem e não obtive erros. como digo se ficar mudando localmente vai começar uma hora que não vai conseguir mais atualizar. vá na pasta , lado direito, tortoisesvn e revert, marca tudo e exclui faz update e instalador de novo Juliomar Marchetti skype: juliomar telegram: juliomar e-mail: [email protected] http://www.juliomarmarchetti.com.br
Junior.Jaru Postado Quarta as 22:42 Postado Quarta as 22:42 Em 04/11/2024 at 14:22, VEXCOM Sistemas - Valtair disse: Consegui entender a situação do nosso amigo Leonardo e faz muito sentido a implementação dele Realmente, está correto o que o banco Sicoob informou, que nada muda (em partes) Partimos do principio que nos fontes atuais, o acbrBoleto sempre calcula o digito verificado do nosso numero. O que acontece é que quando é gerado CNAB 240, nós geramos o nosso numero, e o AcbrBoleto calcula o digito verificador do nosso numero, e enviamos para o sicoob através do arquivo CNAB, registra no banco e o processo está correto. Quando é por API, sobre o nosso numero há duas possibilidades 1) Nós informar o nosso numero + digito verificador, igualmente é feito no CNAB240, e que o boleto é registrado no Sicoob exatamente como é enviado. 2) Nós informar '' no campo nosso numero, neste cenário, após o registro no banco, o mesmo retorna o nosso numero, este é o cenário que eles implementaram, não há digito verificador para este caso, apenas o nosso numero, e neste caso não deve calcular o digito verificador, porque se calcular estará errado Fiz uma implementação, e fiz essa validação com boletos de alguns clientes (API e CNAB240) e agora ficou correto. criei a property fpGerarDV no TACBrBancoClass e essa modificação ao gerar o digito verificador function TACBrBancoSicoob.CalcularDigitoVerificador(const ACBrTitulo: TACBrTitulo ): String; var Num, Res :String; i, base, digito : Integer; const indice = '319731973197319731973'; begin Result := ''; if (not GerarDV) then Exit; Result := '0'; Num := PadLeft(ACBrTitulo.ACBrBoleto.Cedente.Agencia, 4, '0') + PadLeft(ACBrTitulo.ACBrBoleto.Cedente.CodigoCedente, 10, '0') + PadLeft(trim(ACBrTitulo.NossoNumero), 7, '0'); base := 0; for i := 1 to Length(Num) do base := base + ( StrToInt(copy(Num,i,1)) * StrToInt(copy(indice,i,1)) ); digito := 11-(( base )-( trunc(base/11) * 11)); //(Se o Resto for igual a 0 ou 1 então o DV é igual a 0) if (digito > 9) then digito := 0; Res := IntToStr(digito); Result := Res; { Para o cálculo do dígito verificador do nosso número, deverá ser utilizada a fórmula abaixo: Número da Cooperativa 9(4) – 3009 Código do Cliente 9(10) – cedente Nosso Número 9(7) – Iniciado contagem em 1 Constante para cálculo = 3197 a) Concatenar na seqüência completando com zero à esquerda. Ex.: Número da Cooperativa = 0001 Número do Cliente(cedente) = 1-9 Nosso Número = 21 000100000000190000021 b) Alinhar a constante com a seqüência repetindo de traz para frente. Ex.: 000100000000190000021 319731973197319731973 c) Multiplicar cada componente da seqüência com o seu correspondente da constante e somar os resultados. Ex.: 1*7 + 1*3 + 9*1 + 2*7 + 1*3 = 36 d) Calcular o Resto através do Módulo 11. Ex.: 36/11 = 3, resto = 3 e) O resto da divisão deverá ser subtraído de 11 achando assim o DV (Se o Resto for igual a 0 ou 1 então o DV é igual a 0). Ex.: 11 – 3 = 8, então Nosso Número + DV = 21-8 Memória de Cálculo Coop.(4)|Cliente(10) |Nosso Número(7) 3 0 0 9 0 0 0 0 1 3 6 3 5 2 5 9 3 1 1 5 1 3 1 9 7 3 1 9 7 3 1 9 7 3 1 9 7 3 1 9 7 3 9 0 0 63 0 0 0 0 3 3 54 21 15 2 45 63 9 1 9 35 3 = soma = 335 digito = 11-(( soma )-( resto inteiro (trunc) da divisao da soma por 11 * 11)) digito = 11-(( 335 )-(30*11)) digito = 6 } end; no meu caso isso resolveu para todos os cenários, controlo conforme a property no momento da geração, se é CNAB240 ou API ACBrBoleto.pas 266.36 kB · 0 downloads ACBrBancoSicoob.pas 82.96 kB · 0 downloads Em 12/11/2024 at 16:42, Juliomar Marchetti disse: Acho que pode ser algo na falta da informação ao consultar. chegou a verificar se informou os dados corretos para fazer a consulta Aqui eu tive o mesmo problema com o digito verificador. fiz o mesmo o amigo VEXCOM SISTEMAS e está funcionando agora.
Moderadores Juliomar Marchetti Postado Quinta as 12:13 Moderadores Postado Quinta as 12:13 13 horas atrás, Junior.Jaru disse: Aqui eu tive o mesmo problema com o digito verificador. fiz o mesmo o amigo VEXCOM SISTEMAS e está funcionando agora Quem seria esse? Acho que houve uma discussão sobre isso internamente. mas aguardemos pra ver o que será ou não feito. pois o calcúlo é simples e os dados do titulo devem ser preenchidos corretamente e ele sempre gerará o mesmo digito Juliomar Marchetti skype: juliomar telegram: juliomar e-mail: [email protected] http://www.juliomarmarchetti.com.br
Junior.Jaru Postado Quinta as 16:11 Postado Quinta as 16:11 Juliomar, quando eu gero um boleto na API de Cobrança Bancária V3 do Sicoob o nosso número é opcional para registrar o boleto. quando eu nao informo o nosso numero o banco me devolve um nosso numero automático e esse nosso numero nao tem digito verificador conforme informação contida em https://developers.sicoob.com.br/portal/documentacao?slugItem=novidades-e-atualizacoes. entao na hora que o ACbrBoleto vai rendenizar / gerar o código de barras e a linha digitável quando é informado o nosso numero ele calcula o dígito, mas isso não pode acontecer se o boleto é emitido nessa api pois o nosso numero não tem mais digito verificador para quem usa retorno automático do nosso numero. Desativei no arquivo ACBrBancoSicoob.pas a função function TACBrBancoSicoob.CalcularDigitoVerificador(const ACBrTitulo: TACBrTitulo String;. e como pode ver em anexo tudo está funcionando perfeitamente. deixo claro que isso ocorre somente para quem não usa o nosso numero gerado no seu ERP e sim o que vem da API. Se não tiver ficado claro, e se você puder e quiser me chamar no whatsapp posso fazer uma call para esclarecer o ponto. Atenciosamente, FaturaVersãoFinal.pdf
Moderadores Juliomar Marchetti Postado Quinta as 21:43 Moderadores Postado Quinta as 21:43 Certo e dai nos demais bancos dai tu faz o nosso numero é isso mesmo? pois em 99% o pessoal já controla o nosso numero então nada melhor que usar ele ao invés de ficar deixando o banco certo? mas vamos conversar com os demais colegas commiter pra ver Juliomar Marchetti skype: juliomar telegram: juliomar e-mail: [email protected] http://www.juliomarmarchetti.com.br
Alessandro Cardoso Postado Há 8 horas Autor Postado Há 8 horas Boa tarde. Zerei minha máquina, reinstalei tudo (delphi, componentes, etc). Baixei hoje (15/11/24) o ACBr, e continuo com Invalid Client Credentials quando tento registrar no V3 do Sicoob. No Sicredi tá normal, sem nenhum problema. Alguém por favor me ajude, eu não sei mais o que fazer, e não quero ter que ficar usando versão antiga do ACBr pra burlar este problema. Não sei o que tem de errado com o meu ACBrBoleto. É muito estranho isso. Seguem os logs (do ACBrBoleto no momento de registrar, e do Retorno com o erro). ACBrBoleto_Loja.ini ApiSicoob.log
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