Algoritmia - Algoritmo Digito Verificacion NIT

 
Vista:

Algoritmo Digito Verificacion NIT

Publicado por CESAR ALFREDO SUAREZ (1 intervención) el 08/09/2006 23:26:04
Quisiera alguien me orientara sobre la formula o el algoritmo que existe para calcular el digito de verificacion del nit en Colombia, lo necesito para implementarlo en un programa que tengo de facturacion y el cliente me pidio que al ingresar los datos del cliente en la base de datos hiciera la validacion correcta del digito de verificacion del correspondiente numero del nit digitado.

Por su colaboracion muchas gracias

Cesar A. Suarez M
Cali-Valle-Colombia
E-mail: [email protected]
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Algoritmo Digito Verificacion NIT

Publicado por alex brekeman (1 intervención) el 29/09/2006 22:23:19
********************************************************
* FUNCION : Nit_DV
* FUNCION : Devuelve el Digito de Verificacion de un Nit (COLOMBIA)
* PARAMETROS : Numero de Nit a Calcular
* RETORNO : Digito de Verificación
* AUTOR : Nelson Cortes ([email protected])
********************************************************
FUNCTION Nit_DV(_Nit)
LOCAL _TipoRet, lnRetorno, Arreglo_PA, WSuma, WDato, WDig_Ver, I
_TipoRet = VARTYPE(_Nit)
DO CASE
CASE _TipoRet == "C"
_Nit = ALLTRIM(_Nit)
CASE _TipoRet == "N" OR _TipoRet == "Y"
_Nit = ALLTRIM(STR(_Nit))
OTHERWISE
=MESSAGEBOX("El valor de entrada NIT no se ha podido procesar.",0+48,_SCREEN.cNomApp)
RETURN
ENDCASE
DIMENSION Arreglo_PA(15)
Arreglo_PA(1) = 71
Arreglo_PA(2) = 67
Arreglo_PA(3) = 59
Arreglo_PA(4) = 53
Arreglo_PA(5) = 47
Arreglo_PA(6) = 43
Arreglo_PA(7) = 41
Arreglo_PA(8) = 37
Arreglo_PA(9) = 29
Arreglo_PA(10) = 23
Arreglo_PA(11) = 19
Arreglo_PA(12) = 17
Arreglo_PA(13) = 13
Arreglo_PA(14) = 7
Arreglo_PA(15) = 3
lnRetorno = 0
WDato=RIGHT(SPACE(15)+ALLTRIM(_Nit),15)
WSuma=0
WDig_Ver=0
FOR I = 1 TO 15
WSuma=WSuma+(VAL(SUBSTR(WDato,I,1))*Arreglo_PA(I))
ENDFOR
WSuma=MOD(WSuma,11)
IF(WSuma=0 .OR. WSuma=1)
lnRetorno = WSuma
ELSE
lnRetorno = 11 - WSuma
ENDIF
IF _TipoRet == "C"
RETURN ALLTRIM(STR(lnRetorno))
ELSE
RETURN lnRetorno
ENDIF
ENDFUNC
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar