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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2805 - (show 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 <?php
2 /**
3 *
4 *
5 * specific :
6 * - cle secondaire
7 * destruction autorisée que pour le dernier evenement
8 * [delete the last event ]
9 * - variable globale [global variables]
10 * var $archive_date_depot;
11 * var $retourformulaire;
12 * var $idxformulaire;
13 * - modification des données dans dossier trigger avant
14 * [modify dossier data with trigger function]
15 * - function mois_date : pour ajouter des mois a une date
16 * [add months (delay) and calculation final date]
17 * - voir script_lang.js : bible ...
18 *
19 * @package openfoncier
20 * @version SVN : $Id$
21 */
22
23 //
24 require_once "../gen/obj/instruction.class.php";
25
26 //
27 require_once "../services/outgoing/messageenqueuer.php";
28
29 //
30 class instruction extends instruction_gen {
31
32 var $archive_date_depot; // specific
33 var $retourformulaire; // specific
34 var $idxformulaire; // specific
35 var $valEvenement;
36 // Tableau contenant une partie des métadonnées arrêtés
37 var $metadonneesArrete;
38
39 var $metadata = array(
40 "om_fichier_instruction" => array(
41 "dossier" => "getDossier",
42 "dossier_version" => "getDossierVersion",
43 "numDemandeAutor" => "getNumDemandeAutor",
44 "anneemoisDemandeAutor" => "getAnneemoisDemandeAutor",
45 "typeInstruction" => "getTypeInstruction",
46 "statutAutorisation" => "getStatutAutorisation",
47 "typeAutorisation" => "getTypeAutorisation",
48 "dateEvenementDocument" => "getDateEvenementDocument",
49 "groupeInstruction" => 'getGroupeInstruction',
50 "title" => 'getTitle',
51 ),
52 );
53
54
55 function __construct($id, &$db, $debug) {
56 $this->constructeur($id, $db, $debug);
57 }
58
59 // {{{ 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 // Si l'utilisateur est un intructeur qui ne correspond pas à la
68 // 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 //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 }
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
86 //Si le document est déjà finalisé, on affiche uniquement le lien de
87 //dé-finalisation
88 $om_final_instruction = $this->getVal("om_final_instruction");
89 if ( isset($this->actions_sup["finalisation"]) &&
90 $om_final_instruction== "t" ){
91
92 //On cache les liens d'action
93 $this->parameters["actions"]["modifier"] = NULL;
94 $this->parameters["actions"]["supprimer"] = NULL;
95 //On cache le lien de finalisation et on affiche le bon lien pour l'édition
96 $this->actions_sup["finalisation"] = NULL;
97 $this->actions_sup["pdfetat"]["lien"] = "../spg/file.php?id=";
98 $this->actions_sup["pdfetat"]["id"] =
99 "&amp;obj=instruction&amp;champ=om_fichier_instruction";
100 }
101 //Si le document n'est pas finalisé, on affiche uniquement le lien de
102 //finalisation
103 if ( isset($this->actions_sup["definalisation"]) &&
104 $om_final_instruction!= "t" ){
105
106 //On cache le lien de finalisation et on affiche le bon lien pour l'édition
107 $this->actions_sup["definalisation"] = NULL;
108 $this->actions_sup["pdfetat"]["lien"] = "../app/pdf_instruction.php?idx=";
109 $this->actions_sup["pdfetat"]["id"] = "";
110 }
111
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 $statut = $this->getStatutAutorisationDossier($idxformulaire);
128 // 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
133 //On cache les liens du portlet
134 $this->parameters["actions"]["modifier"] = NULL;
135 $this->actions_sup["finalisation"] = NULL;
136 $this->actions_sup["definalisation"] = NULL;
137 }
138 }
139 }
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 $this->addToLog("canAccess(): utilisateur instructeur sur un dossier d'une autre division", EXTRA_VERBOSE_MODE);
153 return false;
154 }
155
156 $retourformulaire = $this->getParameter("retourformulaire");
157 // 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 if ( $this->f->isUserInstructeur() &&
162 $this->getStatutAutorisationDossier($this->getParameter("idxformulaire")) == "cloture"
163 && (
164 $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 && $this->getParameter("maj") != 3
172 && $this->getParameter("maj") != 0
173 && $this->checkEvenementNonVerrouillable($this->getVal("instruction")) === false) {
174
175 return false;
176 }
177 //
178 return true;
179 }
180
181 /**
182 * 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 */
187 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 function getDivisionFromDossier() {
196
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 }
206
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 }
238
239 /**
240 * Cette méthode permet de récupérer le dossier d'autorisation d'un dossier
241 */
242 function getNumDemandeAutorFromDossier($id) {
243 //
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 $this->addToLog("getNumDemandeAutorFromDossier(): db->getone(\"".$sql."\")", VERBOSE_MODE);
253 database::isError($dossier_autorisation);
254 //
255 return $dossier_autorisation;
256 }
257
258 // }}}
259
260 function setType(&$form, $maj) {
261 //
262 parent::setType($form, $maj);
263 // On cache tous les champs
264 // XXX
265 $form->setType('complement3_om_html', 'hidden');
266 $form->setType('bible3', 'hidden');
267 $form->setType('complement4_om_html', 'hidden');
268 $form->setType('bible4', 'hidden');
269 $form->setType('complement5_om_html', 'hidden');
270 $form->setType('bible5', 'hidden');
271 $form->setType('complement6_om_html', 'hidden');
272 $form->setType('bible6', 'hidden');
273 $form->setType('complement7_om_html', 'hidden');
274 $form->setType('bible7', 'hidden');
275 $form->setType('complement8_om_html', 'hidden');
276 $form->setType('bible8', 'hidden');
277 $form->setType('complement9_om_html', 'hidden');
278 $form->setType('bible9', 'hidden');
279 $form->setType('complement10_om_html', 'hidden');
280 $form->setType('bible10', 'hidden');
281 $form->setType('complement11_om_html', 'hidden');
282 $form->setType('bible11', 'hidden');
283 $form->setType('complement12_om_html', 'hidden');
284 $form->setType('bible12', 'hidden');
285 $form->setType('complement13_om_html', 'hidden');
286 $form->setType('bible13', 'hidden');
287 $form->setType('complement14_om_html', 'hidden');
288 $form->setType('bible14', 'hidden');
289 $form->setType('complement15_om_html', 'hidden');
290 $form->setType('bible15', 'hidden');
291 //
292 $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 $form->setType('avis_decision', 'hidden');
298 $form->setType('autorite_competente', 'hidden');
299 //
300 $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 $form->setType('archive_date_dernier_depot', 'hidden');
306 $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 $form->setType('archive_date_chantier', 'hidden');
314 $form->setType('archive_autorite_competente','hidden');
315 //
316 $form->setType('numero_arrete', 'hidden');
317 //
318 $form->setType('code_barres', 'hidden');
319
320 //
321 $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
328 //
329 $form->setType('duree_validite','hidden');
330 $form->setType('duree_validite_parametrage','hidden');
331 if ($maj < 2) { //ajouter et modifier
332 $form->setType('destinataire', 'hidden');
333 $form->setType('lettretype', 'hiddenstatic');
334 $form->setType('complement_om_html', 'html');
335 $form->setType('complement2_om_html', 'html');
336 $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 $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 $form->setType('date_finalisation_courrier','datedisabled');
349
350
351
352 if($maj==0){ // add
353 $form->setType('instruction', 'hidden');
354 $form->setType('lettretype', 'hidden');
355 $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 // 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 }
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
384 //Cache les champs pour la finalisation
385 $form->setType('om_fichier_instruction', 'hidden');
386 $form->setType('om_final_instruction', 'hidden');
387 // Cache le document arrêté
388 $form->setType('document_numerise', 'hidden');
389
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 }
398
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 if(file_exists ("../sql/".$db->phptype."/".$this->table.".form.inc.php"))
408 include ("../sql/".$db->phptype."/".$this->table.".form.inc.php");
409 elseif(file_exists ("../sql/".$db->phptype."/".$this->table.".form.inc"))
410 include ("../sql/".$db->phptype."/".$this->table.".form.inc");
411
412 //// action
413 //$this->init_select($form, $db, $maj, $debug, "action",
414 // $sql_action, $sql_action_by_id, false);
415
416 //// avis_decision
417 //$this->init_select($form, $db, $maj, $debug, "avis_decision",
418 // $sql_avis_decision, $sql_avis_decision_by_id, false);
419
420 //// dossier
421 //$this->init_select($form, $db, $maj, $debug, "dossier",
422 // $sql_dossier, $sql_dossier_by_id, false);
423
424 //// 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 CONCAT(evenement.libelle, ' ['||evenement.action||']') as lib
450 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 ORDER BY evenement.libelle, evenement.action";
460 $res = $db->query($sql);
461 $this->addToLog("setSelect(): db->query(\"".$sql."\");", VERBOSE_MODE);
462 if (database::isError($res)) {
463 die($res->getMessage());
464 }
465 // 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 CONCAT(evenement.libelle, ' ['||evenement.action||']') as lib
478 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 }
492
493 /**
494 * Gesion des liens vers la bible
495 */
496 // lien bible_auto
497 $contenu = array(_("automatique"));
498 $form->setSelect("bible_auto",$contenu);
499 // lien bible1
500 $contenu = array(_("bible"));
501 $form->setSelect("bible",$contenu);
502 // lien bible2
503 $contenu = array(_("bible"));
504 $form->setSelect("bible2",$contenu);
505 }
506
507 function cleSecondaire($id, &$db, $val, $DEBUG) {
508 //
509 parent::cleSecondaire($id, $db, $val, $DEBUG);
510
511 $id = $this->getVal($this->clePrimaire);
512
513
514 //Requête de vérification que cet événement d'instruction n'est pas lié
515 //à 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 if ( $this->correct !== false || $res == null || $res == ""){
531
532 // 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 //Si c'est un événement d'instruction lié à une demande
544 if ($res != null || $res != ""){
545
546 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 }
560
561 /**
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 }
588 }
589
590 /**
591 * Vérification de la possibilité ou non de modifier des dates de suivi
592 * @param string $champ champ date à vérifier
593 */
594 function updateDate($champ) {
595
596 //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 }
607 }
608
609 //
610 return true;
611 }
612
613 // 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 $res = $this->f->db->query($sql);
626 $this->f->addToLog("setVal(): db->query(\"".$sql."\");", VERBOSE_MODE);
627 if ( database::isError($res)){
628 die();
629 }
630
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 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
662 $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 $form->setBloc('complement_om_html','D',"","col_12");
680 $form->setFieldset('complement_om_html','D',_('Complement'));
681 $form->setFieldset('bible','F','');
682 $form->setBloc('bible','F');
683
684 $form->setBloc('complement2_om_html','D',"","col_12");
685 $form->setFieldset('complement2_om_html','D',_('Complement 2'));
686 $form->setFieldset('bible2','F','');
687 $form->setBloc('bible2','F');
688 }
689 }
690
691 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 }
699
700 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 * - autorite_competente
713 * 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 * - avis_decision
728 * 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 $res = $db->query($sql);
735 $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 $this->valF['action']=$row['action'];
745 }
746 // 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 $this->valF['etat']=$row['etat'];
753 }
754 // Récupération de la valeur d'accord tacite
755 $this->valF['accord_tacite']=$row['accord_tacite'];
756 // Récupération de la valeur du délai de notification
757 $this->valF['delai_notification']=$row['delai_notification'];
758 // 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 if(isset($row['avis_decision']) and !empty($row['avis_decision'])) {
762 $this->valF['avis_decision']=$row['avis_decision'];
763 }
764 // 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 // 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 } else {
775 $this->valF['lettretype'] = "standard"; // XXX
776 }
777 }
778 // 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 $res = $db->query($sql);
782 $this->addToLog("triggerajouter(): db->query(\"".$sql."\");", VERBOSE_MODE);
783 if (database::isError($res)) {
784 die($res->getMessage());
785 }
786 $row=& $res->fetchRow(DB_FETCHMODE_ASSOC);
787 $this->updateArchiveData($row);
788 $this->archive_date_depot = $row['date_depot'];
789
790 // 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
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 }
811
812 // Test si une restriction est valide
813 // return boolean
814 function restrictionIsValid($restriction){
815
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
824 // 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 $res = array();
832 // 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 // S'il y a un comparateur
841 if (in_array(">=", $tabRestriction)
842 || in_array("<=", $tabRestriction)) {
843
844 // 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 }
862 }
863
864 // 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
875 // Si l'opérateur qui suit est un "+"
876 if ($tabRestriction[$i] === "+") {
877 $dateDep = $res[$j];
878 unset($res[$j]);$j++;
879 $duree = $res[$j];
880 unset($res[$j]);
881 $res[$j] = $this->f->mois_date($dateDep, $duree, "+");
882 }
883
884 // Si l'opérateur qui suit est un "-"
885 if ($tabRestriction[$i] === "-") {
886 $dateDep = $res[$j];
887 unset($res[$j]);$j++;
888 $duree = $res[$j];
889 unset($res[$j]);
890 $res[$j] = $this->f->mois_date($dateDep, $duree, "-");
891 }
892 }
893
894 }
895
896 // Si les tableau des résultats n'est pas vide
897 if (count($res) > 0) {
898 //
899 $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 }
907 if ($comparateur === "<=") {
908
909 if (strtotime($res[0]) <= strtotime($res[$j])) {
910 $res_bool = true;
911 }
912 }
913 }
914 // 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 }
923
924 return $res_bool;
925
926 }
927
928 /**
929 * 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 * 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 */
962 function regle($rule, $rule_name, $type = null) {
963
964 // 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
971 // Règle à null
972 if ($rule == "null") {
973 return null;
974 }
975
976 // 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 }
984
985 // 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 }
1009 if (in_array($rule_name, $rule_type_numeric) == true) {
1010 $type = "numeric";
1011 }
1012
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 }
1072
1073 function triggerajouterapres($id,&$db,$val,$DEBUG) {
1074 /**
1075 * Mise à jour des valeurs du dossier en fonction des valeurs calculées
1076 * par l'action
1077 */
1078 $this->getValEvenement();
1079 // Initialisation
1080 $valF = "";
1081 // é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 // 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
1122 // pour chacune des regles, on applique la regle
1123 if($row['regle_delai']!=''){
1124 $valF['delai'] = $this->regle($row['regle_delai'], 'regle_delai');
1125 }
1126 if($row['regle_accord_tacite']!=''){
1127 $valF['accord_tacite'] = $this->regle($row['regle_accord_tacite'], 'regle_accord_tacite');
1128 }
1129 if($row['regle_avis']!=''){
1130 $valF['avis_decision'] = $this->regle($row['regle_avis'], 'regle_avis');
1131 }
1132 if($row['regle_date_limite']!=''){
1133 $valF['date_limite']= $this->regle($row['regle_date_limite'], 'regle_date_limite');
1134 }
1135 if($row['regle_date_complet']!=''){
1136 $valF['date_complet']= $this->regle($row['regle_date_complet'], 'regle_date_complet');
1137 }
1138 if($row['regle_date_dernier_depot']!=''){
1139 $valF['date_dernier_depot']= $this->regle($row['regle_date_dernier_depot'], 'regle_date_dernier_depot');
1140 }
1141 if($row['regle_date_notification_delai']!=''){
1142 $valF['date_notification_delai']= $this->regle($row['regle_date_notification_delai'], 'regle_date_notification_delai');
1143 }
1144 if($row['regle_date_decision']!=''){
1145 $valF['date_decision']= $this->regle($row['regle_date_decision'], 'regle_date_decision');
1146 }
1147 if($row['regle_date_rejet']!=''){
1148 $valF['date_rejet']= $this->regle($row['regle_date_rejet'], 'regle_date_rejet');
1149 }
1150 if($row['regle_date_validite']!=''){
1151 $valF['date_validite']= $this->regle($row['regle_date_validite'], 'regle_date_validite');
1152 }
1153 if($row['regle_date_chantier']!=''){
1154 $valF['date_chantier']= $this->regle($row['regle_date_chantier'], 'regle_date_chantier');
1155 }
1156 if($row['regle_date_achevement']!=''){
1157 $valF['date_achevement']= $this->regle($row['regle_date_achevement'], 'regle_date_achevement');
1158 }
1159 if($row['regle_date_conformite']!=''){
1160 $valF['date_conformite']= $this->regle($row['regle_date_conformite'], 'regle_date_conformite');
1161 }
1162 if($row['regle_date_limite_incompletude']!=''){
1163 $valF['date_limite_incompletude']= $this->regle($row['regle_date_limite_incompletude'], 'regle_date_limite_incompletude');
1164 }
1165 if($row['regle_delai_incompletude']!=''){
1166 $valF['delai_incompletude']= $this->regle($row['regle_delai_incompletude'], 'regle_delai_incompletude');
1167 }
1168 if($row['regle_autorite_competente']!=''){
1169 $valF['autorite_competente']= $this->regle($row['regle_autorite_competente'], 'regle_autorite_competente');
1170 }
1171 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 $valF['etat'] = $this->regle($row['regle_etat'], 'regle_etat');
1177 } else {
1178 $valF['etat_pendant_incompletude'] = $this->regle($row['regle_etat'], 'regle_etat');
1179 }
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 }
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 die($res->getMessage());
1199 }
1200 // Affichage d'informations à l'utilisateur
1201 $this->addToMessage(_('enregistrement')." ".$this->valF['dossier']." "._('table')." dossier [".$db->affectedRows()." "._('enregistrement')." "._('mis_a_jour')."]");
1202 }
1203
1204 /**
1205 * REFERENTIEL ERP
1206 */
1207 // 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 //
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 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 }
1249 } // fin de if ($this->f->getParameter('option_erp') != "")
1250
1251 // Mise à jour des données du dossier d'autorisation
1252 require_once "../obj/dossier_autorisation.class.php";
1253 $da = new dossier_autorisation($this->getNumDemandeAutorFromDossier($this->valF['dossier']), $this->db, DEBUG);
1254 $da->majDossierAutorisation();
1255 }
1256
1257 function triggermodifierapres($id,&$db,$val,$DEBUG) {
1258 /**
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 // Initialisation du type d'événement
1265 $type_evmt = "";
1266 // 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 $action = $db->getOne($sql);
1271 $this->addToLog("triggermodifierapres(): db->getone(\"".$sql."\");", VERBOSE_MODE);
1272 if (database::isError($action)) {
1273 die($action->getMessage());
1274 }
1275
1276 // Récupération des paramètres de l'action
1277 $sql = "SELECT * FROM ".DB_PREFIXE."action
1278 WHERE action='".$action."'";
1279 $res = $db->query($sql);
1280 $this->addToLog("triggermodifierapres(): db->query(\"".$sql."\");", VERBOSE_MODE);
1281 if (database::isError($res)) {
1282 die($res->getMessage());
1283 }
1284 while ($row=& $res->fetchRow(DB_FETCHMODE_ASSOC)){
1285 // application des regles sur le courrier + delai
1286 if(preg_match("/date_evenement/",$row['regle_date_limite'])){
1287 $valF['date_limite']= $this->regle($row['regle_date_limite'], 'regle_date_limite');
1288 }
1289 if(preg_match("/date_evenement/",$row['regle_date_complet'])){
1290 $valF['date_complet']= $this->regle($row['regle_date_complet'], 'regle_date_complet');
1291 }
1292 if(preg_match("/date_evenement/",$row['regle_date_dernier_depot'])){
1293 $valF['date_dernier_depot']= $this->regle($row['regle_date_dernier_depot'], 'regle_date_dernier_depot');
1294 }
1295 if(preg_match("/date_evenement/",$row['regle_date_notification_delai'])){
1296 $valF['date_notification_delai']= $this->regle($row['regle_date_notification_delai'], 'regle_date_notification_delai');
1297 }
1298 if(preg_match("/date_evenement/",$row['regle_date_decision'])){
1299 $valF['date_decision']= $this->regle($row['regle_date_decision'], 'regle_date_decision');
1300 }
1301 if(preg_match("/date_evenement/",$row['regle_date_rejet'])){
1302 $valF['date_rejet']= $this->regle($row['regle_date_rejet'], 'regle_date_rejet');
1303 }
1304 if(preg_match("/date_evenement/",$row['regle_date_validite'])){
1305 $valF['date_validite']= $this->regle($row['regle_date_validite'], 'regle_date_validite');
1306 }
1307 if(preg_match("/date_evenement/",$row['regle_date_chantier'])){
1308 $valF['date_chantier']= $this->regle($row['regle_date_chantier'], 'regle_date_chantier');
1309 }
1310 if(preg_match("/date_evenement/",$row['regle_date_achevement'])){
1311 $valF['date_achevement']= $this->regle($row['regle_date_achevement'], 'regle_date_achevement');
1312 }
1313 if(preg_match("/date_evenement/",$row['regle_date_conformite'])){
1314 $valF['date_conformite']= $this->regle($row['regle_date_conformite'], 'regle_date_conformite');
1315 }
1316 }
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 $this->addToLog("triggermodifierapres(): db->autoexecute(\"".DB_PREFIXE."dossier\", ".print_r($valF, true).", DB_AUTOQUERY_UPDATE, \"".$cle."\");", VERBOSE_MODE);
1323 if (database::isError($res1)) {
1324 die($res->getMessage());
1325 }
1326 // Affichage d'informations à l'utilisateur
1327 $this->addToMessage(_('enregistrement')." ".$this->valF['dossier']." "._('table')." dossier [".$db->affectedRows()." "._('enregistrement')." "._('mis_a_jour')."]");
1328 }
1329
1330 // 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 $valNewInstr["date_evenement"] = $this->f->formatDate($this->valF['date_retour_signature']);
1353 $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 $valNewInstr["date_evenement"] = $this->f->formatDate($this->valF['date_retour_rar']);
1375 $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 /**
1386 * REFERENTIEL ARRETE
1387 */
1388 // 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 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 dossier.terrain_adresse_voie_numero as \"ws_DA_In_N_Voie\",
1405 '' as \"ws_DA_In_Type_Voie\",
1406 dossier.terrain_adresse_voie as \"ws_DA_In_Adresse1\",
1407 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 $this->f->addToLog("triggermodifierapres(): db->query(\"".$sqlArrete."\");", VERBOSE_MODE);
1438 if ( database::isError($resArrete)){
1439 die();
1440 }
1441
1442 $rowArrete = $resArrete->fetchRow(DB_FETCHMODE_ASSOC);
1443 $msgenque->setArreteInfo($rowArrete);
1444 $msgenque->enqueueMessage($msgenque::$ARRETE_ENVOI);
1445 }
1446 }
1447
1448 // Mise à jour des données du dossier d'autorisation
1449 require_once "../obj/dossier_autorisation.class.php";
1450 $da = new dossier_autorisation($this->getNumDemandeAutorFromDossier($this->valF['dossier']), $this->db, DEBUG);
1451 $da->majDossierAutorisation();
1452 }
1453
1454 function triggersupprimer($id,&$db,$val,$DEBUG) {
1455 /**
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
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 }
1571
1572 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 $da = new dossier_autorisation($this->getNumDemandeAutorFromDossier($val["dossier"]), $this->db, DEBUG);
1577 $da->majDossierAutorisation();
1578 }
1579
1580 // Vérifie la restriction sur l'événement
1581 function verifier($val = array(), &$db, $DEBUG){
1582 parent::verifier($val, $db, $DEBUG);
1583
1584 if ( isset($val['evenement']) && is_numeric($val['evenement'])){
1585 //Récupère la restriction
1586 $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
1603 $restriction = $row['restriction'];
1604
1605 //Test si la restriction est valide
1606 if ( !$this->restrictionIsValid($restriction) ){
1607
1608 $this->correct=false;
1609 $this->addToMessage(_("Restriction non valide"));
1610 }
1611 else {
1612
1613 $this->correct = true;
1614 }
1615
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 }
1653
1654 }
1655 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
1674 }
1675
1676 /**
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
1720 /**
1721 * 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 */
1726 function finaliser( $champ = '', $status, $sousform, $retourformulaire){
1727
1728 //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 'filename' => 'instruction_'.$idx.'.pdf',
1739 'mimetype' => 'application/pdf',
1740 'size' => strlen($pdf_output)
1741 );
1742
1743 // Récupération des métadonnées calculées après validation
1744 $spe_metadata = $this->getMetadata("om_fichier_instruction");
1745
1746 $metadata = array_merge($metadata, $spe_metadata);
1747 //Si le document a déjà été finalisé
1748 //on met à jour le document mais pas son uid
1749 if ( $this->getVal("om_fichier_instruction") != '' ){
1750 $uid = $this->f->storage->update(
1751 $this->getVal("om_fichier_instruction"), $pdf_output, $metadata);
1752 }
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 $uid = $this->getVal("om_fichier_instruction");
1762
1763 //On dé-finalise avant de finaliser
1764 if ( $uid == '' || $uid == 'OP_FAILURE' ){
1765 return -1;
1766 }
1767 }
1768
1769 //Mise à jour des données
1770 if ( $uid != '' && $uid != 'OP_FAILURE' ){
1771 // Logger
1772 $this->addToLog("finaliser() - begin", EXTRA_VERBOSE_MODE);
1773 // Recuperation de la valeur de la cle primaire de l'objet
1774 if($this->getVal($this->clePrimaire) != '')
1775 $id = $this->getVal($this->clePrimaire);
1776 else
1777 $id=$this->id;
1778
1779 $actions = array();
1780 //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
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 //Si l'utilisateur a le droit de supprimer l'objet
1811 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 }
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 <span class=\"om-prev-icon om-icon-16 om-icon-fix "
1844 .(($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 "pdf" => $lien,
1849 "actions" => $actions
1850 );
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 "om_fichier_instruction"=>$uid,
1888 "date_finalisation_courrier"=>date('Y-m-d'));
1889 // 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 $this->addToLog("finaliser() : db->autoExecute(\"".DB_PREFIXE.$this->table."\", ".print_r($valF, true).", DB_AUTOQUERY_UPDATE, \"".$this->getCle($id)."\")", VERBOSE_MODE);
1894 // 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 $this->addToLog(_("Finalisation non enregistree"));
1919 return -1;
1920 }
1921 }
1922 // Si le document n'a pas été stocké
1923 else{
1924 return -1;
1925 }
1926 }
1927
1928 /**
1929 * Récupération du numéro de dossier d'instruction à ajouter aux métadonnées
1930 * @return string numéro de dossier d'instruction
1931 */
1932 protected function getDossier() {
1933 if(empty($this->specificMetadata)) {
1934 $this->getSpecificMetadata();
1935 }
1936 return $this->specificMetadata->dossier;
1937 }
1938 /**
1939 * 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 * Récupération du numéro de dossier d'autorisation à ajouter aux métadonnées
1950 * @return string numéro de dossier d'autorisation
1951 */
1952 protected function getNumDemandeAutor() {
1953 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 * @return date de la demande initiale
1961 */
1962 protected function getAnneemoisDemandeAutor() {
1963 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 * @return string type du dossier d'instruction
1971 */
1972 protected function getTypeInstruction() {
1973 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 * @return string avis
1981 */
1982 protected function getStatutAutorisation() {
1983 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 * @return string type du dossier d'autorisation
1991 */
1992 protected function getTypeAutorisation() {
1993 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 * @return date de l'évènement
2001 */
2002 protected function getDateEvenementDocument() {
2003 return date("Y-m-d");
2004 }
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 /**
2016 * Récupération du libellé du type du document à ajouter aux métadonnées
2017 * @return string Groupe d'instruction
2018 */
2019 protected function getTitle() {
2020
2021 // 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 $this->addToLog("getTitle(): db->getOne(\"".$sql."\");", VERBOSE_MODE);
2033 if (database::isError($evenement_libelle)) {
2034 die();
2035 }
2036
2037 // Retourne le libelle de l'événement
2038 return $evenement_libelle;
2039 }
2040
2041 /**
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 $this->f->addToLog("getSpecificMetadata() : db->query(".$sql.")", VERBOSE_MODE);
2075 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
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 dossier_autorisation.dossier_autorisation = '".$row->dossier_autorisation."'
2100 AND
2101 dossier_instruction_type.code = '".$row->dossier_instruction_type."'";
2102 $row->version = $this->db->getOne($sql);
2103 $this->f->addToLog("getSpecificMetadata(): db->getOne(\"".$sql."\")", VERBOSE_MODE);
2104 if ( database::isError($row->version)){
2105 $this->f->addToError("", $row->version, $row->version);
2106 return false;
2107 }
2108
2109 //Formatage du numéro de version
2110 $row->version = str_pad($row->version, 2, "0", STR_PAD_LEFT);
2111
2112 //Alors on créé l'objet dossier_instruction
2113 $this->specificMetadata = $row;
2114
2115 }
2116 }
2117
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 function getStatutAutorisationDossier($idx){
2124
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 $this->f->addToLog("getStatutAutorisationDossier() : db->getOne(\"".$sql."\")", VERBOSE_MODE);
2141 if ( database::isError($statut)){
2142 die();
2143 }
2144 }
2145 return $statut;
2146 }
2147
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 /**
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
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 }// fin classe
2304 ?>

Properties

Name Value
svn:keywords Id

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26