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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1974 - (hide annotations)
Fri May 31 12:55:56 2013 UTC (11 years, 8 months ago) by vpihour
File size: 34863 byte(s)
Correction dans la consultation pour les consultations ayant été ajoutées avant la mise en place de la finalisation auto. Si la consultation n'est pas finalisée, le lien de l'édition du portlet est celui de la génération du PDF à la volée sinon depuis le stockage

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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26