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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2112 - (hide annotations)
Wed Jul 24 17:08:32 2013 UTC (11 years, 6 months ago) by softime
File size: 39130 byte(s)
Ajout du champ dossier_libelle pour la table dossier
Ajout du champ dossier_autorisation_libelle pour la table dossier_autorisation
Génération OM
Modification des formulaires, messages, tableaux et fil d'Ariane pour affiché le numéro de dossier formaté
Traduction des nouveaux champs
Correction des tests utilisant les numéro de dossier
MàJ HISTORY.txt

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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26