示例#1
0
        public static string NossoNumeroDV(string cNossoNumero)
        {
            int nResto;
            int nTotalNumero = CobUtil.Modulo11Total(cNossoNumero, 9);

            nResto = (10 * nTotalNumero) % 11;
            string cDAC;

            if (nResto == 10)
            {
                cDAC = "X";
            }
            else
            {
                cDAC = nResto.ToString();
            }

            return(cDAC);
        }
示例#2
0
        /// <summary>
        /// Calcula o digito do nosso numero, já ajustando o comprimento total
        /// </summary>
        public static string NossoNumero(string cCarteira, ref string cModalidade, ref string cNossoNumero)
        {
            // para o digito verificador o nosso numero tem 11 digitos (Carteira+Modalidade+NossoNumero)
            // Mas quando o resto for 10, tem que aparecer 'P'
            // CobUtil.Modulo11Padrao(cCarteira + cModalidade + cNossoNumero, 7);
            // pagina 19

            if (cNossoNumero.Length == 11)
            {
                cModalidade = "";
            }
            else if (cModalidade.Length == 4)
            {
                // Modalidade com 4 digitos!
                cNossoNumero = CobUtil.Right(cNossoNumero, 7);
            }
            else
            {
                // Modalidade com 2 digitos
                cModalidade  = CobUtil.Right(cModalidade, 2);
                cNossoNumero = CobUtil.Right(cNossoNumero, 9);
            }

            cCarteira = CobUtil.Right(cCarteira, 2);
            if (cModalidade.Length + cNossoNumero.Length != 11)
            {
                throw new Exception("Combinação Modalidade e Nosso numero invalidos");
            }

            int TotalNumero = CobUtil.Modulo11Total(cCarteira + cModalidade + cNossoNumero, 7);

            TotalNumero *= 10;
            int Resto = TotalNumero % 11;

            if (Resto == 10)
            {
                return("P");
            }
            else
            {
                return(Resto.ToString());
            }
        }
示例#3
0
        /// <summary>
        /// Logica especial para modulo 11, que retorna -1 quando o resto é 1
        /// </summary>
        /// <param name="sequencia">Sequencia a ser calculada</param>
        /// <returns>Retorna o digito, ou -1 quando nescessário</returns>
        public static int Modulo11Negativo(string sequencia)
        {
            int Total = CobUtil.Modulo11Total(sequencia, 7);
            // De acordo com a nota disponivel no manual do Banco Nossa Caixa na página 22
            // o resto não deve ser aproximado, e deveremos considerar o digito=0
            int Resto = Total % 11;

            if (Resto == 0)
            {
                return(0);
            }
            else if (Resto > 1)
            {
                return(11 - Resto);
            }
            else
            {
                // Recalcular D2 com (D1+1)
                // Retorna um valor negativo informando que deve ser recalculado com incremento
                return(-1);
            }
        }