Me pueden ayudar con la rutina para convertir una cantidad en pesos a letra, es decir: $ 5,800.20 convertir a (cinco mil ochocientos pesos 20/100 m.n.)
1 Respuesta
Respuesta de diogenesp
1
1
diogenesp, desde 1995 programo en Visual Fox Pro y son Netware Manager de un...
Edgard si queres pasame un mail y te la envió en forma directa. Esta es la función pero no queda del todo legible. Ej de uso ?DES_NUM(5800.20) ****************************** FUNCTION DES_NUM(CANTIDAD) *DECLARACION DE VARIABLES LOCAL CENTAVOS,PESOS,MILES,cNUMERO,MILLONES,ESMILLON,TEX_MILLON LOCAL APUNTADOR cTEXTO="" Abrime('NUMEROS') sele numeros *MESSAGEBOX("CANTIDAD= "+STR(CANTIDAD,15,2),64,"CTX1000") *SE EXTRAE LA CANTIDAD EN CENTAVOS Y SE LE AGREGA *EL TEXTO /100 M.N. CENTAVOS = SUBSTR(STR(CANTIDAD,15,2),14,2) CENTAVOS = CENTAVOS + " /100.-" PESOS = STR(CANTIDAD,15,2) PESOS = SUBSTR(PESOS,11,2) *MESSAGEBOX("EL NUMERO 1 ES "+PESOS,64,"CTX") *SE CALCULA EL TEXTO PARA LOS PESOS cNUMERO=VAL(ALLTRIM(PESOS)) *MESSAGEBOX("EL NUMERO ES "+STR(cNUMERO),64,"CTX") DO CASE CASE cNUMERO>0 AND cNUMERO<=9 LOCATE FOR NUMEROS.NUMERO=cNUMERO cTEXTO =ALLTRIM(NUMEROS.TEXTO)+" "+cTEXTO * MESSAGEBOX("ENTRO CASO 1",64,"CTX") GO TOP CASE cNUMERO>=10 AND cNUMERO<=19 LOCATE FOR NUMEROS.NUMERO=cNUMERO cTEXTO = ALLTRIM(NUMEROS.TEXTO)+" "+cTEXTO * MESSAGEBOX("ENTRO CASO 2",64,"CTX") GO TOP CASE cNUMERO>=20 AND cNUMERO<=29 LOCATE FOR NUMEROS.NUMERO=cNUMERO cTEXTO = ALLTRIM(NUMEROS.TEXTO)+" "+cTEXTO * MESSAGEBOX("ENTRO CASO 3",64,"CTX") GO TOP OTHERWISE *UNIDADES * MESSAGEBOX("ENTRO ULTIMO CASO ",64,"CTX") PESOS = ALLTRIM(SUBSTR(STR(CANTIDAD,15,2),12,1)) cNUMERO=VAL(PESOS) LOCATE FOR NUMEROS.NUMERO=cNUMERO IF cNUMERO=0 THEN *NADA ELSE cTEXTO = "Y "+ALLTRIM(NUMEROS.TEXTO)+" "+cTEXTO ENDIF *DECENAS GO TOP PESOS = ALLTRIM(SUBSTR(STR(CANTIDAD,15,2),11,1)) PESOS = ALLTRIM(PESOS+"0") cNUMERO=VAL(PESOS) LOCATE FOR NUMEROS.NUMERO=cNUMERO cTEXTO = ALLTRIM(NUMEROS.TEXTO)+" "+cTEXTO GO TOP ENDCASE PESOS = ALLTRIM(SUBSTR(STR(CANTIDAD,15,2),10,1)) cNUMERO=VAL(ALLTRIM(PESOS)) IF cNUMERO=1 THEN cTEXTO= "CIENTO "+cTEXTO ELSE PESOS=PESOS+"00" cNUMERO=VAL(ALLTRIM(PESOS)) * MESSAGEBOX("EL NUMERO PRUEBA ES :"+STR(cNUMERO),64,"CTX") LOCATE FOR NUMEROS.NUMERO=cNUMERO * MESSAGEBOX("TEXTO ES :"+NUMEROS.TEXTO,64,"CTX") cTEXTO = ALLTRIM(NUMEROS.TEXTO)+" "+cTEXTO GO TOP ENDIF cNUMERO=0 *SE CALCULA EL TEXTO PARA LOS MILES MILES = STR(CANTIDAD,15,2) MILES = SUBSTR(MILES,8,2) cNUMERO=VAL(ALLTRIM(MILES)) *MESSAGEBOX("EL NUMERO ES "+STR(cNUMERO),64,"CTX") DO CASE CASE cNUMERO>0 AND cNUMERO<=9 LOCATE FOR NUMEROS.NUMERO=cNUMERO cTEXTO =ALLTRIM(NUMEROS.TEXTO)+" MIL "+cTEXTO * MESSAGEBOX("ENTRO CASO 1",64,"CTX") GO TOP CASE cNUMERO>=10 AND cNUMERO<=19 LOCATE FOR NUMEROS.NUMERO=cNUMERO cTEXTO = ALLTRIM(NUMEROS.TEXTO)+" MIL "+cTEXTO * MESSAGEBOX("ENTRO CASO 2",64,"CTX") GO TOP CASE cNUMERO>=20 AND cNUMERO<=29 LOCATE FOR NUMEROS.NUMERO=cNUMERO cTEXTO = ALLTRIM(NUMEROS.TEXTO)+" MIL "+cTEXTO * MESSAGEBOX("ENTRO CASO 3",64,"CTX") GO TOP OTHERWISE *UNIDADES * MESSAGEBOX("ENTRO ULTIMO CASO ",64,"CTX") MILES = ALLTRIM(SUBSTR(STR(CANTIDAD,15,2),9,1)) cNUMERO=VAL(MILES) LOCATE FOR NUMEROS.NUMERO=cNUMERO IF cNUMERO=0 THEN *NADA ELSE cTEXTO = "Y "+ALLTRIM(NUMEROS.TEXTO)+" MIL "+cTEXTO ENDIF *DECENAS GO TOP MILES = ALLTRIM(SUBSTR(STR(CANTIDAD,15,2),8,1)) MILES = ALLTRIM(MILES+"0") cNUMERO=VAL(MILES) LOCATE FOR NUMEROS.NUMERO=cNUMERO cTEXTO = ALLTRIM(NUMEROS.TEXTO)+" "+cTEXTO GO TOP ENDCASE MILES = ALLTRIM(SUBSTR(STR(CANTIDAD,15,2),7,1)) cNUMERO=VAL(ALLTRIM(MILES)) IF cNUMERO=1 THEN cTEXTO= "CIENTO "+cTEXTO ELSE MILES=MILES+"00" cNUMERO=VAL(ALLTRIM(MILES)) LOCATE FOR NUMEROS.NUMERO=cNUMERO cTEXTO = ALLTRIM(NUMEROS.TEXTO)+" "+cTEXTO GO TOP ENDIF cNUMERO=0 *SE CALCULA EL TEXTO PARA LOS MILLONES MILLONES = STR(CANTIDAD,15,2) ESMILLON= SUBSTR(MILLONES,5,3) IF VAL(ALLTRIM(ESMILLON))=1 THEN TEX_MILLON=" MILLON " ELSE TEX_MILLON=" MILLONES " ENDIF MILLONES = SUBSTR(MILLONES,5,2) cNUMERO=VAL(ALLTRIM(MILLONES)) *MESSAGEBOX("EL NUMERO ES "+STR(cNUMERO),64,"CTX") DO CASE CASE cNUMERO>0 AND cNUMERO<=9 LOCATE FOR NUMEROS.NUMERO=cNUMERO cTEXTO =ALLTRIM(NUMEROS.TEXTO)+TEX_MILLON+cTEXTO * MESSAGEBOX("ENTRO CASO 1",64,"CTX") GO TOP CASE cNUMERO>=10 AND cNUMERO<=19 LOCATE FOR NUMEROS.NUMERO=cNUMERO cTEXTO = ALLTRIM(NUMEROS.TEXTO)+TEX_MILLON+cTEXTO * MESSAGEBOX("ENTRO CASO 2",64,"CTX") GO TOP CASE cNUMERO>=20 AND cNUMERO<=29 LOCATE FOR NUMEROS.NUMERO=cNUMERO cTEXTO = ALLTRIM(NUMEROS.TEXTO)+TEX_MILLON+cTEXTO * MESSAGEBOX("ENTRO CASO 3",64,"CTX") GO TOP OTHERWISE *UNIDADES * MESSAGEBOX("ENTRO ULTIMO CASO ",64,"CTX") MILLONES = ALLTRIM(SUBSTR(STR(CANTIDAD,15,2),6,1)) cNUMERO=VAL(MILLONES) LOCATE FOR NUMEROS.NUMERO=cNUMERO IF cNUMERO=0 THEN *NADA ELSE cTEXTO = "Y "+ALLTRIM(NUMEROS.TEXTO)+TEX_MILLON+cTEXTO ENDIF *DECENAS GO TOP MILLONES = ALLTRIM(SUBSTR(STR(CANTIDAD,15,2),5,1)) MILLONES = ALLTRIM(MILLONES+"0") cNUMERO=VAL(MILLONES) LOCATE FOR NUMEROS.NUMERO=cNUMERO cTEXTO = ALLTRIM(NUMEROS.TEXTO)+" "+cTEXTO GO TOP ENDCASE MILLONES = ALLTRIM(SUBSTR(STR(CANTIDAD,15,2),4,1)) cNUMERO=VAL(ALLTRIM(MILLONES)) IF cNUMERO=1 THEN cTEXTO= "CIENTO "+cTEXTO ELSE MILLONES=MILLONES+"00" cNUMERO=VAL(ALLTRIM(MILLONES)) LOCATE FOR NUMEROS.NUMERO=cNUMERO cTEXTO = ALLTRIM(NUMEROS.TEXTO)+" "+cTEXTO GO TOP ENDIF IF FLOOR(CANTIDAD)=1 THEN cTEXTO = cTEXTO + " PESO con" ELSE cTEXTO = cTEXTO + " PESOS con" ENDIF cTEXTO = cTEXTO +" "+ CENTAVOS *MESSAGEBOX("cTEXTO QUEDA = "+cTEXTO,"CTX1000") Se le NÚMEROS USE RETURN cTEXTO