Skip to main content
Announcements
Have questions about Qlik Connect? Join us live on April 10th, at 11 AM ET: SIGN UP NOW
cancel
Showing results for 
Search instead for 
Did you mean: 
Ribeiro
Specialist
Specialist

Produtos vendidos hoje, que não tiveram venda > 90 dias.

Produtos Vendidos Hoje:

only({$<Ano ={$(=Year(today()))}, Mês={$(=Month(today()))}, Dia={'<=$(=Day(Today()))'},[Movimento_Tipo_Operacao]={'DEV','VND','VPC','VEF','FPV','CVE'} >} CalendarDate)

Gostaria de saber produtos vendidos hoje, que não tiveram vendas a mais de  03 meses, Antes da data atual.

Exemplo: produto 1 vendeu hoje 29/08/2017

Preciso saber ser este mesmo produto tinha antes da venda hoje,  mais de 90(29/06/2017) dias sem vendas anterior a data de hoje de vendas?

Neves
1 Solution

Accepted Solutions
thiago_mlg
Creator II
Creator II

Boa tarde,

Segue o seu arquivo com o que vc precisa implementado. Basta ajustar o código ao seu arquivo de dados qvd, pois como tive que recarregar o arquivo, criei um qvd a parte.

Qualquer dúvida à disposição.

View solution in original post

16 Replies
eduardo_dimperio
Specialist II
Specialist II

Oi Agnaldo, desculpa a pergunta, mas não seria mais simples criar um campo "Ultima Venda" e fazer um Interval com a venda atual na area de script?

Ribeiro
Specialist
Specialist
Author

O problema que vou criar um relatório fixo, não selecionar datas.

Você tem alguma ideia...

Em 29 de agosto de 2017 14:25, Eduardo DImperio <qcwebmaster@qlikview.com>

escreveu:

Qlik Community <https://community.qlik.com/?et=watches.email.thread>

Produtos vendidos hoje, que não tiveram venda > 90 dias.

resposta de Eduardo DImperio

<https://community.qlik.com/people/eduardo.dimperio?et=watches.email.thread>

em Qlik Brasil - Visualize a discussão completa

<https://community.qlik.com/message/1334302?et=watches.email.thread#1334302>

Neves
eduardo_dimperio
Specialist II
Specialist II

Oi Agnaldo, desculpa a demora.

Vamos por partes e vamos chegar numa solução bacana.

O que você quer dizer com relatório fixo? Você vai ter uma data fixa, um relatorio que vai acontecer apenas uma vez?

O que eu entendi do seu problema, voce tem um produto X que foi vendido pela ultima vez em uma data Y, se essa data Y for maior que 3 meses contando o dia de hoje voce quer listar o produto X. E que semana que vem quando voce for realizar novamente essa consulta, ira pegar o os produtos X que não foram vendidos a mais de 3 meses a partir dessa nova data (uma semana depois).

Se for esse o caso, sua data inicial e final irão mudar diariamente. Por isso não entendi o relatório fixo.

rogerioalmeida
Creator
Creator

Agnaldo,

Tenta algo mais ou menos dessa forma.

only({$<Ano ={$(=Year(today()))}, Mês={$(=Month(today()))}, Dia={'<=$(=Day(Today()))'},

          [Movimento_Tipo_Operacao]={'DEV','VND','VPC','VEF','FPV','CVE'}

          [Data da Fatura] = {"Sum({$<[Ano/Mês]=, [Mês/Ano]=, Ano=, Mês =, [Data da Fatura] = {">=$(=AddMonths(max([Data da Fatura]),-3)) <=$(=AddMonths(max([Data da Fatura]),0))"}>}Valor)<=0"}

>} CalendarDate)

A minha ideia é procurar quem teve venda menor ou igual a Zero nos últimos 3 meses.

Qualquer coisa coloca só essa separada, somente com a dimensão de Data pra ir ajustando, posso ter errado alguma sintaxe, depois você colocar para procurar na data somente a expressão ajustada.

Sum({$<[Ano/Mês]=, [Mês/Ano]=, Ano=, Mês =, [Data da Fatura] = {">=$(=AddMonths(max([Data da Fatura]),-3)) <=$(=AddMonths(max([Data da Fatura]),0))"}>}Valor)<=0"}

Espero ter ajudado.

Ribeiro
Specialist
Specialist
Author

Todos os dias vai sair relatório de vendas. diário.

sum({$<Ano ={$(=Year(today()))}, Mês={$(=Month(today()))}, Dia={'<=$(=Day(Today()))'},[Movimento_Tipo_Operacao]={'DEV','VND','VPC','VEF','FPV','CVE'} >} preco_final)


