1 de octubre de 2004

Calcular Digito de Verificacion de NIT (Colombia)

Rutina para calcular el digito de verificacion de NIT (para Colombia)
********************************************************
* 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 (nelson_cortes@tutopia.com)
********************************************************
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
Oscar Arley Yepes Aristizabal

No hay comentarios. :

Publicar un comentario