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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 4237 - (show annotations)
Fri May 20 09:41:07 2016 UTC (8 years, 8 months ago) by fmichon
File size: 111591 byte(s)
* Déplacement de scripts du répertoire app/ vers des vues de la classe métier concernée. Les écrans sont : 'Suivi > Demandes D'avis > *'.

1 <?php
2 //$Id: consultation.class.php 6046 2016-02-26 15:27:06Z fmichon $
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 // Champs contenant les UID des fichiers
10 var $abstract_type = array(
11 "fichier" => "file",
12 "om_fichier_consultation" => "file",
13 );
14
15 var $metadata = array(
16 "om_fichier_consultation" => array(
17 "dossier" => "getDossier",
18 "dossier_version" => "getDossierVersion",
19 "numDemandeAutor" => "getNumDemandeAutor",
20 "anneemoisDemandeAutor" => "getAnneemoisDemandeAutor",
21 "typeInstruction" => "getTypeInstruction",
22 "statutAutorisation" => "getStatutAutorisation",
23 "typeAutorisation" => "getTypeAutorisation",
24 "dateEvenementDocument" => "getDateEvenementDocument",
25 "groupeInstruction" => 'getGroupeInstruction',
26 "title" => 'getTitle',
27 ),
28 "fichier" => array(
29 "filename" => "getFichierFilename",
30 "dossier" => "getDossier",
31 "dossier_version" => "getDossierVersion",
32 "numDemandeAutor" => "getNumDemandeAutor",
33 "anneemoisDemandeAutor" => "getAnneemoisDemandeAutor",
34 "typeInstruction" => "getTypeInstruction",
35 "statutAutorisation" => "getStatutAutorisation",
36 "typeAutorisation" => "getTypeAutorisation",
37 "dateEvenementDocument" => "getDateEvenementDocument",
38 "groupeInstruction" => 'getGroupeInstruction',
39 "title" => 'getTitle',
40 ),
41 );
42
43 /**
44 * Les nouvelles actions sont activées sur cet objet.
45 *
46 * @var boolean
47 */
48 var $activate_class_action;
49
50 /**
51 * Cette variable permet de stocker le résultat de la méthode
52 * getDivisionFromDossier() afin de ne pas effectuer le recalcul à chacun de
53 * ces appels.
54 * @var string Code de la division du dossier en cours
55 */
56 var $_division_from_dossier = NULL;
57
58 /**
59 * Instance de la classe dossier
60 *
61 * @var mixed
62 */
63 var $inst_dossier = null;
64
65 /**
66 * Constructeur.
67 *
68 * @param integer $id identifiant de l'enregistrement
69 * @param database $db handler de la base de données
70 * @param boolean $debug debug
71 */
72 function consultation($id, &$db, $debug) {
73 //On active les nouvelles actions
74 $this->activate_class_action = true;
75 $this->constructeur($id, $db, $debug);
76 }// fin constructeur
77
78 /**
79 * Définition des actions disponibles sur la classe.
80 *
81 * @return void
82 */
83 function init_class_actions() {
84
85 parent::init_class_actions();
86
87 // ACTION - 001 - modifier
88 //
89 $this->class_actions[1]["condition"] = array("show_consultation_finaliser_portlet_action",
90 "is_editable");
91
92 // ACTION - 002 - supprimer
93 //
94 $this->class_actions[2]["condition"] = array("show_consultation_finaliser_portlet_action",
95 "is_deletable");
96
97 // ACTION - 040 - ajout_multiple
98 // Ajout de consultattons multiples
99 $this->class_actions[40] = array(
100 "identifier" => "ajout_multiple",
101 "view" => "view_ajout_multiple",
102 "method" => "ajouter_multiple",
103 "button" => "valider",
104 "permission_suffix" => "ajouter",
105 "condition" => array("is_multiaddable"),
106 );
107 // ACTION - 050 - marquer_comme_lu
108 // Pour qu'un cadre valide l'analyse
109 $this->class_actions[50] = array(
110 "identifier" => "marquer_comme_lu",
111 "portlet" => array(
112 "type" => "action-direct",
113 "libelle" => _("Marquer comme lu"),
114 "order" => 50,
115 "class" => "lu-16",
116 ),
117 "view" => "formulaire",
118 "method" => "marquer_comme_lu",
119 "permission_suffix" => "modifier_lu",
120 "condition" => array("is_markable",
121 "show_marquer_comme_lu_portlet_action"),
122 );
123 // ACTION - 060 - finaliser
124 // Pour qu'un cadre valide l'analyse
125 $this->class_actions[60] = array(
126 "identifier" => "finalise",
127 "portlet" => array(
128 "type" => "action-direct",
129 "libelle" => _("Finaliser le document"),
130 "order" => 60,
131 "class" => "finalise",
132 ),
133 "view" => "formulaire",
134 "method" => "finalize",
135 "permission_suffix" => "finaliser",
136 "condition" => array("show_consultation_finaliser_portlet_action",
137 "is_finalizable"),
138 );
139
140 // ACTION - 070 - unfinaliser
141 // Pour qu'un cadre valide l'analyse
142 $this->class_actions[70] = array(
143 "identifier" => "unfinalise",
144 "portlet" => array(
145 "type" => "action-direct",
146 "libelle" => _("Reprendre la redaction du document"),
147 "order" => 70,
148 "class" => "definalise",
149 ),
150 "view" => "formulaire",
151 "method" => "unfinalize",
152 "permission_suffix" => "definaliser",
153 "condition" => array("show_unfinalize_portlet_action",
154 "is_unfinalizable"),
155 );
156
157 // ACTION - 080 - consulter_pdf
158 // Pour qu'un cadre valide l'analyse
159 $this->class_actions[80] = array(
160 "identifier" => "consulter_pdf",
161 "portlet" => array(
162 "type" => "action-blank",
163 "libelle" => _("Editer la consultation PDF"),
164 "order" => 45,
165 "class" => "pdf-16",
166 ),
167 "view" => "view_consulter_pdf",
168 "permission_suffix" => "consulter",
169 );
170
171
172 // ACTION - 100 - retour_consultation
173 // Lors de la saisie de retour d'avis par le profil suivi des dates
174 $this->class_actions[100] = array(
175 "identifier" => "retour_consultation",
176 "view" => "formulaire",
177 "method" => "modifier",
178 "button" => _("Modifier"),
179 "permission_suffix" => "modifier",
180 "condition" => array("is_suivi_retours_de_consultation"),
181
182 );
183
184 $this->class_actions[110] = array(
185 "identifier" => "suivi_mise_a_jour_des_dates",
186 "view" => "view_suivi_mise_a_jour_des_dates",
187 "permission_suffix" => "suivi_mise_a_jour_des_dates",
188 "condition" => array(),
189 );
190
191 $this->class_actions[120] = array(
192 "identifier" => "suivi_retours_de_consultation",
193 "view" => "view_suivi_retours_de_consultation",
194 "permission_suffix" => "suivi_retours_de_consultation",
195 "condition" => array(),
196 );
197 }
198
199 /**
200 * Permet de modifier le fil d'Ariane depuis l'objet pour un formulaire
201 * @param string $ent Fil d'Ariane récupéréré
202 * @return Fil d'Ariane
203 */
204 function getFormTitle($ent) {
205 //
206 if ($this->getParameter('maj') == 120) {
207 //
208 return _("suivi")." -> "._("demandes d'avis")." -> "._("retours de consultation");
209 }
210 //
211 if ($this->getParameter('maj') == 110) {
212 //
213 return _("suivi")." -> "._("demandes d'avis")." -> "._("mise a jour des dates");
214 }
215 //
216 if ($this->getParameter('maj') == 100) {
217 //
218 return _("suivi")." -> "._("demandes d'avis")." -> "._("retours de consultation")." -> ".$this->getVal($this->clePrimaire);
219 }
220 //
221 return $ent;
222 }
223
224
225 /**
226 * Ce script permet de gérer l'interface de saisie rapide des retours de
227 * consultation par la cellule suivi l'aide d'un code barre.
228 */
229 function view_suivi_retours_de_consultation() {
230 //
231 $this->checkAccessibility();
232 /**
233 * Validation du formulaire
234 */
235 // Si le formulaire a été validé
236 if ($this->f->get_submitted_post_value('code_barres') !== null) {
237 // Si la valeur transmise est correcte
238 if ($this->f->get_submitted_post_value('code_barres') != ""
239 && is_numeric($this->f->get_submitted_post_value('code_barres'))) {
240 // Vérification de l'existence de la consultation
241 $sql = "SELECT consultation FROM ".DB_PREFIXE."consultation ";
242 $sql .= " WHERE code_barres='".$this->f->db->escapesimple($this->f->get_submitted_post_value('code_barres'))."'";
243 $res = $this->f->db->query($sql);
244 // Logger
245 $this->f->addToLog(
246 __METHOD__."(): db->query(\"".$sql."\")",
247 VERBOSE_MODE
248 );
249 // Gestion des erreurs de base de données
250 $this->f->isDatabaseError($res);
251 // En fonction du nombre de consultations correspondantes
252 // on affiche un message d"erreur ou on redirige vers le formulaire de
253 // saisie du retour
254 if ($res->numrows()==0) {
255 // Si
256 $message_class = "error";
257 $message = _("Ce code barres de consultation n'existe pas.");
258 } elseif ($res->numrows() > 1) {
259 // Si
260 $message_class = "error";
261 $message = _("Plusieurs consultations avec ce code barres.");
262 } else {
263 $row =& $res->fetchRow(DB_FETCHMODE_ASSOC);
264 header("Location: ../scr/form.php?obj=consultation&action=100&retour=suivi_retours_de_consultation&idx=".$row['consultation']);
265 }
266 } elseif ($this->f->get_submitted_post_value('code_barres')!==null && $this->f->get_submitted_post_value('code_barres') == "") {
267 // Si aucune valeur n'a été saisie dans le champs consultation
268 $message_class = "error";
269 $message = _("Veuiller saisir un code barres de consultation.");
270 } else {
271 // Si
272 $message_class = "error";
273 $message = _("Cette consultation n'existe pas.");
274 }
275 }
276
277 /**
278 * Affichage des messages et du formulaire
279 */
280 // Affichage du message de validation ou d'erreur
281 if (isset($message) && isset($message_class) && $message != "") {
282 $this->f->displayMessage($message_class, $message);
283 }
284 //
285 $datasubmit = $this->getDataSubmit();
286 // Inclusion de la classe de gestion des formulaires
287 require_once "../obj/om_formulaire.class.php";
288 // Ouverture du formulaire
289 echo "\t<form";
290 echo " method=\"post\"";
291 echo " id=\"suivi_retours_de_consultation_form\"";
292 echo " action=\"".$datasubmit."\"";
293 echo ">\n";
294 // Paramétrage des champs du formulaire
295 $champs = array("code_barres");
296 // Création d'un nouvel objet de type formulaire
297 $form = new formulaire(null, 0, 0, $champs);
298 // Paramétrage des champs du formulaire
299 $form->setLib("code_barres", _("No de code barres de consultation"));
300 $form->setType("code_barres", "text");
301 $form->setTaille("code_barres", 25);
302 $form->setMax("code_barres", 25);
303 // Affichage du formulaire
304 $form->entete();
305 $form->afficher($champs, 0, false, false);
306 $form->enpied();
307 // Affichage du bouton
308 echo "\t<div class=\"formControls\">\n";
309 $this->f->layout->display_form_button(array("value" => _("Valider")));
310 echo "\t</div>\n";
311 // Fermeture du formulaire
312 echo "\t</form>\n";
313 }
314
315 /**
316 * Ce script permet de mettre à jour les dates de suivi du traitement
317 * des consultations.
318 */
319 function view_suivi_mise_a_jour_des_dates() {
320 //
321 $this->checkAccessibility();
322
323 // Récupération des valeur passées en POST ou GET
324 $date = "";
325 if($this->f->get_submitted_post_value('date') !== null) {
326 $date = $this->f->get_submitted_post_value('date');
327 } elseif($this->f->get_submitted_get_value('date') !== null) {
328 $date = $this->f->get_submitted_get_value('date');
329 }
330 $code_barres = "";
331 if($this->f->get_submitted_post_value('code_barres') !== null) {
332 $code_barres = $this->f->get_submitted_post_value('code_barres');
333 } elseif($this->f->get_submitted_get_value('code_barres')!==null) {
334 $code_barres = $this->f->get_submitted_get_value('code_barres');
335 }
336
337 // Booléen permettant de définir si un enregistrement à eu lieu
338 $correct = false;
339 // Booléen permettant de définir si les dates peuvent êtres enregistrées
340 $date_error = false;
341
342 // Si le formulaire a été validé
343 if ($this->f->get_submitted_post_value('validation') !== null) {
344 //Tous les champs doivent obligatoirement être remplis
345 if ( !empty($date) && !empty($code_barres) ){
346
347 //Vérification de l'existence de la consultation
348 $sql = "SELECT consultation, type_consultation
349 FROM ".DB_PREFIXE."consultation
350 LEFT JOIN ".DB_PREFIXE."service
351 ON service.service = consultation.service
352 WHERE code_barres = '".$this->f->db->escapesimple($code_barres)."'";
353 $res = $this->f->db->query($sql);
354 $this->f->addToLog("app/demandes_avis_mise_a_jour_des_dates.php : db->query(\"".$sql."\")", VERBOSE_MODE);
355 $this->f->isDatabaseError($res);
356
357 //Si le code barres est correct
358 if($res->numrows() == 1) {
359
360 //Un retour de demande d'avis ne peut être saisie que si le type de
361 //consultation est "avec_avis_attendu"
362 $row =& $res->fetchRow(DB_FETCHMODE_ASSOC);
363 if ( strcasecmp($row['type_consultation'], "avec_avis_attendu") === 0 ){
364
365 //On met à jour la date après l'écran de vérification
366 if($this->f->get_submitted_post_value("is_valid") != null and $this->f->get_submitted_post_value("is_valid") == "true") {
367 require_once '../obj/consultation.class.php';
368 $consultation = new consultation($row['consultation'], $this->f->db, DEBUG);
369 $consultation->setParameter("maj", 1);
370 $valF = array();
371 foreach($consultation->champs as $id => $champ) {
372 $valF[$champ] = $consultation->val[$id];
373 }
374
375 $valF['date_reception']=$date;
376
377 $consultation->modifier($valF, $this->f->db, DEBUG);
378 // Vérification de la finalisation du document
379 // correspondant au code barres
380 if($consultation->valF["om_final_consultation"] === true) {
381 $message_class = "valid";
382 $message = _("Saisie enregistree");
383 $code_barres = "";
384 } else {
385 //
386 $message_class = "error";
387 $message = sprintf(_("Le document correspondant au
388 code barres %s n'est pas finalise,
389 la date ne sera pas mise a jour."),
390 $code_barres);
391 }
392
393 }
394 //Sinon on récupère les infos du dossier pour les afficher
395 else {
396 // Récupération des infos du dossier
397 $sqlInfo = "SELECT dossier_libelle, libelle,
398 date_reception,
399 TO_CHAR(date_envoi ,'DD/MM/YYYY') as date_envoi
400 FROM ".DB_PREFIXE."consultation
401 LEFT JOIN ".DB_PREFIXE."dossier
402 ON dossier.dossier = consultation.dossier
403 LEFT JOIN ".DB_PREFIXE."service
404 ON service.service = consultation.service
405 WHERE code_barres='".$code_barres."'";
406 $resInfo = $this->f->db->query($sqlInfo);
407 $this->f->isDatabaseError($resInfo);
408 $infos = $resInfo->fetchRow(DB_FETCHMODE_ASSOC);
409 }
410 }
411 //C'est un autre type de consultation
412 else{
413 $message_class = "error";
414 $message = _("Cette consultation n'a pas d'avis attendu.");
415 }
416 }
417 else {
418 $message_class = "error";
419 $message = _("Le numero saisi ne correspond a aucun code barres de consultation.");
420 }
421 } else {
422 $message_class = "error";
423 $message = _("Tous les champs doivent etre remplis.");
424 }
425 }
426
427 /**
428 * Affichage des messages et du formulaire
429 */
430 // Affichage du message de validation ou d'erreur
431 if (isset($message) && isset($message_class) && $message != "") {
432 $this->f->displayMessage($message_class, $message);
433 }
434 //
435 $datasubmit = $this->getDataSubmit();
436 // Inclusion de la classe de gestion des formulaires
437 require_once "../obj/om_formulaire.class.php";
438 // Ouverture du formulaire
439 printf("\t<form");
440 printf(" method=\"post\"");
441 printf(" id=\"demandes_avis_mise_a_jour_des_dates_form\"");
442 printf(" action=\"".$datasubmit."\"");
443 printf(">\n");
444 // Paramétrage des champs du formulaire
445 $champs = array("date", "code_barres");
446 if (isset($infos)) {
447 array_push(
448 $champs,
449 "dossier_libelle",
450 "service",
451 "date_envoi",
452 "date_reception",
453 "is_valid"
454 );
455 }
456 // Création d'un nouvel objet de type formulaire
457 $form = new formulaire(null, 0, 0, $champs);
458 // Paramétrage des champs du formulaire
459 // Parametrage du champ date
460 $form->setLib("date", _("Date")."* :");
461 if (isset($infos)) {
462 $form->setType("date", "hiddenstaticdate");
463 } else {
464 $form->setType("date", "date");
465 }
466 $form->setVal("date", $date);
467 $form->setTaille("date", 10);
468 $form->setMax("date", 10);
469
470 // Parametrage du champ code_barres
471 $form->setLib("code_barres", _("Code barres de consultation")."* :");
472 if (isset($infos)) {
473 $form->setType("code_barres", "hiddenstatic");
474 } else {
475 $form->setType("code_barres", "text");
476 }
477 $form->setVal("code_barres", $code_barres);
478 $form->setTaille("code_barres", 20);
479 $form->setMax("code_barres", 20);
480
481 // Ajout des infos du dossier correspondantes à la consultation séléctionnée
482 if (isset($infos)) {
483
484 // Tous les champs sont défini par defaut à static
485 foreach ($infos as $key => $value) {
486 $form->setType($key, "static");
487 $form->setVal($key, $value);
488 }
489
490 // Les champs dont on vient de définir la valeur sont en gras
491 $form->setBloc("date_reception", 'DF', "", 'bold');
492
493 // Parametrage du champ dossier
494 $form->setLib("dossier_libelle", _("dossier_libelle")." :");
495 $form->setType("dossier_libelle", "static");
496 $form->setVal("dossier_libelle", $infos['dossier_libelle']);
497
498 // Parametrage du champ service
499 $form->setLib("service", _("service")." :");
500 $form->setType("service", "static");
501 $form->setVal("service", $infos['libelle']);
502
503 // Parametrage des libellés d'envoi avec RAR
504 $form->setLib("date_envoi", _("Envoi demande d'avis")." :");
505 $form->setLib("date_reception", _("Retour demande d'avis")." :");
506 $form->setVal("date_reception", $date);
507
508 // Ajout d'un champ hidden permettant de savoir que le formulaire précédant est celui de vérification
509 $form->setLib("is_valid", _("Valide")." :");
510 $form->setType("is_valid", "hidden");
511 $form->setVal("is_valid", 'true');
512
513 $form->setFieldset('dossier_libelle', 'D', _('Synthese'));
514 $form->setFieldset('is_valid', 'F');
515 }
516
517
518 // Création du fieldset regroupant les champs permettant la mise à jour des date
519 $form->setFieldset('date', 'D', _('Mise a jour'));
520 $form->setFieldset('code_barres', 'F');
521 // Affichage du formulaire
522 $form->entete();
523 $form->afficher($champs, 0, false, false);
524 $form->enpied();
525 // Affichage du bouton
526 printf("\t<div class=\"formControls\">\n");
527 //
528 if (!$date_error) {
529 $this->f->layout->display_form_button(
530 array("value" => _("Valider"), "name" => "validation")
531 );
532 }
533 // Si pas sur l'écran de validation
534 if (isset($infos)) {
535 printf(
536 '<a class="retour" href="%s&amp;date=%s&amp;code_barres=%s">Retour</a>',
537 $datasubmit,
538 $date,
539 $code_barres
540 );
541 }
542 printf("\t</div>\n");
543 // Fermeture du formulaire
544 printf("\t</form>\n");
545
546 }
547
548 /**
549 * Défini si l'utilisateur est un intructeur qui en correspond à la division
550 * du dossier.
551 *
552 * @return boolean true si correspond false sinon
553 */
554 function is_instructeur_from_division() {
555
556 if ($this->f->isUserInstructeur()
557 && isset($this->f->om_utilisateur["division"])
558 && $this->f->om_utilisateur["division"] != $this->getDivisionFromDossier()) {
559 //
560 return false;
561 }
562 return true;
563 }
564
565 /**
566 * Défini si l'utilisateur est de la cellule suivi.
567 *
568 * @return boolean true si correspond false sinon
569 */
570 function is_suivi_retours_de_consultation() {
571
572 if($this->f->can_bypass("consultation", "modifier")){
573 return true;
574 }
575
576 return $this->f->isAccredited("consultation_suivi_retours_de_consultation");
577 }
578
579 /**
580 * Si le champ lu est à true l'action "Marquer comme lu" n'est pas affichée
581 *
582 * @return boolean true sinon lu false sinon
583 */
584 function show_marquer_comme_lu_portlet_action() {
585 if (isset($this->val[array_search("lu", $this->champs)])
586 && $this->val[array_search("lu", $this->champs)]== "t") {
587 return false;
588 }
589 return true;
590 }
591
592 /**
593 * Si le document est finalisé l'action "finaliser" n'est pas affichée
594 *
595 * @return boolean true sinon lu false sinon
596 */
597 function show_consultation_finaliser_portlet_action() {
598 if ($this->is_document_finalized("om_final_consultation")) {
599 return false;
600 }
601 return true;
602 }
603
604 /**
605 * Retourne is_document_finalized("om_final_consultation")
606 *
607 * @return boolean true si finalisé false sinon
608 */
609 function show_unfinalize_portlet_action() {
610 return $this->is_document_finalized("om_final_consultation");
611 }
612
613 /**
614 * Permet de savoir si le document passé en paramètre est finalisé
615 *
616 * @param string $field flag finalisé
617 *
618 * @return boolean true si finalisé false sinon
619 */
620 function is_document_finalized($field) {
621 if($this->getVal($field) == 't') {
622 return true;
623 }
624 return false;
625 }
626
627 /**
628 * Si le dossier d'instruction auquel est rattachée la consultation est
629 * cloturé, on affiche pas les liens du portlet.
630 *
631 * @return boolean true si non cloturé false sinon
632 */
633 function is_dossier_instruction_not_closed() {
634 $idxformulaire = $this->getParameter("idxformulaire");
635 $retourformulaire = $this->getParameter("retourformulaire");
636 //Si le dossier d'instruction auquel est rattachée la consultation est
637 //cloturé, on affiche pas les liens du portlet
638 if ( $idxformulaire != '' &&
639 (
640 $retourformulaire == 'dossier' ||
641 $retourformulaire == 'dossier_instruction' ||
642 $retourformulaire == 'dossier_instruction_mes_encours' ||
643 $retourformulaire == 'dossier_instruction_tous_encours' ||
644 $retourformulaire == 'dossier_instruction_mes_clotures' ||
645 $retourformulaire == 'dossier_instruction_tous_clotures'
646 )){
647
648 //On récuppère le statut du dossier d'instruction
649 $statut = $this->f->getStatutDossier($idxformulaire);
650 if ( $this->f->isUserInstructeur() && $statut == "cloture" ){
651 return false;
652 }
653 }
654 return true;
655 }
656
657 // {{{ Gestion de la confidentialité des données spécifiques
658
659 /**
660 * Cette méthode permet de récupérer le code de division correspondant
661 * au dossier sur lequel on se trouve.
662 *
663 * @return string Code de la division du dossier en cours
664 */
665 function getDivisionFromDossier() {
666
667 // Cette méthode peut être appelée plusieurs fois lors d'une requête.
668 // Pour éviter de refaire le traitement de recherche de la division
669 // alors on vérifie si nous ne l'avons pas déjà calculé.
670 if ($this->_division_from_dossier != NULL) {
671 // Logger
672 $this->addToLog("getDivisionFromDossier(): retour de la valeur déjà calculée - '".$this->_division_from_dossier."'", EXTRA_VERBOSE_MODE);
673 // On retourne la valeur déjà calculée
674 return $this->_division_from_dossier;
675 }
676
677 // Par défaut, on définit la valeur du dossier à NULL
678 $dossier = NULL;
679 // Test sur le mode et le contexte du formulaire
680 if (($this->getParameter("maj") == 0 or $this->getParameter("maj") == 40)
681 && ($this->getParameter("retourformulaire") == "dossier"
682 || $this->getParameter("retourformulaire") == "dossier_instruction"
683 || $this->getParameter("retourformulaire") == "dossier_instruction_mes_encours"
684 || $this->getParameter("retourformulaire") == "dossier_instruction_tous_encours"
685 || $this->getParameter("retourformulaire") == "dossier_instruction_mes_clotures"
686 || $this->getParameter("retourformulaire") == "dossier_instruction_tous_clotures")) {
687 // Si on se trouve en mode AJOUT (seul mode où l'enregistrement
688 // n'existe pas en base de données) ET que nous nous trouvons
689 // dans le contexte d'un dossier d'instruction alors on récupère
690 // le numéro de dossier depuis le paramètre 'idxformulaire'
691 $dossier = $this->getParameter("idxformulaire");
692 } else {
693 // Sinon on récupère le numéro de dossier dans le champs dossier de
694 // l'enregistrement (en base de données)
695 $dossier = $this->getVal("dossier");
696 }
697
698 // On appelle la méthode de la classe utils qui renvoi le code de la
699 // division d'un dossier, on la stocke pour ne pas refaire le calcul au
700 // prochain appel de cette méthode
701 $this->_division_from_dossier = $this->f->getDivisionFromDossier($dossier);
702 // Logger
703 $this->addToLog("getDivisionFromDossier(): retour de la valeur nouvellement calculée - '".$this->_division_from_dossier."'", EXTRA_VERBOSE_MODE);
704 // On retourne la valeur retournée
705 return $this->_division_from_dossier;
706
707 }
708
709 /**
710 * TREATMENT - marquer_comme_lu.
711 *
712 * Cette methode permet de passer la consultation en "lu"
713 *
714 * @return boolean true si maj effectué false sinon
715 */
716 function marquer_comme_lu() {
717 // Cette méthode permet d'exécuter une routine en début des méthodes
718 // dites de TREATMENT.
719 $this->begin_treatment(__METHOD__);
720
721 if($this->getVal("lu") == 'f') {
722 $this->correct = true;
723 $this->valF["lu"] = true;
724
725 $res = $this->f->db->autoExecute(
726 DB_PREFIXE.$this->table,
727 $this->valF,
728 DB_AUTOQUERY_UPDATE,
729 $this->clePrimaire."=".$this->getVal($this->clePrimaire)
730 );
731 if ($this->f->isDatabaseError($res, true)) {
732 // Appel de la methode de recuperation des erreurs
733 $this->erreur_db($res->getDebugInfo(), $res->getMessage(), '');
734 $this->correct = false;
735 // Termine le traitement
736 return $this->end_treatment(__METHOD__, false);
737 } else {
738 $this->addToMessage(_("Mise a jour effectue avec succes"));
739 return $this->end_treatment(__METHOD__, true);
740 }
741
742 } else {
743 $this->addToMessage(_("Element deja marque comme lu"));
744 }
745
746 // Termine le traitement
747 return $this->end_treatment(__METHOD__, false);
748 }
749
750 // }}}
751
752 /**
753 * TREATMENT - ajouter_multiple.
754 *
755 * Cette methode permet d'ajouter plusieurs consultations.
756 *
757 * @return boolean true si ajouts effectués false sinon
758 */
759 function ajouter_multiple() {
760 // Cette méthode permet d'exécuter une routine en début des méthodes
761 // dites de TREATMENT.
762 $this->begin_treatment(__METHOD__);
763
764 // Identifiant de l'objet metier a copier
765 ($this->f->get_submitted_get_value('idxformulaire') !== null ? $idx = $this->f->get_submitted_get_value('idxformulaire') : $idx = "");
766 // Nom de l'objet metier
767 ($this->f->get_submitted_get_value('obj') !== null ? $obj = $this->f->get_submitted_get_value('obj') : $obj = "");
768 //formulaire retour
769 ($this->f->get_submitted_get_value('ret') !== null ? $retourformulaire = $this->f->get_submitted_get_value('ret') : $retourformulaire = "");
770 ($this->f->get_submitted_get_value('date_envoi') !== null ? $date_envoi = $this->f->get_submitted_get_value('date_envoi') : $date_envoi = "");
771 /*Récupération des données et formatage.*/
772 $donnees_temp = explode(';', $this->f->get_submitted_get_value('data'));
773 for ( $i = 1 ; $i < count($donnees_temp) ; $i++ )
774 $donnees[] = explode('_', $donnees_temp[$i]);
775 /* Nombre de consultations papier à générer */
776 $nbConsPap = 0;
777
778 /* Ajout des données en base de données
779 * 0 : l'ID du service
780 * 1 : consultation papier {0,1}
781 * */
782 if ( isset($donnees) && count($donnees) > 0 ) {
783
784 foreach ($donnees as $value) {
785
786 $sql = "SELECT delai, id, delai_type
787 FROM ".DB_PREFIXE."service
788 LEFT JOIN ".DB_PREFIXE."om_etat
789 ON service.edition = om_etat.om_etat
790 WHERE service = $value[0]";
791 $res = $this->f->db->query($sql);
792 // Si la récupération de la description de l'avis échoue
793 if ($this->f->isDatabaseError($res, true)) {
794 // Appel de la methode de recuperation des erreurs
795 $this->erreur_db($res->getDebugInfo(), $res->getMessage(), '');
796 $this->correct = false;
797 // Termine le traitement
798 $this->end_treatment(__METHOD__, false);
799 }
800 $row=& $res->fetchRow();
801 $delai = $row[0];
802 $type_edition = $row[1];
803 $delai_type = $row[2];
804
805 /*Calcul du delai de retour*/
806 $date_envoi_temp = $this->datePHP($date_envoi);
807 $delai = $this->dateDB($this->f->mois_date($date_envoi_temp, $delai, "+", $delai_type));
808
809 /*Les données à ajouter*/
810 $arrayVal = array(
811 'consultation' => "]",
812 'dossier' => $idx,
813 'date_envoi' => $date_envoi,
814 'date_retour' => NULL,
815 'date_limite' => $delai,
816 'service' => $value[0],
817 'avis_consultation' => NULL,
818 'date_reception' => NULL,
819 'motivation' => "",
820 'fichier' => NULL,
821 'lu' => TRUE,
822 'code_barres' => NULL,
823 'om_final_consultation' => false,
824 'om_fichier_consultation' => '',
825 'marque' => false,
826 );
827
828 $res_ajout = $this->ajouter($arrayVal, $this->f->db, DEBUG);
829 if($res_ajout != true) {
830 // Termine le traitement
831 $this->end_treatment(__METHOD__, false);
832 }
833
834 /*Comptage du nombre de consultations papier demandées et récupération des ids des PDFs à éditer*/
835 if ($value[1]==1){
836 $idxConsultations[] = $this->valF['consultation'];
837 $objConsultations[] = $type_edition;
838 $nbConsPap++;
839 }
840 }
841
842 /*Génération du PDF*/
843 if ( isset($idxConsultations) && count($idxConsultations) > 0 ){
844
845 $textIdsConsultations = "idx=";
846 foreach ($idxConsultations as $value) {
847 $textIdsConsultations .= $value.";";
848 }
849 $textObjConsultations = "obj=";
850 foreach ($objConsultations as $value) {
851 $textObjConsultations .= $value.";";
852 }
853 echo "
854 <script language='javascript' type='text/javascript'>
855 window.open('../pdf/pdfetat.php?output=inline&".$textObjConsultations."&".$textIdsConsultations."','_blank')
856 </script>
857 ";
858 }
859 $return_url = "../scr/soustab.php?";
860 $return_url .= "obj=consultation";
861 $return_url .= "&retourformulaire=".$this->getParameter("retourformulaire");
862 $return_url .= "&idxformulaire=".$this->getParameter("idxformulaire");
863 $return_url .= "&premier=".$this->getParameter("premiersf");
864 $return_url .= "&tricol=".$this->getParameter("tricolsf");
865
866 /*Affichage du message d'information*/
867 $this->f->displayMessage("valid", count($donnees)._(' service(s) selectionne(s) dont ').$nbConsPap._(' consultation(s) papier.'));
868
869
870 // Termine le traitement
871 return $this->end_treatment(__METHOD__, true);
872 }
873 }
874
875
876 /**
877 * VIEW - view_ajout_multiple.
878 *
879 * Formulaire specifique
880 *
881 * @return void
882 */
883 function view_ajout_multiple() {
884
885 if (count($this->f->get_submitted_get_value()) > 0
886 && $this->f->get_submitted_get_value('data') !== null
887 && $this->f->get_submitted_get_value('data') != "" ) {
888 $this->f->disableLog();
889 $this->ajouter_multiple();
890
891 } else {
892
893 // Vérification de l'accessibilité sur l'élément
894 $this->checkAccessibility();
895 //
896 $datasubmit = $this->getDataSubmitSousForm();
897 $return_url = "../scr/soustab.php?";
898 $return_url .= "obj=consultation";
899 $return_url .= "&retourformulaire=".$this->getParameter("retourformulaire");
900 $return_url .= "&idxformulaire=".$this->getParameter("idxformulaire");
901 $return_url .= "&premier=".$this->getParameter("premiersf");
902 $return_url .= "&tricol=".$this->getParameter("tricolsf");
903 // Légende du fieldset
904 $title = _("Objet");
905 /*Requête qui récupère les services qui sont dans des thématiques*/
906 $sql =
907 "SELECT
908 ser_cat.service_categorie,
909 ser_cat.libelle AS them_lib,
910 ser.service,
911 CONCAT(ser.abrege, ' - ', ser.libelle) AS ser_lib,
912 ser.consultation_papier
913 FROM
914 ".DB_PREFIXE."lien_service_service_categorie lie,
915 ".DB_PREFIXE."service_categorie ser_cat,
916 ".DB_PREFIXE."service ser
917 LEFT JOIN ".DB_PREFIXE."om_collectivite
918 ON ser.om_collectivite = om_collectivite.om_collectivite
919 WHERE
920 ser_cat.service_categorie = lie.service_categorie AND
921 ser.service = lie.service AND
922 (
923 (ser.om_validite_debut IS NULL
924 AND (ser.om_validite_fin IS NULL
925 OR ser.om_validite_fin > CURRENT_DATE))
926 OR
927 (ser.om_validite_debut <= CURRENT_DATE
928 AND (ser.om_validite_fin IS NULL
929 OR ser.om_validite_fin > CURRENT_DATE))
930 )";
931
932 // Si c'est un sous-formulaire de dossier d'instruction ou une de ses surcharges
933 // mes encours, mes clôtures...
934 $is_in_context_of_foreign_key = $this->is_in_context_of_foreign_key("dossier", $this->getParameter('retourformulaire'));
935 if ($is_in_context_of_foreign_key == true) {
936
937 // on recupère les services des multicollectivités et de celle
938 // du DI
939 require_once "../obj/dossier_instruction.class.php";
940 $di = new dossier_instruction($this->getParameter('idxformulaire'), $this->db, false);
941
942 //
943 $sql .= sprintf(" AND (om_collectivite.niveau = '2' OR ser.om_collectivite = %s) ", $di->getVal('om_collectivite'));
944 }
945 //
946 $sql .= " ORDER BY them_lib, ser.abrege, ser.libelle";
947
948 $res = $this->f->db->query($sql);
949 $this->f->addToLog(
950 "app/consultation_multiple.php: db->query(\"".$sql."\")", VERBOSE_MODE
951 );
952 $this->f->isDatabaseError($res);
953
954 $temp_ser_cat = 0;
955 $liste_gauche = "";
956
957 while ($row=& $res->fetchRow(DB_FETCHMODE_ASSOC)) {
958 $name = $row['service_categorie'].'_'.
959 $row['service'].'_'.
960 (($row['consultation_papier'] == '' || $row['consultation_papier'] == 'f' ) ? '0' : '1' ).'_';
961 // On change de thématique, donc rajoute le nom de la thématique
962 if ( $temp_ser_cat != $row['service_categorie'] ){
963
964 $temp_ser_cat = $row['service_categorie'];
965 $liste_gauche .= '
966 <div id="them_'.$row['service_categorie'].'" class="liste_gauche_them" >'.
967 $row['them_lib'].
968 '</div>
969 <div
970 class="liste_gauche_service t'.$name.'"
971 id="t'.$name.'" >
972 '.$row['ser_lib'].'
973 <input class="t'.$name.'" type="checkbox" '.(($row['consultation_papier'] == '' || $row['consultation_papier'] == 'f' ) ? '' : 'checked="checked"' ).'/>
974 </div>
975 ';
976 }
977
978 /*On est dans la même thématique*/
979 else {
980
981 $liste_gauche .= '
982 <div
983 class="liste_gauche_service t'.$name.'"
984 id="t'.$name.'" >
985 '.$row['ser_lib'].'
986 <input class="t'.$name.'" type="checkbox" '.(($row['consultation_papier'] == '' || $row['consultation_papier'] == 'f' ) ? '' : 'checked="checked"' ).'/>
987 </div>
988 ';
989 }
990
991 }
992
993 /*Requête qui récupère les services qui ne sont pas dans une thématique*/
994 $sql =
995 "SELECT service.service,
996 CONCAT(service.abrege, ' - ', service.libelle) AS ser_lib,
997 service.consultation_papier
998 FROM ".DB_PREFIXE."service
999 LEFT JOIN ".DB_PREFIXE."om_collectivite
1000 ON service.om_collectivite = om_collectivite.om_collectivite
1001 WHERE service NOT IN
1002 (
1003 SELECT service
1004 FROM ".DB_PREFIXE."lien_service_service_categorie
1005 )
1006 AND
1007 (
1008 om_validite_fin <= CURRENT_DATE OR
1009 om_validite_fin IS NULL
1010 )
1011 ";
1012
1013 // Si c'est un sous-formulaire de dossier d'instruction ou une de ses surcharges
1014 // mes encours, mes clôtures...
1015 $is_in_context_of_foreign_key = $this->is_in_context_of_foreign_key("dossier", $this->getParameter('retourformulaire'));
1016 if ($is_in_context_of_foreign_key == true) {
1017
1018 // on recupère les services des multicollectivités et de celle
1019 // du DI
1020 require_once "../obj/dossier_instruction.class.php";
1021 $di = new dossier_instruction($this->getParameter('idxformulaire'), $this->db, false);
1022
1023 //
1024 $sql .= sprintf(" AND (om_collectivite.niveau = '2' OR service.om_collectivite = %s) ", $di->getVal('om_collectivite'));
1025 }
1026
1027 // Tri des services qui ne sont pas dans une thématique par ordre alphabétique
1028 $sql .= " ORDER BY service.abrege, service.libelle";
1029
1030
1031 $res = $this->f->db->query($sql);
1032 $this->f->isDatabaseError($res);
1033
1034 if ($res->numrows() > 0) {
1035 $liste_gauche .= '
1036 <div id="them_0" class="liste_gauche_them">Autres</div>';
1037 }
1038
1039 while ($row=& $res->fetchRow(DB_FETCHMODE_ASSOC)) {
1040
1041 /*Ajout de tous les services qui n'ont pas de thématique*/
1042 $name = '0_'.
1043 $row['service'].'_'.
1044 (($row['consultation_papier'] == '' || $row['consultation_papier'] == 'f' ) ? '0' : '1' ).'_';
1045 $liste_gauche .= '
1046 <div
1047 class="liste_gauche_service t'.$name.'"
1048 id="t'.$name.'" >
1049 '.$row['ser_lib'].'&nbsp;
1050 <input class="t'.$name.'" type="checkbox" '.(($row['consultation_papier'] == '' || $row['consultation_papier'] == 'f' ) ? '' : 'checked="checked"' ).'/>
1051 </div>
1052 ';
1053 }
1054
1055 /*Affichage du formulaire*/
1056 echo "\n<!-- ########## START DBFORM ########## -->\n";
1057 echo "<form";
1058 echo " method=\"post\"";
1059 echo " name=\"f2\"";
1060 echo " action=\"\"";
1061 echo " id=\"form_val\"";
1062 //echo " onsubmit=\"ajaxIt('consultation', '');return false;\"";
1063
1064 //echo " onsubmit=\"affichersform('".$this->getParameter("objsf")."', '".$datasubmit."', this);\"";
1065 echo ">\n";
1066 echo '<div class="formEntete ui-corner-all">';
1067 echo "<div>";
1068 echo '<div class="bloc">';
1069 echo "<fieldset class='cadre ui-corner-all ui-widget-content'>\n";
1070 echo "\t<legend class='ui-corner-all ui-widget-content ui-state-active'>".
1071 _("Consultation par thematique ")."</legend>";
1072 echo "<div class='fieldsetContent' style='width:100%'>";
1073 echo '<div class="field-ser-them field-type-hiddenstatic">';
1074 echo '<div class="form-libelle">';
1075 echo '<label class="libelle-dossier" for="dossier">';
1076 echo _('dossier');
1077 echo '<span class="not-null-tag">*</span>';
1078 echo '</label>';
1079 echo '</div>';
1080 echo '<div class="form-content">';
1081 echo '<input class="champFormulaire" type="hidden" value="'.$this->getParameter("idxformulaire").'" name="dossier"/>';
1082 echo $this->getParameter("idxformulaire");
1083 echo '</div>';
1084 echo '</div>';
1085 /*Code du nouveau champ*/
1086 echo '<div class="field-ser-them ser-them">';
1087 echo '<div class="list-ser-them">';
1088 echo $liste_gauche;
1089 echo '</div>';
1090 echo '<div class="button-ser-them">';
1091 echo '<ul>';
1092 echo '<li>';
1093 echo '<input type="button" value="'._("Ajouter").' >>" id="add-ser-them"/>';
1094 echo '</li>';
1095 echo '<li>';
1096 echo '<input type="button" value="<< '._("Supprimer").'" id="del-ser-them"/>';
1097 echo '</li>';
1098 echo '</ul>';
1099 echo '</div>';
1100 echo '<div class="list-sel-ser-them">';
1101 echo '<div class=\'row row_title\'>';
1102 echo '<div class=\'cell1 liste_droite_title list-sel-ser-them-title\'>'._('Service a consulter').'</div>';
1103 echo '<div class=\'cell2 liste_droite_title list-sel-ser-them-title\'>'._('Version papier').'</div>';
1104 echo '</div>';
1105 echo '</div>';
1106 echo '</div>';
1107 /* -- FIN --*/
1108 // Le champ de date d'envoi est visible seulement aux ayant-droits
1109 if($this->f->isAccredited('consultation_saisir_date_envoi')) {
1110 echo '<div class="field-ser-them field-type-date2">';
1111 }
1112 else {
1113 echo '<div class="field field-type-hiddendate">';
1114 }
1115 echo '<div class="form-libelle">';
1116 echo '<label class="libelle-date_envoi" for="date_envoi">';
1117 echo _('date_envoi');
1118 echo '<span class="not-null-tag">*</span>';
1119 echo '</label>';
1120 echo '</div>';
1121 echo '<div class="form-content">';
1122 echo '<input id="date_envoi" class="champFormulaire datepicker"
1123 type="text" onkeyup="" onchange="fdate(this);"
1124 maxlength="10" size="12" value="'.date("d/m/Y").'"
1125 name="date_envoi">';
1126 echo '</div>';
1127 echo '</div>';
1128 echo "</div>";
1129 echo "</fieldset>";
1130 echo '</div>';
1131 echo '</div>';
1132 echo '</div>';
1133 echo '<div class="formControls">';
1134
1135 echo '<div class="formControls">';
1136 echo "<input class=\"om-button ui-button ui-widget ui-state-default ui-corner-all\"
1137 type=\"button\"
1138
1139 value=\"Ajouter le(s) enregistrement(s) de la table : 'Consultation'\"
1140 id=\"button_val\">";
1141 $this->retoursousformulaire(
1142 $this->getParameter("idxformulaire"),
1143 $this->getParameter("retourformulaire"),
1144 null,
1145 $this->getParameter("objsf"),
1146 $this->getParameter("premiersf"),
1147 $this->getParameter("tricolsf"),
1148 $this->getParameter("validation"),
1149 $this->getParameter("idx"),
1150 $this->getParameter("maj"),
1151 $this->getParameter("retour")
1152 );
1153 echo '</div>';
1154 echo '</div>';
1155 echo '</form>';
1156
1157 echo "
1158 <script language='javascript' type='text/javascript'>
1159 $(function(){
1160 changeActionVal('');
1161 /*
1162 Sélectionne tous les services d'un thème au clique sur celui ci.
1163 */
1164 $('.liste_gauche_them').click(
1165 function(){
1166
1167 var id = $(this).attr('id').split('_')[1];
1168 var numSer = 0;
1169 var numSerWithClass = 0;
1170
1171 $('.list-ser-them div').each(
1172 function() {
1173
1174 if ( $(this).attr('id').indexOf('them') == -1 &&
1175 $(this).attr('id').indexOf(id) == 1 &&
1176 $(this).hasClass('liste_gauche_service_selected') )
1177
1178 numSerWithClass++;
1179
1180 if ( $(this).attr('id').indexOf('them') == -1 &&
1181 $(this).attr('id').indexOf(id) == 1 )
1182
1183 numSer++;
1184 }
1185 );
1186
1187 if ( numSerWithClass < numSer && numSerWithClass >= 0 ){
1188
1189 $('.list-ser-them div').each(
1190 function() {
1191
1192 if ( $(this).attr('id').indexOf('them') == -1 &&
1193 $(this).attr('id').indexOf(id) == 1 &&
1194 !$(this).hasClass('liste_gauche_service_selected') )
1195
1196 $(this).addClass('liste_gauche_service_selected');
1197 }
1198 );
1199 }
1200
1201 else {
1202
1203 $('.list-ser-them div').each(
1204 function() {
1205
1206 if ( $(this).attr('id').indexOf('them') == -1 &&
1207 $(this).attr('id').indexOf(id) == 1 &&
1208 $(this).hasClass('liste_gauche_service_selected') )
1209
1210 $(this).removeClass('liste_gauche_service_selected');
1211 }
1212 );
1213 }
1214 }
1215 );
1216
1217 /*
1218 Change la class CSS d'un service sur lequel on clique dans la liste de gauche.
1219 */
1220 $('.liste_gauche_service').click(
1221 function(){
1222 $(this).toggleClass('liste_gauche_service_selected');
1223 }
1224 );
1225
1226 /*
1227 Change la class CSS d'un service sur lequel on clique dans la liste de droite.
1228 */
1229 $('.field-ser-them').on(
1230 'click',
1231 '.cell1',
1232 function(){
1233 if ( !$(this).hasClass('liste_droite_title') )
1234 $(this).parent().toggleClass('liste_droite_service_selected');
1235 }
1236 );
1237
1238 $('.liste_droite_service input[type=checkbox]').live(
1239 'click',
1240 'input[type=checkbox]',
1241 function(){
1242
1243 old_id = $(this).attr('class');
1244
1245 tab_don = old_id.split('_');
1246
1247 new_id = tab_don[0] + '_' + tab_don[1] + '_' + ((tab_don[2] == 0 ) ? 1 : 0 ) + '_';
1248
1249 changeOneData( ';' + tab_don[1] + '_' + tab_don[2], ';' + tab_don[1] + '_' + ((tab_don[2] == 0) ? 1 : 0) );
1250 $('div[class=\"' + old_id + '\"]').attr('class', new_id);
1251 $(this).attr('class', new_id);
1252
1253 }
1254 );
1255
1256 $('#date_envoi').change(
1257 function (){
1258
1259 var listServ = new Array();
1260 var data = '';
1261
1262 $('.liste_gauche_service_selected').each(
1263 function(i) {
1264
1265 var id = $(this).attr('id');
1266
1267 if ( listServ.length > 0 && listServ.indexOf(id.split('_')[1]) != -1 )
1268 return;
1269 listServ[i] = id.split('_')[1];
1270 data += ';' + id.split('_')[1] + '_' + id.split('_')[2] ;
1271
1272 }
1273 );
1274
1275 changeActionVal(data);
1276 }
1277 );
1278
1279 /*
1280 Passe les services sélectionnés dans la liste de gauche dans celle de droite.
1281 */
1282 $('#add-ser-them').click(
1283 function() {
1284
1285 changeDataLeftColumn();
1286 }
1287 );
1288
1289 /*
1290 Passe les services sélectionnés dans la liste de droite dans celle de gauche.
1291 */
1292 $('#del-ser-them').click(
1293 function() {
1294
1295 var data = '';
1296
1297 //Supprime les éléments de la liste de droite
1298 $('.liste_droite_service_selected').each(
1299 function() {
1300
1301 var name = $('#'+ $(this).attr('id') + ' .cell1 div').attr('name');
1302
1303 manageListServ('.list-ser-them div', name, 1);
1304
1305 $(this).remove();
1306 }
1307 );
1308
1309 //Change les valeurs qui vont être renvoyées à la validation du formulaire
1310 $('.liste_droite_service').each(
1311 function(){
1312
1313 var name = $('#'+ $(this).attr('id') + ' .cell1 div').attr('name');
1314 data += ';' + name.split('_')[1] + '_' + name.split('_')[2] ;
1315 }
1316 );
1317
1318 changeActionVal(data);
1319 }
1320 );
1321 });
1322
1323 /*
1324 Vérifie que l'objet n'est pas une thématique et que son identifiant correspond.
1325 */
1326 function isNotthemIsOneServ( objet, id ){
1327 return ( $(objet).attr('id').indexOf('them') == -1 &&
1328 $(objet).attr('id').indexOf('_' + id.split('_')[1] + '_') != -1 );
1329 }
1330
1331 /*
1332 Affiche ou cache un élément qui n'est pas une thématique et dont son identifiant correspond.
1333 */
1334 function manageListServ( objet , name, type){
1335
1336 $(objet).each(
1337 function() {
1338
1339 if ( isNotthemIsOneServ(this, name) ){
1340 if ( type == 0 )
1341
1342 $(this).hide() ;
1343
1344 else {
1345
1346 if ( $(this).hasClass('liste_gauche_service_selected') )
1347
1348 $(this).toggleClass('liste_gauche_service_selected');
1349
1350 $(this).show() ;
1351
1352 }
1353 }
1354 }
1355 );
1356 }
1357
1358 /*
1359 Change les actions qui sont réalisées lors de la soumission du formulaire
1360 */
1361 function changeActionVal(data){
1362 date = $('#date_envoi').val();
1363
1364
1365
1366 $('#button_val').attr(
1367 'onclick',
1368 'if ( $(\'.liste_gauche_service_selected\').length > 0 && $(\'#date_envoi\').val() != \'\' ) { messageIt(\'consultation\', \'".html_entity_decode($datasubmit)."&data='+data+'&date_envoi='+date+'\',true);' +
1369 'messageIt(\'consultation\', \'".html_entity_decode($return_url)."\',false);} else alert(\'Veuillez choisir au moins un service et une date d envoi\');'
1370
1371 );
1372
1373 }
1374
1375 /*
1376 Change les actions qui sont réalisées lors de la soumission du formulaire
1377 */
1378 function changeOneData( oldData, newData) {
1379
1380 date = $('#date_envoi').val();
1381
1382 $('#button_val').attr(
1383 'onclick',
1384 $('#button_val').attr('onclick').replace(oldData,newData)
1385 );
1386
1387 }
1388
1389 function changeDataLeftColumn(){
1390
1391 $('.list-sel-ser-them').empty();
1392 $('.list-sel-ser-them').html(
1393 '<div class=\"row row_title\">' +
1394 '<div class=\"cell1 liste_droite_title list-sel-ser-them-title\">"._("Service a consulter")."</div>' +
1395 '<div class=\"cell2 liste_droite_title list-sel-ser-them-title\">"._("Version papier")."</div>' +
1396 '</div>'
1397 );
1398
1399 var listServ = new Array();
1400 var data = '';
1401
1402 $('.liste_gauche_service_selected').each(
1403 function(i) {
1404
1405 var id = $(this).attr('id');
1406
1407 if ( $.inArray(id.split('_')[1], listServ) != -1 )
1408 return;
1409
1410 data += ';' + id.split('_')[1] + '_' + id.split('_')[2] ;
1411 listServ[i] = id.split('_')[1];
1412
1413 $('.list-sel-ser-them').append(
1414 '<div id=\'s' + i + '\' class=\'row liste_droite_service\'>'+
1415 '<div class=\'cell1\'>'+
1416 '<div class=\'' + $(this).attr('id') + '\' name=\'' + $(this).attr('id') + '\'>'+
1417 $(this).html().split('<')[0]+
1418 '</div>'+
1419 '</div>' +
1420 '<div class=\'cell2\'>'+
1421 '<div>'+
1422 '<input class=\'' + $(this).attr('id') + '\''+$(this).html().split('<input')[1]+
1423 '</div>'+
1424 '</div>'+
1425 '</div>'
1426 );
1427
1428 $(this).hide();
1429
1430 manageListServ('.list-ser-them div', id, 0);
1431
1432 }
1433 );
1434 changeActionVal(data);
1435 }
1436 </script>";
1437 }
1438
1439 }
1440
1441 function setValsousformulaire(&$form,$maj,$validation,$idxformulaire,$retourformulaire,$typeformulaire){
1442 // ajout du retourformulaire aux attributs de l'objet
1443 $this->retourformulaire = $retourformulaire;
1444 if ($validation==0) {
1445 if ($maj == 0 or $maj == 40){
1446 $form->setVal("dossier", $idxformulaire);
1447 $form->setVal("date_envoi",date('d/m/Y'));
1448 }
1449 if($maj == 1 or $maj == 90 or $maj == 100) {
1450 if($this->f->isAccredited('consultation_retour_avis_suivi') OR
1451 $this->f->isAccredited('consultation_retour_avis_service')) {
1452 $form->setVal("date_retour",date('d/m/Y'));
1453 }
1454 }
1455 }
1456 }
1457
1458 function setVal(&$form, $maj, $validation) {
1459 if($maj == 1 or $maj == 90 or $maj == 100) {
1460 $form->setVal("date_retour",date('d/m/Y'));
1461 }
1462 }
1463
1464 function setvalF($val) {
1465 //
1466 parent::setValF($val);
1467 //
1468 if ($this->getParameter('maj') == 0 or $this->getParameter('maj') == 40) {
1469 //
1470 if (isset($this->valF["date_envoi"])) {
1471 $this->valF["date_reception"] = $this->valF["date_envoi"];
1472 }
1473 //
1474 $this->valF["lu"] = true;
1475 }
1476
1477 // Si un retour d'avis est modifie on passe "lu" a false
1478 if(($this->getParameter('maj')==90 or $this->getParameter('maj')==100 ) and (
1479 $this->val[array_search("avis_consultation",$this->champs)] != $val["avis_consultation"] OR
1480 $this->val[array_search("date_retour",$this->champs)] != $val["date_retour"] OR
1481 $this->val[array_search("motivation",$this->champs)] != $val["motivation"] OR
1482 $this->val[array_search("fichier",$this->champs)] != $val["fichier"])
1483 ) {
1484 $this->valF["lu"]=false;
1485 }
1486 }
1487
1488 function setLib(&$form, $maj) {
1489 //
1490 parent::setLib($form, $maj);
1491 //
1492 $form->setLib($this->clePrimaire, _("id"));
1493 }
1494
1495 function setType(&$form,$maj) {
1496 // Appel du parent
1497 parent::setType($form,$maj);
1498 $form->setType('dossier', 'hidden');
1499 $form->setType('marque', 'hidden');
1500 // MODE - AJOUTER
1501 if ($maj == 0) {
1502 // On cache alors tous les champs que nous ne voulons pas voir
1503 // apparaître dans le formulaire d'ajout (principalement les
1504 // informations sur le retour d'avis)
1505 $form->setType('date_retour', 'hiddendate');
1506 $form->setType('date_reception', 'hiddendate');
1507 $form->setType('date_limite', 'hiddendate');
1508 $form->setType('avis_consultation', 'hidden');
1509 $form->setType('motivation', 'hidden');
1510 $form->setType('fichier', 'hidden');
1511 $form->setType('lu', 'hidden');
1512 // On permet la modification de certains champs
1513 $form->setType('dossier_libelle', 'hiddenstatic');
1514 $form->setType('service', 'select');
1515 // Le champ "date d'envoi" est affiché seulement si l'utilisateur a la
1516 // permission
1517 if($this->f->isAccredited('consultation_saisir_date_envoi')) {
1518 $form->setType('date_envoi', 'date2');
1519 }
1520 else {
1521 $form->setType('date_envoi', 'hiddendate');
1522 }
1523 }
1524 // MODE - MODIFIER
1525 if ($maj == 1) {
1526
1527 // On affiche en statique les informations qui ne sont plus
1528 // modifiables
1529 $form->setType('dossier_libelle', 'hiddenstatic');
1530 $form->setType('date_envoi', 'hiddenstaticdate');
1531 $form->setType('date_limite', 'hiddenstaticdate');
1532 $form->setType('service', 'selecthiddenstatic');
1533
1534 // La date de réception ne peut être modifiée que par un
1535 // utilisateur en ayant spécifiquement la permission
1536 if($this->f->isAccredited('consultation_modifier_date_reception')) {
1537 $form->setType('date_reception', 'date2');
1538 } else {
1539 $form->setType('date_reception', 'hiddenstaticdate');
1540 }
1541
1542 // Le marqueur lu/non lu ne peut être modifié que par un
1543 // utilisateur en ayant spécifiquement la permission
1544 if ($this->f->isAccredited('consultation_modifier_lu')) {
1545 $form->setType('lu', 'checkbox');
1546 } else {
1547 $form->setType('lu', 'hidden');
1548 }
1549
1550 // Gestion du type du widget sur le champ fichier
1551 if($this->getVal("fichier") == "" OR
1552 $this->f->isAccredited('consultation_modifier_fichier')) {
1553 // Si il n'y a jamais eu de fichier enregistré ou que
1554 // l'utilisateur a spécifiquement les droits pour modifier
1555 // un fichier déjà enregistré alors on positionne un type
1556 // de widget modifiable
1557 if ($this->retourformulaire == "demande_avis_encours"
1558 || $this->retourformulaire == "dossier_qualifier"
1559 || $this->retourformulaire == "dossier"
1560 || $this->retourformulaire == "dossier_instruction"
1561 || $this->retourformulaire == "dossier_instruction_mes_encours"
1562 || $this->retourformulaire == "dossier_instruction_tous_encours"
1563 || $this->retourformulaire == "dossier_instruction_mes_clotures"
1564 || $this->retourformulaire == "dossier_instruction_tous_clotures") {
1565 $form->setType('fichier', 'upload2');
1566 } else {
1567 $form->setType('fichier', 'upload');
1568 }
1569 } else {
1570 // Si non on affiche uniquement le nom du fichier
1571 $form->setType('fichier', 'filestaticedit');
1572 }
1573
1574 }
1575 // Mode supprimer
1576 if ($maj == 2) {
1577 $form->setType('fichier', 'filestatic');
1578 }
1579 // MODE - CONSULTER
1580 if ( $maj == 3 ) {
1581 $form->setType('fichier', 'file');
1582 }
1583 // Mode - retour d'avis
1584 // Modification layout : écran de retour d'avis permettant
1585 // uniquement la saisie des trois champs : avis, motivation et fichier
1586 if ( $maj == 90 ) {
1587
1588 $form->setType("consultation", "hiddenstatic");
1589 if ($this->is_in_context_of_foreign_key("avis_consultation", $this->retourformulaire)) {
1590 $form->setType("avis_consultation", "selecthiddenstatic");
1591 } else {
1592 $form->setType("avis_consultation", "select");
1593 }
1594 $form->setType("motivation", "textarea");
1595 $form->setType('fichier', 'upload2');
1596
1597 // On cache alors tous les champs que nous ne voulons pas voir
1598 $form->setType('dossier_libelle', 'hidden');
1599 $form->setType('service', 'hidden');
1600 $form->setType('date_envoi', 'hiddendate');
1601 $form->setType('date_retour', 'hiddendate');
1602 $form->setType('date_reception', 'hiddendate');
1603 $form->setType('date_limite', 'hiddendate');
1604 $form->setType('lu', 'hidden');
1605 }
1606
1607 // MODE - retour de consultation par suivi des date
1608 if ($maj == 100) {
1609 $form->setType("consultation", "hiddenstatic");
1610 $form->setType('dossier_libelle', 'hiddenstatic');
1611 $form->setType('date_envoi', 'hiddenstaticdate');
1612 $form->setType('date_limite', 'hiddenstaticdate');
1613 $form->setType('date_reception', 'hiddenstaticdate');
1614 $form->setType('service', 'selecthiddenstatic');
1615 $form->setType('date_retour', 'date');
1616 $form->setType('lu', 'hidden');
1617 $form->setType("avis_consultation", "select");
1618 $form->setType("motivation", "textarea");
1619 $form->setType('fichier', 'upload');
1620 }
1621 //// On cache la clé primaire
1622 //$form->setType('consultation', 'hidden');
1623 //
1624 if ($this->getParameter("retourformulaire") == "dossier"
1625 || $this->getParameter("retourformulaire") == "dossier_instruction"
1626 || $this->getParameter("retourformulaire") == "dossier_instruction_mes_encours"
1627 || $this->getParameter("retourformulaire") == "dossier_instruction_tous_encours"
1628 || $this->getParameter("retourformulaire") == "dossier_instruction_mes_clotures"
1629 || $this->getParameter("retourformulaire") == "dossier_instruction_tous_clotures") {
1630 //
1631 $form->setType('dossier_libelle', 'hidden');
1632 }
1633
1634 $form->setType('code_barres', 'hidden');
1635
1636 //Cache les champs pour la finalisation
1637 $form->setType('om_fichier_consultation', 'hidden');
1638 $form->setType('om_final_consultation', 'hidden');
1639
1640 if($maj == 50 or $maj == 60 or $maj == 70) {
1641 foreach ($this->champs as $value) {
1642 $form->setType($value, 'hidden');
1643 }
1644 }
1645 }
1646
1647 // Cette méthode permet de calculer la date limite en fonction de la date
1648 // de réception et du délai de consultation du service consulté
1649 function calculDateLimite() {
1650 // mise a jour instruction avec evenement [return delay]
1651 if ($this->valF["date_reception"] != "") {
1652 //
1653 $sql = " select delai from ".DB_PREFIXE."service ";
1654 $sql .= " where service='".$this->valF["service"]."' ";
1655 $delai = $this->db->getOne($sql);
1656 $this->addToLog(__METHOD__."(): db->getone(\"".$sql."\")", VERBOSE_MODE);
1657 //
1658 $sql = " select delai_type from ".DB_PREFIXE."service ";
1659 $sql .= " where service='".$this->valF["service"]."' ";
1660 $delai_type = $this->db->getOne($sql);
1661 $this->addToLog(__METHOD__."(): db->getone(\"".$sql."\")", VERBOSE_MODE);
1662 //
1663 $this->valF["date_limite"] = $this->f->mois_date($this->valF["date_reception"], $delai, "+", $delai_type);
1664 //
1665 if ($delai_type == "mois") {
1666 $delai_type_trad = _("mois");
1667 } else {
1668 $delai_type_trad = _("jour(s)");
1669 }
1670 //
1671 $this->addToMessage(_("delai")." ".
1672 _("retour")." ".$delai." ".$delai_type_trad." -> ".
1673 _("retour")." ".date("d/m/Y", strtotime($this->valF["date_limite"])));
1674 }
1675 }
1676
1677 // TRIGGER AVANT MODIFICATION DE DONNEES
1678 // trigger before modification data
1679 function triggerajouter($id,&$db,$val,$DEBUG) {
1680 //
1681 $this->calculDateLimite();
1682
1683 // Identifiant du type de courrier
1684 $idTypeCourrier = '12';
1685 $idCourrier = str_pad($this->valF["consultation"], 10, "0", STR_PAD_LEFT);
1686 // Code barres
1687 $this->valF["code_barres"] = $idTypeCourrier . $idCourrier;
1688 }
1689
1690 //
1691 function triggermodifier($id,&$db,$val,$DEBUG) {
1692 //
1693 $this->calculDateLimite();
1694 }
1695
1696 //
1697 function triggerajouterapres($id,&$db,$val,$DEBUG) {
1698
1699 // Verification de la demande de notif par mail
1700 $sql= "SELECT abrege, libelle, notification_email, email FROM ".DB_PREFIXE.
1701 "service WHERE service ='".$this->valF['service']."'";
1702 $res=$db->query($sql);
1703 $notif = $res->fetchrow(DB_FETCHMODE_ASSOC);
1704 if (database :: isError($sql))die($res->getMessage()."erreur ".$sql);
1705 if ($notif['notification_email']=='t') {
1706
1707 // Recuperation des infos du dossier
1708 $sql= "SELECT dossier, terrain_adresse_voie_numero, terrain_adresse_voie, terrain_adresse_code_postal, terrain_adresse_localite
1709 FROM ".DB_PREFIXE."dossier WHERE dossier ='".$this->valF['dossier']."'";
1710 $res=$db->query($sql);
1711 $dossier = $res->fetchrow(DB_FETCHMODE_ASSOC);
1712
1713 // Definition des parametres d'envoi du mail
1714 $title=_("Consultation de services : dossier no")." ".$dossier['dossier'];
1715 $corps=_("Votre service est consulte concernant le dossier no")." ".$dossier['dossier']."<br/>".
1716 _("Il concerne le terrain situe a l'adresse :")." ".$dossier['terrain_adresse_voie_numero'].
1717 " ".$dossier['terrain_adresse_voie']." ".$dossier['terrain_adresse_code_postal']." ".$dossier['terrain_adresse_localite']."<br/>".
1718 _("Vous pouvez y acceder et rendre votre avis a l'adresse")." <a href='".$this->f->getParameter('services_consultes_lien_interne').
1719 // On ajoute l'idx, s'il y a besoin
1720 ((substr($this->f->getParameter('services_consultes_lien_interne'), -5)=="&idx=")?$this->valF['consultation']:"")."'>".
1721 _("Lien interne")."</a> "._("ou")." <a href='".$this->f->getParameter('services_consultes_lien_externe').
1722 // On ajoute l'idx, s'il y a besoin
1723 ((substr($this->f->getParameter('services_consultes_lien_externe'), -5)=="&idx=")?$this->valF['consultation']:"")."'>".
1724 _("Lien externe")."</a>";
1725 // Envoi du mail avec message de retour
1726 if($this->f->sendMail(iconv("UTF-8", "CP1252", $title), iconv("UTF-8", "CP1252", $corps), iconv("UTF-8", "CP1252", $notif['email']))) {
1727 $this->addToMessage(_("Envoi d'un mail de notification au service")." \"(".$notif['abrege'].") ".$notif["libelle"]."\"");
1728 } else {
1729 $this->addToMessage(_("L'envoi du mail de notification a echoue"));
1730 }
1731 }
1732
1733
1734 // verification si envoi vers ERP est active
1735 if ($this->f->getParameter('option_erp') === 'true') {
1736 // s'il s'agit de la consultation ERP Secu, ERP Accessibilite, ou
1737 // deenvoie un
1738 // message a ERP
1739 $dossier_erp = $this->getFromDB("SELECT erp FROM ".DB_PREFIXE.
1740 "dossier WHERE dossier = '" .$this->valF['dossier'] . "'");
1741 $dossier_nature = $this->getFromDB("SELECT dossier_autorisation_type_detaille.code FROM ".DB_PREFIXE.
1742 "dossier
1743 INNER JOIN ".DB_PREFIXE."dossier_autorisation
1744 ON dossier.dossier_autorisation=dossier_autorisation.dossier_autorisation
1745 INNER JOIN ".DB_PREFIXE."dossier_autorisation_type_detaille
1746 ON dossier_autorisation.dossier_autorisation_type_detaille
1747 = dossier_autorisation_type_detaille.dossier_autorisation_type_detaille
1748 WHERE dossier = '" . $this->valF['dossier'] . "'");
1749 if ($dossier_erp == 't'
1750 && substr($dossier_nature, 0, 2) == $this->f->getParameter('erp_dossier_nature_pc')) {
1751 // envoi du message "Demande d'instruction d'un dossier PC pour un ERP"
1752 if (($this->valF['service'] == $this->f->getParameter('erp_service_accessibilite')
1753 || $this->valF['service'] == $this->f->getParameter('erp_service_securite'))) {
1754 $msgenque = new MessageEnqueuer();
1755 $msgenque->setDossierInstructionIdentifier($this->valF['dossier']);
1756 $msgenque->setConsultationIdentifier($this->valF['consultation']);
1757 $return = $msgenque->enqueueMessage($msgenque::$ERP_DEMANDE_INSTRUCTION_PC);
1758 //Si une erreur s'est produite on arrête le traitement et on
1759 //retourne une erreur
1760 if ($return !== 0){
1761
1762 $this->addToMessage(_("Une erreur s'est produite lors de ".
1763 "l'envoi du message au referentiel ERP. Merci de ".
1764 "contacter votre administrateur"));
1765 //On ne valide pas le formulaire
1766 $this->addToMessage("<br/>"._("SAISIE NON ENREGISTREE")."<br/>");
1767 $this->correct = false;
1768 return false;
1769 }
1770 else {
1771 $this->addToMessage(_("Le message a ete transmis au ".
1772 "referentiel ERP."));
1773 }
1774 }
1775
1776 // envoi du message "Consultation ERP pour conformite" en cas de creation de la
1777 // consultation du service ERP Conformite
1778 if ($this->valF['service'] == $this->f->getParameter('erp_service_conformite')) {
1779 $msgenque = new MessageEnqueuer();
1780 $msgenque->setDossierInstructionIdentifier($this->valF['dossier']);
1781 $msgenque->setConsultationIdentifier($this->valF['consultation']);
1782 $return = $msgenque->enqueueMessage($msgenque::$ERP_CONSULTATION_CONFORMITE);
1783 //Si une erreur s'est produite on arrête le traitement et on
1784 //retourne une erreur
1785 if ($return !== 0){
1786
1787 $this->addToMessage(_("Une erreur s'est produite lors de ".
1788 "l'envoi du message au referentiel ERP. Merci de ".
1789 "contacter votre administrateur"));
1790 //On ne valide pas le formulaire
1791 $this->addToMessage("<br/>"._("SAISIE NON ENREGISTREE")."<br/>");
1792 $this->correct = false;
1793 return false;
1794 }
1795 else {
1796 $this->addToMessage(_("Le message a ete transmis au ".
1797 "referentiel ERP."));
1798 }
1799 }
1800 }
1801 } // fin de if($this->f->getParameter('option_erp') === 'true')
1802
1803 // Finalisation du document
1804 $this->finaliserAjouter($id);
1805 }
1806
1807 /**
1808 * Fait une requette sql pour extraire la valeur d'un champ, et retourne
1809 * cette valeur
1810 * @param string $sql La requete sql a executer
1811 * @return La valeur du champs cherche, sinon NULL. En cas d'erreur de la BD
1812 * l'execution s'arrete.
1813 */
1814 function getFromDB($sql) {
1815 //$sql = "SELECT libelle FROM ".DB_PREFIXE."dossier WHERE dossier = '" . $dossier . "'";
1816 $res = $this->db->limitquery($sql, 0, 1);
1817 $this->f->addToLog("getDossierERPSpecification(): db->limitquery(\"".
1818 str_replace(",",", ",$sql)."\", 0, 1);", VERBOSE_MODE);
1819 // Si une erreur survient on die
1820 if (database::isError($res, true)) {
1821 // Appel de la methode de recuperation des erreurs
1822 $this->erreur_db($res->getDebugInfo(), $res->getMessage(), 'instruction');
1823 }
1824 // retourne la nature du dossier
1825 while ($row =& $res->fetchRow()) {
1826 return $row[0];
1827 }
1828 // la nature n'etait pas trouve, ce qui ne devrait pas se passer
1829 return NULL;
1830
1831 }
1832
1833 // =============================================
1834 // Ajout du fielset
1835 // Add fieldset
1836 // =============================================
1837 function setLayout(&$form, $maj){
1838
1839 // Modification layout : écran de retour d'avis permettant
1840 // uniquement la saisie des trois champs : avis, motivation et fichier
1841 if ($this->f->isAccredited('consultation_consulter_autre_que_retour_avis')) {
1842
1843 //Champs sur lequel s'ouvre le fieldset
1844 $form->setBloc('dossier','D',"");
1845 $form->setFieldset('dossier','D',_('Consultation'));
1846
1847 //Champs sur lequel se ferme le fieldset
1848 $form->setFieldset('date_envoi','F','');
1849 $form->setBloc('date_envoi','F');
1850
1851 }
1852
1853 // MODE - autre que AJOUTER alors on affiche un fieldset retour
1854 // d'avis
1855 if ($maj != 0) {
1856
1857 //Champs sur lequel s'ouvre le fieldset
1858 $form->setBloc('date_reception','D',"");
1859 $form->setFieldset('date_reception','D',_('Retour d\'avis'));
1860
1861 //Champs sur lequel se ferme le fieldset
1862 $form->setFieldset('lu','F','');
1863 $form->setBloc('lu','F');
1864
1865 }
1866 }
1867
1868 /** Surcharge de la methode retour afin de retourner sur la page de saisie de
1869 * code barre si besoin
1870 **/
1871 function retour($premier = 0, $recherche = "", $tricol = "") {
1872 $params ="obj=".get_class($this);
1873 if($this->getParameter("retour")=="form") {
1874 $params .= "&amp;idx=".$this->getParameter("idx");
1875 $params .= "&amp;action=3";
1876 }
1877 $params .= "&amp;premier=".$this->getParameter("premier");
1878 $params .= "&amp;tricol=".$this->getParameter("tricol");
1879 $params .= "&amp;recherche=".$this->getParameter("recherche");
1880 $params .= "&amp;selectioncol=".$this->getParameter("selectioncol");
1881 $params .= "&amp;advs_id=".$this->getParameter("advs_id");
1882 $params .= "&amp;valide=".$this->getParameter("valide");
1883 echo "\n<a class=\"retour\" ";
1884 echo "href=\"";
1885 //
1886
1887 if($this->getParameter("retour")=="form" AND !($this->getParameter("validation")>0 AND $this->getParameter("maj")==2 AND $this->correct)) {
1888 echo "form.php?".$params;
1889 } elseif($this->getParameter("retour")=="suivi_retours_de_consultation") {
1890 echo "../scr/form.php?obj=consultation&idx=0&action=120";
1891 } else {
1892 echo "tab.php?".$params;
1893 }
1894 //
1895 echo "\"";
1896 echo ">";
1897 //
1898 echo _("Retour");
1899 //
1900 echo "</a>\n";
1901 }
1902
1903 /**
1904 * Surcharge du bouton retour pour popup
1905 */
1906 function retoursousformulaire($idxformulaire, $retourformulaire, $val,
1907 $objsf, $premiersf, $tricolsf, $validation,
1908 $idx, $maj, $retour) {
1909 if($retourformulaire === "demande_avis_encours") {
1910 echo "\n<a class=\"retour\" ";
1911 echo "href=\"";
1912 echo "#";
1913 echo "\" ";
1914 echo ">";
1915 //
1916 echo _("Retour");
1917 //
1918 echo "</a>\n";
1919 } else {
1920 parent::retoursousformulaire($idxformulaire, $retourformulaire, $val,
1921 $objsf, $premiersf, $tricolsf, $validation,
1922 $idx, $maj, $retour);
1923 }
1924 }
1925
1926 /**
1927 * Ajout des contraintes spécifiques pour l'ajout d'un fichier en retour de
1928 * consultation
1929 */
1930 function setSelect(&$form, $maj,&$db,$debug) {
1931 if(file_exists ("../sql/".OM_DB_PHPTYPE."/".$this->table.".form.inc.php"))
1932 include ("../sql/".OM_DB_PHPTYPE."/".$this->table.".form.inc.php");
1933 elseif(file_exists ("../sql/".OM_DB_PHPTYPE."/".$this->table.".form.inc"))
1934 include ("../sql/".OM_DB_PHPTYPE."/".$this->table.".form.inc");
1935
1936 // avis_consultation
1937 $this->init_select($form, $db, $maj, $debug, "avis_consultation",
1938 $sql_avis_consultation, $sql_avis_consultation_by_id, true);
1939
1940 // service
1941 // si contexte DI, ou surcharge (mes_encours, mes_clotures...)
1942 $is_in_context_of_foreign_key = $this->is_in_context_of_foreign_key("dossier", $this->getParameter('retourformulaire'));
1943 if ($is_in_context_of_foreign_key == true) {
1944 // on recupÚre les services des multicollectivités et de celle du DI
1945 require_once "../obj/dossier_instruction.class.php";
1946 $di = new dossier_instruction($this->getParameter('idxformulaire'), $db, $debug);
1947 $sql_service_by_di = str_replace('<collectivite_di>', $di->getVal("om_collectivite"), $sql_service_by_di);
1948
1949 $this->init_select($form, $db, $maj, $debug, "service",
1950 $sql_service_by_di, $sql_service_by_id, true);
1951 } else {
1952 $this->init_select($form, $db, $maj, $debug, "service", $sql_service, $sql_service_by_id, true);
1953 }
1954
1955 //Seulement dans le cas d'un retour d'avis
1956 if($this->retourformulaire == "demande_avis_encours" or $this->getParameter("maj") == 100 or $this->getParameter("maj") == 90) {
1957 // avis_consultation
1958 $this->init_select($form, $db, 1, $debug, "avis_consultation",
1959 $sql_avis_consultation, $sql_avis_consultation_by_id, true);
1960
1961 //Tableau des contraintes spécifiques
1962 $params = array(
1963 "constraint" => array(
1964 "size_max" => 2,
1965 "extension" => ".pdf"
1966 ),
1967 );
1968
1969 $form->setSelect("fichier", $params);
1970 }
1971 }
1972
1973 /**
1974 * Finalisation du document lors de l'ajout d'une consultation.
1975 *
1976 * @param integer $id indentifiant de l'objet
1977 */
1978 function finaliserAjouter($id){
1979
1980 $uid = $this->file_finalizing($id);
1981
1982 //Mise à jour des données
1983 if ( $uid != '' && $uid != 'OP_FAILURE' ){
1984 // Logger
1985 $this->addToLog("finaliserAjouter() - begin", EXTRA_VERBOSE_MODE);
1986
1987 $valF = array(
1988 "om_final_consultation"=> true,
1989 "om_fichier_consultation"=>$uid
1990 );
1991
1992 // Execution de la requête de modification des donnees de l'attribut
1993 // valF de l'objet dans l'attribut table de l'objet
1994 $res = $this->db->autoExecute(DB_PREFIXE.$this->table, $valF,
1995 DB_AUTOQUERY_UPDATE, $this->getCle($id));
1996 $this->addToLog(
1997 "finaliserAjouter() : db->autoExecute(\"".DB_PREFIXE.$this->table."\", ".print_r($valF, true).", DB_AUTOQUERY_UPDATE, \"".$this->getCle($id)."\")",
1998 VERBOSE_MODE
1999 );
2000 // Si une erreur survient
2001 if (database::isError($res, true)) {
2002 $this->correct = false;
2003 // Appel de la methode de recuperation des erreurs
2004 $this->erreur_db($res->getDebugInfo(), $res->getMessage(), '');
2005 return false;
2006 } else {
2007 // Log
2008 $this->addToLog(_("Requete executee"), VERBOSE_MODE);
2009 // Log
2010 $message = _("Enregistrement")."&nbsp;".$id."&nbsp;";
2011 $message .= _("de la table")."&nbsp;\"".$this->table."\"&nbsp;";
2012 $message .= "[&nbsp;".$this->db->affectedRows()."&nbsp;";
2013 $message .= _("enregistrement(s) mis a jour")."&nbsp;]";
2014 $this->addToLog($message, VERBOSE_MODE);
2015 }
2016 }
2017 }
2018
2019 /**
2020 * Finalisation du fichier.
2021 *
2022 * @param integer $id indentifiant de l'objet
2023 *
2024 * @return string uid du fichier finalisé
2025 */
2026 function file_finalizing($id){
2027 $pdf = $this->generate_pdf_consultation();
2028
2029 if(isset($this->valF["om_final_consultation"])) {
2030 $finalized = $this->valF["om_final_consultation"];
2031 } else {
2032 $finalized = $this->getVal("om_final_consultation");
2033 }
2034
2035 // Métadonnées du document
2036 $metadata = array(
2037 'filename' => $pdf["filename"],
2038 'mimetype' => 'application/pdf',
2039 'size' => strlen($pdf["pdf_output"])
2040 );
2041
2042 // Récupération des métadonnées calculées après validation
2043 $spe_metadata = $this->getMetadata("om_fichier_consultation");
2044
2045 $metadata = array_merge($metadata, $spe_metadata);
2046
2047 // Si le document a déjà été finalisé
2048 if ( $finalized != '' ){
2049
2050 // Met à jour le document mais pas son uid
2051 $uid = $this->f->storage->update(
2052 $this->getVal("om_fichier_consultation"), $pdf["pdf_output"], $metadata);
2053 }
2054 // Sinon, ajoute le document et récupère son uid
2055 else {
2056
2057 // Stockage du PDF
2058 $uid = $this->f->storage->create($pdf["pdf_output"], $metadata);
2059 }
2060
2061 return $uid;
2062
2063 }
2064
2065
2066 /**
2067 * TREATMENT - finalize.
2068 *
2069 * Permet de finaliser un enregistrement
2070 *
2071 * @param array $val valeurs soumises par le formulaire
2072 * @param null $dnu1 @deprecated Ancienne ressource de base de données.
2073 * @param null $dnu2 @deprecated Ancien marqueur de débogage.
2074 *
2075 * @return boolean
2076 */
2077 function finalize($val = array(), &$dnu1 = null, $dnu2 = null) {
2078
2079 // Cette méthode permet d'exécuter une routine en début des méthodes
2080 // dites de TREATMENT.
2081 $this->begin_treatment(__METHOD__);
2082
2083 // Traitement de la finalisation
2084 $ret = $this->manage_finalizing("finalize", $val);
2085
2086 // Si le traitement retourne une erreur
2087 if ($ret !== true) {
2088
2089 // Termine le traitement
2090 $this->end_treatment(__METHOD__, false);
2091 }
2092
2093 // Termine le traitement
2094 return $this->end_treatment(__METHOD__, true);
2095 }
2096
2097 /**
2098 * TREATMENT - unfinalize.
2099 *
2100 * Permet de definaliser un enregistrement
2101 *
2102 * @param array $val valeurs soumises par le formulaire
2103 * @param null $dnu1 @deprecated Ancienne ressource de base de données.
2104 * @param null $dnu2 @deprecated Ancien marqueur de débogage.
2105 *
2106 * @return boolean
2107 */
2108 function unfinalize($val = array(), &$dnu1 = null, $dnu2 = null) {
2109
2110 // Cette méthode permet d'exécuter une routine en début des méthodes
2111 // dites de TREATMENT.
2112 $this->begin_treatment(__METHOD__);
2113
2114 // Traitement de la finalisation
2115 $ret = $this->manage_finalizing("unfinalize", $val);
2116
2117 // Si le traitement retourne une erreur
2118 if ($ret !== true) {
2119
2120 // Termine le traitement
2121 $this->end_treatment(__METHOD__, false);
2122 }
2123
2124 // Termine le traitement
2125 return $this->end_treatment(__METHOD__, true);
2126 }
2127
2128
2129 /**
2130 * Finalisation des documents.
2131 *
2132 * @param string $mode finalize/unfinalize
2133 * @param array $val valeurs soumises par le formulaire
2134 */
2135 function manage_finalizing($mode = null, $val = array()) {
2136
2137 // Recuperation de la valeur de la cle primaire de l'objet
2138 $id = $this->getVal($this->clePrimaire);
2139
2140 // Si on finalise le document
2141 if ($mode == "finalize") {
2142 // Finalisation du fichier
2143 $uid = $this->file_finalizing($id);
2144 }
2145 //
2146 else {
2147
2148 //Récupération de l'uid du document finalisé
2149 $uid = $this->getVal("om_fichier_consultation");
2150
2151 //On dé-finalise avant de finaliser
2152 if ( $uid == '' || $uid == 'OP_FAILURE' ){
2153 $this->correct = false;
2154 $this->msg="";
2155 $this->addToMessage(_("Finalisation non enregistree"));
2156 $this->addToLog(
2157 _("Finalisation non enregistree")." - ".
2158 _("id consultation")." = ".$id." - ".
2159 _("uid fichier")." = ".$uid
2160 );
2161 return false;
2162 }
2163 }
2164
2165 //Mise à jour des données
2166 if ($uid != '' && $uid != 'OP_FAILURE') {
2167
2168 // Logger
2169 $this->addToLog("finaliser() - begin", EXTRA_VERBOSE_MODE);
2170
2171 foreach ($this->champs as $key => $value) {
2172 //
2173 $val[$value] = $this->val[$key];
2174 }
2175
2176 $this->setvalF($val);
2177
2178 // Verification de la validite des donnees
2179 $this->verifier($this->val, $this->db, DEBUG);
2180 // Si les verifications precedentes sont correctes, on procede a
2181 // la modification, sinon on ne fait rien et on retourne une erreur
2182 if ($this->correct) {
2183
2184 // Execution du trigger 'before' specifique au MODE 'update'
2185 $this->triggermodifier( $id, $this->db, $this->val, DEBUG);
2186
2187 //
2188 $valF = '';
2189 if($mode=="finalize") {
2190 $valF["om_final_consultation"] = true;
2191 } else {
2192 $valF["om_final_consultation"] = false;
2193 }
2194 $valF["om_fichier_consultation"] = $uid;
2195
2196 // Execution de la requête de modification des donnees de l'attribut
2197 // valF de l'objet dans l'attribut table de l'objet
2198 $res = $this->db->autoExecute(DB_PREFIXE.$this->table, $valF,
2199 DB_AUTOQUERY_UPDATE, $this->getCle($id));
2200 $this->addToLog(
2201 "finaliser() : db->autoExecute(\"".DB_PREFIXE.$this->table."\", ".print_r($valF, true).", DB_AUTOQUERY_UPDATE, \"".$this->getCle($id)."\")",
2202 VERBOSE_MODE
2203 );
2204
2205 // Si une erreur survient
2206 if (database::isError($res, true)) {
2207
2208 // Appel de la methode de recuperation des erreurs
2209 $this->erreur_db($res->getDebugInfo(), $res->getMessage(), '');
2210 $this->correct = false;
2211 return false;
2212 } else {
2213
2214 // Log
2215 $this->addToLog(_("Requete executee"), VERBOSE_MODE);
2216 // Log
2217 $message = _("Enregistrement")."&nbsp;".$id."&nbsp;";
2218 $message .= _("de la table")."&nbsp;\"".$this->table."\"&nbsp;";
2219 $message .= "[&nbsp;".$this->db->affectedRows()."&nbsp;";
2220 $message .= _("enregistrement(s) mis a jour")."&nbsp;]";
2221 $this->addToLog($message, VERBOSE_MODE);
2222 // Execution du trigger 'after' specifique au MODE 'update'
2223 $this->triggermodifierapres($id, $this->db, $this->val, DEBUG);
2224
2225 if($mode == "finalize") {
2226 $etat = _('finalisation');
2227 } else {
2228 $etat = _('definalisation');
2229 }
2230 $this->msg="";
2231 $this->addToMessage(sprintf(_("La %s du document s'est effectuee avec succes."), $etat));
2232 return true;
2233 }
2234 //
2235 } else {
2236 $this->correct = false;
2237 $this->msg="";
2238 // Message d'echec (saut d'une ligne supplementaire avant le
2239 // message pour qu'il soit mis en evidence)
2240 $this->addToMessage(_("Finalisation non enregistree"));
2241 $this->addToLog(
2242 _("Finalisation non enregistree")." - ".
2243 _("id consultation")." = ".$id." - ".
2244 _("uid fichier")." = ".$uid
2245 );
2246 return false;
2247 }
2248 }
2249 // Si le document n'a pas été stocké
2250 else{
2251 $this->correct = false;
2252 $this->msg="";
2253 $this->addToMessage(_("Finalisation non enregistree"));
2254 $this->addToLog(
2255 _("Finalisation non enregistree")." - ".
2256 _("id consultation")." = ".$id." - ".
2257 _("uid fichier")." = ".$uid
2258 );
2259 return false;
2260 }
2261 }
2262
2263 /**
2264 * Permet de récupérer l'édition de la consultation.
2265 *
2266 * @param string $output type de sortie
2267 *
2268 * @return string si le type de sortie est string, le contenu du pdf est retourné.
2269 */
2270 function generate_pdf_consultation() {
2271 if(isset($this->valF[$this->clePrimaire])) {
2272 $id = $this->valF[$this->clePrimaire];
2273 } else {
2274 $id = $this->getVal($this->clePrimaire);
2275 }
2276
2277 // Requête qui récupère le type de consultation
2278 $sql = " SELECT id ";
2279 $sql .= " FROM ".DB_PREFIXE."service ";
2280 $sql .= " LEFT JOIN ".DB_PREFIXE."om_etat ";
2281 $sql .= " ON service.edition = om_etat.om_etat ";
2282 $sql .= " WHERE service=(";
2283 $sql .= " SELECT service ";
2284 $sql .= " FROM ".DB_PREFIXE."consultation ";
2285 $sql .= " WHERE consultation=".$id."";
2286 $sql .= ") ";
2287 $obj = $this->f->db->getone($sql);
2288 $this->f->addTolog(
2289 __FILE__." - ".__METHOD__." : db->getone(\"".$sql."\");",
2290 VERBOSE_MODE
2291 );
2292 if($this->f->isDatabaseError($obj, true)) {
2293 $this->addToMessage(_("Aucun document genere."));
2294 $this->addToMessage(_("Finalisation non enregistree"));
2295 return false;
2296 }
2297 $collectivite = $this->f->getCollectivite($this->get_dossier_collectivite());
2298
2299 $pdf_output = $this->compute_pdf_output("etat", $obj, $collectivite, $id);
2300
2301 return $pdf_output;
2302 }
2303
2304 function get_dossier_collectivite() {
2305 if(isset($this->valF["dossier"])) {
2306 $dossier = $this->valF["dossier"];
2307 } else {
2308 $dossier = $this->getVal("dossier");
2309 }
2310
2311 $sql = "SELECT om_collectivite FROM ".DB_PREFIXE."dossier WHERE dossier.dossier='".$dossier."'";
2312 $collectivite = $this->f->db->getone($sql);
2313 $this->f->addTolog(
2314 __FILE__." - ".__METHOD__." : db->getone(\"".$sql."\");",
2315 VERBOSE_MODE
2316 );
2317 if($this->f->isDatabaseError($collectivite, true)) {
2318 $this->addToMessage(_("Aucun document genere."));
2319 $this->addToMessage(_("Finalisation non enregistree"));
2320 return false;
2321 }
2322 return $collectivite;
2323 }
2324
2325 function view_consulter_pdf(){
2326 if($this->getVal("om_final_consultation") == 't') {
2327 $lien = '../spg/file.php?obj=consultation&'.
2328 'champ=om_fichier_consultation&id='.$this->getVal($this->clePrimaire);
2329 header("Location: ".$lien);
2330 } else {
2331
2332 $output = $this->generate_pdf_consultation();
2333 $this->expose_pdf_output($output["pdf_output"], $output["filename"]);
2334 }
2335 exit();
2336 }
2337 /**
2338 * Création du nom de fichier
2339 * @return string numéro de dossier d'instruction
2340 */
2341 protected function getFichierFilename() {
2342 return "consultation_avis_".$this->valF[$this->clePrimaire].".pdf";
2343 }
2344
2345 /**
2346 * Récupération du numéro de dossier d'instruction à ajouter aux métadonnées
2347 * @return string numéro de dossier d'instruction
2348 */
2349 protected function getDossier() {
2350 if(empty($this->specificMetadata)) {
2351 $this->getSpecificMetadata();
2352 }
2353 return $this->specificMetadata->dossier;
2354 }
2355 /**
2356 * Récupération la version du dossier d'instruction à ajouter aux métadonnées
2357 * @return int Version
2358 */
2359 protected function getDossierVersion() {
2360 if(empty($this->specificMetadata)) {
2361 $this->getSpecificMetadata();
2362 }
2363 return $this->specificMetadata->version;
2364 }
2365 /**
2366 * Récupération du numéro de dossier d'autorisation à ajouter aux métadonnées
2367 * @return string numéro de dossier d'autorisation
2368 */
2369 protected function getNumDemandeAutor() {
2370 if(empty($this->specificMetadata)) {
2371 $this->getSpecificMetadata();
2372 }
2373 return $this->specificMetadata->dossier_autorisation;
2374 }
2375 /**
2376 * Récupération de la date de demande initiale du dossier à ajouter aux métadonnées
2377 * @return date demande initiale
2378 */
2379 protected function getAnneemoisDemandeAutor() {
2380 if(empty($this->specificMetadata)) {
2381 $this->getSpecificMetadata();
2382 }
2383 return $this->specificMetadata->date_demande_initiale;
2384 }
2385 /**
2386 * Récupération du type de dossier d'instruction à ajouter aux métadonnées
2387 * @return string type de dossier d'instruction
2388 */
2389 protected function getTypeInstruction() {
2390 if(empty($this->specificMetadata)) {
2391 $this->getSpecificMetadata();
2392 }
2393 return $this->specificMetadata->dossier_instruction_type;
2394 }
2395 /**
2396 * Récupération du statut du dossier d'autorisation à ajouter aux métadonnées
2397 * @return string avis
2398 */
2399 protected function getStatutAutorisation() {
2400 if(empty($this->specificMetadata)) {
2401 $this->getSpecificMetadata();
2402 }
2403 return $this->specificMetadata->statut;
2404 }
2405 /**
2406 * Récupération du type de dossier d'autorisation à ajouter aux métadonnées
2407 * @return string type d'autorisation
2408 */
2409 protected function getTypeAutorisation() {
2410 if(empty($this->specificMetadata)) {
2411 $this->getSpecificMetadata();
2412 }
2413 return $this->specificMetadata->dossier_autorisation_type;
2414 }
2415 /**
2416 * Récupération de la date d'ajout de document à ajouter aux métadonnées
2417 * @return date de l'évènement
2418 */
2419 protected function getDateEvenementDocument() {
2420 return date("Y-m-d");
2421 }
2422 /**
2423 * Récupération du groupe d'instruction à ajouter aux métadonnées
2424 * @return string Groupe d'instruction
2425 */
2426 protected function getGroupeInstruction() {
2427 if(empty($this->specificMetadata)) {
2428 $this->getSpecificMetadata();
2429 }
2430 return $this->specificMetadata->groupe_instruction;
2431 }
2432 /**
2433 * Récupération du type de document à ajouter aux métadonnées
2434 * @return string Type de document
2435 */
2436 protected function getTitle() {
2437 if ($this->retourformulaire == "demande_avis_encours") {
2438 return 'Retour de consultation';
2439 } else {
2440 return 'Demande de consultation';
2441 }
2442 }
2443
2444 /**
2445 * Cette méthode permet de stocker en attribut toutes les métadonnées
2446 * nécessaire à l'ajout d'un document.
2447 */
2448 public function getSpecificMetadata() {
2449 if (isset($this->valF["dossier"]) AND $this->valF["dossier"] != "") {
2450 $dossier = $this->valF["dossier"];
2451 } else {
2452 $dossier = $this->getVal("dossier");
2453 }
2454 //Requête pour récupérer les informations essentiels sur le dossier d'instruction
2455 $sql = "SELECT dossier.dossier as dossier,
2456 dossier_autorisation.dossier_autorisation as dossier_autorisation,
2457 to_char(dossier.date_demande, 'YYYY/MM') as date_demande_initiale,
2458 dossier_instruction_type.code as dossier_instruction_type,
2459 etat_dossier_autorisation.libelle as statut,
2460 dossier_autorisation_type.code as dossier_autorisation_type,
2461 groupe.code as groupe_instruction
2462 FROM ".DB_PREFIXE."dossier
2463 LEFT JOIN ".DB_PREFIXE."dossier_instruction_type
2464 ON dossier.dossier_instruction_type = dossier_instruction_type.dossier_instruction_type
2465 LEFT JOIN ".DB_PREFIXE."dossier_autorisation
2466 ON dossier.dossier_autorisation = dossier_autorisation.dossier_autorisation
2467 LEFT JOIN ".DB_PREFIXE."etat_dossier_autorisation
2468 ON dossier_autorisation.etat_dossier_autorisation = etat_dossier_autorisation.etat_dossier_autorisation
2469 LEFT JOIN ".DB_PREFIXE."dossier_autorisation_type_detaille
2470 ON dossier_autorisation.dossier_autorisation_type_detaille = dossier_autorisation_type_detaille.dossier_autorisation_type_detaille
2471 LEFT JOIN ".DB_PREFIXE."dossier_autorisation_type
2472 ON dossier_autorisation_type_detaille.dossier_autorisation_type = dossier_autorisation_type.dossier_autorisation_type
2473 LEFT JOIN ".DB_PREFIXE."groupe
2474 ON dossier_autorisation_type.groupe = groupe.groupe
2475 WHERE dossier.dossier = '".$dossier."'";
2476 $res = $this->db->query($sql);
2477 $this->f->addToLog("obj/document_numerise.class.php : db->query(".$sql.")", VERBOSE_MODE);
2478 if ( database::isError($res)){
2479 die();
2480 }
2481
2482 //Le résultat est récupéré dans un objet
2483 $row =& $res->fetchRow(DB_FETCHMODE_OBJECT);
2484
2485 //Si il y a un résultat
2486 if ($row !== null) {
2487
2488 // Instrance de la classe dossier
2489 $inst_dossier = $this->get_inst_dossier($dossier);
2490
2491 // Insère l'attribut version à l'objet
2492 $row->version = $inst_dossier->get_dossier_instruction_version();
2493
2494 //Alors on créé l'objet dossier_instruction
2495 $this->specificMetadata = $row;
2496
2497 }
2498 }
2499
2500 /**
2501 *
2502 * @return boolean
2503 */
2504 function is_instructeur(){
2505
2506 //Si l'utilisateur est un instructeur
2507 if ($this->f->isUserInstructeur()){
2508 return true;
2509 }
2510 return false;
2511 }
2512
2513 function is_editable(){
2514
2515 if ($this->f->can_bypass("consultation", "modifier")){
2516 return true;
2517 }
2518
2519 if ($this->is_dossier_instruction_not_closed()&&$this->is_instructeur_from_division()){
2520 return true;
2521 }
2522 return false;
2523 }
2524
2525 function is_deletable(){
2526
2527 if ($this->f->can_bypass("consultation", "supprimer")){
2528 return true;
2529 }
2530
2531 if ($this->is_dossier_instruction_not_closed()&&$this->is_instructeur_from_division()){
2532 return true;
2533 }
2534 return false;
2535 }
2536
2537 function is_multiaddable(){
2538
2539 if ($this->f->can_bypass("consultation", "ajouter")){
2540 return true;
2541 }
2542
2543 if ($this->is_instructeur_from_division()){
2544 return true;
2545 }
2546 return false;
2547 }
2548
2549 function is_markable(){
2550
2551 if($this->f->can_bypass("consultation", "modifier_lu")){
2552 return true;
2553 }
2554
2555 if ($this->is_instructeur_from_division()){
2556 return true;
2557 }
2558 return false;
2559 }
2560
2561 function is_finalizable(){
2562
2563 if($this->f->can_bypass("consultation", "finaliser")){
2564 return true;
2565 }
2566
2567 if ($this->is_instructeur_from_division() && $this->is_dossier_instruction_not_closed()){
2568 return true;
2569 }
2570
2571 return false;
2572 }
2573
2574 function is_unfinalizable(){
2575
2576 if($this->f->can_bypass("consultation", "definaliser")){
2577 return true;
2578 }
2579
2580 if ($this->is_instructeur_from_division() && $this->is_dossier_instruction_not_closed()){
2581 return true;
2582 }
2583
2584 return false;
2585 }
2586
2587 /**
2588 * Récupère l'instance du dossier d'instruction
2589 *
2590 * @param mixed Identifiant du dossier d'instruction
2591 *
2592 * @return object
2593 */
2594 function get_inst_dossier($dossier = null) {
2595 //
2596 return $this->get_inst_common("dossier", $dossier);
2597 }
2598
2599
2600 }// fin classe
2601 ?>

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26