Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Bom dia.
Pessoal, a dúvida de hoje parece (pelo menos para mim), mais complicada, afinal, não cheguei nem perto de resolver.
Cenário:
Na empresa que trabalho, registramos no sistema, os vários salários que uma pessoa teve ao longo do tempo na empresa, assim como as várias funções também, tudo dentro do HISTÓRICO_SALARIAL, e do HISTÓRICO_FUNCIONAL....
A cada três anos, por exemplo, de acordo com a nossa política salarial, os funcionários (sem nenhum problema, faltas, advertência, etc...), recebem 3% de bonus no salário, com isso, na função que é mudada, entra uma letrinha a mais, além dos 3% citados, além é claro, da correção de salário pela data base da categoria sindical anualmente...
Todo painel que faço, que envolva funcionário e função, tenho que respeitar a função que o funcionário tinha na época consultada, mas não sei como fazer isso. Diversos painés que eu tinha que desenvolver, parei quando encontrei esta dificuldade, ou ignorei, e mostrei apenas a última função e salário, mas sei que está errado. tenho que mostrar o que de fato era na época selecionada.
Anexei a esta discussão, QVDs e QVW, nos QVDs, tem o meu registro, e nele, as vezes (acho que umas 5 de salário e 5 de mudança de função) que ocorreram estas mudanças.
Os tabelas são ligadas pelo ID_FUNCIONARIO.
Exemplo fictício, apenas para ilustrar:
Fui registrado em 01/01/2009 e minha data de saída é 31/12/2030 (todo registro tem data fim, que é chutada para frente, quando o funcionário é demitido, esta data é alterada para data de sua saída)
Entre 01/03/2009 e 28/02/2010 meu salário era R$3.000,00 e função era Analista de Sistemas 3A
Entre 01/03/2010 e 28/02/2011 meu salário era R$3.300,00 e função era de Analista de Sistemas 3E
Entre 01/03/2011 e 28/02/2012 meu salário era R$3.700,00 e função era de Analista de Sistemas 3G
Resumindo, tenho:
período para o registro em si (data de admissão e demissão)
período para cada função exercida
período para cada salário que recebi
Os dados são fictícios, as datas e valores não refletem a realidade, mas tudo que cito acima, nas nas datas e valores citados, estão nos arquivos QVDs que estou anexando.
Sei que é uma situação mais avançada, mas vocês podem me dar uma força nisso?
Se tiver algum exemplo na comunidade (que não achei), que reflita uma situação semelhante, posso usar como exemplo.
Desde já agradeço pela ajuda de sempre.
At, Marcos.
estejam todos na paz.
Nesta aplicação você vai liberar o filtro de dia ao usuário ou somente do mês?
Tive um problema parecido, e consegui resolver com a ajuda do fernando.tonial.
da uma olhada se ajuda, se não conseguir tento montar a resposta para ajudar.
https: // community.qlik.com/thread/114438?sr=inbox&ru=80625
Mês e Ano.
Valeu, vou dar uma olhada.
Marcos, boa tarde.
Segue a tela do exemplo.
Para o historico salarial,
DT_INICIO_VIGENCIA | DT_FIM_VIGENCIA | ID_FUNCIONARIO | ID_HISTORICO_SALARIAL | ID_TIPO_SALARIO | VL_SALARIO |
---|---|---|---|---|---|
09/02/2009 00:00:00 | 28/02/2013 00:00:00 | 94542 | 355270 | 311 | 3890,40 |
01/03/2013 00:00:00 | 30/04/2014 00:00:00 | 94542 | 482450 | 311 | 4279,44 |
01/05/2014 00:00:00 | 31/05/2015 00:00:00 | 94542 | 508205 | 311 | 4707,30 |
01/06/2015 00:00:00 | 31/12/2030 00:00:00 | 94542 | 534833 | 311 | 5093,40 |
Entao, o resultado seria
Ano | Mes | NM_FUNCIONARIO | Valor Salario |
---|---|---|---|
2009 | fev | MARCOS ANDRE F FERREIRA | 3890,40 |
2009 | mar | MARCOS ANDRE F FERREIRA | 3890,40 |
2009 | abr | MARCOS ANDRE F FERREIRA | 3890,40 |
2009 | mai | MARCOS ANDRE F FERREIRA | 3890,40 |
2009 | jun | MARCOS ANDRE F FERREIRA | 3890,40 |
2009 | jul | MARCOS ANDRE F FERREIRA | 3890,40 |
2009 | ago | MARCOS ANDRE F FERREIRA | 3890,40 |
2009 | set | MARCOS ANDRE F FERREIRA | 3890,40 |
2009 | out | MARCOS ANDRE F FERREIRA | 3890,40 |
2009 | nov | MARCOS ANDRE F FERREIRA | 3890,40 |
2009 | dez | MARCOS ANDRE F FERREIRA | 3890,40 |
2010 | jan | MARCOS ANDRE F FERREIRA | 3890,40 |
2010 | fev | MARCOS ANDRE F FERREIRA | 3890,40 |
2010 | mar | MARCOS ANDRE F FERREIRA | 3890,40 |
2010 | abr | MARCOS ANDRE F FERREIRA | 3890,40 |
2010 | mai | MARCOS ANDRE F FERREIRA | 3890,40 |
2010 | jun | MARCOS ANDRE F FERREIRA | 3890,40 |
2010 | jul | MARCOS ANDRE F FERREIRA | 3890,40 |
2010 | ago | MARCOS ANDRE F FERREIRA | 3890,40 |
2010 | set | MARCOS ANDRE F FERREIRA | 3890,40 |
2010 | out | MARCOS ANDRE F FERREIRA | 3890,40 |
2010 | nov | MARCOS ANDRE F FERREIRA | 3890,40 |
2010 | dez | MARCOS ANDRE F FERREIRA | 3890,40 |
2011 | jan | MARCOS ANDRE F FERREIRA | 3890,40 |
2011 | fev | MARCOS ANDRE F FERREIRA | 3890,40 |
2011 | mar | MARCOS ANDRE F FERREIRA | 3890,40 |
2011 | abr | MARCOS ANDRE F FERREIRA | 3890,40 |
2011 | mai | MARCOS ANDRE F FERREIRA | 3890,40 |
2011 | jun | MARCOS ANDRE F FERREIRA | 3890,40 |
2011 | jul | MARCOS ANDRE F FERREIRA | 3890,40 |
2011 | ago | MARCOS ANDRE F FERREIRA | 3890,40 |
2011 | set | MARCOS ANDRE F FERREIRA | 3890,40 |
2011 | out | MARCOS ANDRE F FERREIRA | 3890,40 |
2011 | nov | MARCOS ANDRE F FERREIRA | 3890,40 |
2011 | dez | MARCOS ANDRE F FERREIRA | 3890,40 |
2012 | jan | MARCOS ANDRE F FERREIRA | 3890,40 |
2012 | fev | MARCOS ANDRE F FERREIRA | 3890,40 |
2012 | mar | MARCOS ANDRE F FERREIRA | 3890,40 |
2012 | abr | MARCOS ANDRE F FERREIRA | 3890,40 |
2012 | mai | MARCOS ANDRE F FERREIRA | 3890,40 |
2012 | jun | MARCOS ANDRE F FERREIRA | 3890,40 |
2012 | jul | MARCOS ANDRE F FERREIRA | 3890,40 |
2012 | ago | MARCOS ANDRE F FERREIRA | 3890,40 |
2012 | set | MARCOS ANDRE F FERREIRA | 3890,40 |
2012 | out | MARCOS ANDRE F FERREIRA | 3890,40 |
2012 | nov | MARCOS ANDRE F FERREIRA | 3890,40 |
2012 | dez | MARCOS ANDRE F FERREIRA | 3890,40 |
2013 | jan | MARCOS ANDRE F FERREIRA | 3890,40 |
2013 | fev | MARCOS ANDRE F FERREIRA | 3890,40 |
2013 | mar | MARCOS ANDRE F FERREIRA | 4279,44 |
2013 | abr | MARCOS ANDRE F FERREIRA | 4279,44 |
2013 | mai | MARCOS ANDRE F FERREIRA | 4279,44 |
2013 | jun | MARCOS ANDRE F FERREIRA | 4279,44 |
2013 | jul | MARCOS ANDRE F FERREIRA | 4279,44 |
2013 | ago | MARCOS ANDRE F FERREIRA | 4279,44 |
2013 | set | MARCOS ANDRE F FERREIRA | 4279,44 |
2013 | out | MARCOS ANDRE F FERREIRA | 4279,44 |
2013 | nov | MARCOS ANDRE F FERREIRA | 4279,44 |
2013 | dez | MARCOS ANDRE F FERREIRA | 4279,44 |
2014 | jan | MARCOS ANDRE F FERREIRA | 4279,44 |
2014 | fev | MARCOS ANDRE F FERREIRA | 4279,44 |
2014 | mar | MARCOS ANDRE F FERREIRA | 4279,44 |
2014 | abr | MARCOS ANDRE F FERREIRA | 4279,44 |
2014 | mai | MARCOS ANDRE F FERREIRA | 4707,30 |
2014 | jun | MARCOS ANDRE F FERREIRA | 4707,30 |
2014 | jul | MARCOS ANDRE F FERREIRA | 4707,30 |
2014 | ago | MARCOS ANDRE F FERREIRA | 4707,30 |
2014 | set | MARCOS ANDRE F FERREIRA | 4707,30 |
2014 | out | MARCOS ANDRE F FERREIRA | 4707,30 |
2014 | nov | MARCOS ANDRE F FERREIRA | 4707,30 |
2014 | dez | MARCOS ANDRE F FERREIRA | 4707,30 |
2015 | jan | MARCOS ANDRE F FERREIRA | 4707,30 |
2015 | fev | MARCOS ANDRE F FERREIRA | 4707,30 |
2015 | mar | MARCOS ANDRE F FERREIRA | 4707,30 |
2015 | abr | MARCOS ANDRE F FERREIRA | 4707,30 |
2015 | mai | MARCOS ANDRE F FERREIRA | 4707,30 |
2015 | jun | MARCOS ANDRE F FERREIRA | 5093,40 |
Segue o script
//HISTORICO_FUNCIONAL:
Movimento:
LOAD
ID_FUNCIONARIO,
DT_INICIO_VIGENCIA,
DT_FIM_VIGENCIA,
ID_FUNCAO,
ID_UNIDADE_NEGOCIO,
Year(addmonths(DT_INICIO_VIGENCIA,(IterNo()-1))) as Ano,
month(addmonths(DT_INICIO_VIGENCIA,(IterNo()-1))) as Mes
While IterNo() <= Qtde_Meses;
LOAD
ID_HISTORICO_FUNCIONAL,
ID_FUNCIONARIO,
date(floor(DT_INICIO_VIGENCIA)) as DT_INICIO_VIGENCIA,
date(floor(if(year(DT_FIM_VIGENCIA)=2030,today(),DT_FIM_VIGENCIA))) as DT_FIM_VIGENCIA,
round((if(year(DT_FIM_VIGENCIA)=2030,today(),DT_FIM_VIGENCIA) - DT_INICIO_VIGENCIA)/30) as Qtde_Meses,
ID_FUNCAO,
ID_UNIDADE_NEGOCIO
FROM [HISTORICO_FUNCIONAL.qvd] (qvd);
HISTORICO_SALARIAL:
LOAD
ID_FUNCIONARIO,
ID_TIPO_SALARIO,
DT_INICIO_VIGENCIA,
DT_FIM_VIGENCIA,
VL_SALARIO,
Year(addmonths(DT_INICIO_VIGENCIA,(IterNo()-1))) as Ano,
month(addmonths(DT_INICIO_VIGENCIA,(IterNo()-1))) as Mes
While IterNo() <= Qtde_Meses;
LOAD
ID_HISTORICO_SALARIAL,
ID_FUNCIONARIO,
ID_TIPO_SALARIO,
date(floor(DT_INICIO_VIGENCIA)) as DT_INICIO_VIGENCIA,
date(floor(if(year(DT_FIM_VIGENCIA)=2030,today(),DT_FIM_VIGENCIA))) as DT_FIM_VIGENCIA,
round((if(year(DT_FIM_VIGENCIA)=2030,today(),DT_FIM_VIGENCIA) - DT_INICIO_VIGENCIA)/30)as Qtde_Meses,
VL_SALARIO
FROM [HISTORICO_SALARIAL.qvd] (qvd);
//
Concatenate (Movimento)
LOAD * Resident HISTORICO_SALARIAL;
//
DROP Table HISTORICO_SALARIAL;
//
//
FUNCIONARIOS:
LOAD ID_FUNCIONARIO,
ID_EMPRESA,
ID_MOTIVO_SAIDA,
NR_CRACHA,
NM_FUNCIONARIO,
DT_NASCIMENTO,
CS_SEXO,
DT_INICIO_ATIVIDADE,
DT_INICIO_ATIVIDADE as DT_INICIO_ATIVIDADE_FUNC,
DT_FIM_ATIVIDADE as DT_FIM_ATIVIDADE_FUNC,
CS_INSTRUCAO,
NR_LOCAL,
TE_MOTIVO,
ID_MOTIVO
FROM [FUNCIONARIOS.qvd] (qvd);
Segue o modelo
!
Obrigado meu amigo, vc como sempre me salvando....
Valeu mesmo.
abraços,
Marcos.