Alberto Mota Posted April 8, 2012 Report Share Posted April 8, 2012 Prezados colegas, essa semana atravessei uma luta de homologação de boletos do Santander.Foi homologado, mas num dos boletos há algo errado quanto ao calculo do resto.Segui fielmente o manual e graças a uma função do fulvio tudo estava normal.A sequencia é o nosso numero 400000192433 , 12 digitos onde o dv será o 13ºusando pesos de 2 a 9 a soma é 122.Sendo que o resto de 122 dividido por 11 é 1, sem sombra de duvidas.Porem o Banco Santander alega que é 0 e a palavra final é deles.Em qualquer linguagem: access, sql server, excel, vai dar sempre 1.Como eles conseguiram encontrar esse dv = 0 ?Ou existe mesmo um erro de calculo no sistema do banco?A divisão não é exata. 122/11 vai dar 11,09090909trabalhando com o inteiro 11 multiplico por 11 = 121portanto 122 - 121 = 1Existe uma solução para esse problema no sql server?Desde já, obrigado. Quote Link to comment Share on other sites More sharing options...
0 fulvio Posted April 9, 2012 Report Share Posted April 9, 2012 Boa tarde Alberto, Como estão as coisas, tudo bem? Realmente os cálculos estão corretos... mas o que me chamou a atenção foram os pesos de 2 a 9: - Se utilizar desta forma, o resultado será 122 mesmo. - Mas se utilizar sem os pesos, a soma dará 154. Aí o DV será 0 (zero). O ultimo peso será 13. Mas ai... qual está correto? :.) Quote Link to comment Share on other sites More sharing options...
0 Alberto Mota Posted April 9, 2012 Author Report Share Posted April 9, 2012 (edited) Fulvio, tudo tranquilo.Obrigado por responder.Vou colocar aqui o que está no manual, na íntegra:-------------------------------------------------------------------Nosso NúmeroPara o cálculo, utilizar módulo 11, peso 2 a 9Composição do Nosso Número: NNNNNNNNNNNN D onde:N = Faixa seqüencial de 000000000001 a 999999999999D = Dígito de controle.Exemplo de cálculo do dígito:Supondo-se que: Nosso Número = 566612457800Inverter da direita para a esquerda na vertical.0 X 2 = 0 0 X 3 = 0 8 X 4 = 32 7 X 5 = 35 5 X 6 = 30 4 X 7 = 28 2 X 8 = 16 1 X 9 = 9 6 X 2 = 12 6 X 3 = 18 6 X 4 = 24 5 X 5 = 25 Total 229 / 11 = 20 resto = 9 11-9 = 2 Nosso numero final: 56612457800-2 Utilizar o módulo 11 – peso de 2 a 9 - para o cálculo deste DV. Multiplicar da direita para a esquerda, de 2 até 9, até o final do número, reiniciando em 2 se necessário. Somar os resultados obtidos, multiplicar o total da soma por 10 (dez) e dividi-lo por 11 (onze). O resto desta divisão será o digito do controle. Se o resto for igual a 0 (zero), 1 (um) ou 10 (dez) o digito será = 1 (um). -----------------------------------------------------------------------De onde saiu esse 0(zero) ?Segui ao pé da letra e de 20 boletos enviados esse deu problema, o de numero 400000192433 Um abraço. Edited April 9, 2012 by Alberto Mota Quote Link to comment Share on other sites More sharing options...
0 fulvio Posted April 10, 2012 Report Share Posted April 10, 2012 Bom dia Alberto, O manual está um pouco complicado mesmo... Estava entendendo tudo, até o momento em que o exemplo é dado: - Soma dos valores, pega o resto da divisão e subtrair de 11. Logo abaixo, a explicação do manual: Somar os resultados obtidos, multiplicar o total da soma por 10 (dez) e dividi-lo por 11 (onze). - No exemplo não foi feito desta forma. Não houve a multiplicação do valor encontrado. Outra explicação: Se o resto for igual a 0 (zero), 1 (um) ou 10 (dez) o digito será = 1 (um). - Isto significa que em nenhum momento haverá dv=0, pois quando houver, será necessário substituí-lo por 1.Parece que as 2 formas de implementação, retornam o mesmo resultado (se for isto, deveriam explicar no manual). Segue script abaixo:SELECT 11-(122 %11) SELECT ((122 *10)%11) Tem como você passar pela crítica algum outro número que tenha o resultado do dv=10? Pode ser isso. Os restos igual a 10 ter o dv igual a 0... Dê uma olhada neste link. O cpf e o titulo eleitor tem esta implementação (O resto=10, o dv=0) http://ghiorzi.org/cgcancpf.htm (para faciliar, procure na página por "O resto 10 será"). Quote Link to comment Share on other sites More sharing options...
0 Alberto Mota Posted April 10, 2012 Author Report Share Posted April 10, 2012 Boa tarde, Fulvio.Bastante confuso esse manual.Houve um boleto que nem enviei, pois iriam dizer que estava errado:O numero é 000000038920A soma dos pesos será 100. No sqlserver o dv encontrado foi 1, 100 / 11 = 9,090909resto = 1 , logo pelo manual 11- 1 = 10e depois se tornará 1 pelo enunciado finalImagino que retornaria por causa das decimais , 090909Mas o mistério continua. Pedi que informassem como foi encontrado o dv = 0 e não tinham como fazer isso.Fulvio, muito obrigado.Vou ver com calma o link que indicou. Qualquer novidade informarei.Um abraço. Quote Link to comment Share on other sites More sharing options...
0 fulvio Posted April 11, 2012 Report Share Posted April 11, 2012 De nada Alberto... precisando estamos ai. :) Quote Link to comment Share on other sites More sharing options...
0 Rafael Rocha B. Posted October 18, 2012 Report Share Posted October 18, 2012 (edited) Olá pessoal,Alguns anos depois e aqui estou eu com dificuldades na geração de boletos para o Santander. A documentação que encontrei sobre a geração do Nosso Número e DV foi nesse site: http://boletophp.com.br/Porém, não sei se está atualizada, já procurei bastante algum tipo de manuel fornecido pelo Santander e não encontro.No manual que baixei do site acima tem a seguinte afirmação: FÓRMULA PARA CÁLCULO DO DÍGITO VERIFICADOR NO NÚMERO BANCÁRIO (NOSSO NÚMERO)Exemplo 01O NÚMERO BANCÁRIO é composto por 3 partes;3 (três) dígitos para o número da Agência (constante);7 (sete) dígitos para a numeração sequencial; e1 (um) dígito verificador;Beleza, mas a agência aqui da empresa tem 4 dígitos. E essa parte dos 7 dígitos, tem que ser obrigatoriamente 7 digitos?Estou meio perdido, já pesquisei bastante e não encontro uma solução.OBS: Existe outro sistema que também gera boletos pra mesma empresa, será que isso pode causar algum problema? Pois existe a possibilidade do meu sistema que é novo gerar um 'nosso número' que já tenha sido gerado anteriormente por esse outro sistema.Desde já grato pela atenção, Edited October 18, 2012 by Rafael Rocha B. Quote Link to comment Share on other sites More sharing options...
0 fulvio Posted October 18, 2012 Report Share Posted October 18, 2012 Boa tarde Rafael, Toda agência bancária possui 4 dígitos. Os 7 dígitos para a numeração sequencial devem ser 7 digitos mesmo. Pode ser: 0000001. A numeração sequencial é importante para a empresa, para seu controle interno. Se quiser 2 sistemas ao mesmo tempo gerando boletos, e não ter dor de cabeça com duplicidades, poderá utilizar a numeração sequencial como identificador. Por exemplo, poderá colocar uma chave única interna do sistema, onde cada transação terá a sua, independente de qual sistema gerar. Se gerar 2 boletas, será do mesmo registro. Caso não queira, coloque um controlador quando a boleta for gerada. Assim não conseguirá gerá-la novamente. Olhe no site do Santander. Quote Link to comment Share on other sites More sharing options...
0 Rafael Rocha B. Posted October 19, 2012 Report Share Posted October 19, 2012 Em primeiro lugar, obrigado pela atenção fulvio.Consegui entender mais ou menos o que você disse. Bem, um dos sistemas que gera boleto aqui na empresa não me da acesso algum ao código por ser de uma grande empresa, então não sei como eles fazem para gerar o nosso número. Enfim, vou dar um exemplo do nosso número do boleto que os sistemas geram:Sistema 1 (ao qual não tenho acesso ao código)12000070767-8 (pelo o que entendi esse 120 é fixo)Sistema 2 (o que estou desenvolvendo)000000000001-9 Se eu colocar uma numeração fixa no início, por exemplo: 140000000001-9 já elimina totalmente a possibilidade de duplicidade, certo? Quote Link to comment Share on other sites More sharing options...
0 fulvio Posted October 19, 2012 Report Share Posted October 19, 2012 Boa tarde Rafael, No primeiro número: 12000070767-8 Os 4 primeiros números se refere a agência: 1200 Os 7 posteriores números é a empresa que coloca. Você pode colocar o que quiser, pois será um controle seu: 0070767. O ultimo dígito, se chama dígito verificador. Ele é calculado de acordo com os demais números. Ele serve para verificar se a sequência dos 11 primeiros números foram digitados corretamente: 8 Se colocar um número fixo no começo (como no exmeplo o 1400), você estará informando outra agência. Se não tiver controle sobre as numerações geradas, pode começar a sequência dos 7 digitos do fim para o começo. Ao invés de começar com: 0000001, 0000002, ... Começe com: 9999999, 9999998, ... OBS.: vai chegar um momento em que os número passarão a coincidir. Quote Link to comment Share on other sites More sharing options...
0 Alberto Mota Posted October 22, 2012 Author Report Share Posted October 22, 2012 Rafael, informe um email para que eu possa enviar o manual do Santander que possuo.Tentarei tambem ajuda-lo na solução do seu problema. Quote Link to comment Share on other sites More sharing options...
0 Alberto Mota Posted October 23, 2012 Author Report Share Posted October 23, 2012 102 é cobrança sem registros, ou seja, você não envia um arquivo texto chamado Remessa,receberá apenas do Santander o arquivo retorno, onde o mais importante para vcna quitação é o nosso numero.No Nosso numero não estara contido a agencia e conta corrente.Deverá ter um campo sequencial, a chave primária de sua tabela.São 13 digitos do nosso numero que você pode concatenar com campos que julgar importantes.exemplo: '5' + CAST(dbo.zeros(dbo.TblMovimentacao.seq, 12) AS Varchar) AS NNA função zeros coloca 12 zeros a frente.Se o campo for 150 então será 5000000000150Eu coloco 12 para a chave da tabela que é autonumeração e um numero de identificaçãofixo por se tratar de varias filiais, para que esse numero nunca se repita ao longo do tempo. Espero ter ajudado. Quote Link to comment Share on other sites More sharing options...
0 oburegio Posted February 20, 2013 Report Share Posted February 20, 2013 PEssoal,tambem estou mexendo com o boleto do santander e usei o do phpboleto onde o nosso numero tem 8 digitos.Preciso da versão que tem 12 digitos igual voces comentaram aqui.Voces teriam esse boleto ou teriam como indicar onde consigo pegar?Obrigado pessoal. Quote Link to comment Share on other sites More sharing options...
Question
Alberto Mota
Prezados colegas, essa semana atravessei uma luta de homologação de boletos do Santander.
Foi homologado, mas num dos boletos há algo errado quanto ao calculo do resto.
Segui fielmente o manual e graças a uma função do fulvio tudo estava normal.
A sequencia é o nosso numero 400000192433 , 12 digitos onde o dv será o 13º
usando pesos de 2 a 9 a soma é 122.
Sendo que o resto de 122 dividido por 11 é 1, sem sombra de duvidas.
Porem o Banco Santander alega que é 0 e a palavra final é deles.
Em qualquer linguagem: access, sql server, excel, vai dar sempre 1.
Como eles conseguiram encontrar esse dv = 0 ?
Ou existe mesmo um erro de calculo no sistema do banco?
A divisão não é exata. 122/11 vai dar 11,09090909
trabalhando com o inteiro 11 multiplico por 11 = 121
portanto 122 - 121 = 1
Existe uma solução para esse problema no sql server?
Desde já, obrigado.
Link to comment
Share on other sites
12 answers to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.