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

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

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

revision 1946 by nhaye, Wed May 29 14:01:04 2013 UTC revision 2606 by vpihour, Thu Dec 12 18:05:40 2013 UTC
# Line 39  class instruction extends instruction_ge Line 39  class instruction extends instruction_ge
39      var $metadata = array(      var $metadata = array(
40          "om_fichier_instruction" => array(          "om_fichier_instruction" => array(
41              "dossier" => "getDossier",              "dossier" => "getDossier",
42              "dossier_autorisation" => "getDossierAutorisation",              "dossier_version" => "getDossierVersion",
43              "date_demande_initiale" => "getDateDemandeInitiale",              "numDemandeAutor" => "getNumDemandeAutor",
44              "dossier_instruction_type" => "getDossierInstructionType",              "anneemoisDemandeAutor" => "getAnneemoisDemandeAutor",
45              "statut" => "getStatut",              "typeInstruction" => "getTypeInstruction",
46              "dossier_autorisation_type" => "getDossierAutorisationType",              "statutAutorisation" => "getStatutAutorisation",
47              "date_creation" => "getDateEvenement",              "typeAutorisation" => "getTypeAutorisation",
48              "groupe_instruction" => 'getGroupeInstruction',              "dateEvenementDocument" => "getDateEvenementDocument",
49          ),              "groupeInstruction" => 'getGroupeInstruction',
50          "document_arrete" => array(              "title" => 'getTitle',
             "numArrete" => "getNumArrete",  
             "specialiteArrete" => "getSpecialiteArrete",  
             "decisionArrete" => "getDecisionArrete",  
             "chketatReglementaire" => "getChketatReglementaire",  
             "chkNotification" => "getChkNotification",  
             "dateNotification" => "getDateNotification",  
             "chkCreationdroit" => "getChkCreationdroit",  
             "chkPublication" => "getChkPublication",  
             "datePublication" => "getDatePublication",  
             "chkControleLegalite" => "getChkControleLegalite",  
             "dateSignatureArrete" => "getDateSignatureArrete",  
             "nomSignataire" => "getNomSignataire",  
             "qualiteSignataire" => "getQualiteSignataire",  
             "chkDelegation" => "getChkDelegation",  
             "ap_numRue" => "getAp_numRue",  
             "ap_nomDeLaVoie" => "getAp_nomDeLaVoie",  
             "ap_codePostal" => "getAp_codePostal",  
             "ap_ville" => "getAp_ville",  
51          ),          ),
52      );      );
53    
54    
55      function instruction($id, &$db, $debug) {      function __construct($id, &$db, $debug) {
56          $this->constructeur($id, $db, $debug);          $this->constructeur($id, $db, $debug);
57      }      }
58    
# Line 88  class instruction extends instruction_ge Line 70  class instruction extends instruction_ge
70              && isset($this->f->om_utilisateur["division"])              && isset($this->f->om_utilisateur["division"])
71              && $this->f->om_utilisateur["division"] != $this->getDivisionFromDossier()) {              && $this->f->om_utilisateur["division"] != $this->getDivisionFromDossier()) {
72              //              //
73              $this->actions_sup = array();              //On cache les liens d'action
74              $this->setParameter("actions", array());              $this->parameters["actions"]["modifier"] = NULL;
75                $this->parameters["actions"]["supprimer"] = NULL;
76                $this->actions_sup["finalisation"] = NULL;
77          }          }
78          // Si une action 'lu' est présente et que le champ lu est à true          // Si une action 'lu' est présente et que le champ lu est à true
79          // on supprime l'action          // on supprime l'action
# Line 105  class instruction extends instruction_ge Line 89  class instruction extends instruction_ge
89          if ( isset($this->actions_sup["finalisation"]) &&          if ( isset($this->actions_sup["finalisation"]) &&
90              $om_final_instruction== "t" ){              $om_final_instruction== "t" ){
91                                    
92                //On cache les liens d'action
93                $this->parameters["actions"]["modifier"] = NULL;
94                $this->parameters["actions"]["supprimer"] = NULL;
95              //On cache le lien de finalisation et on affiche le bon lien pour l'édition              //On cache le lien de finalisation et on affiche le bon lien pour l'édition
96              unset($this->actions_sup["finalisation"]);              $this->actions_sup["finalisation"] = NULL;
97              $this->actions_sup["pdfetat"]["lien"] = "../spg/file.php?id=";              $this->actions_sup["pdfetat"]["lien"] = "../spg/file.php?id=";
98              $this->actions_sup["pdfetat"]["id"] =              $this->actions_sup["pdfetat"]["id"] =
99                  "&obj=instruction&champ=om_fichier_instruction";                  "&obj=instruction&champ=om_fichier_instruction";
# Line 117  class instruction extends instruction_ge Line 104  class instruction extends instruction_ge
104              $om_final_instruction!= "t" ){              $om_final_instruction!= "t" ){
105                                    
106              //On cache le lien de finalisation et on affiche le bon lien pour l'édition              //On cache le lien de finalisation et on affiche le bon lien pour l'édition
107              unset($this->actions_sup["definalisation"]);              $this->actions_sup["definalisation"] = NULL;
108              $this->actions_sup["pdfetat"]["lien"] = "../app/pdf_instruction.php?idx=";              $this->actions_sup["pdfetat"]["lien"] = "../app/pdf_instruction.php?idx=";
109              $this->actions_sup["pdfetat"]["id"] = "";              $this->actions_sup["pdfetat"]["id"] = "";
110          }          }
111            
112            $idxformulaire = $this->getParameter("idxformulaire");
113            $retourformulaire = $this->getParameter("retourformulaire");
114            //Si le dossier d'instruction auquel est rattachée l'instruction est cloturé,
115            //on affiche pas les liens du portlet
116            if ( $idxformulaire != '' &&
117                (
118                    $retourformulaire == 'dossier' ||
119                    $retourformulaire == 'dossier_instruction' ||
120                    $retourformulaire == 'dossier_instruction_mes_encours' ||
121                    $retourformulaire == 'dossier_instruction_tous_encours' ||
122                    $retourformulaire == 'dossier_instruction_mes_clotures' ||
123                    $retourformulaire == 'dossier_instruction_tous_clotures'
124                )){
125    
126                //On récuppère le statut du dossier d'instruction        
127                $statut = $this->getStatutAutorisationDossier($idxformulaire);
128                if ( $this->f->isUserInstructeur() && $statut == "cloture" ){
129                    
130                    //On cache le lien de modification
131                    $this->parameters["actions"]["modifier"] = NULL;
132                    $this->actions_sup["finalisation"] = NULL;
133                    $this->actions_sup["definalisation"] = NULL;
134                }
135            }
136      }      }
137    
138      /**      /**
# Line 137  class instruction extends instruction_ge Line 149  class instruction extends instruction_ge
149              $this->addToLog("canAccess(): utilisateur instructeur sur un dossier d'une autre division", EXTRA_VERBOSE_MODE);              $this->addToLog("canAccess(): utilisateur instructeur sur un dossier d'une autre division", EXTRA_VERBOSE_MODE);
150              return false;              return false;
151          }          }
152    
153            $retourformulaire = $this->getParameter("retourformulaire");
154            // Si l'utilisateur est un instructeur et que le dossier est cloturé
155            if ( $this->f->isUserInstructeur() &&
156                $this->getStatutAutorisationDossier($this->getParameter("idxformulaire")) == "cloture" &&
157                (
158                    $retourformulaire == 'dossier' ||
159                    $retourformulaire == 'dossier_instruction' ||
160                    $retourformulaire == 'dossier_instruction_mes_encours' ||
161                    $retourformulaire == 'dossier_instruction_tous_encours' ||
162                    $retourformulaire == 'dossier_instruction_mes_clotures' ||
163                    $retourformulaire == 'dossier_instruction_tous_clotures'
164                )
165                && $this->getParameter("maj") != 3 && $this->getParameter("maj") != 0 ) {
166                
167                return false;
168            }
169          //          //
170          return true;          return true;
171      }      }
# Line 202  class instruction extends instruction_ge Line 231  class instruction extends instruction_ge
231      /**      /**
232       * Cette méthode permet de récupérer le dossier d'autorisation d'un dossier       * Cette méthode permet de récupérer le dossier d'autorisation d'un dossier
233       */       */
234      function getDossierAutorisationFromDossier($id) {      function getNumDemandeAutorFromDossier($id) {
235          //          //
236          if (!isset($id)) {          if (!isset($id)) {
237              return NULL;              return NULL;
# Line 212  class instruction extends instruction_ge Line 241  class instruction extends instruction_ge
241          $sql .= " where dossier='".$id."'";          $sql .= " where dossier='".$id."'";
242          //          //
243          $dossier_autorisation = $this->db->getOne($sql);          $dossier_autorisation = $this->db->getOne($sql);
244          $this->addToLog("getDossierAutorisationFromDossier(): db->getone(\"".$sql."\")", VERBOSE_MODE);          $this->addToLog("getNumDemandeAutorFromDossier(): db->getone(\"".$sql."\")", VERBOSE_MODE);
245          database::isError($dossier_autorisation);          database::isError($dossier_autorisation);
246          //          //
247          return $dossier_autorisation;          return $dossier_autorisation;
# Line 258  class instruction extends instruction_ge Line 287  class instruction extends instruction_ge
287          $form->setType('action', 'hidden');          $form->setType('action', 'hidden');
288          $form->setType('delai_notification', 'hidden');          $form->setType('delai_notification', 'hidden');
289          $form->setType('avis_decision', 'hidden');          $form->setType('avis_decision', 'hidden');
290            $form->setType('autorite_competente', 'hidden');
291          //          //
292          $form->setType('archive_delai', 'hidden');          $form->setType('archive_delai', 'hidden');
293          $form->setType('archive_etat', 'hidden');          $form->setType('archive_etat', 'hidden');
# Line 272  class instruction extends instruction_ge Line 302  class instruction extends instruction_ge
302          $form->setType('archive_date_validite', 'hidden');          $form->setType('archive_date_validite', 'hidden');
303          $form->setType('archive_date_achevement', 'hidden');          $form->setType('archive_date_achevement', 'hidden');
304          $form->setType('archive_date_conformite', 'hidden');          $form->setType('archive_date_conformite', 'hidden');
305          $form->setType('archive_date_chantier', 'hidden');            $form->setType('archive_date_chantier', 'hidden');
306            $form->setType('archive_autorite_competente','hidden');
307          //          //
308          $form->setType('numero_arrete', 'hidden');          $form->setType('numero_arrete', 'hidden');
309          //          //
# Line 285  class instruction extends instruction_ge Line 316  class instruction extends instruction_ge
316          $form->setType('archive_etat_pendant_incompletude','hidden');          $form->setType('archive_etat_pendant_incompletude','hidden');
317          $form->setType('archive_date_limite_incompletude','hidden');          $form->setType('archive_date_limite_incompletude','hidden');
318          $form->setType('archive_delai_incompletude','hidden');          $form->setType('archive_delai_incompletude','hidden');
319    
320            //
321            $form->setType('duree_validite','hidden');
322            $form->setType('duree_validite_parametrage','hidden');
323          if ($maj < 2) { //ajouter et modifier          if ($maj < 2) { //ajouter et modifier
324              $form->setType('destinataire', 'hidden');              $form->setType('destinataire', 'hidden');
325              $form->setType('lettretype', 'hiddenstatic');              $form->setType('lettretype', 'hiddenstatic');
# Line 302  class instruction extends instruction_ge Line 337  class instruction extends instruction_ge
337              $form->setType('date_retour_rar','datedisabled');              $form->setType('date_retour_rar','datedisabled');
338              $form->setType('date_envoi_controle_legalite','datedisabled');              $form->setType('date_envoi_controle_legalite','datedisabled');
339              $form->setType('date_retour_controle_legalite','datedisabled');              $form->setType('date_retour_controle_legalite','datedisabled');
340                $form->setType('date_finalisation_courrier','datedisabled');
341    
342                // l'administrateur peut modifier les champs de retour de date
343                if ($this->f->user_is_admin == true) {
344                    $form->setType('date_retour_signature','date');
345                    $form->setType('date_retour_rar','date');
346                    $form->setType('date_retour_controle_legalite','date');
347                }
348    
349              if($maj==0){ // add              if($maj==0){ // add
350                  $form->setType('instruction', 'hiddenstatic');                  $form->setType('instruction', 'hiddenstatic');
351                  $form->setType('evenement', 'select');                  $form->setType('evenement', 'select');
# Line 331  class instruction extends instruction_ge Line 375  class instruction extends instruction_ge
375          $form->setType('om_fichier_instruction', 'hidden');          $form->setType('om_fichier_instruction', 'hidden');
376          $form->setType('om_final_instruction', 'hidden');          $form->setType('om_final_instruction', 'hidden');
377          // Cache le document arrêté          // Cache le document arrêté
378          $form->setType('document_arrete', 'hidden');          $form->setType('document_numerise', 'hidden');
379            
380            //Masquer les champs date_envoi_controle_legalite et
381            //date_retour_controle_legalite si ce n'est pas un arrêté
382            if ( !is_numeric($this->getVal("avis_decision"))){
383                
384                $form->setType("date_envoi_controle_legalite", "hidden");
385                $form->setType("date_retour_controle_legalite", "hidden");
386            }
387      }      }
388    
389      function setSelect(&$form, $maj,&$db,$debug) {      function setSelect(&$form, $maj,&$db,$debug) {
# Line 384  class instruction extends instruction_ge Line 436  class instruction extends instruction_ge
436              // du dossier d'instruction en cours              // du dossier d'instruction en cours
437              $sql = "SELECT              $sql = "SELECT
438              evenement.evenement,              evenement.evenement,
439              (evenement.libelle||' ['||evenement.action||']') as lib              CONCAT(evenement.libelle, ' ['||evenement.action||']') as lib
440              FROM ".DB_PREFIXE."dossier              FROM ".DB_PREFIXE."dossier
441              INNER JOIN ".DB_PREFIXE."lien_dossier_instruction_type_evenement              INNER JOIN ".DB_PREFIXE."lien_dossier_instruction_type_evenement
442                  ON dossier.dossier_instruction_type=lien_dossier_instruction_type_evenement.dossier_instruction_type                  ON dossier.dossier_instruction_type=lien_dossier_instruction_type_evenement.dossier_instruction_type
# Line 412  class instruction extends instruction_ge Line 464  class instruction extends instruction_ge
464              $form->setSelect("evenement", $contenu);              $form->setSelect("evenement", $contenu);
465          } else {          } else {
466              $sql = "SELECT              $sql = "SELECT
467              (evenement.libelle||' ['||evenement.action||']') as lib              CONCAT(evenement.libelle, ' ['||evenement.action||']') as lib
468              FROM ".DB_PREFIXE."evenement              FROM ".DB_PREFIXE."evenement
469              WHERE evenement.evenement=".$this->getVal("evenement")."";              WHERE evenement.evenement=".$this->getVal("evenement")."";
470              $res = $db->getone($sql);              $res = $db->getone($sql);
# Line 445  class instruction extends instruction_ge Line 497  class instruction extends instruction_ge
497      function cleSecondaire($id, &$db, $val, $DEBUG) {      function cleSecondaire($id, &$db, $val, $DEBUG) {
498          //          //
499          parent::cleSecondaire($id, $db, $val, $DEBUG);          parent::cleSecondaire($id, $db, $val, $DEBUG);
500            
501            $id = $this->getVal($this->clePrimaire);
502    
503          /**          
504           * Vérification que l'élément supprimé est le dernier pour pouvoir          //Requête de vérification que cette événement d'instruction n'est pas lié
505           * remodifier les données de manière itérative.          //à la création d'un dossier d'instruction
506           */          $sql = "SELECT demande_type.dossier_instruction_type
507          // Initialisation              FROM ".DB_PREFIXE."demande_type
508          $dernierevenement = "";              LEFT JOIN ".DB_PREFIXE."demande
509          // Récupération du dernier élément de la table d'instruction qui              ON demande.demande_type = demande_type.demande_type
510          // concerne le dossier en cours              WHERE demande.instruction_recepisse = ".$id;
511          $sql = "SELECT max(instruction)          $res = $this->db->getOne($sql);
512          FROM ".DB_PREFIXE."instruction          $this->addToLog("cleSecondaire(): db->getone(\"".$sql."\");", VERBOSE_MODE);
513          WHERE dossier ='".$this->idxformulaire."'";          if (database::isError($res)) {
514          $dernierevenement = $db->getOne($sql);              die($res->getMessage());
515          $this->addToLog("setSelect(): db->getone(\"".$sql."\");", VERBOSE_MODE);          }
516          if (database::isError($dernierevenement)) {  
517              die($dernierevenement->getMessage());          // Aucune clé secondaire n'a été trouvée ou c'est un événement sans
518          }          //création de dossier d'instruction, l'événement d'instruction peut être
519          // Si on se trouve effectivement sur le dernier evenement d'instruction          //supprimé
520          if ($dernierevenement == $id) {          if ( $this->correct !== false || $res == null || $res == ""){
521              // Alors on valide la suppression  
522              $this->correct = true;              //Si c'est un événement d'instruction lié à une demande
523              $this->addToMessage(_('Destruction_chronologique'));              if ($res == null || $res == ""){
524          } else {                  
525              // Alors on annule la suppression                  //On récupère l'identifiant de la demande liée
526              $this->correct = false;                  $sql = "SELECT demande
527              $this->addToMessage(_("Seul le dernier evenement d'instruction peut etre supprime."));                      FROM ".DB_PREFIXE."demande
528                        WHERE instruction_recepisse = ".$id;
529                    $res = $this->db->getOne($sql);
530                    $this->addToLog("cleSecondaire(): db->getone(\"".$sql."\");", VERBOSE_MODE);
531                    if (database::isError($res)) {
532                        die($res->getMessage());
533                    }
534    
535                    require_once "../obj/demande.class.php";
536                    $demande = new demande($res, $this->db, DEBUG);
537    
538                    //On met à jour la demande en supprimant la liaison vers
539                    //l'événement d'instruction
540                    $demande->setParameter("maj", 1);
541                    $valF = array();
542                    foreach($demande->champs as $identifiant => $champ) {
543                        $valF[$champ] = $demande->val[$identifiant];
544                    }
545                    $valF['date_demande']=$demande->dateDBToForm($valF['date_demande']);
546                    $valF['instruction_recepisse']=NULL;
547                    $ret = $demande->modifier($valF, $this->db, DEBUG);
548                }
549                    
550                /**
551                 * Vérification que l'élément supprimé est le dernier pour pouvoir
552                 * remodifier les données de manière itérative.
553                 */
554                // Initialisation
555                $dernierevenement = "";
556                // Récupération du dernier élément de la table d'instruction qui
557                // concerne le dossier en cours
558                $sql = "SELECT max(instruction)
559                FROM ".DB_PREFIXE."instruction
560                WHERE dossier ='".$this->idxformulaire."'";
561                $dernierevenement = $db->getOne($sql);
562                $this->addToLog("setSelect(): db->getone(\"".$sql."\");", VERBOSE_MODE);
563                if (database::isError($dernierevenement)) {
564                    die($dernierevenement->getMessage());
565                }
566                // Si on se trouve effectivement sur le dernier evenement d'instruction
567                if ($dernierevenement == $id) {
568                    // Alors on valide la suppression
569                    $this->correct = true;
570                    $this->addToMessage(_('Destruction_chronologique'));
571                } else {
572                    // Alors on annule la suppression
573                    $this->correct = false;
574                    $this->addToMessage(_("Seul le dernier evenement d'instruction peut etre supprime."));
575                }
576          }          }
577      }      }
578    
579      // Vérification de la non modification des dates de suivi      /**
580         * Vérification de la possibilité ou non de modifier des dates de suivi
581         * @param  string $champ champ date à vérifier
582         */
583      function updateDate($champ) {      function updateDate($champ) {
584          if($this->valF[$champ] != "") {          
585              if($this->getVal($champ) != "" AND $this->getVal($champ) != $this->valF[$champ]) {          //Si le retourformulaire est "dossier_instruction"
586                  $this->correct = false;          if ($this->retourformulaire == "dossier_instruction") {
587                  $this->addToMessage(_("Les dates de suivis ne peuvent etre modifiees"));  
588                // Vérification de la possibilité de modifier les dates si déjà éditées
589                if($this->valF[$champ] != "" AND !$this->f->user_is_admin) {
590                    // si l'utilisateur n'est pas un admin
591                    if($this->getVal($champ) != "" AND $this->getVal($champ) != $this->valF[$champ]) {
592                        $this->correct = false;
593                        $this->addToMessage(_("Les dates de suivis ne peuvent etre modifiees"));
594                    }
595              }              }
596          }          }
597            
598            //
599            return true;
600      }      }
601    
602      // Sélectionne le signataire_arrete par défaut      // Sélectionne le signataire_arrete par défaut
# Line 497  class instruction extends instruction_ge Line 612  class instruction extends instruction_ge
612                            
613              // Exécution de la requête              // Exécution de la requête
614              $res = $this->f->db->query($sql);              $res = $this->f->db->query($sql);
615              $this->f->addToLog("deleteAllLienDossierInstructionTypeEvenementEvenement(): db->query(\"".$sql."\");", VERBOSE_MODE);              $this->f->addToLog("setVal(): db->query(\"".$sql."\");", VERBOSE_MODE);
616              if ( database::isError($res)){              if ( database::isError($res)){
617                  die();                  die();
618              }              }
# Line 583  class instruction extends instruction_ge Line 698  class instruction extends instruction_ge
698           * - avis_decision           * - avis_decision
699           * - delai_notification           * - delai_notification
700           * - lettretype           * - lettretype
701             * - autorite_competente
702           * DEPUIS LE DOSSIER D'INSTRUCTION           * DEPUIS LE DOSSIER D'INSTRUCTION
703           * - archive_delai           * - archive_delai
704           * - archive_accord_tacite           * - archive_accord_tacite
# Line 597  class instruction extends instruction_ge Line 713  class instruction extends instruction_ge
713           * - date_achevement           * - date_achevement
714           * - date_chantier           * - date_chantier
715           * - date_conformite           * - date_conformite
716             * - avis_decision
717           * Il permet également de stocker la date_depot du dossier d'instruction           * Il permet également de stocker la date_depot du dossier d'instruction
718           * dans l'attribut $this->archive_date_depot de la classe.           * dans l'attribut $this->archive_date_depot de la classe.
719           */           */
# Line 633  class instruction extends instruction_ge Line 750  class instruction extends instruction_ge
750              if(isset($row['avis_decision']) and !empty($row['avis_decision'])) {              if(isset($row['avis_decision']) and !empty($row['avis_decision'])) {
751                  $this->valF['avis_decision']=$row['avis_decision'];                  $this->valF['avis_decision']=$row['avis_decision'];
752              }              }
753                // Récupération de la valeur de l'autorité compétente
754                // si l'autorité compétente est paramétré dans l'événement
755                $this->valF['autorite_competente'] = NULL;
756                if(isset($row['autorite_competente']) and !empty($row['autorite_competente'])) {
757                    $this->valF['autorite_competente']=$row['autorite_competente'];
758                }
759              // Récupération de la valeur de la lettre type              // Récupération de la valeur de la lettre type
760              // Sinon on lui affecte lavaleur par défaut standard              // Sinon on lui affecte lavaleur par défaut standard
761              if ($row['lettretype'] != "") {              if ($row['lettretype'] != "") {
# Line 709  class instruction extends instruction_ge Line 832  class instruction extends instruction_ge
832              if ($row['delai_incompletude']!='') {              if ($row['delai_incompletude']!='') {
833                  $this->valF['archive_delai_incompletude']= $row['delai_incompletude'];                    $this->valF['archive_delai_incompletude']= $row['delai_incompletude'];  
834              }              }
835                if ($row['autorite_competente']!='') {
836                    $this->valF['archive_autorite_competente']= $row['autorite_competente'];  
837                }
838                if ($row['duree_validite']!='') {
839                    $this->valF['duree_validite']= $row['duree_validite'];  
840                }
841            }
842            // Récupération de la duree de validite du dossier d'autorisation
843            $sql = "SELECT duree_validite_parametrage
844                    FROM ".DB_PREFIXE."dossier_autorisation_type_detaille
845                    LEFT JOIN ".DB_PREFIXE."dossier_autorisation
846                        ON dossier_autorisation.dossier_autorisation_type_detaille = dossier_autorisation_type_detaille.dossier_autorisation_type_detaille
847                    LEFT JOIN ".DB_PREFIXE."dossier
848                        ON dossier.dossier_autorisation = dossier_autorisation.dossier_autorisation
849            WHERE dossier.dossier='".$this->valF['dossier']."'";
850            $duree_validite_parametrage = $db->getOne($sql);
851            $this->addToLog("triggerajouter(): db->getOne(\"".$sql."\");", VERBOSE_MODE);
852            database::isError($duree_validite_parametrage);
853            if ($duree_validite_parametrage != '') {
854                $this->valF['duree_validite_parametrage']= $duree_validite_parametrage;
855          }          }
856    
857          // Identifiant du type de courrier          // Identifiant du type de courrier
# Line 721  class instruction extends instruction_ge Line 864  class instruction extends instruction_ge
864      // Test si une restriction est valide      // Test si une restriction est valide
865      // return boolean      // return boolean
866      function restrictionIsValid($restriction){      function restrictionIsValid($restriction){
867    
868            // Liste des opérateurs possible
869            $operateurs = array(">=", "<=", "+", "-");
870            // Liste des opérateurs avec espace
871            $operateurs_blank = array(" >= ", " <= ", " + ", " - ");
872    
873            // Supprime tous les espaces de la chaîne de caractère
874            $restriction = str_replace(' ', '', $restriction);
875                    
876          /* Met des espace avant et après les opérateurs puis transforme la chaine en          // Met des espace avant et après les opérateurs puis transforme la
877           * un tableau */          // chaine en un tableau
878          $tabRestriction = str_replace(">="," >= ",          $tabRestriction = str_replace($operateurs, $operateurs_blank,
879                            str_replace("<="," <= ",              $restriction);
880                            str_replace("-"," - ",          $tabRestriction = explode(" ", $tabRestriction);
881                            str_replace("+"," + ",$restriction))));  
882          $tabRestriction = explode( " ", $tabRestriction);          // Tableau comprenant les résultat
           
         //Variables de résultat  
883          $res = array();          $res = array();
884          $i = 0;          // Compteur pour les résultat
885          $comp = "";          // commence à 1 car le 0 doit rester inchangé tout au long du traitement
886                    $j = 1;
887                    // Comparateur du calcul
888          //Test que le tableau n'est pas vide          $comparateur = '';
889          if ( count($tabRestriction) > 0 ){          // Booléen retourné
890                        $res_bool = true;
891              $res[0] = $this->getRestrictionValue($tabRestriction[0]);  
892                        // Si le tableau n'est pas vide
893              //Calcul des variables          if (count($tabRestriction) > 0) {
894              for ( $j = 1 ; $j < count($tabRestriction) ; $j += 2 ) {  
895                // Boucle dans le tableau pour récupérer seulement les valeurs
896                foreach ($tabRestriction as $key => $value) {
897                                    
898                  //Variable de comparaison                  //
899                  if ( strcmp( ">=", $tabRestriction[$j] ) == 0 ||                  if (!in_array($value, $operateurs)) {
900                       strcmp( "<=", $tabRestriction[$j]) ==0 ){                      if ($this->getRestrictionValue($value) != false) {
901                                                $res[] = $this->getRestrictionValue($value);
902                      $comp = $tabRestriction[$j];                      } else {
903                      $res[++$i] = $this->getRestrictionValue($tabRestriction[$j+1]);                          return false;
904                  }                      }
                 // Fait l'addition  
                 elseif ( strcmp( "+", $tabRestriction[$j]) == 0 ){  
                       
                    $res[$i] =  $this->moisdate( $res[$i], $this->getRestrictionValue($tabRestriction[$j+1]) );  
905                  }                  }
906              }              }
907          }  
908                                // Boucle dans le tableau
909          // Effectue le test              // commence à 1 car le 0 doit rester inchangé tout au long du
910          if ( strcmp($comp, ">=") == 0 ){              // traitement
911                            for ($i = 1; $i<count($tabRestriction); $i++) {
             if ( $res[0] >= $res[1] || $res[0] == "" ){  
                   
                 return true;  
             }  
             else {  
912                                    
913                  return false;                  // Récupère le comparateur
914                    if ($tabRestriction[$i] === ">="
915                        || $tabRestriction[$i] === "<=") {
916                        $comparateur = $tabRestriction[$i];
917                    }
918    
919                    // Si l'opérateur qui suit est un "+"
920                    if ($tabRestriction[$i] === "+") {
921                        $dateDep = strtotime($res[$j]);
922                        unset($res[$j]);$j++;
923                        $duree = $res[$j];
924                        unset($res[$j]);
925                        $res[$j] = date('Y-m-d',
926                            strtotime('+'.$duree.' month', $dateDep));
927                    }
928    
929                    // Si l'opérateur qui suit est un "-"
930                    if ($tabRestriction[$i] === "-") {
931                        $dateDep = strtotime($res[$j]);
932                        unset($res[$j]);$j++;
933                        $duree = $res[$j];
934                        unset($res[$j]);
935                        $res[$j] = date('Y-m-d',
936                            strtotime('-'.$duree.' month', $dateDep));
937                    }
938              }              }
939                
940          }          }
         elseif ( strcmp($comp, "<=") == 0 ){  
   
             if ( $res[0] <= $res[1] || $res[1] == "" ){  
941    
942                  return true;          // Si les tableau des résultats n'est pas vide
943            if (count($res) > 0) {
944                //
945                $res_bool = false;
946                // Effectue le test
947                if ($comparateur === ">=") {
948                    //
949                    if (strtotime($res[0]) >= strtotime($res[$j])) {
950                        $res_bool = true;
951                    }
952              }              }
953              else {              if ($comparateur === "<=") {
954    
955                  return false;                  if (strtotime($res[0]) <= strtotime($res[$j])) {
956                        $res_bool = true;
957                    }
958              }              }
959          }          }
960                    
961          return true;          return $res_bool;
962    
963      }      }
964        
965      //Retourne la valeur de valF si $restrictionValue n'est pas un chiffre, le chiffre sinon      /**
966         * Récupère la valeur du champ dans la restriction
967         * @param  string   $restrictionValue   Nom du champ
968         * @return mixed                        Valeur du champ
969         */
970      function getRestrictionValue($restrictionValue){      function getRestrictionValue($restrictionValue){
971            
972          return ( is_numeric($restrictionValue) ) ?          // Initialisation de la valeur de retour
973              $restrictionValue :          $return = false;
974              $this->valF[$restrictionValue];  
975            // Récupére les valeurs du dossier
976            $value_dossier = $this->get_dossier_actual();
977    
978            //
979            if (is_numeric($restrictionValue)) {
980                $return = $restrictionValue;
981            }elseif (isset($value_dossier[$restrictionValue])) {
982                $return = $value_dossier[$restrictionValue];
983            }elseif (isset($this->valF[$restrictionValue])) {
984                $return = $this->valF[$restrictionValue];
985            }
986    
987            // Retourne la valeur du champ
988            return $return;
989      }      }
990            
991      function regle($regle){      function regle($regle){
992            // Supprime tous les espaces de la chaîne de caractère
993            $regle = str_replace(' ', '', $regle);
994            // Coupe la chaîne au niveau des "+"
995          $temp = explode ("+",$regle);          $temp = explode ("+",$regle);
996          //echo '|'.$regle;          //echo '|'.$regle;
997          // cas rejet          // cas rejet
# Line 929  class instruction extends instruction_ge Line 1126  class instruction extends instruction_ge
1126              if($row['regle_delai_incompletude']!=''){              if($row['regle_delai_incompletude']!=''){
1127                  $valF['delai_incompletude']= $this->regle($row['regle_delai_incompletude']);                  $valF['delai_incompletude']= $this->regle($row['regle_delai_incompletude']);
1128              }              }
1129                if($row['regle_autorite_competente']!=''){
1130                    $valF['autorite_competente']= $this->regle($row['regle_autorite_competente']);
1131                }
1132              if($row['regle_etat']!=''){              if($row['regle_etat']!=''){
1133                  // Si on est dans le cas général ou qu'on est en incomplétude et                  // Si on est dans le cas général ou qu'on est en incomplétude et
1134                  // qu'on a un événement de type incomplétude alors : on stocke                  // qu'on a un événement de type incomplétude alors : on stocke
# Line 939  class instruction extends instruction_ge Line 1139  class instruction extends instruction_ge
1139                      $valF['etat_pendant_incompletude'] = $this->regle($row['regle_etat']);                      $valF['etat_pendant_incompletude'] = $this->regle($row['regle_etat']);
1140                  }                  }
1141              }              }
   
1142              if($this->valEvenement['evenement_suivant_tacite'] != '') {              if($this->valEvenement['evenement_suivant_tacite'] != '') {
1143                  // Si on est pas en incomplétude on stocke l'événement tacite                  // Si on est pas en incomplétude on stocke l'événement tacite
1144                  //de l'événement dans la variable courante                  //de l'événement dans la variable courante
# Line 1012  class instruction extends instruction_ge Line 1211  class instruction extends instruction_ge
1211    
1212          // Mise à jour des données du dossier d'autorisation          // Mise à jour des données du dossier d'autorisation
1213          require_once "../obj/dossier_autorisation.class.php";          require_once "../obj/dossier_autorisation.class.php";
1214          $da = new dossier_autorisation($this->getDossierAutorisationFromDossier($this->valF['dossier']), $this->db, DEBUG);          $da = new dossier_autorisation($this->getNumDemandeAutorFromDossier($this->valF['dossier']), $this->db, DEBUG);
1215          $da->majDossierAutorisation();          $da->majDossierAutorisation();
           
         // Finalisation du document  
         $this->finaliserAjouter();  
1216      }          }    
1217      function triggermodifier($id,&$db,$val,$DEBUG) {  
         // Ajout de l'arrêté dans la GED  
         if ($this->valF['numero_arrete'] != $this->getVal('numero_arrete')  
             AND $this->valF["om_fichier_instruction"] != "") {  
             $file = $this->f->storage->get($this->valF["om_fichier_instruction"]);  
             if(isset($file) and $file != null) {  
                 // Récupération des métadonnées calculées après validation  
                 $spe_metadata = $this->getMetadata("document_arrete");  
                 $pdf_output = $file["file_content"];  
                 //Métadonnées du document  
                 $metadata = array(  
                     'filename' => 'instruction_'.$this->valF[$this->clePrimaire].'.pdf',  
                     'mimetype' => 'application/pdf',  
                     'size' => strlen($pdf_output)  
                 );  
                 $metadata = array_merge($metadata, $spe_metadata);  
                   
                 //Si le document a déjà été finalisé  
                 //on met à jour le document mais pas son uid  
                 if ( $this->getVal("document_arrete") != '' ){  
                     $uid = $this->f->storage->update(  
                         $this->getVal("document_arrete"), $pdf_output, $metadata);  
                 }  
                 //Sinon, on joute le document et on récupère son uid  
                 else {  
                     //Stockage du PDF  
                     $uid = $this->f->storage->create($pdf_output, $metadata);  
                 }  
                 if($uid != OP_FAILURE) {  
                     $this->valF["document_arrete"] = $uid;  
                 }  
             }  
               
         }  
     }  
1218      function triggermodifierapres($id,&$db,$val,$DEBUG) {      function triggermodifierapres($id,&$db,$val,$DEBUG) {
1219          /**          /**
1220           * L'objectif ici est d'effectuer les recalculs de date dans le dossier           * L'objectif ici est d'effectuer les recalculs de date dans le dossier
# Line 1060  class instruction extends instruction_ge Line 1222  class instruction extends instruction_ge
1222           */           */
1223          // Initialisation          // Initialisation
1224          $valF = "";          $valF = "";
1225            // Initialisation du type d'événement
1226            $type_evmt = "";
1227          // Récupération de l'action correspondante à l'événement          // Récupération de l'action correspondante à l'événement
1228          $sql = "SELECT action          $sql = "SELECT action
1229          FROM ".DB_PREFIXE."evenement          FROM ".DB_PREFIXE."evenement
# Line 1070  class instruction extends instruction_ge Line 1234  class instruction extends instruction_ge
1234              die($action->getMessage());              die($action->getMessage());
1235          }          }
1236    
         // Récupération de tous les paramètres de l'événement sélectionné  
         $sql = "SELECT * FROM ".DB_PREFIXE."evenement  
         WHERE evenement=".$this->valF['evenement'];  
         $res = $db->query($sql);  
         $this->addToLog("triggerajouter(): db->query(\"".$sql."\");", VERBOSE_MODE);  
         if (database::isError($res)) {  
             die($res->getMessage());  
         }  
         while ($row=& $res->fetchRow(DB_FETCHMODE_ASSOC)) {  
             // Si la date de retour signature est éditée on vérifie si il existe un événement automatique  
             if ($this->getVal('date_retour_signature') == "" AND  
                 $this->valF['date_retour_signature'] != "" AND  
                 $row['evenement_retour_signature'] != "") {  
                 $new_instruction = new instruction("]", $db, $DEBUG);  
                 // Création d'un tableau avec la liste des champs de l'instruction  
                 foreach($new_instruction->champs as $champ) {  
                     $valNewInstr[$champ] = "";  
                 }  
                 // Définition des valeurs de la nouvelle instruction  
                 $valNewInstr["evenement"] = $row['evenement_retour_signature'];  
                 $valNewInstr["destinataire"] = $this->valF['destinataire'];  
                 $valNewInstr["dossier"] = $this->valF['dossier'];  
                 $valNewInstr["date_evenement"] = date("d/m/Y");  
                 $new_instruction->ajouter($valNewInstr,$db, $DEBUG);  
             }  
             // Si la date de retour AR est éditée on vérifie si il existe un événement automatique  
             if ($this->getVal('date_retour_rar') == "" AND  
                 $this->valF['date_retour_rar'] != "" AND  
                 $row['evenement_retour_ar'] != "" ) {  
                 $new_instruction = new instruction("]", $db, $DEBUG);  
                 // Création d'un tableau avec la liste des champs de l'instruction  
                 foreach($new_instruction->champs as $champ) {  
                     $valNewInstr[$champ] = "";  
                 }  
                 // Définition des valeurs de la nouvelle instruction  
                 $valNewInstr["evenement"] = $row['evenement_retour_ar'];  
                 $valNewInstr["destinataire"] = $this->valF['destinataire'];  
                 $valNewInstr["dossier"] = $this->valF['dossier'];  
                 $valNewInstr["date_evenement"] = date("d/m/Y");  
                 $new_instruction->ajouter($valNewInstr,$db, $DEBUG);  
             }  
         }  
   
1237          // Récupération des paramètres de l'action          // Récupération des paramètres de l'action
1238          $sql = "SELECT * FROM ".DB_PREFIXE."action          $sql = "SELECT * FROM ".DB_PREFIXE."action
1239          WHERE action='".$action."'";          WHERE action='".$action."'";
# Line 1159  class instruction extends instruction_ge Line 1280  class instruction extends instruction_ge
1280              // On met à jour le dossier              // On met à jour le dossier
1281              $cle = " dossier='".$this->valF['dossier']."'";              $cle = " dossier='".$this->valF['dossier']."'";
1282              $res1 = $db->autoExecute(DB_PREFIXE.'dossier', $valF, DB_AUTOQUERY_UPDATE, $cle);              $res1 = $db->autoExecute(DB_PREFIXE.'dossier', $valF, DB_AUTOQUERY_UPDATE, $cle);
1283              $this->addToLog("triggerajouterapres(): db->autoexecute(\"".DB_PREFIXE."dossier\", ".print_r($valF, true).", DB_AUTOQUERY_UPDATE, \"".$cle."\");", VERBOSE_MODE);              $this->addToLog("triggermodifierapres(): db->autoexecute(\"".DB_PREFIXE."dossier\", ".print_r($valF, true).", DB_AUTOQUERY_UPDATE, \"".$cle."\");", VERBOSE_MODE);
1284              if (database::isError($res1)) {              if (database::isError($res1)) {
1285                  die($res->getMessage());                  die($res->getMessage());
1286              }              }
# Line 1167  class instruction extends instruction_ge Line 1288  class instruction extends instruction_ge
1288              $this->addToMessage(_('enregistrement')." ".$this->valF['dossier']." "._('table')." dossier [".$db->affectedRows()." "._('enregistrement')." "._('mis_a_jour')."]");              $this->addToMessage(_('enregistrement')." ".$this->valF['dossier']." "._('table')." dossier [".$db->affectedRows()." "._('enregistrement')." "._('mis_a_jour')."]");
1289          }          }
1290    
1291            // Récupération de tous les paramètres de l'événement sélectionné
1292            $sql = "SELECT * FROM ".DB_PREFIXE."evenement
1293            WHERE evenement=".$this->valF['evenement'];
1294            $res = $db->query($sql);
1295            $this->addToLog("triggermodifierapres(): db->query(\"".$sql."\");", VERBOSE_MODE);
1296            if (database::isError($res)) {
1297                die($res->getMessage());
1298            }
1299            while ($row=& $res->fetchRow(DB_FETCHMODE_ASSOC)) {
1300                // Si la date de retour signature est éditée on vérifie si il existe un événement automatique
1301                if ($this->getVal('date_retour_signature') == "" AND
1302                    $this->valF['date_retour_signature'] != "" AND
1303                    $row['evenement_retour_signature'] != "") {
1304                    $new_instruction = new instruction("]", $db, $DEBUG);
1305                    // Création d'un tableau avec la liste des champs de l'instruction
1306                    foreach($new_instruction->champs as $champ) {
1307                        $valNewInstr[$champ] = "";
1308                    }
1309                    // Définition des valeurs de la nouvelle instruction
1310                    $valNewInstr["evenement"] = $row['evenement_retour_signature'];
1311                    $valNewInstr["destinataire"] = $this->valF['destinataire'];
1312                    $valNewInstr["dossier"] = $this->valF['dossier'];
1313                    $valNewInstr["date_evenement"] = date("d/m/Y");
1314                    $valNewInstr["date_envoi_signature"] = $this->f->formatDate($this->valF['date_envoi_signature']);
1315                    $valNewInstr["date_retour_signature"] = $this->f->formatDate($this->valF['date_retour_signature']);
1316                    $valNewInstr["date_envoi_rar"] = $this->f->formatDate($this->valF['date_envoi_rar']);
1317                    $valNewInstr["date_retour_rar"] = $this->f->formatDate($this->valF['date_retour_rar']);
1318                    $valNewInstr["date_envoi_controle_legalite"] = $this->f->formatDate($this->valF['date_envoi_controle_legalite']);
1319                    $valNewInstr["date_retour_controle_legalite"] = $this->f->formatDate($this->valF['date_retour_controle_legalite']);
1320                    $new_instruction->ajouter($valNewInstr,$db, $DEBUG);
1321                }
1322                // Si la date de retour AR est éditée on vérifie si il existe un événement automatique
1323                if ($this->getVal('date_retour_rar') == "" AND
1324                    $this->valF['date_retour_rar'] != "" AND
1325                    $row['evenement_retour_ar'] != "" ) {
1326                    $new_instruction = new instruction("]", $db, $DEBUG);
1327                    // Création d'un tableau avec la liste des champs de l'instruction
1328                    foreach($new_instruction->champs as $champ) {
1329                        $valNewInstr[$champ] = "";
1330                    }
1331                    // Définition des valeurs de la nouvelle instruction
1332                    $valNewInstr["evenement"] = $row['evenement_retour_ar'];
1333                    $valNewInstr["destinataire"] = $this->valF['destinataire'];
1334                    $valNewInstr["dossier"] = $this->valF['dossier'];
1335                    $valNewInstr["date_evenement"] = date("d/m/Y");
1336                    $valNewInstr["date_envoi_signature"] = $this->f->formatDate($this->valF['date_envoi_signature']);
1337                    $valNewInstr["date_retour_signature"] = $this->f->formatDate($this->valF['date_retour_signature']);
1338                    $valNewInstr["date_envoi_rar"] = $this->f->formatDate($this->valF['date_envoi_rar']);
1339                    $valNewInstr["date_retour_rar"] = $this->f->formatDate($this->valF['date_retour_rar']);
1340                    $valNewInstr["date_envoi_controle_legalite"] = $this->f->formatDate($this->valF['date_envoi_controle_legalite']);
1341                    $valNewInstr["date_retour_controle_legalite"] = $this->f->formatDate($this->valF['date_retour_controle_legalite']);
1342                    $new_instruction->ajouter($valNewInstr,$db, $DEBUG);
1343                }
1344            }
1345    
1346          /**          /**
1347           * REFERENTIEL ARRETE           * REFERENTIEL ARRETE
1348           */           */
1349          if ($this->f->getParameter('option_referentiel_arrete') != "") {          // Si l'option référentiel arrêté est activé et l'événement est de type
1350            // arrêté
1351            if ($this->f->getParameter('option_referentiel_arrete') != "" AND
1352                $type_evmt == "arrete") {
1353              if ($this->valF['date_retour_signature'] != $this->getVal('date_retour_signature')) {              if ($this->valF['date_retour_signature'] != $this->getVal('date_retour_signature')) {
1354                  $msgenque = new MessageEnqueuer();                  $msgenque = new MessageEnqueuer();
1355                  $sqlArrete = "SELECT instruction.signataire_arrete as \"ws_DA_In_Signataire\",                  $sqlArrete = "SELECT instruction.signataire_arrete as \"ws_DA_In_Signataire\",
# Line 1183  class instruction extends instruction_ge Line 1362  class instruction extends instruction_ge
1362                                      '' as \"ws_DA_In_Sigle\",                                      '' as \"ws_DA_In_Sigle\",
1363                                      instruction.etat as \"ws_DA_In_Decision\",                                      instruction.etat as \"ws_DA_In_Decision\",
1364                                      dossier.date_depot as \"ws_DA_In_Dte_Depot_Dem\",                                      dossier.date_depot as \"ws_DA_In_Dte_Depot_Dem\",
1365                                      dossier.terrain_numero as \"ws_DA_In_N_Voie\",                                      dossier.terrain_adresse_voie_numero as \"ws_DA_In_N_Voie\",
1366                                      '' as \"ws_DA_In_Type_Voie\",                                      '' as \"ws_DA_In_Type_Voie\",
1367                                      dossier.complement as \"ws_DA_In_Adresse1\",                                      dossier.terrain_adresse_voie as \"ws_DA_In_Adresse1\",
1368                                      dossier.terrain_adresse_lieu_dit as \"ws_DA_In_Adresse2\",                                      dossier.terrain_adresse_lieu_dit as \"ws_DA_In_Adresse2\",
1369                                      dossier.terrain_adresse_code_postal as \"ws_DA_In_CP\",                                      dossier.terrain_adresse_code_postal as \"ws_DA_In_CP\",
1370                                      dossier.terrain_adresse_localite as \"ws_DA_In_Ville\",                                      dossier.terrain_adresse_localite as \"ws_DA_In_Ville\",
# Line 1216  class instruction extends instruction_ge Line 1395  class instruction extends instruction_ge
1395                                      donnees_techniques.dossier_instruction = dossier.dossier                                      donnees_techniques.dossier_instruction = dossier.dossier
1396                              WHERE instruction.instruction = ".$this->valF['instruction'];                              WHERE instruction.instruction = ".$this->valF['instruction'];
1397                  $resArrete = $this->db->query($sqlArrete);                  $resArrete = $this->db->query($sqlArrete);
1398                  $this->f->addToLog("triggerModifierApres(): db->query(\"".$sqlArrete."\");", VERBOSE_MODE);                  $this->f->addToLog("triggermodifierapres(): db->query(\"".$sqlArrete."\");", VERBOSE_MODE);
1399                  if ( database::isError($resArrete)){                  if ( database::isError($resArrete)){
1400                      die();                      die();
1401                  }                  }
# Line 1229  class instruction extends instruction_ge Line 1408  class instruction extends instruction_ge
1408    
1409          // Mise à jour des données du dossier d'autorisation          // Mise à jour des données du dossier d'autorisation
1410          require_once "../obj/dossier_autorisation.class.php";          require_once "../obj/dossier_autorisation.class.php";
1411          $da = new dossier_autorisation($this->getDossierAutorisationFromDossier($this->valF['dossier']), $this->db, DEBUG);          $da = new dossier_autorisation($this->getNumDemandeAutorFromDossier($this->valF['dossier']), $this->db, DEBUG);
1412          $da->majDossierAutorisation();          $da->majDossierAutorisation();
1413      }      }
1414    
     /**  
      * Méthode de récupération des métadonnées arrêtés dans la base de données,  
      * les données sont stockés dans l'attribut $this->metadonneesArrete  
      */  
     function getArreteMetadata() {  
         $sqlArrete = "SELECT    signataire_arrete.nom as \"nomsignataire\",  
                                 signataire_arrete.qualite as \"qualitesignataire\",  
                                 instruction.date_evenement as \"datesignaturearrete\",  
                                 instruction.etat as \"decisionarrete\",  
                                 dossier.terrain_adresse_voie_numero as \"ap_numrue\",  
                                 dossier.complement as \"ap_nomdelavoie\",  
                                 dossier.terrain_adresse_code_postal as \"ap_codepostal\",  
                                 dossier.terrain_adresse_localite as \"ap_ville\"  
                             FROM ".DB_PREFIXE."instruction  
                             LEFT JOIN ".DB_PREFIXE."signataire_arrete ON  
                                 instruction.signataire_arrete = signataire_arrete.signataire_arrete  
                             LEFT JOIN ".DB_PREFIXE."dossier ON  
                                 instruction.dossier = dossier.dossier  
                             LEFT JOIN ".DB_PREFIXE."donnees_techniques ON  
                                     donnees_techniques.dossier_instruction = dossier.dossier  
                             WHERE instruction.instruction = ".$this->valF['instruction'];  
         $resArrete = $this->db->query($sqlArrete);  
         $this->f->addToLog("triggerModifierApres(): db->query(\"".$sqlArrete."\");", VERBOSE_MODE);  
         if ( database::isError($resArrete)){  
             die();  
         }  
   
         $this->metadonneesArrete = $resArrete->fetchRow(DB_FETCHMODE_ASSOC);  
     }  
   
     // Méthodes de récupération des métadonnées arrêté  
     function getNumArrete() {  
         return $this->valF['numero_arrete'];  
     }  
     function getSpecialiteArrete() {  
         return "ADS";  
     }  
     function getDecisionArrete() {  
         if (empty($this->metadonneesArrete)) {  
             $this->getArreteMetadata();  
         }  
         return $this->metadonneesArrete["decisionarrete"];  
     }  
     function getChketatReglementaire() {  
         return "";  
     }  
     function getChkNotification() {  
         if( isset($this->valF["date_retour_rar"]) ) {  
             return true;  
         } else {  
             return false;  
         }  
     }  
     function getDateNotification() {  
         return date("d/m/Y", strtotime($this->valF["date_retour_rar"]));  
     }  
     function getChkCreationdroit() {  
         return "";  
     }  
     function getChkPublication() {  
         return "";  
     }  
     function getDatePublication() {  
         return "";  
     }  
     function getChkControleLegalite() {  
         if( isset($this->valF["date_retour_controle_legalite"]) ) {  
             return true;  
         } else {  
             return false;  
         }  
     }  
     function getDateSignatureArrete() {  
         return date("d/m/Y", strtotime($this->valF['date_retour_signature']));  
     }  
     function getNomSignataire() {  
         if (empty($this->metadonneesArrete)) {  
             $this->getArreteMetadata();  
         }  
         return $this->metadonneesArrete["nomsignataire"];  
     }  
     function getQualiteSignataire() {  
         if (empty($this->metadonneesArrete)) {  
             $this->getArreteMetadata();  
         }  
         return $this->metadonneesArrete["qualitesignataire"];  
     }  
     function getChkDelegation() {  
         return "";  
     }  
     function getAp_numRue() {  
         if (empty($this->metadonneesArrete)) {  
             $this->getArreteMetadata();  
         }  
         return $this->metadonneesArrete["ap_numrue"];  
     }  
     function getAp_nomDeLaVoie() {  
         if (empty($this->metadonneesArrete)) {  
             $this->getArreteMetadata();  
         }  
         return $this->metadonneesArrete["ap_nomdelavoie"];  
     }  
     function getAp_codePostal() {  
         if (empty($this->metadonneesArrete)) {  
             $this->getArreteMetadata();  
         }  
         return $this->metadonneesArrete["ap_codepostal"];  
     }  
     function getAp_ville() {  
         if (empty($this->metadonneesArrete)) {  
             $this->getArreteMetadata();  
         }  
         return $this->metadonneesArrete["ap_ville"];  
     }  
   
     // Fin des méthodes de récupération des métadonnées  
   
1415      function triggersupprimer($id,&$db,$val,$DEBUG) {      function triggersupprimer($id,&$db,$val,$DEBUG) {
1416          /**          /**
1417           * L'objectif ici est de repositionner les valeurs récupérées en           * L'objectif ici est de repositionner les valeurs récupérées en
1418           * archive dans le dossier d'instruction avant de supprimer l'événement           * archive dans le dossier d'instruction avant de supprimer l'événement
1419           * d'instruction           * d'instruction
1420           */           */
1421          // Mise à jour des 4 valeurs modifiées par l'action          
1422          $valF['delai'] = $val['archive_delai'];              // Mise à jour des 4 valeurs modifiées par l'action
1423          $valF['accord_tacite'] = $val['archive_accord_tacite'];              $valF['delai'] = $val['archive_delai'];
1424          $valF['etat'] = $val['archive_etat'];              $valF['accord_tacite'] = $val['archive_accord_tacite'];
1425          if ($val['archive_avis'] != '') {              $valF['etat'] = $val['archive_etat'];
1426              $valF['avis_decision'] = $val['archive_avis'];              if ($val['archive_avis'] != '') {
1427          } else {                  $valF['avis_decision'] = $val['archive_avis'];
1428              $valF['avis_decision'] = NULL;              } else {
1429          }                  $valF['avis_decision'] = NULL;
1430          // Mise à jour des 10 dates avec la valeur présente dans le formulaire              }
1431          // de suppression. Si la valeur de la date est vide alors on fixe              // Mise à jour des 10 dates avec la valeur présente dans le formulaire
1432          // à la valeur NULL              // de suppression. Si la valeur de la date est vide alors on fixe
1433          //              // à la valeur NULL
1434          if ($val['archive_date_complet'] != '') {              //
1435              $valF['date_complet'] = $val['archive_date_complet'];              if ($val['archive_date_complet'] != '') {
1436          } else {                  $valF['date_complet'] = $val['archive_date_complet'];
1437              $valF['date_complet'] = NULL;              } else {
1438          }                  $valF['date_complet'] = NULL;
1439          if ($val['archive_date_dernier_depot'] != '') {              }
1440              $valF['date_dernier_depot'] = $val['archive_date_dernier_depot'];              if ($val['archive_date_dernier_depot'] != '') {
1441          } else {                  $valF['date_dernier_depot'] = $val['archive_date_dernier_depot'];
1442              $valF['date_dernier_depot'] = NULL;              } else {
1443          }                  $valF['date_dernier_depot'] = NULL;
1444          if ($val['archive_date_rejet'] != '') {              }
1445              $valF['date_rejet'] = $val['archive_date_rejet'];              if ($val['archive_date_rejet'] != '') {
1446          } else {                  $valF['date_rejet'] = $val['archive_date_rejet'];
1447              $valF['date_rejet'] = NULL;              } else {
1448          }                  $valF['date_rejet'] = NULL;
1449          if ($val['archive_date_limite'] != '') {              }
1450              $valF['date_limite'] = $val['archive_date_limite'];              if ($val['archive_date_limite'] != '') {
1451          } else {                  $valF['date_limite'] = $val['archive_date_limite'];
1452              $valF['date_limite'] = NULL;              } else {
1453          }                  $valF['date_limite'] = NULL;
1454          if ($val['archive_date_notification_delai'] != '') {              }
1455              $valF['date_notification_delai'] = $val['archive_date_notification_delai'];              if ($val['archive_date_notification_delai'] != '') {
1456          } else {                  $valF['date_notification_delai'] = $val['archive_date_notification_delai'];
1457              $valF['date_notification_delai'] = NULL;              } else {
1458          }                  $valF['date_notification_delai'] = NULL;
1459          if ($val['archive_date_decision'] != '') {              }
1460              $valF['date_decision'] = $val['archive_date_decision'];              if ($val['archive_date_decision'] != '') {
1461          } else {                  $valF['date_decision'] = $val['archive_date_decision'];
1462              $valF['date_decision'] = NULL;              } else {
1463          }                  $valF['date_decision'] = NULL;
1464          if ($val['archive_date_validite'] != '') {              }
1465              $valF['date_validite'] = $val['archive_date_validite'];              if ($val['archive_date_validite'] != '') {
1466          } else {                  $valF['date_validite'] = $val['archive_date_validite'];
1467              $valF['date_validite'] = NULL;              } else {
1468          }                  $valF['date_validite'] = NULL;
1469          if ($val['archive_date_achevement'] != '') {              }
1470              $valF['date_achevement'] = $val['archive_date_achevement'];              if ($val['archive_date_achevement'] != '') {
1471          } else {                  $valF['date_achevement'] = $val['archive_date_achevement'];
1472              $valF['date_achevement'] = NULL;              } else {
1473          }                  $valF['date_achevement'] = NULL;
1474          if ($val['archive_date_chantier'] != '') {              }
1475              $valF['date_chantier'] = $val['archive_date_chantier'];              if ($val['archive_date_chantier'] != '') {
1476          } else {                  $valF['date_chantier'] = $val['archive_date_chantier'];
1477              $valF['date_chantier'] = NULL;              } else {
1478          }                  $valF['date_chantier'] = NULL;
1479          if ($val['archive_date_conformite'] != '') {              }
1480              $valF['date_conformite'] = $val['archive_date_conformite'];              if ($val['archive_date_conformite'] != '') {
1481          } else {                  $valF['date_conformite'] = $val['archive_date_conformite'];
1482              $valF['date_conformite'] = NULL;              } else {
1483          }                  $valF['date_conformite'] = NULL;
1484          if ($val['archive_incompletude'] != '') {              }
1485              $valF['incompletude'] = $val['archive_incompletude'];              if ($val['archive_incompletude'] != '') {
1486          } else {                  $valF['incompletude'] = $val['archive_incompletude'];
1487              $valF['incompletude'] = NULL;              } else {
1488          }                  $valF['incompletude'] = NULL;
1489          if ($val['archive_evenement_suivant_tacite'] != '') {              }
1490              $valF['evenement_suivant_tacite'] = $val['archive_evenement_suivant_tacite'];              if ($val['archive_evenement_suivant_tacite'] != '') {
1491          } else {                  $valF['evenement_suivant_tacite'] = $val['archive_evenement_suivant_tacite'];
1492              $valF['evenement_suivant_tacite'] = NULL;              } else {
1493          }                  $valF['evenement_suivant_tacite'] = NULL;
1494          if ($val['archive_evenement_suivant_tacite_incompletude'] != '') {              }
1495              $valF['evenement_suivant_tacite_incompletude'] = $val['archive_evenement_suivant_tacite_incompletude'];              if ($val['archive_evenement_suivant_tacite_incompletude'] != '') {
1496          } else {                  $valF['evenement_suivant_tacite_incompletude'] = $val['archive_evenement_suivant_tacite_incompletude'];
1497              $valF['evenement_suivant_tacite_incompletude'] = NULL;              } else {
1498          }                  $valF['evenement_suivant_tacite_incompletude'] = NULL;
1499          if ($val['archive_etat_pendant_incompletude'] != '') {              }
1500              $valF['etat_pendant_incompletude'] = $val['archive_etat_pendant_incompletude'];              if ($val['archive_etat_pendant_incompletude'] != '') {
1501          } else {                  $valF['etat_pendant_incompletude'] = $val['archive_etat_pendant_incompletude'];
1502              $valF['etat_pendant_incompletude'] = NULL;              } else {
1503          }                  $valF['etat_pendant_incompletude'] = NULL;
1504          if ($val['archive_date_limite_incompletude'] != '') {              }
1505              $valF['date_limite_incompletude'] = $val['archive_date_limite_incompletude'];              if ($val['archive_date_limite_incompletude'] != '') {
1506          } else {                  $valF['date_limite_incompletude'] = $val['archive_date_limite_incompletude'];
1507              $valF['date_limite_incompletude'] = NULL;              } else {
1508          }                  $valF['date_limite_incompletude'] = NULL;
1509          if ($val['archive_delai_incompletude'] != '') {              }
1510              $valF['delai_incompletude'] = $val['archive_delai_incompletude'];              if ($val['archive_delai_incompletude'] != '') {
1511          } else {                  $valF['delai_incompletude'] = $val['archive_delai_incompletude'];
1512              $valF['delai_incompletude'] = NULL;              } else {
1513          }                  $valF['delai_incompletude'] = NULL;
1514          // On met à jour le dossier              }
1515          $cle = " dossier='".$val['dossier']."'";              if ($val['archive_autorite_competente'] != '') {
1516          $res = $db->autoExecute(DB_PREFIXE.'dossier', $valF, DB_AUTOQUERY_UPDATE, $cle);                  $valF['autorite_competente'] = $val['archive_autorite_competente'];
1517          $this->addToLog("triggersupprimer(): db->autoexecute(\"".DB_PREFIXE."dossier\", ".print_r($valF, true).", DB_AUTOQUERY_UPDATE, \"".$cle."\");", VERBOSE_MODE);              } else {
1518          if (database::isError($res)) {                  $valF['autorite_competente'] = NULL;
1519              die($res->getMessage());              }
1520          }              // On met à jour le dossier
1521          // Affichage d'informations à l'utilisateur              $cle = " dossier='".$val['dossier']."'";
1522          $this->addToMessage(_("Suppression de l'instruction")." [".$db->affectedRows()." "._('enregistrement')." "._('mis_a_jour')."]");              $res = $db->autoExecute(DB_PREFIXE.'dossier', $valF, DB_AUTOQUERY_UPDATE, $cle);
1523                $this->addToLog("triggersupprimer(): db->autoexecute(\"".DB_PREFIXE."dossier\", ".print_r($valF, true).", DB_AUTOQUERY_UPDATE, \"".$cle."\");", VERBOSE_MODE);
1524                if (database::isError($res)) {
1525                    die($res->getMessage());
1526                }
1527                // Affichage d'informations à l'utilisateur
1528                $this->addToMessage(_("Suppression de l'instruction")." [".$db->affectedRows()." "._('enregistrement')." "._('mis_a_jour')."]");
1529        
1530                // Mise à jour de la demande si un récépissé d'instruction correspond à l'instruction à supprimer
1531      }      }
1532    
1533      function triggersupprimerapres($id,&$db,$val,$DEBUG) {      function triggersupprimerapres($id,&$db,$val,$DEBUG) {
1534    
1535          // Mise à jour des données du dossier d'autorisation          // Mise à jour des données du dossier d'autorisation
1536          require_once "../obj/dossier_autorisation.class.php";          require_once "../obj/dossier_autorisation.class.php";
1537          $da = new dossier_autorisation($this->getDossierAutorisationFromDossier($val["dossier"]), $this->db, DEBUG);          $da = new dossier_autorisation($this->getNumDemandeAutorFromDossier($val["dossier"]), $this->db, DEBUG);
1538          $da->majDossierAutorisation();          $da->majDossierAutorisation();
1539      }      }
1540    
# Line 1525  class instruction extends instruction_ge Line 1594  class instruction extends instruction_ge
1594          parent::verifier($val, $db, $DEBUG);          parent::verifier($val, $db, $DEBUG);
1595    
1596          if ( isset($val['evenement']) && is_numeric($val['evenement'])){          if ( isset($val['evenement']) && is_numeric($val['evenement'])){
1597          //Récupère la restriction              //Récupère la restriction
1598              $sql= "SELECT              $sql= "SELECT
1599                        restriction                        restriction
1600                    FROM                    FROM
# Line 1542  class instruction extends instruction_ge Line 1611  class instruction extends instruction_ge
1611            
1612              //Test qu'une restriction est présente              //Test qu'une restriction est présente
1613              if ( isset($row['restriction']) && $row['restriction'] != "" ){              if ( isset($row['restriction']) && $row['restriction'] != "" ){
1614    
1615                    $restriction = $row['restriction'];
1616                                    
1617                  //Test si la restriction est valide                  //Test si la restriction est valide
1618                  if ( !$this->restrictionIsValid($row['restriction']) ){                  if ( !$this->restrictionIsValid($restriction) ){
1619                                            
1620                      $this->correct=false;                      $this->correct=false;
1621                      $this->addToMessage(_("Restriction non valide"));                      $this->addToMessage(_("Restriction non valide"));
# Line 1553  class instruction extends instruction_ge Line 1624  class instruction extends instruction_ge
1624                                            
1625                      $this->correct = true;                      $this->correct = true;
1626                  }                  }
1627    
1628                    // Liste des opérateurs possible
1629                    $operateurs = array(">=", "<=", "+", "-");
1630    
1631                    // Supprime tous les espaces de la chaîne de caractère
1632                    $restriction = str_replace(' ', '', $restriction);
1633                    
1634                    // Met des espace avant et après les opérateurs puis transforme la
1635                    // chaine en un tableau
1636                    $tabRestriction = str_replace($operateurs, " ", $restriction);
1637                    // Tableau des champ
1638                    $tabRestriction = explode(" ", $tabRestriction);
1639                    // Supprime les numériques du tableau
1640                    foreach ($tabRestriction as $key => $value) {
1641                        if (is_numeric($value)) {
1642                            unset($tabRestriction[$key]);
1643                        }
1644                    }
1645    
1646                    // Vérifie les champs utilisés pour la restriction
1647                    $check_field_exist = $this->f->check_field_exist($tabRestriction, 'instruction');
1648                    if ($check_field_exist !== true) {
1649    
1650                        // Liste des champs en erreur
1651                        $string_error_fields = implode(", ", $check_field_exist);
1652    
1653                        // Message d'erreur
1654                        $error_message = _("Le champ %s n'est pas utilisable pour le champ %s");
1655                        if (count($check_field_exist) > 1) {
1656                            $error_message = _("Les champs %s ne sont pas utilisable pour le champ %s");
1657                        }
1658    
1659                        // Affiche l'erreur
1660                        $this->correct=false;
1661                        $this->addToMessage(sprintf($error_message, $string_error_fields, _("restriction")));
1662                        $this->addToMessage(_("Veuillez contacter votre administrateur."));
1663                    }
1664              }              }
1665    
1666            }
1667            if(!$this->updateDate("date_envoi_signature")) {
1668                return false;
1669            }
1670            if(!$this->updateDate("date_retour_signature")) {
1671                return false;
1672            }
1673            if(!$this->updateDate("date_envoi_rar")) {
1674                return false;
1675            }
1676            if(!$this->updateDate("date_retour_rar")) {
1677                return false;
1678            }
1679            if(!$this->updateDate("date_envoi_controle_legalite")) {
1680                return false;
1681            }
1682            if(!$this->updateDate("date_retour_controle_legalite")) {
1683                return false;
1684          }          }
1685    
         $this->updateDate("date_envoi_signature");  
         $this->updateDate("date_retour_signature");  
         $this->updateDate("date_envoi_rar");  
         $this->updateDate("date_retour_rar");  
         $this->updateDate("date_envoi_controle_legalite");  
         $this->updateDate("date_retour_controle_legalite");  
1686      }      }
1687    
1688      /**      /**
# Line 1609  class instruction extends instruction_ge Line 1730  class instruction extends instruction_ge
1730      }      }
1731            
1732      /**      /**
1733       * Finalisation des documents.         * Finalisation des documents.
1734         * @param  string $champ    champ du fichier à finaliser
1735         * @param  booleen $status  permet de définir si on finalise ou définalise
1736         * @param  string $sousform permet de savoir si se trouve dans un sousformulaire (passé au javascript)
1737       */       */
1738      function finaliser( $champ = '', $status, $sousform){      function finaliser( $champ = '', $status, $sousform, $retourformulaire){
1739    
1740          //Si on finalise le document          //Si on finalise le document
1741          if ( $status == 1 ){          if ( $status == 1 ){
# Line 1649  class instruction extends instruction_ge Line 1773  class instruction extends instruction_ge
1773              $uid = $this->getVal("om_fichier_instruction");              $uid = $this->getVal("om_fichier_instruction");
1774                            
1775              //On dé-finalise avant de finaliser              //On dé-finalise avant de finaliser
1776              if ( $uid == '' ){              if ( $uid == '' || $uid == 'OP_FAILURE' ){
1777                  return -1;                  return -1;
1778              }              }
1779          }          }
1780    
1781          //Mise à jour des données          //Mise à jour des données
1782          if ( $uid != '' ){          if ( $uid != '' || $uid == 'OP_FAILURE' ){
1783              // Logger              // Logger
1784              $this->addToLog("finaliser() - begin", EXTRA_VERBOSE_MODE);              $this->addToLog("finaliser() - begin", EXTRA_VERBOSE_MODE);
1785              // Recuperation de la valeur de la cle primaire de l'objet              // Recuperation de la valeur de la cle primaire de l'objet
# Line 1663  class instruction extends instruction_ge Line 1787  class instruction extends instruction_ge
1787                  $id = $this->getVal($this->clePrimaire);                  $id = $this->getVal($this->clePrimaire);
1788              else              else
1789                  $id=$this->id;                  $id=$this->id;
1790                
1791                $actions = array();
1792              //Tableau contenant le lien vers le PDF et lien du portlet pour la mise              //Tableau contenant le lien vers le PDF et lien du portlet pour la mise
1793              //à jour de l'interface              //à jour de l'interface
1794              if ( $status == 0 ){              if ( $status == 0 ){
1795                  $lien = '../app/pdf_instruction.php?idx='.$id;                  $lien = '../app/pdf_instruction.php?idx='.$id;
1796                    
1797                    //Ajout des actions
1798                    //Si l'utilisateur a le droit de modifier l'objet
1799                    if ( $this->f->isAccredited('instruction') ||
1800                        $this->f->isAccredited('instruction_modifier') ){
1801                            
1802                        $actions["modifier"] = ($sousform!='')?
1803                            '<li><a href="#" onclick="ajaxIt(\'instruction\',
1804                            \'../scr/sousform.php?obj=instruction&amp;action=1&amp;idx='.
1805                            $this->getVal($this->clePrimaire).
1806                            '&amp;premiersf=0&amp;trisf=&amp;retourformulaire='.$retourformulaire.'&amp;idxformulaire='.
1807                            $this->getVal("dossier").
1808                            '&amp;retour=form\');">
1809                            <span class="om-prev-icon om-icon-16 edit-16" title="'.
1810                            _('Modifier').'">'.
1811                            _('Modifier').
1812                            '</span></a></li>':
1813                            '<li>
1814                            <a href="form.php?obj=instruction&amp;action=1'.'&amp;idx='.
1815                            $this->getVal($this->clePrimaire).
1816                            '&amp;premier=&amp;advs_id=&amp;recherche=&amp;tricol=&amp;selectioncol=&amp;valide=&amp;retour=form">
1817                            <span class="om-prev-icon om-icon-16 edit-16" title="'.
1818                            _('Modifier').'">'.
1819                            _('Modifier').
1820                            '</span></a></li>';
1821                    }
1822                    //Si l'utilisateur a le droit de supprimer l'objet
1823                    if ( $this->f->isAccredited('instruction') ||
1824                        $this->f->isAccredited('instruction_supprimer') ){
1825                            
1826                        $actions["supprimer"] = ($sousform!='')?
1827                            '<li><a href="#" onclick="ajaxIt(\'instruction\',
1828                            \'../scr/sousform.php?obj=instruction&amp;action=2&amp;idx='.
1829                            $this->getVal($this->clePrimaire).
1830                            '&amp;premiersf=0&amp;trisf=&amp;retourformulaire='.$retourformulaire.'&amp;idxformulaire='.
1831                            $this->getVal("dossier").
1832                            '&amp;retour=form\');">
1833                            <span class="om-prev-icon om-icon-16 delete-16" title="'.
1834                            _('Supprimer').'">'.
1835                            _('Supprimer').
1836                            '</span></a></li>':
1837                            '<li>
1838                            <a href="form.php?obj=instruction&amp;action=1'.'&amp;idx='.
1839                            $this->getVal($this->clePrimaire).
1840                            '&amp;premier=&amp;advs_id=&amp;recherche=&amp;tricol=&amp;selectioncol=&amp;valide=&amp;retour=form">
1841                            <span class="om-prev-icon om-icon-16 delete-16" title="'.
1842                            _('Supprimer').'">'.
1843                            _('Supprimer').
1844                            '</span></a></li>';
1845                    }
1846              }              }
1847              else {              else {
1848                  $lien = '../spg/file.php?obj=instruction&'.                  $lien = '../spg/file.php?obj=instruction&'.
# Line 1677  class instruction extends instruction_ge Line 1852  class instruction extends instruction_ge
1852             $retour = array(             $retour = array(
1853                  "portlet"=> "<a href=\"#\" onclick=\"finalizeDocument(".                  "portlet"=> "<a href=\"#\" onclick=\"finalizeDocument(".
1854                      $id.", 'instruction', '".$sousform."', ".(($status==0)?1:0).")\">                      $id.", 'instruction', '".$sousform."', ".(($status==0)?1:0).")\">
1855                      <span class=\"om-prev-icon om-icon-16 om-icon-fix delete-16 "                      <span class=\"om-prev-icon om-icon-16 om-icon-fix "
1856                      .(($status==1)?"de":"")."finalise\" title=\"".                      .(($status==1)?"de":"")."finalise\" title=\"".
1857                      (($status==1)?_("Reprendre la redaction du document"):_("Finaliser le document"))."\">".                      (($status==1)?_("Reprendre la redaction du document"):_("Finaliser le document"))."\">".
1858                      (($status==1)?_("Reprendre la redaction du document"):_("Finaliser le document"))."</span>                      (($status==1)?_("Reprendre la redaction du document"):_("Finaliser le document"))."</span>
1859                      </a>",                      </a>",
1860                  "pdf" => $lien                  "pdf" => $lien,
1861                    "actions" => $actions
1862              );              );
1863    
1864              foreach ( $this->champs as $key=>$value )              foreach ( $this->champs as $key=>$value )
# Line 1720  class instruction extends instruction_ge Line 1896  class instruction extends instruction_ge
1896                  $this->triggermodifier( $id, $this->db, $this->val, DEBUG);                  $this->triggermodifier( $id, $this->db, $this->val, DEBUG);
1897                  $valF = array(                  $valF = array(
1898                          "om_final_instruction"=> ($status==1)?TRUE:FALSE,                          "om_final_instruction"=> ($status==1)?TRUE:FALSE,
1899                          "om_fichier_instruction"=>$uid);                          "om_fichier_instruction"=>$uid,
1900                            "date_finalisation_courrier"=>date('Y-m-d'));
1901                  // Execution de la requête de modification des donnees de l'attribut                  // Execution de la requête de modification des donnees de l'attribut
1902                  // valF de l'objet dans l'attribut table de l'objet                  // valF de l'objet dans l'attribut table de l'objet
1903                  $res = $this->db->autoExecute(DB_PREFIXE.$this->table, $valF,                  $res = $this->db->autoExecute(DB_PREFIXE.$this->table, $valF,
# Line 1750  class instruction extends instruction_ge Line 1927  class instruction extends instruction_ge
1927              } else {              } else {
1928                  // Message d'echec (saut d'une ligne supplementaire avant le                  // Message d'echec (saut d'une ligne supplementaire avant le
1929                  // message pour qu'il soit mis en evidence)                  // message pour qu'il soit mis en evidence)
1930                  $this->addToLog("Finalisation non enregistree");                  $this->addToLog(_("Finalisation non enregistree"));
1931                  return -1;                  return -1;
1932              }              }
1933          }          }
# Line 1761  class instruction extends instruction_ge Line 1938  class instruction extends instruction_ge
1938      }      }
1939    
1940      /**      /**
1941       * Finalisation du document lors de l'ajout d'une instruction       * Récupération du numéro de dossier d'instruction à ajouter aux métadonnées
1942       *       * @return string numéro de dossier d'instruction
1943       */       */
1944      function finaliserAjouter(){      protected function getDossier() {
1945            if(empty($this->specificMetadata)) {
1946          //Génération du PDF              $this->getSpecificMetadata();
         $_GET['output'] = "string";  
         $_GET['obj'] = "instruction";  
         $_GET['idx'] = $this->valF[$this->clePrimaire];  
         $f = $this->f;  
         include '../app/pdf_instruction.php';  
           
         //Métadonnées du document  
         $metadata = array(  
             'filename' => 'instruction_'.$idx.'.pdf',  
             'mimetype' => 'application/pdf',  
             'size' => strlen($pdf_output)  
         );  
   
         // Récupération des métadonnées calculées après validation  
         $spe_metadata = $this->getMetadata("om_fichier_instruction");  
   
         $metadata = array_merge($metadata, $spe_metadata);  
   
         //On ajoute le document et on récupère son uid  
         $uid = $this->f->storage->create($pdf_output, $metadata);  
   
         //Mise à jour des données  
         if ( $uid != '' ){  
             // Logger  
             $this->addToLog("finaliserAjouter() - begin", EXTRA_VERBOSE_MODE);  
   
             $valF = array(  
                     "om_final_instruction"=> TRUE,  
                     "om_fichier_instruction"=>$uid);  
   
             // Execution de la requête de modification des donnees de l'attribut  
             // valF de l'objet dans l'attribut table de l'objet  
             $res = $this->db->autoExecute(DB_PREFIXE.$this->table, $valF,  
                 DB_AUTOQUERY_UPDATE, $this->getCle($idx));  
              $this->addToLog("finaliserAjouter() : db->autoExecute(\"".DB_PREFIXE.$this->table."\", ".print_r($valF, true).", DB_AUTOQUERY_UPDATE, \"".$this->getCle($idx)."\")", VERBOSE_MODE);  
             // Si une erreur survient  
             if (database::isError($res)) {  
                 // Appel de la methode de recuperation des erreurs  
                 $this->erreur_db($res->getDebugInfo(), $res->getMessage(), '');  
             } else {  
                 // Log  
                 $this->addToLog(_("Requete executee"), VERBOSE_MODE);  
                 // Log  
                 $message = _("Enregistrement")."&nbsp;".$idx."&nbsp;";  
                 $message .= _("de la table")."&nbsp;\"".$this->table."\"&nbsp;";  
                 $message .= "[&nbsp;".$this->db->affectedRows()."&nbsp;";  
                 $message .= _("enregistrement(s) mis a jour")."&nbsp;]";  
                 $this->addToLog($message, VERBOSE_MODE);  
             }  
1947          }          }
1948            return $this->specificMetadata->dossier;
1949      }      }
   
1950      /**      /**
1951       * Récupération du numéro de dossier d'instruction à ajouter aux métadonnées       * Récupération la version du dossier d'instruction à ajouter aux métadonnées
1952       * @return [type] [description]       * @return int Version
1953       */       */
1954      protected function getDossier() {      protected function getDossierVersion() {
1955          if(empty($this->specificMetadata)) {          if(empty($this->specificMetadata)) {
1956              $this->getSpecificMetadata();              $this->getSpecificMetadata();
1957          }          }
1958          return $this->specificMetadata->dossier;          return $this->specificMetadata->version;
1959      }      }
1960      /**      /**
1961       * Récupération du numéro de dossier d'autorisation à ajouter aux métadonnées       * Récupération du numéro de dossier d'autorisation à ajouter aux métadonnées
1962       * @return [type] [description]       * @return string numéro de dossier d'autorisation
1963       */       */
1964      protected function getDossierAutorisation() {      protected function getNumDemandeAutor() {
1965          if(empty($this->specificMetadata)) {          if(empty($this->specificMetadata)) {
1966              $this->getSpecificMetadata();              $this->getSpecificMetadata();
1967          }          }
# Line 1841  class instruction extends instruction_ge Line 1969  class instruction extends instruction_ge
1969      }      }
1970      /**      /**
1971       * Récupération de la date de demande initiale du dossier à ajouter aux métadonnées       * Récupération de la date de demande initiale du dossier à ajouter aux métadonnées
1972       * @return [type] [description]       * @return date de la demande initiale
1973       */       */
1974      protected function getDateDemandeInitiale() {      protected function getAnneemoisDemandeAutor() {
1975          if(empty($this->specificMetadata)) {          if(empty($this->specificMetadata)) {
1976              $this->getSpecificMetadata();              $this->getSpecificMetadata();
1977          }          }
# Line 1851  class instruction extends instruction_ge Line 1979  class instruction extends instruction_ge
1979      }      }
1980      /**      /**
1981       * Récupération du type de dossier d'instruction à ajouter aux métadonnées       * Récupération du type de dossier d'instruction à ajouter aux métadonnées
1982       * @return [type] [description]       * @return string type du dossier d'instruction
1983       */       */
1984      protected function getDossierInstructionType() {      protected function getTypeInstruction() {
1985          if(empty($this->specificMetadata)) {          if(empty($this->specificMetadata)) {
1986              $this->getSpecificMetadata();              $this->getSpecificMetadata();
1987          }          }
# Line 1861  class instruction extends instruction_ge Line 1989  class instruction extends instruction_ge
1989      }      }
1990      /**      /**
1991       * Récupération du statut du dossier d'autorisation à ajouter aux métadonnées       * Récupération du statut du dossier d'autorisation à ajouter aux métadonnées
1992       * @return [type] [description]       * @return string avis
1993       */       */
1994      protected function getStatut() {      protected function getStatutAutorisation() {
1995          if(empty($this->specificMetadata)) {          if(empty($this->specificMetadata)) {
1996              $this->getSpecificMetadata();              $this->getSpecificMetadata();
1997          }          }
# Line 1871  class instruction extends instruction_ge Line 1999  class instruction extends instruction_ge
1999      }      }
2000      /**      /**
2001       * Récupération du type de dossier d'autorisation à ajouter aux métadonnées       * Récupération du type de dossier d'autorisation à ajouter aux métadonnées
2002       * @return [type] [description]       * @return string type du dossier d'autorisation
2003       */       */
2004      protected function getDossierAutorisationType() {      protected function getTypeAutorisation() {
2005          if(empty($this->specificMetadata)) {          if(empty($this->specificMetadata)) {
2006              $this->getSpecificMetadata();              $this->getSpecificMetadata();
2007          }          }
# Line 1881  class instruction extends instruction_ge Line 2009  class instruction extends instruction_ge
2009      }      }
2010      /**      /**
2011       * Récupération de la date d'ajout de document à ajouter aux métadonnées       * Récupération de la date d'ajout de document à ajouter aux métadonnées
2012       * @return [type] [description]       * @return date de l'évènement
2013       */       */
2014      protected function getDateEvenement() {      protected function getDateEvenementDocument() {
2015          return date("d/m/Y");          return date("Y-m-d");
2016      }      }
2017      /**      /**
2018       * Récupération du groupe d'instruction à ajouter aux métadonnées       * Récupération du groupe d'instruction à ajouter aux métadonnées
# Line 1896  class instruction extends instruction_ge Line 2024  class instruction extends instruction_ge
2024          }          }
2025          return $this->specificMetadata->groupe_instruction;          return $this->specificMetadata->groupe_instruction;
2026      }      }
2027        /**
2028         * Récupération du libellé du type du document à ajouter aux métadonnées
2029         * @return string Groupe d'instruction
2030         */
2031        protected function getTitle() {
2032    
2033            // Récupère le champ événement
2034            if (isset($this->valF["evenement"]) AND $this->valF["evenement"] != "") {
2035                $evenement = $this->valF["evenement"];
2036            } else {
2037                $evenement = $this->getVal("evenement");
2038            }
2039    
2040            // Requête sql
2041            $sql = "SELECT libelle FROM ".DB_PREFIXE."evenement
2042                    WHERE evenement=".$evenement;
2043            $evenement_libelle = $this->db->getOne($sql);
2044            $this->addToLog("getTitle(): db->getOne(\"".$sql."\");", VERBOSE_MODE);
2045            if (database::isError($evenement_libelle)) {
2046                die();
2047            }
2048    
2049            // Retourne le libelle de l'événement
2050            return $evenement_libelle;
2051        }
2052    
2053      /**      /**
2054       * Cette méthode permet de stocker en attribut toutes les métadonnées       * Cette méthode permet de stocker en attribut toutes les métadonnées
# Line 1930  class instruction extends instruction_ge Line 2083  class instruction extends instruction_ge
2083                          ON dossier_autorisation_type.groupe = groupe.groupe                          ON dossier_autorisation_type.groupe = groupe.groupe
2084                  WHERE dossier.dossier = '".$dossier."'";                  WHERE dossier.dossier = '".$dossier."'";
2085          $res = $this->db->query($sql);          $res = $this->db->query($sql);
2086          $this->f->addToLog("obj/document_numerise.class.php : db->query(".$sql.")", VERBOSE_MODE);          $this->f->addToLog("getSpecificMetadata() : db->query(".$sql.")", VERBOSE_MODE);
2087          if ( database::isError($res)){          if ( database::isError($res)){
2088              die();              die();
2089          }          }
# Line 1940  class instruction extends instruction_ge Line 2093  class instruction extends instruction_ge
2093    
2094          //Si il y a un résultat          //Si il y a un résultat
2095          if ($row !== null) {          if ($row !== null) {
2096                    
2097                //Génération du numéro de version
2098                $sql = "SELECT
2099                            count(*)
2100                    FROM
2101                        ".DB_PREFIXE."dossier
2102                    LEFT JOIN
2103                        ".DB_PREFIXE."dossier_autorisation
2104                        ON
2105                            dossier_autorisation.dossier_autorisation = dossier.dossier_autorisation
2106                    LEFT JOIN
2107                        ".DB_PREFIXE."dossier_instruction_type
2108                        ON
2109                            dossier_instruction_type.dossier_instruction_type = dossier.dossier_instruction_type
2110                    WHERE
2111                        dossier_autorisation.dossier_autorisation = '".$row->dossier_autorisation."'
2112                        AND
2113                        dossier_instruction_type.code = '".$row->dossier_instruction_type."'";
2114                $row->version = $this->db->getOne($sql);
2115                $this->f->addToLog("getSpecificMetadata(): db->getOne(\"".$sql."\")", VERBOSE_MODE);
2116                if ( database::isError($row->version)){
2117                    $this->f->addToError("", $row->version, $row->version);
2118                    return false;
2119                }
2120                
2121                //Formatage du numéro de version
2122                $row->version = str_pad($row->version, 2, "0", STR_PAD_LEFT);
2123    
2124              //Alors on créé l'objet dossier_instruction              //Alors on créé l'objet dossier_instruction
2125              $this->specificMetadata = $row;              $this->specificMetadata = $row;
2126    
2127          }          }
2128      }      }
2129        
2130        /**
2131         * Retourne le statut du dossier d'instruction
2132         * @param string $idx Identifiant du dossier d'instruction
2133         * @return string Le statut du dossier d'instruction
2134         */
2135        function getStatutAutorisationDossier($idx){
2136            
2137            $statut = '';
2138            
2139            //Si l'identifiant du dossier d'instruction fourni est correct
2140            if ( $idx != '' ){
2141                
2142                //On récupère le statut de l'état du dossier à partir de l'identifiant du
2143                //dossier
2144                $sql = "SELECT etat.statut
2145                    FROM ".DB_PREFIXE."dossier
2146                    LEFT JOIN
2147                        ".DB_PREFIXE."etat
2148                        ON
2149                            dossier.etat = etat.etat
2150                    WHERE dossier ='".$idx."'";
2151                $statut = $this->db->getOne($sql);
2152                $this->f->addToLog("getStatutAutorisationDossier() : db->getOne(\"".$sql."\")", VERBOSE_MODE);
2153                if ( database::isError($statut)){
2154                    die();
2155                }
2156            }
2157            return $statut;
2158        }
2159    
2160        /**
2161         * Récupère les données du dossier
2162         * @return array
2163         */
2164        function get_dossier_actual() {
2165    
2166            // Initialisation de la valeur de retour
2167            $return = array();
2168    
2169            // Récupération de toutes les valeurs du dossier d'instruction en cours
2170            $sql = "SELECT * FROM ".DB_PREFIXE."dossier
2171            WHERE dossier='".$this->valF['dossier']."'";
2172            $res = $this->db->query($sql);
2173            $this->addToLog("get_dossier_actual(): db->query(\"".$sql."\");", VERBOSE_MODE);
2174            $this->f->isDatabaseError($res);
2175    
2176            //
2177            while ($row=& $res->fetchRow(DB_FETCHMODE_ASSOC)) {
2178    
2179                // Récupération de la valeur actuelle du délai, de l'accord tacite,
2180                // de l'état et de l'avis du dossier d'instruction
2181                $return['archive_delai']=$row['delai'];
2182                $return['archive_accord_tacite']=$row['accord_tacite'];
2183                $return['archive_etat']=$row['etat'];
2184                $return['archive_avis']=$row['avis_decision'];
2185                // Récupération de la valeur actuelle des 9 dates du dossier
2186                // d'instruction
2187                $return['archive_date_complet']=$row['date_complet'];
2188                $return['archive_date_dernier_depot']=$row['date_dernier_depot'];
2189                $return['archive_date_rejet']= $row['date_rejet'];
2190                $return['archive_date_limite']= $row['date_limite'];
2191                $return['archive_date_notification_delai']= $row['date_notification_delai'];
2192                $return['archive_date_decision']= $row['date_decision'];
2193                $return['archive_date_validite']= $row['date_validite'];
2194                $return['archive_date_achevement']= $row['date_achevement'];
2195                $return['archive_date_chantier']= $row['date_chantier'];
2196                $return['archive_date_conformite']= $row['date_conformite'];  
2197                $return['archive_incompletude']= $row['incompletude'];  
2198                $return['archive_evenement_suivant_tacite']= $row['evenement_suivant_tacite'];  
2199                $return['archive_evenement_suivant_tacite_incompletude']= $row['evenement_suivant_tacite_incompletude'];  
2200                $return['archive_etat_pendant_incompletude']= $row['etat_pendant_incompletude'];  
2201                $return['archive_date_limite_incompletude']= $row['date_limite_incompletude'];  
2202                $return['archive_delai_incompletude']= $row['delai_incompletude'];  
2203                $return['archive_autorite_competente']= $row['autorite_competente'];  
2204                $return['duree_validite']= $row['duree_validite'];  
2205            }
2206    
2207            // Retour de la fonction
2208            return $return;
2209    
2210        }
2211    
2212  }// fin classe  }// fin classe
2213  ?>  ?>

Legend:
Removed from v.1946  
changed lines
  Added in v.2606

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26