Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
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
André,
segue uma ideia.
No script criei a cada mês os dias....
André,
segue uma ideia.
No script criei a cada mês os dias....
Eu teria feito desse jeito também.
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;
Já chegou à uma solução? Se sim, marque a resposta que o ajudou como "Correta", nos ajudando a manter os forums organizados