Qlik Community

Qlik Brasil

Group community for Brazil users. discussion only in Portuguese.

thiago_justen
Valued Contributor III

Re: Calculo de Dias Uteis

Eis o script Marcel:

///$tab Main

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

///$tab CALENDARIO

SET MonthNames='JAN;FEV;MAR;ABR;MAI;JUN;JUL;AGO;SET;OUT;NOV;DEZ';

SET DayNames='SEG;TER;QUA;QUI;SEX;SAB;DOM';

// Iniciar as variáveis que determinarão o intervalo do calendário

LET V_DATA_INI = MakeDate( Year( Today())-4, 1, 1);

LET V_DATA_FIN = YearEnd( Today());

LET V_ANO = Year( V_DATA_INI);

LET V_ANO_FIN = Year( V_DATA_FIN);

DIRECTORY;

DO WHILE V_ANO <= V_ANO_FIN

LET V_C01 = Floor( V_ANO/100);

LET V_C02 = V_ANO - (19*Floor( V_ANO /19));

LET V_C03 = Floor((V_C01 - 17)/25);

LET V_C04 = V_C01 - Floor(V_C01/4) - Floor((V_C01-V_C03)/3) +(19*V_C02) + 15;

LET V_C05 = V_C04 - (30*Floor(V_C04/30));

LET V_C06 = V_C05 - (Floor(V_C05/28)*(1-Floor(V_C05/28))*Floor(29/(V_C05+1))*Floor((21-V_C02)/11));

LET V_C07 = V_ANO + Floor(V_ANO/4) + V_C06 + 2 -V_C01 + Floor(V_C01/4);

LET V_C08 = V_C07 - 7*Floor(V_C07/7);

LET V_C09 = V_C06 - V_C08;

LET V_MES = 3 + Floor((V_C09+40)/44);

LET V_DIA = V_C09 + 28 - (31*Floor(V_MES/4));

SET V_Pascoa =  'MakeDate( $(V_ANO), $(V_MES), $(V_DIA))';

FERIADOS:

// Para adicionar um novo feriado insira a linha de comando da seguinte forma: "LOAD  $(V_ANO) & 'MM' & 'DD' as Id_Calendario, 'Nome_do_Feriado' as Feriado AutoGenerate(1);"

// Substituindo MM pelo número do mês e DD pelo dia; ambos com dois algarismos

LOAD  $(V_ANO) & Num($(V_MES),'00') & Num($(V_DIA),'00') as Id_Calendario, 'Páscoa' as Feriado AutoGenerate(1);

LOAD  $(V_ANO) & Num( Month( $(V_Pascoa) - 47), '00') & Num( Day($(V_Pascoa) - 47), '00') as Id_Calendario, 'Carnaval' as Feriado AutoGenerate(1);

LOAD  $(V_ANO) & Num( Month( $(V_Pascoa) - 2), '00') & Num( Day( $(V_Pascoa) - 2), '00') as Id_Calendario, 'Paixão de Cristo' as Feriado AutoGenerate(1);

LOAD  $(V_ANO) & Num( Month( $(V_Pascoa) + 60), '00') & Num( Day( $(V_Pascoa) + 60), '00') as Id_Calendario, 'Corpus Cristi' as Feriado AutoGenerate(1);

LOAD  $(V_ANO) & '01' & '01' as Id_Calendario, 'Confraternização Universal' as Feriado AutoGenerate(1);

LOAD  $(V_ANO) & '04' & '21' as Id_Calendario, 'Tiradentes' as Feriado AutoGenerate(1);

LOAD  $(V_ANO) & '05' & '01' as Id_Calendario, 'Dia do Trabalhador' as Feriado AutoGenerate(1);

LOAD  $(V_ANO) & '09' & '07' as Id_Calendario, 'Independência' as Feriado AutoGenerate(1);

LOAD  $(V_ANO) & '10' & '12' as Id_Calendario, 'Nossa Senhora Aparecida' as Feriado AutoGenerate(1);

