/[openfoncier]/trunk/obj/task.class.php
ViewVC logotype

Diff of /trunk/obj/task.class.php

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 14064 by softime, Thu Feb 16 22:52:47 2023 UTC revision 18436 by softime, Tue Aug 13 14:49:35 2024 UTC
# Line 4  Line 4 
4    
5  require_once "../gen/obj/task.class.php";  require_once "../gen/obj/task.class.php";
6    
7    
8  class task extends task_gen {  class task extends task_gen {
9    
10      const STATUS_DRAFT = 'draft';      const STATUS_DRAFT = 'draft';
# Line 14  class task extends task_gen { Line 15  class task extends task_gen {
15      const STATUS_DEBUG = 'debug';      const STATUS_DEBUG = 'debug';
16      const STATUS_ARCHIVED = 'archived';      const STATUS_ARCHIVED = 'archived';
17      const STATUS_CANCELED = 'canceled';      const STATUS_CANCELED = 'canceled';
18        const STATUS_INVALID = 'invalid';
19    
20        /**
21         * Définie le code platau correspondant aux documents de type consultation
22         *
23         * @var integer
24         */
25        const CODE_PLATAU_CONSULTATION = 7;
26    
27      /**      /**
28       * Liste des types de tâche concernant les services instructeurs       * Liste des types de tâche concernant les services instructeurs
# Line 28  class task extends task_gen { Line 37  class task extends task_gen {
37          'incompletude_DI',          'incompletude_DI',
38          'completude_DI',          'completude_DI',
39          'ajout_piece',          'ajout_piece',
40            'modification_piece',
41            'suppression_piece',
42          'add_piece',          'add_piece',
43          'creation_consultation',          'creation_consultation',
44          'modification_DA',          'modification_DA',
# Line 40  class task extends task_gen { Line 51  class task extends task_gen {
51          'notification_tiers_consulte',          'notification_tiers_consulte',
52          'notification_depot_demat',          'notification_depot_demat',
53          'notification_commune',          'notification_commune',
54            'notification_signataire',
55          'lettre_incompletude',          'lettre_incompletude',
56          'lettre_majoration'          'lettre_majoration',
57            'ajout_documents_specifiques'
58      );      );
59    
60      /**      /**
# Line 59  class task extends task_gen { Line 72  class task extends task_gen {
72          'notification_tiers_consulte',          'notification_tiers_consulte',
73          'notification_depot_demat',          'notification_depot_demat',
74          'prescription',          'prescription',
75            'ajout_documents_specifiques'
76      );      );
77    
78      /**      /**
79         * Liste des types de tâche pouvant avoir des documents associés
80         */
81        const TASK_WITH_DOCUMENT = array(
82            'add_piece',
83            'avis_consultation',
84            'pec_metier_consultation',
85            'ajout_documents_specifiques'
86        );
87    
88        /**
89         * Préfixe pour identifier les codes de suivi
90         * @var string
91         */
92        const CS_PREFIX = 'code-suivi://';
93    
94        /**
95       * Catégorie de la tâche       * Catégorie de la tâche
96       */       */
97      var $category = PLATAU;      var $category = PLATAU;
# Line 259  class task extends task_gen { Line 289  class task extends task_gen {
289    
290      function stateTranslation ($currentState) {      function stateTranslation ($currentState) {
291          switch ($currentState){          switch ($currentState){
292              case "draft":              case self::STATUS_DRAFT:
293                  return __('brouillon');                  return __('brouillon');
294                  break;                  break;
295              case "new":              case self::STATUS_NEW:
296                  return __('à traiter');                  return __('à traiter');
297                  break;                  break;
298              case "pending":              case self::STATUS_PENDING:
299                  return __('en cours');                  return __('en cours');
300                  break;                  break;
301              case "done":              case self::STATUS_DONE:
302                  return __('terminé');                  return __('terminé');
303                  break;                  break;
304              case "archived":              case self::STATUS_ARCHIVED:
305                  return __('archivé');                  return __('archivé');
306                  break;                  break;
307              case "error":              case self::STATUS_ERROR:
308                  return __('erreur');                  return __('erreur');
309                  break;                  break;
310              case "debug":              case self::STATUS_DEBUG:
311                  return __('debug');                  return __('debug');
312                  break;                  break;
313              case "canceled":              case self::STATUS_CANCELED:
314                  return __('annulé');                  return __('annulé');
315                  break;                  break;
316                case self::STATUS_INVALID:
317                    return __('invalide');
318                    break;
319          }          }
320      }      }
321    
322      /**      /**
323       *       *
324       */       */
325      function setSelect(&$form, $maj, &$dnu1 = null, $dnu2 = null) {      function setSelect(&$form, $maj, &$dnu1 = null, $dnu2 = null) {
326          if($maj <= 3) {          if($maj <= 3) {
327              $contenu = array();              $contenu = array();
328              foreach(array('DRAFT', 'NEW', 'PENDING', 'DONE', 'ERROR', 'DEBUG', 'ARCHIVED', 'CANCELED') as $key) {              foreach(array('DRAFT', 'NEW', 'PENDING', 'DONE', 'ERROR', 'DEBUG', 'ARCHIVED', 'CANCELED', 'INVALID') as $key) {
329                  $const_name = 'STATUS_'.$key;                  $const_name = 'STATUS_'.$key;
330                  $const_value = constant("self::$const_name");                  $const_value = constant("self::$const_name");
331                  $contenu[0][] = $const_value;                  $contenu[0][] = $const_value;
# Line 338  class task extends task_gen { Line 372  class task extends task_gen {
372                      case "add_piece":                      case "add_piece":
373                          $value_type = __('Ajout pièce (entrant)');                          $value_type = __('Ajout pièce (entrant)');
374                          break;                          break;
375                        case "modification_piece":
376                            $value_type = __('Modification pièce (sortant)');
377                            break;
378                        case "suppression_piece":
379                            $value_type = __('Suppression pièce (sortant)');
380                            break;
381                      case "depot_DI":                      case "depot_DI":
382                          $value_type = __('Dépôt DI');                          $value_type = __('Dépôt DI');
383                          break;                          break;
# Line 383  class task extends task_gen { Line 423  class task extends task_gen {
423                      case "notification_tiers_consulte":                      case "notification_tiers_consulte":
424                          $value_type = __('Notification tiers consulté');                          $value_type = __('Notification tiers consulté');
425                          break;                          break;
426                        case "notification_signataire":
427                            $value_type = __('Notification signataire');
428                            break;
429                      case "completude_DI":                      case "completude_DI":
430                          $value_type = __('complétude DI');                          $value_type = __('complétude DI');
431                          break;                          break;
# Line 395  class task extends task_gen { Line 438  class task extends task_gen {
438                      case "lettre_majoration":                      case "lettre_majoration":
439                          $value_type = __('Lettre au pétitionnaire de majoration');                          $value_type = __('Lettre au pétitionnaire de majoration');
440                          break;                          break;
441                        case "ajout_documents_specifiques":
442                            $value_type = __('Ajout Document Spécifique');
443                            break;
444                  }                  }
445    
446                  $contenu_type[1][] = $value_type;                  $contenu_type[1][] = $value_type;
# Line 404  class task extends task_gen { Line 450  class task extends task_gen {
450          }          }
451    
452          if ($maj == 3) {          if ($maj == 3) {
453                $dossier = $form->val['dossier'];
454              // Récupération du numéro du dossier si il n'est pas renseigné dans la tâche              // Récupération du numéro du dossier si il n'est pas renseigné dans la tâche
455              if ($form->val['dossier'] == '' || $form->val['dossier'] == null) {  
456                if ($dossier == '' || $dossier == null) {
457                  // Récupération de la payload de la taĉhe.                  // Récupération de la payload de la taĉhe.
458                  // Si la tâche est une tâche input la payload est associée à la tâche.                  // Si la tâche est une tâche input la payload est associée à la tâche.
459                  // Si la tâche est une tâche en output la payload est "calculé" à l'ouverture                  // Si la tâche est une tâche en output la payload est "calculé" à l'ouverture
# Line 448  class task extends task_gen { Line 496  class task extends task_gen {
496                          )                          )
497                      );                      );
498                      if (! empty($qres["result"])) {                      if (! empty($qres["result"])) {
499                          $form->val['dossier'] = $qres["result"];                          $dossier = $qres["result"];
500                      }                      }
501                  }                  }
502              }              }
# Line 480  class task extends task_gen { Line 528  class task extends task_gen {
528                  }                  }
529              } else {              } else {
530                  // Vérification que le numéro de DI affiché dans le formulaire existe                  // Vérification que le numéro de DI affiché dans le formulaire existe
531                  $qres = $this->f->get_one_result_from_db_query(                  $sql = sprintf(
532                      sprintf(                      'SELECT
533                          'SELECT                          dossier.dossier,
534                              dossier.dossier                          dossier.dossier_parent
535                          FROM                      FROM
536                              %1$sdossier                          %1$sdossier
537                          WHERE                      WHERE
538                              dossier.dossier = \'%2$s\'',                          dossier.dossier = \'%2$s\'',
539                          DB_PREFIXE,                      DB_PREFIXE,
540                          $this->f->db->escapeSimple($form->val['dossier'])                      $this->f->db->escapeSimple($dossier)
541                      ),                  );
542                    $qres = $this->f->get_all_results_from_db_query(
543                        $sql,
544                      array(                      array(
545                          "origin" => __METHOD__,                          "origin" => __METHOD__,
546                      )                      )
547                  );                  );
548                  // Si on a un résultat c'est que le dossier existe, il faut afficher le lien                  // Si on a un résultat c'est que le dossier existe, il faut afficher le lien
549                  if (! empty($qres["result"])) {                  if (! empty($qres['result']) && $qres['row_count'] > 0) {
550                      $obj_link = 'dossier_instruction';                      $obj_link = 'dossier_instruction';
551                        if (! empty($qres['result'][0]['dossier_parent'])) {
552                            $dossier = $qres['result'][0]['dossier_parent'];
553                        }
554                  }                  }
555              }              }
556              // Pour afficher le lien vers un dossier ont utilise un champ de type "link".              // Pour afficher le lien vers un dossier ont utilise un champ de type "link".
# Line 510  class task extends task_gen { Line 563  class task extends task_gen {
563              // contiennent les informations nécessaire à l'affichage du champs.              // contiennent les informations nécessaire à l'affichage du champs.
564              $params = array(              $params = array(
565                  'obj' => $obj_link,                  'obj' => $obj_link,
566                  'libelle' => $form->val['dossier'],                  'libelle' => $dossier,
567                  'title' => "Consulter le dossier",                  'title' => "Consulter le dossier",
568                  'idx' => $form->val['dossier']                  'idx' => $dossier
569              );              );
570              $form->setSelect("dossier", $params);              $form->setSelect("dossier", $params);
571          }          }
# Line 527  class task extends task_gen { Line 580  class task extends task_gen {
580          // parent::setVal($form, $maj, $validation);          // parent::setVal($form, $maj, $validation);
581          //          //
582          if ($this->getVal('stream') == "output"          if ($this->getVal('stream') == "output"
583                && $this->getVal('type') !== 'suppression_piece'
584              && ($this->getVal('state') !== self::STATUS_DONE              && ($this->getVal('state') !== self::STATUS_DONE
585                  || $this->getVal('json_payload') === "{}")) {                  || $this->getVal('json_payload') === "{}")) {
586              //              //
# Line 567  class task extends task_gen { Line 621  class task extends task_gen {
621      public function verifier($val = array(), &$dnu1 = null, $dnu2 = null) {      public function verifier($val = array(), &$dnu1 = null, $dnu2 = null) {
622          $ret = parent::verifier($val, $dnu1, $dnu2);          $ret = parent::verifier($val, $dnu1, $dnu2);
623    
624            $allowed_state = array(
625                self::STATUS_DRAFT,
626                self::STATUS_NEW,
627                self::STATUS_PENDING,
628                self::STATUS_DONE,
629                self::STATUS_ERROR,
630                self::STATUS_DEBUG,
631                self::STATUS_ARCHIVED,
632                self::STATUS_CANCELED,
633                self::STATUS_INVALID);
634    
635            $task_id = $this->getVal($this->clePrimaire);
636            $task_id_text = sprintf(__("la tâche '%s'"), $task_id);
637            if (empty($task_id) || $task_id === ']') {
638                $task_id_text = __("la nouvelle tâche");
639            }
640    
641            if (! isset($this->valF['state']) || empty($this->valF['state'])) {
642                $this->correct = false;
643                $err_msg = sprintf(
644                    __("Champ '%s' obligatoire pour %s"),
645                    'state', $task_id_text);
646                $this->addToMessage($err_msg);
647                $this->addToLog(__METHOD__.'(): '.$err_msg, DEBUG_MODE);
648            }
649            elseif (! in_array($this->valF['state'], $allowed_state)) {
650                $this->correct = false;
651                $err_msg = sprintf(
652                    __("Champ '%s' invalide (%s) pour %s"),
653                    'state', var_export($this->valF['state'], true), $task_id_text);
654                $this->addToMessage($err_msg);
655                $this->addToLog(__METHOD__.'(): '.$err_msg, DEBUG_MODE);
656            }
657    
658          // une tâche entrante doit avoir un type et une payload non-vide          // une tâche entrante doit avoir un type et une payload non-vide
659          if (isset($this->valF['stream']) === false || $this->valF['stream'] == 'input') {          if (isset($this->valF['stream']) === false || $this->valF['stream'] == 'input') {
660              if (isset($this->valF['type']) === false) {              if (isset($this->valF['type']) === false) {
# Line 701  class task extends task_gen { Line 789  class task extends task_gen {
789       * @param  string $object_id [description]       * @param  string $object_id [description]
790       * @param  bool   $is_not_done   [description]       * @param  bool   $is_not_done   [description]
791       * @return [type]            [description]       * @return [type]            [description]
792         *
793         * Cette méthode est déprécier, car elle cause des cas illogique avec PENDING qui ne compte pas dans le is_not_done.
794         * L'utilisation de task_exists_multi_search() est à privilegier pour éviter les problèmes et les risques
795       */       */
796      public function task_exists(string $type, string $object_id, string $dossier = null, bool $is_not_done = true) {      public function task_exists(string $type, string $object_id, string $dossier = null, bool $is_not_done = true) {
797          $qres = $this->f->get_one_result_from_db_query(          $qres = $this->f->get_one_result_from_db_query(
# Line 728  class task extends task_gen { Line 819  class task extends task_gen {
819                  "origin" => __METHOD__,                  "origin" => __METHOD__,
820              )              )
821          );          );
822          if ($qres["result"] !== null && $qres["result"] !== "") {          if (! empty($qres["result"])) {
823              return $qres["result"];              return $qres["result"];
824          }          }
825          return false;          return false;
# Line 742  class task extends task_gen { Line 833  class task extends task_gen {
833       */       */
834      public function task_exists_multi_search(array $search_values) {      public function task_exists_multi_search(array $search_values) {
835          $query = sprintf('          $query = sprintf('
836              SELECT *              SELECT task, state
837              FROM %1$stask              FROM %1$stask
838              %2$s              %2$s
839              %3$s              %3$s
# Line 775  class task extends task_gen { Line 866  class task extends task_gen {
866       * @return boolean       * @return boolean
867       */       */
868      function triggerajouter($id, &$dnu1 = null, $val = array(), $dnu2 = null) {      function triggerajouter($id, &$dnu1 = null, $val = array(), $dnu2 = null) {
869            $parent_res = parent::triggerajouter($id, $dnu1, $val);
870            if ($parent_res === false) return $parent_res;
871    
872          // tâche entrante          // tâche entrante
873          if (isset($this->valF['stream']) === false || $this->valF['stream'] == 'input') {          if (isset($this->valF['stream']) === false || $this->valF['stream'] == 'input') {
# Line 799  class task extends task_gen { Line 892  class task extends task_gen {
892              || $val['type'] === 'notification_tiers_consulte'              || $val['type'] === 'notification_tiers_consulte'
893              || $val['type'] === 'notification_depot_demat'              || $val['type'] === 'notification_depot_demat'
894              || $val['type'] === 'notification_commune'              || $val['type'] === 'notification_commune'
895                || $val['type'] === 'notification_signataire'
896              ) {              ) {
897              // Récupère la payload de la tache              // Récupère la payload de la tache
898              $data = array();              $data = array();
# Line 818  class task extends task_gen { Line 912  class task extends task_gen {
912              $envoiMail = $inst_notif->send_mail_notification($data, $val['type']);              $envoiMail = $inst_notif->send_mail_notification($data, $val['type']);
913              // Passage de la tache à done si elle a réussi et à error              // Passage de la tache à done si elle a réussi et à error
914              // si l'envoi a échoué              // si l'envoi a échoué
915              $this->valF['state'] = 'done';              $this->valF['state'] = self::STATUS_DONE;
916              if ($envoiMail === false) {              if ($envoiMail === false) {
917                  $this->valF['state'] = 'error';                  $this->valF['state'] = self::STATUS_ERROR;
918              }              }
919          }          }
920      }      }
# Line 857  class task extends task_gen { Line 951  class task extends task_gen {
951          $this->valF['object_id'] = $new_values['object_id'];          $this->valF['object_id'] = $new_values['object_id'];
952          $this->valF['last_modification_date'] = date('Y-m-d');          $this->valF['last_modification_date'] = date('Y-m-d');
953          $this->valF['last_modification_time'] = date('H:i:s');          $this->valF['last_modification_time'] = date('H:i:s');
954          if ($val['stream'] === 'output') {          if ($val['stream'] === 'output'
955                && $val['type'] !== 'suppression_piece') {
956              // Lorsque la task passe d'un état qui n'est pas "done" à l'état "done"              // Lorsque la task passe d'un état qui n'est pas "done" à l'état "done"
957              if ($this->getVal("state") !== self::STATUS_DONE              if ($this->getVal("state") !== self::STATUS_DONE
958                  && $this->valF['state'] === self::STATUS_DONE) {                  && $this->valF['state'] === self::STATUS_DONE) {
# Line 1070  class task extends task_gen { Line 1165  class task extends task_gen {
1165                  "obj" => "instruction",                  "obj" => "instruction",
1166                  "idx" => $this->getVal('object_id'),                  "idx" => $this->getVal('object_id'),
1167              ));              ));
1168              if ($inst_instruction->has_an_edition() === true) {              $valF_instruction = array();
1169                  $valF_instruction = array();              foreach ($inst_instruction->champs as $champ) {
1170                  foreach ($inst_instruction->champs as $champ) {                  $valF_instruction[$champ] = $inst_instruction->getVal($champ);
                     $valF_instruction[$champ] = $inst_instruction->getVal($champ);  
                 }  
1171              }              }
1172                // On met à jour la date d'envoi au CL seulement si l'instruction a une édition liée
1173              $valF_instruction['date_envoi_controle_legalite'] = date("Y-m-d");              $valF_instruction['date_envoi_controle_legalite'] = date("Y-m-d");
1174              $inst_instruction->setParameter('maj', 1);              $inst_instruction->setParameter('maj', 1);
1175              $update_instruction = $inst_instruction->modifier($valF_instruction);              $update_instruction = $inst_instruction->modifier($valF_instruction);
# Line 1128  class task extends task_gen { Line 1222  class task extends task_gen {
1222          // Si la tâche est de type ajout_piece et de stream input alors on ajoute le fichier          // Si la tâche est de type ajout_piece et de stream input alors on ajoute le fichier
1223          // et on ajoute l'uid dans le champ json_payload avant l'ajout de la tâche          // et on ajoute l'uid dans le champ json_payload avant l'ajout de la tâche
1224          if (isset($params['val']['type'])          if (isset($params['val']['type'])
1225              && ($params['val']['type'] == "add_piece" || $params['val']['type'] == "avis_consultation")              && in_array($params['val']['type'], self::TASK_WITH_DOCUMENT)
1226              && isset($params['val']['stream'])              && isset($params['val']['stream'])
1227              && $params['val']['stream'] == "input" ) {              && $params['val']['stream'] == "input" ) {
1228              //              //
# Line 1164  class task extends task_gen { Line 1258  class task extends task_gen {
1258              }              }
1259          }          }
1260    
1261            if (isset($params['val']['state'])) {
1262                $allowed_state = array(
1263                    self::STATUS_DRAFT,
1264                    self::STATUS_NEW,
1265                    self::STATUS_PENDING,
1266                    self::STATUS_DONE,
1267                    self::STATUS_ERROR,
1268                    self::STATUS_DEBUG,
1269                    self::STATUS_ARCHIVED,
1270                    self::STATUS_CANCELED,
1271                    self::STATUS_INVALID);
1272    
1273                if (empty($params['val']['state'])) {
1274                    throw new InvalidArgumentException(
1275                        "État ('state') vide pour la nouvelle tâche");
1276                }
1277                elseif (! in_array($params['val']['state'], $allowed_state)) {
1278                    throw new InvalidArgumentException(
1279                        "État ('state') invalide (".var_export($params['val']['state'], true).
1280                        ") pour la nouvelle tâche");
1281                }
1282            }
1283    
1284          // Valeurs de la tâche          // Valeurs de la tâche
1285          $valF = array(          $valF = array(
1286              'task' => '',              'task' => '',
# Line 1188  class task extends task_gen { Line 1305  class task extends task_gen {
1305              'notification_instruction',              'notification_instruction',
1306              'notification_decision',              'notification_decision',
1307              'notification_service_consulte',              'notification_service_consulte',
1308              'notification_tiers_consulte'              'notification_tiers_consulte',
1309                'notification_depot_demat',
1310                'notification_commune',
1311                'notification_signataire',
1312          );          );
1313          if ($valF["stream"] == "output"          if ($valF["stream"] == "output"
1314              && ! in_array($valF['type'], $typeNonConcerne)) {              && ! in_array($valF['type'], $typeNonConcerne)) {
# Line 1205  class task extends task_gen { Line 1325  class task extends task_gen {
1325              $search_values_specifics = array(              $search_values_specifics = array(
1326                  sprintf('object_id = \'%s\'', $valF['object_id']),                  sprintf('object_id = \'%s\'', $valF['object_id']),
1327              );              );
1328    
1329                // Recherche multi-critères sur les tâches
1330                // Si l'object id/dossier à des tâches de type $valF['type'] qui lui est associé
1331                // Et que ces tâches ont des statut différents de canceled et done
1332                // Alors on récupère ces tâches
1333                // Sinon return false
1334              $task_exists = $this->task_exists_multi_search(array_merge($search_values_common, $search_values_others));              $task_exists = $this->task_exists_multi_search(array_merge($search_values_common, $search_values_others));
1335              if ($valF['type'] === 'modification_DI' && $task_exists === false) {  
1336                  $task_exists = $this->task_exists_multi_search(array_merge($search_values_common, $search_values_specifics, array("type = 'creation_DI'")));              // Vérifie si une tâche existe déjà pour les types de tâches ayant un fonctionnement particulier.
1337              }              // Il existe 2 cas :
1338              if ($valF['type'] === 'modification_DA' && $task_exists === false) {              //   - Aucune tâche déjà existante n'a été récupérées mais on veut faire une vérification supplémentaire
1339                  $task_exists = $this->task_exists_multi_search(array_merge($search_values_common, $search_values_specifics, array("type = 'creation_DA'")));              //   - Les tâches pour lesquelles on fait une vérification supplémentaire qu'une correspondance ait été
1340              }              //     trouvée ou pas
1341              if ($valF['type'] === 'ajout_piece') {              // Une tâche ne pouvant avoir qu'un seul type si elle est trouvée, il n'est pas nécessaire de
1342                  $task_exists = $this->task_exists_multi_search(array_merge($search_values_common, $search_values_specifics, array("type = 'ajout_piece'")));              // vérifier les autres
1343                $is_type_voulu_traite = false;
1344                // Cas 1 : Aucune tâche déjà existante n'a été récupérées mais effectue une vérification supplémentaire
1345                $cas_specifiques_tache_non_existante = array(
1346                    'modification_DI' => array("type = 'creation_DI'"),
1347                    'modification_DA' => array("type = 'creation_DA'")
1348                );
1349                foreach ($cas_specifiques_tache_non_existante as $type_task => $conditions_specifiques) {
1350                    // S'il n'existe pas de tâche de type voulu pour l'object id/dossier
1351                    if ($valF['type'] === $type_task && $task_exists === false) {
1352                        // On se réfère à la tâche de type 'ajout piece' de l'object id
1353                        $task_exists = $this->task_exists_multi_search(array_merge($search_values_common, $search_values_specifics, $conditions_specifiques));
1354                        $is_type_voulu_traite = true;
1355                        break;
1356                    }
1357              }              }
1358              if ($valF['type'] === 'creation_consultation') {  
1359                  $task_exists = $this->task_exists_multi_search(array_merge($search_values_common, $search_values_specifics, array("type = 'creation_consultation'")));              // Cas 2 : Vérification supplémentaire qu'une correspondance ait été trouvé ou pas
1360                if (! $is_type_voulu_traite) {
1361                    $cas_specifiques = array(
1362                        'ajout_piece',
1363                        'modification_piece',
1364                        'suppression_piece',
1365                        'creation_consultation',
1366                        'ajout_documents_specifiques',
1367                    );
1368                    foreach ($cas_specifiques as $type_task) {
1369                        if ($valF['type'] === $type_task) {
1370                            // On se réfère à la tâche de type 'ajout piece' de l'object id
1371                            $task_exists = $this->task_exists_multi_search(array_merge($search_values_common, $search_values_specifics, array("type = '$type_task'")));
1372                            break;
1373                        }
1374                    }
1375              }              }
1376              // En cas de l'existance d'une tâches pour l'objet concerné, pas d'ajout de nouvelle  
1377                // S'il existe une tâche pour l'objet concerné, pas d'ajout de nouvelle
1378              // tâche mais mise à jour de l'existante              // tâche mais mise à jour de l'existante
1379              if ($task_exists !== false) {              if ($task_exists !== false) {
1380                  // Plusieurs tâches pourraient exister, elles sont contôler par ordre croissant                  // Plusieurs tâches pourraient exister, elles sont contôler par ordre croissant
# Line 1232  class task extends task_gen { Line 1388  class task extends task_gen {
1388                          $update_state = $params['update_val']['state'];                          $update_state = $params['update_val']['state'];
1389                      }                      }
1390                      $object_id = $inst_task->getVal('object_id');                      $object_id = $inst_task->getVal('object_id');
1391                      if ($valF['object_id'] !== '') {                      if (!empty($valF['object_id'])) {
1392                          $object_id = $valF['object_id'];                          $object_id = $valF['object_id'];
1393                      }                      }
1394                      // Pour être mise à jour, la tâche existante ne doit pas être en cours de traitement                      // Pour être mise à jour, la tâche existante ne doit pas être en cours de traitement
# Line 1253  class task extends task_gen { Line 1409  class task extends task_gen {
1409          }          }
1410          $add = $this->ajouter($valF);          $add = $this->ajouter($valF);
1411          $this->addToLog(__METHOD__."(): retour de l'ajout de tâche: ".var_export($add, true), VERBOSE_MODE);          $this->addToLog(__METHOD__."(): retour de l'ajout de tâche: ".var_export($add, true), VERBOSE_MODE);
1412    
1413            // Création de la payload JSON dans le cas ou nous avons un suppression d'objet
1414            if ($stream === 'output'
1415                && $add === true
1416                && isset($valF['type']) === true
1417                && strpos($valF['type'], 'suppression_piece') !== false
1418            ) {
1419                $inst_task_empty = $this->f->get_inst__om_dbform(array(
1420                    "obj" => "task",
1421                    "idx" => 0,
1422                ));
1423                // Vérification de l'éxistence d'une tache de suppression de pièce
1424                $task_exists = $inst_task_empty->task_exists('suppression_piece', $valF['object_id']);
1425                $valF['task'] = $task_exists;
1426                $inst_task = $this->f->get_inst__om_dbform(array(
1427                    "obj" => "task",
1428                    "idx" => $task_exists,
1429                ));
1430                $valF['json_payload'] = $inst_task->view_form_json(true);
1431                $update = $this->modifier($valF);
1432                if ($update === false) {
1433                    $this->addToLog(__METHOD__."(): ".$this->msg, DEBUG_MODE);
1434                    return $this->end_treatment(__METHOD__, false);
1435                }
1436            }
1437    
1438          if ($add === false) {          if ($add === false) {
1439              $this->addToLog(__METHOD__."(): ".$this->msg, DEBUG_MODE);              $this->addToLog(__METHOD__."(): ".$this->msg, DEBUG_MODE);
1440              return $this->end_treatment(__METHOD__, false);              return $this->end_treatment(__METHOD__, false);
# Line 1270  class task extends task_gen { Line 1452  class task extends task_gen {
1452      public function update_task($params = array()) {      public function update_task($params = array()) {
1453          $this->begin_treatment(__METHOD__);          $this->begin_treatment(__METHOD__);
1454    
1455            $allowed_state = array(
1456                self::STATUS_DRAFT,
1457                self::STATUS_NEW,
1458                self::STATUS_PENDING,
1459                self::STATUS_DONE,
1460                self::STATUS_ERROR,
1461                self::STATUS_DEBUG,
1462                self::STATUS_ARCHIVED,
1463                self::STATUS_CANCELED,
1464                self::STATUS_INVALID);
1465    
1466            $task_id = $this->getVal($this->clePrimaire);
1467    
1468            if (! isset($params['val']['state']) || empty($params['val']['state'])) {
1469                throw new InvalidArgumentException(
1470                    "État ('state') non spécifié ou vide pour la tâche '$task_id'");
1471            }
1472            elseif (! in_array($params['val']['state'], $allowed_state)) {
1473                throw new InvalidArgumentException(
1474                    "État ('state') invalide (".var_export($params['val']['state'], true).
1475                    ") pour la tâche '$task_id'");
1476            }
1477    
1478          // Mise à jour de la tâche          // Mise à jour de la tâche
1479          $valF = array(          $valF = array(
1480              'task' => $this->getVal($this->clePrimaire),              'task' => $task_id,
1481              'type' => $this->getVal('type'),              'type' => $this->getVal('type'),
1482              'timestamp_log' => '[]',              'timestamp_log' => '[]',
1483              'state' => $params['val']['state'],              'state' => $params['val']['state'],
# Line 1296  class task extends task_gen { Line 1501  class task extends task_gen {
1501      }      }
1502    
1503      /**      /**
1504         * A partir des éléments fournis en paramètre compose une url permettant
1505         * d'accéder à un document.
1506         *
1507         * @param string         $nom_objet : nom de l'objet d'appartenance du document
1508         * @param string         $champ     : champ contenant l'uid du document
1509         * @param string|integer $id_objet  : id de l'objet d'appartenance du document
1510         *
1511         * @return string url d'accès au document
1512         */
1513        function compose_url_acces_document(string $nom_objet, string $champ, $id_objet) {
1514            return sprintf(
1515                'app/index.php?module=form&snippet=file&obj=%s&champ=%s&id=%s',
1516                $nom_objet,
1517                $champ,
1518                $id_objet
1519            );
1520        }
1521    
1522        /**
1523       * Récupère le journal d'horodatage dans le champ timestamp_log de       * Récupère le journal d'horodatage dans le champ timestamp_log de
1524       * l'enregistrement instancié.       * l'enregistrement instancié.
1525       *       *
# Line 1323  class task extends task_gen { Line 1547  class task extends task_gen {
1547          $this->checkAccessibility();          $this->checkAccessibility();
1548          $this->f->disableLog();          $this->f->disableLog();
1549          if ($this->getParameter('idx') !== ']'          if ($this->getParameter('idx') !== ']'
1550              && $this->getParameter('idx') !== '0') {              && $this->getParameter('idx') !== '0'
1551              //          ) {
1552              $this->view_form_json();              if ($this->getVal('json_payload') !== "{}") {
1553                    // On prend la Payload en BDD
1554                    echo(
1555                        json_encode(
1556                            json_decode($this->getVal('json_payload'), true),
1557                            JSON_UNESCAPED_SLASHES
1558                        )
1559                    );
1560                } else {
1561                    // On Calcule la payload JSON
1562                    $this->view_form_json();
1563                }
1564          }          }
1565          else {          else {
1566              $this->view_tab_json();              $this->view_tab_json();
# Line 1376  class task extends task_gen { Line 1611  class task extends task_gen {
1611          //          //
1612          $query = sprintf('          $query = sprintf('
1613              SELECT              SELECT
1614                  task.*                  DISTINCT (task.task),
1615                    task.type,
1616                    task.object_id,
1617                    task.dossier,
1618                    task.stream,
1619                    task.category,
1620                    task.creation_date,
1621                    task.creation_time,
1622                    task.last_modification_date,
1623                    task.last_modification_time,
1624                    task.comment
1625              FROM %1$stask              FROM %1$stask
1626              LEFT JOIN %1$slien_id_interne_uid_externe              LEFT JOIN %1$slien_id_interne_uid_externe
1627                  ON task.object_id = lien_id_interne_uid_externe.object_id                  ON task.object_id = lien_id_interne_uid_externe.object_id
# Line 1399  class task extends task_gen { Line 1644  class task extends task_gen {
1644          }          }
1645          $list_tasks = array();          $list_tasks = array();
1646          foreach ($res['result'] as $task) {          foreach ($res['result'] as $task) {
             unset($task['timestamp_log']);  
             unset($task['json_payload']);  
             if ($task['type'] === 'ajout_piece') {  
                 $val_dn = $this->get_document_numerise_data($task['object_id']);  
             }  
1647              if ($task['stream'] === 'output') {              if ($task['stream'] === 'output') {
1648                  $task['external_uids'] = array_merge(                  $task['external_uids'] = array_merge(
1649                      $this->get_all_external_uids($task['dossier'], array(), $category !== null ? $category : $task['category']),                      $this->get_all_external_uids($task['dossier'], array(), $category !== null ? $category : $task['category']),
# Line 1514  class task extends task_gen { Line 1754  class task extends task_gen {
1754              if (isset($val_dt['tax_ext_pret']) === true              if (isset($val_dt['tax_ext_pret']) === true
1755                  && $val_dt['tax_ext_pret'] === 'f') {                  && $val_dt['tax_ext_pret'] === 'f') {
1756                  //                  //
1757                  $val_dt['tax_su_princ_surf1'] = $val_dt['tax_surf_tot_cstr'];                  $val_dt['tax_su_princ_surf1'] = isset($val_dt['tax_surf_tot_cstr']) === true ? $val_dt['tax_surf_tot_cstr'] : '';
1758                  $val_dt['tax_su_princ_surf_stat1'] = $val_dt['tax_surf_loc_stat'];                  $val_dt['tax_su_princ_surf_stat1'] = isset($val_dt['tax_surf_loc_stat']) === true ? $val_dt['tax_surf_loc_stat'] : '';
1759              }              }
1760              if (isset($val_dt['tax_ext_pret']) === true              if (isset($val_dt['tax_ext_pret']) === true
1761                  && $val_dt['tax_ext_pret'] === 't') {                  && $val_dt['tax_ext_pret'] === 't') {
# Line 1524  class task extends task_gen { Line 1764  class task extends task_gen {
1764                      if (preg_match('/[pP].*[lL].*[aA].*[iI]/', $val_dt['tax_ext_desc']) === 1                      if (preg_match('/[pP].*[lL].*[aA].*[iI]/', $val_dt['tax_ext_desc']) === 1
1765                          || preg_match('/[lL].*[lL].*[tT].*[sS]/', $val_dt['tax_ext_desc']) === 1) {                          || preg_match('/[lL].*[lL].*[tT].*[sS]/', $val_dt['tax_ext_desc']) === 1) {
1766                          //                          //
1767                          $val_dt['tax_su_princ_surf2'] = $val_dt['tax_surf_tot_cstr'];                          $val_dt['tax_su_princ_surf2'] = isset($val_dt['tax_surf_tot_cstr']) === true ? $val_dt['tax_surf_tot_cstr'] : '';
1768                          $val_dt['tax_su_princ_surf_stat2'] = $val_dt['tax_surf_loc_stat'];                          $val_dt['tax_su_princ_surf_stat2'] = isset($val_dt['tax_surf_loc_stat']) === true ? $val_dt['tax_surf_loc_stat'] : '';
1769                      }                      }
1770                      // if (preg_match('/[pP].*[tT].*[zZ]/', $val_dt['tax_ext_desc']) === 1) {                      // if (preg_match('/[pP].*[tT].*[zZ]/', $val_dt['tax_ext_desc']) === 1) {
1771                      //     $val_dt['tax_su_princ_surf4'] = $val_dt['tax_surf_tot_cstr'];                      //     $val_dt['tax_su_princ_surf4'] = $val_dt['tax_surf_tot_cstr'];
# Line 1675  class task extends task_gen { Line 1915  class task extends task_gen {
1915              "obj" => "instruction",              "obj" => "instruction",
1916              "idx" => $idx,              "idx" => $idx,
1917          ));          ));
1918            $id_instruction = $inst_instruction->getVal($inst_instruction->clePrimaire);
1919          if (count($inst_instruction->val) > 0) {          if (count($inst_instruction->val) > 0) {
1920              $val_instruction = array();              $val_instruction = array();
1921              $instruction_data = $inst_instruction->get_json_data();              $instruction_data = $inst_instruction->get_json_data();
# Line 1682  class task extends task_gen { Line 1923  class task extends task_gen {
1923              if ($instruction_data['om_fichier_instruction'] !== null              if ($instruction_data['om_fichier_instruction'] !== null
1924                  && $instruction_data['om_fichier_instruction'] !== '') {                  && $instruction_data['om_fichier_instruction'] !== '') {
1925                  //                  //
1926                  $instruction_with_doc = $inst_instruction->getVal($inst_instruction->clePrimaire);                  $instruction_with_doc = $id_instruction;
1927              }              }
1928              $inst_ev = $this->f->get_inst__om_dbform(array(              $inst_ev = $this->f->get_inst__om_dbform(array(
1929                  "obj" => "evenement",                  "obj" => "evenement",
# Line 1708  class task extends task_gen { Line 1949  class task extends task_gen {
1949              }              }
1950              if ($instruction_with_doc !== null) {              if ($instruction_with_doc !== null) {
1951                  //                  //
1952                  $val_instruction['path'] = sprintf('%s&snippet=%s&obj=%s&champ=%s&id=%s', 'app/index.php?module=form', 'file', 'instruction', 'om_fichier_instruction', $instruction_with_doc);                  $val_instruction['path'] = $this->compose_url_acces_document('instruction', 'om_fichier_instruction', $instruction_with_doc);
1953                }
1954                // Si il y a des annexes compatibles avec l'instruction elles sont ajoutées à la payload
1955                if (! empty($annexes = $this->ajouter_annexes_a_la_payload($id_instruction, true))) {
1956                    $val_instruction['annexes'] = $annexes;
1957              }              }
1958          }          }
1959          return $val_instruction;          return $val_instruction;
# Line 1755  class task extends task_gen { Line 2000  class task extends task_gen {
2000                  $val_in['parametre_courriel_type_message'] = $phrase_type_notification['parametre_courriel_type_message'];                  $val_in['parametre_courriel_type_message'] = $phrase_type_notification['parametre_courriel_type_message'];
2001              }              }
2002    
2003              // Récupération des liens vers les documents et des id et type des annexes              if ($typeNotification == 'notification_signataire') {
2004              $infoDocNotif = $inst_in->getInfosDocumentsNotif($inst_in->getVal($inst_in->clePrimaire), $category);                  $val_in['lien_page_signature'] = $inst_in->getLienPageSignature($inst_instruction);
2005              $cle = $category == PORTAL ? 'path' : 'lien_telechargement_document';              }
2006              $val_in[$cle] = $infoDocNotif['document']['path'];              else {
2007              $val_in['annexes'] = $infoDocNotif['annexes'];                  // Récupération des liens vers les documents et des id et type des annexes
2008                    $infoDocNotif = $inst_in->getInfosDocumentsNotif($inst_in->getVal($inst_in->clePrimaire), $category);
2009                    $cle = $category == PORTAL ? 'path' : 'lien_telechargement_document';
2010                    $val_in[$cle] = $infoDocNotif['document']['path'];
2011                    $val_in['annexes'] = $infoDocNotif['annexes'];
2012                }
2013          }          }
2014          return $val_in;          return $val_in;
2015      }      }
# Line 1812  class task extends task_gen { Line 2062  class task extends task_gen {
2062    
2063      protected function sort_instruction_data(array $values, array $res) {      protected function sort_instruction_data(array $values, array $res) {
2064          $fields = array(          $fields = array(
2065                "instruction",
2066              "date_evenement",              "date_evenement",
2067              "date_envoi_signature",              "date_envoi_signature",
2068              "date_retour_signature",              "date_retour_signature",
# Line 1840  class task extends task_gen { Line 2091  class task extends task_gen {
2091                  }                  }
2092              }              }
2093          }          }
2094    
2095            if (! empty($values['document_type_instruction'])){
2096                // Gestion du type de document :
2097                $document_type = $this->f->get_inst__om_dbform(array(
2098                    "obj" => "document_type",
2099                    "idx" => $values['document_type_instruction'],
2100                ));
2101                if (count($document_type->val) > 0) {
2102                    $res['document_type'] = $document_type->getVal('code');
2103                }
2104            }
2105          return $res;          return $res;
2106      }      }
2107    
# Line 1863  class task extends task_gen { Line 2125  class task extends task_gen {
2125                          INNER JOIN %1$sdemande_type                          INNER JOIN %1$sdemande_type
2126                              ON demande.demande_type = demande_type.demande_type                              ON demande.demande_type = demande_type.demande_type
2127                  WHERE                  WHERE
2128                      demande.instruction_recepisse = %2$s',                      demande.instruction_recepisse = %2$d',
2129                  DB_PREFIXE,                  DB_PREFIXE,
2130                  intval($instruction)                  intval($instruction)
2131              ),              ),
# Line 1883  class task extends task_gen { Line 2145  class task extends task_gen {
2145    
2146      protected function get_document_numerise_data(string $dn) {      protected function get_document_numerise_data(string $dn) {
2147          $val_dn = array();          $val_dn = array();
2148          $inst_dn = $this->f->get_inst__om_dbform(array(          $qres = $this->f->get_all_results_from_db_query(
2149              "obj" => "document_numerise",              sprintf(
2150              "idx" => $dn,                  'SELECT
2151          ));                      document_numerise.document_numerise,
2152          $val_dn = $inst_dn->get_json_data();                      document_numerise.uid,
2153          $val_dn['path'] = sprintf('%s&snippet=%s&obj=%s&champ=%s&id=%s', 'app/index.php?module=form', 'file', 'document_numerise', 'uid', $this->getVal('object_id'));                      document_numerise.dossier,
2154          // Correspond à la nomenclature Plat'AU NATURE_PIECE                      document_numerise.nom_fichier,
2155          $val_dn['nature'] = $val_dn['document_numerise_nature_libelle'];                      document_numerise.date_creation,
2156                        document_numerise.document_numerise_type,
2157                        document_numerise.uid_dossier_final,
2158                        document_numerise.document_numerise_nature,
2159                        document_numerise.uid_thumbnail,
2160                        document_numerise.description_type,
2161                        document_numerise.document_travail,
2162                        document_numerise_type.code AS document_numerise_type_code,
2163                        document_numerise_type.libelle AS document_numerise_type_libelle,
2164                        document_numerise_nature.code AS document_numerise_nature_code,
2165                        document_numerise_nature.libelle AS document_numerise_nature_libelle,
2166                        document_numerise_nature.libelle AS nature
2167                    FROM
2168                        %1$sdocument_numerise
2169                    LEFT JOIN %1$sdocument_numerise_type
2170                        ON document_numerise.document_numerise_type = document_numerise_type.document_numerise_type
2171                    LEFT JOIN %1$sdocument_numerise_nature
2172                        ON document_numerise.document_numerise_nature = document_numerise_nature.document_numerise_nature
2173                    WHERE
2174                        document_numerise.document_numerise = %2$d',
2175                    DB_PREFIXE,
2176                    intval($dn)
2177                ),
2178                array(
2179                    "origin" => __METHOD__,
2180                )
2181            );
2182            if ($qres["result"] !== null
2183                && $qres["result"] !== ""
2184                && count($qres["result"]) > 0) {
2185                //
2186                $val_dn = $qres["result"][0];
2187            }
2188            $val_dn['path'] = $this->compose_url_acces_document('document_numerise', 'uid', $this->getVal('object_id'));
2189          return $val_dn;          return $val_dn;
2190      }      }
2191    
# Line 1959  class task extends task_gen { Line 2254  class task extends task_gen {
2254          if (isset($val_consultation['fichier']) === true          if (isset($val_consultation['fichier']) === true
2255              && $val_consultation['fichier'] !== '') {              && $val_consultation['fichier'] !== '') {
2256              //              //
2257              $val_consultation['path_fichier'] = sprintf('%s&snippet=%s&obj=%s&champ=%s&id=%s', 'app/index.php?module=form', 'file', 'consultation', 'fichier', $this->getVal('object_id'));              $val_consultation['path_fichier'] = $this->compose_url_acces_document('consultation', 'fichier', $this->getVal('object_id'));
2258          }          }
2259          if (isset($val_consultation['om_fichier_consultation']) === true          if (isset($val_consultation['om_fichier_consultation']) === true
2260              && $val_consultation['om_fichier_consultation'] !== '') {              && $val_consultation['om_fichier_consultation'] !== '') {
2261              //              //
2262              $val_consultation['path_om_fichier_consultation'] = sprintf('%s&snippet=%s&obj=%s&champ=%s&id=%s', 'app/index.php?module=form', 'file', 'consultation', 'om_fichier_consultation', $this->getVal('object_id'));              $val_consultation['path_om_fichier_consultation'] = $this->compose_url_acces_document('consultation', 'om_fichier_consultation', $this->getVal('object_id'));
2263          }          }
2264          return $val_consultation;          return $val_consultation;
2265      }      }
# Line 1980  class task extends task_gen { Line 2275  class task extends task_gen {
2275          return $val_service;          return $val_service;
2276      }      }
2277    
2278      protected function view_form_json($in_field = false) {      /**
2279         * Recupere le numéro du dossier ou le numéro du dossier parent s'il existe,
2280         * @param string $dossier : le numéro du dossier
2281         *
2282         * @return string $dossier | $dossier_parent
2283         */
2284        protected function get_id_dossier_parent(string $dossier){
2285            $query = sprintf('
2286                SELECT
2287                    dossier.dossier_parent
2288                FROM
2289                    %1$sdossier
2290                WHERE
2291                    dossier.dossier = \'%2$s\'
2292                ORDER BY
2293                    dossier.dossier',
2294                DB_PREFIXE,
2295                $dossier
2296            );
2297    
2298            $res = $this->f->get_all_results_from_db_query(
2299                $query,
2300                array(
2301                    "origin" => __METHOD__,
2302                    // "force_return" => true,
2303                )
2304            );
2305            if ($res['code'] === 'KO') {
2306                return false;
2307            }
2308            if ( isset($res['result'][0]["dossier_parent"])
2309                && ! empty($res['result'][0]["dossier_parent"] )
2310            ) {
2311                return $res['result'][0]["dossier_parent"];
2312            }
2313            return $dossier;
2314    
2315        }
2316    
2317        /**
2318         * Renvoie un tableau, contenant les informations nécessaire à l'ajout des annexes
2319         * à une payload.
2320         *
2321         * Récupère la liste des annexes paramétrées dans la table parametrage_annexe
2322         * pour l'instruction voulu. A partir de cette liste, construit un tableau avec
2323         * une entrée par annexe. Chaque entrées contiens les informations suivantes :
2324         *   - path          : url d'accès au fichier
2325         *   - document_type : code du document dans plat'au
2326         *   - document_id   : uid du document
2327         *
2328         * @param int  $instruction_id             : identifiant de l'instruction dont ont doit récuperer les annexes
2329         * @param bool $document_platau_uniquement : limite les annexes renvoyées a celles typées pour platau
2330         *
2331         * @return array $annexes
2332         */
2333        protected function ajouter_annexes_a_la_payload(int $instruction_id, bool $document_platau_uniquement = false) {
2334            $annexes = array();
2335            $annexes_a_lier = $this->f->recuperer_documents_a_annexe($instruction_id, $document_platau_uniquement);
2336            foreach ($annexes_a_lier as $annexe_info) {
2337                $objet = $annexe_info['objet'];
2338                $id_objet = $annexe_info['id'];
2339                // Récupère l'objet identifié en tant qu'annexe. Si l'objet n'est pas
2340                // récupéré on passe à l'itération suivante
2341                if (empty($inst_objet = $this->f->findObjectById($objet, $id_objet, true))) {
2342                    $this->f->addToLog(__METHOD__."() : L'objet *$objet* d'identifiant *$id_objet* n'a pas pu être instancié, son document ne peut pas être ajouté aux annexes.");
2343                    continue;
2344                }
2345    
2346                // Détermine le champ contenant l'uid et le type de document
2347                switch ($objet) {
2348                    case 'document_numerise':
2349                        $champ_uid = 'uid';
2350                        /* TODO : Gestion du document_type
2351                            $document_numerise_type = $this->f->get_inst__om_dbform(array(
2352                                "obj" => 'document_numerise_type',
2353                                "idx" => $inst_objet->getVal('document_numerise_type'),
2354                            ));
2355                            $document_numerise_type_categorie = $this->f->get_inst__om_dbform(array(
2356                                "obj" => 'document_numerise_type_categorie',
2357                                "idx" => $document_numerise_type->getVal('document_numerise_type_categorie'),
2358                            ));
2359                            $annexe['document_type'] =
2360                        */
2361                        $document_type = '';
2362                        break;
2363                    case 'instruction':
2364                        $champ_uid = 'om_fichier_instruction';
2365                        $inst_document_type = $this->f->findObjectById('document_type', $inst_objet->getVal('document_type_instruction'));
2366                        $document_type = $inst_document_type->getVal('code');
2367                        break;
2368                    case 'consultation':
2369                        $champ_uid = 'fichier';
2370                        // Gestion du document_type, Code platau de la consultation
2371                        $document_type = self::CODE_PLATAU_CONSULTATION;
2372                        break;
2373                    default :
2374                        // Si le type de document n'est pas géré on passe au document suivant.
2375                        // Ajoute une ligne dans les logs pour comprendre pourquoi le document n'apparaît pas.
2376                        $this->f->addToLog(
2377                            __METHOD__.
2378                            "() : L'ajout d'annexe lié aux *$objet* n'est pas implémenté.
2379                            Le document de *$objet* et d'identifiant *$id_objet* n'a pas été ajouté aux annexes.",
2380                            DEBUG_MODE
2381                        );
2382                        continue 2;
2383                }
2384    
2385                $annexes[] = array(
2386                    'path' => $this->compose_url_acces_document($objet, $champ_uid, $id_objet),
2387                    'document_type' => $document_type,
2388                    'document_id' => $inst_objet->getVal($champ_uid)
2389                );
2390            }
2391            return $annexes;
2392        }
2393    
2394        /**
2395         * Fonction de récupération des UID externes en fonction des besoins.
2396         * - Factorisation du code
2397         *
2398         * @param array $val : Tableau des valeurs du flux.
2399         * @param array $elements default array() : liste des élément à ajouter au tableau des UID_externes
2400         * @param array $val_external_uid default array() : tableau des UIDs externes du flux
2401         *
2402         * @return array $val_external_uid
2403         *
2404         */
2405        protected function val_external_uid(array $val, array $elements = array(), array $val_external_uid = array()) {
2406    
2407            if (in_array('dossier_autorisation', $elements)) {
2408                if (empty($val['dossier_autorisation']['dossier_autorisation'])) {
2409                    $dossier_autorisation = $val['dossier']['dossier_autorisation'];
2410                } else {
2411                    $dossier_autorisation = $val['dossier_autorisation']['dossier_autorisation'];
2412                }
2413                $val_external_uid['dossier_autorisation'] = $this->get_external_uid($dossier_autorisation, 'dossier_autorisation');
2414            }
2415    
2416            if (in_array('dossier', $elements)) {
2417                $val_external_uid['dossier'] = $this->get_external_uid(
2418                    $this->get_id_dossier_parent($val['dossier']['dossier']),
2419                    'dossier'
2420                );
2421            }
2422    
2423            if (in_array('piece', $elements)) {
2424                $val_external_uid['piece'] = $this->get_external_uid($val['document_numerise']['document_numerise'], 'piece');
2425            }
2426            if (in_array('dossier_consultation', $elements)) {
2427                $val_external_uid['dossier_consultation'] = $this->get_external_uid(
2428                    $this->get_id_dossier_parent($val['dossier']['dossier']),
2429                    'dossier_consultation'
2430                );
2431            }
2432            if (in_array('prescription', $elements)) {
2433                $val_external_uid['prescription'] = $this->get_external_uid($this->getVal('object_id'), 'prescription');
2434            }
2435            if (in_array('avis_dossier_consultation', $elements)) {
2436                $val_external_uid['avis_dossier_consultation'] = $this->get_external_uid(
2437                    $this->getVal('object_id'), 'avis_dossier_consultation');
2438            }
2439            if (in_array('decision', $elements)) {
2440                $val_external_uid['decision'] = $this->get_external_uid($this->getVal('object_id'), 'instruction');
2441                if ($val_external_uid['decision'] === '') {
2442                    $inst_instruction = $this->f->get_inst__om_dbform(array(
2443                        "obj" => "instruction",
2444                        "idx" => $this->getVal('object_id'),
2445                    ));
2446                    $val_external_uid['decision'] = $this->get_external_uid($inst_instruction->get_related_instructions_next('retour_signature'), 'instruction');
2447                }
2448            }
2449            if (in_array('instruction_notification', $elements)) {
2450                $val_external_uid['instruction_notification'] = $this->get_external_uid($this->getVal('object_id'), 'instruction_notification', PORTAL);
2451            }
2452            return $val_external_uid;
2453        }
2454    
2455        /**
2456         *
2457         *
2458         */
2459        protected function view_form_json(bool $in_field = false) {
2460          //          //
2461          $check_state = isset($this->valF['state']) === true ? $this->valF['state'] : $this->getVal('state');          $check_state = isset($this->valF['state']) === true ? $this->valF['state'] : $this->getVal('state');
2462          if ($check_state !== self::STATUS_CANCELED) {          if ($check_state !== self::STATUS_CANCELED) {
2463    
2464                $data = array('in_field' => $in_field);
2465                $this->f->module_manager->run_hooks('view_form_json_pre', $this, $data);
2466    
2467              // Liste des valeurs à afficher              // Liste des valeurs à afficher
2468              $val = array();              $val = array();
2469    
2470              //              //
2471              $val_task = array_combine($this->champs, $this->val);              $val_task = array_combine($this->champs, $this->val);
2472              foreach ($val_task as $key => $value) {              foreach ($val_task as $key => $value) {
# Line 2017  class task extends task_gen { Line 2498  class task extends task_gen {
2498                  $val = __('Impossible de recuperer la payload car l\'objet de reference n\'existe pas.');                  $val = __('Impossible de recuperer la payload car l\'objet de reference n\'existe pas.');
2499              } else {              } else {
2500    
2501                  $val_task['timestamp_log'] = json_decode($val_task['timestamp_log'], true);                  // L'historique n'est pas nécessaire dans l'affichage en JSON
2502                    if ($in_field === true) {
2503                        $val_task['timestamp_log'] = json_decode($val_task['timestamp_log'], true);
2504                    } else {
2505                        unset($val_task['timestamp_log']);
2506                    }
2507                  unset($val_task['timestamp_log_hidden']);                  unset($val_task['timestamp_log_hidden']);
2508                  $val['task'] = $val_task;                  $val['task'] = $val_task;
2509                  //                  //
# Line 2027  class task extends task_gen { Line 2513  class task extends task_gen {
2513                      $val['dossier_autorisation'] = $this->get_dossier_autorisation_data($this->getVal('object_id'));                      $val['dossier_autorisation'] = $this->get_dossier_autorisation_data($this->getVal('object_id'));
2514                      $val['donnees_techniques'] = $this->get_donnees_techniques_data($this->getVal('object_id'), 'dossier_autorisation');                      $val['donnees_techniques'] = $this->get_donnees_techniques_data($this->getVal('object_id'), 'dossier_autorisation');
2515                      $val['dossier_autorisation_parcelle'] = $this->get_parcelles_data('dossier_autorisation', $val['dossier_autorisation']['dossier_autorisation']);                      $val['dossier_autorisation_parcelle'] = $this->get_parcelles_data('dossier_autorisation', $val['dossier_autorisation']['dossier_autorisation']);
2516                      $val_external_uid = array();                      // Recupération des UID externes
2517                      $val_external_uid['dossier_autorisation'] = $this->get_external_uid($val['dossier_autorisation']['dossier_autorisation'], 'dossier_autorisation');                      $val['external_uids'] = $this->val_external_uid($val, array('dossier_autorisation'));
                     $val['external_uids'] = $val_external_uid;  
2518                  }                  }
2519                  //                  //
2520                  if ($this->getVal('type') === 'creation_DI'                  if ($this->getVal('type') === 'creation_DI'
# Line 2042  class task extends task_gen { Line 2527  class task extends task_gen {
2527                      $architecte = isset($val['donnees_techniques']['architecte']) === true ? $val['donnees_techniques']['architecte'] : null;                      $architecte = isset($val['donnees_techniques']['architecte']) === true ? $val['donnees_techniques']['architecte'] : null;
2528                      $val['architecte'] = $this->get_architecte_data($architecte);                      $val['architecte'] = $this->get_architecte_data($architecte);
2529                      $val['dossier_parcelle'] = $this->get_parcelles_data('dossier', $val['dossier']['dossier']);                      $val['dossier_parcelle'] = $this->get_parcelles_data('dossier', $val['dossier']['dossier']);
2530                      $val_external_uid = array();                      // Recupération des UID externes
2531                      $val_external_uid['dossier_autorisation'] = $this->get_external_uid($val['dossier']['dossier_autorisation'], 'dossier_autorisation');                      $val['external_uids'] = $this->val_external_uid($val, array('dossier_autorisation', 'dossier'));
                     $val_external_uid['dossier'] = $this->get_external_uid($val['dossier']['dossier'], 'dossier');  
                     $val['external_uids'] = $val_external_uid;  
2532                  }                  }
2533                  //                  //
2534                  if ($this->getVal('type') === 'qualification_DI') {                  if ($this->getVal('type') === 'qualification_DI') {
2535                      $val['dossier'] = $this->get_dossier_data($this->getVal('dossier'));                      $val['dossier'] = $this->get_dossier_data($this->getVal('dossier'));
2536                      $val_external_uid = array();                      // Recupération des UID externes
2537                      $val_external_uid['dossier_autorisation'] = $this->get_external_uid($val['dossier']['dossier_autorisation'], 'dossier_autorisation');                      $val['external_uids'] = $this->val_external_uid($val, array('dossier_autorisation', 'dossier'));
                     $val_external_uid['dossier'] = $this->get_external_uid($val['dossier']['dossier'], 'dossier');  
                     $val['external_uids'] = $val_external_uid;  
2538                  }                  }
2539                  //                  //
2540                  if ($this->getVal('type') === 'ajout_piece') {                  if ($this->getVal('type') === 'ajout_piece') {
2541                      $val['document_numerise'] = $this->get_document_numerise_data($this->getVal('object_id'));                      $val['document_numerise'] = $this->get_document_numerise_data($this->getVal('object_id'));
2542                      $val['dossier'] = $this->get_dossier_data($val['document_numerise']['dossier']);                      $val['dossier'] = $this->get_dossier_data($val['document_numerise']['dossier']);
2543                      $val_external_uid = array();                      // Recupération des UID externes
2544                      $val_external_uid['dossier_autorisation'] = $this->get_external_uid($val['dossier']['dossier_autorisation'], 'dossier_autorisation');                      $val['external_uids'] = $this->val_external_uid($val, array('dossier_autorisation', 'dossier', 'piece'));
2545                      $val_external_uid['dossier'] = $this->get_external_uid($val['dossier']['dossier'], 'dossier');                  }
2546                      $val_external_uid['piece'] = $this->get_external_uid($val['document_numerise']['document_numerise'], 'piece');                  //
2547                      $val['external_uids'] = $val_external_uid;                  if ($this->getVal('type') === 'modification_piece') {
2548                        $val['document_numerise'] = $this->get_document_numerise_data($this->getVal('object_id'));
2549                        $val['dossier'] = $this->get_dossier_data($val['document_numerise']['dossier']);
2550                        // Recupération des UID externes
2551                        $val['external_uids'] = $this->val_external_uid($val, array('dossier_autorisation', 'dossier', 'piece'));
2552                    }
2553                    //
2554                    if ($this->getVal('type') === 'suppression_piece') {
2555                        $val['document_numerise'] = $this->get_document_numerise_data($this->getVal('object_id'));
2556                        $val['dossier'] = $this->get_dossier_data($val['document_numerise']['dossier']);
2557                        // Recupération des UID externes
2558                        $val['external_uids'] = $this->val_external_uid($val, array('dossier_autorisation', 'dossier', 'piece'));
2559                  }                  }
2560                  //                  //
2561                  if ($this->getVal('type') === 'decision_DI') {                  if ($this->getVal('type') === 'decision_DI') {
# Line 2073  class task extends task_gen { Line 2565  class task extends task_gen {
2565                      if (isset($val['instruction']['signataire_arrete']) === true) {                      if (isset($val['instruction']['signataire_arrete']) === true) {
2566                          $val['signataire_arrete'] = $this->get_signataire_arrete_data($val['instruction']['signataire_arrete']);                          $val['signataire_arrete'] = $this->get_signataire_arrete_data($val['instruction']['signataire_arrete']);
2567                      }                      }
2568                      $val_external_uid = array();                      // Recupération des UID externes
2569                      $val_external_uid['dossier_autorisation'] = $this->get_external_uid($val['dossier']['dossier_autorisation'], 'dossier_autorisation');                      $val['external_uids'] = $this->val_external_uid($val, array('dossier_autorisation', 'dossier'));
                     $val_external_uid['dossier'] = $this->get_external_uid($val['dossier']['dossier'], 'dossier');  
                     $val['external_uids'] = $val_external_uid;  
2570                  }                  }
2571                  //                  //
2572                  if ($this->getVal('type') === 'incompletude_DI') {                  if ($this->getVal('type') === 'incompletude_DI') {
2573                      $val['dossier'] = $this->get_dossier_data($this->getVal('dossier'));                      $val['dossier'] = $this->get_dossier_data($this->getVal('dossier'));
2574                      $val['instruction'] = $this->get_instruction_data($val['dossier']['dossier'], 'with-id', array('with-id' => $this->getVal('object_id')));                      $val['instruction'] = $this->get_instruction_data($val['dossier']['dossier'], 'with-id', array('with-id' => $this->getVal('object_id')));
2575                      $val_external_uid = array();                      // Recupération des UID externes
2576                      $val_external_uid['dossier_autorisation'] = $this->get_external_uid($val['dossier']['dossier_autorisation'], 'dossier_autorisation');                      $val['external_uids'] = $this->val_external_uid($val, array('dossier_autorisation', 'dossier'));
                     $val_external_uid['dossier'] = $this->get_external_uid($val['dossier']['dossier'], 'dossier');  
                     $val['external_uids'] = $val_external_uid;  
2577                  }                  }
2578                  //                  //
2579                  if ($this->getVal('type') === 'completude_DI') {                  if ($this->getVal('type') === 'completude_DI') {
2580                      $val['dossier'] = $this->get_dossier_data($this->getVal('dossier'));                      $val['dossier'] = $this->get_dossier_data($this->getVal('dossier'));
2581                      $val['instruction'] = $this->get_instruction_data($val['dossier']['dossier'], 'with-id', array('with-id' => $this->getVal('object_id')));                      $val['instruction'] = $this->get_instruction_data($val['dossier']['dossier'], 'with-id', array('with-id' => $this->getVal('object_id')));
2582                      $val_external_uid = array();                      // Recupération des UID externes
2583                      $val_external_uid['dossier_autorisation'] = $this->get_external_uid($val['dossier']['dossier_autorisation'], 'dossier_autorisation');                      $val['external_uids'] = $this->val_external_uid($val, array('dossier_autorisation', 'dossier'));
                     $val_external_uid['dossier'] = $this->get_external_uid($val['dossier']['dossier'], 'dossier');  
                     $val['external_uids'] = $val_external_uid;  
2584                  }                  }
2585                  //                  //
2586                  if ($this->getVal('type') === 'lettre_incompletude'                  if ($this->getVal('type') === 'lettre_incompletude'
# Line 2102  class task extends task_gen { Line 2588  class task extends task_gen {
2588                      $val['dossier'] = $this->get_dossier_data($this->getVal('dossier'));                      $val['dossier'] = $this->get_dossier_data($this->getVal('dossier'));
2589                      $val['instruction'] = $this->get_instruction_data($val['dossier']['dossier'], 'with-id', array('with-id' => $this->getVal('object_id')));                      $val['instruction'] = $this->get_instruction_data($val['dossier']['dossier'], 'with-id', array('with-id' => $this->getVal('object_id')));
2590                      $val['lettre_petitionnaire'] = $this->get_lettre_petitionnaire_data($val['dossier']['dossier'], $this->getVal('type'));                      $val['lettre_petitionnaire'] = $this->get_lettre_petitionnaire_data($val['dossier']['dossier'], $this->getVal('type'));
2591                      $val_external_uid = array();                      // Recupération des UID externes
2592                      $val_external_uid['dossier_autorisation'] = $this->get_external_uid($val['dossier']['dossier_autorisation'], 'dossier_autorisation');                      $val['external_uids'] = $this->val_external_uid($val, array('dossier_autorisation', 'dossier'));
                     $val_external_uid['dossier'] = $this->get_external_uid($val['dossier']['dossier'], 'dossier');  
                     $val['external_uids'] = $val_external_uid;  
2593                  }                  }
2594                  //                  //
2595                  if ($this->getVal('type') === 'pec_metier_consultation') {                  if ($this->getVal('type') === 'pec_metier_consultation') {
2596                      $val['dossier'] = $this->get_dossier_data($this->getVal('dossier'));                      $val['dossier'] = $this->get_dossier_data($this->getVal('dossier'));
2597                      $val['instruction'] = $this->get_instruction_data($this->getVal('dossier'), 'with-id', array('with-id' => $this->getVal('object_id')));                      $val['instruction'] = $this->get_instruction_data(
2598                      $val_external_uid = array();                          $this->getVal('dossier'),
2599                      $val_external_uid['dossier_autorisation'] = $this->get_external_uid($val['dossier']['dossier_autorisation'], 'dossier_autorisation');                          'with-id',
2600                      $val_external_uid['dossier'] = $this->get_external_uid($val['dossier']['dossier'], 'dossier');                          array('with-id' => $this->getVal('object_id'))
2601                      $val_external_uid['dossier_consultation'] = $this->get_external_uid($val['dossier']['dossier'], 'dossier_consultation');                      );
2602                      $val['external_uids'] = $val_external_uid;                      // Recupération des UID externes
2603                        $val['external_uids'] = $this->val_external_uid($val, array('dossier_autorisation', 'dossier', 'dossier_consultation'));
2604                  }                  }
2605                  //                  //
2606                  if ($this->getVal('type') === 'avis_consultation') {                  if ($this->getVal('type') === 'avis_consultation') {
2607                      $val['dossier'] = $this->get_dossier_data($this->getVal('dossier'));                      $val['dossier'] = $this->get_dossier_data($this->getVal('dossier'));
2608                      $val['instruction'] = $this->get_instruction_data($this->getVal('dossier'), 'with-id', array('with-id' => $this->getVal('object_id')));                      $val['instruction'] = $this->get_instruction_data(
2609                            $this->getVal('dossier'),
2610                            'with-id',
2611                            array('with-id' => $this->getVal('object_id'))
2612                        );
2613                      $val['avis_decision'] = $this->get_avis_decision_data($this->getVal('dossier'));                      $val['avis_decision'] = $this->get_avis_decision_data($this->getVal('dossier'));
2614                      if (isset($val['instruction']['signataire_arrete']) === true) {                      if (isset($val['instruction']['signataire_arrete']) === true) {
2615                          $val['signataire_arrete'] = $this->get_signataire_arrete_data($val['instruction']['signataire_arrete']);                          $val['signataire_arrete'] = $this->get_signataire_arrete_data($val['instruction']['signataire_arrete']);
2616                      }                      }
2617                      $val_external_uid = array();                      // Recupération des UID externes
2618                      $val_external_uid['dossier_autorisation'] = $this->get_external_uid($val['dossier']['dossier_autorisation'], 'dossier_autorisation');                      $val['external_uids'] = $this->val_external_uid($val, array('dossier_autorisation', 'dossier', 'dossier_consultation', 'avis_dossier_consultation'));
                     $val_external_uid['dossier'] = $this->get_external_uid($val['dossier']['dossier'], 'dossier');  
                     $val_external_uid['dossier_consultation'] = $this->get_external_uid($val['dossier']['dossier'], 'dossier_consultation');  
                     $val_external_uid['avis_dossier_consultation'] = $this->get_external_uid($this->getVal('object_id'), 'avis_dossier_consultation');  
                     $val['external_uids'] = $val_external_uid;  
2619                  }                  }
2620                  // XXX WIP                  //
2621                  if ($this->getVal('type') === 'creation_consultation') {                  if ($this->getVal('type') === 'creation_consultation') {
2622                      //                      //
2623                      $val['dossier'] = $this->get_dossier_data($this->getVal('dossier'));                      $val['dossier'] = $this->get_dossier_data($this->getVal('dossier'));
2624                      $val['consultation'] = $this->get_consultation_data($this->getVal('object_id'));                      $val['consultation'] = $this->get_consultation_data($this->getVal('object_id'));
2625                      $val['service'] = $this->get_service_data($val['consultation']['service']);                      $val['service'] = $this->get_service_data($val['consultation']['service']);
2626                      $val_external_uid = array();                      // Recupération des UID externes
2627                      $val_external_uid['dossier_autorisation'] = $this->get_external_uid($val['dossier']['dossier_autorisation'], 'dossier_autorisation');                      $val['external_uids'] = $this->val_external_uid($val, array('dossier_autorisation', 'dossier'));
                     $val_external_uid['dossier'] = $this->get_external_uid($val['dossier']['dossier'], 'dossier');  
                     $val['external_uids'] = $val_external_uid;  
2628                  }                  }
2629                  //                  //
2630                  if ($this->getVal('type') === 'envoi_CL') {                  if ($this->getVal('type') === 'envoi_CL') {
# Line 2149  class task extends task_gen { Line 2632  class task extends task_gen {
2632                      $val['dossier'] = $this->get_dossier_data($this->getVal('dossier'));                      $val['dossier'] = $this->get_dossier_data($this->getVal('dossier'));
2633                      $val['instruction'] = $this->get_instruction_data($this->getVal('dossier'), 'with-id', array('with-id' => $this->getVal('object_id')));                      $val['instruction'] = $this->get_instruction_data($this->getVal('dossier'), 'with-id', array('with-id' => $this->getVal('object_id')));
2634                      $val['dossier_autorisation'] = $this->get_dossier_autorisation_data($val['dossier']['dossier_autorisation']);                      $val['dossier_autorisation'] = $this->get_dossier_autorisation_data($val['dossier']['dossier_autorisation']);
2635                      $val_external_uid = array();                      // Recupération des UID externes
2636                      $val_external_uid['dossier_autorisation'] = $this->get_external_uid($val['dossier']['dossier_autorisation'], 'dossier_autorisation');                      $val['external_uids'] = $this->val_external_uid($val, array('dossier_autorisation', 'dossier', 'decision'));
                     $val_external_uid['dossier'] = $this->get_external_uid($this->getVal('dossier'), 'dossier');  
                     $val_external_uid['decision'] = $this->get_external_uid($this->getVal('object_id'), 'instruction');  
                     if ($val_external_uid['decision'] === '') {  
                         $inst_instruction = $this->f->get_inst__om_dbform(array(  
                             "obj" => "instruction",  
                             "idx" => $this->getVal('object_id'),  
                         ));  
                         $val_external_uid['decision'] = $this->get_external_uid($inst_instruction->get_related_instructions_next('retour_signature'), 'instruction');  
                     }  
                     $val['external_uids'] = $val_external_uid;  
2637                  }                  }
2638                  if ($this->getVal('type') === 'notification_instruction'                  if ($this->getVal('type') === 'notification_instruction'
2639                      || $this->getVal('type') === 'notification_recepisse'                      || $this->getVal('type') === 'notification_recepisse'
2640                      || $this->getVal('type') === 'notification_decision'                      || $this->getVal('type') === 'notification_decision'
2641                      || $this->getVal('type') === 'notification_service_consulte'                      || $this->getVal('type') === 'notification_service_consulte'
2642                      || $this->getVal('type') === 'notification_tiers_consulte') {                      || $this->getVal('type') === 'notification_tiers_consulte'
2643                        || $this->getVal('type') === 'notification_signataire') {
2644                      //                      //
2645                      $val['dossier'] = $this->get_dossier_data($this->getVal('dossier'));                      $val['dossier'] = $this->get_dossier_data($this->getVal('dossier'));
2646                      $dossier_id = isset($val['dossier']['dossier']) === true ? $val['dossier']['dossier'] : null;                      $dossier_id = isset($val['dossier']['dossier']) === true ? $val['dossier']['dossier'] : null;
2647                      $val['demandeur'] = $this->get_demandeurs_data($dossier_id);                      $val['demandeur'] = $this->get_demandeurs_data($dossier_id);
2648                      $val['instruction_notification'] = $this->get_instruction_notification_data($this->getVal('category'), 'with-id', array('with-id' => $this->getVal('object_id')));                      $val['instruction_notification'] = $this->get_instruction_notification_data($this->getVal('category'), 'with-id', array('with-id' => $this->getVal('object_id')));
2649                      $instruction_id = isset($val['instruction_notification']['instruction']) === true ? $val['instruction_notification']['instruction'] : null;                      $instruction_id = isset($val['instruction_notification']['instruction']) === true ? $val['instruction_notification']['instruction'] : null;
                     $instruction_annexes = isset($val['instruction_notification']['annexes']) === true ? $val['instruction_notification']['annexes'] : null;  
2650                      $val['instruction'] = $this->get_instruction_data($dossier_id, 'with-id', array('with-id' => $instruction_id));                      $val['instruction'] = $this->get_instruction_data($dossier_id, 'with-id', array('with-id' => $instruction_id));
2651                      // Précise qu'il s'agit d'une instruction final si l'instruction est liée à une                      // Précise qu'il s'agit d'une instruction final si l'instruction est liée à une
2652                      // demande dont le type ne génère pas de dossier                      // demande dont le type ne génère pas de dossier
2653                      if ($this->is_demande_instruction_recepisse_without_dossier($instruction_id) === true) {                      if ($this->is_demande_instruction_recepisse_without_dossier($instruction_id) === true) {
2654                          $val['instruction']['final'] = 't';                          $val['instruction']['final'] = 't';
2655                      }                      }
2656                        // Recupération des UID externes
2657                      $val_external_uid = array();                      $val_external_uid = array();
2658                      // Affiche l'identifiant externe lié à l'instruction si cette combinaison existe, sinon celui lié au dossier                      // Affiche l'identifiant externe lié à l'instruction si cette combinaison existe, sinon celui lié au dossier
2659                      $val_external_uid['demande'] = $this->get_external_uid($instruction_id, 'demande') !== '' ? $this->get_external_uid($instruction_id, 'demande') : $this->get_external_uid($dossier_id, 'demande');                      $val_external_uid['demande'] = $this->get_external_uid($instruction_id, 'demande') !== '' ? $this->get_external_uid($instruction_id, 'demande') : $this->get_external_uid($dossier_id, 'demande');
2660                      $val_external_uid['demande (instruction)'] = $this->get_external_uid($instruction_id, 'demande', PORTAL, 'ASC');                      $val_external_uid['demande (instruction)'] = $this->get_external_uid($instruction_id, 'demande', PORTAL, 'ASC');
2661                      $val_external_uid['instruction_notification'] = $this->get_external_uid($this->getVal('object_id'), 'instruction_notification', PORTAL);                      $val['external_uids'] = $this->val_external_uid($val, array('demande', 'demande (instruction)', 'instruction_notification'), $val_external_uid );
                     $val['external_uids'] = $val_external_uid;  
2662                  }                  }
2663                  //                  //
2664                  if ($this->getVal('type') === 'prescription') {                  if ($this->getVal('type') === 'prescription') {
# Line 2195  class task extends task_gen { Line 2668  class task extends task_gen {
2668                      if (isset($val['instruction']['signataire_arrete']) === true) {                      if (isset($val['instruction']['signataire_arrete']) === true) {
2669                          $val['signataire_arrete'] = $this->get_signataire_arrete_data($val['instruction']['signataire_arrete']);                          $val['signataire_arrete'] = $this->get_signataire_arrete_data($val['instruction']['signataire_arrete']);
2670                      }                      }
2671                      $val_external_uid = array();                      // Recupération des UID externes
2672                      $val_external_uid['dossier_autorisation'] = $this->get_external_uid($val['dossier']['dossier_autorisation'], 'dossier_autorisation');                      $val['external_uids'] = $this->val_external_uid($val, array('dossier_autorisation', 'dossier', 'dossier_consultation', 'prescription'));
2673                      $val_external_uid['dossier'] = $this->get_external_uid($val['dossier']['dossier'], 'dossier');                  }
2674                      $val_external_uid['dossier_consultation'] = $this->get_external_uid($val['dossier']['dossier'], 'dossier_consultation');                  //
2675                      $val_external_uid['prescription'] = $this->get_external_uid($this->getVal('object_id'), 'prescription');                  if ($this->getVal('type') === 'ajout_documents_specifiques') {
2676                      $val['external_uids'] = $val_external_uid;                      // Data blocs
2677                        $val['dossier'] = $this->get_dossier_data($this->getVal('dossier'));
2678                        $val['instruction'] = $this->get_instruction_data(
2679                            $this->getVal('dossier'),
2680                            'with-id',
2681                            array('with-id' => $this->getVal('object_id'))
2682                        );
2683                        // Recupération des UID externes
2684                        $val['external_uids'] = $this->val_external_uid($val, array('dossier_autorisation', 'dossier', 'dossier_consultation'));
2685                  }                  }
2686              }              }
2687    
2688                $data = array('in_field' => $in_field, 'val' => &$val);
2689                $this->f->module_manager->run_hooks('view_form_json_post', $this, $data);
2690    
2691              if ($in_field === true) {              if ($in_field === true) {
2692                  return json_encode($val, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES);                  return json_encode($val, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES);
2693              } else {              } else {
# Line 2242  class task extends task_gen { Line 2726  class task extends task_gen {
2726          }          }
2727    
2728          // Sauvegarde de l'uid externe retourné          // Sauvegarde de l'uid externe retourné
2729          if ($this->f->get_submitted_post_value('external_uid') !== null) {          $external_uid = $this->f->get_submitted_post_value('external_uid');
2730            if ($external_uid !== null) {
2731              //              //
2732              $objects = $this->get_objects_by_task_type($this->getVal('type'), $this->getVal('stream'));              $objects = $this->get_objects_by_task_type($this->getVal('type'), $this->getVal('stream'));
2733                // Si l'identifiant externe contient le préfixe pour identifier les codes de suivi,
2734                // le seul objet concerné sera celui du code de suivi
2735                if (strpos($external_uid, self::CS_PREFIX) !== false) {
2736                    $objects = array('code-suivi', );
2737                    $external_uid = str_replace(self::CS_PREFIX, '', $external_uid);
2738                }
2739              foreach ($objects as $object) {              foreach ($objects as $object) {
2740                  $inst_lien = $this->f->get_inst__om_dbform(array(                  $inst_lien = $this->f->get_inst__om_dbform(array(
2741                      "obj" => "lien_id_interne_uid_externe",                      "obj" => "lien_id_interne_uid_externe",
2742                      "idx" => ']',                      "idx" => ']',
2743                  ));                  ));
2744                  $object_id = $this->getVal('object_id');                  $object_id = $this->getVal('object_id');
2745                  $is_exists = $inst_lien->is_exists($object, $object_id, $this->f->get_submitted_post_value('external_uid'), $this->getVal('dossier'));                  $is_exists = $inst_lien->is_exists($object, $object_id, $external_uid, $this->getVal('dossier'));
2746                  // Dans le cas spécifique de la mise à jour d'une notification                  // Dans le cas spécifique de la mise à jour d'une notification
2747                  // et de la création d'une liaison d'identifiant pour l'objet demande,                  // et de la création d'une liaison d'identifiant pour l'objet demande,
2748                  // l'identifiant de l'objet n'est plus celui de la notification                  // l'identifiant de l'objet n'est plus celui de la notification
# Line 2261  class task extends task_gen { Line 2752  class task extends task_gen {
2752                          || $this->getVal('type') === 'notification_instruction'                          || $this->getVal('type') === 'notification_instruction'
2753                          || $this->getVal('type') === 'notification_decision'                          || $this->getVal('type') === 'notification_decision'
2754                          || $this->getVal('type') === 'notification_service_consulte'                          || $this->getVal('type') === 'notification_service_consulte'
2755                          || $this->getVal('type') === 'notification_tiers_consulte')) {                          || $this->getVal('type') === 'notification_tiers_consulte'
2756                            || $this->getVal('type') === 'notification_signataire')) {
2757                      //                      //
2758                      $object_id = $this->getVal('dossier');                      $object_id = $this->getVal('dossier');
2759                      // Il ne doit y avoir qu'une liaison entre le numéro du dossier interne et un uid externe de "demande"                      // Il ne doit y avoir qu'une liaison entre le numéro du dossier interne et un uid externe de "demande"
# Line 2272  class task extends task_gen { Line 2764  class task extends task_gen {
2764                          'lien_id_interne_uid_externe' => '',                          'lien_id_interne_uid_externe' => '',
2765                          'object' => $object,                          'object' => $object,
2766                          'object_id' => $object_id,                          'object_id' => $object_id,
2767                          'external_uid' => $this->f->get_submitted_post_value('external_uid'),                          'external_uid' => $external_uid,
2768                          'dossier' => $this->getVal('dossier'),                          'dossier' => $this->getVal('dossier'),
2769                          'category' => $this->getVal('category'),                          'category' => $this->getVal('category'),
2770                      );                      );
# Line 2382  class task extends task_gen { Line 2874  class task extends task_gen {
2874              && $stream === 'output') {              && $stream === 'output') {
2875              $objects = array('prescription', );              $objects = array('prescription', );
2876          }          }
2877          if (in_array($type, array('ajout_piece', 'add_piece', )) === true) {          if (in_array($type, array('ajout_piece', 'add_piece', 'modification_piece', 'suppression_piece', )) === true) {
2878              $objects = array('piece', );              $objects = array('piece', );
2879          }          }
2880          if (in_array($type, array('creation_consultation', )) === true) {          if (in_array($type, array('creation_consultation', )) === true) {
2881              $objects = array('consultation', );              $objects = array('consultation', );
2882          }          }
2883            if (in_array($type, array('ajout_documents_specifiques', )) === true
2884                && $stream === 'output') {
2885                $objects = array('dossier', 'instruction', 'instruction_notification',);
2886            }
2887          if (in_array($type, array('pec_metier_consultation', )) === true          if (in_array($type, array('pec_metier_consultation', )) === true
2888              && $stream === 'input') {              && $stream === 'input') {
2889              $objects = array('pec_metier_consultation', );              $objects = array('pec_metier_consultation', );
# Line 2408  class task extends task_gen { Line 2904  class task extends task_gen {
2904                  'notification_decision',                  'notification_decision',
2905                  'notification_service_consulte',                  'notification_service_consulte',
2906                  'notification_tiers_consulte',                  'notification_tiers_consulte',
2907                    'notification_signataire',
2908              )              )
2909          ) === true) {          ) === true) {
2910              $objects = array('instruction_notification', 'demande', );              $objects = array('instruction_notification', 'demande', );
# Line 2428  class task extends task_gen { Line 2925  class task extends task_gen {
2925          if (in_array($type, array('creation_DA', 'modification_DA', )) === true) {          if (in_array($type, array('creation_DA', 'modification_DA', )) === true) {
2926              $tables = array('dossier_autorisation', );              $tables = array('dossier_autorisation', );
2927          }          }
2928          if (in_array($type, array('creation_DI', 'depot_DI', )) === true) {          if (in_array($type, array('creation_DI', 'depot_DI', 'modification_DI',)) === true) {
2929              $tables = array('dossier', );              $tables = array('dossier', );
2930          }          }
2931          if (in_array($type, array('qualification_DI', )) === true) {          if (in_array($type, array('qualification_DI', )) === true) {
# Line 2450  class task extends task_gen { Line 2947  class task extends task_gen {
2947          )) === true) {          )) === true) {
2948              $tables = array('instruction', );              $tables = array('instruction', );
2949          }          }
2950            if (in_array($type, array('ajout_documents_specifiques', )) === true
2951                && in_array($stream, array('output', 'all', )) === true ) {
2952                $tables = array('instruction', 'dossier', );
2953            }
2954            if (in_array($type, array('envoi_CL', )) === true) {
2955                $tables = array('instruction', );
2956            }
2957          if (in_array($type, array('pec_metier_consultation', )) === true          if (in_array($type, array('pec_metier_consultation', )) === true
2958              && $stream === 'output') {              && $stream === 'output') {
2959              $tables = array('instruction', );              $tables = array('dossier', 'instruction', 'instruction_notification', );
2960          }          }
2961          if (in_array($type, array('avis_consultation', )) === true          if (in_array($type, array('avis_consultation', )) === true
2962              && $stream === 'output') {              && $stream === 'output') {
# Line 2462  class task extends task_gen { Line 2966  class task extends task_gen {
2966              && $stream === 'output') {              && $stream === 'output') {
2967              $tables = array('instruction', );              $tables = array('instruction', );
2968          }          }
2969          if (in_array($type, array('ajout_piece', 'add_piece', )) === true) {          if (in_array($type, array('ajout_piece', 'add_piece', 'modification_piece', 'suppression_piece', )) === true) {
2970              $tables = array('document_numerise', );              $tables = array('document_numerise', );
2971          }          }
2972          if (in_array($type, array('creation_consultation', )) === true) {          if (in_array($type, array('creation_consultation', )) === true) {
# Line 2487  class task extends task_gen { Line 2991  class task extends task_gen {
2991                  'notification_instruction',                  'notification_instruction',
2992                  'notification_decision',                  'notification_decision',
2993                  'notification_service_consulte',                  'notification_service_consulte',
2994                  'notification_tiers_consulte'                  'notification_tiers_consulte',
2995                    'notification_signataire'
2996              )              )
2997          ) === true) {          ) === true) {
2998              $tables = array('instruction_notification', );              $tables = array('instruction_notification', );
# Line 2511  class task extends task_gen { Line 3016  class task extends task_gen {
3016       */       */
3017      protected function does_referenced_object_exist($taskObjectId, string $taskType, string $taskStream = 'output') {      protected function does_referenced_object_exist($taskObjectId, string $taskType, string $taskStream = 'output') {
3018          $refTables = $this->get_tables_by_task_type($taskType, $taskStream);          $refTables = $this->get_tables_by_task_type($taskType, $taskStream);
3019            if (empty($refTables) === true) {
3020                $this->f->addToLog(
3021                    sprintf(
3022                        __("Impossible de vérifier si l'objet de référence existe, car le type de task '%s' n'a pas de correspondance avec une table dans la méthode %s."),
3023                        $taskType,
3024                        "get_tables_by_task_type()"
3025                    ),
3026                    DEBUG_MODE
3027                );
3028                return true;
3029            }
3030          foreach ($refTables as $table) {          foreach ($refTables as $table) {
3031              $inst = $this->f->get_inst__om_dbform(array(              $inst = $this->f->get_inst__om_dbform(array(
3032                  'obj' => $table,                  'obj' => $table,

Legend:
Removed from v.14064  
changed lines
  Added in v.18436

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26