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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2806 - (hide annotations)
Tue Mar 11 15:20:11 2014 UTC (10 years, 10 months ago) by nhaye
File size: 106766 byte(s)
Modification de la façon dont les données des DA sont recalculées : les données techniques font maintenant parti du recalcul de ces données.

1 fraynaud 3 <?php
2 fmichon 1540 /**
3     *
4     *
5     * specific :
6     * - cle secondaire
7     * destruction autorisée que pour le dernier evenement
8     * [delete the last event ]
9     * - variable globale [global variables]
10     * var $archive_date_depot;
11     * var $retourformulaire;
12     * var $idxformulaire;
13     * - modification des données dans dossier trigger avant
14     * [modify dossier data with trigger function]
15 softime 2771 * - function mois_date : pour ajouter des mois a une date
16 fmichon 1540 * [add months (delay) and calculation final date]
17     * - voir script_lang.js : bible ...
18     *
19     * @package openfoncier
20     * @version SVN : $Id$
21     */
22 fraynaud 3
23 fmichon 1540 //
24     require_once "../gen/obj/instruction.class.php";
25    
26     //
27     require_once "../services/outgoing/messageenqueuer.php";
28    
29     //
30 fraynaud 3 class instruction extends instruction_gen {
31    
32 fraynaud 20 var $archive_date_depot; // specific
33     var $retourformulaire; // specific
34     var $idxformulaire; // specific
35 nhaye 1724 var $valEvenement;
36 nhaye 1945 // Tableau contenant une partie des métadonnées arrêtés
37     var $metadonneesArrete;
38 fraynaud 3
39 nhaye 1928 var $metadata = array(
40 nhaye 1938 "om_fichier_instruction" => array(
41 nhaye 1928 "dossier" => "getDossier",
42 softime 2016 "dossier_version" => "getDossierVersion",
43 softime 2025 "numDemandeAutor" => "getNumDemandeAutor",
44     "anneemoisDemandeAutor" => "getAnneemoisDemandeAutor",
45     "typeInstruction" => "getTypeInstruction",
46     "statutAutorisation" => "getStatutAutorisation",
47     "typeAutorisation" => "getTypeAutorisation",
48     "dateEvenementDocument" => "getDateEvenementDocument",
49 softime 2016 "groupeInstruction" => 'getGroupeInstruction',
50 softime 2025 "title" => 'getTitle',
51 nhaye 1928 ),
52     );
53    
54 nhaye 1945
55 nhaye 2561 function __construct($id, &$db, $debug) {
56 fmichon 1540 $this->constructeur($id, $db, $debug);
57     }
58 fraynaud 20
59 fmichon 944 // {{{ Gestion de la confidentialité des données spécifiques
60    
61     /**
62     * Surcharge pour gérer les actions disponibles dans le portlet
63     */
64     function checkAccessibility() {
65     //
66     parent::checkAccessibility();
67 fmichon 1540 // Si l'utilisateur est un intructeur qui ne correspond pas à la
68 fmichon 944 // division du dossier
69     if ($this->f->isUserInstructeur()
70     && isset($this->f->om_utilisateur["division"])
71     && $this->f->om_utilisateur["division"] != $this->getDivisionFromDossier()) {
72     //
73 vpihour 2104 //On cache les liens d'action
74     $this->parameters["actions"]["modifier"] = NULL;
75     $this->parameters["actions"]["supprimer"] = NULL;
76     $this->actions_sup["finalisation"] = NULL;
77 fmichon 944 }
78     // Si une action 'lu' est présente et que le champ lu est à true
79     // on supprime l'action
80     if (isset($this->actions_sup["lu"])
81     && isset($this->val[array_search("lu", $this->champs)])
82     && $this->val[array_search("lu", $this->champs)]== "t") {
83     unset($this->actions_sup["lu"]);
84     }
85 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 softime 2613 // Si l'utilisateur est un instructeur, que le statut est clôturé
129     // et que l'événement n'est pas identifié comme non verrouillable
130     if ( $this->f->isUserInstructeur() && $statut == "cloture"
131     && $this->checkEvenementNonVerrouillable($this->getVal("instruction")) === false){
132 vpihour 1978
133 softime 2613 //On cache les liens du portlet
134 vpihour 1978 $this->parameters["actions"]["modifier"] = NULL;
135     $this->actions_sup["finalisation"] = NULL;
136     $this->actions_sup["definalisation"] = NULL;
137     }
138     }
139 fmichon 944 }
140    
141     /**
142     * Cette methode est à surcharger elle permet de tester dans chaque classe
143     * des droits des droits spécifiques en fonction des données
144     */
145     function canAccess() {
146     // Si l'utilisateur est un intructeur qui ne correspond pas à la
147     // division du dossier
148     if ($this->f->isUserInstructeur()
149     && $this->f->om_utilisateur["division"] != $this->getDivisionFromDossier()
150     && $this->getParameter("maj") != 3) {
151     //
152 fmichon 1908 $this->addToLog("canAccess(): utilisateur instructeur sur un dossier d'une autre division", EXTRA_VERBOSE_MODE);
153 fmichon 944 return false;
154     }
155 vpihour 1978
156     $retourformulaire = $this->getParameter("retourformulaire");
157 softime 2613 // Si l'utilisateur est un instructeur, que le dossier est cloturé,
158     // que l'utilisateur est dans un sous formulaire précis, que le
159     // formulaire n'est pas en mode consulter ou ajouter et que l'événement
160     // n'est pas identifié comme non verrouillable
161 vpihour 1978 if ( $this->f->isUserInstructeur() &&
162 softime 2613 $this->getStatutAutorisationDossier($this->getParameter("idxformulaire")) == "cloture"
163     && (
164 vpihour 1978 $retourformulaire == 'dossier' ||
165     $retourformulaire == 'dossier_instruction' ||
166     $retourformulaire == 'dossier_instruction_mes_encours' ||
167     $retourformulaire == 'dossier_instruction_tous_encours' ||
168     $retourformulaire == 'dossier_instruction_mes_clotures' ||
169     $retourformulaire == 'dossier_instruction_tous_clotures'
170     )
171 softime 2613 && $this->getParameter("maj") != 3
172     && $this->getParameter("maj") != 0
173     && $this->checkEvenementNonVerrouillable($this->getVal("instruction")) === false) {
174    
175 vpihour 1978 return false;
176     }
177 fmichon 944 //
178     return true;
179     }
180    
181     /**
182 fmichon 1908 * Cette variable permet de stocker le résultat de la méthode
183     * getDivisionFromDossier() afin de ne pas effectuer le recalcul à chacun de
184     * ces appels.
185     * @var string Code de la division du dossier en cours
186 fmichon 944 */
187 fmichon 1908 var $_division_from_dossier = NULL;
188    
189     /**
190     * Cette méthode permet de récupérer le code de division correspondant
191     * au dossier sur lequel on se trouve.
192     *
193     * @return string Code de la division du dossier en cours
194     */
195 fmichon 944 function getDivisionFromDossier() {
196 fmichon 1908
197     // Cette méthode peut être appelée plusieurs fois lors d'une requête.
198     // Pour éviter de refaire le traitement de recherche de la division
199     // alors on vérifie si nous ne l'avons pas déjà calculé.
200     if ($this->_division_from_dossier != NULL) {
201     // Logger
202     $this->addToLog("getDivisionFromDossier(): retour de la valeur déjà calculée - '".$this->_division_from_dossier."'", EXTRA_VERBOSE_MODE);
203     // On retourne la valeur déjà calculée
204     return $this->_division_from_dossier;
205 fmichon 944 }
206 fmichon 1908
207     // Par défaut, on définit la valeur du dossier à NULL
208     $dossier = NULL;
209     // Test sur le mode et le contexte du formulaire
210     if ($this->getParameter("maj") == 0
211     && ($this->getParameter("retourformulaire") == "dossier"
212     || $this->getParameter("retourformulaire") == "dossier_instruction"
213     || $this->getParameter("retourformulaire") == "dossier_instruction_mes_encours"
214     || $this->getParameter("retourformulaire") == "dossier_instruction_tous_encours"
215     || $this->getParameter("retourformulaire") == "dossier_instruction_mes_clotures"
216     || $this->getParameter("retourformulaire") == "dossier_instruction_tous_clotures")) {
217     // Si on se trouve en mode AJOUT (seul mode où l'enregistrement
218     // n'existe pas en base de données) ET que nous nous trouvons
219     // dans le contexte d'un dossier d'instruction alors on récupère
220     // le numéro de dossier depuis le paramètre 'idxformulaire'
221     $dossier = $this->getParameter("idxformulaire");
222     } else {
223     // Sinon on récupère le numéro de dossier dans le champs dossier de
224     // l'enregistrement (en base de données)
225     $dossier = $this->getVal("dossier");
226     }
227    
228     // On appelle la méthode de la classe utils qui renvoi le code de la
229     // division d'un dossier, on la stocke pour ne pas refaire le calcul au
230     // prochain appel de cette méthode
231     $this->_division_from_dossier = $this->f->getDivisionFromDossier($dossier);
232     // Logger
233     $this->addToLog("getDivisionFromDossier(): retour de la valeur nouvellement calculée - '".$this->_division_from_dossier."'", EXTRA_VERBOSE_MODE);
234     // On retourne la valeur retournée
235     return $this->_division_from_dossier;
236    
237 fmichon 944 }
238    
239 nhaye 1643 /**
240     * Cette méthode permet de récupérer le dossier d'autorisation d'un dossier
241     */
242 softime 2025 function getNumDemandeAutorFromDossier($id) {
243 nhaye 1643 //
244     if (!isset($id)) {
245     return NULL;
246     }
247     //
248     $sql = "select dossier_autorisation from ".DB_PREFIXE."dossier ";
249     $sql .= " where dossier='".$id."'";
250     //
251     $dossier_autorisation = $this->db->getOne($sql);
252 softime 2025 $this->addToLog("getNumDemandeAutorFromDossier(): db->getone(\"".$sql."\")", VERBOSE_MODE);
253 nhaye 1643 database::isError($dossier_autorisation);
254     //
255     return $dossier_autorisation;
256     }
257    
258 fmichon 944 // }}}
259    
260 fmichon 1540 function setType(&$form, $maj) {
261     //
262     parent::setType($form, $maj);
263     // On cache tous les champs
264     // XXX
265 nhaye 2644 $form->setType('complement3_om_html', 'hidden');
266 fraynaud 20 $form->setType('bible3', 'hidden');
267 nhaye 2644 $form->setType('complement4_om_html', 'hidden');
268 fraynaud 20 $form->setType('bible4', 'hidden');
269 nhaye 2644 $form->setType('complement5_om_html', 'hidden');
270 fraynaud 20 $form->setType('bible5', 'hidden');
271 nhaye 2644 $form->setType('complement6_om_html', 'hidden');
272 fraynaud 20 $form->setType('bible6', 'hidden');
273 nhaye 2644 $form->setType('complement7_om_html', 'hidden');
274 fraynaud 20 $form->setType('bible7', 'hidden');
275 nhaye 2644 $form->setType('complement8_om_html', 'hidden');
276 fraynaud 20 $form->setType('bible8', 'hidden');
277 nhaye 2644 $form->setType('complement9_om_html', 'hidden');
278 fraynaud 20 $form->setType('bible9', 'hidden');
279 nhaye 2644 $form->setType('complement10_om_html', 'hidden');
280 fraynaud 20 $form->setType('bible10', 'hidden');
281 nhaye 2644 $form->setType('complement11_om_html', 'hidden');
282 fraynaud 20 $form->setType('bible11', 'hidden');
283 nhaye 2644 $form->setType('complement12_om_html', 'hidden');
284 fraynaud 20 $form->setType('bible12', 'hidden');
285 nhaye 2644 $form->setType('complement13_om_html', 'hidden');
286 fraynaud 20 $form->setType('bible13', 'hidden');
287 nhaye 2644 $form->setType('complement14_om_html', 'hidden');
288 fraynaud 20 $form->setType('bible14', 'hidden');
289 nhaye 2644 $form->setType('complement15_om_html', 'hidden');
290 fraynaud 20 $form->setType('bible15', 'hidden');
291 fmichon 1540 //
292 fraynaud 20 $form->setType('delai', 'hidden');
293     $form->setType('etat', 'hidden');
294     $form->setType('accord_tacite', 'hidden');
295     $form->setType('action', 'hidden');
296     $form->setType('delai_notification', 'hidden');
297 vpihour 489 $form->setType('avis_decision', 'hidden');
298 nhaye 2099 $form->setType('autorite_competente', 'hidden');
299 fmichon 1540 //
300 fraynaud 20 $form->setType('archive_delai', 'hidden');
301     $form->setType('archive_etat', 'hidden');
302     $form->setType('archive_accord_tacite', 'hidden');
303     $form->setType('archive_avis', 'hidden');
304     $form->setType('archive_date_complet', 'hidden');
305 nhaye 1571 $form->setType('archive_date_dernier_depot', 'hidden');
306 fraynaud 20 $form->setType('archive_date_rejet', 'hidden');
307     $form->setType('archive_date_limite', 'hidden');
308     $form->setType('archive_date_notification_delai', 'hidden');
309     $form->setType('archive_date_decision', 'hidden');
310     $form->setType('archive_date_validite', 'hidden');
311     $form->setType('archive_date_achevement', 'hidden');
312     $form->setType('archive_date_conformite', 'hidden');
313 nhaye 2099 $form->setType('archive_date_chantier', 'hidden');
314     $form->setType('archive_autorite_competente','hidden');
315 fmichon 1540 //
316 vpihour 1307 $form->setType('numero_arrete', 'hidden');
317 vpihour 1784 //
318     $form->setType('code_barres', 'hidden');
319 fmichon 1540
320     //
321 nhaye 1717 $form->setType('archive_incompletude','hidden');
322     $form->setType('archive_evenement_suivant_tacite','hidden');
323     $form->setType('archive_evenement_suivant_tacite_incompletude','hidden');
324     $form->setType('archive_etat_pendant_incompletude','hidden');
325     $form->setType('archive_date_limite_incompletude','hidden');
326     $form->setType('archive_delai_incompletude','hidden');
327 softime 2142
328     //
329     $form->setType('duree_validite','hidden');
330     $form->setType('duree_validite_parametrage','hidden');
331 fmichon 1540 if ($maj < 2) { //ajouter et modifier
332     $form->setType('destinataire', 'hidden');
333     $form->setType('lettretype', 'hiddenstatic');
334 nhaye 2644 $form->setType('complement_om_html', 'html');
335     $form->setType('complement2_om_html', 'html');
336 fmichon 1540 $form->setType('bible_auto', 'httpclick');
337     $form->setType('bible', 'httpclick');
338     $form->setType('bible2', 'httpclick');
339     $form->setType('dossier', 'hidden');
340     $form->setType('libelle', 'hiddenstatic');
341     $form->setType('signataire_arrete','select');
342 nhaye 1564 $form->setType('date_envoi_signature','datedisabled');
343     $form->setType('date_retour_signature','datedisabled');
344     $form->setType('date_envoi_rar','datedisabled');
345     $form->setType('date_retour_rar','datedisabled');
346     $form->setType('date_envoi_controle_legalite','datedisabled');
347     $form->setType('date_retour_controle_legalite','datedisabled');
348 vpihour 1966 $form->setType('date_finalisation_courrier','datedisabled');
349 softime 2049
350 nmeucci 2805
351 softime 2049
352 fmichon 1540 if($maj==0){ // add
353 nmeucci 2805 $form->setType('instruction', 'hidden');
354     $form->setType('lettretype', 'hidden');
355 fmichon 1540 $form->setType('evenement', 'select');
356     $form->setType('date_evenement', 'date2');
357     }else{ // modify
358     $form->setType('instruction', 'hiddenstatic');
359     $form->setType('evenement', 'selecthiddenstatic');
360     //$form->setType('date_evenement', 'hiddenstaticdate');
361     $form->setType('date_evenement', 'date2');
362     // necessaire pour calcul de date en modification
363     //$form->setType('delai', 'hiddenstatic');
364 nmeucci 2805 // l'administrateur peut modifier les champs de retour de date
365     if ($this->f->user_is_admin == true) {
366     $form->setType('date_retour_signature','date');
367     $form->setType('date_retour_rar','date');
368     $form->setType('date_retour_controle_legalite','date');
369     }
370 fmichon 1540 }
371     } elseif($maj==2){
372     $form->setType('dossier', 'hidden');
373     $form->setType('bible_auto', 'hidden');
374     $form->setType('bible', 'hidden');
375     $form->setType('bible2', 'hidden');
376     }else {
377     $form->setType('destinataire', 'hidden');
378     $form->setType('dossier', 'hidden');
379     $form->setType('bible_auto', 'hidden');
380     $form->setType('bible', 'hidden');
381     $form->setType('bible2', 'hidden');
382     }
383 vpihour 1899
384     //Cache les champs pour la finalisation
385     $form->setType('om_fichier_instruction', 'hidden');
386     $form->setType('om_final_instruction', 'hidden');
387 nhaye 1945 // Cache le document arrêté
388 softime 2030 $form->setType('document_numerise', 'hidden');
389 vpihour 2069
390     //Masquer les champs date_envoi_controle_legalite et
391     //date_retour_controle_legalite si ce n'est pas un arrêté
392     if ( !is_numeric($this->getVal("avis_decision"))){
393    
394     $form->setType("date_envoi_controle_legalite", "hidden");
395     $form->setType("date_retour_controle_legalite", "hidden");
396     }
397 fraynaud 20 }
398 fmichon 1540
399     function setSelect(&$form, $maj,&$db,$debug) {
400     /**
401     * On ne surcharge pas la méthode parent car une requête sur la table
402     * dossier est mauvaise pour les performances, car la requête qui
403     * concerne evenement est plus complexe que celle générée et car les
404     * champs action, avis_decision et etat ne sont pas utilisés comme des
405     * select
406     */
407 atreal 312 if(file_exists ("../sql/".$db->phptype."/".$this->table.".form.inc.php"))
408     include ("../sql/".$db->phptype."/".$this->table.".form.inc.php");
409 fmichon 1540 elseif(file_exists ("../sql/".$db->phptype."/".$this->table.".form.inc"))
410     include ("../sql/".$db->phptype."/".$this->table.".form.inc");
411 nhaye 428
412 fmichon 1540 //// action
413     //$this->init_select($form, $db, $maj, $debug, "action",
414     // $sql_action, $sql_action_by_id, false);
415 vpihour 1227
416 fmichon 1540 //// avis_decision
417     //$this->init_select($form, $db, $maj, $debug, "avis_decision",
418     // $sql_avis_decision, $sql_avis_decision_by_id, false);
419 nhaye 1140
420 fmichon 1540 //// dossier
421     //$this->init_select($form, $db, $maj, $debug, "dossier",
422     // $sql_dossier, $sql_dossier_by_id, false);
423 nhaye 428
424 fmichon 1540 //// etat
425     //$this->init_select($form, $db, $maj, $debug, "etat",
426     // $sql_etat, $sql_etat_by_id, false);
427    
428     //// evenement
429     //$this->init_select($form, $db, $maj, $debug, "evenement",
430     // $sql_evenement, $sql_evenement_by_id, false);
431    
432     // signataire_arrete
433     $this->init_select($form, $db, $maj, $debug, "signataire_arrete",
434     $sql_signataire_arrete, $sql_signataire_arrete_by_id, true);
435    
436     /**
437     * Gestion du filtre sur les événements de workflow disponibles
438     * On récupère ici en fonction de l'état du dossier d'instruction en
439     * cours et du type du dossier d'instruction en cours la liste
440     * événements disponibles.
441     */
442     if ($maj == 0) {
443     // Récupération des événements par une jointure entre la table dossier
444     // et la table transition et la table evenement et la table
445     // lien_dossier_instruction_type_evenement en fonction de l'identifiant
446     // du dossier d'instruction en cours
447     $sql = "SELECT
448     evenement.evenement,
449 softime 2144 CONCAT(evenement.libelle, ' ['||evenement.action||']') as lib
450 fmichon 1540 FROM ".DB_PREFIXE."dossier
451     INNER JOIN ".DB_PREFIXE."lien_dossier_instruction_type_evenement
452     ON dossier.dossier_instruction_type=lien_dossier_instruction_type_evenement.dossier_instruction_type
453     INNER JOIN ".DB_PREFIXE."evenement
454     ON evenement.evenement=lien_dossier_instruction_type_evenement.evenement
455     INNER JOIN ".DB_PREFIXE."transition
456     ON evenement.evenement = transition.evenement
457     AND dossier.etat=transition.etat
458     WHERE dossier.dossier='".$this->idxformulaire."'
459 vpihour 2614 ORDER BY evenement.libelle, evenement.action";
460 fmichon 1540 $res = $db->query($sql);
461     $this->addToLog("setSelect(): db->query(\"".$sql."\");", VERBOSE_MODE);
462     if (database::isError($res)) {
463     die($res->getMessage());
464 fraynaud 20 }
465 fmichon 1540 // Remplissage du tableau du select
466     $contenu = array(
467     0 => array("",),
468     1 => array(_('choisir')." "._('evenement'),)
469     );
470     while ($row=& $res->fetchRow()) {
471     $contenu[0][] = $row[0];
472     $contenu[1][] = $row[1];
473     }
474     $form->setSelect("evenement", $contenu);
475     } else {
476     $sql = "SELECT
477 softime 2144 CONCAT(evenement.libelle, ' ['||evenement.action||']') as lib
478 fmichon 1540 FROM ".DB_PREFIXE."evenement
479     WHERE evenement.evenement=".$this->getVal("evenement")."";
480     $res = $db->getone($sql);
481     $this->addToLog("setSelect(): db->getone(\"".$sql."\");", VERBOSE_MODE);
482     if (database::isError($res)) {
483     die($res->getMessage());
484     }
485     //
486     $contenu = array(
487     0 => array($this->getVal("evenement"),),
488     1 => array($res,)
489     );
490     $form->setSelect("evenement", $contenu);
491 fraynaud 20 }
492 fmichon 1540
493     /**
494     * Gesion des liens vers la bible
495     */
496     // lien bible_auto
497     $contenu = array(_("automatique"));
498 nhaye 428 $form->setSelect("bible_auto",$contenu);
499     // lien bible1
500 fmichon 1540 $contenu = array(_("bible"));
501 nhaye 428 $form->setSelect("bible",$contenu);
502     // lien bible2
503 fmichon 1540 $contenu = array(_("bible"));
504 nhaye 428 $form->setSelect("bible2",$contenu);
505 fmichon 1540 }
506 fraynaud 20
507 fmichon 1540 function cleSecondaire($id, &$db, $val, $DEBUG) {
508     //
509     parent::cleSecondaire($id, $db, $val, $DEBUG);
510 vpihour 2000
511 vpihour 2606 $id = $this->getVal($this->clePrimaire);
512 vpihour 2604
513 vpihour 2603
514 softime 2633 //Requête de vérification que cet événement d'instruction n'est pas lié
515 vpihour 2606 //à la création d'un dossier d'instruction
516     $sql = "SELECT demande_type.dossier_instruction_type
517     FROM ".DB_PREFIXE."demande_type
518     LEFT JOIN ".DB_PREFIXE."demande
519     ON demande.demande_type = demande_type.demande_type
520     WHERE demande.instruction_recepisse = ".$id;
521     $res = $this->db->getOne($sql);
522     $this->addToLog("cleSecondaire(): db->getone(\"".$sql."\");", VERBOSE_MODE);
523     if (database::isError($res)) {
524     die($res->getMessage());
525     }
526    
527     // Aucune clé secondaire n'a été trouvée ou c'est un événement sans
528     //création de dossier d'instruction, l'événement d'instruction peut être
529     //supprimé
530 vpihour 2603 if ( $this->correct !== false || $res == null || $res == ""){
531 vpihour 2606
532 softime 2633 // Requête de vérification que cet événement d'instruction est lié
533     // à une demande
534     $sql = "SELECT demande
535     FROM ".DB_PREFIXE."demande
536     WHERE instruction_recepisse = ".$id;
537     $res = $this->db->getOne($sql);
538     $this->addToLog("cleSecondaire(): db->getone(\"".$sql."\");", VERBOSE_MODE);
539     if (database::isError($res)) {
540     die($res->getMessage());
541     }
542    
543 vpihour 2606 //Si c'est un événement d'instruction lié à une demande
544 softime 2633 if ($res != null || $res != ""){
545 vpihour 2603
546 vpihour 2606 require_once "../obj/demande.class.php";
547     $demande = new demande($res, $this->db, DEBUG);
548    
549     //On met à jour la demande en supprimant la liaison vers
550     //l'événement d'instruction
551     $demande->setParameter("maj", 1);
552     $valF = array();
553     foreach($demande->champs as $identifiant => $champ) {
554     $valF[$champ] = $demande->val[$identifiant];
555     }
556     $valF['date_demande']=$demande->dateDBToForm($valF['date_demande']);
557     $valF['instruction_recepisse']=NULL;
558     $ret = $demande->modifier($valF, $this->db, DEBUG);
559 vpihour 2603 }
560    
561 vpihour 2000 /**
562     * Vérification que l'élément supprimé est le dernier pour pouvoir
563     * remodifier les données de manière itérative.
564     */
565     // Initialisation
566     $dernierevenement = "";
567     // Récupération du dernier élément de la table d'instruction qui
568     // concerne le dossier en cours
569     $sql = "SELECT max(instruction)
570     FROM ".DB_PREFIXE."instruction
571     WHERE dossier ='".$this->idxformulaire."'";
572     $dernierevenement = $db->getOne($sql);
573     $this->addToLog("setSelect(): db->getone(\"".$sql."\");", VERBOSE_MODE);
574     if (database::isError($dernierevenement)) {
575     die($dernierevenement->getMessage());
576     }
577     // Si on se trouve effectivement sur le dernier evenement d'instruction
578     if ($dernierevenement == $id) {
579     // Alors on valide la suppression
580     $this->correct = true;
581     $this->addToMessage(_('Destruction_chronologique'));
582     } else {
583     // Alors on annule la suppression
584     $this->correct = false;
585     $this->addToMessage(_("Seul le dernier evenement d'instruction peut etre supprime."));
586     }
587 fmichon 1540 }
588     }
589    
590 nhaye 2412 /**
591     * Vérification de la possibilité ou non de modifier des dates de suivi
592     * @param string $champ champ date à vérifier
593     */
594 nhaye 1564 function updateDate($champ) {
595 nhaye 2412
596 softime 2562 //Si le retourformulaire est "dossier_instruction"
597     if ($this->retourformulaire == "dossier_instruction") {
598    
599     // Vérification de la possibilité de modifier les dates si déjà éditées
600     if($this->valF[$champ] != "" AND !$this->f->user_is_admin) {
601     // si l'utilisateur n'est pas un admin
602     if($this->getVal($champ) != "" AND $this->getVal($champ) != $this->valF[$champ]) {
603     $this->correct = false;
604     $this->addToMessage(_("Les dates de suivis ne peuvent etre modifiees"));
605     }
606 nhaye 1564 }
607     }
608 softime 2562
609     //
610 nhaye 2412 return true;
611 nhaye 1564 }
612    
613 fmichon 1540 // Sélectionne le signataire_arrete par défaut
614     function setVal(&$form,$maj,$validation){
615    
616     // Ajout
617     if($maj == 0) {
618    
619     // Création de la requête
620     $sql = "SELECT signataire_arrete
621     FROM ".DB_PREFIXE."signataire_arrete
622     WHERE defaut IS TRUE";
623    
624     // Exécution de la requête
625 vpihour 1777 $res = $this->f->db->query($sql);
626 vpihour 2456 $this->f->addToLog("setVal(): db->query(\"".$sql."\");", VERBOSE_MODE);
627 vpihour 1777 if ( database::isError($res)){
628     die();
629     }
630 fmichon 1540
631     $row = $res->fetchrow(DB_FETCHMODE_ASSOC);
632    
633     if ( isset($row['signataire_arrete']) && is_numeric($row['signataire_arrete'])){
634    
635     $form->setVal("signataire_arrete",$row['signataire_arrete']);
636     }
637     }
638     }
639    
640     /*Met des valeurs par défaut dans certains des sous-formulaire*/
641     function setValsousformulaire(&$form,$maj,$validation,$idxformulaire,$retourformulaire,$typeformulaire){
642     if ($validation==0 and $maj<2) {
643     if ($maj == 0){
644     $form->setVal("destinataire", $idxformulaire);
645     $form->setVal("dossier", $idxformulaire);
646     $form->setVal("date_evenement", date('Y-m-d'));
647     }
648     $form->setVal("bible_auto","bible_auto()");
649     $form->setVal("bible","bible()");
650     $form->setVal("bible2","bible2()");
651     }
652     $this->retourformulaire=$retourformulaire;
653     $this->idxformulaire=$idxformulaire;
654     }
655    
656    
657 nhaye 1439 function setLayout(&$form, $maj){
658     if ( $maj < 2 OR $maj == 3 ) {
659     /*Champ sur lequel s'ouvre le bloc 1 */
660     $form->setBloc('evenement','D',"","col_12");
661 fraynaud 20
662 nhaye 1439 $form->setFieldset('evenement','D',_('Evenement'));
663     $form->setFieldset('lettretype','F','');
664    
665     $form->setBloc('lettretype','F');
666    
667     $form->setBloc('date_finalisation_courrier','D',"","col_12");
668    
669     $form->setFieldset('date_finalisation_courrier','D',_('Dates'));
670     $form->setBloc('date_finalisation_courrier','D',"","col_6");
671     $form->setBloc('date_envoi_controle_legalite','F');
672    
673     $form->setBloc('signataire_arrete','D',"","col_6");
674     $form->setBloc('date_retour_controle_legalite','F');
675     $form->setFieldset('date_retour_controle_legalite','F','');
676    
677     $form->setBloc('date_retour_controle_legalite','F');
678    
679 nhaye 2644 $form->setBloc('complement_om_html','D',"","col_12");
680     $form->setFieldset('complement_om_html','D',_('Complement'));
681 nhaye 1439 $form->setFieldset('bible','F','');
682     $form->setBloc('bible','F');
683    
684 nhaye 2644 $form->setBloc('complement2_om_html','D',"","col_12");
685     $form->setFieldset('complement2_om_html','D',_('Complement 2'));
686 nhaye 1439 $form->setFieldset('bible2','F','');
687     $form->setBloc('bible2','F');
688     }
689 fraynaud 20 }
690    
691 fmichon 1540 function setLib(&$form, $maj) {
692     //
693     parent::setLib($form, $maj);
694     //
695     $form->setLib('bible_auto', "");
696     $form->setLib('bible', "");
697     $form->setLib('bible2', "");
698 fraynaud 20 }
699    
700 fmichon 1540 function triggerajouter($id, &$db, $val, $DEBUG) {
701     /**
702     * Le code suivant permet de récupérer des valeurs des tables evenement
703     * et dossier pour les stocker dans l'instruction :
704     * DEPUIS L'EVENEMENT
705     * - action
706     * - delai
707     * - accord_tacite
708     * - etat
709     * - avis_decision
710     * - delai_notification
711     * - lettretype
712 nhaye 2099 * - autorite_competente
713 fmichon 1540 * DEPUIS LE DOSSIER D'INSTRUCTION
714     * - archive_delai
715     * - archive_accord_tacite
716     * - archive_etat
717     * - archive_avis
718     * - date_complet
719     * - date_rejet
720     * - date_limite
721     * - date_notification_delai
722     * - date_decision
723     * - date_validite
724     * - date_achevement
725     * - date_chantier
726     * - date_conformite
727 nhaye 2099 * - avis_decision
728 fmichon 1540 * Il permet également de stocker la date_depot du dossier d'instruction
729     * dans l'attribut $this->archive_date_depot de la classe.
730     */
731     // Récupération de tous les paramètres de l'événement sélectionné
732     $sql = "SELECT * FROM ".DB_PREFIXE."evenement
733     WHERE evenement=".$this->valF['evenement'];
734 fraynaud 20 $res = $db->query($sql);
735 fmichon 1540 $this->addToLog("triggerajouter(): db->query(\"".$sql."\");", VERBOSE_MODE);
736     if (database::isError($res)) {
737     die($res->getMessage());
738     }
739     while ($row=& $res->fetchRow(DB_FETCHMODE_ASSOC)) {
740     // Récupération de l'identifiant de l'action
741     // si une action est paramétrée dans l'événement
742     $this->valF['action'] = NULL;
743     if (isset($row['action']) and !empty($row['action'])) {
744 nhaye 460 $this->valF['action']=$row['action'];
745     }
746 fmichon 1540 // Récupération de la valeur du délai
747     $this->valF['delai'] = $row['delai'];
748     // Récupération de l'identifiant de l'état
749     // si un état est paramétré dans l'événement
750     $this->valF['etat']=NULL;
751     if (isset($row['etat']) and !empty($row['etat'])) {
752 nhaye 460 $this->valF['etat']=$row['etat'];
753     }
754 fmichon 1540 // Récupération de la valeur d'accord tacite
755 fraynaud 20 $this->valF['accord_tacite']=$row['accord_tacite'];
756 fmichon 1540 // Récupération de la valeur du délai de notification
757 fraynaud 20 $this->valF['delai_notification']=$row['delai_notification'];
758 fmichon 1540 // Récupération de l'identifiant de l'avis
759     // si un avis est paramétré dans l'événement
760     $this->valF['avis_decision'] = NULL;
761 vpihour 489 if(isset($row['avis_decision']) and !empty($row['avis_decision'])) {
762     $this->valF['avis_decision']=$row['avis_decision'];
763 fmichon 1540 }
764 nhaye 2099 // Récupération de la valeur de l'autorité compétente
765     // si l'autorité compétente est paramétré dans l'événement
766     $this->valF['autorite_competente'] = NULL;
767     if(isset($row['autorite_competente']) and !empty($row['autorite_competente'])) {
768     $this->valF['autorite_competente']=$row['autorite_competente'];
769     }
770 fmichon 1540 // Récupération de la valeur de la lettre type
771     // Sinon on lui affecte lavaleur par défaut standard
772     if ($row['lettretype'] != "") {
773     $this->valF['lettretype']=$row['lettretype'];
774 nhaye 460 } else {
775 fmichon 1540 $this->valF['lettretype'] = "standard"; // XXX
776 nhaye 460 }
777 fraynaud 20 }
778 fmichon 1540 // Récupération de toutes les valeurs du dossier d'instruction en cours
779     $sql = "SELECT * FROM ".DB_PREFIXE."dossier
780     WHERE dossier='".$this->valF['dossier']."'";
781 fraynaud 20 $res = $db->query($sql);
782 fmichon 1540 $this->addToLog("triggerajouter(): db->query(\"".$sql."\");", VERBOSE_MODE);
783     if (database::isError($res)) {
784 fraynaud 20 die($res->getMessage());
785 fmichon 1540 }
786 vpihour 2643 $row=& $res->fetchRow(DB_FETCHMODE_ASSOC);
787     $this->updateArchiveData($row);
788     $this->archive_date_depot = $row['date_depot'];
789    
790 softime 2142 // Récupération de la duree de validite du dossier d'autorisation
791     $sql = "SELECT duree_validite_parametrage
792     FROM ".DB_PREFIXE."dossier_autorisation_type_detaille
793     LEFT JOIN ".DB_PREFIXE."dossier_autorisation
794     ON dossier_autorisation.dossier_autorisation_type_detaille = dossier_autorisation_type_detaille.dossier_autorisation_type_detaille
795     LEFT JOIN ".DB_PREFIXE."dossier
796     ON dossier.dossier_autorisation = dossier_autorisation.dossier_autorisation
797     WHERE dossier.dossier='".$this->valF['dossier']."'";
798     $duree_validite_parametrage = $db->getOne($sql);
799     $this->addToLog("triggerajouter(): db->getOne(\"".$sql."\");", VERBOSE_MODE);
800     database::isError($duree_validite_parametrage);
801     if ($duree_validite_parametrage != '') {
802     $this->valF['duree_validite_parametrage']= $duree_validite_parametrage;
803     }
804 vpihour 1784
805     // Identifiant du type de courrier
806     $idTypeCourrier = '11';
807     $idCourrier = str_pad($this->valF["instruction"], 10, "0", STR_PAD_LEFT);
808     // Code barres
809     $this->valF["code_barres"] = $idTypeCourrier . $idCourrier;
810 fraynaud 20 }
811    
812 vpihour 1137 // Test si une restriction est valide
813     // return boolean
814     function restrictionIsValid($restriction){
815 softime 2305
816     // Liste des opérateurs possible
817     $operateurs = array(">=", "<=", "+", "-");
818     // Liste des opérateurs avec espace
819     $operateurs_blank = array(" >= ", " <= ", " + ", " - ");
820    
821     // Supprime tous les espaces de la chaîne de caractère
822     $restriction = str_replace(' ', '', $restriction);
823 vpihour 1137
824 softime 2305 // Met des espace avant et après les opérateurs puis transforme la
825     // chaine en un tableau
826     $tabRestriction = str_replace($operateurs, $operateurs_blank,
827     $restriction);
828     $tabRestriction = explode(" ", $tabRestriction);
829    
830     // Tableau comprenant les résultat
831 vpihour 1137 $res = array();
832 softime 2305 // Compteur pour les résultat
833     // commence à 1 car le 0 doit rester inchangé tout au long du traitement
834     $j = 1;
835     // Comparateur du calcul
836     $comparateur = '';
837     // Booléen retourné
838     $res_bool = true;
839    
840 softime 2692 // S'il y a un comparateur
841     if (in_array(">=", $tabRestriction)
842     || in_array("<=", $tabRestriction)) {
843 softime 2305
844 softime 2692 // Si le tableau n'est pas vide
845     if (count($tabRestriction) > 0) {
846    
847     // Boucle dans le tableau pour récupérer seulement les valeurs
848     foreach ($tabRestriction as $key => $value) {
849    
850     //
851     if (!in_array($value, $operateurs)) {
852     if ($this->getRestrictionValue($value) != false) {
853     $res[] = $this->getRestrictionValue($value);
854     } else {
855     // Message d'erreur
856     $error_message = sprintf(_("Le champ %s de l'instruction %s est vide"), "<span class='bold'>".$value."</span>", "<span class='bold'>".$this->valF["instruction"]."</span>");
857     $this->addToMessage($error_message);
858     // Arrête le traitement
859     return false;
860     }
861 softime 2305 }
862 vpihour 1137 }
863 softime 2305
864 softime 2692 // Boucle dans le tableau
865     // commence à 1 car le 0 doit rester inchangé tout au long du
866     // traitement
867     for ($i = 1; $i<count($tabRestriction); $i++) {
868    
869     // Récupère le comparateur
870     if ($tabRestriction[$i] === ">="
871     || $tabRestriction[$i] === "<=") {
872     $comparateur = $tabRestriction[$i];
873     }
874 softime 2305
875 softime 2692 // Si l'opérateur qui suit est un "+"
876     if ($tabRestriction[$i] === "+") {
877 softime 2771 $dateDep = $res[$j];
878 softime 2692 unset($res[$j]);$j++;
879     $duree = $res[$j];
880     unset($res[$j]);
881 softime 2771 $res[$j] = $this->f->mois_date($dateDep, $duree, "+");
882 softime 2692 }
883 softime 2305
884 softime 2692 // Si l'opérateur qui suit est un "-"
885     if ($tabRestriction[$i] === "-") {
886 softime 2771 $dateDep = $res[$j];
887 softime 2692 unset($res[$j]);$j++;
888     $duree = $res[$j];
889     unset($res[$j]);
890 softime 2771 $res[$j] = $this->f->mois_date($dateDep, $duree, "-");
891 softime 2692 }
892 softime 2305 }
893 softime 2692
894 vpihour 1137 }
895    
896 softime 2692 // Si les tableau des résultats n'est pas vide
897     if (count($res) > 0) {
898 softime 2305 //
899 softime 2692 $res_bool = false;
900     // Effectue le test
901     if ($comparateur === ">=") {
902     //
903     if (strtotime($res[0]) >= strtotime($res[$j])) {
904     $res_bool = true;
905     }
906 softime 2305 }
907 softime 2692 if ($comparateur === "<=") {
908 vpihour 1137
909 softime 2692 if (strtotime($res[0]) <= strtotime($res[$j])) {
910     $res_bool = true;
911     }
912 softime 2305 }
913 vpihour 1137 }
914 softime 2692 // Sinon une erreur s'affiche
915     } else {
916    
917     // Message d'erreur
918     $error_message = _("La restriction est sans comparateur");
919     $this->addToMessage($error_message);
920     // Arrête le traitement
921     return false;
922 vpihour 1137 }
923    
924 softime 2305 return $res_bool;
925    
926 vpihour 1137 }
927 softime 2373
928     /**
929 vpihour 2792 * Récupère la valeur du champ dans la restriction
930     * @param string $restrictionValue Nom du champ
931     * @return mixed Valeur du champ
932     */
933     function getRestrictionValue($restrictionValue){
934    
935     // Initialisation de la valeur de retour
936     $return = false;
937    
938     // Récupére les valeurs du dossier
939     $value_dossier = $this->get_dossier_actual();
940    
941     //
942     if (is_numeric($restrictionValue)) {
943     $return = $restrictionValue;
944     }elseif (isset($value_dossier[$restrictionValue])) {
945     $return = $value_dossier[$restrictionValue];
946     }elseif (isset($this->valF[$restrictionValue])) {
947     $return = $this->valF[$restrictionValue];
948     }
949    
950     // Retourne la valeur du champ
951     return $return;
952     }
953    
954     /**
955 softime 2787 * Calcul des règle d'action.
956     * @param string $rule Règle d'action
957     * @param string $rule_name Nom de la règle
958     * @param string $type Type de la règle
959     *
960     * @return mixed Résultat de la règle
961 softime 2373 */
962 softime 2787 function regle($rule, $rule_name, $type = null) {
963 softime 2305
964 softime 2787 // Supprime tous les espaces de la chaîne de caractère
965     $rule = str_replace(' ', '', $rule);
966     // Coupe la chaîne au niveau de l'opérateur
967     $operands = explode ("+", $rule);
968     // Nombre d'opérande
969     $nb_operands = count($operands);
970 softime 2305
971 softime 2787 // Règle à null
972     if ($rule == "null") {
973     return null;
974     }
975 softime 2373
976 softime 2787 // Si c'est une règle spécifique
977     if ($rule_name == "regle_autorite_competente"
978     || $rule_name == "regle_etat"
979     || $rule_name == "regle_accord_tacite"
980     || $rule_name == "regle_avis") {
981     //
982     return $this->valF[$rule];
983 softime 2305 }
984    
985 softime 2787 // Tableau des champs de type date
986     $rule_type_date = array(
987     "regle_date_limite",
988     "regle_date_notification_delai",
989     "regle_date_complet",
990     "regle_date_validite",
991     "regle_date_decision",
992     "regle_date_chantier",
993     "regle_date_achevement",
994     "regle_date_conformite",
995     "regle_date_rejet",
996     "regle_date_dernier_depot",
997     "regle_date_limite_incompletude",
998     );
999     // Tableau des champs de type numérique
1000     $rule_type_numeric = array(
1001     "regle_delai",
1002     "regle_delai_incompletude",
1003     );
1004    
1005     // Définit le type du champ
1006     if (in_array($rule_name, $rule_type_date) == true) {
1007     $type = "date";
1008 fraynaud 123 }
1009 softime 2787 if (in_array($rule_name, $rule_type_numeric) == true) {
1010     $type = "numeric";
1011 fraynaud 124 }
1012 softime 2787
1013     // Initialisation des variables
1014     $key_date = 0;
1015     $total_numeric = 0;
1016    
1017     // Pour chaque opérande
1018     foreach ($operands as $key => $operand) {
1019    
1020     // Si c'est une règle de type date
1021     if ($type == 'date') {
1022     // Vérifie si au moins une des opérandes est une date
1023     if (!is_numeric($operand)
1024     && isset($this->valF[$operand])
1025     && $this->f->check_date($this->valF[$operand]) == true) {
1026     // Récupère la position de la date
1027     $key_date = $key;
1028     }
1029     // Les autres opérandes doivent être que des numériques
1030     if (is_numeric($operand) == true) {
1031     // Ajoute l'opérande au total
1032     $total_numeric += $operand;
1033     }
1034     if (!is_numeric($operand)
1035     && isset($this->valF[$operand])
1036     && is_numeric($this->valF[$operand]) == true) {
1037     // Ajoute l'opérande au total
1038     $total_numeric += $this->valF[$operand];
1039     }
1040     }
1041    
1042     // Si c'est une règle de type numérique
1043     if ($type == 'numeric') {
1044     // Les opérandes doivent être que des numériques
1045     if (is_numeric($operand) == true) {
1046     // Ajoute l'opérande au total
1047     $total_numeric += $operand;
1048     }
1049     if (!is_numeric($operand)
1050     && isset($this->valF[$operand])
1051     && is_numeric($this->valF[$operand]) == true) {
1052     // Ajoute l'opérande au total
1053     $total_numeric += $this->valF[$operand];
1054     }
1055     }
1056     }
1057    
1058     // Résultat pour une règle de type date
1059     if ($type == 'date') {
1060     // Retourne le calcul de la date
1061     return $this->f->mois_date($this->valF[$operands[$key_date]],
1062     $total_numeric, "+");
1063     }
1064    
1065     // Résultat pour une règle de type numérique
1066     if ($type == 'numeric') {
1067     // Retourne le calcul
1068     return $total_numeric;
1069     }
1070    
1071 fraynaud 123 }
1072 fmichon 1540
1073 fraynaud 20 function triggerajouterapres($id,&$db,$val,$DEBUG) {
1074 fmichon 1540 /**
1075     * Mise à jour des valeurs du dossier en fonction des valeurs calculées
1076     * par l'action
1077     */
1078 nhaye 1724 $this->getValEvenement();
1079 fmichon 1540 // Initialisation
1080     $valF = "";
1081 nhaye 1741 // état de complétude actuel du dossier
1082     $incompletude = $this->dossierIncomplet();
1083    
1084     if($incompletude === FALSE) {
1085     // Si l'événement d'instruction est de type incompletude
1086     if($this->valEvenement['type'] == "incompletude") {
1087     // On marque le dossier en incomplétude pour application des actions
1088     $incompletude = TRUE;
1089     // Set du flag incomplétude de la table dossier
1090     $valF['incompletude'] = TRUE;
1091     // Enregistrement de l'état dans la variable provisoire
1092     $valF['etat_pendant_incompletude'] = $this->valF['archive_etat'];
1093     }
1094     } else {
1095     // Si l'evenement d'instruction est de type retour ou contient une
1096     // decision, on sort d'incomplétude
1097     if($this->valEvenement['type'] == "retour" OR
1098     $this->valEvenement['avis_decision'] != NULL) {
1099     // On enlève la marque d'incomplétude pour application des actions
1100     $incompletude = FALSE;
1101     // On enlève le flag d'incomplétude sur l'enregistrement de la table dossier
1102     $valF['incompletude'] = FALSE;
1103     // Restauration de l'état depuis l'état provisoire
1104     $valF['etat'] = $this->valF['archive_etat_pendant_incompletude'];
1105     // On vide la variable provisoire ainsi que le délai de complétude
1106     // et la date limite de complétude
1107     $valF['etat_pendant_incompletude'] = NULL;
1108     $valF['delai_incompletude'] = NULL;
1109     $valF['date_limite_incompletude'] = NULL;
1110     }
1111     }
1112 fmichon 1540 // Récupération des paramètres de l'action
1113     $sql = "SELECT * FROM ".DB_PREFIXE."action
1114     WHERE action='".$this->valF['action']."'";
1115     $res = $db->query($sql);
1116     $this->addToLog("triggerajouterapres(): db->query(\"".$sql."\");", VERBOSE_MODE);
1117     if (database::isError($res)) {
1118     die($res->getMessage());
1119     }
1120     while ($row=& $res->fetchRow(DB_FETCHMODE_ASSOC)) {
1121 nhaye 1724
1122 fmichon 1540 // pour chacune des regles, on applique la regle
1123     if($row['regle_delai']!=''){
1124 softime 2787 $valF['delai'] = $this->regle($row['regle_delai'], 'regle_delai');
1125 fmichon 1540 }
1126     if($row['regle_accord_tacite']!=''){
1127 softime 2787 $valF['accord_tacite'] = $this->regle($row['regle_accord_tacite'], 'regle_accord_tacite');
1128 fmichon 1540 }
1129     if($row['regle_avis']!=''){
1130 softime 2787 $valF['avis_decision'] = $this->regle($row['regle_avis'], 'regle_avis');
1131 fmichon 1540 }
1132     if($row['regle_date_limite']!=''){
1133 softime 2787 $valF['date_limite']= $this->regle($row['regle_date_limite'], 'regle_date_limite');
1134 fmichon 1540 }
1135     if($row['regle_date_complet']!=''){
1136 softime 2787 $valF['date_complet']= $this->regle($row['regle_date_complet'], 'regle_date_complet');
1137 fmichon 1540 }
1138 nhaye 1571 if($row['regle_date_dernier_depot']!=''){
1139 softime 2787 $valF['date_dernier_depot']= $this->regle($row['regle_date_dernier_depot'], 'regle_date_dernier_depot');
1140 nhaye 1571 }
1141 fmichon 1540 if($row['regle_date_notification_delai']!=''){
1142 softime 2787 $valF['date_notification_delai']= $this->regle($row['regle_date_notification_delai'], 'regle_date_notification_delai');
1143 fmichon 1540 }
1144     if($row['regle_date_decision']!=''){
1145 softime 2787 $valF['date_decision']= $this->regle($row['regle_date_decision'], 'regle_date_decision');
1146 fmichon 1540 }
1147     if($row['regle_date_rejet']!=''){
1148 softime 2787 $valF['date_rejet']= $this->regle($row['regle_date_rejet'], 'regle_date_rejet');
1149 fmichon 1540 }
1150     if($row['regle_date_validite']!=''){
1151 softime 2787 $valF['date_validite']= $this->regle($row['regle_date_validite'], 'regle_date_validite');
1152 fmichon 1540 }
1153     if($row['regle_date_chantier']!=''){
1154 softime 2787 $valF['date_chantier']= $this->regle($row['regle_date_chantier'], 'regle_date_chantier');
1155 fmichon 1540 }
1156     if($row['regle_date_achevement']!=''){
1157 softime 2787 $valF['date_achevement']= $this->regle($row['regle_date_achevement'], 'regle_date_achevement');
1158 fmichon 1540 }
1159     if($row['regle_date_conformite']!=''){
1160 softime 2787 $valF['date_conformite']= $this->regle($row['regle_date_conformite'], 'regle_date_conformite');
1161 fmichon 1540 }
1162 nhaye 1731 if($row['regle_date_limite_incompletude']!=''){
1163 softime 2787 $valF['date_limite_incompletude']= $this->regle($row['regle_date_limite_incompletude'], 'regle_date_limite_incompletude');
1164 nhaye 1731 }
1165     if($row['regle_delai_incompletude']!=''){
1166 softime 2787 $valF['delai_incompletude']= $this->regle($row['regle_delai_incompletude'], 'regle_delai_incompletude');
1167 nhaye 1731 }
1168 nhaye 2099 if($row['regle_autorite_competente']!=''){
1169 softime 2787 $valF['autorite_competente']= $this->regle($row['regle_autorite_competente'], 'regle_autorite_competente');
1170 nhaye 2099 }
1171 nhaye 1741 if($row['regle_etat']!=''){
1172     // Si on est dans le cas général ou qu'on est en incomplétude et
1173     // qu'on a un événement de type incomplétude alors : on stocke
1174     // l'état dans la variable courante
1175     if ($incompletude == FALSE OR $this->valEvenement['type'] == "incompletude") {
1176 softime 2787 $valF['etat'] = $this->regle($row['regle_etat'], 'regle_etat');
1177 nhaye 1741 } else {
1178 softime 2787 $valF['etat_pendant_incompletude'] = $this->regle($row['regle_etat'], 'regle_etat');
1179 nhaye 1741 }
1180     }
1181     if($this->valEvenement['evenement_suivant_tacite'] != '') {
1182     // Si on est pas en incomplétude on stocke l'événement tacite
1183     //de l'événement dans la variable courante
1184     if ($incompletude == FALSE) {
1185     $valF['evenement_suivant_tacite'] = $this->valEvenement['evenement_suivant_tacite'];
1186     } else {
1187     $valF['evenement_suivant_tacite_incompletude'] = $this->valEvenement['evenement_suivant_tacite'];
1188     }
1189     }
1190 fmichon 1540 }
1191     // Si des valeurs ont été calculées alors on met à jour l'enregistrement
1192     if ($valF != "") {
1193     // On met à jour le dossier
1194     $cle = " dossier='".$this->valF['dossier']."'";
1195     $res1 = $db->autoExecute(DB_PREFIXE.'dossier', $valF, DB_AUTOQUERY_UPDATE, $cle);
1196     $this->addToLog("triggerajouterapres(): db->autoexecute(\"".DB_PREFIXE."dossier\", ".print_r($valF, true).", DB_AUTOQUERY_UPDATE, \"".$cle."\");", VERBOSE_MODE);
1197     if (database::isError($res1)) {
1198 fraynaud 20 die($res->getMessage());
1199 fmichon 1540 }
1200     // Affichage d'informations à l'utilisateur
1201     $this->addToMessage(_('enregistrement')." ".$this->valF['dossier']." "._('table')." dossier [".$db->affectedRows()." "._('enregistrement')." "._('mis_a_jour')."]");
1202 fraynaud 20 }
1203 fmichon 1540
1204     /**
1205     * REFERENTIEL ERP
1206     */
1207 fmichon 1005 // verification si envoi vers ERP est active
1208     if ($this->f->getParameter('option_erp') != "") {
1209     // la nature du dossier
1210     $nature_dossier = substr($this->idxformulaire,0,2);
1211 fmichon 1540 //
1212     $sql = "SELECT erp
1213     FROM ".DB_PREFIXE."dossier
1214     WHERE dossier='".$this->valF['dossier']."'";
1215     $dossier_erp = $this->db->getone($sql);
1216     $this->addToLog("triggerajouterapres(): db->getone(\"".$sql."\");", VERBOSE_MODE);
1217     if (database::isError($res)) {
1218     die($res->getMessage());
1219     }
1220     //
1221     $sql = "SELECT libelle
1222     FROM ".DB_PREFIXE."evenement
1223     WHERE evenement='".$this->valF['evenement']."'";
1224     $evenement_libelle = $this->db->getone($sql);
1225     $this->addToLog("triggerajouterapres(): db->getone(\"".$sql."\");", VERBOSE_MODE);
1226     if (database::isError($res)) {
1227     die($res->getMessage());
1228     }
1229     //
1230 fmichon 1005 if ($dossier_erp == 't') {
1231     // envoi du message en cas d'un PC qui est ERP et sur lequel un evenement
1232     // d'acceptation etait fait
1233     if ($nature_dossier ==
1234     $this->f->getParameter('erp_evenement_accepter_dossier_PC')
1235     && $this->valF['evenement'] ==
1236     $this->f->getParameter('erp_evenement_accepter_sans_reserve')) {
1237     $msgenque = new MessageEnqueuer();
1238     $msgenque->setDossierInstructionIdentifier($this->valF['dossier']);
1239     $msgenque->setDecision($evenement_libelle);
1240     $msgenque->enqueueMessage($msgenque::$ERP_ARRETE_PC_EFFECTUE);
1241     }
1242     if ($this->valF['evenement'] ==
1243     $this->f->getParameter('erp_evenement_refuser_dossier')) {
1244     $msgenque = new MessageEnqueuer();
1245     $msgenque->setDossierInstructionIdentifier($this->valF['dossier']);
1246     $msgenque->enqueueMessage($msgenque::$ERP_DECISION_CONFORMITE_EFFECTUE);
1247     }
1248 mlimic 936 }
1249 fmichon 1005 } // fin de if ($this->f->getParameter('option_erp') != "")
1250 nhaye 1643
1251     // Mise à jour des données du dossier d'autorisation
1252     require_once "../obj/dossier_autorisation.class.php";
1253 softime 2025 $da = new dossier_autorisation($this->getNumDemandeAutorFromDossier($this->valF['dossier']), $this->db, DEBUG);
1254 nhaye 2806 if($da->majDossierAutorisation() === false) {
1255     $this->addToMessage(_("Erreur lors de la mise a jour des donnees techniques. Contactez votre administrateur."));
1256     $this->correct = false;
1257     return false;
1258     }
1259 fmichon 1540 }
1260 softime 2030
1261 fraynaud 129 function triggermodifierapres($id,&$db,$val,$DEBUG) {
1262 fmichon 1540 /**
1263     * L'objectif ici est d'effectuer les recalculs de date dans le dossier
1264     * si la date de l'evenement est modifiee
1265     */
1266     // Initialisation
1267     $valF = "";
1268 nhaye 2561 // Initialisation du type d'événement
1269     $type_evmt = "";
1270 fmichon 1540 // Récupération de l'action correspondante à l'événement
1271     $sql = "SELECT action
1272     FROM ".DB_PREFIXE."evenement
1273     WHERE evenement=".$this->valF['evenement'];
1274 fraynaud 129 $action = $db->getOne($sql);
1275 fmichon 1540 $this->addToLog("triggermodifierapres(): db->getone(\"".$sql."\");", VERBOSE_MODE);
1276     if (database::isError($action)) {
1277     die($action->getMessage());
1278     }
1279 nhaye 1564
1280 fmichon 1540 // Récupération des paramètres de l'action
1281     $sql = "SELECT * FROM ".DB_PREFIXE."action
1282     WHERE action='".$action."'";
1283 fraynaud 129 $res = $db->query($sql);
1284 fmichon 1540 $this->addToLog("triggermodifierapres(): db->query(\"".$sql."\");", VERBOSE_MODE);
1285     if (database::isError($res)) {
1286     die($res->getMessage());
1287     }
1288 fraynaud 129 while ($row=& $res->fetchRow(DB_FETCHMODE_ASSOC)){
1289     // application des regles sur le courrier + delai
1290 vpihour 1127 if(preg_match("/date_evenement/",$row['regle_date_limite'])){
1291 softime 2787 $valF['date_limite']= $this->regle($row['regle_date_limite'], 'regle_date_limite');
1292 fraynaud 129 }
1293 vpihour 1127 if(preg_match("/date_evenement/",$row['regle_date_complet'])){
1294 softime 2787 $valF['date_complet']= $this->regle($row['regle_date_complet'], 'regle_date_complet');
1295 fraynaud 129 }
1296 nhaye 1571 if(preg_match("/date_evenement/",$row['regle_date_dernier_depot'])){
1297 softime 2787 $valF['date_dernier_depot']= $this->regle($row['regle_date_dernier_depot'], 'regle_date_dernier_depot');
1298 nhaye 1571 }
1299 vpihour 1127 if(preg_match("/date_evenement/",$row['regle_date_notification_delai'])){
1300 softime 2787 $valF['date_notification_delai']= $this->regle($row['regle_date_notification_delai'], 'regle_date_notification_delai');
1301 fraynaud 129 }
1302 vpihour 1127 if(preg_match("/date_evenement/",$row['regle_date_decision'])){
1303 softime 2787 $valF['date_decision']= $this->regle($row['regle_date_decision'], 'regle_date_decision');
1304 fraynaud 129 }
1305 vpihour 1127 if(preg_match("/date_evenement/",$row['regle_date_rejet'])){
1306 softime 2787 $valF['date_rejet']= $this->regle($row['regle_date_rejet'], 'regle_date_rejet');
1307 fraynaud 129 }
1308 vpihour 1127 if(preg_match("/date_evenement/",$row['regle_date_validite'])){
1309 softime 2787 $valF['date_validite']= $this->regle($row['regle_date_validite'], 'regle_date_validite');
1310 fraynaud 129 }
1311 vpihour 1127 if(preg_match("/date_evenement/",$row['regle_date_chantier'])){
1312 softime 2787 $valF['date_chantier']= $this->regle($row['regle_date_chantier'], 'regle_date_chantier');
1313 fraynaud 129 }
1314 vpihour 1127 if(preg_match("/date_evenement/",$row['regle_date_achevement'])){
1315 softime 2787 $valF['date_achevement']= $this->regle($row['regle_date_achevement'], 'regle_date_achevement');
1316 fraynaud 129 }
1317 vpihour 1127 if(preg_match("/date_evenement/",$row['regle_date_conformite'])){
1318 softime 2787 $valF['date_conformite']= $this->regle($row['regle_date_conformite'], 'regle_date_conformite');
1319 fraynaud 129 }
1320 fmichon 1540 }
1321     // Si des valeurs ont été calculées alors on met à jour l'enregistrement
1322     if ($valF != "") {
1323     // On met à jour le dossier
1324     $cle = " dossier='".$this->valF['dossier']."'";
1325     $res1 = $db->autoExecute(DB_PREFIXE.'dossier', $valF, DB_AUTOQUERY_UPDATE, $cle);
1326 softime 2562 $this->addToLog("triggermodifierapres(): db->autoexecute(\"".DB_PREFIXE."dossier\", ".print_r($valF, true).", DB_AUTOQUERY_UPDATE, \"".$cle."\");", VERBOSE_MODE);
1327 fmichon 1540 if (database::isError($res1)) {
1328 fraynaud 129 die($res->getMessage());
1329 fmichon 1540 }
1330     // Affichage d'informations à l'utilisateur
1331     $this->addToMessage(_('enregistrement')." ".$this->valF['dossier']." "._('table')." dossier [".$db->affectedRows()." "._('enregistrement')." "._('mis_a_jour')."]");
1332 fraynaud 129 }
1333 nhaye 1299
1334 softime 2562 // Récupération de tous les paramètres de l'événement sélectionné
1335     $sql = "SELECT * FROM ".DB_PREFIXE."evenement
1336     WHERE evenement=".$this->valF['evenement'];
1337     $res = $db->query($sql);
1338     $this->addToLog("triggermodifierapres(): db->query(\"".$sql."\");", VERBOSE_MODE);
1339     if (database::isError($res)) {
1340     die($res->getMessage());
1341     }
1342     while ($row=& $res->fetchRow(DB_FETCHMODE_ASSOC)) {
1343     // Si la date de retour signature est éditée on vérifie si il existe un événement automatique
1344     if ($this->getVal('date_retour_signature') == "" AND
1345     $this->valF['date_retour_signature'] != "" AND
1346     $row['evenement_retour_signature'] != "") {
1347     $new_instruction = new instruction("]", $db, $DEBUG);
1348     // Création d'un tableau avec la liste des champs de l'instruction
1349     foreach($new_instruction->champs as $champ) {
1350     $valNewInstr[$champ] = "";
1351     }
1352     // Définition des valeurs de la nouvelle instruction
1353     $valNewInstr["evenement"] = $row['evenement_retour_signature'];
1354     $valNewInstr["destinataire"] = $this->valF['destinataire'];
1355     $valNewInstr["dossier"] = $this->valF['dossier'];
1356 vpihour 2749 $valNewInstr["date_evenement"] = $this->f->formatDate($this->valF['date_retour_signature']);
1357 softime 2562 $valNewInstr["date_envoi_signature"] = $this->f->formatDate($this->valF['date_envoi_signature']);
1358     $valNewInstr["date_retour_signature"] = $this->f->formatDate($this->valF['date_retour_signature']);
1359     $valNewInstr["date_envoi_rar"] = $this->f->formatDate($this->valF['date_envoi_rar']);
1360     $valNewInstr["date_retour_rar"] = $this->f->formatDate($this->valF['date_retour_rar']);
1361     $valNewInstr["date_envoi_controle_legalite"] = $this->f->formatDate($this->valF['date_envoi_controle_legalite']);
1362     $valNewInstr["date_retour_controle_legalite"] = $this->f->formatDate($this->valF['date_retour_controle_legalite']);
1363     $new_instruction->ajouter($valNewInstr,$db, $DEBUG);
1364     }
1365     // Si la date de retour AR est éditée on vérifie si il existe un événement automatique
1366     if ($this->getVal('date_retour_rar') == "" AND
1367     $this->valF['date_retour_rar'] != "" AND
1368     $row['evenement_retour_ar'] != "" ) {
1369     $new_instruction = new instruction("]", $db, $DEBUG);
1370     // Création d'un tableau avec la liste des champs de l'instruction
1371     foreach($new_instruction->champs as $champ) {
1372     $valNewInstr[$champ] = "";
1373     }
1374     // Définition des valeurs de la nouvelle instruction
1375     $valNewInstr["evenement"] = $row['evenement_retour_ar'];
1376     $valNewInstr["destinataire"] = $this->valF['destinataire'];
1377     $valNewInstr["dossier"] = $this->valF['dossier'];
1378 vpihour 2749 $valNewInstr["date_evenement"] = $this->f->formatDate($this->valF['date_retour_rar']);
1379 softime 2562 $valNewInstr["date_envoi_signature"] = $this->f->formatDate($this->valF['date_envoi_signature']);
1380     $valNewInstr["date_retour_signature"] = $this->f->formatDate($this->valF['date_retour_signature']);
1381     $valNewInstr["date_envoi_rar"] = $this->f->formatDate($this->valF['date_envoi_rar']);
1382     $valNewInstr["date_retour_rar"] = $this->f->formatDate($this->valF['date_retour_rar']);
1383     $valNewInstr["date_envoi_controle_legalite"] = $this->f->formatDate($this->valF['date_envoi_controle_legalite']);
1384     $valNewInstr["date_retour_controle_legalite"] = $this->f->formatDate($this->valF['date_retour_controle_legalite']);
1385     $new_instruction->ajouter($valNewInstr,$db, $DEBUG);
1386     }
1387     }
1388    
1389 fmichon 1540 /**
1390     * REFERENTIEL ARRETE
1391     */
1392 nhaye 2561 // Si l'option référentiel arrêté est activé et l'événement est de type
1393     // arrêté
1394     if ($this->f->getParameter('option_referentiel_arrete') != "" AND
1395     $type_evmt == "arrete") {
1396 fmichon 1540 if ($this->valF['date_retour_signature'] != $this->getVal('date_retour_signature')) {
1397     $msgenque = new MessageEnqueuer();
1398     $sqlArrete = "SELECT instruction.signataire_arrete as \"ws_DA_In_Signataire\",
1399     signataire_arrete.nom as \"ws_DA_In_Sign_Nom\",
1400     signataire_arrete.prenom as \"ws_DA_In_Sign_Prenom\",
1401     signataire_arrete.qualite as \"ws_DA_In_Sign_Qualite\",
1402     instruction.date_evenement as \"ws_DA_In_Dte_Redac\",
1403     '' as \"ws_DA_In_lieu_Redac\",
1404     instruction.dossier as \"ws_DA_In_N_Doss_DAS\",
1405     '' as \"ws_DA_In_Sigle\",
1406     instruction.etat as \"ws_DA_In_Decision\",
1407     dossier.date_depot as \"ws_DA_In_Dte_Depot_Dem\",
1408 nhaye 2561 dossier.terrain_adresse_voie_numero as \"ws_DA_In_N_Voie\",
1409 fmichon 1540 '' as \"ws_DA_In_Type_Voie\",
1410 softime 2061 dossier.terrain_adresse_voie as \"ws_DA_In_Adresse1\",
1411 fmichon 1540 dossier.terrain_adresse_lieu_dit as \"ws_DA_In_Adresse2\",
1412     dossier.terrain_adresse_code_postal as \"ws_DA_In_CP\",
1413     dossier.terrain_adresse_localite as \"ws_DA_In_Ville\",
1414     dossier.terrain_references_cadastrales as \"ws_DA_In_Nb_Parcelle\",
1415     '' as \"ws_DA_In_Detail_Parcelle\",
1416     CONCAT(donnees_techniques.am_projet_desc,' ',donnees_techniques.co_projet_desc) as \"ws_DA_In_Nature_Trvx\",
1417     '' as \"ws_DA_In_Destination_Trvx\",
1418     dossier_autorisation_type_detaille.code as \"ws_DA_In_Type_Dos_Autoris\",
1419     COALESCE(particulier_nom,personne_morale_raison_sociale) as \"ws_DA_In_Nom_Petition\",
1420     COALESCE(particulier_prenom, personne_morale_denomination) as \"ws_DA_In_Prenom_Petition\",
1421     '' as \"ws_DA_In_Piece_GED\",
1422     instruction.date_retour_signature as \"ws_DA_In_Dte_Signature\"
1423     FROM ".DB_PREFIXE."instruction
1424     LEFT JOIN ".DB_PREFIXE."signataire_arrete ON
1425     instruction.signataire_arrete = signataire_arrete.signataire_arrete
1426     LEFT JOIN ".DB_PREFIXE."dossier ON
1427     instruction.dossier = dossier.dossier
1428     LEFT JOIN ".DB_PREFIXE."lien_dossier_demandeur ON
1429     lien_dossier_demandeur.dossier = dossier.dossier
1430     LEFT JOIN ".DB_PREFIXE."demandeur ON
1431     lien_dossier_demandeur.demandeur = demandeur.demandeur
1432     LEFT JOIN ".DB_PREFIXE."dossier_instruction_type ON
1433     dossier.dossier_instruction_type = dossier_instruction_type.dossier_instruction_type
1434     LEFT JOIN ".DB_PREFIXE."dossier_autorisation_type_detaille ON
1435     dossier_instruction_type.dossier_autorisation_type_detaille =
1436     dossier_autorisation_type_detaille.dossier_autorisation_type_detaille
1437     LEFT JOIN ".DB_PREFIXE."donnees_techniques ON
1438     donnees_techniques.dossier_instruction = dossier.dossier
1439     WHERE instruction.instruction = ".$this->valF['instruction'];
1440     $resArrete = $this->db->query($sqlArrete);
1441 softime 2562 $this->f->addToLog("triggermodifierapres(): db->query(\"".$sqlArrete."\");", VERBOSE_MODE);
1442 vpihour 1777 if ( database::isError($resArrete)){
1443     die();
1444     }
1445 fmichon 1540
1446     $rowArrete = $resArrete->fetchRow(DB_FETCHMODE_ASSOC);
1447     $msgenque->setArreteInfo($rowArrete);
1448     $msgenque->enqueueMessage($msgenque::$ARRETE_ENVOI);
1449     }
1450 nhaye 1299 }
1451 nhaye 1643
1452     // Mise à jour des données du dossier d'autorisation
1453     require_once "../obj/dossier_autorisation.class.php";
1454 softime 2025 $da = new dossier_autorisation($this->getNumDemandeAutorFromDossier($this->valF['dossier']), $this->db, DEBUG);
1455 nhaye 2806 if($da->majDossierAutorisation() === false) {
1456     $this->addToMessage(_("Erreur lors de la mise a jour des donnees techniques. Contactez votre administrateur."));
1457     $this->correct = false;
1458     return false;
1459     }
1460 fraynaud 129 }
1461    
1462 fraynaud 20 function triggersupprimer($id,&$db,$val,$DEBUG) {
1463 fmichon 1540 /**
1464     * L'objectif ici est de repositionner les valeurs récupérées en
1465     * archive dans le dossier d'instruction avant de supprimer l'événement
1466     * d'instruction
1467     */
1468 vpihour 2603
1469     // Mise à jour des 4 valeurs modifiées par l'action
1470     $valF['delai'] = $val['archive_delai'];
1471     $valF['accord_tacite'] = $val['archive_accord_tacite'];
1472     $valF['etat'] = $val['archive_etat'];
1473     if ($val['archive_avis'] != '') {
1474     $valF['avis_decision'] = $val['archive_avis'];
1475     } else {
1476     $valF['avis_decision'] = NULL;
1477     }
1478     // Mise à jour des 10 dates avec la valeur présente dans le formulaire
1479     // de suppression. Si la valeur de la date est vide alors on fixe
1480     // à la valeur NULL
1481     //
1482     if ($val['archive_date_complet'] != '') {
1483     $valF['date_complet'] = $val['archive_date_complet'];
1484     } else {
1485     $valF['date_complet'] = NULL;
1486     }
1487     if ($val['archive_date_dernier_depot'] != '') {
1488     $valF['date_dernier_depot'] = $val['archive_date_dernier_depot'];
1489     } else {
1490     $valF['date_dernier_depot'] = NULL;
1491     }
1492     if ($val['archive_date_rejet'] != '') {
1493     $valF['date_rejet'] = $val['archive_date_rejet'];
1494     } else {
1495     $valF['date_rejet'] = NULL;
1496     }
1497     if ($val['archive_date_limite'] != '') {
1498     $valF['date_limite'] = $val['archive_date_limite'];
1499     } else {
1500     $valF['date_limite'] = NULL;
1501     }
1502     if ($val['archive_date_notification_delai'] != '') {
1503     $valF['date_notification_delai'] = $val['archive_date_notification_delai'];
1504     } else {
1505     $valF['date_notification_delai'] = NULL;
1506     }
1507     if ($val['archive_date_decision'] != '') {
1508     $valF['date_decision'] = $val['archive_date_decision'];
1509     } else {
1510     $valF['date_decision'] = NULL;
1511     }
1512     if ($val['archive_date_validite'] != '') {
1513     $valF['date_validite'] = $val['archive_date_validite'];
1514     } else {
1515     $valF['date_validite'] = NULL;
1516     }
1517     if ($val['archive_date_achevement'] != '') {
1518     $valF['date_achevement'] = $val['archive_date_achevement'];
1519     } else {
1520     $valF['date_achevement'] = NULL;
1521     }
1522     if ($val['archive_date_chantier'] != '') {
1523     $valF['date_chantier'] = $val['archive_date_chantier'];
1524     } else {
1525     $valF['date_chantier'] = NULL;
1526     }
1527     if ($val['archive_date_conformite'] != '') {
1528     $valF['date_conformite'] = $val['archive_date_conformite'];
1529     } else {
1530     $valF['date_conformite'] = NULL;
1531     }
1532     if ($val['archive_incompletude'] != '') {
1533     $valF['incompletude'] = $val['archive_incompletude'];
1534     } else {
1535     $valF['incompletude'] = NULL;
1536     }
1537     if ($val['archive_evenement_suivant_tacite'] != '') {
1538     $valF['evenement_suivant_tacite'] = $val['archive_evenement_suivant_tacite'];
1539     } else {
1540     $valF['evenement_suivant_tacite'] = NULL;
1541     }
1542     if ($val['archive_evenement_suivant_tacite_incompletude'] != '') {
1543     $valF['evenement_suivant_tacite_incompletude'] = $val['archive_evenement_suivant_tacite_incompletude'];
1544     } else {
1545     $valF['evenement_suivant_tacite_incompletude'] = NULL;
1546     }
1547     if ($val['archive_etat_pendant_incompletude'] != '') {
1548     $valF['etat_pendant_incompletude'] = $val['archive_etat_pendant_incompletude'];
1549     } else {
1550     $valF['etat_pendant_incompletude'] = NULL;
1551     }
1552     if ($val['archive_date_limite_incompletude'] != '') {
1553     $valF['date_limite_incompletude'] = $val['archive_date_limite_incompletude'];
1554     } else {
1555     $valF['date_limite_incompletude'] = NULL;
1556     }
1557     if ($val['archive_delai_incompletude'] != '') {
1558     $valF['delai_incompletude'] = $val['archive_delai_incompletude'];
1559     } else {
1560     $valF['delai_incompletude'] = NULL;
1561     }
1562     if ($val['archive_autorite_competente'] != '') {
1563     $valF['autorite_competente'] = $val['archive_autorite_competente'];
1564     } else {
1565     $valF['autorite_competente'] = NULL;
1566     }
1567     // On met à jour le dossier
1568     $cle = " dossier='".$val['dossier']."'";
1569     $res = $db->autoExecute(DB_PREFIXE.'dossier', $valF, DB_AUTOQUERY_UPDATE, $cle);
1570     $this->addToLog("triggersupprimer(): db->autoexecute(\"".DB_PREFIXE."dossier\", ".print_r($valF, true).", DB_AUTOQUERY_UPDATE, \"".$cle."\");", VERBOSE_MODE);
1571     if (database::isError($res)) {
1572     die($res->getMessage());
1573     }
1574     // Affichage d'informations à l'utilisateur
1575     $this->addToMessage(_("Suppression de l'instruction")." [".$db->affectedRows()." "._('enregistrement')." "._('mis_a_jour')."]");
1576    
1577     // Mise à jour de la demande si un récépissé d'instruction correspond à l'instruction à supprimer
1578 fraynaud 20 }
1579 fmichon 1540
1580 nhaye 1643 function triggersupprimerapres($id,&$db,$val,$DEBUG) {
1581    
1582     // Mise à jour des données du dossier d'autorisation
1583     require_once "../obj/dossier_autorisation.class.php";
1584 softime 2025 $da = new dossier_autorisation($this->getNumDemandeAutorFromDossier($val["dossier"]), $this->db, DEBUG);
1585 nhaye 2806 if($da->majDossierAutorisation() === false) {
1586     $this->addToMessage(_("Erreur lors de la mise a jour des donnees techniques. Contactez votre administrateur."));
1587     $this->correct = false;
1588     return false;
1589     }
1590 nhaye 1643 }
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 2789 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 softime 2613 /**
2213     * Permet de vérifier qu'un événement est verrouillable
2214     * @param integer $idx Identifiant de l'instruction
2215     * @return boolean
2216     */
2217     function checkEvenementNonVerrouillable($idx) {
2218    
2219     // Initialisation du résultat
2220     $non_verrouillable = false;
2221    
2222     // Si la condition n'est pas vide
2223     if ($idx != "") {
2224    
2225     // Requête SQL
2226     $sql = "SELECT evenement.non_verrouillable
2227     FROM ".DB_PREFIXE."evenement
2228     LEFT JOIN ".DB_PREFIXE."instruction
2229     ON instruction.evenement = evenement.evenement
2230     WHERE instruction.instruction = $idx";
2231     $this->f->addToLog("checkEvenementNonVerrouillable() : db->getOne(\"".$sql."\")", VERBOSE_MODE);
2232     $res = $this->db->getOne($sql);
2233     $this->f->isDatabaseError($res);
2234    
2235     // Si le retour de la requête est true
2236     if ($res == 't') {
2237     //
2238     $non_verrouillable = true;
2239     }
2240     }
2241    
2242     // Retourne résultat
2243     return $non_verrouillable;
2244     }
2245 vpihour 2643
2246     /**
2247     * Mise à jour des champs archive_*
2248     * @param mixed $row La ligne de données
2249     */
2250     public function updateArchiveData($row){
2251    
2252     // Récupération de la valeur actuelle du délai, de l'accord tacite,
2253     // de l'état et de l'avis du dossier d'instruction
2254     $this->valF['archive_delai']=$row['delai'];
2255     $this->valF['archive_accord_tacite']=$row['accord_tacite'];
2256     $this->valF['archive_etat']=$row['etat'];
2257     $this->valF['archive_avis']=$row['avis_decision'];
2258     // Récupération de la valeur actuelle des 9 dates du dossier
2259     // d'instruction
2260     if ($row['date_complet'] != '') {
2261     $this->valF['archive_date_complet']=$row['date_complet'];
2262     }
2263     if ($row['date_dernier_depot'] != '') {
2264     $this->valF['archive_date_dernier_depot']=$row['date_dernier_depot'];
2265     }
2266     if ($row['date_rejet']!='') {
2267     $this->valF['archive_date_rejet']= $row['date_rejet'];
2268     }
2269     if ($row['date_limite']!='') {
2270     $this->valF['archive_date_limite']= $row['date_limite'];
2271     }
2272     if ($row['date_notification_delai']!='') {
2273     $this->valF['archive_date_notification_delai']= $row['date_notification_delai'];
2274     }
2275     if ($row['date_decision']!='') {
2276     $this->valF['archive_date_decision']= $row['date_decision'];
2277     }
2278     if ($row['date_validite']!='') {
2279     $this->valF['archive_date_validite']= $row['date_validite'];
2280     }
2281     if ($row['date_achevement']!='') {
2282     $this->valF['archive_date_achevement']= $row['date_achevement'];
2283     }
2284     if ($row['date_chantier']!='') {
2285     $this->valF['archive_date_chantier']= $row['date_chantier'];
2286     }
2287     if ($row['date_conformite']!='') {
2288     $this->valF['archive_date_conformite']= $row['date_conformite'];
2289     }
2290     if ($row['incompletude']!='') {
2291     $this->valF['archive_incompletude']= $row['incompletude'];
2292     }
2293     if ($row['evenement_suivant_tacite']!='') {
2294     $this->valF['archive_evenement_suivant_tacite']= $row['evenement_suivant_tacite'];
2295     }
2296     if ($row['evenement_suivant_tacite_incompletude']!='') {
2297     $this->valF['archive_evenement_suivant_tacite_incompletude']= $row['evenement_suivant_tacite_incompletude'];
2298     }
2299     if ($row['etat_pendant_incompletude']!='') {
2300     $this->valF['archive_etat_pendant_incompletude']= $row['etat_pendant_incompletude'];
2301     }
2302     if ($row['date_limite_incompletude']!='') {
2303     $this->valF['archive_date_limite_incompletude']= $row['date_limite_incompletude'];
2304     }
2305     if ($row['delai_incompletude']!='') {
2306     $this->valF['archive_delai_incompletude']= $row['delai_incompletude'];
2307     }
2308     if ($row['autorite_competente']!='') {
2309     $this->valF['archive_autorite_competente']= $row['autorite_competente'];
2310     }
2311     if ($row['duree_validite']!='') {
2312     $this->valF['duree_validite']= $row['duree_validite'];
2313     }
2314     }
2315 fraynaud 3 }// fin classe
2316 atreal 208 ?>

Properties

Name Value
svn:keywords Id

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26