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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2606 - (hide annotations)
Thu Dec 12 18:05:40 2013 UTC (11 years, 1 month ago) by vpihour
File size: 102068 byte(s)
Ajout de la possibilité pour l'administrateur de pouvoir supprimer un événement d'instruction qui est lié à une demande qui n'avait pas créé un nouveau dossier d'instruction.

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

Properties

Name Value
svn:keywords Id

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26