01. VISÃO GERAL
Retornar valores em extenso.
02. PARÂMETROS
nNumToExt | Valor gerado por extenso. |
lQuantid | Determina se o extenso será em valor ou quantidade (default = .F.). |
nMoeda | Identifica a descrição da moeda que será obtida do parâmetro MV_MOEDAx (com x= 1...5). |
cPrefixo | Prefixo alternativo. Caso especificado, prefixa o retorno do extenso, fazendo com que a unidade monetária não seja retornada (default = \" \" ). |
cIdioma | Especifica em que idioma deve retornar o valor do extenso (1=Port,2=Espa,3=Ingl). O padrão é o idioma do Sistema. |
lCent | Especifica se a função deve retornar os centavos. O padrão é .T.. |
lFrac | Especifica se os centavos retornam em modo fracionado (somente é executado com cIdioma = 3 (Inglês) ). |
lUsaCon | -Especifica se será utilizado "y" ou "con" (Somente utilizado no idioma espanhol). |
cPosMoed | cPosMoed -Especifica a posicao da descrição da moeda (1=Antes do Texto; 2=Entre os valores inteiros e os centavos; 3=No final do texto) |
Importante!
Ao utilizar a funcionalidade de idioma, o sistema buscará a descrição da moeda através dos parâmetro MV_MOEDAx e MV_MOEDAPx, onde x é o número da moeda desejada e passada para a função Extenso através da variável nMoeda.
Para o texto (em singular) que representa a moeda serão usados os já existentes MV_MOEDAx (onde x de 1 a 5) e deverão ser criados mais cinco parâmetros MV_MOEDAPx (onde x de 1 a 5) para os respectivos plurais.
03. EXEMPLO DE UTILIZAÇÃO
#Include "Protheus.ch" #Include "rwmake.ch" user function Exte() Local nValor as numeric Local lQuantid as logical Local nMoeda as numeric Local cPrefixo as character Local cIdioma as character Local lCent as logical Local lFrac as logical Local lUsaCon as logical Local cPosMoed as character nValor := 3456.72 lQuantid := .F. nMoeda := 1 cPrefixo := "" cIdioma := "1" lCent := .T. lFrac := .F. lUsaCon := .T. //Somente espanhol cPosMoed := "2" cTexto := Extenso(nValor, lQuantid, nMoeda, cPrefixo,cIdioma,lCent,lFrac,lUsaCon, cPosMoed ) CONOUT("******************") CONOUT(cTexto)//TRES MIL, QUATROCENTOS E CINQUENTA E SEIS REAIS E SETENTA E DOIS CENTAVOS CONOUT("******************") Return //Exemplos e retornos: /* Extenso(500.00)= "QUINHENTOS REAIS" Extenso(500.00,.f.,2,,1)= "QUINHENTOS DOLARES" Extenso(1999.78 ,.T.,2) = "ONE THOUNSAND NINE HUNDRED AND NINETY-NINE" Extenso(1999.78 ,.F.,1) = "ONE THOUNSAND NINE HUNDRED AND NINETY-NINE DOLLARS AND SEVENTY-EIGHT CENTS" Extenso(1999.78 ,.F.,1,,,.F.) = "ONE THOUNSAND NINE HUNDRED AND NINETY-NINE DOLLARS" Extenso(1999.78 ,.F.,1,,"3",.T.,.T.) = "ONE THOUNSAND NINE HUNDRED AND NINETY-NINE AND 78/100 DOLLARS" Extenso(1999.78 ,.F.,1,,"2",.T.,.F.)= "UM MIL, NOVECIENTOS NOVENTA Y NUEVE DOLARES Y SETENTA Y OCHO CENTAVOS" Extenso(1999.78 ,.F.,1,,"1",.T.,.F.)= "UM MIL, NOVECENTOS E NOVENTA E NOVE DOLARES E SETENTA E OITO CENTAVOS" Extenso(0.85,.F.,1,,"3",.T.,.T.)= "85/100 DOLLARS" Extenso(0.85,.F.,1,,"3",.T.,.F.)= "EIGHTY-FIVE CENTS" Extenso(2001,.F.,1,,"2",.T.,.F.)= "DOS MIL Y UM DOLARES" Extenso(500.05,.F.,1,,"3",.T.,.F.)= "FIVE HUNDRED DOLLARS AND FIVE CENTS" Extenso(500.05,.F.,1,,"3",.T.,.T.)= "FIVE HUNDRED AND 5/100 DOLLARS" Extenso(500.05,.F.,2,,"1",.T.,.T.)= "QUINHENTOS REAIS E CINCO CENTAVOS" */
04. OUTRAS INFORMAÇÕES
KCS - Extenso() - Conversão em outras línguas
KCS - Função Extenso texto no plural