Función para convertir números a letras en Power Builder, para formato de factura

Hola, si alguien me puede ayudar quiero convertir el total de una factura a letras para poderlo imprimir, si alguien conoce alguna función les agradecería mucho. Uso pb 10.5
Gracias por su ayuda.

1 respuesta

Respuesta
1
Tienes que crear una función.
f_numletras(decimal dec_numero) return string
y luego pon este codigo dentro de la función:
String ls_unidades[], ls_decenas[], ls_centenas[], ls_numero, ls_numdesc[], ls_Aux01, ls_Aux02
string ls_valor1[] = {' mil ', ' millones ', ' billones '}
string ls_valor2[] = {' mil ', ' millón ', ' billón '}
String ls_decimal, ls_PartNum
Integer li_len, i
ls_unidades[1] = 'un'
ls_unidades[2] = 'dos'
ls_unidades[3] = 'tres'
ls_unidades[4] = 'cuatro'
ls_unidades[5] = 'cinco'
ls_unidades[6] = 'seis'
ls_unidades[7] = 'siete'
ls_unidades[8] = 'ocho'
ls_unidades[9] = 'nueve'
ls_unidades[10] = 'diez'
ls_unidades[11] = 'once'
ls_unidades[12] = 'doce'
ls_unidades[13] = 'trece'
ls_unidades[14] = 'catorce'
ls_unidades[15] = 'quince'
ls_unidades[16] = 'dieciseis'
ls_unidades[17] = 'diecisiete'
ls_unidades[18] = 'dieciocho'
ls_unidades[19] = 'diecinueve'
ls_unidades[20] = 'veinte'
ls_unidades[21] = 'veintiun'
ls_unidades[22] = 'veintidos'
ls_unidades[23] = 'veintitres'
ls_unidades[24] = 'veinticuatro'
ls_unidades[25] = 'veinticinco'
ls_unidades[26] = 'veintiseis'
ls_unidades[27] = 'veintisiete'
ls_unidades[28] = 'veintiocho'
ls_unidades[29] = 'veintinueve'
ls_decenas[3] = 'treinta'
ls_decenas[4] = 'cuarenta'
ls_decenas[5] = 'cincuenta'
ls_decenas[6] = 'sesenta'
ls_decenas[7] = 'setenta'
ls_decenas[8] = 'ochenta'
ls_decenas[9] = 'noventa'
ls_centenas[1] = 'ciento'
ls_centenas[2] = 'doscientos'
ls_centenas[3] = 'trescientos'
ls_centenas[4] = 'cuatrocientos'
ls_centenas[5] = 'quinientos'
ls_centenas[6] = 'seiscientos'
ls_centenas[7] = 'setecientos'
ls_centenas[8] = 'ochocientos'
ls_centenas[9] = 'novecientos'
ls_numero = string(adec_numero,'0.00')
doli_len ++ls_numdesc[li_len] = right( ls_numero, 3 )ls_numero = left( ls_numero, len(ls_numero) -3 )
loop while len(ls_numero) > 0
For i = li_len To 2 Step -1ls_PartNum = ''ls_Aux01 = ls_numdesc
If Len (ls_Aux01) = 3 ThenIf Integer(ls_Aux01) = 100 Thenls_PartNum += 'cien'Else
If Integer(Left(ls_Aux01,1)) > 0 Then ls_PartNum += ls_centenas[Integer(Left(ls_Aux01,1))]
End If
ls_Aux01 = Right( ls_Aux01, 2 )
If Integer(ls_Aux01) > 0 Then ls_PartNum += ' '
End If
If Len (ls_Aux01) = 2 ThenIf Integer(ls_Aux01) 0 Then ls_PartNum += ls_unidades[Integer(ls_Aux01)]ls_Aux01 = ''ElseIf Integer(Left(ls_Aux01,1)) > 0 Then ls_PartNum += ls_decenas[Integer(Left(ls_Aux01,1))]ls_Aux01 = Right( ls_Aux01, 1 )If Integer(ls_Aux01) > 0 Then ls_PartNum += ' y 'End If
End If
If Len (ls_Aux01) = 1 ThenIf Integer(ls_Aux01) > 0 Then ls_PartNum += ls_unidades[Integer(ls_Aux01)]
End If
If Len(ls_PartNum) > 0 ThenChoose Case iCase 5If Integer(ls_numdesc) = 1 Thenls_PartNum += ls_valor2[3]Elsels_PartNum += ls_valor1[3]End ifCase 4If Integer(ls_numdesc) = 1 Thenls_PartNum += ls_valor2[2]Elsels_PartNum += ls_valor1[2]End IfCase 3ls_PartNum += ls_valor1[1]End Choosels_numero += ls_PartNum
End If Next
ls_decimal = Right ( ls_numdesc[1] , 2 ) + '/100 Nuevos Soles'
return ls_numero + ' y ' + ls_decimal"

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas