Problema con una rutina que convierte la cifra total de una factura a texto en Visual FoxPro 9.0
Estimado Experto: He estado trabajando con visul foxpro 9.0 y estoy realizando un programa de Facturación, ahí anexe una rutina que me convierte el importe total de la factura a letras, cuando imprimo la !er factura todo bien, el problema es cuando imprimo la 2da factura (utilizo la misma rutina) me marca el siguiente error 'Fuction argument value, type, or count is invalid' seria tan amable de darle una revisada a mi rutina y decirme que estoy haciendo mal (de antemano gracias).
Anexo la rutina:
VMIMPORT=0
DIMENSION Cifras(3,9)
Cifras(1,01)="UN"
Cifras(1,02)="DOS"
Cifras(1,03)="TRES"
Cifras(1,04)="CUATRO"
Cifras(1,05)="CINCO"
Cifras(1,06)="SEIS"
Cifras(1,07)="SIETE"
Cifras(1,08)="OCHO"
Cifras(1,09)="NUEVE"
Cifras(2,01)="ONCE"
Cifras(2,02)="DOCE"
Cifras(2,03)="TRECE"
Cifras(2,04)="CATORCE"
Cifras(2,05)="QUINCE"
Cifras(2,06)="DIECISEIS"
Cifras(2,07)="DIECISIETE"
Cifras(2,08)="DIECIOCHO"
Cifras(2,09)="DIECINUEVE"
Cifras(3,01)="DIEZ"
Cifras(3,02)="VEINTE"
Cifras(3,03)="TREINTA"
Cifras(3,04)="CUARENTA"
Cifras(3,05)="CINCUENTA"
Cifras(3,06)="SESENTA"
Cifras(3,07)="SETENTA"
Cifras(3,08)="OCHENTA"
Cifras(3,09)="NOVENTA"
*-*-*-
SELECT DATOSFAC
GO TOP
m.wimporte = TOTALFAC
VMIMPORT=VMIMPORT+M.WIMPORTE
m.wimpent = INT(m.wimporte)
m.wimpdec = (m.wimporte - INT(m.wimporte)) * 100
m.wimpletra = Numletra(INT(m.wimporte))
m.wimpletra = m.wimpletra + " PESOS "+ TRANSFORM(m.wimpdec,"99")+"/100 M.N."
REPLACE ALL MONTOLET WITH M.WIMPLETRA
RETURN
*********************
FUNCTION NumLetra
*********************
PARAMETERS Numero
PRIVATE NumeroL,Contador,PosReal,Cifra,CifraPos,CifraPos2
PRIVATE PosRelativa,Incremento,Anade,NumLetra
*** Comprueba si el N£mero es 0 y retorna
IF ABS(numero) > 999999999 <====== Aqui me marca error cuando se imp 2da vez
RETURN "ERROR"
ENDIF
IF Numero=0
RETURN "CERO"
ENDIF
NumeroL=RTRIM(LTRIM(STR(INT(Numero))))
NumLetra=""
IF LEFT(NumeroL,1)="-"
NumeroL=SUBSTR(NumeroL,2)
NumLetra="MENOS "
ENDIF
*** Comprueba que el n£mero este entre -999,999,999 y 999,999,999
Contador = 1
Anexo la rutina:
VMIMPORT=0
DIMENSION Cifras(3,9)
Cifras(1,01)="UN"
Cifras(1,02)="DOS"
Cifras(1,03)="TRES"
Cifras(1,04)="CUATRO"
Cifras(1,05)="CINCO"
Cifras(1,06)="SEIS"
Cifras(1,07)="SIETE"
Cifras(1,08)="OCHO"
Cifras(1,09)="NUEVE"
Cifras(2,01)="ONCE"
Cifras(2,02)="DOCE"
Cifras(2,03)="TRECE"
Cifras(2,04)="CATORCE"
Cifras(2,05)="QUINCE"
Cifras(2,06)="DIECISEIS"
Cifras(2,07)="DIECISIETE"
Cifras(2,08)="DIECIOCHO"
Cifras(2,09)="DIECINUEVE"
Cifras(3,01)="DIEZ"
Cifras(3,02)="VEINTE"
Cifras(3,03)="TREINTA"
Cifras(3,04)="CUARENTA"
Cifras(3,05)="CINCUENTA"
Cifras(3,06)="SESENTA"
Cifras(3,07)="SETENTA"
Cifras(3,08)="OCHENTA"
Cifras(3,09)="NOVENTA"
*-*-*-
SELECT DATOSFAC
GO TOP
m.wimporte = TOTALFAC
VMIMPORT=VMIMPORT+M.WIMPORTE
m.wimpent = INT(m.wimporte)
m.wimpdec = (m.wimporte - INT(m.wimporte)) * 100
m.wimpletra = Numletra(INT(m.wimporte))
m.wimpletra = m.wimpletra + " PESOS "+ TRANSFORM(m.wimpdec,"99")+"/100 M.N."
REPLACE ALL MONTOLET WITH M.WIMPLETRA
RETURN
*********************
FUNCTION NumLetra
*********************
PARAMETERS Numero
PRIVATE NumeroL,Contador,PosReal,Cifra,CifraPos,CifraPos2
PRIVATE PosRelativa,Incremento,Anade,NumLetra
*** Comprueba si el N£mero es 0 y retorna
IF ABS(numero) > 999999999 <====== Aqui me marca error cuando se imp 2da vez
RETURN "ERROR"
ENDIF
IF Numero=0
RETURN "CERO"
ENDIF
NumeroL=RTRIM(LTRIM(STR(INT(Numero))))
NumLetra=""
IF LEFT(NumeroL,1)="-"
NumeroL=SUBSTR(NumeroL,2)
NumLetra="MENOS "
ENDIF
*** Comprueba que el n£mero este entre -999,999,999 y 999,999,999
Contador = 1
1 Respuesta
Respuesta de tigrefox
1