Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Toscano

Uma Função

Recommended Posts

<%Dim x_Centavos, x_I, x_J, x_K, x_Numero, x_QtdCentenas, x_TotCentenas, x_TxtExtenso( 900 ), x_TxtMoeda( 6 ), x_ValCentena( 6 ), x_Valor, x_ValSoma' Matrizes de textosx_TxtMoeda( 1 ) = "rea"x_TxtMoeda( 2 ) = "mil"x_TxtMoeda( 3 ) = "milh"x_TxtMoeda( 4 ) = "bilh"x_TxtMoeda( 5 ) = "trilh"x_TxtExtenso( 1 ) = "um"x_TxtExtenso( 2 ) = "dois"x_TxtExtenso( 3 ) = "tres"x_TxtExtenso( 4 ) = "quatro"x_TxtExtenso( 5 ) = "cinco"x_TxtExtenso( 6 ) = "seis"x_TxtExtenso( 7 ) = "sete"x_TxtExtenso( 8 ) = "oito"x_TxtExtenso( 9 ) = "nove"x_TxtExtenso( 10 ) = "dez"x_TxtExtenso( 11 ) = "onze"x_TxtExtenso( 12 ) = "doze"x_TxtExtenso( 13 ) = "treze"x_TxtExtenso( 14 ) = "quatorze"x_TxtExtenso( 15 ) = "quinze"x_TxtExtenso( 16 ) = "dezesseis"x_TxtExtenso( 17 ) = "dezessete"x_TxtExtenso( 18 ) = "dezoito"x_TxtExtenso( 19 ) = "dezenove"x_TxtExtenso( 20 ) = "vinte"x_TxtExtenso( 30 ) = "trinta"x_TxtExtenso( 40 ) = "quarenta"x_TxtExtenso( 50 ) = "cinquenta"x_TxtExtenso( 60 ) = "sessenta"x_TxtExtenso( 70 ) = "setenta"x_TxtExtenso( 80 ) = "oitenta"x_TxtExtenso( 90 ) = "noventa"x_TxtExtenso( 100 ) = "cento"x_TxtExtenso( 200 ) = "duzentos"x_TxtExtenso( 300 ) = "trezentos"x_TxtExtenso( 400 ) = "quatrocentos"x_TxtExtenso( 500 ) = "quinhentos"x_TxtExtenso( 600 ) = "seiscentos"x_TxtExtenso( 700 ) = "setentos"x_TxtExtenso( 800 ) = "oitocentos"x_TxtExtenso( 900 ) = "novecentos"' Função Principal de Conversão de Valores em ExtensoFunction Extenso( x_Numero )x_Numero = FormatNumber( x_Numero , 2 )x_Centavos = right( x_Numero , 2 )x_ValCentena( 0 ) = 0x_QtdCentenas = int( ( len( x_Numero ) + 1 ) / 4 )For x_I = 1 to x_QtdCentenasx_ValCentena( x_I ) = "" Next'x_I = 1x_J = 1For x_K = len( x_Numero ) - 3 to 1 step -1x_ValCentena( x_J ) = mid( x_Numero , x_K , 1 ) & x_ValCentena( x_J )if x_I / 3 = int( x_I / 3 ) thenx_J = x_J + 1x_K = x_K - 1end ifx_I = x_I + 1nextx_TotCentenas = 0Extenso = "" For x_I = x_QtdCentenas to 1 step -1x_TotCentenas = x_TotCentenas + int( x_ValCentena( x_I ) )if int( x_ValCentena( x_I ) ) <> 0 or ( int( x_ValCentena( x_I ) ) = 0 and x_I = 1 )thenif int( x_ValCentena( x_I ) = 0 and int( x_ValCentena( x_I + 1 ) ) = 0 and x_I = 1 )thenExtenso = Extenso & ExtCentena( x_ValCentena( x_I ) , x_TotCentenas ) & " de " & x_TxtMoeda( x_I )elseExtenso = Extenso & ExtCentena( x_ValCentena( x_I ) , x_TotCentenas ) & " " & x_TxtMoeda( x_I )end ifif int( x_ValCentena( x_I ) ) <> 1 or ( x_I = 1 and x_TotCentenas <> 1 ) thenSelect Case x_ICase 1Extenso = Extenso & "is"Case 3, 4, 5Extenso = Extenso & "ões"End Select elseSelect Case x_ICase 1Extenso = Extenso & "l"Case 3, 4, 5Extenso = Extenso & "ão"End Select end ifend ifif int( x_ValCentena( x_I - 1 ) ) = 0 thenExtenso = Extensoelseif ( int( x_ValCentena( x_I + 1 ) ) = 0 and ( x_I + 1 ) <= x_QtdCentenas ) or ( x_I = 2 ) thenExtenso = Extenso & " e "elseExtenso = Extenso & ", "end ifend if nextif x_Centavos > 0 thenif int( x_Centavos ) = 1 thenExtenso = Extenso & " e " & ExtDezena( x_Centavos ) & " centavo"elseExtenso = Extenso & " e " & ExtDezena( x_Centavos ) & " centavos"end ifend ifExtenso = UCase( Left( Extenso , 1 ) )&right( Extenso , len( Extenso ) - 1 )End Functionfunction ExtDezena( x_Valor )' Retorna o Valor por Extenso referente à DEZENA recebidaExtDezena = ""if int( x_Valor ) > 0 thenif int( x_Valor ) < 20 thenExtDezena = x_TxtExtenso( int( x_Valor ) )elseExtDezena = x_TxtExtenso( int( int( x_Valor ) / 10 ) * 10 )if ( int( x_Valor ) / 10 ) - int( int( x_Valor ) / 10 ) <> 0 thenExtDezena = ExtDezena & " e " & x_TxtExtenso( int( right( x_Valor , 1 ) ) )end ifend ifend ifEnd Functionfunction ExtCentena( x_Valor, x_ValSoma )ExtCentena = ""if int( x_Valor ) > 0 thenif int( x_Valor ) = 100 thenExtCentena = "cem"elseif int( x_Valor ) < 20 thenif int( x_Valor ) = 1 thenIf x_ValSoma - int( x_Valor ) = 0 thenExtCentena = "hum"elseExtCentena = x_TxtExtenso( int( x_Valor ) )end ifelseExtCentena = x_TxtExtenso( int( x_Valor ) )end ifelseif int( x_Valor ) < 100 thenExtCentena = ExtDezena( right( x_Valor , 2 ) )else ExtCentena = x_TxtExtenso( int( int( x_Valor ) / 100 )*100 )if ( int( x_Valor ) / 100 ) - int( int( x_Valor ) / 100 ) <> 0 thenExtCentena = ExtCentena & " e " & ExtDezena( right( x_Valor , 2 ) )end ifend ifend ifend ifend ifEnd Function%>

Chama a função assim:

 

Response.Write Extenso(500)

 

Retorna

 

Quinhentos Reais

Compartilhar este post


Link para o post
Compartilhar em outros sites

tem sim cara mais o codigo eh monstruoso ^^hehe ja havia respondido isto em outro topico nao lembro nem se eh neste forum ou em outro mais ta ai a mesma resposta hehe você vai passar pelo menos uns 2 dias em cima do codigo pra fazer ele ecrever ateh 1000 ou você pode colocar no banco tbm e usar a propria chave como numero no caso chave 1 numero 1 nome do numero "UM" ai você poderia ateh mesmo fornecer para algumas pessoas isso e seria mais facil você pode criar um campo de cadastro e nem se estrssar de ir la no banco cadastrar basta dai usar o sistema ^^abraços e boa sorte hehe []'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.