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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2815 - (hide annotations)
Wed Mar 12 17:36:54 2014 UTC (10 years, 10 months ago) by nhaye
File size: 106890 byte(s)
Modification de l'affectation d'une lettretype par defaut dans l'instruction si non définie dans l'événement.
Les actions "Édition" et "Finalisation du document" ne sont pas affichées si pas de lettretype

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

Properties

Name Value
svn:keywords Id

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26