Problema homologação Santander e Correção do Código

Dec 14, 2010 at 7:12 PM

Olá pessoal,

Fiz a homologação para o banco Santander e tive alguns problemas com o cálculo do digito do nosso número.
Para deixar a lógica de acordo com o manual do santander, criei uma nova sub chamada Mod11NN na Classe AbstractBanco.cs para ser utilizada no calculo do digito do nosso número.
Após corrigir isso, não obtive mais erros. Segue abaixo a minha alteração/contribuição (em negrito a logica que importa):

protected static int Mod11NN(string seq, int lim, int flag)
        {
            int mult = 0;
            int total = 0;
            int pos = 1;
            int ndig = 0;
            int nresto = 0;
            string num = string.Empty;

            mult = 1 + (seq.Length % (lim - 1));

            if (mult == 1)
                mult = lim;


            while (pos <= seq.Length)
            {
                num = Microsoft.VisualBasic.Strings.Mid(seq, pos, 1);
                total += Convert.ToInt32(num) * mult;

                mult -= 1;
                if (mult == 1)
                    mult = lim;

                pos += 1;
            }
            nresto = (total % 11);
            if (flag == 1)
                return nresto;
            else
            {
                if (nresto == 10)
                    ndig = 1;
                else if ((nresto == 0) || (nresto == 1))
                    ndig = 0;
                else
                    ndig = (11 - nresto);

                return ndig;
            }
        }

Coordinator
Dec 14, 2010 at 7:23 PM
Olá Cleber,
valeu por colaborar. Você poderia enviar o arquivo Banco_Santader.cs?
Abraços,
Stiven
From: [email removed]
Sent: Tuesday, December 14, 2010 5:12 PM
To: [email removed]
Subject: Problema homologação Santander e Correção do Código [boletonet:238362]

From: cleberz

Olá pessoal,

Fiz a homologação para o banco Santander e tive alguns problemas com o cálculo do digito do nosso número.
Para deixar a lógica de acordo com o manual do santander, criei uma nova sub chamada Mod11NN na Classe AbstractBanco.cs para ser utilizada no calculo do digito do nosso número.
Após corrigir isso, não obtive mais erros. Segue abaixo a minha alteração/contribuição (em negrito a logica que importa):

protected static int Mod11NN(string seq, int lim, int flag)
{
int mult = 0;
int total = 0;
int pos = 1;
int ndig = 0;
int nresto = 0;
string num = string.Empty;

mult = 1 + (seq.Length % (lim - 1));

if (mult == 1)
mult = lim;


while (pos <= seq.Length)
{
num = Microsoft.VisualBasic.Strings.Mid(seq, pos, 1);
total += Convert.ToInt32(num) * mult;

mult -= 1;
if (mult == 1)
mult = lim;

pos += 1;
}
nresto = (total % 11);
if (flag == 1)
return nresto;
else
{
if (nresto == 10)
ndig = 1;
else if ((nresto == 0) || (nresto == 1))
ndig = 0;
else
ndig = (11 - nresto);

return ndig;
}
}

Dec 16, 2010 at 12:48 AM

OK, enviei para o seu email !

Atenciosamente,
Cleber