Quisiera saber si alguien tiene una rutina para calcular el n° de CUIT
o CUIL a partir del n° de documento.
Desde ya muchas gracias.
Rodrigo Juarez
Mendoza, Argentina.
Daniel Salazar
General Guemes - Salta - Argentina
*/***********************************************************************
PARAMETER wcuil,vCondicion
* wcuil es el nro. de cuit/cuil en formato 99-999999999-9
* vCondicion es la condicion fiscal RI ,RNI,CF ,EX ,MON
* Dialog es una rutina que utilizo para mostrar una ventana
* con un mensaje y uno/dos botones muy similar al comando
* messagebox de windows
IF LASTKEY()=4+1 OR LASTKEY()=14+1 OR LASTKEY()=18+1
RETURN
ENDI
IF vCondicion = "CF "
RETURN
ENDI
wcuil1 = SUBSTR(wcuil,1,2)
wcuil2 = SUBSTR(wcuil,4,8)
wcuil3 = SUBSTR(wcuil,12+1,1)
vPondera = "5432765432"
vModulo = 11
RELEASE vFactor
DIMENSION vFactor(10)
FOR x = 1 TO 10
vFactor(x) = VAL(SUBSTR(vPondera,x,1))
NEXT
cuil = wcuil1 + wcuil2
vSuma = 0
FOR x = 1 to 10
valor = VAL(SUBSTR(cuil,x,1)) * vFactor(x)
vSuma = vSuma + valor
next
da = int(vSuma / vModulo)
dife = vSuma - (da * vModulo)
if dife <> 0
digito = vModulo - dife
else
digito = dife
endi
xopc=.t.
IF digito < 10
IF wCuil3 <> STR(digito,1)
xopc=dialog(" CUIT no valido, Continuar ? ",3,1,"")
IF xopc=2
_CUROBJ = _CUROBJ + 1
xopc=.t.
ENDI
ENDI
ELSE
xopc=dialog(" CUIT no valido, Continuar ? ",3,1,"")
IF xopc = 2
_CUROBJ = _CUROBJ + 1
xopc = .t.
ENDI
ENDI
RELEASE vFactor
RETURN xopc
--
¸,ø¤º°`°º¤ø,¸¸,ø¤º°`°º¤ø,¸¸,ø¤º°`°º¤ø,¸¸,ø¤º°`°º
Espartaco Palma Martínez
Administrador de Base de Datos
Subdirección de Sistemas
Dirección de Catastro e Impuesto Predial
H. Ayuntamiento Municipal, Acapulco, Gro., México.
(744)434-00-00 y 01 Ext. 4248
Ambas basadas en el numero de documento de las personas mas un agregado
anterior de 2 dígitos y uno posterior de 1 dígito.
CUIT: 30-12345678-9
CUIL: 20-12345678-2
Solo para Argentina.
---------------------------------------------
Eduardo Piován
e_pi...@co19set.com.ar
San Jenaro Norte
Santa Fe - Argentina
--
Saludos!!!
2° La generación de CUIT o CUIL la realizan unicamente el ANSSES, DGI, AFIP
y no se si algún otro organismo.
Yo hice alguna vez una rutina para generar el CUIT, pero hay ciertos casos
que el número generado, no es el mismo que el de los organismos oficiales.
De todos modos te adjunto la rutina y tu la pruebas y ves si puedes
corregirla.
*--------------------------------------------------------------------------
* FUNCTION GenCUIT
*--------------------------------------------------------------------------
* Genera número de CUIT o CUIL
* USO: GenCUIT(<Caracter o Numerico>, <Tipo>)
* RETORNA: Caracter "99-99999999-9"
* PARAMETROS: tNro = Número para generar CUIT
* tcTipo = "S"ociedad, "H"ombre, "M"ujer
* AUTOR: LMG
*--------------------------------------------------------------------------
FUNCTION GenCUIT(tNro, tcTipo)
LOCAL lcPrefijo, lcCUIT, lnI, lcNro, lnDigito
IF EMPTY(tcTipo)
tcTipo = "@"
ENDIF
IF TYPE("tNro") = "C"
tNro = ALLTRIM(tNro)
ENDIF
lcNro=PADL(tNro,8,"0")
DO CASE
CASE tcTipo="S"
lcPrefijo="3033"
CASE tcTipo="H"
lcPrefijo="2023"
CASE tcTipo="M"
lcPrefijo="2723"
OTHER
lcPrefijo="909192"
ENDCASE
lnI=1
DO WHILE lnI < 10
lcCUIT = SUBS(lcPrefijo,lnI,2) + "-" + lcNro
lnSuma = VAL(SUBS(lcCUIT,11,1))*2 + VAL(SUBS(lcCUIT,10,1))*3 + ;
VAL(SUBS(lcCUIT,9,1))*4 + VAL(SUBS(lcCUIT,8,1))*5 + ;
VAL(SUBS(lcCUIT,7,1))*6 + VAL(SUBS(lcCUIT,6,1))*7 + ;
VAL(SUBS(lcCUIT,5,1))*2 + VAL(SUBS(lcCUIT,4,1))*3 + ;
VAL(SUBS(lcCUIT,2,1))*4 + VAL(SUBS(lcCUIT,1,1))*5
lnDigito = IIF(MOD(lnSuma,11)=0 ,0 , 11-MOD(lnSuma,11))
IF lnDigito < 10
lcCUIT = lcCuit + "-" + STR(lnDigito,1)
EXIT
ENDIF
lnI = lnI + 2
ENDDO
RETURN lcCUIT
ENDFUNC
*--------------------------------------------------------------------------
--
Luis María Guayán
Vicente Trapani S.A.
Tucumán, Argentina
_____________________________________________
Microsoft Visual FoxPro MVP
SysOp de PortalFox - http://www.portalfox.com
_____________________________________________
"Rodrigo Juarez" <rodr...@azinformatica.com.ar> escribió en el mensaje
news:estqiuk2mscc48p1q...@4ax.com...