Estou com uma dúvida no que diz respeito ao cálculo do dígito verificador do Nosso Número de boleto do Banco do Brasil, no meu caso, seria uma carteira de 7 digitos e o Nosso Numero tem 10, então teríamos 17 casas, pelo que entendi, teria que utiliza o calculo do Modulo 11, pelo layout, mas lá pega 11 números para fazer a conta, e, no meu caso, eu tenho 10.
Esse dígito do Nosso Número, acho que não vai fazer parte da Linha digitável do código de barras.
O que eu fiz foi mais ou menos isso:
DECLARE
@i INT,
@Contador INT,
@Num VARCHAR(10),
@Soma INT,
@total NUMERIC(10, 4),
@digito VARCHAR (1)
-- Aqui fica uma das minhas dúvidas, se eu pego o número todo ou somente os 10 pro cálculo
-- Esse é composto pelos 7 dígito do contrato e os 10 do Nosso Numero
--set @Num = '12345670001123456'
set @Num = '0001123456'
set @contador = 9
set @i = LEN(@Num)
set @soma = 0
set @total = 0.00
while @i > 0
begin
if(@Contador >= 2)
begin
select @Soma = @Soma + CONVERT(INT, SUBSTRING(@num, @i, 1)) * @contador
set @contador = @contador -1
end
else
if(@Contador < 2)
begin
set @Contador = 9
select @Soma = @Soma + CONVERT(INT, SUBSTRING(@num, @i, 1)) * @contador
set @contador = @contador -1
end
set @i = @i - 1
end
SET @total = CONVERT(NUMERIC(10,4), @soma) / 11
SELECT @digito = SUBSTRING(CONVERT(VARCHAR(10), @total), CHARINDEX('.', @total) + 1, 1)
print @digito
Outra coisa que não compreendi, é se, arredonda as casas depois da vírgula ou pega "seco" o primeiro dígito depois do ponto, nesse código eu fiz somente pegando o primeiro depois da vírgula.
Se alguém puder me ajudar a solucionar essa dúvida, eu agradeço.
Pergunta
João Paulo Taraciuk
Olá
Estou com uma dúvida no que diz respeito ao cálculo do dígito verificador do Nosso Número de boleto do Banco do Brasil, no meu caso, seria uma carteira de 7 digitos e o Nosso Numero tem 10, então teríamos 17 casas, pelo que entendi, teria que utiliza o calculo do Modulo 11, pelo layout, mas lá pega 11 números para fazer a conta, e, no meu caso, eu tenho 10.
Esse dígito do Nosso Número, acho que não vai fazer parte da Linha digitável do código de barras.
O que eu fiz foi mais ou menos isso:
Outra coisa que não compreendi, é se, arredonda as casas depois da vírgula ou pega "seco" o primeiro dígito depois do ponto, nesse código eu fiz somente pegando o primeiro depois da vírgula.
Se alguém puder me ajudar a solucionar essa dúvida, eu agradeço.
Link para o comentário
Compartilhar em outros sites
5 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.