Find your people. Pick a challenge. Ship something real. The CreatorCon Hackathon is coming to the Community Pavilion for one epic night. Every skill level, every role welcome. Join us on May 5th and learn more here.

Not applicable

 

 find_real_file.png


    Comparar se um campo do tipo data (datetime) é maior que a data atual às vezes pode dar trabalho pois existem muitos formatos diferentes.


Exemplos:

DD-MM-YYYY HH:MM:SS
YYYY-MM-DD HH:MM:SS


Aonde:

YYYY = Ano, MM = Mês, DD = Dia,

HH = Hora, MM= Minuto, SS = Segundo

 

Uma maneira de garantir que a comparação está correta é converter os dois valores para objetos do tipo GlideDateTime.

Abaixo está o exemplo de uma função que converte dois valores para GlideDateTime e realiza a comparação entre a data fornecida e a data atual.

 

var DateUtil = Class.create();

DateUtil.prototype = {

    initialize: function() {

    },

    // Usage: new DateUtil().hasDatePassed(current.getValue('state_date'))

    hasDatePassed : function(dateFieldValue) {

        var now     = new GlideDateTime();

        var startDt = new GlideDateTime(dateFieldValue);

        if (startDt.getNumericValue() < now.getNumericValue())

            return true;

 
        return false;

 
    },

    type: 'DateUtil'

};

 

 

Outro caso de Uso: 

Imagine que você tem um formulário de pedido aonde os funcionários podem, por exemplo, solicitar um novo notebook. 

No seu formulário há um campo do tipo date/time chamado "para_quando". 

Você pode criar uma Business Rule para garantir que o colaborador não informe uma data anterior a data atual, evitando assim que dados inconsistentes sejam gravados no pedido.

  • Crie uma Business Rule em System Definition > Business Rules;
  • Clique em New;
  • Name: Para Quando Precisa Disso;
  • Table: (Selecione a sua tabela que contém o campo para_quando);
  • Marque o checkbox Advanced;
  • Aba When to run: Before Update
  • Utilize o código abaixo na aba Advanced:
(function executeRule(current, previous /*null when async*/) {

	// agora armazena a data/hora atual
    var agora = new GlideDateTime();
    // Cria um objeto GlideDateTime para quando você precisa do item de catálogo
    var paraQuando = new GlideDateTime(current.para_quando);
  
    // Se o item de catálogo for solicitado para uma data anterior a data atual, não grava o registro e exibe mensagem de erro na tela.
    if(paraQuando.before(agora)){
        gs.addErrorMessage("A data do campo Para Quando Precisa Disso não pode estar no passado. O seu pedido não foi salvo no banco de dados.");
        current.setAbortAction(true);
    }

})(current, previous);
  • Clique em Update.

 

Pronto. Agora é só testar o formulário informando uma data anterior a data atual. 

 

 

 

 

 

 

________________________

Carlos Camacho
https://www.linkedin.com/in/camachojunior

 

Version history
Last update:
‎12-22-2021 02:56 AM
Updated by:
Community Alums