Respondido

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 ?

icon

Melhor resposta por Bruno 3 December 2021, 12:09

Veja o original

9 comentários

Reputação 7

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


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.

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.

Consegue me ajudar nesse script @BrunoC,

por gentileza, estou quebrando a cabeça com isso kk

Reputação 7

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}}

Reputação 7

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


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

Reputação 7

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

@BrunoC , Muito obg pela sua ajuda, deu certo aqui

Agradeço mesmo, ótimo dia para você.

@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.

Comente