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

1 comentario :

  1. Que tal Oscar, serias tan amable me indicas como seria el formulario para realizar ese clculo del digito de verificacion, se uy poco de VFP.
    Gracias.

    ResponderBorrar

Los comentarios son moderados, por lo que pueden demorar varias horas para su publicación.