Eu preciso bonificar as vendedoras que estão vendedo produtos antigos.

Então preciso apenas que saia num relatórios os produtos vendidos no dia atual que não foi vendido a mais de 90 dias.


Um parametros seria fazer pela compra.(PARAMETROS ABAIXO)

MAX([Movimento_Tipo_Operacao]={'CMP'} >} CalendarDate)

Neves
eduardo_dimperio
Specialist II
Specialist II

Entao, era o que eu imaginava.

Voce pode fazer por Set Analisys como o Francisco esta sugerindo.

Eu prefiro fazer via script.

Load

SUM(preco_final)

WHERE

MATCH([Movimento_Tipo_Operacao],'DEV','VND','VPC','VEF','FPV','CVE') AND Interval(TODAY()-DATA_Ultima_Compra)>90

Estou presumindo que existe um campo com a data da ultima compra no seu BD.

Depois é só colocar uma task que voce vai ter o relatório atualizado todo dia

Ribeiro
Specialist
Specialist
Author

Pessoal,

Veja que a data das vendas do dia atual dos produtos.

VND:

sum({$<Ano ={$(=Year(today()))},Mês={$(=Month(today()))},Dia={$(=Day(today()))},[Movimento_Tipo_Operacao]={'VND'} >}Preco_Final)

Preciso bonificar vendedores que vendem produtos com faixa 60,90,180 dias.

Exemplo:

produto 17147 - Vendeu 1805,92 - Data Venda 25/08/2017

Caso ele tenha a ultima venda acima desta que esteja na faixa maior que 60 90 180 dias que coloque a data na sua receptiva coluna.

O Proprietário que bonificar os vendedores que estão conseguindo vender produtos sem vendas por faixa venda.

O qvw esta acima,

o Load está abaixo...

2017-08-30_05-24-58.png

LOAD CalendarDate,

     Trimestre,

     Mês,

     Semana,

     Dia,

     Ano,

     MesAno

FROM

(qvd);

LOAD

     CodigoProduto,

     Prod_Serv_Nome,

     CalendarDate,

     Sequencia,

     Movimento_Prod_Serv_Qtde,

     Preco_Final,

     CodigoFilial,

     date(Data_Efetivado_Estoque) as Data_Efetivado_Estoque,

     Movimento_Tipo_Operacao,

     MATCH([Movimento_Tipo_Operacao],'COM') AND Interval(TODAY()-Data_Efetivado_Estoque)<180 as Ultima_Compra,

     MATCH([Movimento_Tipo_Operacao],'VND') AND Interval(TODAY()-Data_Efetivado_Estoque)<180 as Ultima_Venda,

     Apelido

  

FROM

(qvd);

Neves
eduardo_dimperio
Specialist II
Specialist II

Oi Agnaldo,

Match() deve ser usado para verificar se um valor esta contido

Interval() é usado pra calcular a diferença entre duas datas e precisa de um timestamp como parametro de saida.

e quando voce utiliza os dois é pra checar uma condição, no seu caso esta para guardar valor em um campo.

Imagino que deveria ser assim o codigo:

LOAD

     CodigoProduto,

     Prod_Serv_Nome,

     CalendarDate,

     Sequencia,

     Movimento_Prod_Serv_Qtde,

     Preco_Final,

     CodigoFilial,

     date(Data_Efetivado_Estoque) as Data_Efetivado_Estoque,

     Movimento_Tipo_Operacao,

     IF(MATCH([Movimento_Tipo_Operacao],'COM') AND Interval(TODAY()-Data_Efetivado_Estoque)<180,Data_Efetivado_Estoque,'Ultima Compra a mais de 180 dias') as Ultima_Compra,

     IF(MATCH([Movimento_Tipo_Operacao],'VND') AND Interval(TODAY()-Data_Efetivado_Estoque)<180,Data_Efetivado_Estoque,'Ultima Venda a mais de 180 dias') as Ultima_Venda,

     Apelido

 

FROM

(qvd);

Nesse exemplo, é feita a comparação da data de hoje com o Data_Efetivado_Estoque, se ele for menor que 180 dias vai aparecer no relatorio essa data, se ele for maior que 180 dias aparece uma mensagem de aviso (ou o que voce achar mais adequado).


Segue esses links pra te ajudar.


match - script and chart function ‒ Qlik Sense

Interval – função de script e gráfico ‒ Qlik Sense

thiago_mlg
Creator II
Creator II

Boa tarde,

Segue o seu arquivo com o que vc precisa implementado. Basta ajustar o código ao seu arquivo de dados qvd, pois como tive que recarregar o arquivo, criei um qvd a parte.

Qualquer dúvida à disposição.