4 Replies Latest reply: Aug 2, 2016 7:30 AM by Clever Anjos RSS

    Calculo de Valores entre Datas

    ANDRE TONINI

      Pessoal,

       

            Estou com dificuldades em criar um cenário que possamos analisar o resultado de uma viagem, ou seja, a viagem teve inicio dia 23/01/2016 e término dia 05/03/2016 - totalizando 42 dias de viagem.

       

            Então o que acontece é que preciso elaborar o custo da viagem, mas para cada mês esse custo é diferente - sendo que:

       

      Janeiro: custo por dia R$ 150,00
      Fevereiro: custo por dia R$ 120,00

      Março: custo por dia R$ 220,00

       

            O Resultado teria que ser:
      DT_INICIO: 23/01/2016 e DT_TERMINO = 05/03/2016

      Janeiro = 9 dias (23/01 à 31/01) x 150,00 = R$ 1.350,00

      +

      Fevereiro = 29 dias (01/02 à 29/02) x 120,00 = R$ 3.480,00

      +

      Março = 5 dias (01/03 à 05/03) x 220,00 = R$ 1.100,00

       

      Total da Viagem = 5.930,00

       

       

      Existe como fazer esse tratamento?

       

      att,

       

      André Tonini

        • Re: Calculo de Valores entre Datas
          Alessandro Furtado

          André,

           

          segue uma ideia.

           

          No script criei a cada mês os dias....

           

          2016-04-02 21_37_31.jpg

          • Re: Calculo de Valores entre Datas
            ANDRE TONINI

            Boa tarde Alessandro,

             

                    Muito obrigado deu certo na base que tenho em Excel, hoje já nos atende perfeitamente.

             

                     Agora deixa eu lhe perguntar tentei adaptar esse script para ler diretamente do sistema, sendo que o valor de cada mês é o ADMINIST.VL_RATEIO_DIA AS VL_DIA_NOV_15,

             

             

            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';

             

            ODBC CONNECT TO Datatransp;

             

            // -------- Novembro 2015 ---------- //

            Indice:

            CrossTable (Mes, Custo)

            SELECT

                  FORNECEDOR.NM_FANTASIA AS NM_FORNECEDOR,

                  ADMINIST.NR_NF,

                  ADMINIST.SR_NF,

                  ADMINIST.DT_EMISSAO,

                  TIPODESP.NM_TIPODESP,

                  ADMINIST.CD_VEICULO,

                  VEICULO.DT_AQUISICAO,

                  VEICULO.DT_DESATIVACAO,

                  MARCA.NM_MARCA,

                  MODELO.NM_MODELO,

             

              (SELECT QT_RATEIO_DIAS FROM SPR_ADMINIST_RATEIO

                ('01.11.2015', '30.11.2015', DT_AQUISICAO, DT_DESATIVACAO,

                  DT_RATEIO_INI, DT_RATEIO_FIM, VL_RATEIO_DIA ))AS QT_DIAS_NOV_15,

              (SELECT VL_RATEIO_DIAS FROM SPR_ADMINIST_RATEIO

                  ('01.11.2015', '30.11.2015', DT_AQUISICAO, DT_DESATIVACAO,

                    DT_RATEIO_INI, DT_RATEIO_FIM, VL_RATEIO_DIA ))AS VL_DIASS_NOV_15,

             

                  CASE

                    WHEN VEICULO.DT_DESATIVACAO < ADMINIST.DT_RATEIO_FIM THEN

                      VEICULO.DT_DESATIVACAO

                    ELSE ADMINIST.DT_RATEIO_FIM

                  END AS DT_RATEIO_FIM,

                  CASE

                    WHEN VEICULO.DT_AQUISICAO > ADMINIST.DT_RATEIO_INI THEN

                       VEICULO.DT_AQUISICAO

                       ELSE ADMINIST.DT_RATEIO_INI

                  END AS DT_RATEIO_INI,

            ADMINIST.DT_RATEIO_INI AS DT_RATEIO_INI_LCTO,

                  ADMINIST.DT_RATEIO_FIM AS DT_RATEIO_FIM_LCTO,

                 

                  ADMINIST.VL_RATEIO_DIA AS VL_DIA_NOV_15,

                 

                  CAST(('01.11.2015')AS DATE)AS PDT_INI,

            CAST(('30.11.2015')AS DATE)AS PDT_FIM

            FROM

            ADMINIST

            JOIN FORNECEDOR ON

            (FORNECEDOR.CD_FORNECEDOR = ADMINIST.CD_FORNECEDOR)

            JOIN TIPODESP ON

            (TIPODESP.CD_TIPODESP = ADMINIST.CD_TIPODESP)

            JOIN VEICULO ON

            (VEICULO.CD_VEICULO = ADMINIST.CD_VEICULO)

                  JOIN MARCA ON

                  (MARCA.CD_MARCA = VEICULO.CD_MARCA)

                  JOIN MODELO ON

                  (VEICULO.CD_MARCA = MODELO.CD_MARCA)AND

                  (VEICULO.CD_MODELO = MODELO.CD_MODELO)

                      

                WHERE

             

            (ADMINIST.DT_RATEIO_INI <= '30.11.2015')AND

            (ADMINIST.DT_RATEIO_FIM >= '01.11.2015')

                 

                ORDER BY

            CD_VEICULO,

            DT_RATEIO_INI,

            NR_NF;

             

            Viagem:

            LOAD

                 NR_VIAGEM,

                 Mes,

                 DT_SAIDA,

                 DT_RETORNO,

                 Count(Data) as Dias_No_Mes

            Group by NR_VIAGEM,Mes,DT_SAIDA,DT_RETORNO;  

             

            LOAD

                 NR_VIAGEM,

                 date(DT_SAIDA + (IterNo()-1))  as Data,

                 Text(Capitalize(date(DT_SAIDA + (IterNo()-1),'MMMM')))   as Mes,

            date(DT_SAIDA) as DT_SAIDA,     

            date(DT_RETORNO)  as DT_RETORNO,     

                 ((DT_RETORNO - DT_SAIDA)+1)  as QT_DIAS

             

            FROM VIAGEM;

            • Re: Calculo de Valores entre Datas
              Clever Anjos

              Já chegou à uma solução? Se sim, marque a resposta que o ajudou como "Correta", nos ajudando a manter os forums organizados

              Como obter ajuda? Leia antes de postar