O Sankhya-Om dispõe do componente Construtor de Expressões que pode ser acessado através das seguintes telas:
- Fórmulas para Desconto Máximo;
- Fórmulas de Comissão;
- Fórmulas para Cálculo de frete;
- Fórmulas de Custo/Preço;
- Fórmulas para ICMS.
Dessa forma, você pode conferir as usabilidades do Construtor de Expressões por meio dos seguintes links:
Acessando o Construtor Expressões Construtor MGE x Sankya-Om
Campos adicionais MGE... Variáveis disponíveis no Componente
Funções empregadas na Edição de Fórmulas
Acessando o Contrutor Expressões
Para acessá-lo, basta clicar no botão "f(x) Construtor"; como na tela Fórmulas para Desconto Máximo. Dessa forma, o contrutor listará as categorias de funções, variáveis e banco de dados.
No lado esquerdo do componente temos a árvore de categorias, onde são exibidas as categorias, suas sub-categorias e os itens. Esses itens podem ser adicionados ao campo de expressão localizado no lado direito do componente, com duplo clique ou sendo arrastado.
Entre a árvore de categorias e a área para a contagem da expressão, temos os operadores, que você pode adicioná-los com apenas um clique.
No Construtor, temos a marcação "Acrescentar no final da expressão", em que, quando estiver selecionada e um novo item for adicionado, este irá para o final da expressão criada. Se a marcação não for realizada, o item será inserido de acordo com a posição do cursor do mouse na expressão.
O botão "Limpar" é utilizado para apagar toda a expressão.
Ao clicar em "OK", a expressão construída irá para o campo "Fórmula" da tela que chamou o componente, em seguida, você pode clicar no botão "Salvar" para gravar a nova expressão.
Se você clicar no botão "Cancelar", o componente é fechado e nada será inserido no campo "Fórmula" da tela que chamou o componente.
Construtor de Expressões MGE x Sankhya-Om
Ao escolher uma função no MGE, o sistema apresenta os parâmetros dessa função para que valores sejam adicionados. Já no Sankhya-Om, quando uma função for escolhida na descrição, os parâmetros dela irão para a expressão, assim, você deve inserir os valores dos parâmetros manualmente.
No MGE, é possível alterar os valores de variáveis quando a expressão for montada; no Sankhya-Om, essa funcionalidade não está disponível.
Campos adicionais do MGE e Categoria Banco de Dados
Quando houverem campos adicionais na categoria de banco de dados do componente de expressão do MGE, o Sankhya-Om irá listá-los somente ao selecionar a opção "Processar campo MGE/Mitra" da tela Dicionário de Dados.
Dependendo da tela, os campos adicionais poderão aparecer de duas formas no construtor. São elas:
- Ao apresentar o nome do campo; como: AD_CAMPO1, ou CAMPOADICIONAL.
- Ou ambém, com o sufixo da tabela correspondente; por exemplo, se houver um campo na TGFCAB, ao visualizarmos pelo Construtor de Expressões o nó "queCab", teremos os campos adicionais representados da seguinte forma: TGFCABAD_CAMPO1, ou TGFCABCAMPOADICIONAL.
Variáveis disponíveis no Componente Contrutor de Expressões
Abaixo, listamos algumas variáveis que podem aparecer no componente. Observe:
TOTITENS: Valor total dos itens na nota, desconsiderando os valores informados no Cabeçalho da Nota (Frete, desconto total, juro, destaque, embalagem,...). Assim, temos a fórmula:
TotalItens := TGFCAB.VLRNota - TGFCAB.VLRSEG - TGFCAB.VLRDESTAQUE
- TGFCAB.VLRJURO + TGFCAB.VLRDESCTOT + TGFCAB.VLRDESCSERV ;
SE TGFCAB.TIPIPIEMB = 'I' ENTAO
TotalItens: = TotalItens - TGFCAB.IPIEMB - TGFCAB.VLREMB ;
SE TGFCAB.ISSRETIDO = 'S' ENTAO
TotalItens := TotalItens + TGFCAB.VLRISS ;
SE TGFCAB.TIPFRETE = 'S' ENTAO
TotalItens := TotalItens - TGFCAB.VLRFRETE ;
TotItens := TotalItens ;
VLRICM: Valor do ICMS na Nota. Observe a fórmula:
ICMSTotal := TGFCAB.VLRICMS ;
SE TGFCAB.TIPFRETE <> 'S' ENTAO
ICMSTotal := ICMSTotal + TGFCAB.ICMSFRETE ;
SE not FSegICMS ENTAO
ICMSTotal := ICMSTotal + TGFCAB.VLRICMSSEG ;
SE TGFCAB.TIPIPIEMB <> 'I' ENTAO
ICMSTotal := ICMSTotal + TGFCAB.VLRICMSEMB ;
VLRIPI: Refere-se ao valor do IPI total do item para chegar no IPI unitário. Esse valor será dividido pelo TGFITE.QtdNeg. Considere a seguinte fórmula:
VlrIPI = TGFITE.VlrIPI;
INDFRE: Corresponde ao índice do frete, calculado pelo valor do frete dividido pelo valor total da nota. Sendo assim, temos a fórmula:
VlrIPI := 0 ;
SE TGFCAB.VLRIPI > 0 ENTAO
SE queTGFPAR.IPIINCICMS = 'N' ENTAO
VlrIPI := TGFCAB.VLRIPI ;
SE TGFCAB.TIPFRETE = 'S' ENTAO
IndFre := TGFCAB.VLRFRETE / (TGFCAB.VlrNota - TGFCAB.VLRFRETE - VlrIPI)
SENAO
IndFre := TGFCAB.VLRFRETE / TGFCAB.VlrNota ;
SE TGFCAB.TIPFRETE <> 'S' ENTAO
IndFre := 0 ;
INDDES: Será o índice de desconto, calculado a partir do valor de desconto informado e o valor total da nota. Observe a fórmula:
IndDes := TGFCAB.VLRDESCTOT / (TGFCAB.VlrNota + TGFCAB.VLRDESCTOT)
INDTOT: Refere-se ao índice Total dos produtos, calculado a partir do valor total da nota dividido pelo Valor total de itens na nota. Assim, teremos:
curTotal := TGFCAB.VlrNota ;
SE TGFCAB.ISSRETIDO <> 'S' ENTAO
curTotal := curTotal - TGFCAB.VLRISS ;
SE TGFCAB.TIPIPIEMB <> 'I' ENTAO
curTotal := curTotal + TGFCAB.IPIEMB + TGFCAB.VLREMB ;
SE (TGFCAB.TIPFRETE <> 'S') ENTAO
curTotal := curTotal + TGFCAB.VLRFRETE ;
IndTot := curTotal / TotalItens
INDICMS: Índice de ICMS total incidido na nota, calculado pelo valor total de ICMS, incluindo ICMS frete, ICMS do seguro e outros, dividido pelo valor ICMS da nota. Considere:
IndICMS := ICMSTotal / TGFCAB.VlrICMS
VLRITE: Valor unitário do Item na Nota. Dessa forma, teremos:
VlrIte = TGFITE.VlrUnit
QTDITE: Quantidade Negociada de cada Item da nota. Fórmula:
QtdIte = TGFITE.QtdNeg;
VLRXQTD: Valor Unitário do Produto multiplicado pela TGFITE.QtdNeg. Considere a fórmula:
VlrXQtd = TGFITE.VLRTOT;
VLRSUB: Valor Total da Substituição Tributária do Item, para chegar no valor unitário da ST, dividir esse valor pelo TGFITE.QtdNeg. Fórmula:
VlrSub = TGFITE.VlrSubst;
APPNAME: APPSTARTDATE - APPSTARTTIME - São parâmetros internos.
CASASDECIMAIS: Número de casas decimais usadas para quantidade no item da nota.
VLRPRO: Corresponde ao valor do produto com IPI, Substituição Tributária e Desconto por Item. considere a seguinte fórmula:
SE (TGFITE.CODCFO = 111) or
(TGFITE.CODCFO = 211) or
(TGFITE.CODCFO = 1101) or
(TGFITE.CODCFO = 2101) ENTAO
VlrPro = TGFITE.VlrUnit
SENAO
VlrPro = TGFITE.VlrUnit + (TGFITE.VLRIPI / TGFITE.QtdNeg);
FIM SE
VlrPro = Round2(VlrPro + (TGFITE.VLRSUBST / TGFITE.QtdNeg) -
(TGFITE.VLRDESC / TGFITE.QtdNeg), fCustoDec);
ALIQICM: É o percentual da alíquota utilizada na entrada da Mercadoria, para que calculemos o crédito do ICMS.
ALIQVENDA: É a alíquota de ICMS provável de venda, obtida através da simulação da Saída do Produto dentro do Estado. Considere a seguinte fórmula:
SE TGFPRO.TIPSUBST = 'C’ ENTAO
VlrICM = 0;
Aliquota = 0;
AliqVenda = 0;
SENAO
VlrICM = (TGFITE.VLRICMS / TGFITE.QtdNeg);
Aliquota = TGFITE.ALIQICMS;
AbreAliqCusto(CodUF, TGFITE.CodProd, TGFPRO.CodGrupoProd, codCid);
AliqVenda = dmEst.queAliqALIQ * (100 - dmEst.queAliqREDBASE) / 100);
FIM SE
AliqICM = Aliquota;
Procedure AbreAliqCusto
ABREALIQCUSTO
SELECT
I.CODTRIB,
I.ALIQUOTA AS ALIQ,
I.REDBASE,
I.ALIQFRETE,
I.REDBASEFRETE,
I.MARGLUCRO,
I.ALIQSUBTRIB,
P.PRIORIDADE,
I.CODOBSPADRAO AS CODOBS,
I.REPREDBASE
FROM TGFICM I, TGFPRI P
WHERE I.UFORIG = :CODUFORIG
AND I.UFDEST = :CODUFDEST
AND I.TIPRESTRICAO = P.TIPRESTRICAO1
AND I.TIPRESTRICAO2 = P.TIPRESTRICAO2
AND ( (I.TIPRESTRICAO = 'P' AND I.CODRESTRICAO = TGFITE.CODPROD) OR
(I.TIPRESTRICAO = 'G' AND I.CODRESTRICAO = TGFPRO.CODGRUPOPROD) OR
(I.TIPRESTRICAO = 'T' AND I.CODRESTRICAO = 0) OR
(I.TIPRESTRICAO = 'O' AND I.CODRESTRICAO = 0) OR
(I.TIPRESTRICAO = 'C' AND I.CODRESTRICAO = :CIDORIGEM) OR
(I.TIPRESTRICAO = 'D' AND I.CODRESTRICAO = :CIDDESTINO) OR
(I.TIPRESTRICAO = 'I' AND I.CODRESTRICAO = :GRUPOICMSPROD) OR
(I.TIPRESTRICAO = 'J' AND I.CODRESTRICAO = :GRUPOICMSGRUPOPROD) OR
(I.TIPRESTRICAO = 'R' AND I.CODRESTRICAO = 0) OR
(I.TIPRESTRICAO = 'S') )
AND ( (I.TIPRESTRICAO2 = 'P' AND I.CODRESTRICAO2 = TGFITE.CODPROD) OR
(I.TIPRESTRICAO2 = 'G' AND I.CODRESTRICAO2 = TGFPRO.CODGRUPOPROD) OR
(I.TIPRESTRICAO2 = 'T' AND I.CODRESTRICAO2 = 0) OR
(I.TIPRESTRICAO2 = 'O' AND I.CODRESTRICAO2 = 0) OR
(I.TIPRESTRICAO2 = 'C' AND I.CODRESTRICAO2 = :CIDORIGEM) OR
(I.TIPRESTRICAO2 = 'D' AND I.CODRESTRICAO2 = :CIDDESTINO) OR
(I.TIPRESTRICAO2 = 'I' AND I.CODRESTRICAO2 = :GRUPOICMSPROD) OR
(I.TIPRESTRICAO2 = 'J' AND I.CODRESTRICAO2 = :GRUPOICMSGRUPOPROD) OR
(I.TIPRESTRICAO2 = 'R' AND I.CODRESTRICAO2 = 0) OR
(I.TIPRESTRICAO2 = 'S') )
ORDER BY P.PRIORIDADE
CUSCOMICM: Custo com ICMS
CUSMEDSEMICM: Custo Médio
Nota: os custos médios não podem ser utilizados no cálculo dos custos da própria nota, pois eles dependem da nota em questão. Nesse caso, para a realização do cálculo, pode-se usar os custos médios anteriores, ou os custos da nota não médios, como por exemplo o CUSSEMICM.
CUSGER: Custo Gerencial.
CUSREP: Custo de Reposição
CUSSEMICM: Custo sem ICMS
CUSTOFIXO: Custo Fixo leva em consideração o percentual informado na aba preferências do Gerente on-line.
CUSVAR: Refere-se ao Custo Variável. Assim, considere a seguinte fórmula:
CusSemCal = Round2((VlrPro * IndTot) - (VlrICM * IndICMS) - (VlrIcm * IndFre), fCustoDec);
CusComCal = Round2((VlrPro * IndTot), fCustoDec);
CusVarCal = 0;
CusRepCal = TGFITE.VlrUnit;
CusGerCal = Round2(CusSemCal -
(TGFITE.VlrUnit * TaxaJuro * intPrazoMedio / 3000), fCustoDec);
PRAZOMEDIO: Prazo médio do financeiro da nota. Fórmula:
Se fDtPAtuCust = 0 então
'SELECT SUM(VLRDESDOB * (DTVENC - DTNEG)) / SUM(VLRDESDOB) AS PRZMED'
senão se fDtPAtuCust = 1 então
'SELECT SUM(VLRDESDOB * (DTVENC - NVL(DTENTSAI, DTNEG))) / SUM(VLRDESDOB) AS PRZMED'
senao
'SELECT SUM(VLRDESDOB * (DTVENC - DHMOV)) / SUM(VLRDESDOB) AS PRZMED';
TAXAJURO: A taxa dessa variável vem do parâmetro "Taxa de Juro - TAXAJURO".
Nota: quando a quantidade negociada da nota for igual a zero, para as TOP’s indicadas no parâmetro "TOP para aceitar Qtd. igual a zero - TOPQTDZERO", o sistema carregará as variáveis AntCusComICM, AntCusSemICM, AntCusVar, AntCusRep, AntCusGer, da "Fórmula de Custo/Preço" com o custo anterior.
TOTALDETALHE: Essa variável contabiliza a quantidade de registros que estão sendo enviados em uma remessa. Alguns bancos exigem que seja enviada no HEADER (cabeçalho), a quantidade de títulos contidos no arquivo de remessa. É importante ressaltar que esta variável contabiliza apenas as linhas do detalhe, não considera HEADER e TRAILLER. Caso seja necessário, esses valores podem ser somados na expressão do campo, por exemplo, TOTALDETALHE + 1.
FIMLINHA: Acrescenta uma quebra de linha na posição final + 1 do texto retornado pela consulta; como por exemplo, "abcd asas aas aaaa".
FIMLINHATRIMRIGHT: Acrescenta uma quebra de linha após o último caractere diferente de espaço no texto retornado pela consulta. Como, "abcd asas aas aaaa".
Nota: aplicam-se apenas à configuração de arquivos de remessa de EDI.
Funções empregadas na Edição de Fórmulas
Nesse tópico, abordaremos sobre as funções na formatação de fórmulas, como precificação, comissão e contabilização, etc. Dessa forma, acesse os links abaixo para saber sobre cada um deles:
Funções Lógicas Função BUSCATSIPAR
Funções de Pesquisa Funções de Formato de Dados
Funções Matemáticas Funções de Datas
Funções Lógicas
O "IF" é uma função de Condição que tem o objetivo de retornar uma ou outra informação, de acordo com o atendimento à condição estabelecida.
Na tradução do Inglês para o Português, "IF" quer dizer "SE", ou seja "no caso de", "dado a circunstância de". Portanto, é utilizada para que seja avaliada uma situação. Caso a condição seja verdadeira, a função retornará uma informação e caso seja falsa, retornará outra informação. Sendo que, a estrutura utilizada na construção de um IF, será a seguinte:
IF(<CONDIÇÃO>,<VALOR_SE_VERDADEIRO>,<VALOR_SE_FALSO>)
Abaixo, trouxemos alguns exemplos da utilização do IF. Observe:
- IF(VLRDESDOB=VLRBAIXA,VLRDESDOB,0): Essa fórmula é utilizada na contabilização do valor do desdobramento em uma determinada linha, se o valor do desdobramento for igual ao valor da baixa. Se os valores forem diferentes, o IF retornará zero, ou seja, não será contabilizado.
- IF(queCab.TIPMOV='V',1,-1): Esse exemplo sempre é empregado na construção de fórmulas de comissão. Ela diz que, se o Tipo de Movimento for Venda, deverá se considerado "1" e se não for, deve ser considerado "-1". O resultado dessa condição será multiplicado pelo valor dos itens posteriormente para calcular comissões positivas, em casos de vendas e negativas, em casos de devoluções de vendas, sendo esses outro tipo de movimento para cálculo de comissões.
- IF(queProd.COMVEND < queVend.COMVENDA, queProd.COMVEND, queVend.COMVENDA): Temos aqui, outro exemplo de condição em fórmulas de comissionamento. Aqui, considere que deseja-se obter o menor percentual na comparação entre os percentuais de comissão definidos nos cadastros de produtos e de vendedores.
- IF(queItens.VLRSUBST=0,queItens.VLRICMS/queItens.QTDNEG,0): Empregado em uma fórmula de precificação, esse exemplo está sendo definido que o valor do ICMS por unidade só será considerado caso o Valor da Substituição do item seja igual a zero.
Funções de Pesquisa
O "PDES" é uma função de consulta ou busca de valores que não podem ser obtidos através das variáveis preexistentes. Com o PDES, pode ser obtido qualquer valor, ou tabela do sistema, desde que a consulta realizada através do comando retorne um único valor. Isso é possível ao realizar ligações entre o PDES e variáveis existentes que retornem campos Chave das tabelas envolvidas. Assim, temos a seguir a estrutura utilizada na construção de um PDES:
PDES('<COLUNA>','<TABELA(S)>', '<CONDIÇÃO(ÕES)> ')
A estrutura da função é semelhante à estrutura do SELECT, utilizado para consultar informações no banco de dados; porém, para o uso do PDES, é necessário possuir noções sobre Banco de Dados e a estrutura das tabelas utilizadas pelo sistema.
Quanto às condições, normalmente é realizada uma ligação entre a tabela que está sendo consultada e uma variável pré-existente. A união entre uma parte fixa do comando e uma parte variável, deve ser realizada através do sinal "+", sendo que as partes fixas do comando devem estar entre aspas simples da seguinte forma:
PDES('<COLUNA>','<TABELA(S)>',<'PARTE_FIXA'+PARTE_VARIAVEL>)
Por meio dos exemplos descritos a seguir, temos suas aplicações:
- VAL(PDES('SUM(VLRICMS)','TGFITE','VLRSUBST=0 AND NUNOTA='+NUNOTA)): Esse PDES pode ser aplicado em uma Fórmula de Contabilização e retornará a soma do valor do ICMS dos itens que não possuem Substituição Tributária, na nota que está sendo contabilizada. A variável "NUNOTA" foi utilizada como ligação para que o PDES retornasse um único resultado. Além do PDES, foi utilizada a função VAL, para converter o valor encontrado pelo PDES em VALOR. Os dados retornados pelo PDES estão sempre em formato de texto. Se for necessário utilizar o dado retornado como valor na contabilização, utilize também a função VAL para converter o valor retornado pelo PDES em número.
- VAL(IF(PDES('ISSRETIDO','TGFCAB','NUNOTA='+NUNOTA)='S',PDES('VLRISS','TGFCAB','NUNOTA='+NUNOTA),0)): Aqui, foi utilizado também o IF. Ao realizar a leitura, o IF verifica se o campo "ISS Retido" do cabeçalho da nota está igual à "Sim", se estiver, o sistema buscará o conteúdo do campo "Valor do ISS" da Nota. Essa expressão pode ser utilizada, por exemplo, nas fórmulas das parcelas dos Tipos de Negociação, para gerar uma parcela de despesa para pagamento do ISS retido de um prestador de serviços. A variável "NUNOTA" também foi utilizada como ligação para que o PDES retornasse um único resultado.
Função BUSCATSIPAR
Essa função é utilizada para retornar o valor contido em um determinado parâmetro. Sendo que, minimiza as alterações em fórmulas, principalmente de precificação e comissionamento, quando algum dos percentuais fixos envolvidos nesses cálculos, forem alterados. Como, por exemplo: BuscaTSIPAR('PERCCUSFIXO')
O percentual de Custo Fixo utilizado na análise de rentabilidade de notas e pedidos é definida através das preferências do Gerente On-line e armazenada no parâmetro "Percentual custo fixo - PERCCUSFIXO". Para que as fórmulas de precificação considerem o mesmo percentual definido nas Preferências, basta utilizar a expressão "BuscaTSIPAR('PERCCUSFIXO')" na fórmula.
O mesmo pode ser realizado com o percentual de comissão fixo definido nas Preferências do Gerente On-line, que fica armazenado no parâmetro "Percentual de Comissão -PERCCOMISSAO", ou qualquer outro parâmetro que contenha valores a serem empregados nas fórmulas do sistema. Você também pode criar um parâmetro personalizado para armazenar determinado valor e utilizá-lo com a função BuscaTSIPAR. Assim, se o valor for alterado, basta mudar o conteúdo do parâmetro.
Funções de Formato de Dados
Funções de formato de dados, normalmente são empregadas para criação de EDI's, onde os valores de cada campo, devem respeitar os padrões definidos em um layout. Abaixo, você pode conferir algumas das mais importantes funções de definição de formato de dados.
A funções "Copy" e "Substr" são utilizadas para extrair uma parte de uma variável e funcionam exatamente da mesma forma; por exemplo, extrair apenas o "DDD" do número de telefone, a raiz do CEP, parte do CNPJ, etc. Dessa forma, a estrutura utilizada na construção dessas funções é a seguinte:
COPY(<VARIÁVEL>,<CARACTERE_INICIAL>,<NÚMERO_DE_CARACTERES>)
SUBSTR(<VARIÁVEL>,<CARACTERE_INICIAL>,<NÚMERO_DE_CARACTERES>)
Considere o seguinte exemplo:
A variável "Dados_Detalhe.CEP_PARCEIRO" retorna no CEP do parceiro com 8 posições, sem separadores. Se o layout do EDI solicitar a impressão de CEP com a máscara "99.999-999", por exemplo, poderá ser utilizado:
COPY(Dados_Detalhe.CEP_PARCEIRO,1,2)+'.'+COPY(Dados_Detalhe.CEP_PARCEIRO,3,3)+'-'+COPY
(Dados_Detalhe.CEP_PARCEIRO,6,3)
Primeiramente pegamos a partir do primeiro, dois caracteres e relacionamos com um ponto final. Em seguida, conectamos com os três próximos caracteres, a partir do terceiro e com um hífen. Por último, unimos também com os três últimos, a partir do sexto caractere.
Na geração do EDI, a concatenação é realizada através do sinal "+".
O objetivo das funções "Left" e "Right", é imprimir apenas uma parte de um texto, de forma semelhante ao que ocorre nas funções Copy e Substr. A diferença é que nas funções Left e Right não é apontado o caractere inicial do "corte", pois a geração sempre acontece do início do texto à esquerda ou à direita. Dessa forma, considere a estrutura para utilização dessas funções:
LEFT(<VARIÁVEL>,<NÚMERO_DE_CARACTERES>)
RIGHT(<VARIÁVEL>,<NÚMERO_DE_CARACTERES>)
Como exemplo, suponhamos que na geração de determinado arquivo de EDI, serão permitidos 30 caracteres para o nome do parceiro. Para gerar apenas os 30 primeiros caracteres do nome do parceiro, podemos utilizar:
LEFT(Dados_Detalhe.NOME_PARCEIRO,30)
Para alcançar o mesmo resultado utilizando o COPY, pode ser utilizado:
COPY(Dados_Detalhe.NOME_PARCEIRO,1,30)
Observe que no Copy, é necessário apontar que seria gerado a partir do primeiro caractere e haveria a opção de gerar uma parte intermediária do texto. Perceba como o Left não apontou o caractere inicial; a geração se dá sempre a partir do primeiro caractere, respeitando o tamanho especificado.
Funções Matemáticas
A função "ABS" tem o objetivo de retornar o módulo de um número, ou seja, seu valor absoluto, sem sinal. É utilizada quando na geração de um arquivo, o sinal para números negativos não foi gerado. Para utilizar a função:
ABS(<VARIÁVEL>)
INT / FRAC
As funções "Int" e "Frac" são utilizadas para extrair a parte inteira ou a parte fracionada de um número. Essas funções são empregadas normalmente na geração de arquivos de EDI, nos quais podem existir campos separados para a parte inteira e para os decimais de um valor. Sua utilização ocorre da seguinte forma:
INT(<VARIÁVEL>)
FRAC(<VARIÁVEL>)
ROUND / TRUNC
Referente às funções "Round" e "Trunc", destacamos que são utilizadas para tratar as dízimas de valores, em cálculos ou na geração de arquivos de EDI. Observe a seguir, estrutura das funções:
ROUND(<VARIÁVEL>,<QTD_CASAS>)
TRUNC(<VARIÁVEL>,<QTD_CASAS>)
A estrutura para utilização das duas funções é semelhante. A diferença está no tratamento dado aos decimais; enquanto a função Round realiza o arredondamento, a função Trunc despreza as casas decimais que possam estar além da quantidade de casas informada como parâmetro. Como, por exemplo:
Suponhamos que determinada variável esteja retornando o valor "1,995". Se for utilizada a função Round, com duas casas decimais, o valor final será "2,00". Já com a função Trunc, o valor final seria "1,99".
Funções de Datas
As funções "Dia", "Mes" e "Ano" são utilizadas para retornar uma parte de uma data. Normalmente utilizadas na formatação de EDI, quando o layout possui campos separados para cada parte da data, ou para gerar no arquivo apenas dia e mês, ou mês e ano de uma determinada data. A sintaxe destas funções é simples, observe:
DIA(<VARIÁVEL_DATA>)
MES(<VARIÁVEL_DATA>)
ANO(<VARIÁVEL_DATA>)
Assim, no exemplo em que a variável Dados_Detalhe.DATA_VENCIMENTO retorna a data de vencimento do título na configuração do EDI Bancário, no formato DDMMAAAA.
Se o layout de EDI solicita a informação do "Mês", você pode utilizar MÊS, ao invés das funções COPY/SUBTR, dessa forma:
MES(Dados_Detalhe.DATA_VENCIMENTO)
Ao utilizar a função mês é importante utilizar a opção "Inteiro com zeros a esquerda" do Tipo do Campo, para que seja adicionado um 0 à esquerda nos meses de 1 a 9.
Comentários
2 comentários
Parabéns pra quem fez a atualização, ficou ótimo!! facilita muito pra construir fórmulas de custo/preço/comissão.
Uma dica que daria, até irei postar como sugestão de desenvolvimento na área específica, seria uma forma de termos uma Memória de calculo pra validar as formulas criadas.. Muitos clientes tem fórmulas antigas, com muitas variáveis e PDES que ficam dificil a manutenção e a simulação de um teste de mesa.. Que na prática temos que simular uma entrada de uma nota e fazer os cálculos na mao ou no excel pra ver se a fórmula retorna o valor desejado.
Abraços!
Bom dia, Eric!
Agradecemos imensamente pelo seu feedback e esperamos que possa ter te ajudado. :)
Por favor, entre para comentar.