Código para Validar el CCC Código de cuenta cliente en VB .net

By | 03/02/2016
Public Function Validar_CCC_R_Bool(ByVal numeroCuenta As String) As Boolean
      Try
 
         ' Primero compruebo que la longitud del parámetro
         ' sea de 20 caracteres.
         '
         If (numeroCuenta.Length <> 20) Then Return False
 
         ' Extraigo el dígito de control.
         '
         Dim dc As String = numeroCuenta.Substring(8, 2)
 
         ' Del número de cuenta, elimino el dígito de control.
         '
         numeroCuenta = numeroCuenta.Remove(8, 2)
 
         ' Obtengo el dígito de control verdadero.
         '
         Dim dcTemp As String = GetDCCuentaBancaria(numeroCuenta)
 
         ' Devuelvo el resultado.
         '
         If dc = dcTemp Then Return True
      Catch ex As Exception
 
      End Try
      Return False
   End Function
 
 
   Public Function GetDCCuentaBancaria(ByVal numeroCuenta As String) As String
 
      Try
 
         '
         If (numeroCuenta.Length <> 18) Then
            Return Nothing
         Else
            Dim ch As Char
            For Each ch In numeroCuenta
               If (Not Char.IsNumber(ch)) Then Return Nothing
            Next
         End If
 
         Dim cociente1, cociente2, resto1, resto2 As Integer
         Dim sucursal, cuenta, dc1, dc2 As String
         Dim suma1, suma2, n As Integer
 
         ' Matriz que contiene los pesos utilizados en el
         ' algoritmo de cálculo de los dos dígitos de control.
         '
         Dim pesos() As Integer = {6, 3, 7, 9, 10, 5, 8, 4, 2, 1}
 
         sucursal = numeroCuenta.Substring(0, 8)
         cuenta = numeroCuenta.Substring(8, 10)
 
         ' Obtengo el primer dígito de control que verificará
         ' los códigos de Entidad y Oficina.
         '
         For n = 7 To 0 Step -1
            suma1 = suma1 + Convert.ToInt32(sucursal.Substring(n, 1)) * pesos(7 - n)
         Next
 
         ' Calculamos el cociente de dividir el resultado
         ' de la suma entre 11.
         '
         cociente1 = suma1 \ 11 ' Nos da un resultado entero.

         ' Calculo el resto de la división. Para ello,
         ' en lugar de utilizar el operador Mod, utilizo
         ' la fórmula para obtener el resto de la división.
         '
         resto1 = suma1 - (11 * cociente1)
 
         dc1 = (11 - resto1).ToString
 
         Select Case dc1
            Case "11"
               dc1 = "0"
            Case "10"
               dc1 = "1"
         End Select
 
         ' Ahora obtengo el segundo dígíto, que verificará
         ' el número de cuenta de cliente.
         '
         For n = 9 To 0 Step -1
            suma2 = suma2 + Convert.ToInt32(cuenta.Substring(n, 1)) * pesos(9 - n)
         Next
 
         ' Calculamos el cociente de dividir el resultado
         ' de la suma entre 11.
         '
         cociente2 = suma2 \ 11 ' Nos da un resultado entero

         ' Calculo el resto de la división. Para ello,
         ' en lugar de utilizar el operador Mod, utilizo
         ' la fórmula para obtener el resto de la división.
         '
         resto2 = suma2 - (11 * cociente2)
 
         dc2 = (11 - resto2).ToString
 
         Select Case dc2
            Case "11"
               dc2 = "0"
            Case "10"
               dc2 = "1"
         End Select
 
         ' Devuelvo el dígito de control.
         '
         Return dc1 & dc2
      Catch ex As Exception
 
      End Try
      Return ""
   End Function