monto escrito

117 views
Skip to first unread message

Arnaldo R. Tablante R.

unread,
Aug 28, 2017, 9:05:01 AM8/28/17
to Comunidad de Visual Foxpro en Español
Buenos dias al la comunidad 

alguien tiene una rutina para que me la regale o la comparta para escribir un monto en letras, estuve buscando y no he conseguido 

la necesito para detallar en una factura ademas del total a pagar el miso en letras

gracias anticipadas 


Edgar Acevedo

unread,
Aug 28, 2017, 9:13:07 AM8/28/17
to publicesvfoxpro
FUNCTION DIN_TRA
   PARAMETERS M.NUMERO
   M.ValRet = ''
   DIMENSION umil(9), dmil(9), cmil(9), mmil(9), wmil(9)
   umil(1) = "un"
   umil(2) = "dos"
   umil(3) = "tres"
   umil(4) = "cuatro"
   umil(5) = "cinco"
   umil(6) = "seis"
   umil(7) = "siete"
   umil(8) = "ocho"
   umil(9) = "nueve"
   mmil(1) = "once"
   mmil(2) = "doce"
   mmil(3) = "trece"
   mmil(4) = "catorce"
   mmil(5) = "quince"
   mmil(6) = "dieciseis"
   mmil(7) = "diecisiete"
   mmil(8) = "dieciocho"
   mmil(9) = "diecinueve"
   dmil(1) = "diez"
   dmil(2) = "veinte"
   dmil(3) = "treinta"
   dmil(4) = "cuarenta"
   dmil(5) = "cincuenta"
   dmil(6) = "sesenta"
   dmil(7) = "setenta"
   dmil(8) = "ochenta"
   dmil(9) = "noventa"
   cmil(1) = "cien"
   cmil(2) = "doscientos "
   cmil(3) = "trescientos "
   cmil(4) = "cuatrocientos "
   cmil(5) = "quinientos "
   cmil(6) = "seiscientos "
   cmil(7) = "setecientos "
   cmil(8) = "ochocientos "
   cmil(9) = "novecientos "
   wmil(1) = "mil "
   wmil(2) = "dos mil "
   wmil(3) = "tres mil "
   wmil(4) = "cuatro mil "
   wmil(5) = "cinco mil "
   wmil(6) = "seis mil "
   wmil(7) = "siete mil "
   wmil(8) = "ocho mil "
   wmil(9) = "nueve mil "
   letra = space(10)
   letr1 = space(13)
   STORE 0 TO sa1, sa2, sa3, sa4, sa5, sa6, sa7, sa8, sa9, ban, ba1
   STORE " " TO tre1, tre2, tre3
   letr1 = STR(M.NUMERO, 13, 2)
   letra = LEFT(letr1,10)
   let1 = STR(M.NUMERO, 13, 2)
   let1 = RIGHT(let1,2)
   let2 = let1 + "/100"
   let2 = LTRIM(let2)
   tre3 = " "
   sa9 = 0
   tre3 = SUBSTR(letra,1,1)
   sa9 = VAL(tre3)
   IF sa9 > 0
      ba1 = 1
      M.ValRet = wmil(sa9)
   ENDIF
   sa1 = 1
   sa2 = 2
   sa9 = 0
   sa4 = 0
   DO WHILE sa1 <= 3
      ban = 0
      ba1 = 0
      sa7 = 0
      sa9 = sa2 + 2
      DO WHILE sa2 <= sa9
         sa7 = sa7 + 1
         tre1 = SUBSTR(letra,sa2,1)
         sa4 = VAL(tre1)
         IF sa4 > 0
            IF sa7 = 1
               tre2 = SUBSTR(letra,sa2+1,1)
               sa5 = VAL(tre2)
               tre3 = SUBSTR(letra,sa2+2,1)
               sa6 = VAL(tre3)
               IF (sa5 > 0 OR sa6 > 0)
                 IF sa4 = 1
                    M.ValRet = M.ValRet + cmil(1) + "to "
                 else
                    M.ValRet = M.ValRet + cmil(sa4)
                 ENDIF
               else
                  M.ValRet = M.ValRet + cmil(sa4)
               ENDIF
               ban = 1
               ba1 = 1
            ENDIF
            IF sa7 = 2
               tre2 = SUBSTR(letra,sa2+1,1)
               sa5 = VAL(tre2)
               IF sa5 > 0
                  IF sa4 = 1
                     M.ValRet = M.ValRet + mmil(sa5)
                     sa2 = sa2 + 1
                  else
                     M.ValRet = M.ValRet + dmil(sa4) + " y "
                  ENDIF
               ENDIF
               IF sa5 = 0
                  M.ValRet = M.ValRet + dmil(sa4)
               ENDIF
               ban = 1
               ba1 = 1
            ENDIF
            IF sa7 = 3
               IF sa2 = 10 AND sa4 = 1
                  M.ValRet = M.ValRet + umil(1) + "o"
               else
                  M.ValRet = M.ValRet + umil(sa4)
                  IF sa4 > 1
                     ba1 = 1
                  ENDIF
               ENDIF
               ban = 1
            ENDIF
         ENDIF
         sa2 = sa2 + 1
      enddo
      IF sa1 = 1 AND ban = 1
         IF ba1 = 1
            M.ValRet = M.ValRet + " millones "
         else
            M.ValRet = M.ValRet + " millon "
         ENDIF
      ENDIF
      IF sa1 = 2 AND ban = 1
         M.ValRet = M.ValRet + " mil "
      ENDIF
      sa1 = sa1 + 1
   enddo
   M.ValRet = ALLTRIM(ALLTRIM(M.ValRet) + " Quetzales con " + let2)
RETURN M.ValRet

Arnaldo R. Tablante R.

unread,
Aug 28, 2017, 9:07:39 PM8/28/17
to Comunidad de Visual Foxpro en Español
gracias amigo edgar, esta rutima es similar a una que desarrolle en rpg por los años 80, nuevamente muy agradecido 
Reply all
Reply to author
Forward
0 new messages