Como trabalhar com datas

Bom dia pessoal, eu gostaria de uma ajuda para criar uma condição no blip com data, tipo
eu tenho a data de vencimento do boleto,
se ele ja tiver vencido a mais de 3 dias mandar ele para o atendimento humano, se n
manda ele para outra etapa.

Alguem consegue me ajudar ?

2 curtidas

Bom dia, Josias, tudo bem? Boa sexta pra você! :stuck_out_tongue_winking_eye:

O que você precisa é basicamente:

  1. Pegar a data de vencimento do boleto que você já tem
  2. Pegar a data do dia de hoje, usando a variável {{calendar.date}}
  3. Fazer um Script para subtrair uma da outra e saber quanto tempo se passou

Me fala aí, qual é o formato da data que você recebe? Aí eu consigo te ajudar com um script aqui.

1 curtida

Opa Bruno, Bom dia

Ela retorna dessa maneira.

[data_vencimento] => 2021-12-13T00:00:00-0300

Porém eu coloquei o tratamento dela no script.

function run(va) {
  va=va.split("[data_vencimento] =>")
  va=va[1]
  va=va.split("[valor_boleto] =>")
  va=va[0]

  va = va.split("T")[0];
  va = va.split("-");

  return va[2] + "/" + va[1] + "/" + va[0];
}

Para que ela fique de maneira normal tipo 13/12/2021.

1 curtida

Consegue me ajudar nesse script @BrunoC,
por gentileza, estou quebrando a cabeça com isso kk

1 curtida

Josias, eu fiz mais ou menos assim, olha só:

function run(data1, data2) {
  var newData1 = data1.split("/");
  var newData2 = data2.split("-");
  var dateObject1 = new Date(+newData1[2], newData1[1] - 1, +newData1[0]);
  var dateObject2 = new Date(+newData2[0], newData2[1] - 1, +newData2[2]);
  const diffTime = Math.abs(dateObject1 - dateObject2);
  const diffDays = Math.ceil(diffTime / (1000 * 60 * 60 * 24));

  if (dateObject2 > dateObject1 && diffDays > 3) {
    return true; //retorna true se ja tiver passado 3 dias
  } else {
    return false; //retorna falso se for menor ou IGUAL a 3 dias
  }

}

O que eu fiz foi, primeiro, transformar as datas para que fosse possível trabalhar com elas.

A data que você já tem está no formato DD/MM/AAAA
A data de hoje, que o blip retorna, vem no formato AAAA-MM-DD

Depois eu fiz uma checagem pra ver se a data de vencimento é menor que a data de hoje (ou seja, está vencido) e se já se passaram 3 dias (a diferença entre elas é MAIOR que 3). Não considerei o caso em que está vencido há exatamente 3 dias, por exemplo:

Vencimento: 13/12/2021
Data de hoje: 16/12/2021
Retorno: false

Vencimento: 13/12/2021
Data de hoje: 17/12/2021
Retorno: true

Lembre-se de, no Blip, adicionar as duas variáveis de entrada no seu script, onde:

data1 = a sua data
data2 = {{calendar.date}}

1 curtida

Agora é só usar a variável de retorno desse script pra definir se vai ou não pra atendimento humano:

Se variável_de_retorno é igual a true, vá para Atendimento humano
Se variável_de_retorno é igual a false, vá para próxima etapa

1 curtida

@BrunoC , eu colocaria esse script dentro do meu ? ou em um bloco separado.

1 curtida

Pode ser no mesmo bloco, mas em uma ação de Executar Script separada, depois do seu já existente.

1 curtida

@BrunoC , Muito obg pela sua ajuda, deu certo aqui
Agradeço mesmo, ótimo dia para você.

3 curtidas

@BrunoC obrigado por esse script! Tem nos ajudado bastante por aqui.

Seria possível adaptar esse script para validar uma data seguindo os seguintes critérios?

  • Data digitada pelo usuário é igual a data de hoje
  • Data digitada pelo usuário é maior que data de hoje (user digitou uma data futura)
  • Data digitada pelo usuário é menor que a data de hoje mas supera o período de 13 meses

Estou tentando adaptar aqui pelo menos a primeira parte (data igual a hoje) alterando a linha if (dateObject2 > dateObject1 && diffDays > 3) para algo tipo if (dateObject2 == dateObject1), mas não tive sucesso.

O caso de uso é que se a data digitada pelo usuário atingir qualquer um dos três critérios acima, eu apresento uma mensagem de que a data é invalida e direciono o usuario para outro ponto do fluxo, se a data que ele digitou não se aplica a nenhum dos critérios acima, ele segue o fluxo porque digitou uma data válida.