Validador Codigo LEI
Comparto un validador del Código LEI
¿Qué es el código LEI?
El Identificador de Entidad Jurídica (LEI, por sus siglas en inglés) es un código global y único basado en el estándar ISO 17442, que se utiliza para identificar a las personas jurídicas que son parte en las transacciones financieras y para cumplir con los requisitos de información exigidos en los mercados financieros.
Esta función sirve para el validar, es decir, devuelve verdadero o falso dependiendo de que el código sea correcto o no:
Public Function LEIValidacion(CodigoLEI) As Boolean
' Recibe el CodigoLEI
Dim letras As String * 36
Dim Dividendo As Integer
Dim resto As Integer
' Calcula el valor de las letras de los 18 primeros caracteres
letras = "123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
LEI = CStr(InStr(1, letras, Mid(CodigoLEI, 1, 1))) & CStr(InStr(1, letras, Mid(CodigoLEI, 2, 1))) & CStr(InStr(1, letras, Mid(CodigoLEI, 3, 1))) & CStr(InStr(1, letras, Mid(CodigoLEI, 4, 1))) & CStr(InStr(1, letras, Mid(CodigoLEI, 5, 1))) & CStr(InStr(1, letras, Mid(CodigoLEI, 6, 1))) & CStr(InStr(1, letras, Mid(CodigoLEI, 7, 1))) & CStr(InStr(1, letras, Mid(CodigoLEI, 8, 1))) & CStr(InStr(1, letras, Mid(CodigoLEI, 9, 1))) & CStr(InStr(1, letras, Mid(CodigoLEI, 10, 1))) & CStr(InStr(1, letras, Mid(CodigoLEI, 11, 1))) & CStr(InStr(1, letras, Mid(CodigoLEI, 12, 1))) & CStr(InStr(1, letras, Mid(CodigoLEI, 13, 1))) & CStr(InStr(1, letras, Mid(CodigoLEI, 14, 1))) & CStr(InStr(1, letras, Mid(CodigoLEI, 15, 1))) & CStr(InStr(1, letras, Mid(CodigoLEI, 16, 1))) & CStr(InStr(1, letras, Mid(CodigoLEI, 17, 1))) & CStr(InStr(1, letras, Mid(CodigoLEI, 18, 1))) & "00"
For Contador = 1 To Len(LEI)
seDividendo = resto & Mid(LEI, Contador, 1)
resto = Dividendo Mod 97
Next Contador
LEICalculado = Mid(CodigoLEI, 1, 18) & Format((98 - resto), "00")
If CodigoLEI = LEICalculado Then
LEIValidacion = True
Else
LEIValidacion = False
End If
End Function
' Recibe el CodigoLEI
Dim letras As String * 36
Dim Dividendo As Integer
Dim resto As Integer
' Calcula el valor de las letras de los 18 primeros caracteres
letras = "123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
LEI = CStr(InStr(1, letras, Mid(CodigoLEI, 1, 1))) & CStr(InStr(1, letras, Mid(CodigoLEI, 2, 1))) & CStr(InStr(1, letras, Mid(CodigoLEI, 3, 1))) & CStr(InStr(1, letras, Mid(CodigoLEI, 4, 1))) & CStr(InStr(1, letras, Mid(CodigoLEI, 5, 1))) & CStr(InStr(1, letras, Mid(CodigoLEI, 6, 1))) & CStr(InStr(1, letras, Mid(CodigoLEI, 7, 1))) & CStr(InStr(1, letras, Mid(CodigoLEI, 8, 1))) & CStr(InStr(1, letras, Mid(CodigoLEI, 9, 1))) & CStr(InStr(1, letras, Mid(CodigoLEI, 10, 1))) & CStr(InStr(1, letras, Mid(CodigoLEI, 11, 1))) & CStr(InStr(1, letras, Mid(CodigoLEI, 12, 1))) & CStr(InStr(1, letras, Mid(CodigoLEI, 13, 1))) & CStr(InStr(1, letras, Mid(CodigoLEI, 14, 1))) & CStr(InStr(1, letras, Mid(CodigoLEI, 15, 1))) & CStr(InStr(1, letras, Mid(CodigoLEI, 16, 1))) & CStr(InStr(1, letras, Mid(CodigoLEI, 17, 1))) & CStr(InStr(1, letras, Mid(CodigoLEI, 18, 1))) & "00"
For Contador = 1 To Len(LEI)
seDividendo = resto & Mid(LEI, Contador, 1)
resto = Dividendo Mod 97
Next Contador
LEICalculado = Mid(CodigoLEI, 1, 18) & Format((98 - resto), "00")
If CodigoLEI = LEICalculado Then
LEIValidacion = True
Else
LEIValidacion = False
End If
End Function
Esta función es para el cálculo de los dígitos de control:
Public Function LEICalculo(CodigoLEI As String) As String
'Estructura del Codigo LEI
'https://www.gleif.org/en/lei-focus/what-is-an-lei/lei-code-structure
'http://www.csisc.cn/publicfiles/uploadfiles/doc/201303/%E6%9D%90%E6%96%993%EF%BC%9AISODIS%2017442.pdf
' Recibe el CodigoLEI
Dim letras As String
Dim LEI As String
Dim Dividendo As Integer
Dim resto As Integer
' Calcula el valor de las letras de los 18 primeros caracteres
letras = "123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
LEI = CStr(InStr(1, letras, Mid(CodigoLEI, 1, 1))) & CStr(InStr(1, letras, Mid(CodigoLEI, 2, 1))) & CStr(InStr(1, letras, Mid(CodigoLEI, 3, 1))) & CStr(InStr(1, letras, Mid(CodigoLEI, 4, 1))) & CStr(InStr(1, letras, Mid(CodigoLEI, 5, 1))) & CStr(InStr(1, letras, Mid(CodigoLEI, 6, 1))) & CStr(InStr(1, letras, Mid(CodigoLEI, 7, 1))) & CStr(InStr(1, letras, Mid(CodigoLEI, 8, 1))) & CStr(InStr(1, letras, Mid(CodigoLEI, 9, 1))) & CStr(InStr(1, letras, Mid(CodigoLEI, 10, 1))) & CStr(InStr(1, letras, Mid(CodigoLEI, 11, 1))) & CStr(InStr(1, letras, Mid(CodigoLEI, 12, 1))) & CStr(InStr(1, letras, Mid(CodigoLEI, 13, 1))) & CStr(InStr(1, letras, Mid(CodigoLEI, 14, 1))) & CStr(InStr(1, letras, Mid(CodigoLEI, 15, 1))) & CStr(InStr(1, letras, Mid(CodigoLEI, 16, 1))) & CStr(InStr(1, letras, Mid(CodigoLEI, 17, 1))) & CStr(InStr(1, letras, Mid(CodigoLEI, 18, 1))) & "00"
For Contador = 1 To Len(LEI)
Dividendo = resto & Mid(LEI, Contador, 1)
resto = Dividendo Mod 97
Next Contador
LEICalculo = Mid(CodigoLEI, 1, 18) & Format((98 - resto), "00")
End Function
'Estructura del Codigo LEI
'https://www.gleif.org/en/lei-focus/what-is-an-lei/lei-code-structure
'http://www.csisc.cn/publicfiles/uploadfiles/doc/201303/%E6%9D%90%E6%96%993%EF%BC%9AISODIS%2017442.pdf
' Recibe el CodigoLEI
Dim letras As String
Dim LEI As String
Dim Dividendo As Integer
Dim resto As Integer
' Calcula el valor de las letras de los 18 primeros caracteres
letras = "123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
LEI = CStr(InStr(1, letras, Mid(CodigoLEI, 1, 1))) & CStr(InStr(1, letras, Mid(CodigoLEI, 2, 1))) & CStr(InStr(1, letras, Mid(CodigoLEI, 3, 1))) & CStr(InStr(1, letras, Mid(CodigoLEI, 4, 1))) & CStr(InStr(1, letras, Mid(CodigoLEI, 5, 1))) & CStr(InStr(1, letras, Mid(CodigoLEI, 6, 1))) & CStr(InStr(1, letras, Mid(CodigoLEI, 7, 1))) & CStr(InStr(1, letras, Mid(CodigoLEI, 8, 1))) & CStr(InStr(1, letras, Mid(CodigoLEI, 9, 1))) & CStr(InStr(1, letras, Mid(CodigoLEI, 10, 1))) & CStr(InStr(1, letras, Mid(CodigoLEI, 11, 1))) & CStr(InStr(1, letras, Mid(CodigoLEI, 12, 1))) & CStr(InStr(1, letras, Mid(CodigoLEI, 13, 1))) & CStr(InStr(1, letras, Mid(CodigoLEI, 14, 1))) & CStr(InStr(1, letras, Mid(CodigoLEI, 15, 1))) & CStr(InStr(1, letras, Mid(CodigoLEI, 16, 1))) & CStr(InStr(1, letras, Mid(CodigoLEI, 17, 1))) & CStr(InStr(1, letras, Mid(CodigoLEI, 18, 1))) & "00"
For Contador = 1 To Len(LEI)
Dividendo = resto & Mid(LEI, Contador, 1)
resto = Dividendo Mod 97
Next Contador
LEICalculo = Mid(CodigoLEI, 1, 18) & Format((98 - resto), "00")
End Function
Comentarios
Publicar un comentario