lunes, 16 de diciembre de 2013

Generar dígito de verificación de NIT de Colombia en PowerBuilder



Recientemente me he involucrado en un proyecto de implementación del ERP El Gestor a un cliente en Medellín, quien nos solicitó implementar el dígito de verificación que la DIAN obliga para el NIT de los proveedores.

Luego de algo de investigación, encontramos un post con el algoritmo en Visual Basic para excel, lo tradujimos a PowerScript y funcionó perfecto.

A continuación el código:


///******************************************************** 
//* FUNCION : fn_co_nitdv
//* FUNCION : Devuelve el Digito de Verificacion de un Nit (COLOMBIA) 
//* PARAMETROS : _nit: Numero de Nit a Calcular en string
//* RETORNO : Digito de Verificación en string
//* AUTOR : Johan Gálvez (johangalvez@lylsistemas.com) 
//********************************************************/ 
long WSuma, lnRetorno, Arreglo_PA[15], WDig_Ver, I
string WDato

_Nit = TRIM(_Nit) 
if _Nit="" or isnull(_Nit) then
 MESSAGEBOX("Error de NIT","El valor de NIT no puede ser nulo.") 
 RETURN 0
end if 

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)+TRIM(_Nit),15) 
WSuma=0 
WDig_Ver=0 

FOR I = 1 TO 15 
 WSuma=WSuma+(long(mid(WDato,I,1))*Arreglo_PA[I])
NEXT 

WSuma=MOD(WSuma,11) 

IF WSuma=0 OR WSuma=1 then 
 lnRetorno = WSuma 
ELSE 
 lnRetorno = 11 - WSuma 
END IF 

RETURN lnRetorno 


No hay comentarios:

Publicar un comentario