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 de achafio
1
1
achafio, Bachiller Ingenieria de Sistemas e Informatica Conocimientos en...
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"