Página 1 de 1
[Resolvido] Calcular dv cobrança Banco Real
#1
Postou 03 novembro 2009 - 19:31
Bom Pessoal estou quebrando a cabeça e não consigo a solução para calcular o digito de
cobrança do Banco Real. Uso o sql server express 2005.
Ele é composto por 24 numeros
13 do nosso numero + agencia(4) e conta(7)
Se colocar assim:
dbo.modulo10('000000001567601401736863')
Ele me retorna o correto que é 2
Se colocar
dbo.Modulo10(SUBSTRING(BaseCobranca, 0, 24)) AS DvCobranca
retorna 8
O campo BaseCobranca é a união dos 3 campos que são alfanuméricos.
Se alguém puder me auxiliar fico imensamente grato.
cobrança do Banco Real. Uso o sql server express 2005.
Ele é composto por 24 numeros
13 do nosso numero + agencia(4) e conta(7)
Se colocar assim:
dbo.modulo10('000000001567601401736863')
Ele me retorna o correto que é 2
Se colocar
dbo.Modulo10(SUBSTRING(BaseCobranca, 0, 24)) AS DvCobranca
retorna 8
O campo BaseCobranca é a união dos 3 campos que são alfanuméricos.
Se alguém puder me auxiliar fico imensamente grato.
#3
Postou 04 novembro 2009 - 13:07
Junior, agradeço a atenção
Segue a consulta. Um abraço.
Segue a consulta. Um abraço.
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
GO
ALTER FUNCTION [dbo].[Modulo10](@numero varchar(15))
RETURNS CHAR(1)
AS
BEGIN
declare
@max smallint,
@contador smallint,
@peso varchar(24),
@resto smallint,
@valor smallint,
@soma int,
@retorno int
select @peso = '121212121212121212121212'
select @max = datalength(@numero)
select @peso = right(@peso, @max)
set @contador = @max+1
set @soma = 0
loop:
set @contador = @contador-1
set @valor = isnull((ascii(substring(@peso, @contador, 1))-48) *
(ascii(substring(@numero, @contador, 1))-48), 0)
set @soma = isnull((select (case when (@valor<10) then
@valor when (@valor>9) then @valor-10 end)), 0)+@soma
set @soma = isnull((select (case when (@valor<10) then
null when (@valor>9) then 1 end)), 0)+@soma
if (@contador >1) goto loop
select @resto= sum(@soma)%10
select @retorno = case @resto when 0 then 0 else 10-@resto end
return(Convert(char(1), @retorno))
END
Este post foi editado por quintelab: 04 novembro 2009 - 13:29
Razão por editar:: Adicionado BBCode Sql
#5
Postou 04 novembro 2009 - 14:28
Junior, o pessoal do ScriptBrasil me ajudou a resolver.
Bem como voce também indicou para ver o select do substring
Criei uma nova função ModuloCob colocando 24 como base. Fico imensamente grato a você pela ajuda.
Amanhã deve vir a resposta da analise de 3 boletos.
Acredito que o DV Geral se der problemas, será da mesma forma e farei as devidas adaptações.
Segue o select completo:
Um abraço.
Bem como voce também indicou para ver o select do substring
Criei uma nova função ModuloCob colocando 24 como base. Fico imensamente grato a você pela ajuda.
Amanhã deve vir a resposta da analise de 3 boletos.
Acredito que o DV Geral se der problemas, será da mesma forma e farei as devidas adaptações.
Segue o select completo:
SELECT associado, baseseq, BaseCobranca, dbo.ModuloCob(SUBSTRING(BaseCobranca, 0, 25)) AS DvCobranca, DVGeral, CodigoDebarras,
'3569' + SUBSTRING(CodigoDebarras, 20, 5) AS BCampo1, dbo.Modulo10('3569' + SUBSTRING(CodigoDebarras, 20, 5)) AS DVCampo1,
SUBSTRING(CodigoDebarras, 25, 10) AS BCampo2, dbo.Modulo10(SUBSTRING(CodigoDebarras, 25, 10)) AS DVCampo2, SUBSTRING(CodigoDebarras,
35, 10) AS BCampo3, dbo.Modulo10(SUBSTRING(CodigoDebarras, 35, 10)) AS DVCampo3, exercicio, dtvcto, dtproc, vr, seq, Codigo, Carteira, Agencia,
Cedente, DvCedente
FROM dbo.QryBoletosMovR3Um abraço.
Este post foi editado por quintelab: 04 novembro 2009 - 15:09
Razão por editar:: Adicionado BBCode Sql
Página 1 de 1


Entrar
Cadastre-se
Ajuda

Quote