Ver Mensaje Individual
  #1 (permalink)  
Antiguo 11/07/2012, 12:25
K_nijo2000
 
Fecha de Ingreso: diciembre-2011
Mensajes: 8
Antigüedad: 12 años, 5 meses
Puntos: 0
Numero a letras

Hola encontre una funcion que me convierte un numero en texto, mi problema es cuando ingreso numeros sin decimales por ejemplo 1972.00 lo escribe UN MIL NOVECIENTOS SETENTA Y UNO PESOS 100/100 M.N. cuando deberia de escribir UN MIL NOVECIENTOS SETENTA Y DOS PESOS 00/100 M.N.
el codigo es:

<%
' 'FUNCION PARA GENERAR LA CANTIDAD A LETRA

'FUCNION PARA ESCRIBIR LOS NUMEROS EN LETRAS

Dim xcen(9) 'centenas
Dim xdec(9) 'decenas
Dim xuni(9) 'unidades
Dim xexc(6) 'except
Dim ceros(9)

Function CONVERTIR(pnumero)

Dim letras
Dim i
Dim c
Dim j
Dim xnumero
Dim xnum
Dim num
Dim digito
Dim numero_ent
Dim entero
Dim decimales
Dim temp

xcen(2) = "DOSC"
xcen(3) = "TRESC"
xcen(4) = "CUATROC"
xcen(5) = "QUIN"
xcen(6) = "SEISC"
xcen(7) = "SETEC"
xcen(8) = "OCHOC"
xcen(9) = "NOVEC"
xdec(2) = "VEINTI"
xdec(3) = "TREI"
xdec(4) = "CUARE"
xdec(5) = "CINCUE"
xdec(6) = "SESE"
xdec(7) = "SETE"
xdec(8) = "OCHE"
xdec(9) = "NOVE"
xuni(1) = "UNO"
xuni(2) = "DOS"
xuni(3) = "TRES"
xuni(4) = "CUATRO"
xuni(5) = "CINCO"
xuni(6) = "SEIS"
xuni(7) = "SIETE"
xuni(8) = "OCHO"
xuni(9) = "NUEVE"
xexc(1) = "DIEZ"
xexc(2) = "ONCE"
xexc(3) = "DOCE"
xexc(4) = "TRECE"
xexc(5) = "CATORCE"
xexc(6) = "QUINCE"
ceros(1) = "0"
ceros(2) = "00"
ceros(3) = "000"
ceros(4) = "0000"
ceros(5) = "00000"
ceros(6) = "000000"
ceros(7) = "0000000"
ceros(8) = "00000000"

c = 1
i = 1
j = 0

xnumero = cStr(pnumero)
If Cdbl(LTrim(RTrim(pnumero))) < 999999999.99 Then
numero_ent = Cdbl(Int(pnumero))
If Len(numero_ent) < 9 Then
numero_ent = ceros(9 - Len(numero_ent)) & numero_ent
End If
entero = Cdbl(Int(numero_ent))
decimales = (Cdbl(xnumero) - entero) * 100

Do While i < 8
temp = 0
num = Cdbl(Mid(numero_ent, i, 3))
xnum = Mid(numero_ent, i, 3)
digito = Cdbl(Mid(xnum, 1, 1))

'/* analizo el numero entero de a 3 */
If xnum = "000" Then
j = 0
Else
j = 1
If digito > 1 Then
letras = letras & xcen(digito) & "IENTOS "
End If
If Mid(xnum, 1, 1) = "1" And Mid(xnum, 2, 2) <> "00" Then
letras = letras & "CIENTO "
ElseIf Mid(xnum, 1, 1) = "1" Then
letras = letras & "CIEN "
End If

'/* analisis de las decenas */
digito = Cdbl(Mid(xnum, 2, 1))
If digito > 2 And Mid(xnum, 3, 1) = "0" Then
letras = letras & xdec(digito) & "NTA "
temp = 1
End If

If digito > 2 And Mid(xnum, 3, 1) <> "0" Then
letras = letras & xdec(digito) & "NTA Y "

End If

If digito = 2 And Mid(xnum, 3, 1) = "0" Then
letras = letras & "VEINTE "
temp = 1
ElseIf digito = 2 And Mid(xnum, 3, 1) <> "0" Then
letras = letras & "VEINTI"

End If

If digito = 1 And Mid(xnum, 3, 1) >= "6" Then
letras = letras & "DIECI"
ElseIf digito = 1 And Mid(xnum, 3, 1) < "6" Then
letras = letras & xexc(Cdbl(Mid(xnum, 3, 1) + 1))
temp = 1
End If
End If

if temp = 0 then
'/* analisis del ultimo digito */
digito = Cdbl(Mid(xnum, 3, 1))
If ((c = 1) Or (c = 2)) And xnum = "001" Then
letras = letras & "UN"
Else
If ((c = 1) Or (c = 2)) And xnum >= "020" And Mid(xnum, 3, 1) = "1" Then
letras = letras & "UN"
Else
If digito <> 0 Then
letras = letras & xuni(digito)
End If
End If
End If
end if

If j = 1 And i = 1 And xnum = "001" And c = 1 Then
letras = letras & " MILLON "
ElseIf j = 1 And i = 1 And xnum <> "001" And c = 1 Then
letras = letras & " MILLONES "
ElseIf j = 1 And i = 4 And c = 2 Then
letras = letras & " MIL "
End If
i = i + 3
c = c + 1
Loop
If letras = "" Then
letras = "CERO "
End If
If decimales <> 0 Then
decimales = Round(decimales)

letras = letras & " PESOS " & CStr(decimales) & "/100 M.N."
else
letras = letras & " PESOS 00/100 M.N."
End If

End If

'EN ESTA VARIABLE SESSION SE GUARDA EL NUMERO EN LETRAS
Session("Valor") = letras
End Function

'aqui se manda a llamar a la funcion con la variable que se quiere convertir
call CONVERTIR(total)
%>

si alguen me puede ayudar se lo agradeceria bastante