Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Boa tarde, hoje para o DRE temos a data de Emissão(Competência) e data de Lançamento(quando é lançado). O que eu preciso, suponhamos que a data de corte é dia 06/12, vou verificar tudo que foi lançado com a emissão em novembro. Mas por exemplo agora vou fazer o fechamento 06/01, vou considerar tudo que foi lançado em Dezembro, mas se um usuário lançar alguém documento após a data de corte referente a novembro, que fechei dia 06/12, vou precisar considerar para o fechamento dia 06/01.
Como eu poderia proceder para criar essa expressão, para o relatório analítico? Para o filtro data eu utilizo da data de emissão.
Amigo;
Fiz uma tabela de teste que atenda seus requisitos:
Segue lógica para apresentar o mês de corte:
Só copiar a parte do IF e aplicar no seu script;
Set vMesCorte = '06';
TABELA_TESTE:
LOAD
data_lancamento,
data_emissao,
if( MonthName(data_lancamento) > MonthName(data_emissao) and Day(data_lancamento) > $(vMesCorte), text(date(data_lancamento,'MM/YYYY')),
if( MonthName(data_lancamento) > MonthName(data_emissao) and Day(data_lancamento) <= $(vMesCorte), text(date(AddMonths(data_lancamento,-1),'MM/YYYY')),
if( MonthName(data_lancamento) = MonthName(data_emissao) and day(data_lancamento) <= $(vMesCorte), text(date(AddMonths(data_emissao,-1),'MM/YYYY')),
text(date(data_emissao,'MM/YYYY'))
)
)
) as mes_corte,
mes_corte_esperado;
Load * Inline
[data_lancamento, data_emissao, mes_corte_esperado
2016-12-26, 2016-12-26, 12/16
2016-12-06, 2016-12-05, 11/16
2016-12-07, 2016-12-05, 12/16
2016-12-29, 2016-12-29, 12/16
2017-02-07, 2017-01-07, 02/17
2017-02-07, 2017-01-06, 02/17
2017-02-07, 2017-01-05, 02/17
2017-02-06, 2017-01-07, 01/17
2017-02-06, 2017-01-06, 01/17
2017-02-06, 2017-01-05, 01/17
2017-02-06, 2017-01-30, 01/17
2017-02-06, 2017-01-06, 01/17
2017-02-07, 2017-01-30, 02/17
2017-02-05, 2017-01-06, 01/17
2017-02-05, 2017-01-07, 01/17
2017-01-06, 2017-01-05, 12/16
];
Agora terá um campo mes_corte para utilizar como filtro.
Não seria melhor você criar uma flag no script de carga validando as datas e "flegando" o registro como processaFechamento = 1 ou 0, ou algo no sentido ? Pensando em facilidade, desse modo seu setanalisis seria por data de corte e a flag criada.
Boa tarde Jackson, você teria algum modelo que eu pudesse utilizar como base? Como seria criar essa flag, fazendo essas comparações? Obrigado por enquanto.
Não tenho conhecimento de como trabalhar com Flag no script e depois colocar para o Set Analisys.
Quando falo "Flag", é assim, vc tem as duas datas na sua tabela, na hora do seu load, você faz um IF e cria um campo de acordo com o resultado avaliado, e depois no setanalysis, você faz um filtro usando esse novo campo.
Por exemplo:
Sum({<processaFechamento={1}>} Valor)
Amigo;
Pode me passar os dados em XLS, CSV ou QVD para testar?
Amigo;
Fiz uma tabela de teste que atenda seus requisitos:
Segue lógica para apresentar o mês de corte:
Só copiar a parte do IF e aplicar no seu script;
Set vMesCorte = '06';
TABELA_TESTE:
LOAD
data_lancamento,
data_emissao,
if( MonthName(data_lancamento) > MonthName(data_emissao) and Day(data_lancamento) > $(vMesCorte), text(date(data_lancamento,'MM/YYYY')),
if( MonthName(data_lancamento) > MonthName(data_emissao) and Day(data_lancamento) <= $(vMesCorte), text(date(AddMonths(data_lancamento,-1),'MM/YYYY')),
if( MonthName(data_lancamento) = MonthName(data_emissao) and day(data_lancamento) <= $(vMesCorte), text(date(AddMonths(data_emissao,-1),'MM/YYYY')),
text(date(data_emissao,'MM/YYYY'))
)
)
) as mes_corte,
mes_corte_esperado;
Load * Inline
[data_lancamento, data_emissao, mes_corte_esperado
2016-12-26, 2016-12-26, 12/16
2016-12-06, 2016-12-05, 11/16
2016-12-07, 2016-12-05, 12/16
2016-12-29, 2016-12-29, 12/16
2017-02-07, 2017-01-07, 02/17
2017-02-07, 2017-01-06, 02/17
2017-02-07, 2017-01-05, 02/17
2017-02-06, 2017-01-07, 01/17
2017-02-06, 2017-01-06, 01/17
2017-02-06, 2017-01-05, 01/17
2017-02-06, 2017-01-30, 01/17
2017-02-06, 2017-01-06, 01/17
2017-02-07, 2017-01-30, 02/17
2017-02-05, 2017-01-06, 01/17
2017-02-05, 2017-01-07, 01/17
2017-01-06, 2017-01-05, 12/16
];
Agora terá um campo mes_corte para utilizar como filtro.
Conseguiu entender amigo?
Muito obrigado Mario, vou implantar aqui mas acredito que vai dar certo.
Grande abraço