18 Replies Latest reply: Oct 17, 2014 3:59 PM by ANDRE TONINI RSS

    Ultimos 3 Preços de Compras

    ANDRE TONINI

      Boa Tarde,

       

              Pessoal, precisaria adicionar um calendário onde Eu possa consultar os documentos por data e que de acordo com esse filtro possa ter em 3 colunas o último preço, penultimo preço e antepenultimo.

       

               A idéia é poder auditar diariamente a evolução do preço de compra se teve aumento ou redução com relação ao ultimo preço com o histórico das outras 2 últimas compras.

       

               No exemplo abaixo, hoje dia 18/09/2014 estariamos analisando o que entrou de nota fiscal ontem e analisar se nos últimos 3 preços de compras houve vairação.

       

      11.jpg

       

       

                Anexo segue o qvw caso alguem possa me ajudar.

       

      att,

       

      André Tonini

        • Re: Ultimos 3 Preços de Compras
          Yuri Nicolett

          André, para fazer isso, basta você colocar em variáveis as datas e utiliza-las em set analysis nas expressões.

          Exemplo:

           

          SET vDataUltima = =Data;

          SET vDataPenultima = Date(Data-1, 'DD/MM/YYYY');

          SET vDataAntiPenultima = Date(Data-2, 'DD/MM/YYYY');

           

           

          SUM({$<Data = {"$(vDataPenultima )"} >} VALOR)

          SUM({$<Data = {"$(vDataAntiPenultima)"} >} VALOR)

           

           

          OBS: Em sua tabela, não deve existir a dimensão Data, caso contrário o resultado esperado não ocorrerá.

          • Re: Ultimos 3 Preços de Compras
            ANDRE TONINI

            Olá Yuri,

             

                      Obrigado pelo retorno, não entendi muito bem a respeito da parte do SET (não conheço ainda muito bem essa parte).

             

                      a) Seria assim a criação da variavel?

             

            SET ThousandSep='.';

            SET DecimalSep=',';

            SET MoneyThousandSep='.';

            SET MoneyDecimalSep=',';

            SET MoneyFormat='R$ #.##0,00;-R$ #.##0,00';

            SET TimeFormat='hh:mm:ss';

            SET DateFormat='DD/MM/YYYY';

            SET TimestampFormat='DD/MM/YYYY hh:mm:ss[.fff]';

            SET MonthNames='jan;fev;mar;abr;mai;jun;jul;ago;set;out;nov;dez';

            SET DayNames='seg;ter;qua;qui;sex;sáb;dom';

            SET vDataUltima = =Data;

            SET vDataPenultima = Date(Data-1, 'DD/MM/YYYY');

            SET vDataAntiPenultima = Date(Data-2, 'DD/MM/YYYY');

             

            Um abraço

             

            André Tonini

              • Re: Ultimos 3 Preços de Compras
                Yuri Nicolett

                Isso, mas não esqueça de trocar o "Data" pelo nome do seu campo de data

                  • Re: Ultimos 3 Preços de Compras
                    ANDRE TONINI

                    Olá Yuri,

                     

                              Desculpa, mas creio que Eu esteja ainda fazendo alguma coisa errada.

                     

                     

                    a) Segue estrutura do meu script, onde o campo MOV_DATA é "Data" e MOV_UNITARIO é "Valor"

                     

                     

                    SET ThousandSep='.';

                    SET DecimalSep=',';

                    SET MoneyThousandSep='.';

                    SET MoneyDecimalSep=',';

                    SET MoneyFormat='R$ #.##0,00;-R$ #.##0,00';

                    SET TimeFormat='hh:mm:ss';

                    SET DateFormat='DD/MM/YYYY';

                    SET TimestampFormat='DD/MM/YYYY hh:mm:ss[.fff]';

                    SET MonthNames='jan;fev;mar;abr;mai;jun;jul;ago;set;out;nov;dez';

                    SET DayNames='seg;ter;qua;qui;sex;sáb;dom';

                    SET vDataUltima = =MOV_DATA;

                    SET vDataPenultima = Date(MOV_DATA-1, 'DD/MM/YYYY');

                    SET vDataAntiPenultima = Date(MOV_DATA-2, 'DD/MM/YYYY');

                     

                    ODBC CONNECT TO BI;

                     

                     

                    // ---- Movimento Produto/Custo ---- //

                    LOAD *,

                        YEAR(MOV_DATA) AS ANO_MOV,

                        MONTH(MOV_DATA) AS MES_MOV,

                        DAY(MOV_DATA) AS DIA_MOV,

                        DATE(MOV_DATA) AS DATA_MOV,

                        WEEK(MOV_DATA) AS SEMANA_MOV,

                        WEEKDAY(MOV_DATA) AS DIA_SEMANA_MOV;

                     

                     

                    SQL SELECT

                      MOV_DATA,

                      MOV_PRO_CODIGO,

                      MOV_CUSTOFISCAL,

                        MOV_UNITARIO,

                        MOV_ORIGEM

                    FROM PRODUTOS_MOVIMENTOS_F WHERE MOV_DATA > '31.12.2013' AND MOV_ORIGEM = 'NTC';

                     

                    b) Na expressão defini o Penultimo Valor e AntePenultimo, respectivamente

                    SUM({$<DATA_MOV = {"$(vDataPenultima )"} >} MOV_UNITARIO) // esse é o penultimo

                    SUM({$<MOV_DATA = {"$(vDataAntiPenultima)"} >} MOV_UNITARIO) // esse é o antepenultimo

                     

                         Att,

                     

                         André Tonini

                • Re: Ultimos 3 Preços de Compras
                  ANDRE TONINI

                  Olá Yuri,

                   

                         Analisei o qvw, porém quando informo uma data no filtro, na coluna "Penultima Compra' e 'AntePenultima Compra" gera valor zerado.

                   

                         Montei um exemplo no excel pois pensei que poderia ser algo quanto a data, e dessa forma já me atenderia.

                  a) Os dados são os que estão na tabela abaixo, onde apresenta os produtos que tiveram movimento de entrada nas respectivas datas (MOV_DATA) e valor (MOV_UNITARIO).

                  11.jpg

                   

                  b) Sendo assim, digamos que estou hoje dia 20/09/2014 realizando uma consulta informando no filtro MOV_DATA para saber o que movimentou hoje e saber o penultimo e antpenultimo valor, seria mais ou menos assim:

                  11.png

                   

                  Desde já agradeço pela atenção.

                   

                  André Tonini

                  • Re: Ultimos 3 Preços de Compras
                    ANDRE TONINI

                    Bom dia Yuri,

                              Legal...muito obrigado.

                     

                    André Tonini

                    • Re: Ultimos 3 Preços de Compras
                      Alessandro Furtado

                      Boa noite.

                       

                      Pelo o que entendi o resultado deveria ser o abaixo como exemplo?

                       

                      Código Produto Data Entrada Nº Nota Fiscal Empresa Preço Ultima Compra Preço Penultima Preço AntePenultima
                      305807/02/201473305120,230,000,00
                      305805/03/201428894119,1520,230,00
                      305808/04/201429723118,1119,1520,23
                      305810/06/201430772118,1118,1119,15
                      305824/06/201431187117,5618,1118,11
                      305803/07/201431352117,5617,5618,11
                      305828/07/201480422117,7217,5617,56
                      305807/08/201432170117,7217,7217,56
                      305814/08/201432359117,7217,7217,72

                       

                      Se for, basta usar o seguinte codigo abaixo do seu

                       

                       

                      left join (PRODUTOS_MOVIMENTOS_F)

                      add LOAD

                         MOV_DOCUMENTO,

                         PRO_CODIGO,

                         MOV_DATA,

                         if(PRO_CODIGO = Previous(PRO_CODIGO),Previous(MOV_CUSTOFISCAL))                          as Penultimo,

                         if(PRO_CODIGO = Previous(Previous(PRO_CODIGO)),Previous(Previous(MOV_CUSTOFISCAL)))      as AntePenultimo

                      Resident PRODUTOS_MOVIMENTOS_F Order by PRO_CODIGO,DATA_MOV;

                       

                       

                      Att,

                       

                      Alessandro Furtado

                        • Re: Ultimos 3 Preços de Compras
                          ANDRE TONINI

                          Alessandro,

                           

                                  Boa tarde, tudo bem?

                                  Desculpa toda essa demora em retorná-lo, mas era exatamente isso que Eu precisava!

                           

                                  Adicionei no script a parte citada por você e fechou.

                           

                          SET ThousandSep='.';

                          SET DecimalSep=',';

                          SET MoneyThousandSep='.';

                          SET MoneyDecimalSep=',';

                          SET MoneyFormat='R$ #.##0,00;-R$ #.##0,00';

                          SET TimeFormat='hh:mm:ss';

                          SET DateFormat='DD/MM/YYYY';

                          SET TimestampFormat='DD/MM/YYYY hh:mm:ss[.fff]';

                          SET MonthNames='jan;fev;mar;abr;mai;jun;jul;ago;set;out;nov;dez';

                          SET DayNames='seg;ter;qua;qui;sex;sáb;dom';

                          SET vDataUltima = =MOV_DATA;

                          SET vDataPenultima = Date(MOV_DATA-1, 'DD/MM/YYYY');

                          SET vDataAntiPenultima = Date(MOV_DATA-2, 'DD/MM/YYYY');

                           

                          ODBC CONNECT TO bi;

                           

                           

                           

                          // ---- Movimento Produto/Custo ---- //

                          LOAD *,

                              YEAR(MOV_DATA) AS ANO_MOV,

                              MONTH(MOV_DATA) AS MES_MOV,

                              DAY(MOV_DATA) AS DIA_MOV,

                              DATE(MOV_DATA) AS DATA_MOV,

                              WEEK(MOV_DATA) AS SEMANA_MOV,

                              WEEKDAY(MOV_DATA) AS DIA_SEMANA_MOV;

                           

                           

                          SQL SELECT

                            MOV_DATA,

                            MOV_PRO_CODIGO AS PRO_CODIGO,

                            MOV_FIL_CODIGO,

                            MOV_CUSTOFISCAL,

                            MOV_DOCUMENTO,

                              MOV_UNITARIO,

                              MOV_ORIGEM

                          FROM PRODUTOS_MOVIMENTOS_F WHERE MOV_DATA > '31.12.2013' AND MOV_ORIGEM = 'NTC';

                           

                           

                          left join (PRODUTOS_MOVIMENTOS_F)

                          add LOAD

                             MOV_DOCUMENTO,

                             PRO_CODIGO,

                             MOV_DATA,

                             if(PRO_CODIGO = Previous(PRO_CODIGO),Previous(MOV_UNITARIO))                          as Penultimo,

                             if(PRO_CODIGO = Previous(Previous(PRO_CODIGO)),Previous(Previous(MOV_UNITARIO)))      as AntePenultimo

                          Resident PRODUTOS_MOVIMENTOS_F Order by PRO_CODIGO,DATA_MOV;

                           

                           

                                  Obrigado

                           

                          Att,

                           

                          André Tonini