|
Iniciado por Boller, mar., 07 2021 1:32 AM - 8 respostas |
| |
| | | |
|
| |
Membro registado 3.655 mensagems Popularité : +175 (223 votes) |
|
Publicado em março, 07 2021 - 1:32 AM |
Número por extenso
PROCEDURE Número PorExtenso(Valor, Moeda_Singular is string ="real", Moeda_Plural is string = "reais", sFracao_Singular is string = "centavo", sFracao_Plural is string ="centavos")
Unidade is array of 100 strings Dezena,Centena are arrays of 100 strings C1,C2,C3,svalor are strings Extenso is string
SWITCH Valor CASE 0: RESULT "zero " + Moeda_Singular CASE> 999999999999.99 : RESULT " Número muito Grande " END
Moeda_Plural = NoSpace(Moeda_Plural)+" " Moeda_Singular = NoSpace(Moeda_Singular)+" "
svalor = NumToString(Valor,"012,2f") Unidade[1]="" Unidade[2]="um " Unidade[3]="dois " Unidade[4]="três " Unidade[5]="quatro " Unidade[6]="cinco " Unidade[7]="seis " Unidade[8]="sete " Unidade[9]="oito " Unidade[10]="nove " Unidade[11]="dez " Unidade[12]="onze " Unidade[13]="doze " Unidade[14]="treze " Unidade[15]="quatorze " Unidade[16]="quinze " Unidade[17]="dezesseis " Unidade[18]="dezessete " Unidade[19]="dezoito " Unidade[20]="dezenove " Dezena[1]="" Dezena[2]="dez " Dezena[3]="vinte " Dezena[4]="trinta " Dezena[5]="quarenta " Dezena[6]="cinquenta " Dezena[7]="sessenta " Dezena[8]="setenta " Dezena[9]="oitenta " Dezena[10]="noventa " Centena[1]="" Centena[2]="cento " Centena[3]="duzentos " Centena[4]="trezentos " Centena[5]="quatrocentos " Centena[6]="quinhentos " Centena[7]="seiscentos " Centena[8]="setecentos " Centena[9]="oitocentos " Centena[10]="novecentos " Extenso=""
IF Val(Middle(svalor,1,3))>0 THEN C1=Middle(svalor,1,1) C2=Middle(svalor,2,1) C3=Middle(svalor,3,1) IF(Val(C2+C3)=0 AND C1="1") THEN Extenso += "cem " ELSE Extenso += Centena[Val(C1)+1] IF(Val(C1)>0 AND Val(C2+C3)>0) THEN Extenso += "e " ELSE Extenso +="" END IF(Val(C2)=1) THEN Extenso += Unidade[Val(C2+C3)+1] ELSE Extenso += Dezena[Val(C2)+1] IF(Val(C2)>0 AND Val(C3)>0) THEN Extenso += "e " ELSE Extenso += "" +Unidade[Val(C3)+1] END Extenso += Unidade[Val(C3)+1] END END IF(Val(C1+C2+C3)=1) THEN Extenso += "milhão" ELSE Extenso += "milhões, " END END
IF Val(Middle(svalor,4,3))>0 THEN C1=Middle(svalor,4,1) C2=Middle(svalor,5,1) C3=Middle(svalor,6,1) IF(Val(C2+C3)=0 AND C1="1") THEN Extenso += "cem " ELSE Extenso += Centena[Val(C1)+1] IF(Val(C1)>0 AND Val(C2+C3)>0) THEN Extenso += "e " ELSE Extenso +="" END IF(Val(C2)=1) THEN Extenso += Unidade[Val(C2+C3)+1] ELSE Extenso += Dezena[Val(C2)+1] IF(Val(C2)>0 AND Val(C3)>0) THEN Extenso += "e " ELSE Extenso += "" END Extenso += Unidade[Val(C3)+1] END END Extenso += "mil," END
IF Val(Middle(svalor,7,3))>0 THEN C1=Middle(svalor,7,1) C2=Middle(svalor,8,1) C3=Middle(svalor,9,1) IF(Val(C2+C3)=0 AND C1="1") THEN Extenso += "cem " ELSE Extenso += Centena[Val(C1)+1] IF(Val(C1)>0 AND Val(C2+C3)>0) THEN Extenso += "e " ELSE Extenso +="" END IF(Val(C2)=1) THEN Extenso += Unidade[Val(C2+C3)+1] ELSE Extenso += Dezena[Val(C2)+1] IF(Val(C2)>0 AND Val(C3)>0) THEN Extenso += "e " ELSE Extenso += "" END Extenso += Unidade[Val(C3)+1] END END END
IF(Valor >0.99) AND (Valor <1.99) THEN Extenso += Moeda_Singular END IF(Valor>1.99) THEN Extenso += Moeda_Plural END IF(Valor <0.99) Extenso += "" END
IF Val(Middle(svalor,11,2))>0 THEN C2=Middle(svalor,11,1) C3=Middle(svalor,12,1) IF Extenso = "" THEN Extenso += "" ELSE Extenso += "e " END IF(Val(C2)=1) THEN Extenso += Unidade[Val(C2+C3)+1] ELSE Extenso += Dezena[Val(C2)+1] IF(Val(C2)>0 AND Val(C3)>0 )THEN Extenso += "e " ELSE Extenso += "" END Extenso += Unidade[Val(C3)+1] END IF(Val(C2+C3)>1) THEN Extenso += sFracao_Plural ELSE Extenso += sFracao_Singular END END
RESULT = Extenso
-- Adriano José Boller ______________________________________________ Consultor e Representante Oficial da PcSoft no Brasil +55 (41) 99949 1800 adrianoboller@gmail.com skype: adrianoboller http://wxinformatica.com.br/ |
| |
| |
| | | |
|
| | |
| |
Membro registado 3.655 mensagems Popularité : +175 (223 votes) |
|
Publicado em março, 08 2021 - 2:13 PM |
Prezados,
Ficou um espaço no nome da procedure, me desculpem, o correto é:
Procedure NumeroPorExtenso(Valor, Moeda_Singular is string ="real", Moeda_Plural is string = "reais", sFracao_Singular is string = "centavo", sFracao_Plural is string ="centavos")
-- Adriano José Boller ______________________________________________ Consultor e Representante Oficial da PcSoft no Brasil +55 (41) 99949 1800 adrianoboller@gmail.com skype: adrianoboller http://wxinformatica.com.br/ |
| |
| |
| | | |
|
| | |
| |
Membro registado 3.655 mensagems Popularité : +175 (223 votes) |
|
Publicado em março, 08 2021 - 2:16 PM |
Procedure FullnameNumber(Valor, Moeda_Singular is string ="real", Moeda_Plural is string = "reais", sFracao_Singular is string = "centavo", sFracao_Plural is string ="centavos")
Unidade is array of 100 strings Dezena,Centena are arrays of 100 strings C1,C2,C3,svalor are strings Extenso is string
SWITCH Valor CASE 0: RESULT "zero " + Moeda_Singular CASE> 999999999999.99 : RESULT " Número muito Grande " END
Moeda_Plural = NoSpace(Moeda_Plural)+" " Moeda_Singular = NoSpace(Moeda_Singular)+" "
svalor = NumToString(Valor,"012,2f") Unidade[1]="" Unidade[2]="um " Unidade[3]="dois " Unidade[4]="três " Unidade[5]="quatro " Unidade[6]="cinco " Unidade[7]="seis " Unidade[8]="sete " Unidade[9]="oito " Unidade[10]="nove " Unidade[11]="dez " Unidade[12]="onze " Unidade[13]="doze " Unidade[14]="treze " Unidade[15]="quatorze " Unidade[16]="quinze " Unidade[17]="dezesseis " Unidade[18]="dezessete " Unidade[19]="dezoito " Unidade[20]="dezenove " Dezena[1]="" Dezena[2]="dez " Dezena[3]="vinte " Dezena[4]="trinta " Dezena[5]="quarenta " Dezena[6]="cinquenta " Dezena[7]="sessenta " Dezena[8]="setenta " Dezena[9]="oitenta " Dezena[10]="noventa " Centena[1]="" Centena[2]="cento " Centena[3]="duzentos " Centena[4]="trezentos " Centena[5]="quatrocentos " Centena[6]="quinhentos " Centena[7]="seiscentos " Centena[8]="setecentos " Centena[9]="oitocentos " Centena[10]="novecentos " Extenso=""
IF Val(Middle(svalor,1,3))>0 THEN C1=Middle(svalor,1,1) C2=Middle(svalor,2,1) C3=Middle(svalor,3,1)
IF(Val(C2+C3)=0 AND C1="1") THEN Extenso += "cem " ELSE Extenso += Centena[Val(C1)+1] IF(Val(C1)>0 AND Val(C2+C3)>0) THEN Extenso += "e " ELSE Extenso +="" END IF(Val(C2)=1) THEN Extenso += Unidade[Val(C2+C3)+1] ELSE Extenso += Dezena[Val(C2)+1] IF(Val(C2)>0 AND Val(C3)>0) THEN Extenso += "e " ELSE Extenso += "" +Unidade[Val(C3)+1] END Extenso += Unidade[Val(C3)+1] END END IF(Val(C1+C2+C3)=1) THEN Extenso += "milhão" ELSE Extenso += "milhões, " END END
IF Val(Middle(svalor,4,3))>0 THEN
C1=Middle(svalor,4,1) C2=Middle(svalor,5,1) C3=Middle(svalor,6,1)
IF(Val(C2+C3)=0 AND C1="1") THEN Extenso += "cem " ELSE Extenso += Centena[Val(C1)+1] IF(Val(C1)>0 AND Val(C2+C3)>0) THEN Extenso += "e " ELSE Extenso +="" END IF(Val(C2)=1) THEN Extenso += Unidade[Val(C2+C3)+1] ELSE Extenso += Dezena[Val(C2)+1] IF(Val(C2)>0 AND Val(C3)>0) THEN Extenso += "e " ELSE Extenso += "" END Extenso += Unidade[Val(C3)+1]
END END
Extenso += "mil,"
END
IF Val(Middle(svalor,7,3))>0 THEN
C1=Middle(svalor,7,1) C2=Middle(svalor,8,1) C3=Middle(svalor,9,1) IF(Val(C2+C3)=0 AND C1="1") THEN Extenso += "cem " ELSE Extenso += Centena[Val(C1)+1] IF(Val(C1)>0 AND Val(C2+C3)>0) THEN Extenso += "e " ELSE Extenso +="" END IF(Val(C2)=1) THEN Extenso += Unidade[Val(C2+C3)+1] ELSE Extenso += Dezena[Val(C2)+1] IF(Val(C2)>0 AND Val(C3)>0) THEN Extenso += "e " ELSE Extenso += "" END Extenso += Unidade[Val(C3)+1]
END END END
IF(Valor >0.99) AND (Valor <1.99) THEN Extenso += Moeda_Singular END IF(Valor>1.99) THEN Extenso += Moeda_Plural END IF(Valor <0.99) Extenso += "" END
IF Val(Middle(svalor,11,2))>0 THEN C2=Middle(svalor,11,1) C3=Middle(svalor,12,1) IF Extenso = "" THEN Extenso += "" ELSE Extenso += "e " END IF(Val(C2)=1) THEN Extenso += Unidade[Val(C2+C3)+1] ELSE Extenso += Dezena[Val(C2)+1]
IF(Val(C2)>0 AND Val(C3)>0 )THEN Extenso += "e " ELSE Extenso += ""
END Extenso += Unidade[Val(C3)+1] END IF(Val(C2+C3)>1) THEN Extenso += sFracao_Plural ELSE Extenso += sFracao_Singular
END
END
RESULT = Extenso
-- Adriano José Boller ______________________________________________ Consultor e Representante Oficial da PcSoft no Brasil +55 (41) 99949 1800 adrianoboller@gmail.com skype: adrianoboller http://wxinformatica.com.br/ |
| |
| |
| | | |
|
| | |
| |
Membro registado 3.655 mensagems Popularité : +175 (223 votes) |
|
Publicado em março, 09 2021 - 6:08 PM |
CExtenso is a Class m_s_moeda_singular is string = "real" m_s_moeda_plural is string = "reais" m_s_centavo_plural is string = "centavos" m_s_centavo_singular is string = "centavo" m_s_Simbolo is string = "R$" m_parrUnidade is array of string m_parrDezena is array of string m_parrCentena is array of string END
Procedure Constructor() m_parrUnidade = ["um", "dois", "três", "quatro", "cinco", "seis", "sete", "oito", "nove", "dez", "onze", "doze", "treze", "quatorze", "quinze", "dezesseis", "dezessete", "dezoito", "dezenove"] m_parrDezena = ["dez", "vinte", "trinta", "quarenta", "cinquenta", "sessenta", "setenta", "oitenta", "noventa"] m_parrCentena = ["cem", "duzentos", "trezentos", "quatrocentos", "quinhentos", "seiscentos", "setecentos", "oitocentos", "novecentos"]
Procedure Destructor()
Procedure Valor123(gs_centena) gs_centena = Right("000"+Val(gs_centena), 3) sRet is string = "" nAux is int = 0
IF Val(gs_centena)>0 THEN nAux = Val(gs_centena[[1]]) IF nAux>0 THEN sRet = (nAux=1 AND gs_centena[[2 TO 3]]="00"?"cem" ELSE m_parrCentena[nAux]) + (gs_centena[[2 TO 3]]<>"00"?" e " ELSE "") END nAux = Val(gs_centena[[2 TO]]) IF nAux<20 THEN IF nAux>0 THEN sRet += m_parrUnidade[nAux] END ELSE nAux = Val(gs_centena[[2]]) sRet += m_parrDezena[nAux] + (Val(gs_centena[[3]])>0? " e " ELSE "") nAux = Val(gs_centena[[3]]) IF nAux>0 THEN sRet += m_parrUnidade[nAux] END END ELSE sRet = "zero" END RESULT(sRet)
Procedure ValorExtenso(gn_valor is numeric,gb_negrito is boolean = False) sTexto is string = "" sGrupo is string = "" sValor is string sValor = NumToString(gn_valor,"015.2f")
sGrupo = sValor[[1 TO 3]] IF Val(sGrupo)>0 THEN sTexto = Valor123(sGrupo) sTexto += (sGrupo="001"?" bilhão" ELSE " bilhões") sTexto += (sValor[[4 TO 12]]="000000000"?" de" ELSE " e") END
sGrupo = sValor[[4 TO 6]] IF Val(sGrupo)>0 THEN sTexto += (Length(sTexto)>0? " " ELSE "") + Valor123(sGrupo) sTexto += (sGrupo="001"?" milhão" ELSE " milhões") sTexto += (sValor[[7 TO 12]]="000000"?" de" ELSE " e") END
sGrupo = sValor[[7 TO 9]] IF Val(sGrupo)>0 THEN sTexto += (Length(sTexto)>0? " " ELSE "") + Valor123(sGrupo) sTexto += " mil" sTexto += (Val(sValor[[10 TO 12]])>0?" e" ELSE "") END
sGrupo = sValor[[10 TO 12]] IF Val(sGrupo)>0 THEN sTexto += (Length(sTexto)>0? " " ELSE "") + Valor123(sGrupo) END IF Val(Left(sValor,12))>0 THEN IF Val(Left(sValor,12))=1 THEN sTexto += " " + Lower(NoSpace(m_s_moeda_singular)) ELSE sTexto += " " + Lower(NoSpace(m_s_moeda_plural)) END END
sGrupo = "0" + sValor[[14 TO 15]] IF Val(sGrupo)>0 THEN sTexto += (Length(sTexto)>0? " e " ELSE "") + Valor123(sGrupo) + " " + (Val(sGrupo)=1?m_s_centavo_singular ELSE m_s_centavo_plural) END
IF Length(sTexto) THEN sTexto = " (" + NoSpace(Lower(sTexto)) + ")" END RESULT(sTexto)
Modo de usar
para usar rapidamente: cl1 is CExtenso cl1.m_s_moeda_plural = "dolars" cl1.m_s_moeda_singular = "dolar" cl1.m_s_centavo_plural = "cents" cl1.m_s_centavo_singular = "cent" cl1.m_s_Simbolo = "US$" xValor is numeric = EDT_ValorE Info("O valor de "+cl1.m_s_Simbolo+NumToString(xValor,"12.2fs")+" é ","", cl1.ValorExtenso(xValor))
-- Adriano José Boller ______________________________________________ Consultor e Representante Oficial da PcSoft no Brasil +55 (41) 99949 1800 adrianoboller@gmail.com skype: adrianoboller http://wxinformatica.com.br/ |
| |
| |
| | | |
|
| | |
| |
Membro registado 3.655 mensagems Popularité : +175 (223 votes) |
|
Publicado em março, 09 2021 - 6:10 PM |
Ou simplesmente
Info(NumberInWords(83.335))
-- Adriano José Boller ______________________________________________ Consultor e Representante Oficial da PcSoft no Brasil +55 (41) 99949 1800 adrianoboller@gmail.com skype: adrianoboller http://wxinformatica.com.br/ |
| |
| |
| | | |
|
| | |
| |
Membro registado 3.655 mensagems Popularité : +175 (223 votes) |
|
Publicado em março, 09 2021 - 6:16 PM |
| |
| |
| | | |
|
| | |
| |
Membro registado 3.655 mensagems Popularité : +175 (223 votes) |
|
Publicado em março, 09 2021 - 6:19 PM |
| |
| |
| | | |
|
| | |
| |
Membro registado 3.655 mensagems Popularité : +175 (223 votes) |
|
Publicado em fevereiro, 14 2022 - 7:19 PM |
ESSA CLASSE FOI CEDIDA PELO SR MELLO
-- Adriano José Boller ______________________________________________ Consultor e Representante Oficial da PcSoft no Brasil +55 (41) 99949 1800 adrianoboller@gmail.com skype: adrianoboller http://wxinformatica.com.br/ |
| |
| |
| | | |
|
| | |
| |
Membro registado 3.655 mensagems Popularité : +175 (223 votes) |
|
Publicado em fevereiro, 14 2022 - 7:30 PM |
| |
| |
| | | |
|
| | | | |
| | |
|