Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Boa tarde pessoal,
Estou com mais uma dúvida, é o seguinte:
Eu tenho os seguintes IF
if(BMCServiceDesk__Incident__c.BMCServiceDesk__Status_ID__c = 'Closed' and (Interval(Date(BMCServiceDesk__Incident__c.BMCServiceDesk__closeDateTime__c,'DD-MM-YYYY hh:mm:ss') - Date(BMCServiceDesk__Incident__c.BMCServiceDesk__openDateTime__c,'DD-MM-YYYY hh:mm:ss'),'D') = 0),'Cumprido',
if(BMCServiceDesk__Incident__c.BMCServiceDesk__Status_ID__c = 'Closed' and (Interval(Date(BMCServiceDesk__Incident__c.BMCServiceDesk__closeDateTime__c,'DD-MM-YYYY hh:mm:ss') - Date(BMCServiceDesk__Incident__c.BMCServiceDesk__openDateTime__c,'DD-MM-YYYY hh:mm:ss'),'D') >= 1) and (Interval(Date(BMCServiceDesk__Incident__c.BMCServiceDesk__closeDateTime__c,'DD-MM-YYYY hh:mm:ss') - Date(BMCServiceDesk__Incident__c.BMCServiceDesk__openDateTime__c,'DD-MM-YYYY hh:mm:ss'),'D') <= 2),'No Prazo',
if(BMCServiceDesk__Incident__c.BMCServiceDesk__Status_ID__c = 'Pending' and (Interval(Date(BMCServiceDesk__Incident__c.BMCServiceDesk__closeDateTime__c,'DD-MM-YYYY hh:mm:ss') - Date(BMCServiceDesk__Incident__c.BMCServiceDesk__openDateTime__c,'DD-MM-YYYY hh:mm:ss'),'D') > 2),'Atrasado','Estourado'))) as SLA,
Eu ainda não descobri mas o problema é que ele só considera o segundo IF e o Else... não sei oque acontece mas os outros dois IF são desconsiderados.
É um simples calculo da quantidade de dias entre abertura e fechamento e dependendo do status ele mostra o SLA.
Atenciosamente,
Rafael Lima.
Boa tarde Alessandro,
Consegui fazer com que funcionasse como esperado, utilizei a dica do nosso amigo Nilton Barcelos
e acabei modificando os IF, ele disse que todo campo data na maioria das vezes é numérico então em vez de usar o Interval e date acabei usando o floor como abaixo, ai neste caso agora esta fazendo a conta certa e mostrando de acordo com cada situação, veja:
if( BMCServiceDesk__Incident__c.BMCServiceDesk__Status_ID__c = 'Closed' and
(Floor(BMCServiceDesk__Incident__c.BMCServiceDesk__closeDateTime__c) - Floor(BMCServiceDesk__Incident__c.BMCServiceDesk__openDateTime__c) = 0),
'Cumprido',
if(BMCServiceDesk__Incident__c.BMCServiceDesk__Status_ID__c = 'Closed' and
(Floor(BMCServiceDesk__Incident__c.BMCServiceDesk__closeDateTime__c) - Floor(BMCServiceDesk__Incident__c.BMCServiceDesk__openDateTime__c) >= 1) and
(Floor(BMCServiceDesk__Incident__c.BMCServiceDesk__closeDateTime__c) - Floor(BMCServiceDesk__Incident__c.BMCServiceDesk__openDateTime__c) <= 2)
,'No Prazo',
if(BMCServiceDesk__Incident__c.BMCServiceDesk__Status_ID__c = 'Pending' and
( (Today() - Floor(BMCServiceDesk__Incident__c.BMCServiceDesk__openDateTime__c)) <= 1)
,'No Prazo',
if(BMCServiceDesk__Incident__c.BMCServiceDesk__Status_ID__c = 'Pending' and
( (Today() - Floor(BMCServiceDesk__Incident__c.BMCServiceDesk__openDateTime__c)) > 1) and
( (Today() - Floor(BMCServiceDesk__Incident__c.BMCServiceDesk__openDateTime__c)) <= 2)
,'Atrasado',
if(BMCServiceDesk__Incident__c.BMCServiceDesk__Status_ID__c = 'Open','Sem SLA','Estourado'
)
)
)
)
) as SLA,
Mesmo assim agradeço muito pelo seu apoio.
Atenciosamente,
Rafael Lima.
Rafael, boa tarde.
Olhando o if não consigo ver erro de logica, visto que se um if não for valido, ira ao próximo....
Eu "renomeei" os campos para facilitar...
if(ID = 'Closed' and
(Interval(DataFechamento - DataAbertura,'D') = 0),'Cumprido',
if(ID = 'Closed'
and (Interval(DataFechamento
- DataAbertura,'D') <= 2) ,'No Prazo',
if(ID = 'Pending'
and (Interval(DataFechamento
- DataAbertura,'D') > 2),'Atrasado','Estourado'))) as SLA,
O que eu faria seria colocar as linhas abaixo no LOAD
Interval(DataFechamento - DataAbertura,'D') as Campo,
ID,
para analisar o resultado que esta no SLA e verificar os campos que compõe o if para descobrir o que houve.
Se puderes disponibilizar um pequeno modelo ajuda.....
Outro if que poderia tentar seria....
if(ID = 'Pending',
// Se for Pendente....
if(Interval(DataFechamento - DataAbertura,'D') > 2,'Atrasado','Estourado'),
// Se nao....
if(ID = 'Closed',
//
if((Interval(DataFechamento - DataAbertura,'D') = 0),'Cumprido',if((Interval(DataFechamento - DataAbertura,'D')<= 2),'No Prazo' ,'Estourado')))
,'Sem Definicao.....') as SLA,
Então Alessandro,
Utilizando seu modelo simplificado eu ainda não consegui descobrir porque ele só reconhece o If do Pending
if(ID = 'Closed' and
(Interval(DataFechamento - DataAbertura,'D') = 0),'Cumprido',
if(ID = 'Closed'
and (Interval(DataFechamento
- DataAbertura,'D') <= 2) ,'No Prazo',
if(ID = 'Pending'
and (Interval(DataFechamento
- DataAbertura,'D') > 2),'Atrasado','Estourado'))) as SLA,
eu ja tinha colocado no load pra carregar um campo para verificar como ficou, veja no print:
Os campos estão renomeados para facilitar o entendimento e o conteudo do status tambem.
Veja que no caso do if em que o status é fechado e o dias é menor que 2 funciona mas ai ja cai depois no "se não"
Atenciosamente,
Rafael Lima.
Tens como disponibilizar um modelo reduzido?
Boa tarde Alessandro,
Consegui fazer com que funcionasse como esperado, utilizei a dica do nosso amigo Nilton Barcelos
e acabei modificando os IF, ele disse que todo campo data na maioria das vezes é numérico então em vez de usar o Interval e date acabei usando o floor como abaixo, ai neste caso agora esta fazendo a conta certa e mostrando de acordo com cada situação, veja:
if( BMCServiceDesk__Incident__c.BMCServiceDesk__Status_ID__c = 'Closed' and
(Floor(BMCServiceDesk__Incident__c.BMCServiceDesk__closeDateTime__c) - Floor(BMCServiceDesk__Incident__c.BMCServiceDesk__openDateTime__c) = 0),
'Cumprido',
if(BMCServiceDesk__Incident__c.BMCServiceDesk__Status_ID__c = 'Closed' and
(Floor(BMCServiceDesk__Incident__c.BMCServiceDesk__closeDateTime__c) - Floor(BMCServiceDesk__Incident__c.BMCServiceDesk__openDateTime__c) >= 1) and
(Floor(BMCServiceDesk__Incident__c.BMCServiceDesk__closeDateTime__c) - Floor(BMCServiceDesk__Incident__c.BMCServiceDesk__openDateTime__c) <= 2)
,'No Prazo',
if(BMCServiceDesk__Incident__c.BMCServiceDesk__Status_ID__c = 'Pending' and
( (Today() - Floor(BMCServiceDesk__Incident__c.BMCServiceDesk__openDateTime__c)) <= 1)
,'No Prazo',
if(BMCServiceDesk__Incident__c.BMCServiceDesk__Status_ID__c = 'Pending' and
( (Today() - Floor(BMCServiceDesk__Incident__c.BMCServiceDesk__openDateTime__c)) > 1) and
( (Today() - Floor(BMCServiceDesk__Incident__c.BMCServiceDesk__openDateTime__c)) <= 2)
,'Atrasado',
if(BMCServiceDesk__Incident__c.BMCServiceDesk__Status_ID__c = 'Open','Sem SLA','Estourado'
)
)
)
)
) as SLA,
Mesmo assim agradeço muito pelo seu apoio.
Atenciosamente,
Rafael Lima.