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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2805 - (hide annotations)
Tue Mar 11 14:55:03 2014 UTC (10 years, 10 months ago) by nmeucci
File size: 106130 byte(s)
Masquage de champs dans tous les formulaires des commissions et dans le
  formulaire d'ajout d'instructions. Suppression de colonnes dans le tableau
  listant les commissions. Mise en statique des champs 'date de retour RAR'
  dans l'ajout d'une instruction et 'lu' dans l'onglet commission du DI en modif.

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 1643 $da->majDossierAutorisation();
1255 fmichon 1540 }
1256 softime 2030
1257 fraynaud 129 function triggermodifierapres($id,&$db,$val,$DEBUG) {
1258 fmichon 1540 /**
1259     * L'objectif ici est d'effectuer les recalculs de date dans le dossier
1260     * si la date de l'evenement est modifiee
1261     */
1262     // Initialisation
1263     $valF = "";
1264 nhaye 2561 // Initialisation du type d'événement
1265     $type_evmt = "";
1266 fmichon 1540 // Récupération de l'action correspondante à l'événement
1267     $sql = "SELECT action
1268     FROM ".DB_PREFIXE."evenement
1269     WHERE evenement=".$this->valF['evenement'];
1270 fraynaud 129 $action = $db->getOne($sql);
1271 fmichon 1540 $this->addToLog("triggermodifierapres(): db->getone(\"".$sql."\");", VERBOSE_MODE);
1272     if (database::isError($action)) {
1273     die($action->getMessage());
1274     }
1275 nhaye 1564
1276 fmichon 1540 // Récupération des paramètres de l'action
1277     $sql = "SELECT * FROM ".DB_PREFIXE."action
1278     WHERE action='".$action."'";
1279 fraynaud 129 $res = $db->query($sql);
1280 fmichon 1540 $this->addToLog("triggermodifierapres(): db->query(\"".$sql."\");", VERBOSE_MODE);
1281     if (database::isError($res)) {
1282     die($res->getMessage());
1283     }
1284 fraynaud 129 while ($row=& $res->fetchRow(DB_FETCHMODE_ASSOC)){
1285     // application des regles sur le courrier + delai
1286 vpihour 1127 if(preg_match("/date_evenement/",$row['regle_date_limite'])){
1287 softime 2787 $valF['date_limite']= $this->regle($row['regle_date_limite'], 'regle_date_limite');
1288 fraynaud 129 }
1289 vpihour 1127 if(preg_match("/date_evenement/",$row['regle_date_complet'])){
1290 softime 2787 $valF['date_complet']= $this->regle($row['regle_date_complet'], 'regle_date_complet');
1291 fraynaud 129 }
1292 nhaye 1571 if(preg_match("/date_evenement/",$row['regle_date_dernier_depot'])){
1293 softime 2787 $valF['date_dernier_depot']= $this->regle($row['regle_date_dernier_depot'], 'regle_date_dernier_depot');
1294 nhaye 1571 }
1295 vpihour 1127 if(preg_match("/date_evenement/",$row['regle_date_notification_delai'])){
1296 softime 2787 $valF['date_notification_delai']= $this->regle($row['regle_date_notification_delai'], 'regle_date_notification_delai');
1297 fraynaud 129 }
1298 vpihour 1127 if(preg_match("/date_evenement/",$row['regle_date_decision'])){
1299 softime 2787 $valF['date_decision']= $this->regle($row['regle_date_decision'], 'regle_date_decision');
1300 fraynaud 129 }
1301 vpihour 1127 if(preg_match("/date_evenement/",$row['regle_date_rejet'])){
1302 softime 2787 $valF['date_rejet']= $this->regle($row['regle_date_rejet'], 'regle_date_rejet');
1303 fraynaud 129 }
1304 vpihour 1127 if(preg_match("/date_evenement/",$row['regle_date_validite'])){
1305 softime 2787 $valF['date_validite']= $this->regle($row['regle_date_validite'], 'regle_date_validite');
1306 fraynaud 129 }
1307 vpihour 1127 if(preg_match("/date_evenement/",$row['regle_date_chantier'])){
1308 softime 2787 $valF['date_chantier']= $this->regle($row['regle_date_chantier'], 'regle_date_chantier');
1309 fraynaud 129 }
1310 vpihour 1127 if(preg_match("/date_evenement/",$row['regle_date_achevement'])){
1311 softime 2787 $valF['date_achevement']= $this->regle($row['regle_date_achevement'], 'regle_date_achevement');
1312 fraynaud 129 }
1313 vpihour 1127 if(preg_match("/date_evenement/",$row['regle_date_conformite'])){
1314 softime 2787 $valF['date_conformite']= $this->regle($row['regle_date_conformite'], 'regle_date_conformite');
1315 fraynaud 129 }
1316 fmichon 1540 }
1317     // Si des valeurs ont été calculées alors on met à jour l'enregistrement
1318     if ($valF != "") {
1319     // On met à jour le dossier
1320     $cle = " dossier='".$this->valF['dossier']."'";
1321     $res1 = $db->autoExecute(DB_PREFIXE.'dossier', $valF, DB_AUTOQUERY_UPDATE, $cle);
1322 softime 2562 $this->addToLog("triggermodifierapres(): db->autoexecute(\"".DB_PREFIXE."dossier\", ".print_r($valF, true).", DB_AUTOQUERY_UPDATE, \"".$cle."\");", VERBOSE_MODE);
1323 fmichon 1540 if (database::isError($res1)) {
1324 fraynaud 129 die($res->getMessage());
1325 fmichon 1540 }
1326     // Affichage d'informations à l'utilisateur
1327     $this->addToMessage(_('enregistrement')." ".$this->valF['dossier']." "._('table')." dossier [".$db->affectedRows()." "._('enregistrement')." "._('mis_a_jour')."]");
1328 fraynaud 129 }
1329 nhaye 1299
1330 softime 2562 // Récupération de tous les paramètres de l'événement sélectionné
1331     $sql = "SELECT * FROM ".DB_PREFIXE."evenement
1332     WHERE evenement=".$this->valF['evenement'];
1333     $res = $db->query($sql);
1334     $this->addToLog("triggermodifierapres(): db->query(\"".$sql."\");", VERBOSE_MODE);
1335     if (database::isError($res)) {
1336     die($res->getMessage());
1337     }
1338     while ($row=& $res->fetchRow(DB_FETCHMODE_ASSOC)) {
1339     // Si la date de retour signature est éditée on vérifie si il existe un événement automatique
1340     if ($this->getVal('date_retour_signature') == "" AND
1341     $this->valF['date_retour_signature'] != "" AND
1342     $row['evenement_retour_signature'] != "") {
1343     $new_instruction = new instruction("]", $db, $DEBUG);
1344     // Création d'un tableau avec la liste des champs de l'instruction
1345     foreach($new_instruction->champs as $champ) {
1346     $valNewInstr[$champ] = "";
1347     }
1348     // Définition des valeurs de la nouvelle instruction
1349     $valNewInstr["evenement"] = $row['evenement_retour_signature'];
1350     $valNewInstr["destinataire"] = $this->valF['destinataire'];
1351     $valNewInstr["dossier"] = $this->valF['dossier'];
1352 vpihour 2749 $valNewInstr["date_evenement"] = $this->f->formatDate($this->valF['date_retour_signature']);
1353 softime 2562 $valNewInstr["date_envoi_signature"] = $this->f->formatDate($this->valF['date_envoi_signature']);
1354     $valNewInstr["date_retour_signature"] = $this->f->formatDate($this->valF['date_retour_signature']);
1355     $valNewInstr["date_envoi_rar"] = $this->f->formatDate($this->valF['date_envoi_rar']);
1356     $valNewInstr["date_retour_rar"] = $this->f->formatDate($this->valF['date_retour_rar']);
1357     $valNewInstr["date_envoi_controle_legalite"] = $this->f->formatDate($this->valF['date_envoi_controle_legalite']);
1358     $valNewInstr["date_retour_controle_legalite"] = $this->f->formatDate($this->valF['date_retour_controle_legalite']);
1359     $new_instruction->ajouter($valNewInstr,$db, $DEBUG);
1360     }
1361     // Si la date de retour AR est éditée on vérifie si il existe un événement automatique
1362     if ($this->getVal('date_retour_rar') == "" AND
1363     $this->valF['date_retour_rar'] != "" AND
1364     $row['evenement_retour_ar'] != "" ) {
1365     $new_instruction = new instruction("]", $db, $DEBUG);
1366     // Création d'un tableau avec la liste des champs de l'instruction
1367     foreach($new_instruction->champs as $champ) {
1368     $valNewInstr[$champ] = "";
1369     }
1370     // Définition des valeurs de la nouvelle instruction
1371     $valNewInstr["evenement"] = $row['evenement_retour_ar'];
1372     $valNewInstr["destinataire"] = $this->valF['destinataire'];
1373     $valNewInstr["dossier"] = $this->valF['dossier'];
1374 vpihour 2749 $valNewInstr["date_evenement"] = $this->f->formatDate($this->valF['date_retour_rar']);
1375 softime 2562 $valNewInstr["date_envoi_signature"] = $this->f->formatDate($this->valF['date_envoi_signature']);
1376     $valNewInstr["date_retour_signature"] = $this->f->formatDate($this->valF['date_retour_signature']);
1377     $valNewInstr["date_envoi_rar"] = $this->f->formatDate($this->valF['date_envoi_rar']);
1378     $valNewInstr["date_retour_rar"] = $this->f->formatDate($this->valF['date_retour_rar']);
1379     $valNewInstr["date_envoi_controle_legalite"] = $this->f->formatDate($this->valF['date_envoi_controle_legalite']);
1380     $valNewInstr["date_retour_controle_legalite"] = $this->f->formatDate($this->valF['date_retour_controle_legalite']);
1381     $new_instruction->ajouter($valNewInstr,$db, $DEBUG);
1382     }
1383     }
1384    
1385 fmichon 1540 /**
1386     * REFERENTIEL ARRETE
1387     */
1388 nhaye 2561 // Si l'option référentiel arrêté est activé et l'événement est de type
1389     // arrêté
1390     if ($this->f->getParameter('option_referentiel_arrete') != "" AND
1391     $type_evmt == "arrete") {
1392 fmichon 1540 if ($this->valF['date_retour_signature'] != $this->getVal('date_retour_signature')) {
1393     $msgenque = new MessageEnqueuer();
1394     $sqlArrete = "SELECT instruction.signataire_arrete as \"ws_DA_In_Signataire\",
1395     signataire_arrete.nom as \"ws_DA_In_Sign_Nom\",
1396     signataire_arrete.prenom as \"ws_DA_In_Sign_Prenom\",
1397     signataire_arrete.qualite as \"ws_DA_In_Sign_Qualite\",
1398     instruction.date_evenement as \"ws_DA_In_Dte_Redac\",
1399     '' as \"ws_DA_In_lieu_Redac\",
1400     instruction.dossier as \"ws_DA_In_N_Doss_DAS\",
1401     '' as \"ws_DA_In_Sigle\",
1402     instruction.etat as \"ws_DA_In_Decision\",
1403     dossier.date_depot as \"ws_DA_In_Dte_Depot_Dem\",
1404 nhaye 2561 dossier.terrain_adresse_voie_numero as \"ws_DA_In_N_Voie\",
1405 fmichon 1540 '' as \"ws_DA_In_Type_Voie\",
1406 softime 2061 dossier.terrain_adresse_voie as \"ws_DA_In_Adresse1\",
1407 fmichon 1540 dossier.terrain_adresse_lieu_dit as \"ws_DA_In_Adresse2\",
1408     dossier.terrain_adresse_code_postal as \"ws_DA_In_CP\",
1409     dossier.terrain_adresse_localite as \"ws_DA_In_Ville\",
1410     dossier.terrain_references_cadastrales as \"ws_DA_In_Nb_Parcelle\",
1411     '' as \"ws_DA_In_Detail_Parcelle\",
1412     CONCAT(donnees_techniques.am_projet_desc,' ',donnees_techniques.co_projet_desc) as \"ws_DA_In_Nature_Trvx\",
1413     '' as \"ws_DA_In_Destination_Trvx\",
1414     dossier_autorisation_type_detaille.code as \"ws_DA_In_Type_Dos_Autoris\",
1415     COALESCE(particulier_nom,personne_morale_raison_sociale) as \"ws_DA_In_Nom_Petition\",
1416     COALESCE(particulier_prenom, personne_morale_denomination) as \"ws_DA_In_Prenom_Petition\",
1417     '' as \"ws_DA_In_Piece_GED\",
1418     instruction.date_retour_signature as \"ws_DA_In_Dte_Signature\"
1419     FROM ".DB_PREFIXE."instruction
1420     LEFT JOIN ".DB_PREFIXE."signataire_arrete ON
1421     instruction.signataire_arrete = signataire_arrete.signataire_arrete
1422     LEFT JOIN ".DB_PREFIXE."dossier ON
1423     instruction.dossier = dossier.dossier
1424     LEFT JOIN ".DB_PREFIXE."lien_dossier_demandeur ON
1425     lien_dossier_demandeur.dossier = dossier.dossier
1426     LEFT JOIN ".DB_PREFIXE."demandeur ON
1427     lien_dossier_demandeur.demandeur = demandeur.demandeur
1428     LEFT JOIN ".DB_PREFIXE."dossier_instruction_type ON
1429     dossier.dossier_instruction_type = dossier_instruction_type.dossier_instruction_type
1430     LEFT JOIN ".DB_PREFIXE."dossier_autorisation_type_detaille ON
1431     dossier_instruction_type.dossier_autorisation_type_detaille =
1432     dossier_autorisation_type_detaille.dossier_autorisation_type_detaille
1433     LEFT JOIN ".DB_PREFIXE."donnees_techniques ON
1434     donnees_techniques.dossier_instruction = dossier.dossier
1435     WHERE instruction.instruction = ".$this->valF['instruction'];
1436     $resArrete = $this->db->query($sqlArrete);
1437 softime 2562 $this->f->addToLog("triggermodifierapres(): db->query(\"".$sqlArrete."\");", VERBOSE_MODE);
1438 vpihour 1777 if ( database::isError($resArrete)){
1439     die();
1440     }
1441 fmichon 1540
1442     $rowArrete = $resArrete->fetchRow(DB_FETCHMODE_ASSOC);
1443     $msgenque->setArreteInfo($rowArrete);
1444     $msgenque->enqueueMessage($msgenque::$ARRETE_ENVOI);
1445     }
1446 nhaye 1299 }
1447 nhaye 1643
1448     // Mise à jour des données du dossier d'autorisation
1449     require_once "../obj/dossier_autorisation.class.php";
1450 softime 2025 $da = new dossier_autorisation($this->getNumDemandeAutorFromDossier($this->valF['dossier']), $this->db, DEBUG);
1451 nhaye 1643 $da->majDossierAutorisation();
1452 fraynaud 129 }
1453    
1454 fraynaud 20 function triggersupprimer($id,&$db,$val,$DEBUG) {
1455 fmichon 1540 /**
1456     * L'objectif ici est de repositionner les valeurs récupérées en
1457     * archive dans le dossier d'instruction avant de supprimer l'événement
1458     * d'instruction
1459     */
1460 vpihour 2603
1461     // Mise à jour des 4 valeurs modifiées par l'action
1462     $valF['delai'] = $val['archive_delai'];
1463     $valF['accord_tacite'] = $val['archive_accord_tacite'];
1464     $valF['etat'] = $val['archive_etat'];
1465     if ($val['archive_avis'] != '') {
1466     $valF['avis_decision'] = $val['archive_avis'];
1467     } else {
1468     $valF['avis_decision'] = NULL;
1469     }
1470     // Mise à jour des 10 dates avec la valeur présente dans le formulaire
1471     // de suppression. Si la valeur de la date est vide alors on fixe
1472     // à la valeur NULL
1473     //
1474     if ($val['archive_date_complet'] != '') {
1475     $valF['date_complet'] = $val['archive_date_complet'];
1476     } else {
1477     $valF['date_complet'] = NULL;
1478     }
1479     if ($val['archive_date_dernier_depot'] != '') {
1480     $valF['date_dernier_depot'] = $val['archive_date_dernier_depot'];
1481     } else {
1482     $valF['date_dernier_depot'] = NULL;
1483     }
1484     if ($val['archive_date_rejet'] != '') {
1485     $valF['date_rejet'] = $val['archive_date_rejet'];
1486     } else {
1487     $valF['date_rejet'] = NULL;
1488     }
1489     if ($val['archive_date_limite'] != '') {
1490     $valF['date_limite'] = $val['archive_date_limite'];
1491     } else {
1492     $valF['date_limite'] = NULL;
1493     }
1494     if ($val['archive_date_notification_delai'] != '') {
1495     $valF['date_notification_delai'] = $val['archive_date_notification_delai'];
1496     } else {
1497     $valF['date_notification_delai'] = NULL;
1498     }
1499     if ($val['archive_date_decision'] != '') {
1500     $valF['date_decision'] = $val['archive_date_decision'];
1501     } else {
1502     $valF['date_decision'] = NULL;
1503     }
1504     if ($val['archive_date_validite'] != '') {
1505     $valF['date_validite'] = $val['archive_date_validite'];
1506     } else {
1507     $valF['date_validite'] = NULL;
1508     }
1509     if ($val['archive_date_achevement'] != '') {
1510     $valF['date_achevement'] = $val['archive_date_achevement'];
1511     } else {
1512     $valF['date_achevement'] = NULL;
1513     }
1514     if ($val['archive_date_chantier'] != '') {
1515     $valF['date_chantier'] = $val['archive_date_chantier'];
1516     } else {
1517     $valF['date_chantier'] = NULL;
1518     }
1519     if ($val['archive_date_conformite'] != '') {
1520     $valF['date_conformite'] = $val['archive_date_conformite'];
1521     } else {
1522     $valF['date_conformite'] = NULL;
1523     }
1524     if ($val['archive_incompletude'] != '') {
1525     $valF['incompletude'] = $val['archive_incompletude'];
1526     } else {
1527     $valF['incompletude'] = NULL;
1528     }
1529     if ($val['archive_evenement_suivant_tacite'] != '') {
1530     $valF['evenement_suivant_tacite'] = $val['archive_evenement_suivant_tacite'];
1531     } else {
1532     $valF['evenement_suivant_tacite'] = NULL;
1533     }
1534     if ($val['archive_evenement_suivant_tacite_incompletude'] != '') {
1535     $valF['evenement_suivant_tacite_incompletude'] = $val['archive_evenement_suivant_tacite_incompletude'];
1536     } else {
1537     $valF['evenement_suivant_tacite_incompletude'] = NULL;
1538     }
1539     if ($val['archive_etat_pendant_incompletude'] != '') {
1540     $valF['etat_pendant_incompletude'] = $val['archive_etat_pendant_incompletude'];
1541     } else {
1542     $valF['etat_pendant_incompletude'] = NULL;
1543     }
1544     if ($val['archive_date_limite_incompletude'] != '') {
1545     $valF['date_limite_incompletude'] = $val['archive_date_limite_incompletude'];
1546     } else {
1547     $valF['date_limite_incompletude'] = NULL;
1548     }
1549     if ($val['archive_delai_incompletude'] != '') {
1550     $valF['delai_incompletude'] = $val['archive_delai_incompletude'];
1551     } else {
1552     $valF['delai_incompletude'] = NULL;
1553     }
1554     if ($val['archive_autorite_competente'] != '') {
1555     $valF['autorite_competente'] = $val['archive_autorite_competente'];
1556     } else {
1557     $valF['autorite_competente'] = NULL;
1558     }
1559     // On met à jour le dossier
1560     $cle = " dossier='".$val['dossier']."'";
1561     $res = $db->autoExecute(DB_PREFIXE.'dossier', $valF, DB_AUTOQUERY_UPDATE, $cle);
1562     $this->addToLog("triggersupprimer(): db->autoexecute(\"".DB_PREFIXE."dossier\", ".print_r($valF, true).", DB_AUTOQUERY_UPDATE, \"".$cle."\");", VERBOSE_MODE);
1563     if (database::isError($res)) {
1564     die($res->getMessage());
1565     }
1566     // Affichage d'informations à l'utilisateur
1567     $this->addToMessage(_("Suppression de l'instruction")." [".$db->affectedRows()." "._('enregistrement')." "._('mis_a_jour')."]");
1568    
1569     // Mise à jour de la demande si un récépissé d'instruction correspond à l'instruction à supprimer
1570 fraynaud 20 }
1571 fmichon 1540
1572 nhaye 1643 function triggersupprimerapres($id,&$db,$val,$DEBUG) {
1573    
1574     // Mise à jour des données du dossier d'autorisation
1575     require_once "../obj/dossier_autorisation.class.php";
1576 softime 2025 $da = new dossier_autorisation($this->getNumDemandeAutorFromDossier($val["dossier"]), $this->db, DEBUG);
1577 nhaye 1643 $da->majDossierAutorisation();
1578     }
1579    
1580 vpihour 1137 // Vérifie la restriction sur l'événement
1581     function verifier($val = array(), &$db, $DEBUG){
1582 nhaye 1186 parent::verifier($val, $db, $DEBUG);
1583 vpihour 1784
1584     if ( isset($val['evenement']) && is_numeric($val['evenement'])){
1585 nhaye 2412 //Récupère la restriction
1586 vpihour 1784 $sql= "SELECT
1587     restriction
1588     FROM
1589     ".DB_PREFIXE."evenement
1590     WHERE
1591     evenement =".$val['evenement'];
1592    
1593     $res = $db->query($sql);
1594     $this->addToLog("verifier(): db->query(\"".$sql."\");", VERBOSE_MODE);
1595     if (database::isError($res)) {
1596     die($res->getMessage());
1597     }
1598     $row=& $res->fetchRow(DB_FETCHMODE_ASSOC);
1599    
1600     //Test qu'une restriction est présente
1601     if ( isset($row['restriction']) && $row['restriction'] != "" ){
1602 softime 2305
1603     $restriction = $row['restriction'];
1604 vpihour 1137
1605 vpihour 1784 //Test si la restriction est valide
1606 softime 2305 if ( !$this->restrictionIsValid($restriction) ){
1607 vpihour 1784
1608     $this->correct=false;
1609     $this->addToMessage(_("Restriction non valide"));
1610     }
1611     else {
1612    
1613     $this->correct = true;
1614     }
1615 softime 2305
1616     // Liste des opérateurs possible
1617     $operateurs = array(">=", "<=", "+", "-");
1618    
1619     // Supprime tous les espaces de la chaîne de caractère
1620     $restriction = str_replace(' ', '', $restriction);
1621    
1622     // Met des espace avant et après les opérateurs puis transforme la
1623     // chaine en un tableau
1624     $tabRestriction = str_replace($operateurs, " ", $restriction);
1625     // Tableau des champ
1626     $tabRestriction = explode(" ", $tabRestriction);
1627     // Supprime les numériques du tableau
1628     foreach ($tabRestriction as $key => $value) {
1629     if (is_numeric($value)) {
1630     unset($tabRestriction[$key]);
1631     }
1632     }
1633    
1634     // Vérifie les champs utilisés pour la restriction
1635     $check_field_exist = $this->f->check_field_exist($tabRestriction, 'instruction');
1636     if ($check_field_exist !== true) {
1637    
1638     // Liste des champs en erreur
1639     $string_error_fields = implode(", ", $check_field_exist);
1640    
1641     // Message d'erreur
1642     $error_message = _("Le champ %s n'est pas utilisable pour le champ %s");
1643     if (count($check_field_exist) > 1) {
1644     $error_message = _("Les champs %s ne sont pas utilisable pour le champ %s");
1645     }
1646    
1647     // Affiche l'erreur
1648     $this->correct=false;
1649     $this->addToMessage(sprintf($error_message, $string_error_fields, _("restriction")));
1650     $this->addToMessage(_("Veuillez contacter votre administrateur."));
1651     }
1652 vpihour 1137 }
1653 softime 2305
1654 vpihour 1137 }
1655 nhaye 2412 if(!$this->updateDate("date_envoi_signature")) {
1656     return false;
1657     }
1658     if(!$this->updateDate("date_retour_signature")) {
1659     return false;
1660     }
1661     if(!$this->updateDate("date_envoi_rar")) {
1662     return false;
1663     }
1664     if(!$this->updateDate("date_retour_rar")) {
1665     return false;
1666     }
1667     if(!$this->updateDate("date_envoi_controle_legalite")) {
1668     return false;
1669     }
1670     if(!$this->updateDate("date_retour_controle_legalite")) {
1671     return false;
1672     }
1673 vpihour 1921
1674 vpihour 1137 }
1675 vpihour 1284
1676 nhaye 1724 /**
1677     * Méthode permettant de récupérer toutes les valeurs de l'événement
1678     * sélectionné après validation du formulaire d'instruction
1679     *
1680     * @return array() veleurs de l'événement lié
1681     */
1682    
1683     private function getValEvenement() {
1684     if(!empty($this->valEvenement)) {
1685     return $this->valEvenement;
1686     } else {
1687     $sql = "SELECT * FROM ".DB_PREFIXE."evenement
1688     WHERE evenement=".$this->valF['evenement'];
1689     $res = $this->db->query($sql);
1690     $this->addToLog("getValEvenement(): db->query(\"".$sql."\");", VERBOSE_MODE);
1691     if (database::isError($res)) {
1692     die($res->getMessage());
1693     }
1694     $this->valEvenement = $res->fetchRow(DB_FETCHMODE_ASSOC);
1695     return $this->valEvenement;
1696     }
1697     }
1698    
1699     /**
1700     * Méthode permettant de savoir si le dossier lié à l'instruction à le flag
1701     * incompletude à true après validation du formulaire d'instruction
1702     *
1703     * @return boolean
1704     */
1705     private function dossierIncomplet() {
1706     $sql = "SELECT incompletude FROM ".DB_PREFIXE."dossier
1707     WHERE dossier='".$this->valF['dossier']."'";
1708     $incompletude = $this->db->getOne($sql);
1709     $this->addToLog("dossierIncomplet(): db->query(\"".$sql."\");", VERBOSE_MODE);
1710     if (database::isError($incompletude)) {
1711     die($incompletude->getMessage());
1712     }
1713     if ($incompletude == 't') {
1714     return true;
1715     } else {
1716     return false;
1717     }
1718     }
1719 vpihour 1921
1720     /**
1721 nhaye 1949 * Finalisation des documents.
1722     * @param string $champ champ du fichier à finaliser
1723     * @param booleen $status permet de définir si on finalise ou définalise
1724     * @param string $sousform permet de savoir si se trouve dans un sousformulaire (passé au javascript)
1725 vpihour 1921 */
1726 vpihour 1986 function finaliser( $champ = '', $status, $sousform, $retourformulaire){
1727 nhaye 1724
1728 vpihour 1921 //Si on finalise le document
1729     if ( $status == 1 ){
1730    
1731     //Génération du PDF
1732     $_GET['output'] = "string";
1733     $f = $this->f;
1734     include '../app/pdf_instruction.php';
1735    
1736     //Métadonnées du document
1737     $metadata = array(
1738 vpihour 1927 'filename' => 'instruction_'.$idx.'.pdf',
1739 vpihour 1921 'mimetype' => 'application/pdf',
1740     'size' => strlen($pdf_output)
1741     );
1742    
1743 nhaye 1928 // Récupération des métadonnées calculées après validation
1744 nhaye 1938 $spe_metadata = $this->getMetadata("om_fichier_instruction");
1745 nhaye 1928
1746     $metadata = array_merge($metadata, $spe_metadata);
1747 vpihour 1921 //Si le document a déjà été finalisé
1748     //on met à jour le document mais pas son uid
1749 vpihour 1927 if ( $this->getVal("om_fichier_instruction") != '' ){
1750     $uid = $this->f->storage->update(
1751     $this->getVal("om_fichier_instruction"), $pdf_output, $metadata);
1752 vpihour 1921 }
1753     //Sinon, on joute le document et on récupère son uid
1754     else {
1755     //Stockage du PDF
1756     $uid = $this->f->storage->create($pdf_output, $metadata);
1757     }
1758     }
1759     else {
1760     //Récupération de l'uid du document finalisé
1761 vpihour 1927 $uid = $this->getVal("om_fichier_instruction");
1762 vpihour 1921
1763     //On dé-finalise avant de finaliser
1764 vpihour 2603 if ( $uid == '' || $uid == 'OP_FAILURE' ){
1765 vpihour 1921 return -1;
1766     }
1767     }
1768    
1769     //Mise à jour des données
1770 vpihour 2789 if ( $uid != '' && $uid != 'OP_FAILURE' ){
1771 vpihour 1921 // Logger
1772 vpihour 1927 $this->addToLog("finaliser() - begin", EXTRA_VERBOSE_MODE);
1773 vpihour 1921 // Recuperation de la valeur de la cle primaire de l'objet
1774 vpihour 1927 if($this->getVal($this->clePrimaire) != '')
1775     $id = $this->getVal($this->clePrimaire);
1776 vpihour 1921 else
1777     $id=$this->id;
1778 vpihour 1986
1779     $actions = array();
1780 vpihour 1921 //Tableau contenant le lien vers le PDF et lien du portlet pour la mise
1781     //à jour de l'interface
1782     if ( $status == 0 ){
1783     $lien = '../app/pdf_instruction.php?idx='.$id;
1784 vpihour 1986
1785     //Ajout des actions
1786     //Si l'utilisateur a le droit de modifier l'objet
1787     if ( $this->f->isAccredited('instruction') ||
1788     $this->f->isAccredited('instruction_modifier') ){
1789    
1790     $actions["modifier"] = ($sousform!='')?
1791     '<li><a href="#" onclick="ajaxIt(\'instruction\',
1792     \'../scr/sousform.php?obj=instruction&amp;action=1&amp;idx='.
1793     $this->getVal($this->clePrimaire).
1794     '&amp;premiersf=0&amp;trisf=&amp;retourformulaire='.$retourformulaire.'&amp;idxformulaire='.
1795     $this->getVal("dossier").
1796     '&amp;retour=form\');">
1797     <span class="om-prev-icon om-icon-16 edit-16" title="'.
1798     _('Modifier').'">'.
1799     _('Modifier').
1800     '</span></a></li>':
1801     '<li>
1802     <a href="form.php?obj=instruction&amp;action=1'.'&amp;idx='.
1803     $this->getVal($this->clePrimaire).
1804     '&amp;premier=&amp;advs_id=&amp;recherche=&amp;tricol=&amp;selectioncol=&amp;valide=&amp;retour=form">
1805     <span class="om-prev-icon om-icon-16 edit-16" title="'.
1806     _('Modifier').'">'.
1807     _('Modifier').
1808     '</span></a></li>';
1809     }
1810 softime 1994 //Si l'utilisateur a le droit de supprimer l'objet
1811 vpihour 1986 if ( $this->f->isAccredited('instruction') ||
1812     $this->f->isAccredited('instruction_supprimer') ){
1813    
1814     $actions["supprimer"] = ($sousform!='')?
1815     '<li><a href="#" onclick="ajaxIt(\'instruction\',
1816     \'../scr/sousform.php?obj=instruction&amp;action=2&amp;idx='.
1817     $this->getVal($this->clePrimaire).
1818     '&amp;premiersf=0&amp;trisf=&amp;retourformulaire='.$retourformulaire.'&amp;idxformulaire='.
1819     $this->getVal("dossier").
1820     '&amp;retour=form\');">
1821     <span class="om-prev-icon om-icon-16 delete-16" title="'.
1822     _('Supprimer').'">'.
1823     _('Supprimer').
1824     '</span></a></li>':
1825     '<li>
1826     <a href="form.php?obj=instruction&amp;action=1'.'&amp;idx='.
1827     $this->getVal($this->clePrimaire).
1828     '&amp;premier=&amp;advs_id=&amp;recherche=&amp;tricol=&amp;selectioncol=&amp;valide=&amp;retour=form">
1829     <span class="om-prev-icon om-icon-16 delete-16" title="'.
1830     _('Supprimer').'">'.
1831     _('Supprimer').
1832     '</span></a></li>';
1833     }
1834 vpihour 1921 }
1835     else {
1836     $lien = '../spg/file.php?obj=instruction&'.
1837     'champ=om_fichier_instruction&id='.$id;
1838     }
1839    
1840     $retour = array(
1841     "portlet"=> "<a href=\"#\" onclick=\"finalizeDocument(".
1842     $id.", 'instruction', '".$sousform."', ".(($status==0)?1:0).")\">
1843 vpihour 1986 <span class=\"om-prev-icon om-icon-16 om-icon-fix "
1844 vpihour 1921 .(($status==1)?"de":"")."finalise\" title=\"".
1845     (($status==1)?_("Reprendre la redaction du document"):_("Finaliser le document"))."\">".
1846     (($status==1)?_("Reprendre la redaction du document"):_("Finaliser le document"))."</span>
1847     </a>",
1848 vpihour 1986 "pdf" => $lien,
1849     "actions" => $actions
1850 vpihour 1921 );
1851    
1852     foreach ( $this->champs as $key=>$value )
1853     $val[$value] = $this->val[$key];
1854     $val['date_evenement']=$this->dateDBToForm($val['date_evenement']);
1855     $val['archive_date_complet']=$this->dateDBToForm($val['archive_date_complet']);
1856     $val['archive_date_rejet']=$this->dateDBToForm($val['archive_date_rejet']);
1857     $val['archive_date_limite']=$this->dateDBToForm($val['archive_date_limite']);
1858     $val['archive_date_notification_delai']=$this->dateDBToForm($val['archive_date_notification_delai']);
1859     $val['archive_date_decision']=$this->dateDBToForm($val['archive_date_decision']);
1860     $val['archive_date_validite']=$this->dateDBToForm($val['archive_date_validite']);
1861     $val['archive_date_achevement']=$this->dateDBToForm($val['archive_date_achevement']);
1862     $val['archive_date_chantier']=$this->dateDBToForm($val['archive_date_chantier']);
1863     $val['archive_date_conformite']=$this->dateDBToForm($val['archive_date_conformite']);
1864     $val['archive_date_dernier_depot']=$this->dateDBToForm($val['archive_date_dernier_depot']);
1865     $val['archive_date_limite_incompletude']=$this->dateDBToForm($val['archive_date_limite_incompletude']);
1866     $val['date_finalisation_courrier']=$this->dateDBToForm($val['date_finalisation_courrier']);
1867     $val['date_envoi_signature']=$this->dateDBToForm($val['date_envoi_signature']);
1868     $val['date_retour_signature']=$this->dateDBToForm($val['date_retour_signature']);
1869     $val['date_envoi_rar']=$this->dateDBToForm($val['date_envoi_rar']);
1870     $val['date_retour_rar']=$this->dateDBToForm($val['date_retour_rar']);
1871     $val['date_envoi_controle_legalite']=$this->dateDBToForm($val['date_envoi_controle_legalite']);
1872     $val['date_retour_controle_legalite']=$this->dateDBToForm($val['date_retour_controle_legalite']);
1873    
1874     $this->setvalF($val);
1875    
1876     // Verification de la validite des donnees
1877     $this->verifier($this->val, $this->db, DEBUG);
1878     // Verification du verrou
1879     $this->testverrou();
1880     // Si les verifications precedentes sont correctes, on procede a
1881     // la modification, sinon on ne fait rien et on retourne une erreur
1882     if ($this->correct) {
1883     // Execution du trigger 'before' specifique au MODE 'update'
1884     $this->triggermodifier( $id, $this->db, $this->val, DEBUG);
1885     $valF = array(
1886     "om_final_instruction"=> ($status==1)?TRUE:FALSE,
1887 vpihour 1966 "om_fichier_instruction"=>$uid,
1888     "date_finalisation_courrier"=>date('Y-m-d'));
1889 vpihour 1921 // Execution de la requête de modification des donnees de l'attribut
1890     // valF de l'objet dans l'attribut table de l'objet
1891     $res = $this->db->autoExecute(DB_PREFIXE.$this->table, $valF,
1892     DB_AUTOQUERY_UPDATE, $this->getCle($id));
1893 vpihour 1927 $this->addToLog("finaliser() : db->autoExecute(\"".DB_PREFIXE.$this->table."\", ".print_r($valF, true).", DB_AUTOQUERY_UPDATE, \"".$this->getCle($id)."\")", VERBOSE_MODE);
1894 vpihour 1921 // Si une erreur survient
1895     if (database::isError($res)) {
1896     // Appel de la methode de recuperation des erreurs
1897     $this->erreur_db($res->getDebugInfo(), $res->getMessage(), '');
1898     } else {
1899     // Log
1900     $this->addToLog(_("Requete executee"), VERBOSE_MODE);
1901     // Log
1902     $message = _("Enregistrement")."&nbsp;".$id."&nbsp;";
1903     $message .= _("de la table")."&nbsp;\"".$this->table."\"&nbsp;";
1904     $message .= "[&nbsp;".$this->db->affectedRows()."&nbsp;";
1905     $message .= _("enregistrement(s) mis a jour")."&nbsp;]";
1906     $this->addToLog($message, VERBOSE_MODE);
1907     // Mise en place du verrou pour ne pas finaliser plusieurs fois
1908     // le meme document
1909     $this->verrouille();
1910     // Execution du trigger 'after' specifique au MODE 'update'
1911     //$this->triggermodifierapres($id, $this->db, $val, DEBUG);
1912    
1913     return $retour;
1914     }
1915     } else {
1916     // Message d'echec (saut d'une ligne supplementaire avant le
1917     // message pour qu'il soit mis en evidence)
1918 vpihour 2290 $this->addToLog(_("Finalisation non enregistree"));
1919 vpihour 1921 return -1;
1920     }
1921     }
1922     // Si le document n'a pas été stocké
1923     else{
1924     return -1;
1925     }
1926     }
1927 vpihour 1927
1928     /**
1929 nhaye 1928 * Récupération du numéro de dossier d'instruction à ajouter aux métadonnées
1930 nhaye 1949 * @return string numéro de dossier d'instruction
1931 nhaye 1928 */
1932     protected function getDossier() {
1933     if(empty($this->specificMetadata)) {
1934     $this->getSpecificMetadata();
1935     }
1936     return $this->specificMetadata->dossier;
1937     }
1938     /**
1939 softime 2016 * Récupération la version du dossier d'instruction à ajouter aux métadonnées
1940     * @return int Version
1941     */
1942     protected function getDossierVersion() {
1943     if(empty($this->specificMetadata)) {
1944     $this->getSpecificMetadata();
1945     }
1946     return $this->specificMetadata->version;
1947     }
1948     /**
1949 nhaye 1928 * Récupération du numéro de dossier d'autorisation à ajouter aux métadonnées
1950 nhaye 1949 * @return string numéro de dossier d'autorisation
1951 nhaye 1928 */
1952 softime 2025 protected function getNumDemandeAutor() {
1953 nhaye 1928 if(empty($this->specificMetadata)) {
1954     $this->getSpecificMetadata();
1955     }
1956     return $this->specificMetadata->dossier_autorisation;
1957     }
1958     /**
1959     * Récupération de la date de demande initiale du dossier à ajouter aux métadonnées
1960 nhaye 1949 * @return date de la demande initiale
1961 nhaye 1928 */
1962 softime 2025 protected function getAnneemoisDemandeAutor() {
1963 nhaye 1928 if(empty($this->specificMetadata)) {
1964     $this->getSpecificMetadata();
1965     }
1966     return $this->specificMetadata->date_demande_initiale;
1967     }
1968     /**
1969     * Récupération du type de dossier d'instruction à ajouter aux métadonnées
1970 nhaye 1949 * @return string type du dossier d'instruction
1971 nhaye 1928 */
1972 softime 2025 protected function getTypeInstruction() {
1973 nhaye 1928 if(empty($this->specificMetadata)) {
1974     $this->getSpecificMetadata();
1975     }
1976     return $this->specificMetadata->dossier_instruction_type;
1977     }
1978     /**
1979     * Récupération du statut du dossier d'autorisation à ajouter aux métadonnées
1980 nhaye 1949 * @return string avis
1981 nhaye 1928 */
1982 softime 2025 protected function getStatutAutorisation() {
1983 nhaye 1928 if(empty($this->specificMetadata)) {
1984     $this->getSpecificMetadata();
1985     }
1986     return $this->specificMetadata->statut;
1987     }
1988     /**
1989     * Récupération du type de dossier d'autorisation à ajouter aux métadonnées
1990 nhaye 1949 * @return string type du dossier d'autorisation
1991 nhaye 1928 */
1992 softime 2025 protected function getTypeAutorisation() {
1993 nhaye 1928 if(empty($this->specificMetadata)) {
1994     $this->getSpecificMetadata();
1995     }
1996     return $this->specificMetadata->dossier_autorisation_type;
1997     }
1998     /**
1999     * Récupération de la date d'ajout de document à ajouter aux métadonnées
2000 nhaye 1949 * @return date de l'évènement
2001 nhaye 1928 */
2002 softime 2025 protected function getDateEvenementDocument() {
2003 softime 2046 return date("Y-m-d");
2004 nhaye 1928 }
2005     /**
2006     * Récupération du groupe d'instruction à ajouter aux métadonnées
2007     * @return string Groupe d'instruction
2008     */
2009     protected function getGroupeInstruction() {
2010     if(empty($this->specificMetadata)) {
2011     $this->getSpecificMetadata();
2012     }
2013     return $this->specificMetadata->groupe_instruction;
2014     }
2015 softime 2002 /**
2016     * Récupération du libellé du type du document à ajouter aux métadonnées
2017     * @return string Groupe d'instruction
2018     */
2019 softime 2025 protected function getTitle() {
2020 nhaye 1928
2021 softime 2002 // Récupère le champ événement
2022     if (isset($this->valF["evenement"]) AND $this->valF["evenement"] != "") {
2023     $evenement = $this->valF["evenement"];
2024     } else {
2025     $evenement = $this->getVal("evenement");
2026     }
2027    
2028     // Requête sql
2029     $sql = "SELECT libelle FROM ".DB_PREFIXE."evenement
2030     WHERE evenement=".$evenement;
2031     $evenement_libelle = $this->db->getOne($sql);
2032 softime 2025 $this->addToLog("getTitle(): db->getOne(\"".$sql."\");", VERBOSE_MODE);
2033 softime 2002 if (database::isError($evenement_libelle)) {
2034     die();
2035     }
2036    
2037     // Retourne le libelle de l'événement
2038     return $evenement_libelle;
2039     }
2040    
2041 nhaye 1928 /**
2042     * Cette méthode permet de stocker en attribut toutes les métadonnées
2043     * nécessaire à l'ajout d'un document.
2044     */
2045     public function getSpecificMetadata() {
2046     if (isset($this->valF["dossier"]) AND $this->valF["dossier"] != "") {
2047     $dossier = $this->valF["dossier"];
2048     } else {
2049     $dossier = $this->getVal("dossier");
2050     }
2051     //Requête pour récupérer les informations essentiels sur le dossier d'instruction
2052     $sql = "SELECT dossier.dossier as dossier,
2053     dossier_autorisation.dossier_autorisation as dossier_autorisation,
2054     to_char(dossier.date_demande, 'YYYY/MM') as date_demande_initiale,
2055     dossier_instruction_type.code as dossier_instruction_type,
2056     etat_dossier_autorisation.libelle as statut,
2057     dossier_autorisation_type.code as dossier_autorisation_type,
2058     groupe.code as groupe_instruction
2059     FROM ".DB_PREFIXE."dossier
2060     LEFT JOIN ".DB_PREFIXE."dossier_instruction_type
2061     ON dossier.dossier_instruction_type = dossier_instruction_type.dossier_instruction_type
2062     LEFT JOIN ".DB_PREFIXE."dossier_autorisation
2063     ON dossier.dossier_autorisation = dossier_autorisation.dossier_autorisation
2064     LEFT JOIN ".DB_PREFIXE."etat_dossier_autorisation
2065     ON dossier_autorisation.etat_dossier_autorisation = etat_dossier_autorisation.etat_dossier_autorisation
2066     LEFT JOIN ".DB_PREFIXE."dossier_autorisation_type_detaille
2067     ON dossier_autorisation.dossier_autorisation_type_detaille = dossier_autorisation_type_detaille.dossier_autorisation_type_detaille
2068     LEFT JOIN ".DB_PREFIXE."dossier_autorisation_type
2069     ON dossier_autorisation_type_detaille.dossier_autorisation_type = dossier_autorisation_type.dossier_autorisation_type
2070     LEFT JOIN ".DB_PREFIXE."groupe
2071     ON dossier_autorisation_type.groupe = groupe.groupe
2072     WHERE dossier.dossier = '".$dossier."'";
2073     $res = $this->db->query($sql);
2074 softime 2030 $this->f->addToLog("getSpecificMetadata() : db->query(".$sql.")", VERBOSE_MODE);
2075 nhaye 1928 if ( database::isError($res)){
2076     die();
2077     }
2078    
2079     //Le résultat est récupéré dans un objet
2080     $row =& $res->fetchRow(DB_FETCHMODE_OBJECT);
2081    
2082     //Si il y a un résultat
2083     if ($row !== null) {
2084 vpihour 2119
2085     //Génération du numéro de version
2086     $sql = "SELECT
2087     count(*)
2088     FROM
2089     ".DB_PREFIXE."dossier
2090     LEFT JOIN
2091     ".DB_PREFIXE."dossier_autorisation
2092     ON
2093     dossier_autorisation.dossier_autorisation = dossier.dossier_autorisation
2094     LEFT JOIN
2095     ".DB_PREFIXE."dossier_instruction_type
2096     ON
2097     dossier_instruction_type.dossier_instruction_type = dossier.dossier_instruction_type
2098     WHERE
2099 vpihour 2124 dossier_autorisation.dossier_autorisation = '".$row->dossier_autorisation."'
2100 vpihour 2119 AND
2101 vpihour 2124 dossier_instruction_type.code = '".$row->dossier_instruction_type."'";
2102     $row->version = $this->db->getOne($sql);
2103 vpihour 2119 $this->f->addToLog("getSpecificMetadata(): db->getOne(\"".$sql."\")", VERBOSE_MODE);
2104 vpihour 2124 if ( database::isError($row->version)){
2105     $this->f->addToError("", $row->version, $row->version);
2106 vpihour 2119 return false;
2107     }
2108    
2109     //Formatage du numéro de version
2110 vpihour 2124 $row->version = str_pad($row->version, 2, "0", STR_PAD_LEFT);
2111 nhaye 1928
2112     //Alors on créé l'objet dossier_instruction
2113     $this->specificMetadata = $row;
2114    
2115     }
2116     }
2117 vpihour 1978
2118     /**
2119     * Retourne le statut du dossier d'instruction
2120     * @param string $idx Identifiant du dossier d'instruction
2121     * @return string Le statut du dossier d'instruction
2122     */
2123 softime 2025 function getStatutAutorisationDossier($idx){
2124 vpihour 1978
2125     $statut = '';
2126    
2127     //Si l'identifiant du dossier d'instruction fourni est correct
2128     if ( $idx != '' ){
2129    
2130     //On récupère le statut de l'état du dossier à partir de l'identifiant du
2131     //dossier
2132     $sql = "SELECT etat.statut
2133     FROM ".DB_PREFIXE."dossier
2134     LEFT JOIN
2135     ".DB_PREFIXE."etat
2136     ON
2137     dossier.etat = etat.etat
2138     WHERE dossier ='".$idx."'";
2139     $statut = $this->db->getOne($sql);
2140 softime 2025 $this->f->addToLog("getStatutAutorisationDossier() : db->getOne(\"".$sql."\")", VERBOSE_MODE);
2141 vpihour 1978 if ( database::isError($statut)){
2142     die();
2143     }
2144     }
2145     return $statut;
2146     }
2147 softime 2373
2148     /**
2149     * Récupère les données du dossier
2150     * @return array
2151     */
2152     function get_dossier_actual() {
2153    
2154     // Initialisation de la valeur de retour
2155     $return = array();
2156    
2157     // Récupération de toutes les valeurs du dossier d'instruction en cours
2158     $sql = "SELECT * FROM ".DB_PREFIXE."dossier
2159     WHERE dossier='".$this->valF['dossier']."'";
2160     $res = $this->db->query($sql);
2161     $this->addToLog("get_dossier_actual(): db->query(\"".$sql."\");", VERBOSE_MODE);
2162     $this->f->isDatabaseError($res);
2163    
2164     //
2165     while ($row=& $res->fetchRow(DB_FETCHMODE_ASSOC)) {
2166    
2167     // Récupération de la valeur actuelle du délai, de l'accord tacite,
2168     // de l'état et de l'avis du dossier d'instruction
2169     $return['archive_delai']=$row['delai'];
2170     $return['archive_accord_tacite']=$row['accord_tacite'];
2171     $return['archive_etat']=$row['etat'];
2172     $return['archive_avis']=$row['avis_decision'];
2173     // Récupération de la valeur actuelle des 9 dates du dossier
2174     // d'instruction
2175     $return['archive_date_complet']=$row['date_complet'];
2176     $return['archive_date_dernier_depot']=$row['date_dernier_depot'];
2177     $return['archive_date_rejet']= $row['date_rejet'];
2178     $return['archive_date_limite']= $row['date_limite'];
2179     $return['archive_date_notification_delai']= $row['date_notification_delai'];
2180     $return['archive_date_decision']= $row['date_decision'];
2181     $return['archive_date_validite']= $row['date_validite'];
2182     $return['archive_date_achevement']= $row['date_achevement'];
2183     $return['archive_date_chantier']= $row['date_chantier'];
2184     $return['archive_date_conformite']= $row['date_conformite'];
2185     $return['archive_incompletude']= $row['incompletude'];
2186     $return['archive_evenement_suivant_tacite']= $row['evenement_suivant_tacite'];
2187     $return['archive_evenement_suivant_tacite_incompletude']= $row['evenement_suivant_tacite_incompletude'];
2188     $return['archive_etat_pendant_incompletude']= $row['etat_pendant_incompletude'];
2189     $return['archive_date_limite_incompletude']= $row['date_limite_incompletude'];
2190     $return['archive_delai_incompletude']= $row['delai_incompletude'];
2191     $return['archive_autorite_competente']= $row['autorite_competente'];
2192     $return['duree_validite']= $row['duree_validite'];
2193     }
2194    
2195     // Retour de la fonction
2196     return $return;
2197    
2198     }
2199    
2200 softime 2613 /**
2201     * Permet de vérifier qu'un événement est verrouillable
2202     * @param integer $idx Identifiant de l'instruction
2203     * @return boolean
2204     */
2205     function checkEvenementNonVerrouillable($idx) {
2206    
2207     // Initialisation du résultat
2208     $non_verrouillable = false;
2209    
2210     // Si la condition n'est pas vide
2211     if ($idx != "") {
2212    
2213     // Requête SQL
2214     $sql = "SELECT evenement.non_verrouillable
2215     FROM ".DB_PREFIXE."evenement
2216     LEFT JOIN ".DB_PREFIXE."instruction
2217     ON instruction.evenement = evenement.evenement
2218     WHERE instruction.instruction = $idx";
2219     $this->f->addToLog("checkEvenementNonVerrouillable() : db->getOne(\"".$sql."\")", VERBOSE_MODE);
2220     $res = $this->db->getOne($sql);
2221     $this->f->isDatabaseError($res);
2222    
2223     // Si le retour de la requête est true
2224     if ($res == 't') {
2225     //
2226     $non_verrouillable = true;
2227     }
2228     }
2229    
2230     // Retourne résultat
2231     return $non_verrouillable;
2232     }
2233 vpihour 2643
2234     /**
2235     * Mise à jour des champs archive_*
2236     * @param mixed $row La ligne de données
2237     */
2238     public function updateArchiveData($row){
2239    
2240     // Récupération de la valeur actuelle du délai, de l'accord tacite,
2241     // de l'état et de l'avis du dossier d'instruction
2242     $this->valF['archive_delai']=$row['delai'];
2243     $this->valF['archive_accord_tacite']=$row['accord_tacite'];
2244     $this->valF['archive_etat']=$row['etat'];
2245     $this->valF['archive_avis']=$row['avis_decision'];
2246     // Récupération de la valeur actuelle des 9 dates du dossier
2247     // d'instruction
2248     if ($row['date_complet'] != '') {
2249     $this->valF['archive_date_complet']=$row['date_complet'];
2250     }
2251     if ($row['date_dernier_depot'] != '') {
2252     $this->valF['archive_date_dernier_depot']=$row['date_dernier_depot'];
2253     }
2254     if ($row['date_rejet']!='') {
2255     $this->valF['archive_date_rejet']= $row['date_rejet'];
2256     }
2257     if ($row['date_limite']!='') {
2258     $this->valF['archive_date_limite']= $row['date_limite'];
2259     }
2260     if ($row['date_notification_delai']!='') {
2261     $this->valF['archive_date_notification_delai']= $row['date_notification_delai'];
2262     }
2263     if ($row['date_decision']!='') {
2264     $this->valF['archive_date_decision']= $row['date_decision'];
2265     }
2266     if ($row['date_validite']!='') {
2267     $this->valF['archive_date_validite']= $row['date_validite'];
2268     }
2269     if ($row['date_achevement']!='') {
2270     $this->valF['archive_date_achevement']= $row['date_achevement'];
2271     }
2272     if ($row['date_chantier']!='') {
2273     $this->valF['archive_date_chantier']= $row['date_chantier'];
2274     }
2275     if ($row['date_conformite']!='') {
2276     $this->valF['archive_date_conformite']= $row['date_conformite'];
2277     }
2278     if ($row['incompletude']!='') {
2279     $this->valF['archive_incompletude']= $row['incompletude'];
2280     }
2281     if ($row['evenement_suivant_tacite']!='') {
2282     $this->valF['archive_evenement_suivant_tacite']= $row['evenement_suivant_tacite'];
2283     }
2284     if ($row['evenement_suivant_tacite_incompletude']!='') {
2285     $this->valF['archive_evenement_suivant_tacite_incompletude']= $row['evenement_suivant_tacite_incompletude'];
2286     }
2287     if ($row['etat_pendant_incompletude']!='') {
2288     $this->valF['archive_etat_pendant_incompletude']= $row['etat_pendant_incompletude'];
2289     }
2290     if ($row['date_limite_incompletude']!='') {
2291     $this->valF['archive_date_limite_incompletude']= $row['date_limite_incompletude'];
2292     }
2293     if ($row['delai_incompletude']!='') {
2294     $this->valF['archive_delai_incompletude']= $row['delai_incompletude'];
2295     }
2296     if ($row['autorite_competente']!='') {
2297     $this->valF['archive_autorite_competente']= $row['autorite_competente'];
2298     }
2299     if ($row['duree_validite']!='') {
2300     $this->valF['duree_validite']= $row['duree_validite'];
2301     }
2302     }
2303 fraynaud 3 }// fin classe
2304 atreal 208 ?>

Properties

Name Value
svn:keywords Id

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26