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

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

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

revision 585 by nhaye, Fri Nov 2 17:16:05 2012 UTC revision 1938 by nhaye, Tue May 28 16:15:02 2013 UTC
# Line 2  Line 2 
2  //$Id$  //$Id$
3  //gen openMairie le 10/02/2011 20:32  //gen openMairie le 10/02/2011 20:32
4  require_once ("../gen/obj/consultation.class.php");  require_once ("../gen/obj/consultation.class.php");
5    require_once("../services/outgoing/messageenqueuer.php");
6    
7  class consultation extends consultation_gen {  class consultation extends consultation_gen {
8      var $maj;  
9        var $abstract_type = array(
10            "fichier" => "file",
11        );
12    
13        var $metadata = array(
14            "om_fichier_consultation" => array(
15                "dossier" => "getDossier",
16                "dossier_autorisation" => "getDossierAutorisation",
17                "date_demande_initiale" => "getDateDemandeInitiale",
18                "dossier_instruction_type" => "getDossierInstructionType",
19                "statut" => "getStatut",
20                "dossier_autorisation_type" => "getDossierAutorisationType",
21                "date_creation" => "getDateEvenement",
22                "groupe_instruction" => 'getGroupeInstruction',
23            ),
24        );
25    
26      function consultation($id,&$db,$debug) {      function consultation($id,&$db,$debug) {
27          $this->constructeur($id,$db,$debug);          $this->constructeur($id,$db,$debug);
28      }// fin constructeur      }// fin constructeur
29        
30        // {{{ Gestion de la confidentialité des données spécifiques
31    
32        /**
33         * Surcharge pour gérer les actions disponibles dans le portlet
34         */
35        function checkAccessibility() {
36            //
37            parent::checkAccessibility();
38            // Si l'utilisateur est un intructeur qui en correspond pas à la
39            // division du dossier
40            if ($this->f->isUserInstructeur()
41                && isset($this->f->om_utilisateur["division"])
42                && $this->f->om_utilisateur["division"] != $this->getDivisionFromDossier()) {
43                //
44                $this->actions_sup = array();
45                $this->setParameter("actions", array());
46            }
47            // Si une action 'lu' est présente et que le champ lu est à true
48            // on supprime l'action
49            if (isset($this->actions_sup["lu"])
50                && isset($this->val[array_search("lu", $this->champs)])
51                && $this->val[array_search("lu", $this->champs)]== "t") {
52                unset($this->actions_sup["lu"]);
53            }
54        }
55    
56        /**
57         * Cette methode est à surcharger elle permet de tester dans chaque classe
58         * des droits des droits spécifiques en fonction des données
59         */
60        function canAccess() {
61            // Si l'utilisateur est un utilisateur de service externe
62            // on vérifie qu'il peut accéder à la consultation
63            if ($this->f->isUserServiceExt()) {
64                // On compare l'id du service de la consultation
65                // aux id des services de utilisateur connecté
66                foreach($this->f->om_utilisateur['service'] as $service) {
67                    if($this->val[array_search("service",$this->champs)]===$service['service']) {
68                        return true;
69                    }
70                }
71                    //
72                $this->f->addToLog("canAccess(): utilisateur de service sur une consultation d'un autre service", EXTRA_VERBOSE_MODE);
73                return false;
74            }
75            // Si l'utilisateur est un intructeur qui ne correspond pas à la
76            // division du dossier
77            if ($this->f->isUserInstructeur()
78                && $this->f->om_utilisateur["division"] != $this->getDivisionFromDossier()
79                && $this->getParameter("maj") != 3) {
80                //
81                $this->f->addToLog("canAccess(): utilisateur instructeur sur un dossier d'une autre division", EXTRA_VERBOSE_MODE);
82                return false;
83            }
84            //
85            return true;
86        }
87    
88        /**
89         * Cette variable permet de stocker le résultat de la méthode
90         * getDivisionFromDossier() afin de ne pas effectuer le recalcul à chacun de
91         * ces appels.
92         * @var string Code de la division du dossier en cours
93         */
94        var $_division_from_dossier = NULL;
95    
96        /**
97         * Cette méthode permet de récupérer le code de division correspondant
98         * au dossier sur lequel on se trouve.
99         *
100         * @return string Code de la division du dossier en cours
101         */
102        function getDivisionFromDossier() {
103    
104            // Cette méthode peut être appelée plusieurs fois lors d'une requête.
105            // Pour éviter de refaire le traitement de recherche de la division
106            // alors on vérifie si nous ne l'avons pas déjà calculé.
107            if ($this->_division_from_dossier != NULL) {
108                // Logger
109                $this->addToLog("getDivisionFromDossier(): retour de la valeur déjà calculée - '".$this->_division_from_dossier."'", EXTRA_VERBOSE_MODE);
110                // On retourne la valeur déjà calculée
111                return $this->_division_from_dossier;
112            }
113    
114            // Par défaut, on définit la valeur du dossier à NULL
115            $dossier = NULL;
116            // Test sur le mode et le contexte du formulaire
117            if ($this->getParameter("maj") == 0
118                && ($this->getParameter("retourformulaire") == "dossier"
119                    || $this->getParameter("retourformulaire") == "dossier_instruction"
120                    || $this->getParameter("retourformulaire") == "dossier_instruction_mes_encours"
121                    || $this->getParameter("retourformulaire") == "dossier_instruction_tous_encours"
122                    || $this->getParameter("retourformulaire") == "dossier_instruction_mes_clotures"
123                    || $this->getParameter("retourformulaire") == "dossier_instruction_tous_clotures")) {
124                // Si on se trouve en mode AJOUT (seul mode où l'enregistrement
125                // n'existe pas en base de données) ET que nous nous trouvons
126                // dans le contexte d'un dossier d'instruction alors on récupère
127                // le numéro de dossier depuis le paramètre 'idxformulaire'
128                $dossier = $this->getParameter("idxformulaire");
129            } else {
130                // Sinon on récupère le numéro de dossier dans le champs dossier de
131                // l'enregistrement (en base de données)
132                $dossier = $this->getVal("dossier");
133            }
134    
135            // On appelle la méthode de la classe utils qui renvoi le code de la
136            // division d'un dossier, on la stocke pour ne pas refaire le calcul au
137            // prochain appel de cette méthode
138            $this->_division_from_dossier = $this->f->getDivisionFromDossier($dossier);
139            // Logger
140            $this->addToLog("getDivisionFromDossier(): retour de la valeur nouvellement calculée - '".$this->_division_from_dossier."'", EXTRA_VERBOSE_MODE);
141            // On retourne la valeur retournée
142            return $this->_division_from_dossier;
143    
144        }
145    
146        // }}}
147    
148      function setValsousformulaire(&$form,$maj,$validation,$idxformulaire,$retourformulaire,$typeformulaire){      function setValsousformulaire(&$form,$maj,$validation,$idxformulaire,$retourformulaire,$typeformulaire){
149            // ajout du retourformulaire aux attributs de l'objet
150            $this->retourformulaire = $retourformulaire;
151          if ($validation==0) {          if ($validation==0) {
152              if ($maj == 0){              if ($maj == 0){
153                  $form->setVal("dossier", $idxformulaire);                  $form->setVal("dossier", $idxformulaire);
154                  $form->setVal("date_envoi",date('d/m/Y'));                  $form->setVal("date_envoi",date('d/m/Y'));
155              }              }
156                if($maj == 1) {
157                    if($this->f->isAccredited('consultation_retour_avis_suivi') OR
158                        $this->f->isAccredited('consultation_retour_avis_service')) {
159                        $form->setVal("date_retour",date('d/m/Y'));
160                    }
161                }
162            }
163        }
164        
165        function setVal(&$form, $maj, $validation, &$db) {
166            if($maj == 1) {
167                 $form->setVal("date_retour",date('d/m/Y'));
168          }          }
169      }      }
170    
171      function setvalF($val) {      function setvalF($val) {
172            //
173          parent::setValF($val);          parent::setValF($val);
174            //
175            if ($this->getParameter('maj') == 0) {
176                //
177                if (isset($this->valF["date_envoi"])) {
178                    $this->valF["date_reception"] = $this->valF["date_envoi"];
179                }
180                //
181                $this->valF["lu"] = true;
182            }
183    
184          // Si un retour d'avis est modifie on passe "lu" a false          // Si un retour d'avis est modifie on passe "lu" a false
185          if($this->maj==1 AND ($this->val[array_search("avis_consultation",$this->champs)] != $val["avis_consultation"] OR          if($this->getParameter('maj')==1 AND (
186             $this->val[array_search("date_retour",$this->champs)] != $val["date_retour"] OR              $this->val[array_search("avis_consultation",$this->champs)] != $val["avis_consultation"] OR
187             $this->val[array_search("motivation",$this->champs)] != $val["motivation"] OR              $this->val[array_search("date_retour",$this->champs)] != $val["date_retour"] OR
188             $this->val[array_search("fichier",$this->champs)] != $val["fichier"])) {              $this->val[array_search("motivation",$this->champs)] != $val["motivation"] OR
189              $this->valF["lu"]=FALSE;              $this->val[array_search("fichier",$this->champs)] != $val["fichier"])
190              $this->valF["date_retour"]=$this->dateDB(date('d/m/Y'));          ) {
191                $this->valF["lu"]=false;
192          }          }
           
193      }      }
194        
195        function setLib(&$form, $maj) {
196            //
197            parent::setLib($form, $maj);
198            //
199            $form->setLib($this->clePrimaire, _("id"));
200        }
201    
202      function setType(&$form,$maj) {      function setType(&$form,$maj) {
203            // Appel du parent
204          parent::setType($form,$maj);          parent::setType($form,$maj);
205          if ($maj < 2) { //ajouter et modifier [add and modify]          // MODE - AJOUTER
206              if($maj==0){ // add          if ($maj == 0) {
207                  $form->setType('date_envoi', 'date2');              // On cache alors tous les champs que nous ne voulons pas voir
208                  $form->setType('service', 'select');              // apparaître dans le formulaire d'ajout (principalement les
209                  $form->setType('date_limite', 'hidden');              // informations sur le retour d'avis)
210                  $form->setType('date_retour', 'hidden');              $form->setType('date_retour', 'hidden');
211                  $form->setType('avis_consultation', 'hidden');              $form->setType('date_reception', 'hidden');
212                  $form->setType('motivation', 'hidden');              $form->setType('date_limite', 'hidden');
213                  $form->setType('fichier', 'hidden');              $form->setType('avis_consultation', 'hidden');
214                $form->setType('motivation', 'hidden');
215                $form->setType('fichier', 'hidden');
216                $form->setType('lu', 'hidden');
217                // On permet la modification de certains champs
218                $form->setType('dossier', 'hiddenstatic');
219                $form->setType('service', 'select');
220                $form->setType('date_envoi', 'date2');
221            }
222            // MODE - MODIFIER
223            if ($maj == 1) {
224    
225                // On affiche en statique les informations qui ne sont plus
226                // modifiables
227                $form->setType('dossier', 'hiddenstatic');
228                $form->setType('date_envoi', 'hiddenstaticdate');
229                $form->setType('date_limite', 'hiddenstaticdate');
230                $form->setType('service', 'selecthiddenstatic');
231                
232                // La date de réception ne peut être modifiée que par un
233                // utilisateur en ayant spécifiquement la permission
234                if($this->f->isAccredited('consultation_modifier_date_reception')) {
235                    $form->setType('date_reception', 'date2');
236                } else {
237                    $form->setType('date_reception', 'hiddenstaticdate');
238                }
239    
240                // Le marqueur lu/non lu ne peut être modifié que par un
241                // utilisateur en ayant spécifiquement la permission
242                if ($this->f->isAccredited('consultation_modifier_lu')) {
243                    $form->setType('lu', 'checkbox');
244                } else {
245                  $form->setType('lu', 'hidden');                  $form->setType('lu', 'hidden');
246                  $form->setType('date_reception', 'hidden');              }
247              }else{   // modify  
248                  if($this->f->isAccredited('consultation_retour_avis_service')) {              // Gestion du type du widget sur le champ fichier
249                      $form->setType('dossier', 'hidden');              if($this->getVal("fichier") == "" OR
250                      $form->setType('service', 'hidden');                 $this->f->isAccredited('consultation_modifier_fichier')) {
251                      $form->setType('date_envoi', 'hidden');                  // Si il n'y a jamais eu de fichier enregistré ou que
252                      $form->setType('date_retour', 'hidden');                  // l'utilisateur a spécifiquement les droits pour modifier
253                      $form->setType('date_reception', 'hidden');                  // un fichier déjà enregistré alors on positionne un type
254                      $form->setType('date_limite', 'hidden');                  // de widget modifiable
255                      $form->setType('lu', 'hidden');                  if($this->retourformulaire == "demande_avis_encours") {
                 } else {  
                     $form->setType('date_envoi', 'hiddenstaticdate');  
                     $form->setType('date_limite', 'hiddenstaticdate');  
                     $form->setType('service', 'selecthiddenstatic');  
                     $form->setType('date_retour', 'date2');  
                     $form->setType('avis_consultation', 'select');  
                     $form->setType('motivation', 'textarea');  
256                      $form->setType('fichier', 'upload2');                      $form->setType('fichier', 'upload2');
257                      //Affichage du champ en modification pour le prifil instructeur                  } else {
258                      if(!$this->f->isAccredited('consultation_modifier_lu')) {                      $form->setType('fichier', 'upload');
                         $form->setType('lu', 'hidden');  
                     }  
259                  }                  }
260                } else {
261                    // Si non on affiche uniquement le nom du fichier
262                    $form->setType('fichier', 'file');
263              }              }
             $form->setType('dossier', 'hiddenstatic');  
         }  
         $form->setType('consultation', 'hidden');  
         //setType pour  profil service  
264    
265                // Modification layout : écran de retour d'avis permettant
266                // uniquement la saisie des trois champs : avis, motivation et fichier
267                if (!$this->f->isAccredited('consultation_consulter_autre_que_retour_avis')) {
268    
269                    // On cache alors tous les champs que nous ne voulons pas voir
270                    $form->setType('dossier', 'hidden');
271                    $form->setType('service', 'hidden');
272                    $form->setType('date_envoi', 'hidden');
273                    $form->setType('date_retour', 'hidden');
274                    $form->setType('date_reception', 'hidden');
275                    $form->setType('date_limite', 'hidden');
276                    $form->setType('lu', 'hidden');
277    
278                }
279                
280            }
281            // Mode supprimer
282            if ($maj == 2) {
283                $form->setType('fichier', 'filestatic');
284            }
285            // MODE - CONSULTER
286            if ( $maj == 3 ) {
287                $form->setType('fichier', 'file');
288            }
289            //// On cache la clé primaire
290            //$form->setType('consultation', 'hidden');
291            //
292            if ($this->getParameter("retourformulaire") == "dossier"
293                || $this->getParameter("retourformulaire") == "dossier_instruction"
294                || $this->getParameter("retourformulaire") == "dossier_instruction_mes_encours"
295                || $this->getParameter("retourformulaire") == "dossier_instruction_tous_encours"
296                || $this->getParameter("retourformulaire") == "dossier_instruction_mes_clotures"
297                || $this->getParameter("retourformulaire") == "dossier_instruction_tous_clotures") {
298                //
299                $form->setType('dossier', 'hidden');
300            }
301                
302            $form->setType('code_barres', 'hidden');
303            
304            //Cache les champs pour la finalisation
305            $form->setType('om_fichier_consultation', 'hidden');
306            $form->setType('om_final_consultation', 'hidden');
307      }      }
308    
309      // TRIGGER AVANT MODIFICATION DE DONNEES      // Cette méthode permet de calculer la date limite en fonction de la date
310      // trigger before modification data      // de réception et du délai de consultation du service consulté
311      function triggerajouter($id,&$db,$val,$DEBUG) {      function calculDateLimite() {
312          // mise a jour instruction avec evenement [return delay]          // mise a jour instruction avec evenement [return delay]
313          if ($this->valF['date_envoi']!=""){          if ($this->valF["date_reception"] != "") {
314              $sql= "select delai from ".DB_PREFIXE."service where service ='".$this->valF['service']."'";              //
315              $delai = $db->getOne($sql);              $sql = " select delai from ".DB_PREFIXE."service ";
316              $this->valF['date_limite'] =  $this->moisdate($this->valF['date_envoi'],$delai);              $sql .= " where service='".$this->valF["service"]."' ";
317                //
318                $delai = $this->db->getOne($sql);
319                $this->addToLog("triggerajouter(): db->getone(\"".$sql."\")", VERBOSE_MODE);
320                //
321                $this->valF["date_limite"] = $this->moisdate($this->valF["date_reception"], $delai);
322                //
323              $this->addToMessage(_("delai")." ".              $this->addToMessage(_("delai")." ".
324                 _("retour")." ".$delai." "._("mois")." -> ".                 _("retour")." ".$delai." "._("mois")." -> ".
325                 _("retour")." ".$this->valF['date_limite']."<br>");                 _("retour")." ".date("d/m/Y", strtotime($this->valF["date_limite"])));
             $this->valF['lu'] = true;  
326          }          }
327        }
328    
329        // TRIGGER AVANT MODIFICATION DE DONNEES
330        // trigger before modification data
331        function triggerajouter($id,&$db,$val,$DEBUG) {
332            //
333            $this->calculDateLimite();
334                    
335            // Identifiant du type de courrier
336            $idTypeCourrier = '12';
337            $idCourrier = str_pad($this->valF["consultation"], 10, "0", STR_PAD_LEFT);
338            // Code barres
339            $this->valF["code_barres"] = $idTypeCourrier . $idCourrier;
340      }      }
341        
342        //
343        function triggermodifier($id,&$db,$val,$DEBUG) {
344            //
345            $this->calculDateLimite();
346        }
347    
348        //
349      function triggerajouterapres($id,&$db,$val,$DEBUG) {      function triggerajouterapres($id,&$db,$val,$DEBUG) {
350                    
351          // Verification de la demande de notif par mail          // Verification de la demande de notif par mail
352          $sql= "SELECT abrege, notification_email, email FROM ".DB_PREFIXE.          $sql= "SELECT abrege, libelle, notification_email, email FROM ".DB_PREFIXE.
353                  "service WHERE service ='".$this->valF['service']."'";                  "service WHERE service ='".$this->valF['service']."'";
354          $res=$db->query($sql);          $res=$db->query($sql);
355          $notif = $res->fetchrow(DB_FETCHMODE_ASSOC);          $notif = $res->fetchrow(DB_FETCHMODE_ASSOC);
# Line 111  class consultation extends consultation_ Line 367  class consultation extends consultation_
367              $corps=_("Votre service est consulte concernant le dossier no")." ".$dossier['dossier']."<br/>".              $corps=_("Votre service est consulte concernant le dossier no")." ".$dossier['dossier']."<br/>".
368              _("Il concerne le terrain situe a l'adresse :")." ".utf8_decode($dossier['terrain_adresse']).              _("Il concerne le terrain situe a l'adresse :")." ".utf8_decode($dossier['terrain_adresse']).
369              " ".utf8_decode($dossier['terrain_adresse_complement'])." ".utf8_decode($dossier['terrain_cp'])." ".$dossier['terrain_ville']."<br/>".              " ".utf8_decode($dossier['terrain_adresse_complement'])." ".utf8_decode($dossier['terrain_cp'])." ".$dossier['terrain_ville']."<br/>".
370              _("Vous pouvez y acceder et rendre votre avis a l'adresse")." <a href='".$this->f->getParameter('lien_interne_vdm').              _("Vous pouvez y acceder et rendre votre avis a l'adresse")." <a href='".$this->f->getParameter('services_consultes_lien_interne').
371              "scr/form.php?obj=consultation&action=3&idx=".$this->valF['consultation']."' >".              "scr/form.php?obj=consultation&action=3&idx=".$this->valF['consultation']."' >".
372              _("Lien interne (services VDM)")."</a> "._("ou")." <a href='".$this->f->getParameter('lien_externe').              _("Lien interne (services VDM)")."</a> "._("ou")." <a href='".$this->f->getParameter('services_consultes_lien_externe').
373              "scr/form.php?obj=consultation&action=3&idx=".$this->valF['consultation']."' >".              "scr/form.php?obj=consultation&action=3&idx=".$this->valF['consultation']."' >".
374              _("Lien externe (hors VDM)")."</a>";              _("Lien externe (hors VDM)")."</a>";
375              // Envoi du mail avec message de retour              // Envoi du mail avec message de retour
376              if($this->f->sendMail($title, $corps, $notif['email'])) {              if($this->f->sendMail($title, $corps, $notif['email'])) {
377                  $this->addToMessage(_("Envoi d'un mail de notification au service")." ".$notif['abrege']);                  $this->addToMessage(_("Envoi d'un mail de notification au service")." \"(".$notif['abrege'].") ".$notif["libelle"]."\"");
378              } else {              } else {
379                  $this->addToMessage(_("L'envoi du mail de notification a echoue"));                  $this->addToMessage(_("L'envoi du mail de notification a echoue"));
380              }              }
381          }          }
382                    
383            
384            // verification si envoi vers ERP est active
385            if ($this->f->getParameter('option_erp') != "") {
386                // s'il s'agit de la consultation ERP Secu, ERP Accessibilite, ou
387                // deenvoie un
388                // message a ERP
389                $dossier_erp = $this->getFromDB("SELECT erp FROM ".DB_PREFIXE.
390                                "dossier WHERE dossier = '" .$this->valF['dossier'] . "'");
391                $dossier_nature = $this->getFromDB("SELECT dossier_autorisation_type_detaille.code FROM ".DB_PREFIXE.
392                                "dossier
393                                INNER JOIN ".DB_PREFIXE."dossier_autorisation
394                                    ON dossier.dossier_autorisation=dossier_autorisation.dossier_autorisation
395                                INNER JOIN ".DB_PREFIXE."dossier_autorisation_type_detaille
396                                    ON dossier_autorisation.dossier_autorisation_type_detaille
397                                    = dossier_autorisation_type_detaille.dossier_autorisation_type_detaille
398                                WHERE dossier = '" . $this->valF['dossier'] . "'");
399                if ($dossier_erp == 't'
400                    && substr($dossier_nature, 0, 2) == $this->f->getParameter('erp_dossier_nature_pc')) {
401                    // envoi du message "Demande d'instruction d'un dossier PC pour un ERP"
402                    if (($this->valF['service'] == $this->f->getParameter('erp_service_accessibilite')
403                        || $this->valF['service'] == $this->f->getParameter('erp_service_securite'))) {
404                        $msgenque = new MessageEnqueuer();
405                        $msgenque->setDossierInstructionIdentifier($this->valF['dossier']);
406                        $msgenque->setConsultationIdentifier($this->valF['consultation']);
407                        $msgenque->enqueueMessage($msgenque::$ERP_DEMANDE_INSTRUCTION_PC);
408                    }
409                    
410                    // envoi du message "Consultation ERP pour conformite" en cas de creation de la
411                    // consultation du service ERP Conformite
412                    if ($this->valF['service'] == $this->f->getParameter('erp_service_conformite')) {
413                        $msgenque = new MessageEnqueuer();
414                        $msgenque->setDossierInstructionIdentifier($this->valF['dossier']);
415                        $msgenque->setConsultationIdentifier($this->valF['consultation']);
416                        $msgenque->enqueueMessage($msgenque::$ERP_CONSULTATION_CONFORMITE);                
417                    }
418                }
419            } // fin de if($this->f->getParameter('option_erp'))
420            
421            // Finalisation du document
422            $this->finaliserAjouter();
423        }
424        
425        /**
426         * Fait une requette sql pour extraire la valeur d'un champ, et retourne
427         * cette valeur
428         * @param string $sql La requete sql a executer
429         * @return La valeur du champs cherche, sinon NULL. En cas d'erreur de la BD
430         * l'execution s'arrete.
431         */
432        function getFromDB($sql) {
433            //$sql = "SELECT libelle FROM ".DB_PREFIXE."dossier WHERE dossier = '" . $dossier . "'";
434            $res = $this->db->limitquery($sql, 0, 1);
435            $this->f->addToLog("getDossierERPSpecification(): db->limitquery(\"".
436                            str_replace(",",", ",$sql)."\", 0, 1);", VERBOSE_MODE);
437            // Si une erreur survient on die
438            if (database::isError($res, true)) {
439                // Appel de la methode de recuperation des erreurs
440                $this->erreur_db($res->getDebugInfo(), $res->getMessage(), 'instruction');
441            }
442            // retourne la nature du dossier
443            while ($row =& $res->fetchRow()) {
444                return $row[0];
445            }
446            // la nature n'etait pas trouve, ce qui ne devrait pas se passer
447            return NULL;
448    
449      }      }
450    
451      // =============================================      // =============================================
# Line 170  class consultation extends consultation_ Line 492  class consultation extends consultation_
492      // Add fieldset      // Add fieldset
493      // =============================================      // =============================================
494      function setLayout(&$form, $maj){      function setLayout(&$form, $maj){
495          if ( $maj < 2 OR $maj == 3 ) {  
496              if(!$this->f->isAccredited('consultation_retour_avis_service')) {              // Modification layout : écran de retour d'avis permettant
497                // uniquement la saisie des trois champs : avis, motivation et fichier
498                if ($this->f->isAccredited('consultation_consulter_autre_que_retour_avis')) {
499                    
500                  //Champs sur lequel s'ouvre le fieldset                  //Champs sur lequel s'ouvre le fieldset
501                  $form->setBloc('dossier','D',"");                  $form->setBloc('dossier','D',"");
502                  $form->setFieldset('dossier','D',_('Consultation'));                  $form->setFieldset('dossier','D',_('Consultation'));
# Line 179  class consultation extends consultation_ Line 504  class consultation extends consultation_
504                  //Champs sur lequel se ferme le fieldset                  //Champs sur lequel se ferme le fieldset
505                  $form->setFieldset('date_envoi','F','');                  $form->setFieldset('date_envoi','F','');
506                  $form->setBloc('date_envoi','F');                  $form->setBloc('date_envoi','F');
507    
508              }              }
509              if ( $maj == 1 OR $maj == 3 ){              
510                // MODE - autre que AJOUTER alors on affiche un fieldset retour
511                // d'avis
512                if ($maj != 0) {
513                    
514                  //Champs sur lequel s'ouvre le fieldset                  //Champs sur lequel s'ouvre le fieldset
515                  $form->setBloc('date_reception','D',"");                  $form->setBloc('date_reception','D',"");
516                  $form->setFieldset('date_reception','D',_('Retour d\'avis'));                  $form->setFieldset('date_reception','D',_('Retour d\'avis'));
517        
518                  //Champs sur lequel se ferme le fieldset                  //Champs sur lequel se ferme le fieldset
519                  $form->setFieldset('lu','F','');                  $form->setFieldset('lu','F','');
520                  $form->setBloc('lu','F');                  $form->setBloc('lu','F');
521                    
522              }              }
523        }
524    
525        /** Surcharge de la methode retour afin de retourner sur la page de saisie de
526        * code barre si besoin
527        **/
528        function retour($premier = 0, $recherche = "", $tricol = "") {
529            $params ="obj=".get_class($this);
530            if($this->getParameter("retour")=="form") {
531                $params .= "&amp;idx=".$this->getParameter("idx");
532                $params .= "&amp;action=3";
533            }
534            $params .= "&amp;premier=".$this->getParameter("premier");
535            $params .= "&amp;tricol=".$this->getParameter("tricol");
536            $params .= "&amp;recherche=".$this->getParameter("recherche");
537            $params .= "&amp;selectioncol=".$this->getParameter("selectioncol");
538            $params .= "&amp;advs_id=".$this->getParameter("advs_id");
539            $params .= "&amp;valide=".$this->getParameter("valide");
540            echo "\n<a class=\"retour\" ";
541            echo "href=\"";
542            //
543    
544            if($this->getParameter("retour")=="form" AND !($this->getParameter("validation")>0 AND $this->getParameter("maj")==2 AND $this->correct)) {
545                echo "form.php?".$params;
546            } elseif($this->getParameter("retour")=="suivi_retours_de_consultation") {
547                echo "../app/suivi_retours_de_consultation.php";
548            } else {
549                echo "tab.php?".$params;
550            }
551            //
552            echo "\"";
553            echo ">";
554            //
555            echo _("Retour");
556            //
557            echo "</a>\n";
558        }
559    
560        /**
561         * Surcharge du bouton retour pour popup
562         */
563            function retoursousformulaire($idxformulaire, $retourformulaire, $val,
564                                      $objsf, $premiersf, $tricolsf, $validation,
565                                      $idx, $maj, $retour) {
566            if($retourformulaire === "demande_avis_encours") {
567                echo "\n<a class=\"retour\" ";
568                echo "href=\"";
569                echo "#";
570                echo  "\" ";
571                echo ">";
572                //
573                echo _("Retour");
574                //
575                echo "</a>\n";
576            } else {
577                parent::retoursousformulaire($idxformulaire, $retourformulaire, $val,
578                                      $objsf, $premiersf, $tricolsf, $validation,
579                                      $idx, $maj, $retour);
580            }
581        }
582        
583        /**
584         * Ajout des contraintes spécifiques pour l'ajout d'un fichier en retour de
585         * consultation
586         */
587        function setSelect(&$form, $maj,&$db,$debug) {
588            parent::setSelect($form, $maj,$db,$debug);
589            
590            //Seulement dans le cas d'un retour d'avis
591            if($this->retourformulaire == "demande_avis_encours") {
592                
593                //Tableau des contraintes spécifiques
594                $params = array(
595                    "constraint" => array(
596                        "size_max" => 2,
597                        "extension" => ".pdf"
598                    ),
599                );
600                
601                $form->setSelect("fichier", $params);
602          }          }
603      }      }
604            
605        /**
606         * Finalisation du document lors de l'ajout d'une consultation
607         *
608         */
609        function finaliserAjouter(){
610    
611            //Génération du PDF
612            $_GET['output'] = "string";
613            $_GET['obj'] = "consultation";
614            $_GET['idx'] = $this->valF[$this->clePrimaire];
615            $f = $this->f;
616            include '../app/pdf_consultation.php';
617            
618            //Métadonnées du document
619            $metadata = array(
620                'filename' => 'consultation_'.$idx.'.pdf',
621                'mimetype' => 'application/pdf',
622                'size' => strlen($pdf_output)
623            );
624    
625            // Récupération des métadonnées calculées après validation
626            $spe_metadata = $this->getMetadata("om_fichier_consultation");
627    
628            $metadata = array_merge($metadata, $spe_metadata);
629    
630            //On ajoute le document et on récupère son uid
631            $uid = $this->f->storage->create($pdf_output, $metadata);
632    
633            //Mise à jour des données
634            if ( $uid != '' ){
635                // Logger
636                $this->addToLog("finaliserAjouter() - begin", EXTRA_VERBOSE_MODE);
637    
638                $valF = array(
639                        "om_final_consultation"=> TRUE,
640                        "om_fichier_consultation"=>$uid);
641    
642                // Execution de la requête de modification des donnees de l'attribut
643                // valF de l'objet dans l'attribut table de l'objet
644                $res = $this->db->autoExecute(DB_PREFIXE.$this->table, $valF,
645                    DB_AUTOQUERY_UPDATE, $this->getCle($idx));
646                 $this->addToLog("finaliserAjouter() : db->autoExecute(\"".DB_PREFIXE.$this->table."\", ".print_r($valF, true).", DB_AUTOQUERY_UPDATE, \"".$this->getCle($idx)."\")", VERBOSE_MODE);
647                // Si une erreur survient
648                if (database::isError($res)) {
649                    // Appel de la methode de recuperation des erreurs
650                    $this->erreur_db($res->getDebugInfo(), $res->getMessage(), '');
651                } else {
652                    // Log
653                    $this->addToLog(_("Requete executee"), VERBOSE_MODE);
654                    // Log
655                    $message = _("Enregistrement")."&nbsp;".$idx."&nbsp;";
656                    $message .= _("de la table")."&nbsp;\"".$this->table."\"&nbsp;";
657                    $message .= "[&nbsp;".$this->db->affectedRows()."&nbsp;";
658                    $message .= _("enregistrement(s) mis a jour")."&nbsp;]";
659                    $this->addToLog($message, VERBOSE_MODE);
660                }
661            }
662        }
663    
664    
665        /**
666         * Récupération du numéro de dossier d'instruction à ajouter aux métadonnées
667         * @return [type] [description]
668         */
669        protected function getDossier() {
670            if(empty($this->specificMetadata)) {
671                $this->getSpecificMetadata();
672            }
673            return $this->specificMetadata->dossier;
674        }
675        /**
676         * Récupération du numéro de dossier d'autorisation à ajouter aux métadonnées
677         * @return [type] [description]
678         */
679        protected function getDossierAutorisation() {
680            if(empty($this->specificMetadata)) {
681                $this->getSpecificMetadata();
682            }
683            return $this->specificMetadata->dossier_autorisation;
684        }
685        /**
686         * Récupération de la date de demande initiale du dossier à ajouter aux métadonnées
687         * @return [type] [description]
688         */
689        protected function getDateDemandeInitiale() {
690            if(empty($this->specificMetadata)) {
691                $this->getSpecificMetadata();
692            }
693            return $this->specificMetadata->date_demande_initiale;
694        }
695        /**
696         * Récupération du type de dossier d'instruction à ajouter aux métadonnées
697         * @return [type] [description]
698         */
699        protected function getDossierInstructionType() {
700            if(empty($this->specificMetadata)) {
701                $this->getSpecificMetadata();
702            }
703            return $this->specificMetadata->dossier_instruction_type;
704        }
705        /**
706         * Récupération du statut du dossier d'autorisation à ajouter aux métadonnées
707         * @return [type] [description]
708         */
709        protected function getStatut() {
710            if(empty($this->specificMetadata)) {
711                $this->getSpecificMetadata();
712            }
713            return $this->specificMetadata->statut;
714        }
715        /**
716         * Récupération du type de dossier d'autorisation à ajouter aux métadonnées
717         * @return [type] [description]
718         */
719        protected function getDossierAutorisationType() {
720            if(empty($this->specificMetadata)) {
721                $this->getSpecificMetadata();
722            }
723            return $this->specificMetadata->dossier_autorisation_type;
724        }
725        /**
726         * Récupération de la date d'ajout de document à ajouter aux métadonnées
727         * @return [type] [description]
728         */
729        protected function getDateEvenement() {
730            return date("d/m/Y");
731        }
732        /**
733         * Récupération du groupe d'instruction à ajouter aux métadonnées
734         * @return string Groupe d'instruction
735         */
736        protected function getGroupeInstruction() {
737            if(empty($this->specificMetadata)) {
738                $this->getSpecificMetadata();
739            }
740            return $this->specificMetadata->groupe_instruction;
741        }
742    
743        /**
744         * Cette méthode permet de stocker en attribut toutes les métadonnées
745         * nécessaire à l'ajout d'un document.
746         */
747        public function getSpecificMetadata() {
748            if (isset($this->valF["dossier"]) AND $this->valF["dossier"] != "") {
749                $dossier = $this->valF["dossier"];
750            } else {
751                $dossier = $this->getVal("dossier");
752            }
753            //Requête pour récupérer les informations essentiels sur le dossier d'instruction
754            $sql = "SELECT dossier.dossier as dossier,
755                            dossier_autorisation.dossier_autorisation as dossier_autorisation,
756                            to_char(dossier.date_demande, 'YYYY/MM') as date_demande_initiale,
757                            dossier_instruction_type.code as dossier_instruction_type,
758                            etat_dossier_autorisation.libelle as statut,
759                            dossier_autorisation_type.code as dossier_autorisation_type,
760                            groupe.code as groupe_instruction
761                    FROM ".DB_PREFIXE."dossier
762                        LEFT JOIN ".DB_PREFIXE."dossier_instruction_type  
763                            ON dossier.dossier_instruction_type = dossier_instruction_type.dossier_instruction_type
764                        LEFT JOIN ".DB_PREFIXE."dossier_autorisation
765                            ON dossier.dossier_autorisation = dossier_autorisation.dossier_autorisation
766                        LEFT JOIN ".DB_PREFIXE."etat_dossier_autorisation
767                            ON  dossier_autorisation.etat_dossier_autorisation = etat_dossier_autorisation.etat_dossier_autorisation
768                        LEFT JOIN ".DB_PREFIXE."dossier_autorisation_type_detaille
769                            ON dossier_autorisation.dossier_autorisation_type_detaille = dossier_autorisation_type_detaille.dossier_autorisation_type_detaille
770                        LEFT JOIN ".DB_PREFIXE."dossier_autorisation_type
771                            ON dossier_autorisation_type_detaille.dossier_autorisation_type = dossier_autorisation_type.dossier_autorisation_type
772                        LEFT JOIN ".DB_PREFIXE."groupe
773                            ON dossier_autorisation_type.groupe = groupe.groupe
774                    WHERE dossier.dossier = '".$dossier."'";
775            $res = $this->db->query($sql);
776            $this->f->addToLog("obj/document_numerise.class.php : db->query(".$sql.")", VERBOSE_MODE);
777            if ( database::isError($res)){
778                die();
779            }
780            
781            //Le résultat est récupéré dans un objet
782            $row =& $res->fetchRow(DB_FETCHMODE_OBJECT);
783    
784            //Si il y a un résultat
785            if ($row !== null) {
786    
787                //Alors on créé l'objet dossier_instruction
788                $this->specificMetadata = $row;
789    
790            }
791        }
792  }// fin classe  }// fin classe
793  ?>  ?>

Legend:
Removed from v.585  
changed lines
  Added in v.1938

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26