/[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 80 by fraynaud, Mon Aug 22 15:54:28 2011 UTC revision 1978 by vpihour, Mon Jun 3 16:53:37 2013 UTC
# Line 1  Line 1 
1  <?php  <?php
2  //$Id$  /**
3  //gen openMairie le 10/02/2011 20:34   *
4  /*   *
5  $Id: instruction.class.php,v 1.29 2010-10-27 10:52:20 fraynaud Exp $   * specific :
6  specific :   * - cle secondaire
7  - cle secondaire   *   destruction autorisée que pour le dernier evenement
8    destruction autorisée que pour le dernier evenement   *     [delete the last event ]
9    [delete the last event ]   * - variable globale [global variables]
10  - variable globale [global variables]   *     var $archive_date_depot;
11      var $archive_date_depot;   *     var $retourformulaire;
12      var $retourformulaire;   *     var $idxformulaire;
13      var $idxformulaire;   * - modification des données dans dossier trigger avant
14  - modification des données dans dossier trigger avant   * [modify dossier data with trigger function]
15    [modify dossier data with trigger function]   * - function moisdate : pour ajouter des mois a une date
16  - function moisdate : pour ajouter des mois a une date   *   [add months (delay) and calculation final date]
17    [add months (delay) and calculation final date]   * - voir script_lang.js : bible ...
18  - voir script_lang.js : bible ...   *
19  */   * @package openfoncier
20  require_once ("../gen/obj/instruction.class.php");   * @version SVN : $Id$
21     */
22    
23    //
24    require_once "../gen/obj/instruction.class.php";
25    
26    //
27    require_once "../services/outgoing/messageenqueuer.php";
28    
29    //
30  class instruction extends instruction_gen {  class instruction extends instruction_gen {
31    
32      var $archive_date_depot; // specific      var $archive_date_depot; // specific
33      var $retourformulaire;   // specific      var $retourformulaire;   // specific
34      var $idxformulaire;      // specific      var $idxformulaire;      // specific
35        var $valEvenement;
36        // Tableau contenant une partie des métadonnées arrêtés
37        var $metadonneesArrete;
38    
39        var $metadata = array(
40            "om_fichier_instruction" => array(
41                "dossier" => "getDossier",
42                "dossier_autorisation" => "getDossierAutorisation",
43                "date_demande_initiale" => "getDateDemandeInitiale",
44                "dossier_instruction_type" => "getDossierInstructionType",
45                "statut" => "getStatut",
46                "dossier_autorisation_type" => "getDossierAutorisationType",
47                "date_creation" => "getDateEvenement",
48                "groupe_instruction" => 'getGroupeInstruction',
49            ),
50            "document_arrete" => array(
51                "numArrete" => "getNumArrete",
52                "specialiteArrete" => "getSpecialiteArrete",
53                "decisionArrete" => "getDecisionArrete",
54                "chketatReglementaire" => "getChketatReglementaire",
55                "chkNotification" => "getChkNotification",
56                "dateNotification" => "getDateNotification",
57                "chkCreationdroit" => "getChkCreationdroit",
58                "chkPublication" => "getChkPublication",
59                "datePublication" => "getDatePublication",
60                "chkControleLegalite" => "getChkControleLegalite",
61                "dateSignatureArrete" => "getDateSignatureArrete",
62                "nomSignataire" => "getNomSignataire",
63                "qualiteSignataire" => "getQualiteSignataire",
64                "chkDelegation" => "getChkDelegation",
65                "ap_numRue" => "getAp_numRue",
66                "ap_nomDeLaVoie" => "getAp_nomDeLaVoie",
67                "ap_codePostal" => "getAp_codePostal",
68                "ap_ville" => "getAp_ville",
69            ),
70        );
71    
72    
73      function instruction($id,&$db,$debug) {      function instruction($id, &$db, $debug) {
74          $this->constructeur($id,$db,$debug);          $this->constructeur($id, $db, $debug);
     }// fin constructeur  
   
     function setvalF($val){  
         $this->valF['instruction'] = $val['instruction'];  
         $this->valF['destinataire'] = $val['destinataire'];  
         $this->valF['lettretype'] = $val['lettretype'];  
         $this->valF['dossier'] = $val['dossier'];  
         if($val['datecourrier']!="")  
             $this->valF['datecourrier'] = $this->dateDB($val['datecourrier']);  
         $this->valF['complement'] = $val['complement'];  
         $this->valF['complement2'] = $val['complement2'];  
         $this->valF['evenement'] = $val['evenement'];  
75      }      }
76    
77        // {{{ Gestion de la confidentialité des données spécifiques
78    
79      function cleSecondaire($id,&$db,$val,$DEBUG) {      /**
80      // controle suppression cle secondaire [secondary key delete control]       * Surcharge pour gérer les actions disponibles dans le portlet
81      // ------------------------------------------------------------------------------------       */
82      // specifique detruire que le dernier   [specific instruction : delete the last event ]      function checkAccessibility() {
83      // ------------------------------------------------------------------------------------          //
84          $dernierevenement='';          parent::checkAccessibility();
85          $sql="select max(instruction) from instruction where dossier ='".          // Si l'utilisateur est un intructeur qui ne correspond pas à la
86          $this->idxformulaire."'";          // division du dossier
87          $dernierevenement = $db->getOne($sql);          if ($this->f->isUserInstructeur()
88           if($dernierevenement==$id){              && isset($this->f->om_utilisateur["division"])
89               $this->correct=true;              && $this->f->om_utilisateur["division"] != $this->getDivisionFromDossier()) {
90               $this->msg="<br>"._('destruction_chronologique')." ok <br>";              //
91            }else{              $this->actions_sup = array();
92               $this->msg="<br>"._('destruction_evenement')." : ".$dernierevenement.              $this->setParameter("actions", array());
93               "<br>"._('destruction_chronologique');          }
94               $this->correct=false;          // Si une action 'lu' est présente et que le champ lu est à true
95            }          // on supprime l'action
96      }          if (isset($this->actions_sup["lu"])
97                && isset($this->val[array_search("lu", $this->champs)])
98      function verifier($val,&$db,$DEBUG){              && $this->val[array_search("lu", $this->champs)]== "t") {
99          $this->correct=True;              unset($this->actions_sup["lu"]);
         $imgv="";  
         $f="&nbsp!&nbsp;&nbsp;&nbsp;&nbsp;";  
         $imgv="<img src='../img/punaise.png' style='vertical-align:middle' hspace='2' border='0'>";  
         // obligatoire  
         if ($this->valF['destinataire']==""){  
            $this->correct=false;  
            $this->msg= $this->msg.$imgv." "._('instruction')." ".  
            _('obligatoire').$f;  
         }  
         if ($val['datecourrier']==""){  
            $this->correct=false;  
            $this->msg= $this->msg.$imgv." "._('datecourrier')." ".  
            _('obligatoire').$f;  
         }  
         if ($val['evenement']==""){  
            $this->correct=false;  
            $this->msg= $this->msg.$imgv." "._('evenement')." ".  
            _('obligatoire').$f;  
100          }          }
101      }//verifier              
102            //Si le document est déjà finalisé, on affiche uniquement le lien de
103            //dé-finalisation
104            $om_final_instruction = $this->getVal("om_final_instruction");
105            if ( isset($this->actions_sup["finalisation"]) &&
106                $om_final_instruction== "t" ){
107                    
108                //On cache le lien de finalisation et on affiche le bon lien pour l'édition
109                unset($this->actions_sup["finalisation"]);
110                $this->actions_sup["pdfetat"]["lien"] = "../spg/file.php?id=";
111                $this->actions_sup["pdfetat"]["id"] =
112                    "&amp;obj=instruction&amp;champ=om_fichier_instruction";
113            }
114            //Si le document n'est pas finalisé, on affiche uniquement le lien de
115            //finalisation
116            if ( isset($this->actions_sup["definalisation"]) &&
117                $om_final_instruction!= "t" ){
118                    
119                //On cache le lien de finalisation et on affiche le bon lien pour l'édition
120                unset($this->actions_sup["definalisation"]);
121                $this->actions_sup["pdfetat"]["lien"] = "../app/pdf_instruction.php?idx=";
122                $this->actions_sup["pdfetat"]["id"] = "";
123            }
124            
125            $idxformulaire = $this->getParameter("idxformulaire");
126            $retourformulaire = $this->getParameter("retourformulaire");
127            //Si le dossier d'instruction auquel est rattachée l'instruction est cloturé,
128            //on affiche pas les liens du portlet
129            if ( $idxformulaire != '' &&
130                (
131                    $retourformulaire == 'dossier' ||
132                    $retourformulaire == 'dossier_instruction' ||
133                    $retourformulaire == 'dossier_instruction_mes_encours' ||
134                    $retourformulaire == 'dossier_instruction_tous_encours' ||
135                    $retourformulaire == 'dossier_instruction_mes_clotures' ||
136                    $retourformulaire == 'dossier_instruction_tous_clotures'
137                )){
138    
139      function setValsousformulaire(&$form,$maj,$validation,$idxformulaire,$retourformulaire,$typeformulaire){              //On récuppère le statut du dossier d'instruction        
140          if ($validation==0) {              $statut = $this->getStatutDossier($idxformulaire);
141              if ($maj == 0){              if ( $this->f->isUserInstructeur() && $statut == "cloture" ){
142                  $form->setVal("destinataire", $idxformulaire);                  
143                  $form->setVal("dossier", $idxformulaire);                  //On cache le lien de modification
144                  $form->setVal("datecourrier", date('Y-m-d'));                  $this->parameters["actions"]["modifier"] = NULL;
145                    $this->actions_sup["finalisation"] = NULL;
146                    $this->actions_sup["definalisation"] = NULL;
147              }              }
             $form->setVal("bible_auto","bible_auto()");  
             $form->setVal("bible","bible()");  
             $form->setVal("bible2","bible2()");  
148          }          }
         $this->retourformulaire=$retourformulaire;  
         $this->idxformulaire=$idxformulaire;  
149      }      }
150    
151      function setType(&$form,$maj) {      /**
152      if ($maj < 2) { //ajouter et modifier       * Cette methode est à surcharger elle permet de tester dans chaque classe
153          $form->setType('destinataire', 'hidden');       * des droits des droits spécifiques en fonction des données
154          $form->setType('lettretype', 'hiddenstatic');       */
155          $form->setType('complement', 'textarea');      function canAccess() {
156          $form->setType('complement2', 'textarea');          // Si l'utilisateur est un intructeur qui ne correspond pas à la
157            // division du dossier
158            if ($this->f->isUserInstructeur()
159                && $this->f->om_utilisateur["division"] != $this->getDivisionFromDossier()
160                && $this->getParameter("maj") != 3) {
161                //
162                $this->addToLog("canAccess(): utilisateur instructeur sur un dossier d'une autre division", EXTRA_VERBOSE_MODE);
163                return false;
164            }
165    
166            $retourformulaire = $this->getParameter("retourformulaire");
167            // Si l'utilisateur est un instructeur et que le dossier est cloturé
168            if ( $this->f->isUserInstructeur() &&
169                $this->getStatutDossier($this->getParameter("idxformulaire")) == "cloture" &&
170                (
171                    $retourformulaire == 'dossier' ||
172                    $retourformulaire == 'dossier_instruction' ||
173                    $retourformulaire == 'dossier_instruction_mes_encours' ||
174                    $retourformulaire == 'dossier_instruction_tous_encours' ||
175                    $retourformulaire == 'dossier_instruction_mes_clotures' ||
176                    $retourformulaire == 'dossier_instruction_tous_clotures'
177                )
178                && $this->getParameter("maj") != 3 && $this->getParameter("maj") != 0 ) {
179                
180                return false;
181            }
182            //
183            return true;
184        }
185    
186        /**
187         * Cette variable permet de stocker le résultat de la méthode
188         * getDivisionFromDossier() afin de ne pas effectuer le recalcul à chacun de
189         * ces appels.
190         * @var string Code de la division du dossier en cours
191         */
192        var $_division_from_dossier = NULL;
193    
194        /**
195         * Cette méthode permet de récupérer le code de division correspondant
196         * au dossier sur lequel on se trouve.
197         *
198         * @return string Code de la division du dossier en cours
199         */
200        function getDivisionFromDossier() {
201    
202            // Cette méthode peut être appelée plusieurs fois lors d'une requête.
203            // Pour éviter de refaire le traitement de recherche de la division
204            // alors on vérifie si nous ne l'avons pas déjà calculé.
205            if ($this->_division_from_dossier != NULL) {
206                // Logger
207                $this->addToLog("getDivisionFromDossier(): retour de la valeur déjà calculée - '".$this->_division_from_dossier."'", EXTRA_VERBOSE_MODE);
208                // On retourne la valeur déjà calculée
209                return $this->_division_from_dossier;
210            }
211    
212            // Par défaut, on définit la valeur du dossier à NULL
213            $dossier = NULL;
214            // Test sur le mode et le contexte du formulaire
215            if ($this->getParameter("maj") == 0
216                && ($this->getParameter("retourformulaire") == "dossier"
217                    || $this->getParameter("retourformulaire") == "dossier_instruction"
218                    || $this->getParameter("retourformulaire") == "dossier_instruction_mes_encours"
219                    || $this->getParameter("retourformulaire") == "dossier_instruction_tous_encours"
220                    || $this->getParameter("retourformulaire") == "dossier_instruction_mes_clotures"
221                    || $this->getParameter("retourformulaire") == "dossier_instruction_tous_clotures")) {
222                // Si on se trouve en mode AJOUT (seul mode où l'enregistrement
223                // n'existe pas en base de données) ET que nous nous trouvons
224                // dans le contexte d'un dossier d'instruction alors on récupère
225                // le numéro de dossier depuis le paramètre 'idxformulaire'
226                $dossier = $this->getParameter("idxformulaire");
227            } else {
228                // Sinon on récupère le numéro de dossier dans le champs dossier de
229                // l'enregistrement (en base de données)
230                $dossier = $this->getVal("dossier");
231            }
232    
233            // On appelle la méthode de la classe utils qui renvoi le code de la
234            // division d'un dossier, on la stocke pour ne pas refaire le calcul au
235            // prochain appel de cette méthode
236            $this->_division_from_dossier = $this->f->getDivisionFromDossier($dossier);
237            // Logger
238            $this->addToLog("getDivisionFromDossier(): retour de la valeur nouvellement calculée - '".$this->_division_from_dossier."'", EXTRA_VERBOSE_MODE);
239            // On retourne la valeur retournée
240            return $this->_division_from_dossier;
241    
242        }
243    
244        /**
245         * Cette méthode permet de récupérer le dossier d'autorisation d'un dossier
246         */
247        function getDossierAutorisationFromDossier($id) {
248            //
249            if (!isset($id)) {
250                return NULL;
251            }
252            //
253            $sql = "select dossier_autorisation from ".DB_PREFIXE."dossier ";
254            $sql .= " where dossier='".$id."'";
255            //
256            $dossier_autorisation = $this->db->getOne($sql);
257            $this->addToLog("getDossierAutorisationFromDossier(): db->getone(\"".$sql."\")", VERBOSE_MODE);
258            database::isError($dossier_autorisation);
259            //
260            return $dossier_autorisation;
261        }
262    
263        // }}}
264    
265        function setType(&$form, $maj) {
266            //
267            parent::setType($form, $maj);
268            // On cache tous les champs
269            // XXX
270          $form->setType('complement3', 'hidden');          $form->setType('complement3', 'hidden');
271          $form->setType('bible3', 'hidden');          $form->setType('bible3', 'hidden');
272          $form->setType('complement4', 'hidden');          $form->setType('complement4', 'hidden');
# Line 131  class instruction extends instruction_ge Line 293  class instruction extends instruction_ge
293          $form->setType('bible14', 'hidden');          $form->setType('bible14', 'hidden');
294          $form->setType('complement15', 'hidden');          $form->setType('complement15', 'hidden');
295          $form->setType('bible15', 'hidden');          $form->setType('bible15', 'hidden');
296          $form->setType('bible_auto', 'httpclick');          //
         $form->setType('bible', 'httpclick');  
         $form->setType('bible2', 'httpclick');  
         $form->setType('dossier', 'hiddenstatic');  
297          $form->setType('delai', 'hidden');          $form->setType('delai', 'hidden');
298          $form->setType('etat', 'hidden');          $form->setType('etat', 'hidden');
299          $form->setType('accord_tacite', 'hidden');          $form->setType('accord_tacite', 'hidden');
300          $form->setType('action', 'hidden');          $form->setType('action', 'hidden');
301          $form->setType('delai_notification', 'hidden');          $form->setType('delai_notification', 'hidden');
302          $form->setType('avis', 'hidden');          $form->setType('avis_decision', 'hidden');
303            //
304          $form->setType('archive_delai', 'hidden');          $form->setType('archive_delai', 'hidden');
305          $form->setType('archive_etat', 'hidden');          $form->setType('archive_etat', 'hidden');
306          $form->setType('archive_accord_tacite', 'hidden');          $form->setType('archive_accord_tacite', 'hidden');
307          $form->setType('archive_avis', 'hidden');          $form->setType('archive_avis', 'hidden');
308          $form->setType('archive_date_complet', 'hidden');          $form->setType('archive_date_complet', 'hidden');
309            $form->setType('archive_date_dernier_depot', 'hidden');
310          $form->setType('archive_date_rejet', 'hidden');          $form->setType('archive_date_rejet', 'hidden');
311          $form->setType('archive_date_limite', 'hidden');          $form->setType('archive_date_limite', 'hidden');
312          $form->setType('archive_date_notification_delai', 'hidden');          $form->setType('archive_date_notification_delai', 'hidden');
# Line 153  class instruction extends instruction_ge Line 314  class instruction extends instruction_ge
314          $form->setType('archive_date_validite', 'hidden');          $form->setType('archive_date_validite', 'hidden');
315          $form->setType('archive_date_achevement', 'hidden');          $form->setType('archive_date_achevement', 'hidden');
316          $form->setType('archive_date_conformite', 'hidden');          $form->setType('archive_date_conformite', 'hidden');
317          $form->setType('archive_date_chantier', 'hidden');              $form->setType('archive_date_chantier', 'hidden');  
318          $form->setType('libelle', 'hiddenstatic');          //
319          if($maj==0){ // add          $form->setType('numero_arrete', 'hidden');
320              $form->setType('instruction', 'hiddenstatic');          //
321              $form->setType('evenement', 'select');          $form->setType('code_barres', 'hidden');
322              $form->setType('datecourrier', 'date2');          
323          }else{ // modify          //
324              $form->setType('instruction', 'hiddenstatic');          $form->setType('archive_incompletude','hidden');
325              $form->setType('evenement', 'hiddenstatic');          $form->setType('archive_evenement_suivant_tacite','hidden');
326              $form->setType('datecourrier', 'hiddenstaticdate');          $form->setType('archive_evenement_suivant_tacite_incompletude','hidden');
327          }          $form->setType('archive_etat_pendant_incompletude','hidden');
328      }else{ // supprimer  [delete]          $form->setType('archive_date_limite_incompletude','hidden');
329          $form->setType('instruction', 'hiddenstatic');          $form->setType('archive_delai_incompletude','hidden');
330          $form->setType('dossier', 'hiddenstatic');          if ($maj < 2) { //ajouter et modifier
331          $form->setType('archive_delai', 'hiddenstatic');              $form->setType('destinataire', 'hidden');
332          $form->setType('archive_etat', 'hiddenstatic');              $form->setType('lettretype', 'hiddenstatic');
333          $form->setType('archive_accord_tacite', 'hiddenstatic');              $form->setType('complement', 'textarea');
334          $form->setType('archive_avis', 'hiddenstatic');              $form->setType('complement2', 'textarea');
335          $form->setType('archive_date_complet', 'hiddenstatic');              $form->setType('bible_auto', 'httpclick');
336          $form->setType('archive_date_rejet', 'hiddenstatic');              $form->setType('bible', 'httpclick');
337          $form->setType('archive_date_limite', 'hiddenstatic');              $form->setType('bible2', 'httpclick');
338          $form->setType('archive_date_notification_delai', 'hiddenstatic');              $form->setType('dossier', 'hidden');  
339          $form->setType('archive_date_decision', 'hiddenstatic');              $form->setType('libelle', 'hiddenstatic');
340          $form->setType('archive_date_validite', 'hiddenstatic');              $form->setType('signataire_arrete','select');
341          $form->setType('archive_date_achevement', 'hiddenstatic');              $form->setType('date_envoi_signature','datedisabled');
342      }              $form->setType('date_retour_signature','datedisabled');
343                $form->setType('date_envoi_rar','datedisabled');
344                $form->setType('date_retour_rar','datedisabled');
345                $form->setType('date_envoi_controle_legalite','datedisabled');
346                $form->setType('date_retour_controle_legalite','datedisabled');
347                $form->setType('date_finalisation_courrier','datedisabled');
348                if($maj==0){ // add
349                    $form->setType('instruction', 'hiddenstatic');
350                    $form->setType('evenement', 'select');
351                    $form->setType('date_evenement', 'date2');
352                }else{ // modify
353                    $form->setType('instruction', 'hiddenstatic');
354                    $form->setType('evenement', 'selecthiddenstatic');
355                    //$form->setType('date_evenement', 'hiddenstaticdate');
356                    $form->setType('date_evenement', 'date2');
357                    // necessaire pour calcul de date en modification
358                    //$form->setType('delai', 'hiddenstatic');
359                }
360            } elseif($maj==2){
361                $form->setType('dossier', 'hidden');
362                $form->setType('bible_auto', 'hidden');
363                $form->setType('bible', 'hidden');
364                $form->setType('bible2', 'hidden');
365            }else {
366                $form->setType('destinataire', 'hidden');
367                $form->setType('dossier', 'hidden');
368                $form->setType('bible_auto', 'hidden');
369                $form->setType('bible', 'hidden');
370                $form->setType('bible2', 'hidden');
371            }
372    
373            //Cache les champs pour la finalisation
374            $form->setType('om_fichier_instruction', 'hidden');
375            $form->setType('om_final_instruction', 'hidden');
376            // Cache le document arrêté
377            $form->setType('document_arrete', 'hidden');
378      }      }
379    
380      function setTaille(&$form,$maj){      function setSelect(&$form, $maj,&$db,$debug) {
381          $form->setTaille('complement', 120);          /**
382          $form->setTaille('complement2', 120);           * On ne surcharge pas la méthode parent car une requête sur la table
383          $form->setTaille('datecourrier', 12);           * dossier est mauvaise pour les performances, car la requête qui
384      }           * concerne evenement est plus complexe que celle générée et car les
385             * champs action, avis_decision et etat ne sont pas utilisés comme des
386      function setMax(&$form,$maj){           * select
387          $form->setMax('complement',12 );           */
388          $form->setMax('complement2',12 );          if(file_exists ("../sql/".$db->phptype."/".$this->table.".form.inc.php"))
389      }              include ("../sql/".$db->phptype."/".$this->table.".form.inc.php");
390            elseif(file_exists ("../sql/".$db->phptype."/".$this->table.".form.inc"))
     //function setSelect(&$form, $maj,&$db,$DEBUG,$idxformulaire) {  
     function setSelect(&$form, $maj,&$db,$DEBUG) {  
         if(file_exists ("../sql/".$db->phptype."/".$this->table.".form.inc"))  
391              include ("../sql/".$db->phptype."/".$this->table.".form.inc");              include ("../sql/".$db->phptype."/".$this->table.".form.inc");
392          if($maj<2){  
393              // *** evenement ***          //// action
394              $contenu=array();          //$this->init_select($form, $db, $maj, $debug, "action",
395              // etat du dossier          //                   $sql_action, $sql_action_by_id, false);
396              $sql="select etat from dossier where dossier ='".  
397                    $this->idxformulaire."'";          //// avis_decision
398              $etat_dossier = $db->getOne($sql);          //$this->init_select($form, $db, $maj, $debug, "avis_decision",
399              $nature_dossier= substr($this->idxformulaire,0,2);          //                   $sql_avis_decision, $sql_avis_decision_by_id, false);
400              // recherche des evenement de transition  
401              $sql= $sql_transition." where transition.etat ='".$etat_dossier."' and (evenement.nature ='".          //// dossier
402                    $nature_dossier."' or (nature ='T' and nature !='CU')) order by evenement.action";          //$this->init_select($form, $db, $maj, $debug, "dossier",
403              // *** attention en dur le CU          //                   $sql_dossier, $sql_dossier_by_id, false);
404                
405            //// etat
406            //$this->init_select($form, $db, $maj, $debug, "etat",
407            //                   $sql_etat, $sql_etat_by_id, false);
408    
409            //// evenement
410            //$this->init_select($form, $db, $maj, $debug, "evenement",
411            //                   $sql_evenement, $sql_evenement_by_id, false);
412    
413            // signataire_arrete
414            $this->init_select($form, $db, $maj, $debug, "signataire_arrete",
415                               $sql_signataire_arrete, $sql_signataire_arrete_by_id, true);
416    
417            /**
418             * Gestion du filtre sur les événements de workflow disponibles
419             * On récupère ici en fonction de l'état du dossier d'instruction en
420             * cours et du type du dossier d'instruction en cours la liste
421             * événements disponibles.
422             */
423            if ($maj == 0) {
424                // Récupération des événements par une jointure entre la table dossier
425                // et la table transition et la table evenement et la table
426                // lien_dossier_instruction_type_evenement en fonction de l'identifiant
427                // du dossier d'instruction en cours
428                $sql = "SELECT
429                evenement.evenement,
430                (evenement.libelle||' ['||evenement.action||']') as lib
431                FROM ".DB_PREFIXE."dossier
432                INNER JOIN ".DB_PREFIXE."lien_dossier_instruction_type_evenement
433                    ON dossier.dossier_instruction_type=lien_dossier_instruction_type_evenement.dossier_instruction_type
434                INNER JOIN ".DB_PREFIXE."evenement
435                    ON evenement.evenement=lien_dossier_instruction_type_evenement.evenement
436                INNER JOIN ".DB_PREFIXE."transition
437                    ON evenement.evenement = transition.evenement
438                    AND dossier.etat=transition.etat
439                WHERE dossier.dossier='".$this->idxformulaire."'
440                ORDER BY evenement.action";
441              $res = $db->query($sql);              $res = $db->query($sql);
442              if (database::isError($res))              $this->addToLog("setSelect(): db->query(\"".$sql."\");", VERBOSE_MODE);
443                if (database::isError($res)) {
444                  die($res->getMessage());                  die($res->getMessage());
445              $contenu[0][0]="";              }
446              $contenu[1][0]=_('choisir')." "._('evenement');              // Remplissage du tableau du select
447              $k=1;              $contenu = array(
448              while ($row=& $res->fetchRow()){                  0 => array("",),
449                  if($maj==0){ // ajouter                  1 => array(_('choisir')." "._('evenement'),)
450                      $contenu[0][$k]=$row[0];              );
451                      $contenu[1][$k]=$row[1];              while ($row=& $res->fetchRow()) {
452                      $k++;                  $contenu[0][] = $row[0];
453                  }else{                  $contenu[1][] = $row[1];
454                      // select hiddenstatic              }
455                      $contenu[0][$k]=$row[0];              $form->setSelect("evenement", $contenu);
456                      $contenu[1][$k]=$row[1];          } else {
457                      $k++;              $sql = "SELECT
458                  }              (evenement.libelle||' ['||evenement.action||']') as lib
459              }              FROM ".DB_PREFIXE."evenement
460              $form->setSelect("evenement",$contenu);              WHERE evenement.evenement=".$this->getVal("evenement")."";
461              // lien bible_auto  [link]              $res = $db->getone($sql);
462              $contenu=array();              $this->addToLog("setSelect(): db->getone(\"".$sql."\");", VERBOSE_MODE);
463              $contenu[0]=" automatique ";              if (database::isError($res)) {
464              $form->setSelect("bible_auto",$contenu);                  die($res->getMessage());
465              // lien bible1              }
466              $contenu=array();              //
467              $contenu[0]=" Bible ";              $contenu = array(
468              $form->setSelect("bible",$contenu);                  0 => array($this->getVal("evenement"),),
469              // lien bible2                  1 => array($res,)
470              $contenu=array();              );
471              $contenu[0]=" Bible ";              $form->setSelect("evenement", $contenu);
472              $form->setSelect("bible2",$contenu);          }
473          }  
474      } // function select          /**
475             * Gesion des liens vers la bible
476      function setGroupe(&$form,$maj){           */
477          $form->setGroupe('evenement','D');          // lien bible_auto
478          $form->setGroupe('libelle','G');          $contenu = array(_("automatique"));
479          $form->setGroupe('datecourrier','G');          $form->setSelect("bible_auto",$contenu);
480          $form->setGroupe('lettretype','F');          // lien bible1
481      }          $contenu = array(_("bible"));
482            $form->setSelect("bible",$contenu);
483      function setRegroupe(&$form,$maj){                // lien bible2
484          $form->setRegroupe('evenement','D',_('evenement'), "collapsible");          $contenu = array(_("bible"));
485          $form->setRegroupe('libelle','G','');          $form->setSelect("bible2",$contenu);
486          $form->setRegroupe('datecourrier','G','');      }
487          $form->setRegroupe('lettretype','F','');  
488          $form->setRegroupe('complement','D',_('complement'), "startClosed");      function cleSecondaire($id, &$db, $val, $DEBUG) {
489          $form->setRegroupe('bible_auto','G','');          //
490          $form->setRegroupe('bible','F','');          parent::cleSecondaire($id, $db, $val, $DEBUG);
491          $form->setRegroupe('complement2','D',_('complement2'), "startClosed");  
492          $form->setRegroupe('bible2','F','');          /**
493      }           * Vérification que l'élément supprimé est le dernier pour pouvoir
494                 * remodifier les données de manière itérative.
495      function setLib(&$form,$maj) {           */
496          parent :: setLib($form,$maj);          // Initialisation
497          $form->setLib('libelle',' ');          $dernierevenement = "";
498          $form->setLib('bible_auto',"");          // Récupération du dernier élément de la table d'instruction qui
499          $form->setLib('bible',"");          // concerne le dossier en cours
500          $form->setLib('bible2',"");          $sql = "SELECT max(instruction)
501          $form->setLib('lettretype',"->"._(" courrier "));          FROM ".DB_PREFIXE."instruction
502          $form->setLib('datecourrier',_(" du "));          WHERE dossier ='".$this->idxformulaire."'";
503      }          $dernierevenement = $db->getOne($sql);
504            $this->addToLog("setSelect(): db->getone(\"".$sql."\");", VERBOSE_MODE);
505      function setOnchange(&$form,$maj){          if (database::isError($dernierevenement)) {
506          $form->setOnchange("datecourrier","fdate(this)");              die($dernierevenement->getMessage());
507      }          }
508            // Si on se trouve effectivement sur le dernier evenement d'instruction
509      // ==================================================================          if ($dernierevenement == $id) {
510      // trigger avant modification données    [trigger before modify data]              // Alors on valide la suppression
511      // ==================================================================              $this->correct = true;
512      function triggerajouter($id,&$db,$val,$DEBUG) {              $this->addToMessage(_('Destruction_chronologique'));
513          // mise a jour instruction avec evenement          } else {
514          // [modify instruction with evenement]              // Alors on annule la suppression
515          $sql= "select * from evenement where evenement =".$this->valF['evenement'];              $this->correct = false;
516                $this->addToMessage(_("Seul le dernier evenement d'instruction peut etre supprime."));
517            }
518        }
519    
520        // Vérification de la non modification des dates de suivi
521        function updateDate($champ) {
522            if($this->valF[$champ] != "") {
523                if($this->getVal($champ) != "" AND $this->getVal($champ) != $this->valF[$champ]) {
524                    $this->correct = false;
525                    $this->addToMessage(_("Les dates de suivis ne peuvent etre modifiees"));
526                }
527            }
528        }
529    
530        // Sélectionne le signataire_arrete par défaut
531        function setVal(&$form,$maj,$validation){
532            
533            // Ajout
534            if($maj == 0) {
535                
536                // Création de la requête
537                $sql = "SELECT signataire_arrete
538                        FROM ".DB_PREFIXE."signataire_arrete
539                        WHERE defaut IS TRUE";
540                
541                // Exécution de la requête
542                $res = $this->f->db->query($sql);
543                $this->f->addToLog("deleteAllLienDossierInstructionTypeEvenementEvenement(): db->query(\"".$sql."\");", VERBOSE_MODE);
544                if ( database::isError($res)){
545                    die();
546                }
547            
548                $row = $res->fetchrow(DB_FETCHMODE_ASSOC);
549                
550                if ( isset($row['signataire_arrete']) && is_numeric($row['signataire_arrete'])){
551                    
552                    $form->setVal("signataire_arrete",$row['signataire_arrete']);
553                }
554            }
555        }
556    
557        /*Met des valeurs par défaut dans certains des sous-formulaire*/
558        function setValsousformulaire(&$form,$maj,$validation,$idxformulaire,$retourformulaire,$typeformulaire){
559            if ($validation==0 and $maj<2) {
560                if ($maj == 0){
561                    $form->setVal("destinataire", $idxformulaire);
562                    $form->setVal("dossier", $idxformulaire);
563                    $form->setVal("date_evenement", date('Y-m-d'));
564                }
565                $form->setVal("bible_auto","bible_auto()");
566                $form->setVal("bible","bible()");
567                $form->setVal("bible2","bible2()");
568            }
569            $this->retourformulaire=$retourformulaire;
570            $this->idxformulaire=$idxformulaire;
571        }
572    
573    
574        function setLayout(&$form, $maj){
575            if ( $maj < 2 OR $maj == 3 ) {
576                            /*Champ sur lequel s'ouvre le bloc 1 */
577                $form->setBloc('evenement','D',"","col_12");
578    
579                    $form->setFieldset('evenement','D',_('Evenement'));
580                    $form->setFieldset('lettretype','F','');
581                
582                $form->setBloc('lettretype','F');
583    
584                $form->setBloc('date_finalisation_courrier','D',"","col_12");
585    
586                    $form->setFieldset('date_finalisation_courrier','D',_('Dates'));
587                        $form->setBloc('date_finalisation_courrier','D',"","col_6");
588                        $form->setBloc('date_envoi_controle_legalite','F');
589    
590                        $form->setBloc('signataire_arrete','D',"","col_6");
591                        $form->setBloc('date_retour_controle_legalite','F');
592                    $form->setFieldset('date_retour_controle_legalite','F','');
593                
594                $form->setBloc('date_retour_controle_legalite','F');
595    
596                $form->setBloc('complement','D',"","col_12");
597                    $form->setFieldset('complement','D',_('Complement'));
598                    $form->setFieldset('bible','F','');
599                $form->setBloc('bible','F');
600    
601                $form->setBloc('complement2','D',"","col_12");
602                    $form->setFieldset('complement2','D',_('Complement 2'));
603                    $form->setFieldset('bible2','F','');
604                $form->setBloc('bible2','F');
605            }
606        }
607        
608        function setLib(&$form, $maj) {
609            //
610            parent::setLib($form, $maj);
611            //
612            $form->setLib('bible_auto', "");
613            $form->setLib('bible', "");
614            $form->setLib('bible2', "");
615        }
616    
617        function triggerajouter($id, &$db, $val, $DEBUG) {
618            /**
619             * Le code suivant permet de récupérer des valeurs des tables evenement
620             * et dossier pour les stocker dans l'instruction :
621             * DEPUIS L'EVENEMENT
622             * - action
623             * - delai
624             * - accord_tacite
625             * - etat
626             * - avis_decision
627             * - delai_notification
628             * - lettretype
629             * DEPUIS LE DOSSIER D'INSTRUCTION
630             * - archive_delai
631             * - archive_accord_tacite
632             * - archive_etat
633             * - archive_avis
634             * - date_complet
635             * - date_rejet
636             * - date_limite
637             * - date_notification_delai
638             * - date_decision
639             * - date_validite
640             * - date_achevement
641             * - date_chantier
642             * - date_conformite
643             * Il permet également de stocker la date_depot du dossier d'instruction
644             * dans l'attribut $this->archive_date_depot de la classe.
645             */
646            // Récupération de tous les paramètres de l'événement sélectionné
647            $sql = "SELECT * FROM ".DB_PREFIXE."evenement
648            WHERE evenement=".$this->valF['evenement'];
649          $res = $db->query($sql);          $res = $db->query($sql);
650          if (database::isError($res))          $this->addToLog("triggerajouter(): db->query(\"".$sql."\");", VERBOSE_MODE);
651            if (database::isError($res)) {
652              die($res->getMessage());              die($res->getMessage());
653          if ($DEBUG == 1)          }
654              echo " la requete ".$sql." est exécutée<br>";          while ($row=& $res->fetchRow(DB_FETCHMODE_ASSOC)) {
655          while ($row=& $res->fetchRow(DB_FETCHMODE_ASSOC)){              // Récupération de l'identifiant de l'action
656              $this->valF['action']=$row['action'];              // si une action est paramétrée dans l'événement
657              $this->valF['delai']=$row['delai'];              $this->valF['action'] = NULL;
658              $this->valF['etat']=$row['etat'];              if (isset($row['action']) and !empty($row['action'])) {
659                    $this->valF['action']=$row['action'];
660                }
661                // Récupération de la valeur du délai
662                $this->valF['delai'] = $row['delai'];
663                // Récupération de l'identifiant de l'état
664                // si un état est paramétré dans l'événement
665                $this->valF['etat']=NULL;
666                if (isset($row['etat']) and !empty($row['etat'])) {
667                    $this->valF['etat']=$row['etat'];
668                }
669                // Récupération de la valeur d'accord tacite
670              $this->valF['accord_tacite']=$row['accord_tacite'];              $this->valF['accord_tacite']=$row['accord_tacite'];
671                // Récupération de la valeur du délai de notification
672              $this->valF['delai_notification']=$row['delai_notification'];              $this->valF['delai_notification']=$row['delai_notification'];
673              $this->valF['avis']=$row['avis'];              // Récupération de l'identifiant de l'avis
674              if($row['lettretype']!="")              // si un avis est paramétré dans l'événement
675                $this->valF['avis_decision'] = NULL;
676                if(isset($row['avis_decision']) and !empty($row['avis_decision'])) {
677                    $this->valF['avis_decision']=$row['avis_decision'];
678                }
679                // Récupération de la valeur de la lettre type
680                // Sinon on lui affecte lavaleur par défaut standard
681                if ($row['lettretype'] != "") {
682                  $this->valF['lettretype']=$row['lettretype'];                  $this->valF['lettretype']=$row['lettretype'];
683              else              } else {
684                  $this->valF['lettretype']="standard";                  $this->valF['lettretype'] = "standard"; // XXX
685                }
686          }          }
687          $sql= "select * from dossier where dossier = '".$this->valF['dossier']."'";          // Récupération de toutes les valeurs du dossier d'instruction en cours
688            $sql = "SELECT * FROM ".DB_PREFIXE."dossier
689            WHERE dossier='".$this->valF['dossier']."'";
690          $res = $db->query($sql);          $res = $db->query($sql);
691          if (database::isError($res))          $this->addToLog("triggerajouter(): db->query(\"".$sql."\");", VERBOSE_MODE);
692            if (database::isError($res)) {
693              die($res->getMessage());              die($res->getMessage());
694          if ($DEBUG == 1)          }
695              echo " la requete ".$sql." est exécutée<br>";          while ($row=& $res->fetchRow(DB_FETCHMODE_ASSOC)) {
696          while ($row=& $res->fetchRow(DB_FETCHMODE_ASSOC)){              // XXX On stocke la date de dépôt actuelle du dossier d'instruction
697              //              // dans un attribut de la classe
698              $this->archive_date_depot = $row['date_depot'];              $this->archive_date_depot = $row['date_depot'];
699              // archive en instruction (si suppression)              // Récupération de la valeur actuelle du délai, de l'accord tacite,
700                // de l'état et de l'avis du dossier d'instruction
701              $this->valF['archive_delai']=$row['delai'];              $this->valF['archive_delai']=$row['delai'];
702              $this->valF['archive_accord_tacite']=$row['accord_tacite'];              $this->valF['archive_accord_tacite']=$row['accord_tacite'];
703              $this->valF['archive_etat']=$row['etat'];              $this->valF['archive_etat']=$row['etat'];
704              $this->valF['archive_avis']=$row['avis'];              $this->valF['archive_avis']=$row['avis_decision'];
705              // compatibilite pgsql              // Récupération de la valeur actuelle des 9 dates du dossier
706              if($row['date_complet']!='')              // d'instruction
707                 $this->valF['archive_date_complet']=$row['date_complet'];              if ($row['date_complet'] != '') {
708              if($row['date_rejet']!='')                  $this->valF['archive_date_complet']=$row['date_complet'];
709                 $this->valF['archive_date_rejet']= $row['date_rejet'];              }
710              if($row['date_limite']!='')              if ($row['date_dernier_depot'] != '') {
711                 $this->valF['archive_date_limite']= $row['date_limite'];                  $this->valF['archive_date_dernier_depot']=$row['date_dernier_depot'];
712              if($row['date_notification_delai']!='')              }
713                 $this->valF['archive_date_notification_delai']= $row['date_notification_delai'];              if ($row['date_rejet']!='') {
714              if($row['date_decision']!='')                  $this->valF['archive_date_rejet']= $row['date_rejet'];
715                 $this->valF['archive_date_decision']= $row['date_decision'];              }
716              if($row['date_validite']!='')              if ($row['date_limite']!='') {
717                 $this->valF['archive_date_validite']= $row['date_validite'];                  $this->valF['archive_date_limite']= $row['date_limite'];
718              if($row['date_achevement']!='')              }
719                 $this->valF['archive_date_achevement']= $row['date_achevement'];              if ($row['date_notification_delai']!='') {
720              if($row['date_chantier']!='')                  $this->valF['archive_date_notification_delai']= $row['date_notification_delai'];
721                 $this->valF['archive_date_chantier']= $row['date_chantier'];              }
722              if($row['date_conformite']!='')              if ($row['date_decision']!='') {
723                 $this->valF['archive_date_conformite']= $row['date_conformite'];                    $this->valF['archive_date_decision']= $row['date_decision'];
724                }
725                if ($row['date_validite']!='') {
726                    $this->valF['archive_date_validite']= $row['date_validite'];
727                }
728                if ($row['date_achevement']!='') {
729                    $this->valF['archive_date_achevement']= $row['date_achevement'];
730                }
731                if ($row['date_chantier']!='') {
732                    $this->valF['archive_date_chantier']= $row['date_chantier'];
733                }
734                if ($row['date_conformite']!='') {
735                    $this->valF['archive_date_conformite']= $row['date_conformite'];  
736                }
737                if ($row['incompletude']!='') {
738                    $this->valF['archive_incompletude']= $row['incompletude'];  
739                }
740                if ($row['evenement_suivant_tacite']!='') {
741                    $this->valF['archive_evenement_suivant_tacite']= $row['evenement_suivant_tacite'];  
742                }
743                if ($row['evenement_suivant_tacite_incompletude']!='') {
744                    $this->valF['archive_evenement_suivant_tacite_incompletude']= $row['evenement_suivant_tacite_incompletude'];  
745                }
746                if ($row['etat_pendant_incompletude']!='') {
747                    $this->valF['archive_etat_pendant_incompletude']= $row['etat_pendant_incompletude'];  
748                }
749                if ($row['date_limite_incompletude']!='') {
750                    $this->valF['archive_date_limite_incompletude']= $row['date_limite_incompletude'];  
751                }
752                if ($row['delai_incompletude']!='') {
753                    $this->valF['archive_delai_incompletude']= $row['delai_incompletude'];  
754                }
755          }          }
756    
757            // Identifiant du type de courrier
758            $idTypeCourrier = '11';
759            $idCourrier = str_pad($this->valF["instruction"], 10, "0", STR_PAD_LEFT);
760            // Code barres
761            $this->valF["code_barres"] = $idTypeCourrier . $idCourrier;
762      }      }
763            
764      // ==================================================================      // Test si une restriction est valide
765      // valeur dossier  apres modification   [values dossier after action]      // return boolean
766      // ==================================================================      function restrictionIsValid($restriction){
     function triggerajouterapres($id,&$db,$val,$DEBUG) {  
         // mise a null au lieu de "" / voir compatibilite mysql  
         // voir parametrage CU en dur  
         // voir parametrage des actions en dur  
767                    
768            /* Met des espace avant et après les opérateurs puis transforme la chaine en
769             * un tableau */
770            $tabRestriction = str_replace(">="," >= ",
771                              str_replace("<="," <= ",
772                              str_replace("-"," - ",
773                              str_replace("+"," + ",$restriction))));
774            $tabRestriction = explode( " ", $tabRestriction);
775                    
776          switch ($this->valF['action']) {          //Variables de résultat
777          case "initialisation" :          $res = array();
778              $valF['delai']= $this->valF['delai'];          $i = 0;
779              $valF['etat']= $this->valF['etat'];          $comp = "";
780              $valF['accord_tacite']= $this->valF['accord_tacite'];          
781              // la date_complet est la date de depot          
782              $valF['date_complet']= $this->archive_date_depot;          //Test que le tableau n'est pas vide
783              $valF['date_limite'] =  $this->moisdate($valF['date_complet'],$valF['delai']);          if ( count($tabRestriction) > 0 ){
784              $valF['date_notification_delai'] =  $this->moisdate($valF['date_complet'],1);              
785              break;              $res[0] = $this->getRestrictionValue($tabRestriction[0]);
786          case "notification" :              
787              $valF['delai']= $this->valF['delai'];              //Calcul des variables
788              $valF['etat']= $this->valF['etat'];              for ( $j = 1 ; $j < count($tabRestriction) ; $j += 2 ) {
789              $valF['accord_tacite']= $this->valF['accord_tacite'];                  
790              // la date_complet est celle precedemment saisie                  //Variable de comparaison
791              $valF['date_complet']=$this->valF['archive_date_complet'];                  if ( strcmp( ">=", $tabRestriction[$j] ) == 0 ||
792              $valF['date_limite'] =  $this->moisdate($valF['date_complet'],$valF['delai']);                       strcmp( "<=", $tabRestriction[$j]) ==0 ){
793              $valF['date_notification_delai'] =  $this->moisdate($valF['date_complet'],1);                      
794              // la date du courrier ne doit pas etre depasse par rapport au delai de                      $comp = $tabRestriction[$j];
795              // notification    [verify notification date]                      $res[++$i] = $this->getRestrictionValue($tabRestriction[$j+1]);
796              if($this->valF['archive_date_notification_delai']<$this->valF['datecourrier'])                  }
797                  $this->msg=$this->msg."<br><img src='../img/erreur.gif'> "._("date_notification_delai")." ".                  // Fait l'addition
798                  $this->valF['archive_date_notification_delai']." < "._('datecourrier');                  elseif ( strcmp( "+", $tabRestriction[$j]) == 0 ){
799              //                      
800              break;                     $res[$i] =  $this->moisdate( $res[$i], $this->getRestrictionValue($tabRestriction[$j+1]) );
801          case "retour" :                  }
802              $valF['delai']= $this->valF['delai'];              }
803              $valF['etat']= $this->valF['etat'];          }
804              $valF['accord_tacite']= $this->valF['accord_tacite'];                  
805              // la date_complet est celle de l evenement          // Effectue le test
806              $valF['date_complet']= $this->valF['datecourrier'];          if ( strcmp($comp, ">=") == 0 ){
807              $valF['date_limite'] =  $this->moisdate($valF['date_complet'],$valF['delai']);              
808              $valF['date_notification_delai'] =  $this->moisdate($valF['date_complet'],1);              if ( $res[0] >= $res[1] || $res[0] == "" ){
809              break;                  
810          case "rejet" :                  return true;
811              //$valF['delai']=0;   // *** delai a garder pour etat dpc              }
812              $valF['etat']= $this->valF['etat'];              else {
813              $valF['accord_tacite']= $this->valF['accord_tacite'];                  
814              // la date rejet est initialisee                  return false;
815              $valF['date_rejet']= $this->valF['datecourrier'];              }
816              // les dates de depart et fin d instruction sont annulées          }
817              $valF['date_limite'] =null;          elseif ( strcmp($comp, "<=") == 0 ){
818              $valF['date_notification_delai'] =null;  
819              $valF['date_complet']=null;              if ( $res[0] <= $res[1] || $res[1] == "" ){
820              break;  
821          case "majoration" :                  return true;
822              $valF['delai']= $this->valF['archive_delai']+$this->valF['delai'];              }
823              $valF['etat']= $this->valF['etat'];              else {
824              $valF['accord_tacite']= $this->valF['accord_tacite'];  
825              $valF['date_complet']=$this->valF['archive_date_complet'];                  return false;
826              // majoration de la date limite              }
827              $valF['date_limite'] =  $this->moisdate($valF['date_complet'],$valF['delai']);          }
828              $valF['date_notification_delai'] =  $this->moisdate($valF['date_complet'],1);          
829              // la date du courrier ne doit pas etre depasse par rapport au delai de          return true;
830              // notification      }
831              if($this->valF['archive_date_notification_delai']<$this->valF['datecourrier'])      
832                  $this->msg=$this->msg."<br><img src='../img/erreur.gif'>"._("date_notification_delai").      //Retourne la valeur de valF si $restrictionValue n'est pas un chiffre, le chiffre sinon
833              $this->valF['archive_date_notification_delai']." < "._('datecourrier');      function getRestrictionValue($restrictionValue){
834              break;          
835          case "acceptation" :          return ( is_numeric($restrictionValue) ) ?
836              $valF['etat']= $this->valF['etat'];              $restrictionValue :
837              $valF['date_decision']= $this->valF['datecourrier'];              $this->valF[$restrictionValue];
838              $valF['avis']= $this->valF['avis'];      }
839              // date de validite = date de l evenement + delai      
840              $valF['date_validite'] =  $this->moisdate($this->valF['datecourrier'],$this->valF['delai']);      function regle($regle){
841                 break;          $temp = explode ("+",$regle);
842          case "refus" :          //echo '|'.$regle;
843              $valF['etat']= $this->valF['etat'];          // cas rejet
844              $valF['date_decision']= $this->valF['datecourrier'];          if($regle=="null") // 1 dimension -> null
845              $valF['avis']= $this->valF['avis'];              return null;
846              break;          if(sizeof($temp)==1) // 1 dimension
847          case "prolongation" :              if($temp[0]=="archive_date_depot") // initialisation avec le depot
848              $valF['date_validite'] =  $this->moisdate($this->valF['archive_date_validite'],$this->valF['delai']);                  return $this->$regle;
849              break;              else // cas general
850          case "sursis" :                  return $this->valF[$regle];
851              $valF['date_limite'] =  $this->moisdate($this->valF['datecourrier'],$this->valF['delai']);          if(sizeof($temp)==2){ // 2 dimensions
852              $valF['etat']= $this->valF['etat'];              if($temp[0]=="archive_date_depot") //initialisation avec le depot
853              $valF['accord_tacite']= $this->valF['accord_tacite'];                  if(is_numeric($temp[1]))
854              $valF['avis']= $this->valF['avis'];                      return  $this->moisdate($this->$temp[0], $temp[1]);  
855              $valF['date_decision']= $this->valF['datecourrier'];                  else
856              $temp = $valF['date_limite'];                      return  $this->moisdate($this->$temp[0], $this->valF[$temp[1]]);
857              $valF['date_validite']= $this->moisdate($temp,2);              if($temp[0]=="archive_delai") // majoration de delai
858              break;                  return  $this->valF[$temp[0]]+$this->valF[$temp[1]];
859          case "execution" :              // cas general 2 dimensions
860              $valF['etat']= $this->valF['etat'];              if(is_numeric($temp[1]))
861              $valF['date_chantier'] =  $this->valF['datecourrier'];                  return $this->moisdate($this->valF[$temp[0]], $temp[1]);
862              //echo $this->msg=$this->msg.$valF['date_chantier']."";              else              
863              break;                 return  $this->moisdate($this->valF[$temp[0]], $this->valF[$temp[1]]);
864          case "achevement" :          }
865              $valF['etat']= $this->valF['etat'];          if(sizeof($temp)==3){ // 3 dimensions
866              $valF['date_achevement'] = $this->valF['datecourrier'];              // cas date de validite de sursis
867              break;              if(is_numeric($temp[1]))
868          case "archivage" :                  $temp1 = $this->moisdate($this->valF[$temp[0]], $temp[1]);
869              $valF['etat']= $this->valF['etat'];              else              
870              $valF['date_conformite'] = $this->valF['datecourrier'];                  $temp1 = $this->moisdate($this->valF[$temp[0]], $this->valF[$temp[1]]);
871              break;              if(is_numeric($temp[2]))
872                    return $this->moisdate($temp1, $temp[2]);
873                else
874                    return $this->moisdate($temp1, $this->valF[$temp[2]]);
875            }
876        }
877        
878        
879    
880        function triggerajouterapres($id,&$db,$val,$DEBUG) {
881            /**
882             * Mise à jour des valeurs du dossier en fonction des valeurs calculées
883             * par l'action
884             */
885            $this->getValEvenement();
886            // Initialisation
887            $valF = "";
888            // état de complétude actuel du dossier
889            $incompletude =  $this->dossierIncomplet();
890    
891            if($incompletude === FALSE) {
892                // Si l'événement d'instruction est de type incompletude
893                if($this->valEvenement['type'] == "incompletude") {
894                    // On marque le dossier en incomplétude pour application des actions
895                    $incompletude = TRUE;
896                    // Set du flag incomplétude de la table dossier
897                    $valF['incompletude'] = TRUE;
898                    // Enregistrement de l'état dans la variable provisoire
899                    $valF['etat_pendant_incompletude'] = $this->valF['archive_etat'];
900                }
901            } else {
902                // Si l'evenement d'instruction est de type retour ou contient une
903                // decision, on sort d'incomplétude
904                if($this->valEvenement['type'] == "retour" OR
905                   $this->valEvenement['avis_decision'] != NULL) {
906                    // On enlève la marque d'incomplétude pour application des actions
907                    $incompletude = FALSE;
908                    // On enlève le flag d'incomplétude sur l'enregistrement de la table dossier
909                    $valF['incompletude'] = FALSE;
910                     // Restauration de l'état depuis l'état provisoire
911                    $valF['etat'] = $this->valF['archive_etat_pendant_incompletude'];
912                    // On vide la variable provisoire ainsi que le délai de complétude
913                    // et la date limite de complétude
914                    $valF['etat_pendant_incompletude'] = NULL;
915                    $valF['delai_incompletude'] = NULL;
916                    $valF['date_limite_incompletude'] = NULL;
917                }
918            }
919            // Récupération des paramètres de l'action
920            $sql = "SELECT * FROM ".DB_PREFIXE."action
921            WHERE action='".$this->valF['action']."'";
922            $res = $db->query($sql);
923            $this->addToLog("triggerajouterapres(): db->query(\"".$sql."\");", VERBOSE_MODE);
924            if (database::isError($res)) {
925                die($res->getMessage());
926            }
927            while ($row=& $res->fetchRow(DB_FETCHMODE_ASSOC)) {
928    
929                // pour chacune des regles, on applique la regle
930                if($row['regle_delai']!=''){
931                    $valF['delai'] = $this->regle($row['regle_delai']);
932                }
933                if($row['regle_accord_tacite']!=''){
934                    $valF['accord_tacite'] = $this->regle($row['regle_accord_tacite']);
935                }
936                if($row['regle_avis']!=''){
937                    $valF['avis_decision'] = $this->regle($row['regle_avis']);
938                }
939                if($row['regle_date_limite']!=''){
940                    $valF['date_limite']= $this->regle($row['regle_date_limite']);
941                }
942                if($row['regle_date_complet']!=''){
943                    $valF['date_complet']= $this->regle($row['regle_date_complet']);
944                }
945                if($row['regle_date_dernier_depot']!=''){
946                    $valF['date_dernier_depot']= $this->regle($row['regle_date_dernier_depot']);
947                }
948                if($row['regle_date_notification_delai']!=''){
949                    $valF['date_notification_delai']= $this->regle($row['regle_date_notification_delai']);
950                }
951                if($row['regle_date_decision']!=''){
952                    $valF['date_decision']= $this->regle($row['regle_date_decision']);
953                }
954                if($row['regle_date_rejet']!=''){
955                    $valF['date_rejet']= $this->regle($row['regle_date_rejet']);
956                }
957                if($row['regle_date_validite']!=''){
958                    $valF['date_validite']= $this->regle($row['regle_date_validite']);
959                }
960                if($row['regle_date_chantier']!=''){
961                    $valF['date_chantier']= $this->regle($row['regle_date_chantier']);
962                }
963                if($row['regle_date_achevement']!=''){
964                    $valF['date_achevement']= $this->regle($row['regle_date_achevement']);
965                }
966                if($row['regle_date_conformite']!=''){
967                    $valF['date_conformite']= $this->regle($row['regle_date_conformite']);
968                }
969                if($row['regle_date_limite_incompletude']!=''){
970                    $valF['date_limite_incompletude']= $this->regle($row['regle_date_limite_incompletude']);
971                }
972                if($row['regle_delai_incompletude']!=''){
973                    $valF['delai_incompletude']= $this->regle($row['regle_delai_incompletude']);
974                }
975                if($row['regle_etat']!=''){
976                    // Si on est dans le cas général ou qu'on est en incomplétude et
977                    // qu'on a un événement de type incomplétude alors : on stocke
978                    // l'état dans la variable courante
979                    if ($incompletude == FALSE OR $this->valEvenement['type'] == "incompletude") {
980                        $valF['etat'] = $this->regle($row['regle_etat']);
981                    } else {
982                        $valF['etat_pendant_incompletude'] = $this->regle($row['regle_etat']);
983                    }
984                }
985    
986          default:              if($this->valEvenement['evenement_suivant_tacite'] != '') {
987          if ($this->valF['etat']!="")                  // Si on est pas en incomplétude on stocke l'événement tacite
988             $valF['etat']= $this->valF['etat'];                  //de l'événement dans la variable courante
989          }// end switch                  if ($incompletude == FALSE) {
990                            $valF['evenement_suivant_tacite'] = $this->valEvenement['evenement_suivant_tacite'];
991          // mise à jour dossier [modify dossier]                  } else {
992          if($valF!=""){                      $valF['evenement_suivant_tacite_incompletude'] = $this->valEvenement['evenement_suivant_tacite'];
993              $cle= " dossier = '".$this->valF['dossier']."'";                  }
994              $res1= $db->autoExecute('dossier',$valF,DB_AUTOQUERY_UPDATE,$cle);              }
995              if (database::isError($res1))          }
996            // Si des valeurs ont été calculées alors on met à jour l'enregistrement
997            if ($valF != "") {
998                // On met à jour le dossier
999                $cle = " dossier='".$this->valF['dossier']."'";
1000                $res1 = $db->autoExecute(DB_PREFIXE.'dossier', $valF, DB_AUTOQUERY_UPDATE, $cle);
1001                $this->addToLog("triggerajouterapres(): db->autoexecute(\"".DB_PREFIXE."dossier\", ".print_r($valF, true).", DB_AUTOQUERY_UPDATE, \"".$cle."\");", VERBOSE_MODE);
1002                if (database::isError($res1)) {
1003                  die($res->getMessage());                  die($res->getMessage());
1004              if ($DEBUG == 1)              }
1005                echo "La requête de mise à jour est effectuée.<br>";              // Affichage d'informations à l'utilisateur
1006              $this->msg=$this->msg."<br>"._('enregistrement')." ".              $this->addToMessage(_('enregistrement')." ".$this->valF['dossier']." "._('table')." dossier [".$db->affectedRows()." "._('enregistrement')." "._('mis_a_jour')."]");
1007              $this->valF['dossier']." "._('table')." dossier [".          }
1008              $db->affectedRows()." "._('enregistrement').  
1009              " "._('mis_a_jour')."]" ;          /**
1010             * REFERENTIEL ERP
1011             */
1012            // verification si envoi vers ERP est active
1013            if ($this->f->getParameter('option_erp') != "") {
1014                // la nature du dossier
1015                $nature_dossier = substr($this->idxformulaire,0,2);
1016                //
1017                $sql = "SELECT erp
1018                FROM ".DB_PREFIXE."dossier
1019                WHERE dossier='".$this->valF['dossier']."'";
1020                $dossier_erp = $this->db->getone($sql);
1021                $this->addToLog("triggerajouterapres(): db->getone(\"".$sql."\");", VERBOSE_MODE);
1022                if (database::isError($res)) {
1023                    die($res->getMessage());
1024                }
1025                //
1026                $sql = "SELECT libelle
1027                FROM ".DB_PREFIXE."evenement
1028                WHERE evenement='".$this->valF['evenement']."'";
1029                $evenement_libelle = $this->db->getone($sql);
1030                $this->addToLog("triggerajouterapres(): db->getone(\"".$sql."\");", VERBOSE_MODE);
1031                if (database::isError($res)) {
1032                    die($res->getMessage());
1033                }
1034                //
1035                if ($dossier_erp == 't') {
1036                    // envoi du message en cas d'un PC qui est ERP et sur lequel un evenement
1037                    // d'acceptation etait fait
1038                    if ($nature_dossier ==
1039                            $this->f->getParameter('erp_evenement_accepter_dossier_PC')
1040                        && $this->valF['evenement'] ==
1041                            $this->f->getParameter('erp_evenement_accepter_sans_reserve')) {
1042                        $msgenque = new MessageEnqueuer();
1043                        $msgenque->setDossierInstructionIdentifier($this->valF['dossier']);
1044                        $msgenque->setDecision($evenement_libelle);
1045                        $msgenque->enqueueMessage($msgenque::$ERP_ARRETE_PC_EFFECTUE);
1046                    }
1047                    if ($this->valF['evenement'] ==
1048                            $this->f->getParameter('erp_evenement_refuser_dossier')) {
1049                        $msgenque = new MessageEnqueuer();
1050                        $msgenque->setDossierInstructionIdentifier($this->valF['dossier']);
1051                        $msgenque->enqueueMessage($msgenque::$ERP_DECISION_CONFORMITE_EFFECTUE);                
1052                    }
1053                }
1054            } // fin de if ($this->f->getParameter('option_erp') != "")
1055    
1056            // Mise à jour des données du dossier d'autorisation
1057            require_once "../obj/dossier_autorisation.class.php";
1058            $da = new dossier_autorisation($this->getDossierAutorisationFromDossier($this->valF['dossier']), $this->db, DEBUG);
1059            $da->majDossierAutorisation();
1060        }    
1061        function triggermodifier($id,&$db,$val,$DEBUG) {
1062            // Ajout de l'arrêté dans la GED
1063            if ($this->valF['numero_arrete'] != $this->getVal('numero_arrete')
1064                AND $this->valF["om_fichier_instruction"] != "") {
1065                $file = $this->f->storage->get($this->valF["om_fichier_instruction"]);
1066                if(isset($file) and $file != null) {
1067                    // Récupération des métadonnées calculées après validation
1068                    $spe_metadata = $this->getMetadata("document_arrete");
1069                    $pdf_output = $file["file_content"];
1070                    //Métadonnées du document
1071                    $metadata = array(
1072                        'filename' => 'instruction_'.$this->valF[$this->clePrimaire].'.pdf',
1073                        'mimetype' => 'application/pdf',
1074                        'size' => strlen($pdf_output)
1075                    );
1076                    $metadata = array_merge($metadata, $spe_metadata);
1077                    
1078                    //Si le document a déjà été finalisé
1079                    //on met à jour le document mais pas son uid
1080                    if ( $this->getVal("document_arrete") != '' ){
1081                        $uid = $this->f->storage->update(
1082                            $this->getVal("document_arrete"), $pdf_output, $metadata);
1083                    }
1084                    //Sinon, on joute le document et on récupère son uid
1085                    else {
1086                        //Stockage du PDF
1087                        $uid = $this->f->storage->create($pdf_output, $metadata);
1088                    }
1089                    if($uid != OP_FAILURE) {
1090                        $this->valF["document_arrete"] = $uid;
1091                    }
1092                }
1093                
1094          }          }
1095      }      }
1096        function triggermodifierapres($id,&$db,$val,$DEBUG) {
1097            /**
1098             * L'objectif ici est d'effectuer les recalculs de date dans le dossier
1099             * si la date de l'evenement est modifiee
1100             */
1101            // Initialisation
1102            $valF = "";
1103            // Récupération de l'action correspondante à l'événement
1104            $sql = "SELECT action
1105            FROM ".DB_PREFIXE."evenement
1106            WHERE evenement=".$this->valF['evenement'];
1107            $action = $db->getOne($sql);
1108            $this->addToLog("triggermodifierapres(): db->getone(\"".$sql."\");", VERBOSE_MODE);
1109            if (database::isError($action)) {
1110                die($action->getMessage());
1111            }
1112    
1113            // Récupération de tous les paramètres de l'événement sélectionné
1114            $sql = "SELECT * FROM ".DB_PREFIXE."evenement
1115            WHERE evenement=".$this->valF['evenement'];
1116            $res = $db->query($sql);
1117            $this->addToLog("triggerajouter(): db->query(\"".$sql."\");", VERBOSE_MODE);
1118            if (database::isError($res)) {
1119                die($res->getMessage());
1120            }
1121            while ($row=& $res->fetchRow(DB_FETCHMODE_ASSOC)) {
1122                // Si la date de retour signature est éditée on vérifie si il existe un événement automatique
1123                if ($this->getVal('date_retour_signature') == "" AND
1124                    $this->valF['date_retour_signature'] != "" AND
1125                    $row['evenement_retour_signature'] != "") {
1126                    $new_instruction = new instruction("]", $db, $DEBUG);
1127                    // Création d'un tableau avec la liste des champs de l'instruction
1128                    foreach($new_instruction->champs as $champ) {
1129                        $valNewInstr[$champ] = "";
1130                    }
1131                    // Définition des valeurs de la nouvelle instruction
1132                    $valNewInstr["evenement"] = $row['evenement_retour_signature'];
1133                    $valNewInstr["destinataire"] = $this->valF['destinataire'];
1134                    $valNewInstr["dossier"] = $this->valF['dossier'];
1135                    $valNewInstr["date_evenement"] = date("d/m/Y");
1136                    $new_instruction->ajouter($valNewInstr,$db, $DEBUG);
1137                }
1138                // Si la date de retour AR est éditée on vérifie si il existe un événement automatique
1139                if ($this->getVal('date_retour_rar') == "" AND
1140                    $this->valF['date_retour_rar'] != "" AND
1141                    $row['evenement_retour_ar'] != "" ) {
1142                    $new_instruction = new instruction("]", $db, $DEBUG);
1143                    // Création d'un tableau avec la liste des champs de l'instruction
1144                    foreach($new_instruction->champs as $champ) {
1145                        $valNewInstr[$champ] = "";
1146                    }
1147                    // Définition des valeurs de la nouvelle instruction
1148                    $valNewInstr["evenement"] = $row['evenement_retour_ar'];
1149                    $valNewInstr["destinataire"] = $this->valF['destinataire'];
1150                    $valNewInstr["dossier"] = $this->valF['dossier'];
1151                    $valNewInstr["date_evenement"] = date("d/m/Y");
1152                    $new_instruction->ajouter($valNewInstr,$db, $DEBUG);
1153                }
1154            }
1155    
1156            // Récupération des paramètres de l'action
1157            $sql = "SELECT * FROM ".DB_PREFIXE."action
1158            WHERE action='".$action."'";
1159            $res = $db->query($sql);
1160            $this->addToLog("triggermodifierapres(): db->query(\"".$sql."\");", VERBOSE_MODE);
1161            if (database::isError($res)) {
1162                die($res->getMessage());
1163            }
1164            while ($row=& $res->fetchRow(DB_FETCHMODE_ASSOC)){
1165                // application des regles sur le courrier + delai
1166                if(preg_match("/date_evenement/",$row['regle_date_limite'])){
1167                    $valF['date_limite']= $this->regle($row['regle_date_limite']);
1168                }
1169                if(preg_match("/date_evenement/",$row['regle_date_complet'])){
1170                    $valF['date_complet']= $this->regle($row['regle_date_complet']);
1171                }
1172                if(preg_match("/date_evenement/",$row['regle_date_dernier_depot'])){
1173                    $valF['date_dernier_depot']= $this->regle($row['regle_date_dernier_depot']);
1174                }
1175                if(preg_match("/date_evenement/",$row['regle_date_notification_delai'])){
1176                    $valF['date_notification_delai']= $this->regle($row['regle_date_notification_delai']);
1177                }
1178                if(preg_match("/date_evenement/",$row['regle_date_decision'])){
1179                    $valF['date_decision']= $this->regle($row['regle_date_decision']);
1180                }
1181                if(preg_match("/date_evenement/",$row['regle_date_rejet'])){
1182                    $valF['date_rejet']= $this->regle($row['regle_date_rejet']);
1183                }
1184                if(preg_match("/date_evenement/",$row['regle_date_validite'])){
1185                    $valF['date_validite']= $this->regle($row['regle_date_validite']);
1186                }
1187                if(preg_match("/date_evenement/",$row['regle_date_chantier'])){
1188                    $valF['date_chantier']= $this->regle($row['regle_date_chantier']);
1189                }
1190                if(preg_match("/date_evenement/",$row['regle_date_achevement'])){
1191                    $valF['date_achevement']= $this->regle($row['regle_date_achevement']);
1192                }
1193                if(preg_match("/date_evenement/",$row['regle_date_conformite'])){
1194                    $valF['date_conformite']= $this->regle($row['regle_date_conformite']);
1195                }
1196            }
1197            // Si des valeurs ont été calculées alors on met à jour l'enregistrement
1198            if ($valF != "") {
1199                // On met à jour le dossier
1200                $cle = " dossier='".$this->valF['dossier']."'";
1201                $res1 = $db->autoExecute(DB_PREFIXE.'dossier', $valF, DB_AUTOQUERY_UPDATE, $cle);
1202                $this->addToLog("triggerajouterapres(): db->autoexecute(\"".DB_PREFIXE."dossier\", ".print_r($valF, true).", DB_AUTOQUERY_UPDATE, \"".$cle."\");", VERBOSE_MODE);
1203                if (database::isError($res1)) {
1204                    die($res->getMessage());
1205                }
1206                // Affichage d'informations à l'utilisateur
1207                $this->addToMessage(_('enregistrement')." ".$this->valF['dossier']." "._('table')." dossier [".$db->affectedRows()." "._('enregistrement')." "._('mis_a_jour')."]");
1208            }
1209    
1210            /**
1211             * REFERENTIEL ARRETE
1212             */
1213            if ($this->f->getParameter('option_referentiel_arrete') != "") {
1214                if ($this->valF['date_retour_signature'] != $this->getVal('date_retour_signature')) {
1215                    $msgenque = new MessageEnqueuer();
1216                    $sqlArrete = "SELECT instruction.signataire_arrete as \"ws_DA_In_Signataire\",
1217                                        signataire_arrete.nom as \"ws_DA_In_Sign_Nom\",
1218                                        signataire_arrete.prenom as \"ws_DA_In_Sign_Prenom\",
1219                                        signataire_arrete.qualite as \"ws_DA_In_Sign_Qualite\",
1220                                        instruction.date_evenement as \"ws_DA_In_Dte_Redac\",
1221                                        '' as \"ws_DA_In_lieu_Redac\",
1222                                        instruction.dossier as \"ws_DA_In_N_Doss_DAS\",
1223                                        '' as \"ws_DA_In_Sigle\",
1224                                        instruction.etat as \"ws_DA_In_Decision\",
1225                                        dossier.date_depot as \"ws_DA_In_Dte_Depot_Dem\",
1226                                        dossier.terrain_numero as \"ws_DA_In_N_Voie\",
1227                                        '' as \"ws_DA_In_Type_Voie\",
1228                                        dossier.complement as \"ws_DA_In_Adresse1\",
1229                                        dossier.terrain_adresse_lieu_dit as \"ws_DA_In_Adresse2\",
1230                                        dossier.terrain_adresse_code_postal as \"ws_DA_In_CP\",
1231                                        dossier.terrain_adresse_localite as \"ws_DA_In_Ville\",
1232                                        dossier.terrain_references_cadastrales as \"ws_DA_In_Nb_Parcelle\",
1233                                        '' as \"ws_DA_In_Detail_Parcelle\",
1234                                        CONCAT(donnees_techniques.am_projet_desc,' ',donnees_techniques.co_projet_desc) as \"ws_DA_In_Nature_Trvx\",
1235                                        '' as \"ws_DA_In_Destination_Trvx\",
1236                                        dossier_autorisation_type_detaille.code as \"ws_DA_In_Type_Dos_Autoris\",
1237                                        COALESCE(particulier_nom,personne_morale_raison_sociale) as \"ws_DA_In_Nom_Petition\",
1238                                        COALESCE(particulier_prenom, personne_morale_denomination) as \"ws_DA_In_Prenom_Petition\",
1239                                        '' as \"ws_DA_In_Piece_GED\",
1240                                        instruction.date_retour_signature as \"ws_DA_In_Dte_Signature\"
1241                                FROM ".DB_PREFIXE."instruction
1242                                LEFT JOIN ".DB_PREFIXE."signataire_arrete ON
1243                                    instruction.signataire_arrete = signataire_arrete.signataire_arrete
1244                                LEFT JOIN ".DB_PREFIXE."dossier ON
1245                                    instruction.dossier = dossier.dossier
1246                                LEFT JOIN ".DB_PREFIXE."lien_dossier_demandeur ON
1247                                    lien_dossier_demandeur.dossier = dossier.dossier
1248                                LEFT JOIN ".DB_PREFIXE."demandeur ON
1249                                    lien_dossier_demandeur.demandeur = demandeur.demandeur
1250                                LEFT JOIN ".DB_PREFIXE."dossier_instruction_type ON
1251                                    dossier.dossier_instruction_type = dossier_instruction_type.dossier_instruction_type
1252                                LEFT JOIN ".DB_PREFIXE."dossier_autorisation_type_detaille ON
1253                                    dossier_instruction_type.dossier_autorisation_type_detaille =
1254                                        dossier_autorisation_type_detaille.dossier_autorisation_type_detaille
1255                                LEFT JOIN ".DB_PREFIXE."donnees_techniques ON
1256                                        donnees_techniques.dossier_instruction = dossier.dossier
1257                                WHERE instruction.instruction = ".$this->valF['instruction'];
1258                    $resArrete = $this->db->query($sqlArrete);
1259                    $this->f->addToLog("triggerModifierApres(): db->query(\"".$sqlArrete."\");", VERBOSE_MODE);
1260                    if ( database::isError($resArrete)){
1261                        die();
1262                    }
1263            
1264      // trigger before delete                  $rowArrete = $resArrete->fetchRow(DB_FETCHMODE_ASSOC);
1265                    $msgenque->setArreteInfo($rowArrete);
1266                    $msgenque->enqueueMessage($msgenque::$ARRETE_ENVOI);                
1267                }
1268            }
1269    
1270            // Mise à jour des données du dossier d'autorisation
1271            require_once "../obj/dossier_autorisation.class.php";
1272            $da = new dossier_autorisation($this->getDossierAutorisationFromDossier($this->valF['dossier']), $this->db, DEBUG);
1273            $da->majDossierAutorisation();
1274        }
1275    
1276        /**
1277         * Méthode de récupération des métadonnées arrêtés dans la base de données,
1278         * les données sont stockés dans l'attribut $this->metadonneesArrete
1279         */
1280        function getArreteMetadata() {
1281            $sqlArrete = "SELECT    signataire_arrete.nom as \"nomsignataire\",
1282                                    signataire_arrete.qualite as \"qualitesignataire\",
1283                                    instruction.date_evenement as \"datesignaturearrete\",
1284                                    instruction.etat as \"decisionarrete\",
1285                                    dossier.terrain_adresse_voie_numero as \"ap_numrue\",
1286                                    dossier.complement as \"ap_nomdelavoie\",
1287                                    dossier.terrain_adresse_code_postal as \"ap_codepostal\",
1288                                    dossier.terrain_adresse_localite as \"ap_ville\"
1289                                FROM ".DB_PREFIXE."instruction
1290                                LEFT JOIN ".DB_PREFIXE."signataire_arrete ON
1291                                    instruction.signataire_arrete = signataire_arrete.signataire_arrete
1292                                LEFT JOIN ".DB_PREFIXE."dossier ON
1293                                    instruction.dossier = dossier.dossier
1294                                LEFT JOIN ".DB_PREFIXE."donnees_techniques ON
1295                                        donnees_techniques.dossier_instruction = dossier.dossier
1296                                WHERE instruction.instruction = ".$this->valF['instruction'];
1297            $resArrete = $this->db->query($sqlArrete);
1298            $this->f->addToLog("triggerModifierApres(): db->query(\"".$sqlArrete."\");", VERBOSE_MODE);
1299            if ( database::isError($resArrete)){
1300                die();
1301            }
1302    
1303            $this->metadonneesArrete = $resArrete->fetchRow(DB_FETCHMODE_ASSOC);
1304        }
1305    
1306        // {{{
1307        // Méthodes de récupération des métadonnées arrêté
1308        /**
1309         * @return string Retourne le numéro d'arrêté
1310         */
1311        function getNumArrete() {
1312            return $this->valF['numero_arrete'];
1313        }
1314        /**
1315         * @return string ads
1316         */
1317        function getSpecialiteArrete() {
1318            return "ADS";
1319        }
1320        /**
1321         * @return string decision
1322         */
1323        function getDecisionArrete() {
1324            if (empty($this->metadonneesArrete)) {
1325                $this->getArreteMetadata();
1326            }
1327            return $this->metadonneesArrete["decisionarrete"];
1328        }
1329        /**
1330         * @return chaîne vide
1331         */
1332        function getChketatReglementaire() {
1333            return "";
1334        }
1335        /**
1336         * @return boolean de notification au pétitionnaire
1337         */
1338        function getChkNotification() {
1339            if( isset($this->valF["date_retour_rar"]) ) {
1340                return true;
1341            } else {
1342                return false;
1343            }
1344        }
1345        /**
1346         * @return date de notification au pétitionnaire
1347         */
1348        function getDateNotification() {
1349            return date("d/m/Y", strtotime($this->valF["date_retour_rar"]));
1350        }
1351        /**
1352         * @return chaîne vide
1353         */
1354        function getChkCreationdroit() {
1355            return "";
1356        }
1357        /**
1358         * @return chaîne vide
1359         */
1360        function getChkPublication() {
1361            return "";
1362        }
1363        /**
1364         * @return chaîne vide
1365         */
1366        function getDatePublication() {
1367            return "";
1368        }
1369        /**
1370         * @return boolean check si le document est passé au contrôle de légalité
1371         */
1372        function getChkControleLegalite() {
1373            if( isset($this->valF["date_retour_controle_legalite"]) ) {
1374                return true;
1375            } else {
1376                return false;
1377            }
1378        }
1379        /**
1380         * @return date de signature de l'arrêté
1381         */
1382        function getDateSignatureArrete() {
1383            return date("d/m/Y", strtotime($this->valF['date_retour_signature']));
1384        }
1385        /**
1386         * @return string nom du signataire
1387         */
1388        function getNomSignataire() {
1389            if (empty($this->metadonneesArrete)) {
1390                $this->getArreteMetadata();
1391            }
1392            return $this->metadonneesArrete["nomsignataire"];
1393        }
1394        /**
1395         * @return string qualité du signataire
1396         */
1397        function getQualiteSignataire() {
1398            if (empty($this->metadonneesArrete)) {
1399                $this->getArreteMetadata();
1400            }
1401            return $this->metadonneesArrete["qualitesignataire"];
1402        }
1403        /**
1404         * @return string chaîne vide
1405         */
1406        function getChkDelegation() {
1407            return "";
1408        }
1409        /**
1410         * @return string numéro du terrain
1411         */
1412        function getAp_numRue() {
1413            if (empty($this->metadonneesArrete)) {
1414                $this->getArreteMetadata();
1415            }
1416            return $this->metadonneesArrete["ap_numrue"];
1417        }
1418        /**
1419         * @return string nom de la rue du terrain
1420         */
1421        function getAp_nomDeLaVoie() {
1422            if (empty($this->metadonneesArrete)) {
1423                $this->getArreteMetadata();
1424            }
1425            return $this->metadonneesArrete["ap_nomdelavoie"];
1426        }
1427        /**
1428         * @return string code postal du terrain
1429         */
1430        function getAp_codePostal() {
1431            if (empty($this->metadonneesArrete)) {
1432                $this->getArreteMetadata();
1433            }
1434            return $this->metadonneesArrete["ap_codepostal"];
1435        }
1436        /**
1437         * @return string ville du terrain
1438         */
1439        function getAp_ville() {
1440            if (empty($this->metadonneesArrete)) {
1441                $this->getArreteMetadata();
1442            }
1443            return $this->metadonneesArrete["ap_ville"];
1444        }
1445    
1446        // Fin des méthodes de récupération des métadonnées
1447        // }}}
1448    
1449      function triggersupprimer($id,&$db,$val,$DEBUG) {      function triggersupprimer($id,&$db,$val,$DEBUG) {
1450          // archive en instruction (si suppression) [archive if delete instruction]          /**
1451          $valF['delai']=$val['archive_delai'];           * L'objectif ici est de repositionner les valeurs récupérées en
1452          $valF['accord_tacite']=$val['archive_accord_tacite'];           * archive dans le dossier d'instruction avant de supprimer l'événement
1453          $valF['etat']=$val['archive_etat'];           * d'instruction
1454          if($val['archive_avis']=='')           */
1455              $valF['avis']= null;          // Mise à jour des 4 valeurs modifiées par l'action
1456          else          $valF['delai'] = $val['archive_delai'];
1457              $valF['avis']=$val['archive_avis'];          $valF['accord_tacite'] = $val['archive_accord_tacite'];
1458          // if= compatibilite pgsql          $valF['etat'] = $val['archive_etat'];
1459          if($val['archive_date_complet']!='')          if ($val['archive_avis'] != '') {
1460              $valF['date_complet']=$val['archive_date_complet'];              $valF['avis_decision'] = $val['archive_avis'];
1461          if($val['archive_date_rejet']!='')          } else {
1462              $valF['date_rejet']= $val['archive_date_rejet'];              $valF['avis_decision'] = NULL;
1463          if($val['archive_date_limite']!='')          }
1464              $valF['date_limite']= $val['archive_date_limite'];          // Mise à jour des 10 dates avec la valeur présente dans le formulaire
1465          if($val['archive_date_notification_delai']!='')          // de suppression. Si la valeur de la date est vide alors on fixe
1466              $valF['date_notification_delai']= $val['archive_date_notification_delai'];          // à la valeur NULL
1467          if($val['archive_date_decision']!='')          //
1468              $valF['date_decision']= $val['archive_date_decision'];          if ($val['archive_date_complet'] != '') {
1469          if($val['archive_date_validite']!='')              $valF['date_complet'] = $val['archive_date_complet'];
1470              $valF['date_validite']= $val['archive_date_validite'];          } else {
1471          if($val['archive_date_achevement']!='')              $valF['date_complet'] = NULL;
1472              $valF['date_achevement']= $val['archive_date_achevement'];          }
1473          if($val['archive_date_chantier']!='')          if ($val['archive_date_dernier_depot'] != '') {
1474              $valF['date_chantier']= $val['archive_date_chantier'];              $valF['date_dernier_depot'] = $val['archive_date_dernier_depot'];
1475          if($val['archive_date_conformite']!='')          } else {
1476              $valF['date_conformite']= $val['archive_date_conformite'];              $valF['date_dernier_depot'] = NULL;
1477                    }
1478          $cle= " dossier = '".$val['dossier']."'";          if ($val['archive_date_rejet'] != '') {
1479          $res= $db->autoExecute('dossier',$valF,DB_AUTOQUERY_UPDATE,$cle);              $valF['date_rejet'] = $val['archive_date_rejet'];
1480          if (database::isError($res))          } else {
1481                $valF['date_rejet'] = NULL;
1482            }
1483            if ($val['archive_date_limite'] != '') {
1484                $valF['date_limite'] = $val['archive_date_limite'];
1485            } else {
1486                $valF['date_limite'] = NULL;
1487            }
1488            if ($val['archive_date_notification_delai'] != '') {
1489                $valF['date_notification_delai'] = $val['archive_date_notification_delai'];
1490            } else {
1491                $valF['date_notification_delai'] = NULL;
1492            }
1493            if ($val['archive_date_decision'] != '') {
1494                $valF['date_decision'] = $val['archive_date_decision'];
1495            } else {
1496                $valF['date_decision'] = NULL;
1497            }
1498            if ($val['archive_date_validite'] != '') {
1499                $valF['date_validite'] = $val['archive_date_validite'];
1500            } else {
1501                $valF['date_validite'] = NULL;
1502            }
1503            if ($val['archive_date_achevement'] != '') {
1504                $valF['date_achevement'] = $val['archive_date_achevement'];
1505            } else {
1506                $valF['date_achevement'] = NULL;
1507            }
1508            if ($val['archive_date_chantier'] != '') {
1509                $valF['date_chantier'] = $val['archive_date_chantier'];
1510            } else {
1511                $valF['date_chantier'] = NULL;
1512            }
1513            if ($val['archive_date_conformite'] != '') {
1514                $valF['date_conformite'] = $val['archive_date_conformite'];
1515            } else {
1516                $valF['date_conformite'] = NULL;
1517            }
1518            if ($val['archive_incompletude'] != '') {
1519                $valF['incompletude'] = $val['archive_incompletude'];
1520            } else {
1521                $valF['incompletude'] = NULL;
1522            }
1523            if ($val['archive_evenement_suivant_tacite'] != '') {
1524                $valF['evenement_suivant_tacite'] = $val['archive_evenement_suivant_tacite'];
1525            } else {
1526                $valF['evenement_suivant_tacite'] = NULL;
1527            }
1528            if ($val['archive_evenement_suivant_tacite_incompletude'] != '') {
1529                $valF['evenement_suivant_tacite_incompletude'] = $val['archive_evenement_suivant_tacite_incompletude'];
1530            } else {
1531                $valF['evenement_suivant_tacite_incompletude'] = NULL;
1532            }
1533            if ($val['archive_etat_pendant_incompletude'] != '') {
1534                $valF['etat_pendant_incompletude'] = $val['archive_etat_pendant_incompletude'];
1535            } else {
1536                $valF['etat_pendant_incompletude'] = NULL;
1537            }
1538            if ($val['archive_date_limite_incompletude'] != '') {
1539                $valF['date_limite_incompletude'] = $val['archive_date_limite_incompletude'];
1540            } else {
1541                $valF['date_limite_incompletude'] = NULL;
1542            }
1543            if ($val['archive_delai_incompletude'] != '') {
1544                $valF['delai_incompletude'] = $val['archive_delai_incompletude'];
1545            } else {
1546                $valF['delai_incompletude'] = NULL;
1547            }
1548            // On met à jour le dossier
1549            $cle = " dossier='".$val['dossier']."'";
1550            $res = $db->autoExecute(DB_PREFIXE.'dossier', $valF, DB_AUTOQUERY_UPDATE, $cle);
1551            $this->addToLog("triggersupprimer(): db->autoexecute(\"".DB_PREFIXE."dossier\", ".print_r($valF, true).", DB_AUTOQUERY_UPDATE, \"".$cle."\");", VERBOSE_MODE);
1552            if (database::isError($res)) {
1553              die($res->getMessage());              die($res->getMessage());
         else{  
             if ($DEBUG == 1)  
                 echo "La requête de mise à jour est effectuée.<br>";  
1554          }          }
1555            // Affichage d'informations à l'utilisateur
1556            $this->addToMessage(_("Suppression de l'instruction")." [".$db->affectedRows()." "._('enregistrement')." "._('mis_a_jour')."]");
1557    
1558        }
1559    
1560        function triggersupprimerapres($id,&$db,$val,$DEBUG) {
1561    
1562            // Mise à jour des données du dossier d'autorisation
1563            require_once "../obj/dossier_autorisation.class.php";
1564            $da = new dossier_autorisation($this->getDossierAutorisationFromDossier($val["dossier"]), $this->db, DEBUG);
1565            $da->majDossierAutorisation();
1566      }      }
1567    
1568      // =============================================      // =============================================
1569      // calcul de date avec ajout de mois (delais)      // calcul de date avec ajout de mois (delais)
1570      // [add months (delay) and calculation final date]      // [add months (delay) and calculation final date]
# Line 553  class instruction extends instruction_ge Line 1616  class instruction extends instruction_ge
1616      return $annee."-".$mois."-".$jour ;      return $annee."-".$mois."-".$jour ;
1617      }      }
1618    
1619        // Vérifie la restriction sur l'événement
1620        function verifier($val = array(), &$db, $DEBUG){
1621            parent::verifier($val, $db, $DEBUG);
1622    
1623            if ( isset($val['evenement']) && is_numeric($val['evenement'])){
1624            //Récupère la restriction
1625                $sql= "SELECT
1626                          restriction
1627                      FROM
1628                          ".DB_PREFIXE."evenement
1629                      WHERE
1630                          evenement =".$val['evenement'];
1631        
1632                $res = $db->query($sql);
1633                $this->addToLog("verifier(): db->query(\"".$sql."\");", VERBOSE_MODE);
1634                if (database::isError($res)) {
1635                    die($res->getMessage());
1636                }        
1637                $row=& $res->fetchRow(DB_FETCHMODE_ASSOC);
1638        
1639                //Test qu'une restriction est présente
1640                if ( isset($row['restriction']) && $row['restriction'] != "" ){
1641                    
1642                    //Test si la restriction est valide
1643                    if ( !$this->restrictionIsValid($row['restriction']) ){
1644                        
1645                        $this->correct=false;
1646                        $this->addToMessage(_("Restriction non valide"));
1647                    }
1648                    else {
1649                        
1650                        $this->correct = true;
1651                    }
1652                }
1653            }
1654    
1655            $this->updateDate("date_envoi_signature");
1656            $this->updateDate("date_retour_signature");
1657            $this->updateDate("date_envoi_rar");
1658            $this->updateDate("date_retour_rar");
1659            $this->updateDate("date_envoi_controle_legalite");
1660            $this->updateDate("date_retour_controle_legalite");
1661        }
1662    
1663        /**
1664         * Méthode permettant de récupérer toutes les valeurs de l'événement
1665         * sélectionné après validation du formulaire d'instruction
1666         *
1667         * @return array() veleurs de l'événement lié
1668         */
1669    
1670        private function getValEvenement() {
1671            if(!empty($this->valEvenement)) {
1672                return $this->valEvenement;
1673            } else {
1674                $sql = "SELECT * FROM ".DB_PREFIXE."evenement
1675                    WHERE evenement=".$this->valF['evenement'];
1676                $res = $this->db->query($sql);
1677                $this->addToLog("getValEvenement(): db->query(\"".$sql."\");", VERBOSE_MODE);
1678                if (database::isError($res)) {
1679                    die($res->getMessage());
1680                }
1681                $this->valEvenement = $res->fetchRow(DB_FETCHMODE_ASSOC);
1682                return $this->valEvenement;
1683            }
1684        }
1685    
1686        /**
1687         * Méthode permettant de savoir si le dossier lié à l'instruction à le flag
1688         * incompletude à true après validation du formulaire d'instruction
1689         *
1690         * @return boolean
1691         */
1692        private function dossierIncomplet() {
1693            $sql = "SELECT incompletude FROM ".DB_PREFIXE."dossier
1694                    WHERE dossier='".$this->valF['dossier']."'";
1695            $incompletude = $this->db->getOne($sql);
1696            $this->addToLog("dossierIncomplet(): db->query(\"".$sql."\");", VERBOSE_MODE);
1697            if (database::isError($incompletude)) {
1698                die($incompletude->getMessage());
1699            }
1700            if ($incompletude == 't') {
1701                return true;
1702            } else {
1703                return false;
1704            }
1705        }
1706        
1707        /**
1708         * Finalisation des documents.
1709         * @param  string $champ    champ du fichier à finaliser
1710         * @param  booleen $status  permet de définir si on finalise ou définalise
1711         * @param  string $sousform permet de savoir si se trouve dans un sousformulaire (passé au javascript)
1712         */
1713        function finaliser( $champ = '', $status, $sousform){
1714    
1715            //Si on finalise le document
1716            if ( $status == 1 ){
1717                
1718                //Génération du PDF
1719                $_GET['output'] = "string";
1720                $f = $this->f;
1721                include '../app/pdf_instruction.php';
1722                
1723                //Métadonnées du document
1724                $metadata = array(
1725                    'filename' => 'instruction_'.$idx.'.pdf',
1726                    'mimetype' => 'application/pdf',
1727                    'size' => strlen($pdf_output)
1728                );
1729    
1730                // Récupération des métadonnées calculées après validation
1731                $spe_metadata = $this->getMetadata("om_fichier_instruction");
1732    
1733                $metadata = array_merge($metadata, $spe_metadata);
1734                //Si le document a déjà été finalisé
1735                //on met à jour le document mais pas son uid
1736                if ( $this->getVal("om_fichier_instruction") != '' ){
1737                    $uid = $this->f->storage->update(
1738                        $this->getVal("om_fichier_instruction"), $pdf_output, $metadata);
1739                }
1740                //Sinon, on joute le document et on récupère son uid
1741                else {
1742                    //Stockage du PDF
1743                    $uid = $this->f->storage->create($pdf_output, $metadata);
1744                }
1745            }
1746            else {
1747                //Récupération de l'uid du document finalisé
1748                $uid = $this->getVal("om_fichier_instruction");
1749                
1750                //On dé-finalise avant de finaliser
1751                if ( $uid == '' ){
1752                    return -1;
1753                }
1754            }
1755    
1756            //Mise à jour des données
1757            if ( $uid != '' ){
1758                // Logger
1759                $this->addToLog("finaliser() - begin", EXTRA_VERBOSE_MODE);
1760                // Recuperation de la valeur de la cle primaire de l'objet
1761                if($this->getVal($this->clePrimaire) != '')
1762                    $id = $this->getVal($this->clePrimaire);
1763                else
1764                    $id=$this->id;
1765    
1766                //Tableau contenant le lien vers le PDF et lien du portlet pour la mise
1767                //à jour de l'interface
1768                if ( $status == 0 ){
1769                    $lien = '../app/pdf_instruction.php?idx='.$id;
1770                }
1771                else {
1772                    $lien = '../spg/file.php?obj=instruction&'.
1773                        'champ=om_fichier_instruction&id='.$id;
1774                }
1775    
1776               $retour = array(
1777                    "portlet"=> "<a href=\"#\" onclick=\"finalizeDocument(".
1778                        $id.", 'instruction', '".$sousform."', ".(($status==0)?1:0).")\">
1779                        <span class=\"om-prev-icon om-icon-16 om-icon-fix delete-16 "
1780                        .(($status==1)?"de":"")."finalise\" title=\"".
1781                        (($status==1)?_("Reprendre la redaction du document"):_("Finaliser le document"))."\">".
1782                        (($status==1)?_("Reprendre la redaction du document"):_("Finaliser le document"))."</span>
1783                        </a>",
1784                    "pdf" => $lien
1785                );
1786    
1787                foreach ( $this->champs as $key=>$value )
1788                    $val[$value] = $this->val[$key];
1789                $val['date_evenement']=$this->dateDBToForm($val['date_evenement']);
1790                $val['archive_date_complet']=$this->dateDBToForm($val['archive_date_complet']);
1791                $val['archive_date_rejet']=$this->dateDBToForm($val['archive_date_rejet']);
1792                $val['archive_date_limite']=$this->dateDBToForm($val['archive_date_limite']);
1793                $val['archive_date_notification_delai']=$this->dateDBToForm($val['archive_date_notification_delai']);
1794                $val['archive_date_decision']=$this->dateDBToForm($val['archive_date_decision']);
1795                $val['archive_date_validite']=$this->dateDBToForm($val['archive_date_validite']);
1796                $val['archive_date_achevement']=$this->dateDBToForm($val['archive_date_achevement']);
1797                $val['archive_date_chantier']=$this->dateDBToForm($val['archive_date_chantier']);
1798                $val['archive_date_conformite']=$this->dateDBToForm($val['archive_date_conformite']);
1799                $val['archive_date_dernier_depot']=$this->dateDBToForm($val['archive_date_dernier_depot']);
1800                $val['archive_date_limite_incompletude']=$this->dateDBToForm($val['archive_date_limite_incompletude']);
1801                $val['date_finalisation_courrier']=$this->dateDBToForm($val['date_finalisation_courrier']);
1802                $val['date_envoi_signature']=$this->dateDBToForm($val['date_envoi_signature']);
1803                $val['date_retour_signature']=$this->dateDBToForm($val['date_retour_signature']);
1804                $val['date_envoi_rar']=$this->dateDBToForm($val['date_envoi_rar']);
1805                $val['date_retour_rar']=$this->dateDBToForm($val['date_retour_rar']);
1806                $val['date_envoi_controle_legalite']=$this->dateDBToForm($val['date_envoi_controle_legalite']);
1807                $val['date_retour_controle_legalite']=$this->dateDBToForm($val['date_retour_controle_legalite']);
1808                
1809                $this->setvalF($val);
1810    
1811                // Verification de la validite des donnees
1812                $this->verifier($this->val, $this->db, DEBUG);
1813                // Verification du verrou
1814                $this->testverrou();
1815                // Si les verifications precedentes sont correctes, on procede a
1816                // la modification, sinon on ne fait rien et on retourne une erreur
1817                if ($this->correct) {
1818                    // Execution du trigger 'before' specifique au MODE 'update'
1819                    $this->triggermodifier( $id, $this->db, $this->val, DEBUG);
1820                    $valF = array(
1821                            "om_final_instruction"=> ($status==1)?TRUE:FALSE,
1822                            "om_fichier_instruction"=>$uid,
1823                            "date_finalisation_courrier"=>date('Y-m-d'));
1824                    // Execution de la requête de modification des donnees de l'attribut
1825                    // valF de l'objet dans l'attribut table de l'objet
1826                    $res = $this->db->autoExecute(DB_PREFIXE.$this->table, $valF,
1827                        DB_AUTOQUERY_UPDATE, $this->getCle($id));
1828                     $this->addToLog("finaliser() : db->autoExecute(\"".DB_PREFIXE.$this->table."\", ".print_r($valF, true).", DB_AUTOQUERY_UPDATE, \"".$this->getCle($id)."\")", VERBOSE_MODE);
1829                    // Si une erreur survient
1830                    if (database::isError($res)) {
1831                        // Appel de la methode de recuperation des erreurs
1832                        $this->erreur_db($res->getDebugInfo(), $res->getMessage(), '');
1833                    } else {
1834                        // Log
1835                        $this->addToLog(_("Requete executee"), VERBOSE_MODE);
1836                        // Log
1837                        $message = _("Enregistrement")."&nbsp;".$id."&nbsp;";
1838                        $message .= _("de la table")."&nbsp;\"".$this->table."\"&nbsp;";
1839                        $message .= "[&nbsp;".$this->db->affectedRows()."&nbsp;";
1840                        $message .= _("enregistrement(s) mis a jour")."&nbsp;]";
1841                        $this->addToLog($message, VERBOSE_MODE);
1842                        // Mise en place du verrou pour ne pas finaliser plusieurs fois
1843                        // le meme document
1844                        $this->verrouille();
1845                        // Execution du trigger 'after' specifique au MODE 'update'
1846                        //$this->triggermodifierapres($id, $this->db, $val, DEBUG);
1847    
1848                        return $retour;
1849                    }
1850                } else {
1851                    // Message d'echec (saut d'une ligne supplementaire avant le
1852                    // message pour qu'il soit mis en evidence)
1853                    $this->addToLog("Finalisation non enregistree");
1854                    return -1;
1855                }
1856            }
1857            // Si le document n'a pas été stocké
1858            else{
1859                return -1;
1860            }
1861        }
1862    
1863        /**
1864         * Récupération du numéro de dossier d'instruction à ajouter aux métadonnées
1865         * @return string numéro de dossier d'instruction
1866         */
1867        protected function getDossier() {
1868            if(empty($this->specificMetadata)) {
1869                $this->getSpecificMetadata();
1870            }
1871            return $this->specificMetadata->dossier;
1872        }
1873        /**
1874         * Récupération du numéro de dossier d'autorisation à ajouter aux métadonnées
1875         * @return string numéro de dossier d'autorisation
1876         */
1877        protected function getDossierAutorisation() {
1878            if(empty($this->specificMetadata)) {
1879                $this->getSpecificMetadata();
1880            }
1881            return $this->specificMetadata->dossier_autorisation;
1882        }
1883        /**
1884         * Récupération de la date de demande initiale du dossier à ajouter aux métadonnées
1885         * @return date de la demande initiale
1886         */
1887        protected function getDateDemandeInitiale() {
1888            if(empty($this->specificMetadata)) {
1889                $this->getSpecificMetadata();
1890            }
1891            return $this->specificMetadata->date_demande_initiale;
1892        }
1893        /**
1894         * Récupération du type de dossier d'instruction à ajouter aux métadonnées
1895         * @return string type du dossier d'instruction
1896         */
1897        protected function getDossierInstructionType() {
1898            if(empty($this->specificMetadata)) {
1899                $this->getSpecificMetadata();
1900            }
1901            return $this->specificMetadata->dossier_instruction_type;
1902        }
1903        /**
1904         * Récupération du statut du dossier d'autorisation à ajouter aux métadonnées
1905         * @return string avis
1906         */
1907        protected function getStatut() {
1908            if(empty($this->specificMetadata)) {
1909                $this->getSpecificMetadata();
1910            }
1911            return $this->specificMetadata->statut;
1912        }
1913        /**
1914         * Récupération du type de dossier d'autorisation à ajouter aux métadonnées
1915         * @return string type du dossier d'autorisation
1916         */
1917        protected function getDossierAutorisationType() {
1918            if(empty($this->specificMetadata)) {
1919                $this->getSpecificMetadata();
1920            }
1921            return $this->specificMetadata->dossier_autorisation_type;
1922        }
1923        /**
1924         * Récupération de la date d'ajout de document à ajouter aux métadonnées
1925         * @return date de l'évènement
1926         */
1927        protected function getDateEvenement() {
1928            return date("d/m/Y");
1929        }
1930        /**
1931         * Récupération du groupe d'instruction à ajouter aux métadonnées
1932         * @return string Groupe d'instruction
1933         */
1934        protected function getGroupeInstruction() {
1935            if(empty($this->specificMetadata)) {
1936                $this->getSpecificMetadata();
1937            }
1938            return $this->specificMetadata->groupe_instruction;
1939        }
1940    
1941        /**
1942         * Cette méthode permet de stocker en attribut toutes les métadonnées
1943         * nécessaire à l'ajout d'un document.
1944         */
1945        public function getSpecificMetadata() {
1946            if (isset($this->valF["dossier"]) AND $this->valF["dossier"] != "") {
1947                $dossier = $this->valF["dossier"];
1948            } else {
1949                $dossier = $this->getVal("dossier");
1950            }
1951            //Requête pour récupérer les informations essentiels sur le dossier d'instruction
1952            $sql = "SELECT dossier.dossier as dossier,
1953                            dossier_autorisation.dossier_autorisation as dossier_autorisation,
1954                            to_char(dossier.date_demande, 'YYYY/MM') as date_demande_initiale,
1955                            dossier_instruction_type.code as dossier_instruction_type,
1956                            etat_dossier_autorisation.libelle as statut,
1957                            dossier_autorisation_type.code as dossier_autorisation_type,
1958                            groupe.code as groupe_instruction
1959                    FROM ".DB_PREFIXE."dossier
1960                        LEFT JOIN ".DB_PREFIXE."dossier_instruction_type  
1961                            ON dossier.dossier_instruction_type = dossier_instruction_type.dossier_instruction_type
1962                        LEFT JOIN ".DB_PREFIXE."dossier_autorisation
1963                            ON dossier.dossier_autorisation = dossier_autorisation.dossier_autorisation
1964                        LEFT JOIN ".DB_PREFIXE."etat_dossier_autorisation
1965                            ON  dossier_autorisation.etat_dossier_autorisation = etat_dossier_autorisation.etat_dossier_autorisation
1966                        LEFT JOIN ".DB_PREFIXE."dossier_autorisation_type_detaille
1967                            ON dossier_autorisation.dossier_autorisation_type_detaille = dossier_autorisation_type_detaille.dossier_autorisation_type_detaille
1968                        LEFT JOIN ".DB_PREFIXE."dossier_autorisation_type
1969                            ON dossier_autorisation_type_detaille.dossier_autorisation_type = dossier_autorisation_type.dossier_autorisation_type
1970                        LEFT JOIN ".DB_PREFIXE."groupe
1971                            ON dossier_autorisation_type.groupe = groupe.groupe
1972                    WHERE dossier.dossier = '".$dossier."'";
1973            $res = $this->db->query($sql);
1974            $this->f->addToLog("obj/document_numerise.class.php : db->query(".$sql.")", VERBOSE_MODE);
1975            if ( database::isError($res)){
1976                die();
1977            }
1978            
1979            //Le résultat est récupéré dans un objet
1980            $row =& $res->fetchRow(DB_FETCHMODE_OBJECT);
1981    
1982            //Si il y a un résultat
1983            if ($row !== null) {
1984    
1985                //Alors on créé l'objet dossier_instruction
1986                $this->specificMetadata = $row;
1987    
1988            }
1989        }
1990        
1991        /**
1992         * Retourne le statut du dossier d'instruction
1993         * @param string $idx Identifiant du dossier d'instruction
1994         * @return string Le statut du dossier d'instruction
1995         */
1996        function getStatutDossier($idx){
1997            
1998            $statut = '';
1999            
2000            //Si l'identifiant du dossier d'instruction fourni est correct
2001            if ( $idx != '' ){
2002                
2003                //On récupère le statut de l'état du dossier à partir de l'identifiant du
2004                //dossier
2005                $sql = "SELECT etat.statut
2006                    FROM ".DB_PREFIXE."dossier
2007                    LEFT JOIN
2008                        ".DB_PREFIXE."etat
2009                        ON
2010                            dossier.etat = etat.etat
2011                    WHERE dossier ='".$idx."'";
2012                $statut = $this->db->getOne($sql);
2013                $this->f->addToLog("getStatutDossier() : db->getOne(\"".$sql."\")", VERBOSE_MODE);
2014                if ( database::isError($statut)){
2015                    die();
2016                }
2017            }
2018            return $statut;
2019        }
2020  }// fin classe  }// fin classe
 ?>  
2021    ?>

Legend:
Removed from v.80  
changed lines
  Added in v.1978

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26