Ir para conteúdo
Fórum Script Brasil
  • 0

Helio Cássio

Pergunta

Bom Dia

Gostaria de saber se tem como na função baixar converter o valor ate 999 bilhões, pois atualmente ele so converte ate 999 milhões

CREATE OR REPLACE FUNCTION valor_extenso_f_teste(numeric)
RETURNS text AS
$BODY$
DECLARE
moeda_sing text;
moeda_plu text;
milhao text;
milhar text;
unidade text;
centavo text;
compl_milhao text;
compl_milhar text;
compl_unidade text;
resultado text;
valor text;
BEGIN
IF $1 = 0 THEN
return '';
END IF;
--moeda corrente no singular e plural.
moeda_sing := ' REAL';
moeda_plu := ' REAIS';
--formata o valor de acordo com a máscara 999999999.99
valor := replace(substr(to_char($1, '999999999D00'), 2), ' ', '0');
--usa a função valor_extenso_aux_f para obter quantos milhões.
milhao := valor_extenso_aux_f(substr(valor,1,3));
IF (substr(valor,1,3)::integer > 1) THEN
milhao := milhao || ' MILHOES';
ELSE
IF (substr(valor,1,3)::integer = 1) THEN
milhao := milhao || ' MILHAO';
END IF;
END IF;
--usa a função valor_extenso_aux_f para obter quantos mil.
milhar := valor_extenso_aux_f(substr(valor,4,3));
IF (substr(valor,4,3)::int > 0) THEN
IF substr(valor,4,3)::int = 1 THEN
milhar := ' MIL';
ELSE
milhar := milhar || ' MIL';
END IF;
END IF;
--usa a função valor_extenso_aux_f para obter quantas unidades.
unidade := valor_extenso_aux_f(substr(valor,7,3));
IF (substr(valor,1,9)::integer = 1) THEN
unidade := unidade || moeda_sing;
ELSE
unidade := unidade || moeda_plu;
END IF;
--usa a função valor_extenso_aux_f para obter quantos centavos
centavo := valor_extenso_aux_f('0' || substr(valor,11,2));
IF (substr(valor,11,2)::integer > 1) THEN
centavo := centavo || ' CENTAVOS';
ELSE
IF (substr(valor,11,2)::integer = 1) THEN
centavo := centavo || ' CENTAVO';
END IF;
END IF;
--verifica a necessidade de ',' após o milhão.
IF length(trim(milhao))::integer <> 0 THEN
compl_milhao := ' E ';
ELSE
compl_milhao := '';
END IF;
--verifica a necessidade de , após o mil.
IF length(ltrim(substr(valor,6,4),'0'))::int < 4 or length(trim(substr(valor,6,4),'0'))::int = 1 THEN
compl_milhar := ' ';
ELSE
compl_milhar := ' E ';
END IF;
--verifica a necessidade de , após as unidades.
IF length(trim(unidade))::integer <> 0 and length(trim(centavo))::integer <> 0 THEN
compl_unidade := ' E ';
ELSE
compl_unidade := '';
END IF;
resultado:= milhao || compl_milhao || milhar || compl_milhar ||
unidade || compl_unidade || centavo;
return replace(resultado,' ',' ');
END;
$BODY$
Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...