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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1986 - (show annotations)
Wed Jun 5 15:51:15 2013 UTC (11 years, 7 months ago) by vpihour
File size: 38265 byte(s)
Suppression des actions "Modifier" et "Supprimer" du portlet si le document est finalisé

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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26