LOAD  $(V_ANO) & '11' & '02' as Id_Calendario, 'Finados' as Feriado AutoGenerate(1);

LOAD  $(V_ANO) & '11' & '15' as Id_Calendario, 'Proclamação da República' as Feriado AutoGenerate(1);

LOAD  $(V_ANO) & '12' & '25' as Id_Calendario, 'Natal' as Feriado AutoGenerate(1);

DATAS_COMEMORATIVAS:

// Para adicionar uma nova data comemorativa insira a linha de comando da seguinte forma:

//"LOAD  $(V_ANO) & 'MM' & 'DD' as Id_Calendario, 'Nome_Da_Data_Comemorativa' as Dt_Comemorativa AutoGenerate(1);"

// Substituindo MM pelo número do mês e DD pelo dia; ambos com dois algarismos

LOAD  $(V_ANO) & '10' & '30' as Id_Calendario, 'Emancipação Política de Arapiraca' as Dt_Comemorativa  AutoGenerate(1);

LOAD  $(V_ANO) & '09' & '16' as Id_Calendario, 'Emancipação Política de Alagoas' as Dt_Comemorativa AutoGenerate(1);

LOAD  $(V_ANO) & '02' & '02' as Id_Calendario, 'N.S. do Bom Conselho' as Dt_Comemorativa AutoGenerate(1);

LOAD  $(V_ANO) & '10' & '17' as Id_Calendario, 'Dia do Eletricista' as Dt_Comemorativa AutoGenerate(1);

LOAD  $(V_ANO) & '11' & '20' as Id_Calendario, 'Consciência Negra' as Dt_Comemorativa AutoGenerate(1);

LOAD  $(V_ANO) & '12' & '31' as Id_Calendario, 'Revellion' as Dt_Comemorativa AutoGenerate(1);

LOAD  $(V_ANO) & '12' & '08' as Id_Calendario, 'N.S. da Conceição' as Dt_Comemorativa AutoGenerate(1);

LOAD  $(V_ANO) & '06' & '13' as Id_Calendario, 'Santo Antônio' as Dt_Comemorativa AutoGenerate(1);

LOAD  $(V_ANO) & '06' & '24' as Id_Calendario, 'São João' as Dt_Comemorativa AutoGenerate(1);

LOAD  $(V_ANO) & '06' & '29' as Id_Calendario, 'São Pedro' as Dt_Comemorativa AutoGenerate(1);

LOAD  $(V_ANO) & '10' & '15' as Id_Calendario, 'Dia dos Professores' as Dt_Comemorativa AutoGenerate(1);

LET V_ANO = V_ANO +1;

LOOP;

Calendario_Temp:

LOAD

// Date( Data, 'DD/MM/YYYY' ) as Data,

Data,

Num( Day( Data ), '00' ) as DIA,

Month( Data ) as MES,

Year( Data ) as ANO,

DayNumberOfQuarter( Data ) as [Dia Trimestre],

DayNumberOfYear( Data ) as [Dia Ano],

MonthName( Data ) as [Mes Ano],

QuarterName( Data ) as Quarter,

Week( Data ) as Semana,

Ceil( Month( Data ) / 3 )&'º Trim' as Trimestre,

WeekDay( Data ) as [Dia Semana],

// ApplyMap( 'MapDias', Text( WeekDay( Data ) ) ) as [N° Dia Semana],

AutoNumber( Data ) as Sequencial,

If( WeekDay( Data )= 'DOM' or WeekDay( Data )= 'SAB', 0, 1 ) as DiaUtil_Temp,

Year( Data )&Num( Month( Data ), 00 ) as [Ano Mes],

Year( Data )&Num( Month( Data ),'00')&Num( Day( Data ), '00' ) as Id_Calendario;

LOAD

// Date( MonthEnd( Today() ) - Recno(), 'DD/MM/YYYY' ) as Data

Date( YearEnd(Today())+1 - Recno()) as Data

AutoGenerate( V_DATA_FIN+1 - V_DATA_INI );

Left Join

