/[openfoncier]/branches/3.14.1/obj/instruction.class.php
ViewVC logotype

Annotation of /branches/3.14.1/obj/instruction.class.php

Parent Directory Parent Directory | Revision Log Revision Log


Revision 3818 - (hide annotations)
Fri Mar 25 09:11:55 2016 UTC (8 years, 10 months ago) by nhaye
File size: 127489 byte(s)
Création de la branche 3.14.1 depuis la branche 3.14.x à la révision r3707

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

Properties

Name Value
svn:keywords Id

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26