Script pour créer une tâche

Hicham-dev
Tera Contributor

Bonjour, je voudrais comprendre pourquoi mon script ne fonctionne pas.

 

// Script pour la règle Business Rules "Envoyer une tâche pour suivi client"

// Définir les variables
var contrat = current; // Remplacer sys.getCaller() par current pour accéder à l'incident actuel
var dateDerniereVisiteClient = contrat.getValue("u_date_de_la_derniere_visite_client"); // Accéder aux champs du contrat via current.getValue()
var dateDebut = contrat.getValue("u_datedebut");
var frequenceVisite = contrat.getValue("u_frequence_de_visite");
var responsable = contrat.getValue("assigned_to"); // "charger" n'est pas un terme usuel en français, "responsable" est plus approprié

// Vérifier les conditions
if (dateDerniereVisiteClient === null) { // === est plus précis que == pour comparer des valeurs null
dateDerniereVisiteClient = dateDebut;
}

// Calculer la date de la prochaine visite
var dateProchaineVisite = calculerDateProchaineVisite(frequenceVisite);

// Vérifier si la date de la prochaine visite est dépassée
if (dateProchaineVisite.getTime() < new Date().getTime()) {

// Créer la tâche
var task = new GlideRecord('task'); // Remplacer sys.Task() par GlideRecord('task') pour créer une nouvelle tâche
task.setValue('title', 'Suivi client');
task.setValue('assigned_to', responsable);
task.setValue('description', "La date de la prochaine visite est dépassée. Veuillez contacter le client.");

// Enregistrer la tâche
task.insert(); // Remplacer task.save() par task.insert() pour enregistrer la nouvelle tâche
}

// Fonction pour calculer la date de la prochaine visite
function calculerDateProchaineVisite(frequenceVisite) {
var dateCourante = new Date();

switch (frequenceVisite) {
case "mensuelle":
dateCourante.setMonth(dateCourante.getMonth() + 1);
break;
case "trimestrielle":
dateCourante.setMonth(dateCourante.getMonth() + 3);
break;
case "semestrielle":
dateCourante.setMonth(dateCourante.getMonth() + 6);
break;
case "annuelle":
dateCourante.setFullYear(dateCourante.getFullYear() + 1);
break;
}

return dateCourante;
}

5 REPLIES 5

Hicham-dev
Tera Contributor

le besoin est que quand la date des champs ("u_datedebut") ou ("u_frequence_de_visite") et depassé, la personne a qui le contrat est assigné recoit une tache.

Hi @Hicham-dev ,

Add the highlighted line in your code and test.

AshishKMishra_0-1709747790250.png

 

-Thanks,

AshishKM


Please mark this response as correct and helpful if it helps you can mark more that one reply as accepted solution

@Hicham-dev , 

Vérifiez le paramètre de fonction et la variable utilisés dans l'instruction switch, ils ne correspondent pas

 

Remarque : Google Translate est utilisé pour la langue

 

AshishKMishra_0-1709749901556.png

 


Please mark this response as correct and helpful if it helps you can mark more that one reply as accepted solution

Bonjour @AshishKM voici le script corrigé 

 

// Script pour la règle Business Rules "Envoyer une tâche pour suivi client"

// Définir les variables
var contrat = current; // Récupérer l'incident actuel
var dateDerniereVisiteClient = contrat.get("u_date_de_la_derniere_visite_client");
var dateDebut = contrat.get("u_datedebut");
var frequenceVisite = contrat.get("u_frequence_de_visite");
var charger = contrat.get("assigned_to");

// Vérifier les conditions
if (dateDerniereVisiteClient == null) {
  dateDerniereVisiteClient = dateDebut;
}

// Calculer la date de la prochaine visite
var dateProchaineVisite = calculerDateProchaineVisite(frequenceVisite);

// Vérifier si la date de la prochaine visite est dépassée
if (dateProchaineVisite < new Date()) {
  // Créer la tâche
  var task = new GlideRecord('task');
  task.initialize();
  task.setValue('short_description', 'Suivi client');
  task.setValue('assigned_to', charger);
  task.setValue('description', "La date de la prochaine visite est dépassée. Veuillez contacter le client.");

  // Enregistrer la tâche
  task.insert();
}

// Fonction pour calculer la date de la prochaine visite
function calculerDateProchaineVisite(frequenceVisite) {
  var dateCourante = new Date();

  switch (frequenceVisite) {
    case "mensuelle":
      dateCourante.setMonth(dateCourante.getMonth() + 1);
      break;
    case "trimestrielle":
      dateCourante.setMonth(dateCourante.getMonth() + 3);
      break;
    case "semestrielle":
      dateCourante.setMonth(dateCourante.getMonth() + 6);
      break;
    case "annuelle":
      dateCourante.setFullYear(dateCourante.getFullYear() + 1);
      break;
  }

  return dateCourante;
}