Skip to main content
Announcements
SYSTEM MAINTENANCE: Thurs., Sept. 19, 1 AM ET, Platform will be unavailable for approx. 60 minutes.
cancel
Showing results for 
Search instead for 
Did you mean: 
andre_tonini
Creator II
Creator II

Calculo de Valores entre Datas

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

Labels (1)
1 Solution

Accepted Solutions
afurtado
Partner Ambassador/MVP
Partner Ambassador/MVP

André,

segue uma ideia.

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

2016-04-02 21_37_31.jpg

furtado@farolbi.com.br

View solution in original post

4 Replies
afurtado
Partner Ambassador/MVP
Partner Ambassador/MVP

André,

segue uma ideia.

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

2016-04-02 21_37_31.jpg

furtado@farolbi.com.br
vinafidalgo
Partner - Creator
Partner - Creator

Eu teria feito desse jeito também.

andre_tonini
Creator II
Creator II
Author

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;

Clever_Anjos
Employee
Employee

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