Você pode fazer formatar números em valores monetários, e vice-versa, de forma simples utilizando o Merlin. Para isso basta utilizar o componente Código javascript.
Como base para o nosso estudo, vamos criar um calculadora de imposto sobre o faturamento, onde o cálculo é feito subtraindo o percentual do imposto pelo faturamento bruto.
Antes de começar, porém, veja como projetamos nosso bot de exemplo para esse tutorial:
Crie um componente Pergunta aberta e solicite o faturamento bruto:
Veja que o Tipo do campo está definido como Máscara customizada. Mais abaixo definimos a máscara que vai estruturar o valor do faturamento bruto R$ 9{1,12},00
. Veja e entenda como a máscara funciona na explicação a seguir:
R$
→ é a representação da moeda brasileira
9
→ indica que é permitido apenas valores numéricos, de 0 até 9
{1,12}
→ indica que devem ser colocados no mínimo 1 dígito e no máximo 12 dígitos
,00
→ utilizado para mostrar que os centavos estão zerados e imutáveis
Agora precisamos converter a representação do faturamento em um valor numérico. Para isso, adicione um componente Código javascript e configure o código da seguinte forma:
Merlin.setVariable(
'faturamento-numero',
parseFloat(`{{{faturamento}}}`.replace(/\\D/g, '').slice(0, -2))
)
No código acima temos 3 principais pontos de atenção:
replace(/\\D/g, '')
é removido todos os caracteres que não sejam numéricos.slice(0, -2)
é removido os dois últimos zeros, que representavam os centavos.Merlin.setVariable(nome, valor)
que salva uma variável via javascript.Feito a parte do faturamento, agora vamos para a parte do imposto. Adicione um componente Pergunta aberta e solicite o valor do imposto:
Veja que o Tipo do campo está definido como Máscara customizada. Mais abaixo definimos a máscara que vai estruturar o valor do imposto cobrado 9{1,2},9%
. Veja e entenda como a máscara funciona na explicação a seguir:
9
→ indica que é permitido apenas valores numéricos, de 0 até 9
{1,2}
→ indica que devem ser colocados no mínimo 1 dígito e no máximo 2 dígitos
,9
→ indica que é permitido 1 dígito decimal
%
→ é a representação de um valor percentual
Vamos agora converter a representação do imposto percentual em um valor numérico. Para isso, adicione um componente Código javascript e configure o código da seguinte forma:
Merlin.setVariable(
'imposto-numero',
parseFloat(`{{{imposto}}}`.replace(/[^0-9,]/g, '').replace(/,/g, '.'))
)
No código acima temos 3 principais pontos de atenção:
replace(/[^0-9,]/g, '')
é removido todos os caracteres que não sejam numéricos, exceto a vírgula.replace(/,/g, '.')
é transformado vírgula em ponto.Merlin.setVariable(nome, valor)
que salva uma variável via javascript.De posse de ambos os valores em formato numérico, vamos calcular o faturamento líquido. Adicione o componente Calculadora e configure o seguinte cálculo:
{{{faturamento-numero}}} * (1 - ({{{imposto-numero}}} / 100))
Veja como ficou a nossa configuração:
Por fim, vamos converter o valor do faturamento, subtraído do percentual do imposto, em moeda, no caso, em reais. Adicione o componente Código javascript e coloque o seguinte código:
Merlin.setVariable(
'faturamento-liquido',
parseFloat(`{{{faturamento-liquido-numero}}}`).toLocaleString('pt-br',{style: 'currency', currency: 'BRL'})
)
Basicamente, o que foi feito no código acima, é que convertemos o valor do faturamento em moeda utilizando uma própria facilidade da linguagem de programação Javascript. É bem didático até para fazer a leitura como um texto em inglês:
toLocaleString('pt-br',{style: 'currency', currency: 'BRL'})
Pronto! Agora é só mostrar o valor do faturamento líquido com o componente Mensagem de texto.
Para testar, acesse o seu bot e responda as perguntas: