Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Boa tarde,
estou tendo dificuldades em validar um valor. O cálculo é o seguinte,
se a loja não tiver auditoria no mes, eu desconto -0,03% do seu faturamento, se a loja tiver auditoria no mes, eu devolvo este valor acumulado, ou seja, eu somo toda a venda que não teve auditoria e faço multiplico por 0,03%.
Na fórmula abaixo o cálculo funciona corretamente se eu selecionar uma ou mais lojas, porém ele se perde quando eu seleciono um ou mais meses. Acredito que seja algo na funcção aggr, podem dar uma olhada?
Eu tenho uma tabela auxiliar onde eu cadastro Auditoria sim ou não.
=num(
sum(
aggr(
if(Auditoria='S',
((Sum( {$<Auditoria={'N'}, mes_numero,id_unidade>} mprd_valor_dvd))*0.003)
,
if(Auditoria='N',
((Sum( {$<Auditoria={'N'},id_unidade>} mprd_valor_dvd))*0.003)*-1
,
0)
)
,id_unidade)
)
,'R$###.##0,00')
A Peek iremos utilizar para fazer o cálculo no script
Da uma olhada se é isso
Yuri, é exatamente isto que eu precisava, consegui implementar isso no meu projeto porém barrei em uma coisa,
pelo que eu percebi o valor que soma todas as vendas com N esta pegando de todos os anos, hoje em meu projeto eu uso ao invés de mes, uso id_tempo que o formato é ano-mes (2014-08), tem alguma alteração fácil de ser feita onde considere apenas o ano selecionado? No restante funcionou perfeitamente.
Não é difícil de alterar. Na tabela em que faço esse cálculo, precisa adicionar a dimensão do ANO e adicionar o ANO ao GROUP BY.
Vou montar um exemplo e te envio
Hamilton, basta alterar a seguinte parte do código
JOIN
LOAD
unidade as Venda_Logica.unidade,
mes as Venda_Logica.mes,
Sum(venda) as Venda_Logica.Total_N
RESIDENT VENDA_TMP
WHERE auditoria = 'N'
GROUP BY unidade, mes;
Caso seja MesAno, basta ter essa informação na tabela, por exemplo
LOAD
unidade as Venda_Logica.unidade,
mesAno as Venda_Logica.mesAno,
Sum(venda) as Venda_Logica.Total_N
RESIDENT VENDA_TMP
WHERE auditoria = 'N'
GROUP BY unidade, mesAno;
Yuri, no exemplo esta funcionando certinho porém em meu projeto o valor para a Auditoria 'S' esta dando muito alto, estou tentando aqui achar onde eu errei.
Acredito que o erro esteja aqui..
load
id_unidade as Venda_Logica.id_unidade,
sum(mprd_valor_vd) as Venda_Logica.mprd_valor_TOTAL
Resident FatoDetalhe
Where auditoria='N'
Group by id_unidade;
Estou verificando.
ja viu isto acontecer?
se eu dou um sum(perdaTotal) o valor se perde completamente.
No print é um Campo, uma tabela e um gráfico. O valor correto é o 7.057,67 porém com o sum não da certo.
Yuri, você acha que isto tem a ver com minha tabela de vendas, eu tenho nela a nível de produtos com várias informações. O que me diz,?
Hamilton, o valor esta dando diferente, pois existem N valores com o mesmo número.
Tente utilizar sum(DISTINCT perdaTotal)
Então, com o Distinct fica correto, porém estraga quando for auditoria='N'.
Estou fazendo os testes aqui.