/[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 18435 by softime, Tue Aug 13 14:43:51 2024 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 44  class task extends task_gen { Line 53  class task extends task_gen {
53          'notification_commune',          'notification_commune',
54          'notification_signataire',          'notification_signataire',
55          'lettre_incompletude',          'lettre_incompletude',
56          'lettre_majoration'          'lettre_majoration',
57            'ajout_documents_specifiques'
58      );      );
59    
60      /**      /**
# Line 62  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      /**      /**
# Line 70  class task extends task_gen { Line 81  class task extends task_gen {
81      const TASK_WITH_DOCUMENT = array(      const TASK_WITH_DOCUMENT = array(
82          'add_piece',          'add_piece',
83          'avis_consultation',          'avis_consultation',
84          'pec_metier_consultation'          'pec_metier_consultation',
85            'ajout_documents_specifiques'
86      );      );
87    
88      /**      /**
# Line 277  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 422  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 431  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 475  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 507  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 537  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 595  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 729  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 756  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 770  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 803  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 847  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 1100  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 1194  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 1246  class task extends task_gen { Line 1333  class task extends task_gen {
1333              // Sinon return false              // 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    
1336              // S'il n'existe pas de tâche de type 'modification DI' pour l'object id/dossier              // Vérifie si une tâche existe déjà pour les types de tâches ayant un fonctionnement particulier.
1337              if ($valF['type'] === 'modification_DI' && $task_exists === false) {              // Il existe 2 cas :
1338                  // On se réfère à la tâche de type 'creation DI' de l'object id              //   - 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_DI'")));              //   - Les tâches pour lesquelles on fait une vérification supplémentaire qu'une correspondance ait été
1340              }              //     trouvée ou pas
1341              // S'il n'existe pas de tâche de type 'modification DA' pour l'object id/dossier              // Une tâche ne pouvant avoir qu'un seul type si elle est trouvée, il n'est pas nécessaire de
1342              if ($valF['type'] === 'modification_DA' && $task_exists === false) {              // vérifier les autres
1343                  // On se réfère à la tâche de type 'creation DA' de l'object id              $is_type_voulu_traite = false;
1344                  $task_exists = $this->task_exists_multi_search(array_merge($search_values_common, $search_values_specifics, array("type = 'creation_DA'")));              // 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              if ($valF['type'] === 'ajout_piece') {                  'modification_DI' => array("type = 'creation_DI'"),
1347                  // On se réfère à la tâche de type 'ajout piece' de l'object id                  'modification_DA' => array("type = 'creation_DA'")
1348                  $task_exists = $this->task_exists_multi_search(array_merge($search_values_common, $search_values_specifics, array("type = 'ajout_piece'")));              );
1349              }              foreach ($cas_specifiques_tache_non_existante as $type_task => $conditions_specifiques) {
1350              if ($valF['type'] === 'modification_piece') {                  // S'il n'existe pas de tâche de type voulu pour l'object id/dossier
1351                  // On se réfère à la tâche de type 'modification piece' de l'object id                  if ($valF['type'] === $type_task && $task_exists === false) {
1352                  $task_exists = $this->task_exists_multi_search(array_merge($search_values_common, $search_values_specifics, array("type = 'modification_piece'")));                      // 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              if ($valF['type'] === 'suppression_piece') {                      $is_type_voulu_traite = true;
1355                  // On se réfère à la tâche de type 'suppression piece' de l'object id                      break;
1356                  $task_exists = $this->task_exists_multi_search(array_merge($search_values_common, $search_values_specifics, array("type = 'suppression_piece'")));                  }
1357              }              }
1358              if ($valF['type'] === 'creation_consultation') {  
1359                  // On se réfère à la tâche de type 'creation consultation' de l'object id              // Cas 2 : Vérification supplémentaire qu'une correspondance ait été trouvé ou pas
1360                  $task_exists = $this->task_exists_multi_search(array_merge($search_values_common, $search_values_specifics, array("type = 'creation_consultation'")));              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    
1377              // S'il existe une tâche pour l'objet concerné, pas d'ajout de nouvelle              // 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) {
# Line 1312  class task extends task_gen { Line 1414  class task extends task_gen {
1414          if ($stream === 'output'          if ($stream === 'output'
1415              && $add === true              && $add === true
1416              && isset($valF['type']) === true              && isset($valF['type']) === true
1417              && strpos($valF['type'], 'suppression_piece') !== false) {              && strpos($valF['type'], 'suppression_piece') !== false
1418            ) {
1419              $inst_task_empty = $this->f->get_inst__om_dbform(array(              $inst_task_empty = $this->f->get_inst__om_dbform(array(
1420                  "obj" => "task",                  "obj" => "task",
1421                  "idx" => 0,                  "idx" => 0,
# Line 1349  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 1375  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 1402  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 1759  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 1766  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 1792  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 1901  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 1929  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 1952  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 1998  class task extends task_gen { Line 2171  class task extends task_gen {
2171                  LEFT JOIN %1$sdocument_numerise_nature                  LEFT JOIN %1$sdocument_numerise_nature
2172                      ON document_numerise.document_numerise_nature = document_numerise_nature.document_numerise_nature                      ON document_numerise.document_numerise_nature = document_numerise_nature.document_numerise_nature
2173                  WHERE                  WHERE
2174                      document_numerise.document_numerise = %2$s',                      document_numerise.document_numerise = %2$d',
2175                  DB_PREFIXE,                  DB_PREFIXE,
2176                  intval($dn)                  intval($dn)
2177              ),              ),
# Line 2012  class task extends task_gen { Line 2185  class task extends task_gen {
2185              //              //
2186              $val_dn = $qres["result"][0];              $val_dn = $qres["result"][0];
2187          }          }
2188          $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'));          $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 2081  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 2102  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 2154  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 2169  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'));
                     $val_external_uid['dossier'] = $this->get_external_uid($val['dossier']['dossier'], 'dossier');  
                     $val_external_uid['piece'] = $this->get_external_uid($val['document_numerise']['document_numerise'], 'piece');  
                     $val['external_uids'] = $val_external_uid;  
2545                  }                  }
2546                  //                  //
2547                  if ($this->getVal('type') === 'modification_piece') {                  if ($this->getVal('type') === 'modification_piece') {
2548                      $val['document_numerise'] = $this->get_document_numerise_data($this->getVal('object_id'));                      $val['document_numerise'] = $this->get_document_numerise_data($this->getVal('object_id'));
2549                      $val['dossier'] = $this->get_dossier_data($val['document_numerise']['dossier']);                      $val['dossier'] = $this->get_dossier_data($val['document_numerise']['dossier']);
2550                      $val_external_uid = array();                      // Recupération des UID externes
2551                      $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'));
                     $val_external_uid['dossier'] = $this->get_external_uid($val['dossier']['dossier'], 'dossier');  
                     $val_external_uid['piece'] = $this->get_external_uid($val['document_numerise']['document_numerise'], 'piece');  
                     $val['external_uids'] = $val_external_uid;  
2552                  }                  }
2553                  //                  //
2554                  if ($this->getVal('type') === 'suppression_piece') {                  if ($this->getVal('type') === 'suppression_piece') {
2555                      $val['document_numerise'] = $this->get_document_numerise_data($this->getVal('object_id'));                      $val['document_numerise'] = $this->get_document_numerise_data($this->getVal('object_id'));
2556                      $val['dossier'] = $this->get_dossier_data($val['document_numerise']['dossier']);                      $val['dossier'] = $this->get_dossier_data($val['document_numerise']['dossier']);
2557                      $val_external_uid = array();                      // Recupération des UID externes
2558                      $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'));
                     $val_external_uid['dossier'] = $this->get_external_uid($val['dossier']['dossier'], 'dossier');  
                     $val_external_uid['piece'] = $this->get_external_uid($val['document_numerise']['document_numerise'], 'piece');  
                     $val['external_uids'] = $val_external_uid;  
2559                  }                  }
2560                  //                  //
2561                  if ($this->getVal('type') === 'decision_DI') {                  if ($this->getVal('type') === 'decision_DI') {
# Line 2220  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 2249  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 2296  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'
# Line 2321  class task extends task_gen { Line 2647  class task extends task_gen {
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 2343  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 2544  class task extends task_gen { Line 2880  class task extends task_gen {
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 2607  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) {          if (in_array($type, array('envoi_CL', )) === true) {
2955              $objects = array('instruction', );              $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') {

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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26