LOAD * Resident FERIADOS;

Left Join

LOAD * Resident DATAS_COMEMORATIVAS;

Calendario:

LOAD Data,

DIA,

MES,

ANO,

[Dia Trimestre],

[Dia Ano],

[Mes Ano],

Quarter,

Semana,

Trimestre,

[Dia Semana],

Sequencial,

[Ano Mes],

Id_Calendario,

Feriado,

Dt_Comemorativa

, If( len(Feriado),0,DiaUtil_Temp) as DiaUtil;

LOAD * Resident Calendario_Temp;

STORE Calendario into Calendario.qvd (qvd);

//STORE Calendario into .\TRANSFORMACAO\Calendario.qvd (qvd);

//STORE Calendario into \\Servarquivos\Clandestinos_AT\QVDs\Calendario.qvd (qvd);

Drop Tables FERIADOS, DATAS_COMEMORATIVAS, Calendario_Temp;

Thiago Justen Teixeira Gonçalves
WhatsApp: 24 98152-1675
Skype: justen.thiago
wellington1978
New Contributor III

Re: Calculo de Dias Uteis

Correto meu caro.

Não uso o Sense, mas acredito que esse script funciona nele corretamente.

Em ter, 10 de abr de 2018 09:25, Marcel Vinicius de Oliveira <

qcwebmaster@qlikview.com> escreveu:

marcelvinicius
Contributor III

Re: Calculo de Dias Uteis

Top thiago.justen

Valeu pela dica.

Quando puder, chama nós.

atenciosamente.

agnaldoneves
Valued Contributor

Re: Calculo de Dias Uteis

Thiago Preciso do seu Help

Tenho um script que foi até você que me ajudou.

Eu precisava tratar o Dia_Aniv, Mes_Aniv.

De segunda a Sexta-feira normal, sabádo e domingo acumule no sexta-feira.

Isso vai para um call center e eles ligam para os clientes que fazem aniversário oferecendo promoção.

Então segunda a sexta-feira normal

se

Sabádo ou domingo volte para sexta-feira e acumule os dias aniversários

Acho que o script acima seu, poderá me ajudar.

Não sei como.

Final:

load

Cliente_CodigoV,

Fone1V,

Mes_Aniv,

NomeClienteV,

Dia_Aniv,

CidadeV,

BairroV,

EstadoV,

ApelidoV,

ApelidoCliente,

Numero,

If(Left(If(SubStringCount(Numero,'-')=2,SubField(Numero,'-',2)&SubField(Numero,'-',3),PurgeChar(Numero,'-')),1)<=3,'Não Celular',

If(Len(Trim(If(SubStringCount(Numero,'-')=2,SubField(Numero,'-',2)&SubField(Numero,'-',3),PurgeChar(Numero,'-'))))<=7,'279'&

    If(SubStringCount(Numero,'-')=2,SubField(Numero,'-',2)&SubField(Numero,'-',3),PurgeChar(Numero,'-')),'279'&

        If(SubStringCount(Numero,'-')=2,SubField(Numero,'-',2)&SubField(Numero,'-',3),PurgeChar(Numero,'-')))) as Celular

Resident Temp;

drop table Temp;

Highlighted
thiago_justen
Valued Contributor III

Re: Calculo de Dias Uteis

Na verdade o script acima não é  meu.  Apenas copiei do link postado pelo  wellington1978. Me chama amanhã por aqui que te dou aquela moral.

Thiago Justen Teixeira Gonçalves
WhatsApp: 24 98152-1675
Skype: justen.thiago
agnaldoneves
Valued Contributor

Re: Calculo de Dias Uteis

Obrigado Thiago na hora que o amigo puder.

Talvez o amigo consiga resolver o meu problema.

thiago_justen
Valued Contributor III

Re: Calculo de Dias Uteis

Me adiciona no skype ou abre a thread com a descrição do seu problema meu amigo.

Skype: justen.thiago

Thiago Justen Teixeira Gonçalves
WhatsApp: 24 98152-1675
Skype: justen.thiago