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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 3140 - (hide annotations)
Wed Sep 10 15:09:41 2014 UTC (10 years, 4 months ago) by vpihour
File size: 123536 byte(s)
Si on renseignait une date de retour de l'AR sur un événement d'incomplétude alors que la date limite du notification était dépassée, l'état du dossier passait tout de même en "incomplet notifié". C'est corrigé.

1 fraynaud 3 <?php
2 fmichon 1540 /**
3     *
4     *
5     * specific :
6     * - cle secondaire
7     * destruction autorisée que pour le dernier evenement
8     * [delete the last event ]
9     * - variable globale [global variables]
10     * var $archive_date_depot;
11     * var $retourformulaire;
12     * var $idxformulaire;
13     * - modification des données dans dossier trigger avant
14     * [modify dossier data with trigger function]
15 softime 2771 * - function mois_date : pour ajouter des mois a une date
16 fmichon 1540 * [add months (delay) and calculation final date]
17     * - voir script_lang.js : bible ...
18     *
19     * @package openfoncier
20     * @version SVN : $Id$
21     */
22 fraynaud 3
23 fmichon 1540 //
24     require_once "../gen/obj/instruction.class.php";
25    
26     //
27     require_once "../services/outgoing/messageenqueuer.php";
28    
29     //
30 fraynaud 3 class instruction extends instruction_gen {
31    
32 fraynaud 20 var $archive_date_depot; // specific
33     var $retourformulaire; // specific
34     var $idxformulaire; // specific
35 nhaye 1724 var $valEvenement;
36 nhaye 2905 var $restriction_valid = null;
37 nhaye 1945 // Tableau contenant une partie des métadonnées arrêtés
38     var $metadonneesArrete;
39 fraynaud 3
40 nhaye 1928 var $metadata = array(
41 nhaye 1938 "om_fichier_instruction" => array(
42 nhaye 1928 "dossier" => "getDossier",
43 softime 2016 "dossier_version" => "getDossierVersion",
44 softime 2025 "numDemandeAutor" => "getNumDemandeAutor",
45     "anneemoisDemandeAutor" => "getAnneemoisDemandeAutor",
46     "typeInstruction" => "getTypeInstruction",
47     "statutAutorisation" => "getStatutAutorisation",
48     "typeAutorisation" => "getTypeAutorisation",
49     "dateEvenementDocument" => "getDateEvenementDocument",
50 softime 2016 "groupeInstruction" => 'getGroupeInstruction',
51 softime 2025 "title" => 'getTitle',
52 nhaye 1928 ),
53 vpihour 3025 "arrete" => array(
54     "numArrete" => "getNumArrete",
55     "ReglementaireArrete" => "getReglementaireArrete",
56     "NotificationArrete" => "getNotificationArrete",
57     "dateNotificationArrete" => "getDateNotificationArrete",
58     "controleLegalite" => "getControleLegalite",
59     "dateSignature" => "getDateSignature",
60     "nomSignataire" => "getNomSignataire",
61     "qualiteSignataire" => "getQualiteSignataire",
62     "ap_numRue" => "getAp_numRue",
63     "ap_nomDeLaVoie" => "getAp_nomDeLaVoie",
64     "ap_codePostal" => "getAp_codePostal",
65     "ap_ville" => "getAp_ville",
66     "activite" => "getActivite",
67     "dateControleLegalite" => "getDateControleLegalite",
68     ),
69 nhaye 1928 );
70    
71 nhaye 1945
72 nhaye 2561 function __construct($id, &$db, $debug) {
73 fmichon 1540 $this->constructeur($id, $db, $debug);
74     }
75 fraynaud 20
76 fmichon 944 // {{{ Gestion de la confidentialité des données spécifiques
77    
78     /**
79     * Surcharge pour gérer les actions disponibles dans le portlet
80     */
81     function checkAccessibility() {
82     //
83     parent::checkAccessibility();
84 fmichon 1540 // Si l'utilisateur est un intructeur qui ne correspond pas à la
85 fmichon 944 // division du dossier
86     if ($this->f->isUserInstructeur()
87     && isset($this->f->om_utilisateur["division"])
88     && $this->f->om_utilisateur["division"] != $this->getDivisionFromDossier()) {
89     //
90 vpihour 2104 //On cache les liens d'action
91     $this->parameters["actions"]["modifier"] = NULL;
92     $this->parameters["actions"]["supprimer"] = NULL;
93     $this->actions_sup["finalisation"] = NULL;
94 fmichon 944 }
95     // Si une action 'lu' est présente et que le champ lu est à true
96     // on supprime l'action
97     if (isset($this->actions_sup["lu"])
98     && isset($this->val[array_search("lu", $this->champs)])
99     && $this->val[array_search("lu", $this->champs)]== "t") {
100     unset($this->actions_sup["lu"]);
101     }
102 nhaye 2815
103     //Si pas de lettretype associée
104     if($this->getVal("lettretype") == "") {
105     // Suppression des actions sur fichier dans le portlet actions
106     $this->actions_sup["pdfetat"] = NULL;
107     $this->actions_sup["finalisation"] = NULL;
108     $this->actions_sup["definalisation"] = NULL;
109     }
110 vpihour 1899
111     //Si le document est déjà finalisé, on affiche uniquement le lien de
112     //dé-finalisation
113 vpihour 1931 $om_final_instruction = $this->getVal("om_final_instruction");
114 vpihour 1899 if ( isset($this->actions_sup["finalisation"]) &&
115 vpihour 1931 $om_final_instruction== "t" ){
116 vpihour 1921
117 vpihour 1986 //On cache les liens d'action
118     $this->parameters["actions"]["modifier"] = NULL;
119     $this->parameters["actions"]["supprimer"] = NULL;
120 vpihour 1921 //On cache le lien de finalisation et on affiche le bon lien pour l'édition
121 vpihour 1986 $this->actions_sup["finalisation"] = NULL;
122 vpihour 1921 $this->actions_sup["pdfetat"]["lien"] = "../spg/file.php?id=";
123     $this->actions_sup["pdfetat"]["id"] =
124 vpihour 1927 "&amp;obj=instruction&amp;champ=om_fichier_instruction";
125 vpihour 1899 }
126     //Si le document n'est pas finalisé, on affiche uniquement le lien de
127     //finalisation
128     if ( isset($this->actions_sup["definalisation"]) &&
129 vpihour 1931 $om_final_instruction!= "t" ){
130 vpihour 1921
131     //On cache le lien de finalisation et on affiche le bon lien pour l'édition
132 vpihour 1986 $this->actions_sup["definalisation"] = NULL;
133 vpihour 1921 $this->actions_sup["pdfetat"]["lien"] = "../app/pdf_instruction.php?idx=";
134     $this->actions_sup["pdfetat"]["id"] = "";
135 vpihour 1899 }
136 vpihour 1978
137     $idxformulaire = $this->getParameter("idxformulaire");
138     $retourformulaire = $this->getParameter("retourformulaire");
139     //Si le dossier d'instruction auquel est rattachée l'instruction est cloturé,
140     //on affiche pas les liens du portlet
141     if ( $idxformulaire != '' &&
142     (
143     $retourformulaire == 'dossier' ||
144     $retourformulaire == 'dossier_instruction' ||
145     $retourformulaire == 'dossier_instruction_mes_encours' ||
146     $retourformulaire == 'dossier_instruction_tous_encours' ||
147     $retourformulaire == 'dossier_instruction_mes_clotures' ||
148     $retourformulaire == 'dossier_instruction_tous_clotures'
149     )){
150    
151     //On récuppère le statut du dossier d'instruction
152 softime 2025 $statut = $this->getStatutAutorisationDossier($idxformulaire);
153 softime 2613 // Si l'utilisateur est un instructeur, que le statut est clôturé
154     // et que l'événement n'est pas identifié comme non verrouillable
155     if ( $this->f->isUserInstructeur() && $statut == "cloture"
156     && $this->checkEvenementNonVerrouillable($this->getVal("instruction")) === false){
157 vpihour 1978
158 softime 2613 //On cache les liens du portlet
159 vpihour 1978 $this->parameters["actions"]["modifier"] = NULL;
160     $this->actions_sup["finalisation"] = NULL;
161     $this->actions_sup["definalisation"] = NULL;
162     }
163     }
164 fmichon 944 }
165    
166     /**
167     * Cette methode est à surcharger elle permet de tester dans chaque classe
168     * des droits des droits spécifiques en fonction des données
169     */
170     function canAccess() {
171     // Si l'utilisateur est un intructeur qui ne correspond pas à la
172     // division du dossier
173     if ($this->f->isUserInstructeur()
174     && $this->f->om_utilisateur["division"] != $this->getDivisionFromDossier()
175     && $this->getParameter("maj") != 3) {
176     //
177 fmichon 1908 $this->addToLog("canAccess(): utilisateur instructeur sur un dossier d'une autre division", EXTRA_VERBOSE_MODE);
178 fmichon 944 return false;
179     }
180 vpihour 1978
181     $retourformulaire = $this->getParameter("retourformulaire");
182 softime 2613 // Si l'utilisateur est un instructeur, que le dossier est cloturé,
183     // que l'utilisateur est dans un sous formulaire précis, que le
184     // formulaire n'est pas en mode consulter ou ajouter et que l'événement
185     // n'est pas identifié comme non verrouillable
186 vpihour 1978 if ( $this->f->isUserInstructeur() &&
187 softime 2613 $this->getStatutAutorisationDossier($this->getParameter("idxformulaire")) == "cloture"
188     && (
189 vpihour 1978 $retourformulaire == 'dossier' ||
190     $retourformulaire == 'dossier_instruction' ||
191     $retourformulaire == 'dossier_instruction_mes_encours' ||
192     $retourformulaire == 'dossier_instruction_tous_encours' ||
193     $retourformulaire == 'dossier_instruction_mes_clotures' ||
194     $retourformulaire == 'dossier_instruction_tous_clotures'
195     )
196 softime 2613 && $this->getParameter("maj") != 3
197     && $this->getParameter("maj") != 0
198     && $this->checkEvenementNonVerrouillable($this->getVal("instruction")) === false) {
199    
200 vpihour 1978 return false;
201     }
202 fmichon 944 //
203     return true;
204     }
205    
206     /**
207 fmichon 1908 * Cette variable permet de stocker le résultat de la méthode
208     * getDivisionFromDossier() afin de ne pas effectuer le recalcul à chacun de
209     * ces appels.
210     * @var string Code de la division du dossier en cours
211 fmichon 944 */
212 fmichon 1908 var $_division_from_dossier = NULL;
213    
214     /**
215     * Cette méthode permet de récupérer le code de division correspondant
216     * au dossier sur lequel on se trouve.
217     *
218     * @return string Code de la division du dossier en cours
219     */
220 fmichon 944 function getDivisionFromDossier() {
221 fmichon 1908
222     // Cette méthode peut être appelée plusieurs fois lors d'une requête.
223     // Pour éviter de refaire le traitement de recherche de la division
224     // alors on vérifie si nous ne l'avons pas déjà calculé.
225     if ($this->_division_from_dossier != NULL) {
226     // Logger
227     $this->addToLog("getDivisionFromDossier(): retour de la valeur déjà calculée - '".$this->_division_from_dossier."'", EXTRA_VERBOSE_MODE);
228     // On retourne la valeur déjà calculée
229     return $this->_division_from_dossier;
230 fmichon 944 }
231 fmichon 1908
232     // Par défaut, on définit la valeur du dossier à NULL
233     $dossier = NULL;
234     // Test sur le mode et le contexte du formulaire
235     if ($this->getParameter("maj") == 0
236     && ($this->getParameter("retourformulaire") == "dossier"
237     || $this->getParameter("retourformulaire") == "dossier_instruction"
238     || $this->getParameter("retourformulaire") == "dossier_instruction_mes_encours"
239     || $this->getParameter("retourformulaire") == "dossier_instruction_tous_encours"
240     || $this->getParameter("retourformulaire") == "dossier_instruction_mes_clotures"
241     || $this->getParameter("retourformulaire") == "dossier_instruction_tous_clotures")) {
242     // Si on se trouve en mode AJOUT (seul mode où l'enregistrement
243     // n'existe pas en base de données) ET que nous nous trouvons
244     // dans le contexte d'un dossier d'instruction alors on récupère
245     // le numéro de dossier depuis le paramètre 'idxformulaire'
246     $dossier = $this->getParameter("idxformulaire");
247     } else {
248     // Sinon on récupère le numéro de dossier dans le champs dossier de
249     // l'enregistrement (en base de données)
250     $dossier = $this->getVal("dossier");
251     }
252    
253     // On appelle la méthode de la classe utils qui renvoi le code de la
254     // division d'un dossier, on la stocke pour ne pas refaire le calcul au
255     // prochain appel de cette méthode
256     $this->_division_from_dossier = $this->f->getDivisionFromDossier($dossier);
257     // Logger
258     $this->addToLog("getDivisionFromDossier(): retour de la valeur nouvellement calculée - '".$this->_division_from_dossier."'", EXTRA_VERBOSE_MODE);
259     // On retourne la valeur retournée
260     return $this->_division_from_dossier;
261    
262 fmichon 944 }
263    
264 nhaye 1643 /**
265     * Cette méthode permet de récupérer le dossier d'autorisation d'un dossier
266     */
267 softime 2025 function getNumDemandeAutorFromDossier($id) {
268 nhaye 1643 //
269     if (!isset($id)) {
270     return NULL;
271     }
272     //
273     $sql = "select dossier_autorisation from ".DB_PREFIXE."dossier ";
274     $sql .= " where dossier='".$id."'";
275     //
276     $dossier_autorisation = $this->db->getOne($sql);
277 softime 2025 $this->addToLog("getNumDemandeAutorFromDossier(): db->getone(\"".$sql."\")", VERBOSE_MODE);
278 nhaye 1643 database::isError($dossier_autorisation);
279     //
280     return $dossier_autorisation;
281     }
282    
283 fmichon 944 // }}}
284    
285 fmichon 1540 function setType(&$form, $maj) {
286     //
287     parent::setType($form, $maj);
288     // On cache tous les champs
289     // XXX
290 nhaye 2644 $form->setType('complement3_om_html', 'hidden');
291 fraynaud 20 $form->setType('bible3', 'hidden');
292 nhaye 2644 $form->setType('complement4_om_html', 'hidden');
293 fraynaud 20 $form->setType('bible4', 'hidden');
294 nhaye 2644 $form->setType('complement5_om_html', 'hidden');
295 fraynaud 20 $form->setType('bible5', 'hidden');
296 nhaye 2644 $form->setType('complement6_om_html', 'hidden');
297 fraynaud 20 $form->setType('bible6', 'hidden');
298 nhaye 2644 $form->setType('complement7_om_html', 'hidden');
299 fraynaud 20 $form->setType('bible7', 'hidden');
300 nhaye 2644 $form->setType('complement8_om_html', 'hidden');
301 fraynaud 20 $form->setType('bible8', 'hidden');
302 nhaye 2644 $form->setType('complement9_om_html', 'hidden');
303 fraynaud 20 $form->setType('bible9', 'hidden');
304 nhaye 2644 $form->setType('complement10_om_html', 'hidden');
305 fraynaud 20 $form->setType('bible10', 'hidden');
306 nhaye 2644 $form->setType('complement11_om_html', 'hidden');
307 fraynaud 20 $form->setType('bible11', 'hidden');
308 nhaye 2644 $form->setType('complement12_om_html', 'hidden');
309 fraynaud 20 $form->setType('bible12', 'hidden');
310 nhaye 2644 $form->setType('complement13_om_html', 'hidden');
311 fraynaud 20 $form->setType('bible13', 'hidden');
312 nhaye 2644 $form->setType('complement14_om_html', 'hidden');
313 fraynaud 20 $form->setType('bible14', 'hidden');
314 nhaye 2644 $form->setType('complement15_om_html', 'hidden');
315 fraynaud 20 $form->setType('bible15', 'hidden');
316 fmichon 1540 //
317 fraynaud 20 $form->setType('delai', 'hidden');
318     $form->setType('etat', 'hidden');
319     $form->setType('accord_tacite', 'hidden');
320     $form->setType('action', 'hidden');
321     $form->setType('delai_notification', 'hidden');
322 vpihour 489 $form->setType('avis_decision', 'hidden');
323 nhaye 2099 $form->setType('autorite_competente', 'hidden');
324 fmichon 1540 //
325 fraynaud 20 $form->setType('archive_delai', 'hidden');
326     $form->setType('archive_etat', 'hidden');
327     $form->setType('archive_accord_tacite', 'hidden');
328     $form->setType('archive_avis', 'hidden');
329 nmeucci 2838 $form->setType('archive_date_complet', 'hiddendate');
330     $form->setType('archive_date_dernier_depot', 'hiddendate');
331     $form->setType('archive_date_rejet', 'hiddendate');
332     $form->setType('archive_date_limite', 'hiddendate');
333     $form->setType('archive_date_notification_delai', 'hiddendate');
334     $form->setType('archive_date_decision', 'hiddendate');
335     $form->setType('archive_date_validite', 'hiddendate');
336     $form->setType('archive_date_achevement', 'hiddendate');
337     $form->setType('archive_date_conformite', 'hiddendate');
338     $form->setType('archive_date_chantier', 'hiddendate');
339 nhaye 2099 $form->setType('archive_autorite_competente','hidden');
340 fmichon 1540 //
341 vpihour 1307 $form->setType('numero_arrete', 'hidden');
342 vpihour 1784 //
343     $form->setType('code_barres', 'hidden');
344 fmichon 1540
345     //
346 nhaye 1717 $form->setType('archive_incompletude','hidden');
347 nhaye 3059 $form->setType('archive_incomplet_notifie','hidden');
348 nhaye 1717 $form->setType('archive_evenement_suivant_tacite','hidden');
349     $form->setType('archive_evenement_suivant_tacite_incompletude','hidden');
350     $form->setType('archive_etat_pendant_incompletude','hidden');
351 nmeucci 2857 $form->setType('archive_date_limite_incompletude','hiddendate');
352 nhaye 1717 $form->setType('archive_delai_incompletude','hidden');
353 softime 2142
354     //
355     $form->setType('duree_validite','hidden');
356     $form->setType('duree_validite_parametrage','hidden');
357 fmichon 1540 if ($maj < 2) { //ajouter et modifier
358     $form->setType('destinataire', 'hidden');
359     $form->setType('lettretype', 'hiddenstatic');
360 nhaye 2644 $form->setType('complement_om_html', 'html');
361     $form->setType('complement2_om_html', 'html');
362 fmichon 1540 $form->setType('bible_auto', 'httpclick');
363     $form->setType('bible', 'httpclick');
364     $form->setType('bible2', 'httpclick');
365     $form->setType('dossier', 'hidden');
366     $form->setType('libelle', 'hiddenstatic');
367     $form->setType('signataire_arrete','select');
368 nhaye 1564 $form->setType('date_envoi_signature','datedisabled');
369     $form->setType('date_retour_signature','datedisabled');
370     $form->setType('date_envoi_rar','datedisabled');
371     $form->setType('date_retour_rar','datedisabled');
372     $form->setType('date_envoi_controle_legalite','datedisabled');
373     $form->setType('date_retour_controle_legalite','datedisabled');
374 vpihour 1966 $form->setType('date_finalisation_courrier','datedisabled');
375 softime 2049
376 nmeucci 2805
377 softime 2049
378 fmichon 1540 if($maj==0){ // add
379 nmeucci 2805 $form->setType('instruction', 'hidden');
380     $form->setType('lettretype', 'hidden');
381 fmichon 1540 $form->setType('evenement', 'select');
382     $form->setType('date_evenement', 'date2');
383     }else{ // modify
384     $form->setType('instruction', 'hiddenstatic');
385     $form->setType('evenement', 'selecthiddenstatic');
386     //$form->setType('date_evenement', 'hiddenstaticdate');
387     $form->setType('date_evenement', 'date2');
388     // necessaire pour calcul de date en modification
389     //$form->setType('delai', 'hiddenstatic');
390 nmeucci 2944 // les administrateurs technique et fonctionnel peuvent
391     // modifier tous les champs de date
392     if ($this->f->isAccredited("instruction_modification_dates")) {
393     $form->setType('date_envoi_signature', 'date');
394     $form->setType('date_retour_signature', 'date');
395     $form->setType('date_envoi_rar', 'date');
396     $form->setType('date_retour_rar', 'date');
397     $form->setType('date_envoi_controle_legalite', 'date');
398     $form->setType('date_retour_controle_legalite', 'date');
399     $form->setType('date_finalisation_courrier', 'date');
400 nmeucci 2805 }
401 fmichon 1540 }
402     } elseif($maj==2){
403     $form->setType('dossier', 'hidden');
404     $form->setType('bible_auto', 'hidden');
405     $form->setType('bible', 'hidden');
406     $form->setType('bible2', 'hidden');
407     }else {
408     $form->setType('destinataire', 'hidden');
409     $form->setType('dossier', 'hidden');
410     $form->setType('bible_auto', 'hidden');
411     $form->setType('bible', 'hidden');
412     $form->setType('bible2', 'hidden');
413     }
414 vpihour 1899
415     //Cache les champs pour la finalisation
416     $form->setType('om_fichier_instruction', 'hidden');
417     $form->setType('om_final_instruction', 'hidden');
418 nhaye 1945 // Cache le document arrêté
419 softime 2030 $form->setType('document_numerise', 'hidden');
420 vpihour 2069
421     //Masquer les champs date_envoi_controle_legalite et
422     //date_retour_controle_legalite si ce n'est pas un arrêté
423     if ( !is_numeric($this->getVal("avis_decision"))){
424    
425 nmeucci 2838 $form->setType("date_envoi_controle_legalite", "hiddendate");
426     $form->setType("date_retour_controle_legalite", "hiddendate");
427 vpihour 2069 }
428 fraynaud 20 }
429 fmichon 1540
430     function setSelect(&$form, $maj,&$db,$debug) {
431     /**
432     * On ne surcharge pas la méthode parent car une requête sur la table
433     * dossier est mauvaise pour les performances, car la requête qui
434     * concerne evenement est plus complexe que celle générée et car les
435     * champs action, avis_decision et etat ne sont pas utilisés comme des
436     * select
437     */
438 atreal 312 if(file_exists ("../sql/".$db->phptype."/".$this->table.".form.inc.php"))
439     include ("../sql/".$db->phptype."/".$this->table.".form.inc.php");
440 fmichon 1540 elseif(file_exists ("../sql/".$db->phptype."/".$this->table.".form.inc"))
441     include ("../sql/".$db->phptype."/".$this->table.".form.inc");
442 nhaye 428
443 fmichon 1540 //// action
444     //$this->init_select($form, $db, $maj, $debug, "action",
445     // $sql_action, $sql_action_by_id, false);
446 vpihour 1227
447 fmichon 1540 //// avis_decision
448     //$this->init_select($form, $db, $maj, $debug, "avis_decision",
449     // $sql_avis_decision, $sql_avis_decision_by_id, false);
450 nhaye 1140
451 fmichon 1540 //// dossier
452     //$this->init_select($form, $db, $maj, $debug, "dossier",
453     // $sql_dossier, $sql_dossier_by_id, false);
454 nhaye 428
455 fmichon 1540 //// etat
456     //$this->init_select($form, $db, $maj, $debug, "etat",
457     // $sql_etat, $sql_etat_by_id, false);
458    
459     //// evenement
460     //$this->init_select($form, $db, $maj, $debug, "evenement",
461     // $sql_evenement, $sql_evenement_by_id, false);
462    
463     // signataire_arrete
464     $this->init_select($form, $db, $maj, $debug, "signataire_arrete",
465     $sql_signataire_arrete, $sql_signataire_arrete_by_id, true);
466    
467     /**
468     * Gestion du filtre sur les événements de workflow disponibles
469     * On récupère ici en fonction de l'état du dossier d'instruction en
470     * cours et du type du dossier d'instruction en cours la liste
471     * événements disponibles.
472     */
473     if ($maj == 0) {
474     // Récupération des événements par une jointure entre la table dossier
475     // et la table transition et la table evenement et la table
476     // lien_dossier_instruction_type_evenement en fonction de l'identifiant
477     // du dossier d'instruction en cours
478     $sql = "SELECT
479     evenement.evenement,
480 nmeucci 2853 evenement.libelle as lib
481 fmichon 1540 FROM ".DB_PREFIXE."dossier
482     INNER JOIN ".DB_PREFIXE."lien_dossier_instruction_type_evenement
483     ON dossier.dossier_instruction_type=lien_dossier_instruction_type_evenement.dossier_instruction_type
484     INNER JOIN ".DB_PREFIXE."evenement
485     ON evenement.evenement=lien_dossier_instruction_type_evenement.evenement
486     INNER JOIN ".DB_PREFIXE."transition
487     ON evenement.evenement = transition.evenement
488     AND dossier.etat=transition.etat
489     WHERE dossier.dossier='".$this->idxformulaire."'
490 vpihour 2614 ORDER BY evenement.libelle, evenement.action";
491 fmichon 1540 $res = $db->query($sql);
492     $this->addToLog("setSelect(): db->query(\"".$sql."\");", VERBOSE_MODE);
493     if (database::isError($res)) {
494     die($res->getMessage());
495 fraynaud 20 }
496 fmichon 1540 // Remplissage du tableau du select
497     $contenu = array(
498     0 => array("",),
499     1 => array(_('choisir')." "._('evenement'),)
500     );
501     while ($row=& $res->fetchRow()) {
502     $contenu[0][] = $row[0];
503     $contenu[1][] = $row[1];
504     }
505     $form->setSelect("evenement", $contenu);
506     } else {
507     $sql = "SELECT
508 nmeucci 2853 evenement.libelle as lib
509 fmichon 1540 FROM ".DB_PREFIXE."evenement
510     WHERE evenement.evenement=".$this->getVal("evenement")."";
511     $res = $db->getone($sql);
512     $this->addToLog("setSelect(): db->getone(\"".$sql."\");", VERBOSE_MODE);
513     if (database::isError($res)) {
514     die($res->getMessage());
515     }
516     //
517     $contenu = array(
518     0 => array($this->getVal("evenement"),),
519     1 => array($res,)
520     );
521     $form->setSelect("evenement", $contenu);
522 fraynaud 20 }
523 fmichon 1540
524     /**
525     * Gesion des liens vers la bible
526     */
527     // lien bible_auto
528     $contenu = array(_("automatique"));
529 nhaye 428 $form->setSelect("bible_auto",$contenu);
530     // lien bible1
531 fmichon 1540 $contenu = array(_("bible"));
532 nhaye 428 $form->setSelect("bible",$contenu);
533     // lien bible2
534 fmichon 1540 $contenu = array(_("bible"));
535 nhaye 428 $form->setSelect("bible2",$contenu);
536 fmichon 1540 }
537 fraynaud 20
538 fmichon 1540 function cleSecondaire($id, &$db, $val, $DEBUG) {
539     //
540     parent::cleSecondaire($id, $db, $val, $DEBUG);
541 vpihour 2000
542 vpihour 2606 $id = $this->getVal($this->clePrimaire);
543 vpihour 2604
544 vpihour 2603
545 softime 2633 //Requête de vérification que cet événement d'instruction n'est pas lié
546 vpihour 2606 //à la création d'un dossier d'instruction
547     $sql = "SELECT demande_type.dossier_instruction_type
548     FROM ".DB_PREFIXE."demande_type
549     LEFT JOIN ".DB_PREFIXE."demande
550     ON demande.demande_type = demande_type.demande_type
551     WHERE demande.instruction_recepisse = ".$id;
552     $res = $this->db->getOne($sql);
553     $this->addToLog("cleSecondaire(): db->getone(\"".$sql."\");", VERBOSE_MODE);
554     if (database::isError($res)) {
555     die($res->getMessage());
556     }
557    
558     // Aucune clé secondaire n'a été trouvée ou c'est un événement sans
559     //création de dossier d'instruction, l'événement d'instruction peut être
560     //supprimé
561 vpihour 2603 if ( $this->correct !== false || $res == null || $res == ""){
562 vpihour 2606
563 softime 2633 // Requête de vérification que cet événement d'instruction est lié
564     // à une demande
565     $sql = "SELECT demande
566     FROM ".DB_PREFIXE."demande
567     WHERE instruction_recepisse = ".$id;
568     $res = $this->db->getOne($sql);
569     $this->addToLog("cleSecondaire(): db->getone(\"".$sql."\");", VERBOSE_MODE);
570     if (database::isError($res)) {
571     die($res->getMessage());
572     }
573    
574 vpihour 2606 //Si c'est un événement d'instruction lié à une demande
575 softime 2633 if ($res != null || $res != ""){
576 vpihour 2603
577 vpihour 2606 require_once "../obj/demande.class.php";
578     $demande = new demande($res, $this->db, DEBUG);
579    
580     //On met à jour la demande en supprimant la liaison vers
581     //l'événement d'instruction
582     $demande->setParameter("maj", 1);
583     $valF = array();
584     foreach($demande->champs as $identifiant => $champ) {
585     $valF[$champ] = $demande->val[$identifiant];
586     }
587     $valF['date_demande']=$demande->dateDBToForm($valF['date_demande']);
588     $valF['instruction_recepisse']=NULL;
589     $ret = $demande->modifier($valF, $this->db, DEBUG);
590 vpihour 2603 }
591    
592 vpihour 2000 /**
593     * Vérification que l'élément supprimé est le dernier pour pouvoir
594     * remodifier les données de manière itérative.
595     */
596     // Initialisation
597     $dernierevenement = "";
598     // Récupération du dernier élément de la table d'instruction qui
599     // concerne le dossier en cours
600     $sql = "SELECT max(instruction)
601     FROM ".DB_PREFIXE."instruction
602     WHERE dossier ='".$this->idxformulaire."'";
603     $dernierevenement = $db->getOne($sql);
604     $this->addToLog("setSelect(): db->getone(\"".$sql."\");", VERBOSE_MODE);
605     if (database::isError($dernierevenement)) {
606     die($dernierevenement->getMessage());
607     }
608     // Si on se trouve effectivement sur le dernier evenement d'instruction
609     if ($dernierevenement == $id) {
610     // Alors on valide la suppression
611     $this->correct = true;
612     $this->addToMessage(_('Destruction_chronologique'));
613     } else {
614     // Alors on annule la suppression
615     $this->correct = false;
616     $this->addToMessage(_("Seul le dernier evenement d'instruction peut etre supprime."));
617     }
618 fmichon 1540 }
619     }
620    
621 nhaye 2412 /**
622     * Vérification de la possibilité ou non de modifier des dates de suivi
623     * @param string $champ champ date à vérifier
624     */
625 nhaye 1564 function updateDate($champ) {
626 nhaye 2412
627 softime 2562 //Si le retourformulaire est "dossier_instruction"
628     if ($this->retourformulaire == "dossier_instruction") {
629    
630     // Vérification de la possibilité de modifier les dates si déjà éditées
631     if($this->valF[$champ] != "" AND !$this->f->user_is_admin) {
632     // si l'utilisateur n'est pas un admin
633     if($this->getVal($champ) != "" AND $this->getVal($champ) != $this->valF[$champ]) {
634     $this->correct = false;
635     $this->addToMessage(_("Les dates de suivis ne peuvent etre modifiees"));
636     }
637 nhaye 1564 }
638     }
639 softime 2562
640     //
641 nhaye 2412 return true;
642 nhaye 1564 }
643    
644 fmichon 1540 // Sélectionne le signataire_arrete par défaut
645     function setVal(&$form,$maj,$validation){
646    
647     // Ajout
648     if($maj == 0) {
649    
650     // Création de la requête
651     $sql = "SELECT signataire_arrete
652     FROM ".DB_PREFIXE."signataire_arrete
653     WHERE defaut IS TRUE";
654    
655     // Exécution de la requête
656 vpihour 1777 $res = $this->f->db->query($sql);
657 vpihour 2456 $this->f->addToLog("setVal(): db->query(\"".$sql."\");", VERBOSE_MODE);
658 vpihour 1777 if ( database::isError($res)){
659     die();
660     }
661 fmichon 1540
662     $row = $res->fetchrow(DB_FETCHMODE_ASSOC);
663    
664     if ( isset($row['signataire_arrete']) && is_numeric($row['signataire_arrete'])){
665    
666     $form->setVal("signataire_arrete",$row['signataire_arrete']);
667     }
668     }
669     }
670    
671     /*Met des valeurs par défaut dans certains des sous-formulaire*/
672     function setValsousformulaire(&$form,$maj,$validation,$idxformulaire,$retourformulaire,$typeformulaire){
673     if ($validation==0 and $maj<2) {
674     if ($maj == 0){
675     $form->setVal("destinataire", $idxformulaire);
676     $form->setVal("dossier", $idxformulaire);
677     $form->setVal("date_evenement", date('Y-m-d'));
678     }
679     $form->setVal("bible_auto","bible_auto()");
680     $form->setVal("bible","bible()");
681     $form->setVal("bible2","bible2()");
682     }
683     $this->retourformulaire=$retourformulaire;
684     $this->idxformulaire=$idxformulaire;
685     }
686    
687    
688 nhaye 1439 function setLayout(&$form, $maj){
689     if ( $maj < 2 OR $maj == 3 ) {
690     /*Champ sur lequel s'ouvre le bloc 1 */
691     $form->setBloc('evenement','D',"","col_12");
692 fraynaud 20
693 nhaye 1439 $form->setFieldset('evenement','D',_('Evenement'));
694     $form->setFieldset('lettretype','F','');
695    
696     $form->setBloc('lettretype','F');
697    
698     $form->setBloc('date_finalisation_courrier','D',"","col_12");
699    
700     $form->setFieldset('date_finalisation_courrier','D',_('Dates'));
701     $form->setBloc('date_finalisation_courrier','D',"","col_6");
702     $form->setBloc('date_envoi_controle_legalite','F');
703    
704     $form->setBloc('signataire_arrete','D',"","col_6");
705     $form->setBloc('date_retour_controle_legalite','F');
706     $form->setFieldset('date_retour_controle_legalite','F','');
707    
708     $form->setBloc('date_retour_controle_legalite','F');
709    
710 nhaye 2644 $form->setBloc('complement_om_html','D',"","col_12");
711     $form->setFieldset('complement_om_html','D',_('Complement'));
712 nhaye 1439 $form->setFieldset('bible','F','');
713     $form->setBloc('bible','F');
714    
715 nhaye 2644 $form->setBloc('complement2_om_html','D',"","col_12");
716     $form->setFieldset('complement2_om_html','D',_('Complement 2'));
717 nhaye 1439 $form->setFieldset('bible2','F','');
718     $form->setBloc('bible2','F');
719     }
720 fraynaud 20 }
721    
722 fmichon 1540 function setLib(&$form, $maj) {
723     //
724     parent::setLib($form, $maj);
725     //
726     $form->setLib('bible_auto', "");
727     $form->setLib('bible', "");
728     $form->setLib('bible2', "");
729 fraynaud 20 }
730    
731 fmichon 1540 function triggerajouter($id, &$db, $val, $DEBUG) {
732     /**
733     * Le code suivant permet de récupérer des valeurs des tables evenement
734     * et dossier pour les stocker dans l'instruction :
735     * DEPUIS L'EVENEMENT
736     * - action
737     * - delai
738     * - accord_tacite
739     * - etat
740     * - avis_decision
741     * - delai_notification
742     * - lettretype
743 nhaye 2099 * - autorite_competente
744 fmichon 1540 * DEPUIS LE DOSSIER D'INSTRUCTION
745     * - archive_delai
746     * - archive_accord_tacite
747     * - archive_etat
748     * - archive_avis
749     * - date_complet
750     * - date_rejet
751     * - date_limite
752     * - date_notification_delai
753     * - date_decision
754     * - date_validite
755     * - date_achevement
756     * - date_chantier
757     * - date_conformite
758 nhaye 2099 * - avis_decision
759 fmichon 1540 * Il permet également de stocker la date_depot du dossier d'instruction
760     * dans l'attribut $this->archive_date_depot de la classe.
761     */
762     // Récupération de tous les paramètres de l'événement sélectionné
763     $sql = "SELECT * FROM ".DB_PREFIXE."evenement
764     WHERE evenement=".$this->valF['evenement'];
765 fraynaud 20 $res = $db->query($sql);
766 fmichon 1540 $this->addToLog("triggerajouter(): db->query(\"".$sql."\");", VERBOSE_MODE);
767     if (database::isError($res)) {
768     die($res->getMessage());
769     }
770     while ($row=& $res->fetchRow(DB_FETCHMODE_ASSOC)) {
771     // Récupération de l'identifiant de l'action
772     // si une action est paramétrée dans l'événement
773     $this->valF['action'] = NULL;
774     if (isset($row['action']) and !empty($row['action'])) {
775 nhaye 460 $this->valF['action']=$row['action'];
776     }
777 fmichon 1540 // Récupération de la valeur du délai
778     $this->valF['delai'] = $row['delai'];
779     // Récupération de l'identifiant de l'état
780     // si un état est paramétré dans l'événement
781     $this->valF['etat']=NULL;
782     if (isset($row['etat']) and !empty($row['etat'])) {
783 nhaye 460 $this->valF['etat']=$row['etat'];
784     }
785 fmichon 1540 // Récupération de la valeur d'accord tacite
786 fraynaud 20 $this->valF['accord_tacite']=$row['accord_tacite'];
787 fmichon 1540 // Récupération de la valeur du délai de notification
788 fraynaud 20 $this->valF['delai_notification']=$row['delai_notification'];
789 fmichon 1540 // Récupération de l'identifiant de l'avis
790     // si un avis est paramétré dans l'événement
791     $this->valF['avis_decision'] = NULL;
792 vpihour 489 if(isset($row['avis_decision']) and !empty($row['avis_decision'])) {
793     $this->valF['avis_decision']=$row['avis_decision'];
794 fmichon 1540 }
795 nhaye 2099 // Récupération de la valeur de l'autorité compétente
796     // si l'autorité compétente est paramétré dans l'événement
797     $this->valF['autorite_competente'] = NULL;
798     if(isset($row['autorite_competente']) and !empty($row['autorite_competente'])) {
799     $this->valF['autorite_competente']=$row['autorite_competente'];
800     }
801 fmichon 1540 // Récupération de la valeur de la lettre type
802 nhaye 2815 $this->valF['lettretype']=$row['lettretype'];
803 fraynaud 20 }
804 fmichon 1540 // Récupération de toutes les valeurs du dossier d'instruction en cours
805     $sql = "SELECT * FROM ".DB_PREFIXE."dossier
806     WHERE dossier='".$this->valF['dossier']."'";
807 fraynaud 20 $res = $db->query($sql);
808 fmichon 1540 $this->addToLog("triggerajouter(): db->query(\"".$sql."\");", VERBOSE_MODE);
809     if (database::isError($res)) {
810 fraynaud 20 die($res->getMessage());
811 fmichon 1540 }
812 vpihour 2643 $row=& $res->fetchRow(DB_FETCHMODE_ASSOC);
813     $this->updateArchiveData($row);
814     $this->archive_date_depot = $row['date_depot'];
815    
816 softime 2142 // Récupération de la duree de validite du dossier d'autorisation
817     $sql = "SELECT duree_validite_parametrage
818     FROM ".DB_PREFIXE."dossier_autorisation_type_detaille
819     LEFT JOIN ".DB_PREFIXE."dossier_autorisation
820     ON dossier_autorisation.dossier_autorisation_type_detaille = dossier_autorisation_type_detaille.dossier_autorisation_type_detaille
821     LEFT JOIN ".DB_PREFIXE."dossier
822     ON dossier.dossier_autorisation = dossier_autorisation.dossier_autorisation
823     WHERE dossier.dossier='".$this->valF['dossier']."'";
824     $duree_validite_parametrage = $db->getOne($sql);
825     $this->addToLog("triggerajouter(): db->getOne(\"".$sql."\");", VERBOSE_MODE);
826     database::isError($duree_validite_parametrage);
827     if ($duree_validite_parametrage != '') {
828     $this->valF['duree_validite_parametrage']= $duree_validite_parametrage;
829     }
830 vpihour 1784
831     // Identifiant du type de courrier
832     $idTypeCourrier = '11';
833     $idCourrier = str_pad($this->valF["instruction"], 10, "0", STR_PAD_LEFT);
834     // Code barres
835     $this->valF["code_barres"] = $idTypeCourrier . $idCourrier;
836 fraynaud 20 }
837    
838 vpihour 1137 // Test si une restriction est valide
839     // return boolean
840     function restrictionIsValid($restriction){
841 nhaye 2905 if($this->restriction_valid != null) {
842     return $this->restriction_valid;
843     }
844 nhaye 3050 if(empty($restriction)) {
845     $this->restriction_valid = true;
846     return $this->restriction_valid;
847     }
848 softime 2305 // Liste des opérateurs possible
849     $operateurs = array(">=", "<=", "+", "-");
850     // Liste des opérateurs avec espace
851     $operateurs_blank = array(" >= ", " <= ", " + ", " - ");
852    
853     // Supprime tous les espaces de la chaîne de caractère
854     $restriction = str_replace(' ', '', $restriction);
855 vpihour 1137
856 softime 2305 // Met des espace avant et après les opérateurs puis transforme la
857     // chaine en un tableau
858     $tabRestriction = str_replace($operateurs, $operateurs_blank,
859     $restriction);
860     $tabRestriction = explode(" ", $tabRestriction);
861    
862     // Tableau comprenant les résultat
863 vpihour 1137 $res = array();
864 softime 2305 // Compteur pour les résultat
865     // commence à 1 car le 0 doit rester inchangé tout au long du traitement
866     $j = 1;
867     // Comparateur du calcul
868     $comparateur = '';
869     // Booléen retourné
870     $res_bool = true;
871    
872 softime 2692 // S'il y a un comparateur
873     if (in_array(">=", $tabRestriction)
874     || in_array("<=", $tabRestriction)) {
875 softime 2305
876 softime 2692 // Si le tableau n'est pas vide
877     if (count($tabRestriction) > 0) {
878    
879     // Boucle dans le tableau pour récupérer seulement les valeurs
880     foreach ($tabRestriction as $key => $value) {
881    
882     //
883     if (!in_array($value, $operateurs)) {
884     if ($this->getRestrictionValue($value) != false) {
885     $res[] = $this->getRestrictionValue($value);
886     } else {
887     // Message d'erreur
888     $error_message = sprintf(_("Le champ %s de l'instruction %s est vide"), "<span class='bold'>".$value."</span>", "<span class='bold'>".$this->valF["instruction"]."</span>");
889     $this->addToMessage($error_message);
890     // Arrête le traitement
891     return false;
892     }
893 softime 2305 }
894 vpihour 1137 }
895 softime 2305
896 softime 2692 // Boucle dans le tableau
897     // commence à 1 car le 0 doit rester inchangé tout au long du
898     // traitement
899     for ($i = 1; $i<count($tabRestriction); $i++) {
900    
901     // Récupère le comparateur
902     if ($tabRestriction[$i] === ">="
903     || $tabRestriction[$i] === "<=") {
904     $comparateur = $tabRestriction[$i];
905     }
906 softime 2305
907 softime 2692 // Si l'opérateur qui suit est un "+"
908     if ($tabRestriction[$i] === "+") {
909 softime 2771 $dateDep = $res[$j];
910 softime 2692 unset($res[$j]);$j++;
911     $duree = $res[$j];
912     unset($res[$j]);
913 softime 2771 $res[$j] = $this->f->mois_date($dateDep, $duree, "+");
914 softime 2692 }
915 softime 2305
916 softime 2692 // Si l'opérateur qui suit est un "-"
917     if ($tabRestriction[$i] === "-") {
918 softime 2771 $dateDep = $res[$j];
919 softime 2692 unset($res[$j]);$j++;
920     $duree = $res[$j];
921     unset($res[$j]);
922 softime 2771 $res[$j] = $this->f->mois_date($dateDep, $duree, "-");
923 softime 2692 }
924 softime 2305 }
925 softime 2692
926 vpihour 1137 }
927    
928 softime 2692 // Si les tableau des résultats n'est pas vide
929     if (count($res) > 0) {
930 softime 2305 //
931 softime 2692 $res_bool = false;
932     // Effectue le test
933     if ($comparateur === ">=") {
934     //
935     if (strtotime($res[0]) >= strtotime($res[$j])) {
936     $res_bool = true;
937     }
938 softime 2305 }
939 softime 2692 if ($comparateur === "<=") {
940 vpihour 1137
941 softime 2692 if (strtotime($res[0]) <= strtotime($res[$j])) {
942     $res_bool = true;
943     }
944 softime 2305 }
945 vpihour 1137 }
946 softime 2692 // Sinon une erreur s'affiche
947     } else {
948    
949     // Message d'erreur
950 nhaye 3050 $error_message = _("Mauvais parametrage de la restriction.")." ".
951     _("Contactez votre administrateur");
952 softime 2692 $this->addToMessage($error_message);
953     // Arrête le traitement
954     return false;
955 vpihour 1137 }
956    
957 softime 2305 return $res_bool;
958    
959 vpihour 1137 }
960 softime 2373
961     /**
962 nhaye 2905 * Permet de définir si l'événement passé en paramètre est un événement retour.
963     * @param integer $evenement événement à tester
964     *
965     * @return boolean retourne true si événement retour sinon false
966     */
967     function is_evenement_retour($evenement) {
968     if(empty($evenement) || !is_numeric($evenement)) {
969     return "";
970     }
971     $sql = "SELECT retour
972     FROM ".DB_PREFIXE."evenement
973     WHERE evenement = ".$evenement;
974     $retour = $this->db->getOne($sql);
975     $this->addToLog("verifier(): db->query(\"".$sql."\");", VERBOSE_MODE);
976     if (database::isError($retour)) {
977     die($retour->getMessage());
978     }
979     if ($retour == 't') {
980     return true;
981     } else {
982     return false;
983     }
984     }
985    
986     /**
987     * Retourne le champ restriction de l'événement passé en paramètre.
988     *
989     * @param integer $evenement id de l'événement sur lequel récupérer la restriction
990     *
991     * @return string contenu du champ restriction
992     */
993     function get_restriction($evenement) {
994     if(empty($evenement) || !is_numeric($evenement)) {
995     return "";
996     }
997     //Récupère la restriction
998     $sql= "SELECT
999     restriction
1000     FROM
1001     ".DB_PREFIXE."evenement
1002     WHERE
1003     evenement =".$evenement;
1004    
1005     $restriction = $this->db->getOne($sql);
1006     $this->addToLog("verifier(): db->query(\"".$sql."\");", VERBOSE_MODE);
1007     if (database::isError($restriction)) {
1008     die($restriction->getMessage());
1009     }
1010     return $restriction;
1011     }
1012    
1013     /**
1014 vpihour 2792 * Récupère la valeur du champ dans la restriction
1015     * @param string $restrictionValue Nom du champ
1016     * @return mixed Valeur du champ
1017     */
1018     function getRestrictionValue($restrictionValue){
1019    
1020     // Initialisation de la valeur de retour
1021     $return = false;
1022    
1023     // Récupére les valeurs du dossier
1024     $value_dossier = $this->get_dossier_actual();
1025    
1026     //
1027     if (is_numeric($restrictionValue)) {
1028     $return = $restrictionValue;
1029     }elseif (isset($value_dossier[$restrictionValue])) {
1030     $return = $value_dossier[$restrictionValue];
1031     }elseif (isset($this->valF[$restrictionValue])) {
1032     $return = $this->valF[$restrictionValue];
1033     }
1034    
1035     // Retourne la valeur du champ
1036     return $return;
1037     }
1038    
1039     /**
1040 softime 2787 * Calcul des règle d'action.
1041     * @param string $rule Règle d'action
1042     * @param string $rule_name Nom de la règle
1043     * @param string $type Type de la règle
1044     *
1045     * @return mixed Résultat de la règle
1046 softime 2373 */
1047 softime 2787 function regle($rule, $rule_name, $type = null) {
1048 softime 2305
1049 softime 2787 // Supprime tous les espaces de la chaîne de caractère
1050     $rule = str_replace(' ', '', $rule);
1051     // Coupe la chaîne au niveau de l'opérateur
1052     $operands = explode ("+", $rule);
1053     // Nombre d'opérande
1054     $nb_operands = count($operands);
1055 softime 2305
1056 softime 2787 // Règle à null
1057     if ($rule == "null") {
1058     return null;
1059     }
1060 softime 2373
1061 softime 2787 // Si c'est une règle spécifique
1062     if ($rule_name == "regle_autorite_competente"
1063     || $rule_name == "regle_etat"
1064     || $rule_name == "regle_accord_tacite"
1065     || $rule_name == "regle_avis") {
1066     //
1067     return $this->valF[$rule];
1068 softime 2305 }
1069    
1070 softime 2787 // Tableau des champs de type date
1071     $rule_type_date = array(
1072     "regle_date_limite",
1073     "regle_date_notification_delai",
1074     "regle_date_complet",
1075     "regle_date_validite",
1076     "regle_date_decision",
1077     "regle_date_chantier",
1078     "regle_date_achevement",
1079     "regle_date_conformite",
1080     "regle_date_rejet",
1081     "regle_date_dernier_depot",
1082     "regle_date_limite_incompletude",
1083     );
1084     // Tableau des champs de type numérique
1085     $rule_type_numeric = array(
1086     "regle_delai",
1087     "regle_delai_incompletude",
1088     );
1089    
1090     // Définit le type du champ
1091     if (in_array($rule_name, $rule_type_date) == true) {
1092     $type = "date";
1093 fraynaud 123 }
1094 softime 2787 if (in_array($rule_name, $rule_type_numeric) == true) {
1095     $type = "numeric";
1096 fraynaud 124 }
1097 softime 2787
1098     // Initialisation des variables
1099     $key_date = 0;
1100     $total_numeric = 0;
1101    
1102     // Pour chaque opérande
1103     foreach ($operands as $key => $operand) {
1104    
1105     // Si c'est une règle de type date
1106     if ($type == 'date') {
1107     // Vérifie si au moins une des opérandes est une date
1108     if (!is_numeric($operand)
1109     && isset($this->valF[$operand])
1110     && $this->f->check_date($this->valF[$operand]) == true) {
1111     // Récupère la position de la date
1112     $key_date = $key;
1113     }
1114     // Les autres opérandes doivent être que des numériques
1115     if (is_numeric($operand) == true) {
1116     // Ajoute l'opérande au total
1117     $total_numeric += $operand;
1118     }
1119     if (!is_numeric($operand)
1120     && isset($this->valF[$operand])
1121     && is_numeric($this->valF[$operand]) == true) {
1122     // Ajoute l'opérande au total
1123     $total_numeric += $this->valF[$operand];
1124     }
1125     }
1126    
1127     // Si c'est une règle de type numérique
1128     if ($type == 'numeric') {
1129     // Les opérandes doivent être que des numériques
1130     if (is_numeric($operand) == true) {
1131     // Ajoute l'opérande au total
1132     $total_numeric += $operand;
1133     }
1134     if (!is_numeric($operand)
1135     && isset($this->valF[$operand])
1136     && is_numeric($this->valF[$operand]) == true) {
1137     // Ajoute l'opérande au total
1138     $total_numeric += $this->valF[$operand];
1139     }
1140     }
1141     }
1142    
1143     // Résultat pour une règle de type date
1144     if ($type == 'date') {
1145     // Retourne le calcul de la date
1146     return $this->f->mois_date($this->valF[$operands[$key_date]],
1147     $total_numeric, "+");
1148     }
1149    
1150     // Résultat pour une règle de type numérique
1151     if ($type == 'numeric') {
1152     // Retourne le calcul
1153     return $total_numeric;
1154     }
1155    
1156 fraynaud 123 }
1157 fmichon 1540
1158 fraynaud 20 function triggerajouterapres($id,&$db,$val,$DEBUG) {
1159 fmichon 1540 /**
1160     * Mise à jour des valeurs du dossier en fonction des valeurs calculées
1161     * par l'action
1162     */
1163 nhaye 1724 $this->getValEvenement();
1164 fmichon 1540 // Initialisation
1165     $valF = "";
1166 nhaye 1741 // état de complétude actuel du dossier
1167     $incompletude = $this->dossierIncomplet();
1168    
1169     if($incompletude === FALSE) {
1170     // Si l'événement d'instruction est de type incompletude
1171     if($this->valEvenement['type'] == "incompletude") {
1172     // On marque le dossier en incomplétude pour application des actions
1173     $incompletude = TRUE;
1174     // Set du flag incomplétude de la table dossier
1175     $valF['incompletude'] = TRUE;
1176     // Enregistrement de l'état dans la variable provisoire
1177     $valF['etat_pendant_incompletude'] = $this->valF['archive_etat'];
1178     }
1179     } else {
1180     // Si l'evenement d'instruction est de type retour ou contient une
1181     // decision, on sort d'incomplétude
1182     if($this->valEvenement['type'] == "retour" OR
1183     $this->valEvenement['avis_decision'] != NULL) {
1184     // On enlève la marque d'incomplétude pour application des actions
1185     $incompletude = FALSE;
1186     // On enlève le flag d'incomplétude sur l'enregistrement de la table dossier
1187     $valF['incompletude'] = FALSE;
1188 nhaye 3059 $valF['incomplet_notifie'] = FALSE;
1189 nhaye 1741 // Restauration de l'état depuis l'état provisoire
1190     $valF['etat'] = $this->valF['archive_etat_pendant_incompletude'];
1191     // On vide la variable provisoire ainsi que le délai de complétude
1192     // et la date limite de complétude
1193     $valF['etat_pendant_incompletude'] = NULL;
1194     $valF['delai_incompletude'] = NULL;
1195     $valF['date_limite_incompletude'] = NULL;
1196 nhaye 3045 $valF['evenement_suivant_tacite_incompletude'] = NULL;
1197 nhaye 1741 }
1198     }
1199 fmichon 1540 // Récupération des paramètres de l'action
1200     $sql = "SELECT * FROM ".DB_PREFIXE."action
1201     WHERE action='".$this->valF['action']."'";
1202     $res = $db->query($sql);
1203     $this->addToLog("triggerajouterapres(): db->query(\"".$sql."\");", VERBOSE_MODE);
1204     if (database::isError($res)) {
1205     die($res->getMessage());
1206     }
1207     while ($row=& $res->fetchRow(DB_FETCHMODE_ASSOC)) {
1208 nhaye 1724
1209 fmichon 1540 // pour chacune des regles, on applique la regle
1210     if($row['regle_delai']!=''){
1211 softime 2787 $valF['delai'] = $this->regle($row['regle_delai'], 'regle_delai');
1212 fmichon 1540 }
1213     if($row['regle_accord_tacite']!=''){
1214 softime 2787 $valF['accord_tacite'] = $this->regle($row['regle_accord_tacite'], 'regle_accord_tacite');
1215 fmichon 1540 }
1216     if($row['regle_avis']!=''){
1217 softime 2787 $valF['avis_decision'] = $this->regle($row['regle_avis'], 'regle_avis');
1218 fmichon 1540 }
1219     if($row['regle_date_limite']!=''){
1220 softime 2787 $valF['date_limite']= $this->regle($row['regle_date_limite'], 'regle_date_limite');
1221 fmichon 1540 }
1222     if($row['regle_date_complet']!=''){
1223 softime 2787 $valF['date_complet']= $this->regle($row['regle_date_complet'], 'regle_date_complet');
1224 fmichon 1540 }
1225 nhaye 1571 if($row['regle_date_dernier_depot']!=''){
1226 softime 2787 $valF['date_dernier_depot']= $this->regle($row['regle_date_dernier_depot'], 'regle_date_dernier_depot');
1227 nhaye 1571 }
1228 fmichon 1540 if($row['regle_date_notification_delai']!=''){
1229 softime 2787 $valF['date_notification_delai']= $this->regle($row['regle_date_notification_delai'], 'regle_date_notification_delai');
1230 fmichon 1540 }
1231     if($row['regle_date_decision']!=''){
1232 softime 2787 $valF['date_decision']= $this->regle($row['regle_date_decision'], 'regle_date_decision');
1233 fmichon 1540 }
1234     if($row['regle_date_rejet']!=''){
1235 softime 2787 $valF['date_rejet']= $this->regle($row['regle_date_rejet'], 'regle_date_rejet');
1236 fmichon 1540 }
1237     if($row['regle_date_validite']!=''){
1238 softime 2787 $valF['date_validite']= $this->regle($row['regle_date_validite'], 'regle_date_validite');
1239 fmichon 1540 }
1240     if($row['regle_date_chantier']!=''){
1241 softime 2787 $valF['date_chantier']= $this->regle($row['regle_date_chantier'], 'regle_date_chantier');
1242 fmichon 1540 }
1243     if($row['regle_date_achevement']!=''){
1244 softime 2787 $valF['date_achevement']= $this->regle($row['regle_date_achevement'], 'regle_date_achevement');
1245 fmichon 1540 }
1246     if($row['regle_date_conformite']!=''){
1247 softime 2787 $valF['date_conformite']= $this->regle($row['regle_date_conformite'], 'regle_date_conformite');
1248 fmichon 1540 }
1249 nhaye 1731 if($row['regle_date_limite_incompletude']!=''){
1250 softime 2787 $valF['date_limite_incompletude']= $this->regle($row['regle_date_limite_incompletude'], 'regle_date_limite_incompletude');
1251 nhaye 1731 }
1252     if($row['regle_delai_incompletude']!=''){
1253 softime 2787 $valF['delai_incompletude']= $this->regle($row['regle_delai_incompletude'], 'regle_delai_incompletude');
1254 nhaye 1731 }
1255 nhaye 2099 if($row['regle_autorite_competente']!=''){
1256 softime 2787 $valF['autorite_competente']= $this->regle($row['regle_autorite_competente'], 'regle_autorite_competente');
1257 nhaye 2099 }
1258 nhaye 1741 if($row['regle_etat']!=''){
1259     // Si on est dans le cas général ou qu'on est en incomplétude et
1260     // qu'on a un événement de type incomplétude alors : on stocke
1261     // l'état dans la variable courante
1262     if ($incompletude == FALSE OR $this->valEvenement['type'] == "incompletude") {
1263 softime 2787 $valF['etat'] = $this->regle($row['regle_etat'], 'regle_etat');
1264 nhaye 1741 } else {
1265 softime 2787 $valF['etat_pendant_incompletude'] = $this->regle($row['regle_etat'], 'regle_etat');
1266 nhaye 1741 }
1267     }
1268 fmichon 1540 }
1269 nhaye 3045 if($this->valEvenement['evenement_suivant_tacite'] != '') {
1270     // Si on est pas en incomplétude on stocke l'événement tacite
1271     //de l'événement dans la variable courante
1272    
1273     if ($incompletude == FALSE OR $this->valEvenement['type'] != "incompletude") {
1274     $valF['evenement_suivant_tacite'] = $this->valEvenement['evenement_suivant_tacite'];
1275     } else {
1276     $valF['evenement_suivant_tacite_incompletude'] = $this->valEvenement['evenement_suivant_tacite'];
1277     }
1278     }
1279 fmichon 1540 // Si des valeurs ont été calculées alors on met à jour l'enregistrement
1280     if ($valF != "") {
1281     // On met à jour le dossier
1282     $cle = " dossier='".$this->valF['dossier']."'";
1283     $res1 = $db->autoExecute(DB_PREFIXE.'dossier', $valF, DB_AUTOQUERY_UPDATE, $cle);
1284     $this->addToLog("triggerajouterapres(): db->autoexecute(\"".DB_PREFIXE."dossier\", ".print_r($valF, true).", DB_AUTOQUERY_UPDATE, \"".$cle."\");", VERBOSE_MODE);
1285     if (database::isError($res1)) {
1286 fraynaud 20 die($res->getMessage());
1287 fmichon 1540 }
1288     // Affichage d'informations à l'utilisateur
1289     $this->addToMessage(_('enregistrement')." ".$this->valF['dossier']." "._('table')." dossier [".$db->affectedRows()." "._('enregistrement')." "._('mis_a_jour')."]");
1290 fraynaud 20 }
1291 fmichon 1540
1292     /**
1293     * REFERENTIEL ERP
1294     */
1295 fmichon 1005 // verification si envoi vers ERP est active
1296 vpihour 3126 if ($this->f->getParameter('option_erp') === 'true') {
1297 fmichon 1005 // la nature du dossier
1298     $nature_dossier = substr($this->idxformulaire,0,2);
1299 fmichon 1540 //
1300     $sql = "SELECT erp
1301     FROM ".DB_PREFIXE."dossier
1302     WHERE dossier='".$this->valF['dossier']."'";
1303     $dossier_erp = $this->db->getone($sql);
1304     $this->addToLog("triggerajouterapres(): db->getone(\"".$sql."\");", VERBOSE_MODE);
1305     if (database::isError($res)) {
1306     die($res->getMessage());
1307     }
1308     //
1309     $sql = "SELECT libelle
1310     FROM ".DB_PREFIXE."evenement
1311     WHERE evenement='".$this->valF['evenement']."'";
1312     $evenement_libelle = $this->db->getone($sql);
1313     $this->addToLog("triggerajouterapres(): db->getone(\"".$sql."\");", VERBOSE_MODE);
1314     if (database::isError($res)) {
1315     die($res->getMessage());
1316     }
1317     //
1318 fmichon 1005 if ($dossier_erp == 't') {
1319     // envoi du message en cas d'un PC qui est ERP et sur lequel un evenement
1320     // d'acceptation etait fait
1321     if ($nature_dossier ==
1322     $this->f->getParameter('erp_evenement_accepter_dossier_PC')
1323     && $this->valF['evenement'] ==
1324     $this->f->getParameter('erp_evenement_accepter_sans_reserve')) {
1325     $msgenque = new MessageEnqueuer();
1326     $msgenque->setDossierInstructionIdentifier($this->valF['dossier']);
1327     $msgenque->setDecision($evenement_libelle);
1328 vpihour 2842 $return = $msgenque->enqueueMessage($msgenque::$ERP_ARRETE_PC_EFFECTUE);
1329     //Si une erreur s'est produite on arrête le traitement et on
1330     //retourne une erreur
1331     if ($return !== 0){
1332    
1333     $this->addToMessage(_("Une erreur s'est produite lors de ".
1334     "l'envoi du message au referentiel ERP. Merci de ".
1335     "contacter votre administrateur"));
1336     //On ne valide pas le formulaire
1337 vpihour 2877 $this->addToMessage("<br/>"._("SAISIE NON ENREGISTREE")."<br/>");
1338     $this->correct = false;
1339     return false;
1340 vpihour 2842 }
1341     else {
1342     $this->addToMessage(_("Le message a ete transmis au ".
1343     "referentiel ERP."));
1344     }
1345 fmichon 1005 }
1346     if ($this->valF['evenement'] ==
1347     $this->f->getParameter('erp_evenement_refuser_dossier')) {
1348     $msgenque = new MessageEnqueuer();
1349     $msgenque->setDossierInstructionIdentifier($this->valF['dossier']);
1350 vpihour 2842 $return = $msgenque->enqueueMessage($msgenque::$ERP_DECISION_CONFORMITE_EFFECTUE);
1351     //Si une erreur s'est produite on arrête le traitement et on
1352     //retourne une erreur
1353     if ($return !== 0){
1354    
1355     $this->addToMessage(_("Une erreur s'est produite lors de ".
1356     "l'envoi du message au referentiel ERP. Merci de ".
1357     "contacter votre administrateur"));
1358     //On ne valide pas le formulaire
1359 vpihour 2877 $this->addToMessage("<br/>"._("SAISIE NON ENREGISTREE")."<br/>");
1360     $this->correct = false;
1361     return false;
1362 vpihour 2842 }
1363     else {
1364     $this->addToMessage(_("Le message a ete transmis au ".
1365     "referentiel ERP."));
1366     }
1367 fmichon 1005 }
1368 mlimic 936 }
1369 vpihour 3126 } // fin de if ($this->f->getParameter('option_erp') === 'true')
1370 nhaye 1643
1371     // Mise à jour des données du dossier d'autorisation
1372     require_once "../obj/dossier_autorisation.class.php";
1373 softime 2025 $da = new dossier_autorisation($this->getNumDemandeAutorFromDossier($this->valF['dossier']), $this->db, DEBUG);
1374 nhaye 2806 if($da->majDossierAutorisation() === false) {
1375 nhaye 2824 $this->addToMessage(_("Erreur lors de la mise a jour des donnees du dossier d'autorisation. Contactez votre administrateur."));
1376 nhaye 2806 $this->correct = false;
1377     return false;
1378     }
1379 fmichon 1540 }
1380 softime 2030
1381 fraynaud 129 function triggermodifierapres($id,&$db,$val,$DEBUG) {
1382 fmichon 1540 /**
1383     * L'objectif ici est d'effectuer les recalculs de date dans le dossier
1384     * si la date de l'evenement est modifiee
1385     */
1386     // Initialisation
1387     $valF = "";
1388 nhaye 2561 // Initialisation du type d'événement
1389     $type_evmt = "";
1390 fmichon 1540 // Récupération de l'action correspondante à l'événement
1391     $sql = "SELECT action
1392     FROM ".DB_PREFIXE."evenement
1393     WHERE evenement=".$this->valF['evenement'];
1394 fraynaud 129 $action = $db->getOne($sql);
1395 fmichon 1540 $this->addToLog("triggermodifierapres(): db->getone(\"".$sql."\");", VERBOSE_MODE);
1396     if (database::isError($action)) {
1397     die($action->getMessage());
1398     }
1399 nhaye 1564
1400 fmichon 1540 // Récupération des paramètres de l'action
1401     $sql = "SELECT * FROM ".DB_PREFIXE."action
1402     WHERE action='".$action."'";
1403 fraynaud 129 $res = $db->query($sql);
1404 fmichon 1540 $this->addToLog("triggermodifierapres(): db->query(\"".$sql."\");", VERBOSE_MODE);
1405     if (database::isError($res)) {
1406     die($res->getMessage());
1407     }
1408 fraynaud 129 while ($row=& $res->fetchRow(DB_FETCHMODE_ASSOC)){
1409     // application des regles sur le courrier + delai
1410 vpihour 1127 if(preg_match("/date_evenement/",$row['regle_date_limite'])){
1411 softime 2787 $valF['date_limite']= $this->regle($row['regle_date_limite'], 'regle_date_limite');
1412 fraynaud 129 }
1413 vpihour 1127 if(preg_match("/date_evenement/",$row['regle_date_complet'])){
1414 softime 2787 $valF['date_complet']= $this->regle($row['regle_date_complet'], 'regle_date_complet');
1415 fraynaud 129 }
1416 nhaye 1571 if(preg_match("/date_evenement/",$row['regle_date_dernier_depot'])){
1417 softime 2787 $valF['date_dernier_depot']= $this->regle($row['regle_date_dernier_depot'], 'regle_date_dernier_depot');
1418 nhaye 1571 }
1419 vpihour 1127 if(preg_match("/date_evenement/",$row['regle_date_notification_delai'])){
1420 softime 2787 $valF['date_notification_delai']= $this->regle($row['regle_date_notification_delai'], 'regle_date_notification_delai');
1421 fraynaud 129 }
1422 vpihour 1127 if(preg_match("/date_evenement/",$row['regle_date_decision'])){
1423 softime 2787 $valF['date_decision']= $this->regle($row['regle_date_decision'], 'regle_date_decision');
1424 fraynaud 129 }
1425 vpihour 1127 if(preg_match("/date_evenement/",$row['regle_date_rejet'])){
1426 softime 2787 $valF['date_rejet']= $this->regle($row['regle_date_rejet'], 'regle_date_rejet');
1427 fraynaud 129 }
1428 vpihour 1127 if(preg_match("/date_evenement/",$row['regle_date_validite'])){
1429 softime 2787 $valF['date_validite']= $this->regle($row['regle_date_validite'], 'regle_date_validite');
1430 fraynaud 129 }
1431 vpihour 1127 if(preg_match("/date_evenement/",$row['regle_date_chantier'])){
1432 softime 2787 $valF['date_chantier']= $this->regle($row['regle_date_chantier'], 'regle_date_chantier');
1433 fraynaud 129 }
1434 vpihour 1127 if(preg_match("/date_evenement/",$row['regle_date_achevement'])){
1435 softime 2787 $valF['date_achevement']= $this->regle($row['regle_date_achevement'], 'regle_date_achevement');
1436 fraynaud 129 }
1437 vpihour 1127 if(preg_match("/date_evenement/",$row['regle_date_conformite'])){
1438 softime 2787 $valF['date_conformite']= $this->regle($row['regle_date_conformite'], 'regle_date_conformite');
1439 fraynaud 129 }
1440 fmichon 1540 }
1441     // Si des valeurs ont été calculées alors on met à jour l'enregistrement
1442     if ($valF != "") {
1443     // On met à jour le dossier
1444     $cle = " dossier='".$this->valF['dossier']."'";
1445     $res1 = $db->autoExecute(DB_PREFIXE.'dossier', $valF, DB_AUTOQUERY_UPDATE, $cle);
1446 softime 2562 $this->addToLog("triggermodifierapres(): db->autoexecute(\"".DB_PREFIXE."dossier\", ".print_r($valF, true).", DB_AUTOQUERY_UPDATE, \"".$cle."\");", VERBOSE_MODE);
1447 fmichon 1540 if (database::isError($res1)) {
1448 fraynaud 129 die($res->getMessage());
1449 fmichon 1540 }
1450     // Affichage d'informations à l'utilisateur
1451     $this->addToMessage(_('enregistrement')." ".$this->valF['dossier']." "._('table')." dossier [".$db->affectedRows()." "._('enregistrement')." "._('mis_a_jour')."]");
1452 fraynaud 129 }
1453 nhaye 1299
1454 nhaye 2905 $restriction = $this->get_restriction($val['evenement']);
1455 vpihour 2920 $this->restriction_valid = $this->restrictionIsValid($restriction);
1456 nhaye 2905
1457 vpihour 2920 if($restriction == "" || $this->restriction_valid ){
1458 nhaye 2905 // Récupération de tous les paramètres de l'événement sélectionné
1459     $sql = "SELECT * FROM ".DB_PREFIXE."evenement
1460     WHERE evenement=".$this->valF['evenement'];
1461     $res = $db->query($sql);
1462     $this->addToLog("triggermodifierapres(): db->query(\"".$sql."\");", VERBOSE_MODE);
1463     if (database::isError($res)) {
1464     die($res->getMessage());
1465 softime 2562 }
1466 nhaye 2905 while ($row=& $res->fetchRow(DB_FETCHMODE_ASSOC)) {
1467     // Si la date de retour signature est éditée on vérifie si il existe un événement automatique
1468     if ($this->getVal('date_retour_signature') == "" AND
1469     $this->valF['date_retour_signature'] != "" AND
1470     $row['evenement_retour_signature'] != "") {
1471     $new_instruction = new instruction("]", $db, $DEBUG);
1472     // Création d'un tableau avec la liste des champs de l'instruction
1473     foreach($new_instruction->champs as $champ) {
1474     $valNewInstr[$champ] = "";
1475     }
1476     // Définition des valeurs de la nouvelle instruction
1477     $valNewInstr["evenement"] = $row['evenement_retour_signature'];
1478     $valNewInstr["destinataire"] = $this->valF['destinataire'];
1479     $valNewInstr["dossier"] = $this->valF['dossier'];
1480     $valNewInstr["date_evenement"] = $this->f->formatDate($this->valF['date_retour_signature']);
1481     $valNewInstr["date_envoi_signature"] = $this->f->formatDate($this->valF['date_envoi_signature']);
1482     $valNewInstr["date_retour_signature"] = $this->f->formatDate($this->valF['date_retour_signature']);
1483     $valNewInstr["date_envoi_rar"] = $this->f->formatDate($this->valF['date_envoi_rar']);
1484     $valNewInstr["date_retour_rar"] = $this->f->formatDate($this->valF['date_retour_rar']);
1485     $valNewInstr["date_envoi_controle_legalite"] = $this->f->formatDate($this->valF['date_envoi_controle_legalite']);
1486     $valNewInstr["date_retour_controle_legalite"] = $this->f->formatDate($this->valF['date_retour_controle_legalite']);
1487     $retour = $new_instruction->ajouter($valNewInstr,$db, $DEBUG);
1488    
1489 vpihour 2920 //Si une erreur s'est produite et qu'il s'agit d'un problème
1490     //de restriction
1491     if ($retour == false && !$new_instruction->restriction_valid){
1492     $this->msg .= $new_instruction->msg;
1493     $this->addToLog("triggermodifierapres() : evenement retour ".
1494     "instruction ".$this->valF[$this->clePrimaire]." : ".
1495     $new_instruction->msg);
1496     }
1497     //Si une erreur s'est produite après le test de la restriction
1498     elseif ($retour == false && $new_instruction->restriction_valid){
1499 nhaye 2905 $this->correct = false ;
1500     $this->msg .= $new_instruction->msg;
1501     return false;
1502     }
1503 softime 2562 }
1504 nhaye 2905 // Si la date de retour AR est éditée on vérifie si il existe un événement automatique
1505     if ($this->getVal('date_retour_rar') == "" AND
1506 nhaye 3061 $this->valF['date_retour_rar'] != "") {
1507    
1508     if($row['evenement_retour_ar'] != "") {
1509     $new_instruction = new instruction("]", $db, $DEBUG);
1510     // Création d'un tableau avec la liste des champs de l'instruction
1511     foreach($new_instruction->champs as $champ) {
1512     $valNewInstr[$champ] = "";
1513     }
1514     // Définition des valeurs de la nouvelle instruction
1515     $valNewInstr["evenement"] = $row['evenement_retour_ar'];
1516     $valNewInstr["destinataire"] = $this->valF['destinataire'];
1517     $valNewInstr["dossier"] = $this->valF['dossier'];
1518     $valNewInstr["date_evenement"] = $this->f->formatDate($this->valF['date_retour_rar']);
1519     $valNewInstr["date_envoi_signature"] = $this->f->formatDate($this->valF['date_envoi_signature']);
1520     $valNewInstr["date_retour_signature"] = $this->f->formatDate($this->valF['date_retour_signature']);
1521     $valNewInstr["date_envoi_rar"] = $this->f->formatDate($this->valF['date_envoi_rar']);
1522     $valNewInstr["date_retour_rar"] = $this->f->formatDate($this->valF['date_retour_rar']);
1523     $valNewInstr["date_envoi_controle_legalite"] = $this->f->formatDate($this->valF['date_envoi_controle_legalite']);
1524     $valNewInstr["date_retour_controle_legalite"] = $this->f->formatDate($this->valF['date_retour_controle_legalite']);
1525     $retour = $new_instruction->ajouter($valNewInstr,$db, $DEBUG);
1526    
1527     //Si une erreur s'est produite et qu'il s'agit d'un problème
1528     //de restriction
1529     if ($retour == false && !$new_instruction->restriction_valid){
1530     $this->msg .= $new_instruction->msg;
1531     $this->addToLog("triggermodifierapres() : evenement retour ".
1532     "instruction ".$this->valF[$this->clePrimaire]." : ".
1533     $new_instruction->msg);
1534     }
1535     //Si une erreur s'est produite après le test de la restriction
1536     elseif ($retour == false && $new_instruction->restriction_valid){
1537     $this->correct = false ;
1538     $this->msg .= $new_instruction->msg;
1539     return false;
1540     }
1541 nhaye 2905 }
1542 vpihour 3113 // Mise à jour du flag incomplet_notifie dans dossier si la
1543     // date limite d'instruction n'est pas dépassée
1544     if($row['type']=='incompletude' &&
1545 vpihour 3140 ($this->valF['archive_date_notification_delai'] >= $this->valF['date_retour_rar'] ||
1546     $this->valF['archive_date_notification_delai'] == "")) {
1547 nhaye 3059 $valFIncomp['incomplet_notifie'] = true;
1548     $cle = " dossier='".$val['dossier']."'";
1549 nhaye 3061 $resIncomp = $db->autoExecute(
1550 nhaye 3059 DB_PREFIXE.'dossier',
1551 nhaye 3061 $valFIncomp,
1552 nhaye 3059 DB_AUTOQUERY_UPDATE,
1553     $cle
1554     );
1555     $this->addToLog(
1556     "triggersupprimer(): db->autoexecute(\"".
1557 nhaye 3061 DB_PREFIXE."dossier\", ".print_r($valFIncomp, true).
1558 nhaye 3059 ", DB_AUTOQUERY_UPDATE, \"".$cle."\");",
1559     VERBOSE_MODE
1560     );
1561 nhaye 3061 if (database::isError($resIncomp)) {
1562     die($resIncomp->getMessage());
1563 nhaye 3059 }
1564     }
1565 vpihour 2829 }
1566 softime 2562 }
1567     }
1568    
1569 vpihour 2877 //Récupération du type de l'événement
1570     $sql = "SELECT type
1571     FROM ".DB_PREFIXE."evenement
1572     WHERE evenement=".$this->valF['evenement'];
1573     $type_evmt = $db->getOne($sql);
1574     $this->addToLog("triggermodifierapres(): db->getone(\"".$sql."\");", VERBOSE_MODE);
1575     if (database::isError($type_evmt)) {
1576     die($type_evmt->getMessage());
1577     }
1578    
1579 fmichon 1540 /**
1580     * REFERENTIEL ARRETE
1581     */
1582 nhaye 2561 // Si l'option référentiel arrêté est activé et l'événement est de type
1583     // arrêté
1584 vpihour 2877
1585 vpihour 3126 if ($this->f->getParameter('option_referentiel_arrete') === 'true' AND
1586 nhaye 2561 $type_evmt == "arrete") {
1587 fmichon 1540 if ($this->valF['date_retour_signature'] != $this->getVal('date_retour_signature')) {
1588     $msgenque = new MessageEnqueuer();
1589     $sqlArrete = "SELECT instruction.signataire_arrete as \"ws_DA_In_Signataire\",
1590     signataire_arrete.nom as \"ws_DA_In_Sign_Nom\",
1591     signataire_arrete.prenom as \"ws_DA_In_Sign_Prenom\",
1592     signataire_arrete.qualite as \"ws_DA_In_Sign_Qualite\",
1593     instruction.date_evenement as \"ws_DA_In_Dte_Redac\",
1594     '' as \"ws_DA_In_lieu_Redac\",
1595     instruction.dossier as \"ws_DA_In_N_Doss_DAS\",
1596     '' as \"ws_DA_In_Sigle\",
1597     instruction.etat as \"ws_DA_In_Decision\",
1598     dossier.date_depot as \"ws_DA_In_Dte_Depot_Dem\",
1599 nhaye 2561 dossier.terrain_adresse_voie_numero as \"ws_DA_In_N_Voie\",
1600 fmichon 1540 '' as \"ws_DA_In_Type_Voie\",
1601 softime 2061 dossier.terrain_adresse_voie as \"ws_DA_In_Adresse1\",
1602 fmichon 1540 dossier.terrain_adresse_lieu_dit as \"ws_DA_In_Adresse2\",
1603     dossier.terrain_adresse_code_postal as \"ws_DA_In_CP\",
1604     dossier.terrain_adresse_localite as \"ws_DA_In_Ville\",
1605     dossier.terrain_references_cadastrales as \"ws_DA_In_Nb_Parcelle\",
1606     '' as \"ws_DA_In_Detail_Parcelle\",
1607     CONCAT(donnees_techniques.am_projet_desc,' ',donnees_techniques.co_projet_desc) as \"ws_DA_In_Nature_Trvx\",
1608     '' as \"ws_DA_In_Destination_Trvx\",
1609     dossier_autorisation_type_detaille.code as \"ws_DA_In_Type_Dos_Autoris\",
1610     COALESCE(particulier_nom,personne_morale_raison_sociale) as \"ws_DA_In_Nom_Petition\",
1611     COALESCE(particulier_prenom, personne_morale_denomination) as \"ws_DA_In_Prenom_Petition\",
1612     '' as \"ws_DA_In_Piece_GED\",
1613     instruction.date_retour_signature as \"ws_DA_In_Dte_Signature\"
1614     FROM ".DB_PREFIXE."instruction
1615     LEFT JOIN ".DB_PREFIXE."signataire_arrete ON
1616     instruction.signataire_arrete = signataire_arrete.signataire_arrete
1617     LEFT JOIN ".DB_PREFIXE."dossier ON
1618     instruction.dossier = dossier.dossier
1619     LEFT JOIN ".DB_PREFIXE."lien_dossier_demandeur ON
1620     lien_dossier_demandeur.dossier = dossier.dossier
1621     LEFT JOIN ".DB_PREFIXE."demandeur ON
1622     lien_dossier_demandeur.demandeur = demandeur.demandeur
1623     LEFT JOIN ".DB_PREFIXE."dossier_instruction_type ON
1624     dossier.dossier_instruction_type = dossier_instruction_type.dossier_instruction_type
1625     LEFT JOIN ".DB_PREFIXE."dossier_autorisation_type_detaille ON
1626     dossier_instruction_type.dossier_autorisation_type_detaille =
1627     dossier_autorisation_type_detaille.dossier_autorisation_type_detaille
1628     LEFT JOIN ".DB_PREFIXE."donnees_techniques ON
1629     donnees_techniques.dossier_instruction = dossier.dossier
1630     WHERE instruction.instruction = ".$this->valF['instruction'];
1631     $resArrete = $this->db->query($sqlArrete);
1632 softime 2562 $this->f->addToLog("triggermodifierapres(): db->query(\"".$sqlArrete."\");", VERBOSE_MODE);
1633 vpihour 1777 if ( database::isError($resArrete)){
1634     die();
1635     }
1636 fmichon 1540
1637     $rowArrete = $resArrete->fetchRow(DB_FETCHMODE_ASSOC);
1638     $msgenque->setArreteInfo($rowArrete);
1639 vpihour 2842 $return = $msgenque->enqueueMessage($msgenque::$ARRETE_ENVOI);
1640     //Si une erreur s'est produite on arrête le traitement et on
1641     //retourne une erreur
1642     if ($return !== 0){
1643    
1644 vpihour 2877 //On supprime les messages précédents
1645     $this->msg = '';
1646 vpihour 2842 $this->addToMessage(_("Une erreur s'est produite lors de ".
1647     "l'envoi du message au referentiel arrêté. Merci de ".
1648 vpihour 2877 "contacter votre administrateur."));
1649 vpihour 2842 //On ne valide pas le formulaire
1650 vpihour 2877 $this->addToMessage("<br/>"._("SAISIE NON ENREGISTREE")."<br/>");
1651     $this->correct = false;
1652     return false;
1653 vpihour 2842 }
1654     else {
1655     $this->addToMessage(_("Le message a ete transmis au ".
1656     "referentiel arrêté."));
1657     }
1658 fmichon 1540 }
1659 nhaye 1299 }
1660 nhaye 1643
1661     // Mise à jour des données du dossier d'autorisation
1662     require_once "../obj/dossier_autorisation.class.php";
1663 softime 2025 $da = new dossier_autorisation($this->getNumDemandeAutorFromDossier($this->valF['dossier']), $this->db, DEBUG);
1664 nhaye 2806 if($da->majDossierAutorisation() === false) {
1665 nhaye 2824 $this->addToMessage(_("Erreur lors de la mise a jour des donnees du dossier d'autorisation. Contactez votre administrateur."));
1666 nhaye 2806 $this->correct = false;
1667     return false;
1668     }
1669 fraynaud 129 }
1670    
1671 fraynaud 20 function triggersupprimer($id,&$db,$val,$DEBUG) {
1672 fmichon 1540 /**
1673     * L'objectif ici est de repositionner les valeurs récupérées en
1674     * archive dans le dossier d'instruction avant de supprimer l'événement
1675     * d'instruction
1676     */
1677 vpihour 2603
1678     // Mise à jour des 4 valeurs modifiées par l'action
1679     $valF['delai'] = $val['archive_delai'];
1680     $valF['accord_tacite'] = $val['archive_accord_tacite'];
1681     $valF['etat'] = $val['archive_etat'];
1682     if ($val['archive_avis'] != '') {
1683     $valF['avis_decision'] = $val['archive_avis'];
1684     } else {
1685     $valF['avis_decision'] = NULL;
1686     }
1687     // Mise à jour des 10 dates avec la valeur présente dans le formulaire
1688     // de suppression. Si la valeur de la date est vide alors on fixe
1689     // à la valeur NULL
1690     //
1691     if ($val['archive_date_complet'] != '') {
1692     $valF['date_complet'] = $val['archive_date_complet'];
1693     } else {
1694     $valF['date_complet'] = NULL;
1695     }
1696     if ($val['archive_date_dernier_depot'] != '') {
1697     $valF['date_dernier_depot'] = $val['archive_date_dernier_depot'];
1698     } else {
1699     $valF['date_dernier_depot'] = NULL;
1700     }
1701     if ($val['archive_date_rejet'] != '') {
1702     $valF['date_rejet'] = $val['archive_date_rejet'];
1703     } else {
1704     $valF['date_rejet'] = NULL;
1705     }
1706     if ($val['archive_date_limite'] != '') {
1707     $valF['date_limite'] = $val['archive_date_limite'];
1708     } else {
1709     $valF['date_limite'] = NULL;
1710     }
1711     if ($val['archive_date_notification_delai'] != '') {
1712     $valF['date_notification_delai'] = $val['archive_date_notification_delai'];
1713     } else {
1714     $valF['date_notification_delai'] = NULL;
1715     }
1716     if ($val['archive_date_decision'] != '') {
1717     $valF['date_decision'] = $val['archive_date_decision'];
1718     } else {
1719     $valF['date_decision'] = NULL;
1720     }
1721     if ($val['archive_date_validite'] != '') {
1722     $valF['date_validite'] = $val['archive_date_validite'];
1723     } else {
1724     $valF['date_validite'] = NULL;
1725     }
1726     if ($val['archive_date_achevement'] != '') {
1727     $valF['date_achevement'] = $val['archive_date_achevement'];
1728     } else {
1729     $valF['date_achevement'] = NULL;
1730     }
1731     if ($val['archive_date_chantier'] != '') {
1732     $valF['date_chantier'] = $val['archive_date_chantier'];
1733     } else {
1734     $valF['date_chantier'] = NULL;
1735     }
1736     if ($val['archive_date_conformite'] != '') {
1737     $valF['date_conformite'] = $val['archive_date_conformite'];
1738     } else {
1739     $valF['date_conformite'] = NULL;
1740     }
1741     if ($val['archive_incompletude'] != '') {
1742     $valF['incompletude'] = $val['archive_incompletude'];
1743     } else {
1744     $valF['incompletude'] = NULL;
1745     }
1746 nhaye 3059 if ($val['archive_incomplet_notifie'] != '') {
1747     $valF['incomplet_notifie'] = $val['archive_incomplet_notifie'];
1748     } else {
1749     $valF['incomplet_notifie'] = NULL;
1750     }
1751 vpihour 2603 if ($val['archive_evenement_suivant_tacite'] != '') {
1752     $valF['evenement_suivant_tacite'] = $val['archive_evenement_suivant_tacite'];
1753     } else {
1754     $valF['evenement_suivant_tacite'] = NULL;
1755     }
1756     if ($val['archive_evenement_suivant_tacite_incompletude'] != '') {
1757     $valF['evenement_suivant_tacite_incompletude'] = $val['archive_evenement_suivant_tacite_incompletude'];
1758     } else {
1759     $valF['evenement_suivant_tacite_incompletude'] = NULL;
1760     }
1761     if ($val['archive_etat_pendant_incompletude'] != '') {
1762     $valF['etat_pendant_incompletude'] = $val['archive_etat_pendant_incompletude'];
1763     } else {
1764     $valF['etat_pendant_incompletude'] = NULL;
1765     }
1766     if ($val['archive_date_limite_incompletude'] != '') {
1767     $valF['date_limite_incompletude'] = $val['archive_date_limite_incompletude'];
1768     } else {
1769     $valF['date_limite_incompletude'] = NULL;
1770     }
1771     if ($val['archive_delai_incompletude'] != '') {
1772     $valF['delai_incompletude'] = $val['archive_delai_incompletude'];
1773     } else {
1774     $valF['delai_incompletude'] = NULL;
1775     }
1776     if ($val['archive_autorite_competente'] != '') {
1777     $valF['autorite_competente'] = $val['archive_autorite_competente'];
1778     } else {
1779     $valF['autorite_competente'] = NULL;
1780     }
1781     // On met à jour le dossier
1782     $cle = " dossier='".$val['dossier']."'";
1783     $res = $db->autoExecute(DB_PREFIXE.'dossier', $valF, DB_AUTOQUERY_UPDATE, $cle);
1784     $this->addToLog("triggersupprimer(): db->autoexecute(\"".DB_PREFIXE."dossier\", ".print_r($valF, true).", DB_AUTOQUERY_UPDATE, \"".$cle."\");", VERBOSE_MODE);
1785     if (database::isError($res)) {
1786     die($res->getMessage());
1787     }
1788     // Affichage d'informations à l'utilisateur
1789     $this->addToMessage(_("Suppression de l'instruction")." [".$db->affectedRows()." "._('enregistrement')." "._('mis_a_jour')."]");
1790    
1791     // Mise à jour de la demande si un récépissé d'instruction correspond à l'instruction à supprimer
1792 fraynaud 20 }
1793 fmichon 1540
1794 nhaye 1643 function triggersupprimerapres($id,&$db,$val,$DEBUG) {
1795    
1796     // Mise à jour des données du dossier d'autorisation
1797     require_once "../obj/dossier_autorisation.class.php";
1798 softime 2025 $da = new dossier_autorisation($this->getNumDemandeAutorFromDossier($val["dossier"]), $this->db, DEBUG);
1799 nhaye 2806 if($da->majDossierAutorisation() === false) {
1800 nhaye 2824 $this->addToMessage(_("Erreur lors de la mise a jour des donnees du dossier d'autorisation. Contactez votre administrateur."));
1801 nhaye 2806 $this->correct = false;
1802     return false;
1803     }
1804 nhaye 1643 }
1805    
1806 vpihour 1137 // Vérifie la restriction sur l'événement
1807     function verifier($val = array(), &$db, $DEBUG){
1808 nhaye 1186 parent::verifier($val, $db, $DEBUG);
1809 vpihour 1784
1810     if ( isset($val['evenement']) && is_numeric($val['evenement'])){
1811 nhaye 2905 $restriction = $this->get_restriction($val['evenement']);
1812 vpihour 1784
1813     //Test qu'une restriction est présente
1814 nhaye 2905 if ($restriction != "" ){
1815 vpihour 1137
1816 vpihour 1784 //Test si la restriction est valide
1817 vpihour 2920 $this->restriction_valid = $this->restrictionIsValid($restriction);
1818     if ( !$this->restriction_valid ){
1819 vpihour 1784
1820     $this->addToMessage(_("Restriction non valide"));
1821 vpihour 2920 $this->correct = false;
1822     return false;
1823 vpihour 1784 }
1824 softime 2305
1825     // Liste des opérateurs possible
1826     $operateurs = array(">=", "<=", "+", "-");
1827    
1828     // Supprime tous les espaces de la chaîne de caractère
1829     $restriction = str_replace(' ', '', $restriction);
1830    
1831     // Met des espace avant et après les opérateurs puis transforme la
1832     // chaine en un tableau
1833     $tabRestriction = str_replace($operateurs, " ", $restriction);
1834     // Tableau des champ
1835     $tabRestriction = explode(" ", $tabRestriction);
1836     // Supprime les numériques du tableau
1837     foreach ($tabRestriction as $key => $value) {
1838     if (is_numeric($value)) {
1839     unset($tabRestriction[$key]);
1840     }
1841     }
1842    
1843     // Vérifie les champs utilisés pour la restriction
1844     $check_field_exist = $this->f->check_field_exist($tabRestriction, 'instruction');
1845     if ($check_field_exist !== true) {
1846    
1847     // Liste des champs en erreur
1848     $string_error_fields = implode(", ", $check_field_exist);
1849    
1850     // Message d'erreur
1851     $error_message = _("Le champ %s n'est pas utilisable pour le champ %s");
1852     if (count($check_field_exist) > 1) {
1853     $error_message = _("Les champs %s ne sont pas utilisable pour le champ %s");
1854     }
1855    
1856     // Affiche l'erreur
1857     $this->correct=false;
1858     $this->addToMessage(sprintf($error_message, $string_error_fields, _("restriction")));
1859     $this->addToMessage(_("Veuillez contacter votre administrateur."));
1860     }
1861 vpihour 1137 }
1862 softime 2305
1863 vpihour 1137 }
1864 nhaye 2412 if(!$this->updateDate("date_envoi_signature")) {
1865     return false;
1866     }
1867     if(!$this->updateDate("date_retour_signature")) {
1868     return false;
1869     }
1870     if(!$this->updateDate("date_envoi_rar")) {
1871     return false;
1872     }
1873     if(!$this->updateDate("date_retour_rar")) {
1874     return false;
1875     }
1876     if(!$this->updateDate("date_envoi_controle_legalite")) {
1877     return false;
1878     }
1879     if(!$this->updateDate("date_retour_controle_legalite")) {
1880     return false;
1881     }
1882 vpihour 1921
1883 vpihour 1137 }
1884 vpihour 1284
1885 nhaye 1724 /**
1886     * Méthode permettant de récupérer toutes les valeurs de l'événement
1887     * sélectionné après validation du formulaire d'instruction
1888     *
1889     * @return array() veleurs de l'événement lié
1890     */
1891    
1892     private function getValEvenement() {
1893     if(!empty($this->valEvenement)) {
1894     return $this->valEvenement;
1895     } else {
1896     $sql = "SELECT * FROM ".DB_PREFIXE."evenement
1897     WHERE evenement=".$this->valF['evenement'];
1898     $res = $this->db->query($sql);
1899     $this->addToLog("getValEvenement(): db->query(\"".$sql."\");", VERBOSE_MODE);
1900     if (database::isError($res)) {
1901     die($res->getMessage());
1902     }
1903     $this->valEvenement = $res->fetchRow(DB_FETCHMODE_ASSOC);
1904     return $this->valEvenement;
1905     }
1906     }
1907    
1908     /**
1909     * Méthode permettant de savoir si le dossier lié à l'instruction à le flag
1910     * incompletude à true après validation du formulaire d'instruction
1911     *
1912     * @return boolean
1913     */
1914     private function dossierIncomplet() {
1915     $sql = "SELECT incompletude FROM ".DB_PREFIXE."dossier
1916     WHERE dossier='".$this->valF['dossier']."'";
1917     $incompletude = $this->db->getOne($sql);
1918     $this->addToLog("dossierIncomplet(): db->query(\"".$sql."\");", VERBOSE_MODE);
1919     if (database::isError($incompletude)) {
1920     die($incompletude->getMessage());
1921     }
1922     if ($incompletude == 't') {
1923     return true;
1924     } else {
1925     return false;
1926     }
1927     }
1928 vpihour 1921
1929     /**
1930 nhaye 1949 * Finalisation des documents.
1931     * @param string $champ champ du fichier à finaliser
1932     * @param booleen $status permet de définir si on finalise ou définalise
1933     * @param string $sousform permet de savoir si se trouve dans un sousformulaire (passé au javascript)
1934 vpihour 1921 */
1935 vpihour 1986 function finaliser( $champ = '', $status, $sousform, $retourformulaire){
1936 vpihour 3027
1937    
1938     // Recuperation de la valeur de la cle primaire de l'objet
1939     if($this->getVal($this->clePrimaire) != '')
1940     $id = $this->getVal($this->clePrimaire);
1941     else
1942     $id=$this->id;
1943    
1944 vpihour 1921 //Si on finalise le document
1945     if ( $status == 1 ){
1946    
1947     //Génération du PDF
1948     $_GET['output'] = "string";
1949     $f = $this->f;
1950     include '../app/pdf_instruction.php';
1951    
1952     //Métadonnées du document
1953     $metadata = array(
1954 vpihour 1927 'filename' => 'instruction_'.$idx.'.pdf',
1955 vpihour 1921 'mimetype' => 'application/pdf',
1956     'size' => strlen($pdf_output)
1957     );
1958    
1959 nhaye 1928 // Récupération des métadonnées calculées après validation
1960 nhaye 1938 $spe_metadata = $this->getMetadata("om_fichier_instruction");
1961 nhaye 1928
1962 vpihour 3025 //On vérifie si l'instruction à finaliser a un événement de type arrete
1963     $sql = "SELECT type
1964     FROM ".DB_PREFIXE."evenement
1965     WHERE evenement = ".$this->getVal("evenement");
1966     $typeEvenement = $this->db->getOne($sql);
1967     $this->addToLog("getTitle(): db->getOne(\"".$sql."\");", VERBOSE_MODE);
1968     if (database::isError($typeEvenement)) {
1969     die();
1970     }
1971    
1972     //Initialisation de la variable
1973     $arrete_metadata = array();
1974     // Si l'événement est de type arrete, on ajoute les métadonnées spécifiques
1975     if ( $typeEvenement === 'arrete' ){
1976     $arrete_metadata = $this->getMetadata("arrete");
1977     }
1978    
1979     $metadata = array_merge($metadata, $spe_metadata, $arrete_metadata);
1980 vpihour 1921 //Si le document a déjà été finalisé
1981     //on met à jour le document mais pas son uid
1982 vpihour 1927 if ( $this->getVal("om_fichier_instruction") != '' ){
1983     $uid = $this->f->storage->update(
1984     $this->getVal("om_fichier_instruction"), $pdf_output, $metadata);
1985 vpihour 1921 }
1986     //Sinon, on joute le document et on récupère son uid
1987     else {
1988     //Stockage du PDF
1989     $uid = $this->f->storage->create($pdf_output, $metadata);
1990     }
1991     }
1992     else {
1993     //Récupération de l'uid du document finalisé
1994 vpihour 1927 $uid = $this->getVal("om_fichier_instruction");
1995 vpihour 1921
1996     //On dé-finalise avant de finaliser
1997 vpihour 2603 if ( $uid == '' || $uid == 'OP_FAILURE' ){
1998 vpihour 3027
1999     // Message d'echec (saut d'une ligne supplementaire avant le
2000     // message pour qu'il soit mis en evidence)
2001     $this->addToLog(
2002     _("Finalisation non enregistree")." - ".
2003     _("id instruction")." = ".$id." - ".
2004     _("uid fichier")." = ".$uid
2005     );
2006 vpihour 1921 return -1;
2007     }
2008     }
2009 vpihour 3027
2010 vpihour 1921 //Mise à jour des données
2011 vpihour 2789 if ( $uid != '' && $uid != 'OP_FAILURE' ){
2012 vpihour 1921 // Logger
2013 vpihour 1927 $this->addToLog("finaliser() - begin", EXTRA_VERBOSE_MODE);
2014 vpihour 1986
2015     $actions = array();
2016 vpihour 1921 //Tableau contenant le lien vers le PDF et lien du portlet pour la mise
2017     //à jour de l'interface
2018     if ( $status == 0 ){
2019     $lien = '../app/pdf_instruction.php?idx='.$id;
2020 vpihour 1986
2021     //Ajout des actions
2022     //Si l'utilisateur a le droit de modifier l'objet
2023     if ( $this->f->isAccredited('instruction') ||
2024     $this->f->isAccredited('instruction_modifier') ){
2025    
2026     $actions["modifier"] = ($sousform!='')?
2027     '<li><a href="#" onclick="ajaxIt(\'instruction\',
2028     \'../scr/sousform.php?obj=instruction&amp;action=1&amp;idx='.
2029     $this->getVal($this->clePrimaire).
2030     '&amp;premiersf=0&amp;trisf=&amp;retourformulaire='.$retourformulaire.'&amp;idxformulaire='.
2031     $this->getVal("dossier").
2032     '&amp;retour=form\');">
2033     <span class="om-prev-icon om-icon-16 edit-16" title="'.
2034     _('Modifier').'">'.
2035     _('Modifier').
2036     '</span></a></li>':
2037     '<li>
2038     <a href="form.php?obj=instruction&amp;action=1'.'&amp;idx='.
2039     $this->getVal($this->clePrimaire).
2040     '&amp;premier=&amp;advs_id=&amp;recherche=&amp;tricol=&amp;selectioncol=&amp;valide=&amp;retour=form">
2041     <span class="om-prev-icon om-icon-16 edit-16" title="'.
2042     _('Modifier').'">'.
2043     _('Modifier').
2044     '</span></a></li>';
2045     }
2046 softime 1994 //Si l'utilisateur a le droit de supprimer l'objet
2047 vpihour 1986 if ( $this->f->isAccredited('instruction') ||
2048     $this->f->isAccredited('instruction_supprimer') ){
2049    
2050     $actions["supprimer"] = ($sousform!='')?
2051     '<li><a href="#" onclick="ajaxIt(\'instruction\',
2052     \'../scr/sousform.php?obj=instruction&amp;action=2&amp;idx='.
2053     $this->getVal($this->clePrimaire).
2054     '&amp;premiersf=0&amp;trisf=&amp;retourformulaire='.$retourformulaire.'&amp;idxformulaire='.
2055     $this->getVal("dossier").
2056     '&amp;retour=form\');">
2057     <span class="om-prev-icon om-icon-16 delete-16" title="'.
2058     _('Supprimer').'">'.
2059     _('Supprimer').
2060     '</span></a></li>':
2061     '<li>
2062     <a href="form.php?obj=instruction&amp;action=1'.'&amp;idx='.
2063     $this->getVal($this->clePrimaire).
2064     '&amp;premier=&amp;advs_id=&amp;recherche=&amp;tricol=&amp;selectioncol=&amp;valide=&amp;retour=form">
2065     <span class="om-prev-icon om-icon-16 delete-16" title="'.
2066     _('Supprimer').'">'.
2067     _('Supprimer').
2068     '</span></a></li>';
2069     }
2070 vpihour 1921 }
2071     else {
2072     $lien = '../spg/file.php?obj=instruction&'.
2073     'champ=om_fichier_instruction&id='.$id;
2074     }
2075    
2076     $retour = array(
2077     "portlet"=> "<a href=\"#\" onclick=\"finalizeDocument(".
2078     $id.", 'instruction', '".$sousform."', ".(($status==0)?1:0).")\">
2079 vpihour 1986 <span class=\"om-prev-icon om-icon-16 om-icon-fix "
2080 vpihour 1921 .(($status==1)?"de":"")."finalise\" title=\"".
2081     (($status==1)?_("Reprendre la redaction du document"):_("Finaliser le document"))."\">".
2082     (($status==1)?_("Reprendre la redaction du document"):_("Finaliser le document"))."</span>
2083     </a>",
2084 vpihour 1986 "pdf" => $lien,
2085     "actions" => $actions
2086 vpihour 1921 );
2087    
2088     foreach ( $this->champs as $key=>$value )
2089     $val[$value] = $this->val[$key];
2090     $val['date_evenement']=$this->dateDBToForm($val['date_evenement']);
2091     $val['archive_date_complet']=$this->dateDBToForm($val['archive_date_complet']);
2092     $val['archive_date_rejet']=$this->dateDBToForm($val['archive_date_rejet']);
2093     $val['archive_date_limite']=$this->dateDBToForm($val['archive_date_limite']);
2094     $val['archive_date_notification_delai']=$this->dateDBToForm($val['archive_date_notification_delai']);
2095     $val['archive_date_decision']=$this->dateDBToForm($val['archive_date_decision']);
2096     $val['archive_date_validite']=$this->dateDBToForm($val['archive_date_validite']);
2097     $val['archive_date_achevement']=$this->dateDBToForm($val['archive_date_achevement']);
2098     $val['archive_date_chantier']=$this->dateDBToForm($val['archive_date_chantier']);
2099     $val['archive_date_conformite']=$this->dateDBToForm($val['archive_date_conformite']);
2100     $val['archive_date_dernier_depot']=$this->dateDBToForm($val['archive_date_dernier_depot']);
2101     $val['archive_date_limite_incompletude']=$this->dateDBToForm($val['archive_date_limite_incompletude']);
2102     $val['date_finalisation_courrier']=$this->dateDBToForm($val['date_finalisation_courrier']);
2103     $val['date_envoi_signature']=$this->dateDBToForm($val['date_envoi_signature']);
2104     $val['date_retour_signature']=$this->dateDBToForm($val['date_retour_signature']);
2105     $val['date_envoi_rar']=$this->dateDBToForm($val['date_envoi_rar']);
2106     $val['date_retour_rar']=$this->dateDBToForm($val['date_retour_rar']);
2107     $val['date_envoi_controle_legalite']=$this->dateDBToForm($val['date_envoi_controle_legalite']);
2108     $val['date_retour_controle_legalite']=$this->dateDBToForm($val['date_retour_controle_legalite']);
2109    
2110     $this->setvalF($val);
2111    
2112     // Verification de la validite des donnees
2113     $this->verifier($this->val, $this->db, DEBUG);
2114     // Verification du verrou
2115     $this->testverrou();
2116     // Si les verifications precedentes sont correctes, on procede a
2117     // la modification, sinon on ne fait rien et on retourne une erreur
2118     if ($this->correct) {
2119     // Execution du trigger 'before' specifique au MODE 'update'
2120     $this->triggermodifier( $id, $this->db, $this->val, DEBUG);
2121     $valF = array(
2122     "om_final_instruction"=> ($status==1)?TRUE:FALSE,
2123 vpihour 1966 "om_fichier_instruction"=>$uid,
2124     "date_finalisation_courrier"=>date('Y-m-d'));
2125 vpihour 1921 // Execution de la requête de modification des donnees de l'attribut
2126     // valF de l'objet dans l'attribut table de l'objet
2127     $res = $this->db->autoExecute(DB_PREFIXE.$this->table, $valF,
2128     DB_AUTOQUERY_UPDATE, $this->getCle($id));
2129 vpihour 1927 $this->addToLog("finaliser() : db->autoExecute(\"".DB_PREFIXE.$this->table."\", ".print_r($valF, true).", DB_AUTOQUERY_UPDATE, \"".$this->getCle($id)."\")", VERBOSE_MODE);
2130 vpihour 1921 // Si une erreur survient
2131     if (database::isError($res)) {
2132     // Appel de la methode de recuperation des erreurs
2133     $this->erreur_db($res->getDebugInfo(), $res->getMessage(), '');
2134     } else {
2135     // Log
2136     $this->addToLog(_("Requete executee"), VERBOSE_MODE);
2137     // Log
2138     $message = _("Enregistrement")."&nbsp;".$id."&nbsp;";
2139     $message .= _("de la table")."&nbsp;\"".$this->table."\"&nbsp;";
2140     $message .= "[&nbsp;".$this->db->affectedRows()."&nbsp;";
2141     $message .= _("enregistrement(s) mis a jour")."&nbsp;]";
2142     $this->addToLog($message, VERBOSE_MODE);
2143     // Mise en place du verrou pour ne pas finaliser plusieurs fois
2144     // le meme document
2145     $this->verrouille();
2146     // Execution du trigger 'after' specifique au MODE 'update'
2147     //$this->triggermodifierapres($id, $this->db, $val, DEBUG);
2148    
2149     return $retour;
2150     }
2151     } else {
2152     // Message d'echec (saut d'une ligne supplementaire avant le
2153     // message pour qu'il soit mis en evidence)
2154 nhaye 3021 $this->addToLog(
2155     _("Finalisation non enregistree")." - ".
2156     _("id instruction")." = ".$id." - ".
2157     _("uid fichier")." = ".$uid
2158     );
2159 vpihour 1921 return -1;
2160     }
2161     }
2162     // Si le document n'a pas été stocké
2163     else{
2164 nhaye 3021 $this->addToLog(
2165     _("Finalisation non enregistree")." - ".
2166     _("id instruction")." = ".$id." - ".
2167     _("uid fichier")." = ".$uid
2168     );
2169 vpihour 1921 return -1;
2170     }
2171     }
2172 vpihour 1927
2173     /**
2174 nhaye 1928 * Récupération du numéro de dossier d'instruction à ajouter aux métadonnées
2175 nhaye 1949 * @return string numéro de dossier d'instruction
2176 nhaye 1928 */
2177     protected function getDossier() {
2178     if(empty($this->specificMetadata)) {
2179     $this->getSpecificMetadata();
2180     }
2181     return $this->specificMetadata->dossier;
2182     }
2183     /**
2184 softime 2016 * Récupération la version du dossier d'instruction à ajouter aux métadonnées
2185     * @return int Version
2186     */
2187     protected function getDossierVersion() {
2188     if(empty($this->specificMetadata)) {
2189     $this->getSpecificMetadata();
2190     }
2191     return $this->specificMetadata->version;
2192     }
2193     /**
2194 nhaye 1928 * Récupération du numéro de dossier d'autorisation à ajouter aux métadonnées
2195 nhaye 1949 * @return string numéro de dossier d'autorisation
2196 nhaye 1928 */
2197 softime 2025 protected function getNumDemandeAutor() {
2198 nhaye 1928 if(empty($this->specificMetadata)) {
2199     $this->getSpecificMetadata();
2200     }
2201     return $this->specificMetadata->dossier_autorisation;
2202     }
2203     /**
2204     * Récupération de la date de demande initiale du dossier à ajouter aux métadonnées
2205 nhaye 1949 * @return date de la demande initiale
2206 nhaye 1928 */
2207 softime 2025 protected function getAnneemoisDemandeAutor() {
2208 nhaye 1928 if(empty($this->specificMetadata)) {
2209     $this->getSpecificMetadata();
2210     }
2211     return $this->specificMetadata->date_demande_initiale;
2212     }
2213     /**
2214     * Récupération du type de dossier d'instruction à ajouter aux métadonnées
2215 nhaye 1949 * @return string type du dossier d'instruction
2216 nhaye 1928 */
2217 softime 2025 protected function getTypeInstruction() {
2218 nhaye 1928 if(empty($this->specificMetadata)) {
2219     $this->getSpecificMetadata();
2220     }
2221     return $this->specificMetadata->dossier_instruction_type;
2222     }
2223     /**
2224     * Récupération du statut du dossier d'autorisation à ajouter aux métadonnées
2225 nhaye 1949 * @return string avis
2226 nhaye 1928 */
2227 softime 2025 protected function getStatutAutorisation() {
2228 nhaye 1928 if(empty($this->specificMetadata)) {
2229     $this->getSpecificMetadata();
2230     }
2231     return $this->specificMetadata->statut;
2232     }
2233     /**
2234     * Récupération du type de dossier d'autorisation à ajouter aux métadonnées
2235 nhaye 1949 * @return string type du dossier d'autorisation
2236 nhaye 1928 */
2237 softime 2025 protected function getTypeAutorisation() {
2238 nhaye 1928 if(empty($this->specificMetadata)) {
2239     $this->getSpecificMetadata();
2240     }
2241     return $this->specificMetadata->dossier_autorisation_type;
2242     }
2243     /**
2244     * Récupération de la date d'ajout de document à ajouter aux métadonnées
2245 nhaye 1949 * @return date de l'évènement
2246 nhaye 1928 */
2247 softime 2025 protected function getDateEvenementDocument() {
2248 softime 2046 return date("Y-m-d");
2249 nhaye 1928 }
2250     /**
2251     * Récupération du groupe d'instruction à ajouter aux métadonnées
2252     * @return string Groupe d'instruction
2253     */
2254     protected function getGroupeInstruction() {
2255     if(empty($this->specificMetadata)) {
2256     $this->getSpecificMetadata();
2257     }
2258     return $this->specificMetadata->groupe_instruction;
2259     }
2260 softime 2002 /**
2261     * Récupération du libellé du type du document à ajouter aux métadonnées
2262     * @return string Groupe d'instruction
2263     */
2264 softime 2025 protected function getTitle() {
2265 nhaye 1928
2266 softime 2002 // Récupère le champ événement
2267     if (isset($this->valF["evenement"]) AND $this->valF["evenement"] != "") {
2268     $evenement = $this->valF["evenement"];
2269     } else {
2270     $evenement = $this->getVal("evenement");
2271     }
2272    
2273     // Requête sql
2274     $sql = "SELECT libelle FROM ".DB_PREFIXE."evenement
2275     WHERE evenement=".$evenement;
2276     $evenement_libelle = $this->db->getOne($sql);
2277 softime 2025 $this->addToLog("getTitle(): db->getOne(\"".$sql."\");", VERBOSE_MODE);
2278 softime 2002 if (database::isError($evenement_libelle)) {
2279     die();
2280     }
2281    
2282     // Retourne le libelle de l'événement
2283     return $evenement_libelle;
2284     }
2285    
2286 nhaye 1928 /**
2287     * Cette méthode permet de stocker en attribut toutes les métadonnées
2288     * nécessaire à l'ajout d'un document.
2289     */
2290     public function getSpecificMetadata() {
2291     if (isset($this->valF["dossier"]) AND $this->valF["dossier"] != "") {
2292     $dossier = $this->valF["dossier"];
2293     } else {
2294     $dossier = $this->getVal("dossier");
2295     }
2296     //Requête pour récupérer les informations essentiels sur le dossier d'instruction
2297     $sql = "SELECT dossier.dossier as dossier,
2298     dossier_autorisation.dossier_autorisation as dossier_autorisation,
2299     to_char(dossier.date_demande, 'YYYY/MM') as date_demande_initiale,
2300     dossier_instruction_type.code as dossier_instruction_type,
2301     etat_dossier_autorisation.libelle as statut,
2302     dossier_autorisation_type.code as dossier_autorisation_type,
2303     groupe.code as groupe_instruction
2304     FROM ".DB_PREFIXE."dossier
2305     LEFT JOIN ".DB_PREFIXE."dossier_instruction_type
2306     ON dossier.dossier_instruction_type = dossier_instruction_type.dossier_instruction_type
2307     LEFT JOIN ".DB_PREFIXE."dossier_autorisation
2308     ON dossier.dossier_autorisation = dossier_autorisation.dossier_autorisation
2309     LEFT JOIN ".DB_PREFIXE."etat_dossier_autorisation
2310     ON dossier_autorisation.etat_dossier_autorisation = etat_dossier_autorisation.etat_dossier_autorisation
2311     LEFT JOIN ".DB_PREFIXE."dossier_autorisation_type_detaille
2312     ON dossier_autorisation.dossier_autorisation_type_detaille = dossier_autorisation_type_detaille.dossier_autorisation_type_detaille
2313     LEFT JOIN ".DB_PREFIXE."dossier_autorisation_type
2314     ON dossier_autorisation_type_detaille.dossier_autorisation_type = dossier_autorisation_type.dossier_autorisation_type
2315     LEFT JOIN ".DB_PREFIXE."groupe
2316     ON dossier_autorisation_type.groupe = groupe.groupe
2317     WHERE dossier.dossier = '".$dossier."'";
2318     $res = $this->db->query($sql);
2319 softime 2030 $this->f->addToLog("getSpecificMetadata() : db->query(".$sql.")", VERBOSE_MODE);
2320 nhaye 1928 if ( database::isError($res)){
2321     die();
2322     }
2323    
2324     //Le résultat est récupéré dans un objet
2325     $row =& $res->fetchRow(DB_FETCHMODE_OBJECT);
2326    
2327     //Si il y a un résultat
2328     if ($row !== null) {
2329 vpihour 2119
2330     //Génération du numéro de version
2331     $sql = "SELECT
2332     count(*)
2333     FROM
2334     ".DB_PREFIXE."dossier
2335     LEFT JOIN
2336     ".DB_PREFIXE."dossier_autorisation
2337     ON
2338     dossier_autorisation.dossier_autorisation = dossier.dossier_autorisation
2339     LEFT JOIN
2340     ".DB_PREFIXE."dossier_instruction_type
2341     ON
2342     dossier_instruction_type.dossier_instruction_type = dossier.dossier_instruction_type
2343     WHERE
2344 vpihour 2124 dossier_autorisation.dossier_autorisation = '".$row->dossier_autorisation."'
2345 vpihour 2119 AND
2346 vpihour 2124 dossier_instruction_type.code = '".$row->dossier_instruction_type."'";
2347     $row->version = $this->db->getOne($sql);
2348 vpihour 2119 $this->f->addToLog("getSpecificMetadata(): db->getOne(\"".$sql."\")", VERBOSE_MODE);
2349 vpihour 2124 if ( database::isError($row->version)){
2350     $this->f->addToError("", $row->version, $row->version);
2351 vpihour 2119 return false;
2352     }
2353    
2354     //Formatage du numéro de version
2355 vpihour 2124 $row->version = str_pad($row->version, 2, "0", STR_PAD_LEFT);
2356 nhaye 1928
2357     //Alors on créé l'objet dossier_instruction
2358     $this->specificMetadata = $row;
2359    
2360     }
2361     }
2362 vpihour 1978
2363     /**
2364     * Retourne le statut du dossier d'instruction
2365     * @param string $idx Identifiant du dossier d'instruction
2366     * @return string Le statut du dossier d'instruction
2367     */
2368 softime 2025 function getStatutAutorisationDossier($idx){
2369 vpihour 1978
2370     $statut = '';
2371    
2372     //Si l'identifiant du dossier d'instruction fourni est correct
2373     if ( $idx != '' ){
2374    
2375     //On récupère le statut de l'état du dossier à partir de l'identifiant du
2376     //dossier
2377     $sql = "SELECT etat.statut
2378     FROM ".DB_PREFIXE."dossier
2379     LEFT JOIN
2380     ".DB_PREFIXE."etat
2381     ON
2382     dossier.etat = etat.etat
2383     WHERE dossier ='".$idx."'";
2384     $statut = $this->db->getOne($sql);
2385 softime 2025 $this->f->addToLog("getStatutAutorisationDossier() : db->getOne(\"".$sql."\")", VERBOSE_MODE);
2386 vpihour 1978 if ( database::isError($statut)){
2387     die();
2388     }
2389     }
2390     return $statut;
2391     }
2392 softime 2373
2393     /**
2394     * Récupère les données du dossier
2395     * @return array
2396     */
2397     function get_dossier_actual() {
2398    
2399     // Initialisation de la valeur de retour
2400     $return = array();
2401    
2402     // Récupération de toutes les valeurs du dossier d'instruction en cours
2403     $sql = "SELECT * FROM ".DB_PREFIXE."dossier
2404     WHERE dossier='".$this->valF['dossier']."'";
2405     $res = $this->db->query($sql);
2406     $this->addToLog("get_dossier_actual(): db->query(\"".$sql."\");", VERBOSE_MODE);
2407     $this->f->isDatabaseError($res);
2408    
2409     //
2410     while ($row=& $res->fetchRow(DB_FETCHMODE_ASSOC)) {
2411    
2412     // Récupération de la valeur actuelle du délai, de l'accord tacite,
2413     // de l'état et de l'avis du dossier d'instruction
2414     $return['archive_delai']=$row['delai'];
2415     $return['archive_accord_tacite']=$row['accord_tacite'];
2416     $return['archive_etat']=$row['etat'];
2417     $return['archive_avis']=$row['avis_decision'];
2418     // Récupération de la valeur actuelle des 9 dates du dossier
2419     // d'instruction
2420     $return['archive_date_complet']=$row['date_complet'];
2421     $return['archive_date_dernier_depot']=$row['date_dernier_depot'];
2422     $return['archive_date_rejet']= $row['date_rejet'];
2423     $return['archive_date_limite']= $row['date_limite'];
2424     $return['archive_date_notification_delai']= $row['date_notification_delai'];
2425     $return['archive_date_decision']= $row['date_decision'];
2426     $return['archive_date_validite']= $row['date_validite'];
2427     $return['archive_date_achevement']= $row['date_achevement'];
2428     $return['archive_date_chantier']= $row['date_chantier'];
2429 nhaye 3059 $return['archive_date_conformite']= $row['date_conformite'];
2430     $return['archive_incompletude']= $row['incompletude'];
2431     $return['archive_incomplet_notifie']= $row['incomplet_notifie'];
2432     $return['archive_evenement_suivant_tacite']= $row['evenement_suivant_tacite'];
2433     $return['archive_evenement_suivant_tacite_incompletude']= $row['evenement_suivant_tacite_incompletude'];
2434     $return['archive_etat_pendant_incompletude']= $row['etat_pendant_incompletude'];
2435     $return['archive_date_limite_incompletude']= $row['date_limite_incompletude'];
2436     $return['archive_delai_incompletude']= $row['delai_incompletude'];
2437     $return['archive_autorite_competente']= $row['autorite_competente'];
2438     $return['duree_validite']= $row['duree_validite'];
2439 softime 2373 }
2440    
2441     // Retour de la fonction
2442     return $return;
2443    
2444     }
2445    
2446 softime 2613 /**
2447     * Permet de vérifier qu'un événement est verrouillable
2448     * @param integer $idx Identifiant de l'instruction
2449     * @return boolean
2450     */
2451     function checkEvenementNonVerrouillable($idx) {
2452    
2453     // Initialisation du résultat
2454     $non_verrouillable = false;
2455    
2456     // Si la condition n'est pas vide
2457     if ($idx != "") {
2458    
2459     // Requête SQL
2460     $sql = "SELECT evenement.non_verrouillable
2461     FROM ".DB_PREFIXE."evenement
2462     LEFT JOIN ".DB_PREFIXE."instruction
2463     ON instruction.evenement = evenement.evenement
2464     WHERE instruction.instruction = $idx";
2465     $this->f->addToLog("checkEvenementNonVerrouillable() : db->getOne(\"".$sql."\")", VERBOSE_MODE);
2466     $res = $this->db->getOne($sql);
2467     $this->f->isDatabaseError($res);
2468    
2469     // Si le retour de la requête est true
2470     if ($res == 't') {
2471     //
2472     $non_verrouillable = true;
2473     }
2474     }
2475    
2476     // Retourne résultat
2477     return $non_verrouillable;
2478     }
2479 vpihour 2643
2480     /**
2481     * Mise à jour des champs archive_*
2482     * @param mixed $row La ligne de données
2483     */
2484     public function updateArchiveData($row){
2485    
2486     // Récupération de la valeur actuelle du délai, de l'accord tacite,
2487     // de l'état et de l'avis du dossier d'instruction
2488     $this->valF['archive_delai']=$row['delai'];
2489     $this->valF['archive_accord_tacite']=$row['accord_tacite'];
2490     $this->valF['archive_etat']=$row['etat'];
2491     $this->valF['archive_avis']=$row['avis_decision'];
2492     // Récupération de la valeur actuelle des 9 dates du dossier
2493     // d'instruction
2494     if ($row['date_complet'] != '') {
2495     $this->valF['archive_date_complet']=$row['date_complet'];
2496     }
2497     if ($row['date_dernier_depot'] != '') {
2498     $this->valF['archive_date_dernier_depot']=$row['date_dernier_depot'];
2499     }
2500     if ($row['date_rejet']!='') {
2501     $this->valF['archive_date_rejet']= $row['date_rejet'];
2502     }
2503     if ($row['date_limite']!='') {
2504     $this->valF['archive_date_limite']= $row['date_limite'];
2505     }
2506     if ($row['date_notification_delai']!='') {
2507     $this->valF['archive_date_notification_delai']= $row['date_notification_delai'];
2508     }
2509     if ($row['date_decision']!='') {
2510     $this->valF['archive_date_decision']= $row['date_decision'];
2511     }
2512     if ($row['date_validite']!='') {
2513     $this->valF['archive_date_validite']= $row['date_validite'];
2514     }
2515     if ($row['date_achevement']!='') {
2516     $this->valF['archive_date_achevement']= $row['date_achevement'];
2517     }
2518     if ($row['date_chantier']!='') {
2519     $this->valF['archive_date_chantier']= $row['date_chantier'];
2520     }
2521     if ($row['date_conformite']!='') {
2522     $this->valF['archive_date_conformite']= $row['date_conformite'];
2523     }
2524     if ($row['incompletude']!='') {
2525     $this->valF['archive_incompletude']= $row['incompletude'];
2526     }
2527 nhaye 3059 if ($row['incomplet_notifie']!='') {
2528     $this->valF['archive_incomplet_notifie']= $row['incomplet_notifie'];
2529     }
2530 vpihour 2643 if ($row['evenement_suivant_tacite']!='') {
2531     $this->valF['archive_evenement_suivant_tacite']= $row['evenement_suivant_tacite'];
2532     }
2533     if ($row['evenement_suivant_tacite_incompletude']!='') {
2534     $this->valF['archive_evenement_suivant_tacite_incompletude']= $row['evenement_suivant_tacite_incompletude'];
2535     }
2536     if ($row['etat_pendant_incompletude']!='') {
2537     $this->valF['archive_etat_pendant_incompletude']= $row['etat_pendant_incompletude'];
2538     }
2539     if ($row['date_limite_incompletude']!='') {
2540     $this->valF['archive_date_limite_incompletude']= $row['date_limite_incompletude'];
2541     }
2542     if ($row['delai_incompletude']!='') {
2543     $this->valF['archive_delai_incompletude']= $row['delai_incompletude'];
2544     }
2545     if ($row['autorite_competente']!='') {
2546     $this->valF['archive_autorite_competente']= $row['autorite_competente'];
2547     }
2548     if ($row['duree_validite']!='') {
2549     $this->valF['duree_validite']= $row['duree_validite'];
2550     }
2551     }
2552 vpihour 3025
2553     // {{{
2554     // Méthodes de récupération des métadonnées arrêté
2555     /**
2556     * @return string Retourne le numéro d'arrêté
2557     */
2558     function getNumArrete() {
2559     return $this->getVal("numero_arrete");
2560     }
2561     /**
2562     * @return chaîne vide
2563     */
2564     function getReglementaireArrete() {
2565     return 'true';
2566     }
2567     /**
2568     * @return boolean de notification au pétitionnaire
2569     */
2570     function getNotificationArrete() {
2571     return 'true';
2572     }
2573     /**
2574     * @return date de notification au pétitionnaire
2575     */
2576     function getDateNotificationArrete() {
2577     if (empty($this->metadonneesArrete)) {
2578     $this->getArreteMetadata();
2579     }
2580     return $this->metadonneesArrete["datenotification"];
2581     }
2582     /**
2583     * @return boolean check si le document est passé au contrôle de légalité
2584     */
2585     function getControleLegalite() {
2586     return 'true';
2587     }
2588     /**
2589     * @return date de signature de l'arrêté
2590     */
2591     function getDateSignature() {
2592     if (empty($this->metadonneesArrete)) {
2593     $this->getArreteMetadata();
2594     }
2595     return $this->metadonneesArrete["datesignaturearrete"];
2596     }
2597     /**
2598     * @return string nom du signataire
2599     */
2600     function getNomSignataire() {
2601     if (empty($this->metadonneesArrete)) {
2602     $this->getArreteMetadata();
2603     }
2604     return $this->metadonneesArrete["nomsignataire"];
2605     }
2606     /**
2607     * @return string qualité du signataire
2608     */
2609     function getQualiteSignataire() {
2610     if (empty($this->metadonneesArrete)) {
2611     $this->getArreteMetadata();
2612     }
2613     return $this->metadonneesArrete["qualitesignataire"];
2614     }
2615     /**
2616     * @return string numéro du terrain
2617     */
2618     function getAp_numRue() {
2619     if (empty($this->metadonneesArrete)) {
2620     $this->getArreteMetadata();
2621     }
2622     return $this->metadonneesArrete["ap_numrue"];
2623     }
2624     /**
2625     * @return string nom de la rue du terrain
2626     */
2627     function getAp_nomDeLaVoie() {
2628     if (empty($this->metadonneesArrete)) {
2629     $this->getArreteMetadata();
2630     }
2631     return $this->metadonneesArrete["ap_nomdelavoie"];
2632     }
2633     /**
2634     * @return string code postal du terrain
2635     */
2636     function getAp_codePostal() {
2637     if (empty($this->metadonneesArrete)) {
2638     $this->getArreteMetadata();
2639     }
2640     return $this->metadonneesArrete["ap_codepostal"];
2641     }
2642     /**
2643     * @return string ville du terrain
2644     */
2645     function getAp_ville() {
2646     if (empty($this->metadonneesArrete)) {
2647     $this->getArreteMetadata();
2648     }
2649     return $this->metadonneesArrete["ap_ville"];
2650     }
2651     /**
2652     * @return string activité
2653     */
2654     function getActivite() {
2655     return "Droit du sol";
2656     }
2657     /**
2658     * @return string date du retour de controle légalité
2659     */
2660     function getDateControleLegalite() {
2661     if (empty($this->metadonneesArrete)) {
2662     $this->getArreteMetadata();
2663     }
2664     return $this->metadonneesArrete["datecontrolelegalite"];
2665     }
2666    
2667     // Fin des méthodes de récupération des métadonnées
2668     // }}}
2669    
2670     /**
2671     * Méthode de récupération des métadonnées arrêtés dans la base de données,
2672     * les données sont stockés dans l'attribut $this->metadonneesArrete
2673     */
2674     function getArreteMetadata() {
2675    
2676     //Récupération de la dernière instruction dont l'événement est de type 'arrete'
2677     $this->metadonneesArrete = array("nomsignataire"=>"", "qualitesignataire"=>"",
2678     "decisionarrete"=>"", "datenotification"=>"", "datesignaturearrete"=>"",
2679     "datecontrolelegalite"=>"", "ap_numrue"=>"", "ap_nomdelavoie"=>"",
2680     "ap_codepostal"=>"", "ap_ville"=>"");
2681    
2682     $sqlArrete = "SELECT signataire_arrete.nom as \"nomsignataire\",
2683     signataire_arrete.qualite as \"qualitesignataire\",
2684     instruction.etat as \"decisionarrete\",
2685     instruction.date_retour_rar as \"datenotification\",
2686     instruction.date_retour_signature as \"datesignaturearrete\",
2687     instruction.date_retour_controle_legalite as \"datecontrolelegalite\",
2688     dossier.terrain_adresse_voie_numero as \"ap_numrue\",
2689     dossier.terrain_adresse_voie as \"ap_nomdelavoie\",
2690     dossier.terrain_adresse_code_postal as \"ap_codepostal\",
2691     dossier.terrain_adresse_localite as \"ap_ville\"
2692     FROM ".DB_PREFIXE."instruction
2693     LEFT JOIN ".DB_PREFIXE."signataire_arrete ON
2694     instruction.signataire_arrete = signataire_arrete.signataire_arrete
2695     LEFT JOIN ".DB_PREFIXE."dossier ON
2696     instruction.dossier = dossier.dossier
2697     LEFT JOIN ".DB_PREFIXE."donnees_techniques ON
2698     donnees_techniques.dossier_instruction = dossier.dossier
2699     WHERE instruction.instruction = ".$this->getVal("instruction");
2700     $resArrete = $this->db->query($sqlArrete);
2701     $this->f->addToLog("getArreteMetadata(): db->query(\"".$sqlArrete."\");", VERBOSE_MODE);
2702     if ( database::isError($resArrete)){
2703     die();
2704     }
2705    
2706     $this->metadonneesArrete = $resArrete->fetchRow(DB_FETCHMODE_ASSOC);
2707     }
2708    
2709 fraynaud 3 }// fin classe
2710 atreal 208 ?>

Properties

Name Value
svn:keywords Id

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26