/[openfoncier]/branches/3.14.1/obj/instruction.class.php
ViewVC logotype

Contents of /branches/3.14.1/obj/instruction.class.php

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1777 - (show annotations)
Tue Apr 23 10:37:14 2013 UTC (11 years, 9 months ago) by vpihour
Original Path: trunk/obj/instruction.class.php
File size: 59383 byte(s)
Correction des erreurs de base de données non gérées

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 moisdate : pour ajouter des mois a une date
16 * [add months (delay) and calculation final date]
17 * - voir script_lang.js : bible ...
18 *
19 * @package openfoncier
20 * @version SVN : $Id$
21 */
22
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
37 function instruction($id, &$db, $debug) {
38 $this->constructeur($id, $db, $debug);
39 }
40
41 // {{{ Gestion de la confidentialité des données spécifiques
42
43 /**
44 * Surcharge pour gérer les actions disponibles dans le portlet
45 */
46 function checkAccessibility() {
47 //
48 parent::checkAccessibility();
49 // Si l'utilisateur est un intructeur qui ne correspond pas à la
50 // division du dossier
51 if ($this->f->isUserInstructeur()
52 && isset($this->f->om_utilisateur["division"])
53 && $this->f->om_utilisateur["division"] != $this->getDivisionFromDossier()) {
54 //
55 $this->actions_sup = array();
56 $this->setParameter("actions", array());
57 }
58 // Si une action 'lu' est présente et que le champ lu est à true
59 // on supprime l'action
60 if (isset($this->actions_sup["lu"])
61 && isset($this->val[array_search("lu", $this->champs)])
62 && $this->val[array_search("lu", $this->champs)]== "t") {
63 unset($this->actions_sup["lu"]);
64 }
65 }
66
67 /**
68 * Cette methode est à surcharger elle permet de tester dans chaque classe
69 * des droits des droits spécifiques en fonction des données
70 */
71 function canAccess() {
72 // Si l'utilisateur est un intructeur qui ne correspond pas à la
73 // division du dossier
74 if ($this->f->isUserInstructeur()
75 && $this->f->om_utilisateur["division"] != $this->getDivisionFromDossier()
76 && $this->getParameter("maj") != 3) {
77 //
78 return false;
79 }
80 //
81 return true;
82 }
83
84 /**
85 * Cette méthode permet de récupérer la division d'un dossier
86 */
87 function getDivisionFromDossier() {
88 //
89 if (!isset($this->val[array_search("dossier", $this->champs)])) {
90 return NULL;
91 }
92 //
93 $sql = "select division from ".DB_PREFIXE."dossier ";
94 $sql .= " where dossier='".$this->val[array_search("dossier", $this->champs)]."'";
95 //
96 $division = $this->db->getOne($sql);
97 $this->addToLog("getDivisionFromDossier(): db->getone(\"".$sql."\")", VERBOSE_MODE);
98 database::isError($division);
99 //
100 return $division;
101 }
102
103 /**
104 * Cette méthode permet de récupérer le dossier d'autorisation d'un dossier
105 */
106 function getDossierAutorisationFromDossier($id) {
107 //
108 if (!isset($id)) {
109 return NULL;
110 }
111 //
112 $sql = "select dossier_autorisation from ".DB_PREFIXE."dossier ";
113 $sql .= " where dossier='".$id."'";
114 //
115 $dossier_autorisation = $this->db->getOne($sql);
116 $this->addToLog("getDossierAutorisationFromDossier(): db->getone(\"".$sql."\")", VERBOSE_MODE);
117 database::isError($dossier_autorisation);
118 //
119 return $dossier_autorisation;
120 }
121
122 // }}}
123
124 function setType(&$form, $maj) {
125 //
126 parent::setType($form, $maj);
127 // On cache tous les champs
128 // XXX
129 $form->setType('complement3', 'hidden');
130 $form->setType('bible3', 'hidden');
131 $form->setType('complement4', 'hidden');
132 $form->setType('bible4', 'hidden');
133 $form->setType('complement5', 'hidden');
134 $form->setType('bible5', 'hidden');
135 $form->setType('complement6', 'hidden');
136 $form->setType('bible6', 'hidden');
137 $form->setType('complement7', 'hidden');
138 $form->setType('bible7', 'hidden');
139 $form->setType('complement8', 'hidden');
140 $form->setType('bible8', 'hidden');
141 $form->setType('complement9', 'hidden');
142 $form->setType('bible9', 'hidden');
143 $form->setType('complement10', 'hidden');
144 $form->setType('bible10', 'hidden');
145 $form->setType('complement11', 'hidden');
146 $form->setType('bible11', 'hidden');
147 $form->setType('complement12', 'hidden');
148 $form->setType('bible12', 'hidden');
149 $form->setType('complement13', 'hidden');
150 $form->setType('bible13', 'hidden');
151 $form->setType('complement14', 'hidden');
152 $form->setType('bible14', 'hidden');
153 $form->setType('complement15', 'hidden');
154 $form->setType('bible15', 'hidden');
155 //
156 $form->setType('delai', 'hidden');
157 $form->setType('etat', 'hidden');
158 $form->setType('accord_tacite', 'hidden');
159 $form->setType('action', 'hidden');
160 $form->setType('delai_notification', 'hidden');
161 $form->setType('avis_decision', 'hidden');
162 //
163 $form->setType('archive_delai', 'hidden');
164 $form->setType('archive_etat', 'hidden');
165 $form->setType('archive_accord_tacite', 'hidden');
166 $form->setType('archive_avis', 'hidden');
167 $form->setType('archive_date_complet', 'hidden');
168 $form->setType('archive_date_dernier_depot', 'hidden');
169 $form->setType('archive_date_rejet', 'hidden');
170 $form->setType('archive_date_limite', 'hidden');
171 $form->setType('archive_date_notification_delai', 'hidden');
172 $form->setType('archive_date_decision', 'hidden');
173 $form->setType('archive_date_validite', 'hidden');
174 $form->setType('archive_date_achevement', 'hidden');
175 $form->setType('archive_date_conformite', 'hidden');
176 $form->setType('archive_date_chantier', 'hidden');
177 //
178 $form->setType('numero_arrete', 'hidden');
179
180 //
181 $form->setType('archive_incompletude','hidden');
182 $form->setType('archive_evenement_suivant_tacite','hidden');
183 $form->setType('archive_evenement_suivant_tacite_incompletude','hidden');
184 $form->setType('archive_etat_pendant_incompletude','hidden');
185 $form->setType('archive_date_limite_incompletude','hidden');
186 $form->setType('archive_delai_incompletude','hidden');
187 if ($maj < 2) { //ajouter et modifier
188 $form->setType('destinataire', 'hidden');
189 $form->setType('lettretype', 'hiddenstatic');
190 $form->setType('complement', 'textarea');
191 $form->setType('complement2', 'textarea');
192 $form->setType('bible_auto', 'httpclick');
193 $form->setType('bible', 'httpclick');
194 $form->setType('bible2', 'httpclick');
195 $form->setType('dossier', 'hidden');
196 $form->setType('libelle', 'hiddenstatic');
197 $form->setType('signataire_arrete','select');
198 $form->setType('date_envoi_signature','datedisabled');
199 $form->setType('date_retour_signature','datedisabled');
200 $form->setType('date_envoi_rar','datedisabled');
201 $form->setType('date_retour_rar','datedisabled');
202 $form->setType('date_envoi_controle_legalite','datedisabled');
203 $form->setType('date_retour_controle_legalite','datedisabled');
204 if($maj==0){ // add
205 $form->setType('instruction', 'hiddenstatic');
206 $form->setType('evenement', 'select');
207 $form->setType('date_evenement', 'date2');
208 }else{ // modify
209 $form->setType('instruction', 'hiddenstatic');
210 $form->setType('evenement', 'selecthiddenstatic');
211 //$form->setType('date_evenement', 'hiddenstaticdate');
212 $form->setType('date_evenement', 'date2');
213 // necessaire pour calcul de date en modification
214 //$form->setType('delai', 'hiddenstatic');
215 }
216 } elseif($maj==2){
217 $form->setType('dossier', 'hidden');
218 $form->setType('bible_auto', 'hidden');
219 $form->setType('bible', 'hidden');
220 $form->setType('bible2', 'hidden');
221 }else {
222 $form->setType('destinataire', 'hidden');
223 $form->setType('dossier', 'hidden');
224 $form->setType('bible_auto', 'hidden');
225 $form->setType('bible', 'hidden');
226 $form->setType('bible2', 'hidden');
227 }
228 }
229
230 function setSelect(&$form, $maj,&$db,$debug) {
231 /**
232 * On ne surcharge pas la méthode parent car une requête sur la table
233 * dossier est mauvaise pour les performances, car la requête qui
234 * concerne evenement est plus complexe que celle générée et car les
235 * champs action, avis_decision et etat ne sont pas utilisés comme des
236 * select
237 */
238 if(file_exists ("../sql/".$db->phptype."/".$this->table.".form.inc.php"))
239 include ("../sql/".$db->phptype."/".$this->table.".form.inc.php");
240 elseif(file_exists ("../sql/".$db->phptype."/".$this->table.".form.inc"))
241 include ("../sql/".$db->phptype."/".$this->table.".form.inc");
242
243 //// action
244 //$this->init_select($form, $db, $maj, $debug, "action",
245 // $sql_action, $sql_action_by_id, false);
246
247 //// avis_decision
248 //$this->init_select($form, $db, $maj, $debug, "avis_decision",
249 // $sql_avis_decision, $sql_avis_decision_by_id, false);
250
251 //// dossier
252 //$this->init_select($form, $db, $maj, $debug, "dossier",
253 // $sql_dossier, $sql_dossier_by_id, false);
254
255 //// etat
256 //$this->init_select($form, $db, $maj, $debug, "etat",
257 // $sql_etat, $sql_etat_by_id, false);
258
259 //// evenement
260 //$this->init_select($form, $db, $maj, $debug, "evenement",
261 // $sql_evenement, $sql_evenement_by_id, false);
262
263 // signataire_arrete
264 $this->init_select($form, $db, $maj, $debug, "signataire_arrete",
265 $sql_signataire_arrete, $sql_signataire_arrete_by_id, true);
266
267 /**
268 * Gestion du filtre sur les événements de workflow disponibles
269 * On récupère ici en fonction de l'état du dossier d'instruction en
270 * cours et du type du dossier d'instruction en cours la liste
271 * événements disponibles.
272 */
273 if ($maj == 0) {
274 // Récupération des événements par une jointure entre la table dossier
275 // et la table transition et la table evenement et la table
276 // lien_dossier_instruction_type_evenement en fonction de l'identifiant
277 // du dossier d'instruction en cours
278 $sql = "SELECT
279 evenement.evenement,
280 (evenement.libelle||' ['||evenement.action||']') as lib
281 FROM ".DB_PREFIXE."dossier
282 INNER JOIN ".DB_PREFIXE."lien_dossier_instruction_type_evenement
283 ON dossier.dossier_instruction_type=lien_dossier_instruction_type_evenement.dossier_instruction_type
284 INNER JOIN ".DB_PREFIXE."evenement
285 ON evenement.evenement=lien_dossier_instruction_type_evenement.evenement
286 INNER JOIN ".DB_PREFIXE."transition
287 ON evenement.evenement = transition.evenement
288 AND dossier.etat=transition.etat
289 WHERE dossier.dossier='".$this->idxformulaire."'
290 ORDER BY evenement.action";
291 $res = $db->query($sql);
292 $this->addToLog("setSelect(): db->query(\"".$sql."\");", VERBOSE_MODE);
293 if (database::isError($res)) {
294 die($res->getMessage());
295 }
296 // Remplissage du tableau du select
297 $contenu = array(
298 0 => array("",),
299 1 => array(_('choisir')." "._('evenement'),)
300 );
301 while ($row=& $res->fetchRow()) {
302 $contenu[0][] = $row[0];
303 $contenu[1][] = $row[1];
304 }
305 $form->setSelect("evenement", $contenu);
306 } else {
307 $sql = "SELECT
308 (evenement.libelle||' ['||evenement.action||']') as lib
309 FROM ".DB_PREFIXE."evenement
310 WHERE evenement.evenement=".$this->getVal("evenement")."";
311 $res = $db->getone($sql);
312 $this->addToLog("setSelect(): db->getone(\"".$sql."\");", VERBOSE_MODE);
313 if (database::isError($res)) {
314 die($res->getMessage());
315 }
316 //
317 $contenu = array(
318 0 => array($this->getVal("evenement"),),
319 1 => array($res,)
320 );
321 $form->setSelect("evenement", $contenu);
322 }
323
324 /**
325 * Gesion des liens vers la bible
326 */
327 // lien bible_auto
328 $contenu = array(_("automatique"));
329 $form->setSelect("bible_auto",$contenu);
330 // lien bible1
331 $contenu = array(_("bible"));
332 $form->setSelect("bible",$contenu);
333 // lien bible2
334 $contenu = array(_("bible"));
335 $form->setSelect("bible2",$contenu);
336 }
337
338 function cleSecondaire($id, &$db, $val, $DEBUG) {
339 //
340 parent::cleSecondaire($id, $db, $val, $DEBUG);
341
342 /**
343 * Vérification que l'élément supprimé est le dernier pour pouvoir
344 * remodifier les données de manière itérative.
345 */
346 // Initialisation
347 $dernierevenement = "";
348 // Récupération du dernier élément de la table d'instruction qui
349 // concerne le dossier en cours
350 $sql = "SELECT max(instruction)
351 FROM ".DB_PREFIXE."instruction
352 WHERE dossier ='".$this->idxformulaire."'";
353 $dernierevenement = $db->getOne($sql);
354 $this->addToLog("setSelect(): db->getone(\"".$sql."\");", VERBOSE_MODE);
355 if (database::isError($dernierevenement)) {
356 die($dernierevenement->getMessage());
357 }
358 // Si on se trouve effectivement sur le dernier evenement d'instruction
359 if ($dernierevenement == $id) {
360 // Alors on valide la suppression
361 $this->correct = true;
362 $this->addToMessage(_('Destruction_chronologique'));
363 } else {
364 // Alors on annule la suppression
365 $this->correct = false;
366 $this->addToMessage(_("Seul le dernier evenement d'instruction peut etre supprime."));
367 }
368 }
369
370 // Vérification de la non modification des dates de suivi
371 function updateDate($champ) {
372 if($this->valF[$champ] != "") {
373 if($this->getVal($champ) != "" AND $this->getVal($champ) != $this->valF[$champ]) {
374 $this->correct = false;
375 $this->addToMessage(_("Les dates de suivis ne peuvent etre modifiees"));
376 }
377 }
378 }
379
380 // Sélectionne le signataire_arrete par défaut
381 function setVal(&$form,$maj,$validation){
382
383 // Ajout
384 if($maj == 0) {
385
386 // Création de la requête
387 $sql = "SELECT signataire_arrete
388 FROM ".DB_PREFIXE."signataire_arrete
389 WHERE defaut IS TRUE";
390
391 // Exécution de la requête
392 $res = $this->f->db->query($sql);
393 $this->f->addToLog("deleteAllLienDossierInstructionTypeEvenementEvenement(): db->query(\"".$sql."\");", VERBOSE_MODE);
394 if ( database::isError($res)){
395 die();
396 }
397
398 $row = $res->fetchrow(DB_FETCHMODE_ASSOC);
399
400 if ( isset($row['signataire_arrete']) && is_numeric($row['signataire_arrete'])){
401
402 $form->setVal("signataire_arrete",$row['signataire_arrete']);
403 }
404 }
405 }
406
407 /*Met des valeurs par défaut dans certains des sous-formulaire*/
408 function setValsousformulaire(&$form,$maj,$validation,$idxformulaire,$retourformulaire,$typeformulaire){
409 if ($validation==0 and $maj<2) {
410 if ($maj == 0){
411 $form->setVal("destinataire", $idxformulaire);
412 $form->setVal("dossier", $idxformulaire);
413 $form->setVal("date_evenement", date('Y-m-d'));
414 }
415 $form->setVal("bible_auto","bible_auto()");
416 $form->setVal("bible","bible()");
417 $form->setVal("bible2","bible2()");
418 }
419 $this->retourformulaire=$retourformulaire;
420 $this->idxformulaire=$idxformulaire;
421 }
422
423
424 function setLayout(&$form, $maj){
425 if ( $maj < 2 OR $maj == 3 ) {
426 /*Champ sur lequel s'ouvre le bloc 1 */
427 $form->setBloc('evenement','D',"","col_12");
428
429 $form->setFieldset('evenement','D',_('Evenement'));
430 $form->setFieldset('lettretype','F','');
431
432 $form->setBloc('lettretype','F');
433
434 $form->setBloc('date_finalisation_courrier','D',"","col_12");
435
436 $form->setFieldset('date_finalisation_courrier','D',_('Dates'));
437 $form->setBloc('date_finalisation_courrier','D',"","col_6");
438 $form->setBloc('date_envoi_controle_legalite','F');
439
440 $form->setBloc('signataire_arrete','D',"","col_6");
441 $form->setBloc('date_retour_controle_legalite','F');
442 $form->setFieldset('date_retour_controle_legalite','F','');
443
444 $form->setBloc('date_retour_controle_legalite','F');
445
446 $form->setBloc('complement','D',"","col_12");
447 $form->setFieldset('complement','D',_('Complement'));
448 $form->setFieldset('bible','F','');
449 $form->setBloc('bible','F');
450
451 $form->setBloc('complement2','D',"","col_12");
452 $form->setFieldset('complement2','D',_('Complement 2'));
453 $form->setFieldset('bible2','F','');
454 $form->setBloc('bible2','F');
455 }
456 }
457
458 function setLib(&$form, $maj) {
459 //
460 parent::setLib($form, $maj);
461 //
462 $form->setLib('bible_auto', "");
463 $form->setLib('bible', "");
464 $form->setLib('bible2', "");
465 }
466
467 function triggerajouter($id, &$db, $val, $DEBUG) {
468 /**
469 * Le code suivant permet de récupérer des valeurs des tables evenement
470 * et dossier pour les stocker dans l'instruction :
471 * DEPUIS L'EVENEMENT
472 * - action
473 * - delai
474 * - accord_tacite
475 * - etat
476 * - avis_decision
477 * - delai_notification
478 * - lettretype
479 * DEPUIS LE DOSSIER D'INSTRUCTION
480 * - archive_delai
481 * - archive_accord_tacite
482 * - archive_etat
483 * - archive_avis
484 * - date_complet
485 * - date_rejet
486 * - date_limite
487 * - date_notification_delai
488 * - date_decision
489 * - date_validite
490 * - date_achevement
491 * - date_chantier
492 * - date_conformite
493 * Il permet également de stocker la date_depot du dossier d'instruction
494 * dans l'attribut $this->archive_date_depot de la classe.
495 */
496 // Récupération de tous les paramètres de l'événement sélectionné
497 $sql = "SELECT * FROM ".DB_PREFIXE."evenement
498 WHERE evenement=".$this->valF['evenement'];
499 $res = $db->query($sql);
500 $this->addToLog("triggerajouter(): db->query(\"".$sql."\");", VERBOSE_MODE);
501 if (database::isError($res)) {
502 die($res->getMessage());
503 }
504 while ($row=& $res->fetchRow(DB_FETCHMODE_ASSOC)) {
505 // Récupération de l'identifiant de l'action
506 // si une action est paramétrée dans l'événement
507 $this->valF['action'] = NULL;
508 if (isset($row['action']) and !empty($row['action'])) {
509 $this->valF['action']=$row['action'];
510 }
511 // Récupération de la valeur du délai
512 $this->valF['delai'] = $row['delai'];
513 // Récupération de l'identifiant de l'état
514 // si un état est paramétré dans l'événement
515 $this->valF['etat']=NULL;
516 if (isset($row['etat']) and !empty($row['etat'])) {
517 $this->valF['etat']=$row['etat'];
518 }
519 // Récupération de la valeur d'accord tacite
520 $this->valF['accord_tacite']=$row['accord_tacite'];
521 // Récupération de la valeur du délai de notification
522 $this->valF['delai_notification']=$row['delai_notification'];
523 // Récupération de l'identifiant de l'avis
524 // si un avis est paramétré dans l'événement
525 $this->valF['avis_decision'] = NULL;
526 if(isset($row['avis_decision']) and !empty($row['avis_decision'])) {
527 $this->valF['avis_decision']=$row['avis_decision'];
528 }
529 // Récupération de la valeur de la lettre type
530 // Sinon on lui affecte lavaleur par défaut standard
531 if ($row['lettretype'] != "") {
532 $this->valF['lettretype']=$row['lettretype'];
533 } else {
534 $this->valF['lettretype'] = "standard"; // XXX
535 }
536 }
537 // Récupération de toutes les valeurs du dossier d'instruction en cours
538 $sql = "SELECT * FROM ".DB_PREFIXE."dossier
539 WHERE dossier='".$this->valF['dossier']."'";
540 $res = $db->query($sql);
541 $this->addToLog("triggerajouter(): db->query(\"".$sql."\");", VERBOSE_MODE);
542 if (database::isError($res)) {
543 die($res->getMessage());
544 }
545 while ($row=& $res->fetchRow(DB_FETCHMODE_ASSOC)) {
546 // XXX On stocke la date de dépôt actuelle du dossier d'instruction
547 // dans un attribut de la classe
548 $this->archive_date_depot = $row['date_depot'];
549 // Récupération de la valeur actuelle du délai, de l'accord tacite,
550 // de l'état et de l'avis du dossier d'instruction
551 $this->valF['archive_delai']=$row['delai'];
552 $this->valF['archive_accord_tacite']=$row['accord_tacite'];
553 $this->valF['archive_etat']=$row['etat'];
554 $this->valF['archive_avis']=$row['avis_decision'];
555 // Récupération de la valeur actuelle des 9 dates du dossier
556 // d'instruction
557 if ($row['date_complet'] != '') {
558 $this->valF['archive_date_complet']=$row['date_complet'];
559 }
560 if ($row['date_dernier_depot'] != '') {
561 $this->valF['archive_date_dernier_depot']=$row['date_dernier_depot'];
562 }
563 if ($row['date_rejet']!='') {
564 $this->valF['archive_date_rejet']= $row['date_rejet'];
565 }
566 if ($row['date_limite']!='') {
567 $this->valF['archive_date_limite']= $row['date_limite'];
568 }
569 if ($row['date_notification_delai']!='') {
570 $this->valF['archive_date_notification_delai']= $row['date_notification_delai'];
571 }
572 if ($row['date_decision']!='') {
573 $this->valF['archive_date_decision']= $row['date_decision'];
574 }
575 if ($row['date_validite']!='') {
576 $this->valF['archive_date_validite']= $row['date_validite'];
577 }
578 if ($row['date_achevement']!='') {
579 $this->valF['archive_date_achevement']= $row['date_achevement'];
580 }
581 if ($row['date_chantier']!='') {
582 $this->valF['archive_date_chantier']= $row['date_chantier'];
583 }
584 if ($row['date_conformite']!='') {
585 $this->valF['archive_date_conformite']= $row['date_conformite'];
586 }
587 if ($row['incompletude']!='') {
588 $this->valF['archive_incompletude']= $row['incompletude'];
589 }
590 if ($row['evenement_suivant_tacite']!='') {
591 $this->valF['archive_evenement_suivant_tacite']= $row['evenement_suivant_tacite'];
592 }
593 if ($row['evenement_suivant_tacite_incompletude']!='') {
594 $this->valF['archive_evenement_suivant_tacite_incompletude']= $row['evenement_suivant_tacite_incompletude'];
595 }
596 if ($row['etat_pendant_incompletude']!='') {
597 $this->valF['archive_etat_pendant_incompletude']= $row['etat_pendant_incompletude'];
598 }
599 if ($row['date_limite_incompletude']!='') {
600 $this->valF['archive_date_limite_incompletude']= $row['date_limite_incompletude'];
601 }
602 if ($row['delai_incompletude']!='') {
603 $this->valF['archive_delai_incompletude']= $row['delai_incompletude'];
604 }
605 }
606 }
607
608 // Test si une restriction est valide
609 // return boolean
610 function restrictionIsValid($restriction){
611
612 /* Met des espace avant et après les opérateurs puis transforme la chaine en
613 * un tableau */
614 $tabRestriction = str_replace(">="," >= ",
615 str_replace("<="," <= ",
616 str_replace("-"," - ",
617 str_replace("+"," + ",$restriction))));
618 $tabRestriction = explode( " ", $tabRestriction);
619
620 //Variables de résultat
621 $res = array();
622 $i = 0;
623 $comp = "";
624
625
626 //Test que le tableau n'est pas vide
627 if ( count($tabRestriction) > 0 ){
628
629 $res[0] = $this->getRestrictionValue($tabRestriction[0]);
630
631 //Calcul des variables
632 for ( $j = 1 ; $j < count($tabRestriction) ; $j += 2 ) {
633
634 //Variable de comparaison
635 if ( strcmp( ">=", $tabRestriction[$j] ) == 0 ||
636 strcmp( "<=", $tabRestriction[$j]) ==0 ){
637
638 $comp = $tabRestriction[$j];
639 $res[++$i] = $this->getRestrictionValue($tabRestriction[$j+1]);
640 }
641 // Fait l'addition
642 elseif ( strcmp( "+", $tabRestriction[$j]) == 0 ){
643
644 $res[$i] = $this->moisdate( $res[$i], $this->getRestrictionValue($tabRestriction[$j+1]) );
645 }
646 }
647 }
648
649 // Effectue le test
650 if ( strcmp($comp, ">=") == 0 ){
651
652 if ( $res[0] >= $res[1] || $res[0] == "" ){
653
654 return true;
655 }
656 else {
657
658 return false;
659 }
660 }
661 elseif ( strcmp($comp, "<=") == 0 ){
662
663 if ( $res[0] <= $res[1] || $res[1] == "" ){
664
665 return true;
666 }
667 else {
668
669 return false;
670 }
671 }
672
673 return true;
674 }
675
676 //Retourne la valeur de valF si $restrictionValue n'est pas un chiffre, le chiffre sinon
677 function getRestrictionValue($restrictionValue){
678
679 return ( is_numeric($restrictionValue) ) ?
680 $restrictionValue :
681 $this->valF[$restrictionValue];
682 }
683
684 function regle($regle){
685 $temp = explode ("+",$regle);
686 //echo '|'.$regle;
687 // cas rejet
688 if($regle=="null") // 1 dimension -> null
689 return null;
690 if(sizeof($temp)==1) // 1 dimension
691 if($temp[0]=="archive_date_depot") // initialisation avec le depot
692 return $this->$regle;
693 else // cas general
694 return $this->valF[$regle];
695 if(sizeof($temp)==2){ // 2 dimensions
696 if($temp[0]=="archive_date_depot") //initialisation avec le depot
697 if(is_numeric($temp[1]))
698 return $this->moisdate($this->$temp[0], $temp[1]);
699 else
700 return $this->moisdate($this->$temp[0], $this->valF[$temp[1]]);
701 if($temp[0]=="archive_delai") // majoration de delai
702 return $this->valF[$temp[0]]+$this->valF[$temp[1]];
703 // cas general 2 dimensions
704 if(is_numeric($temp[1]))
705 return $this->moisdate($this->valF[$temp[0]], $temp[1]);
706 else
707 return $this->moisdate($this->valF[$temp[0]], $this->valF[$temp[1]]);
708 }
709 if(sizeof($temp)==3){ // 3 dimensions
710 // cas date de validite de sursis
711 if(is_numeric($temp[1]))
712 $temp1 = $this->moisdate($this->valF[$temp[0]], $temp[1]);
713 else
714 $temp1 = $this->moisdate($this->valF[$temp[0]], $this->valF[$temp[1]]);
715 if(is_numeric($temp[2]))
716 return $this->moisdate($temp1, $temp[2]);
717 else
718 return $this->moisdate($temp1, $this->valF[$temp[2]]);
719 }
720 }
721
722
723
724 function triggerajouterapres($id,&$db,$val,$DEBUG) {
725 /**
726 * Mise à jour des valeurs du dossier en fonction des valeurs calculées
727 * par l'action
728 */
729 $this->getValEvenement();
730 // Initialisation
731 $valF = "";
732 // état de complétude actuel du dossier
733 $incompletude = $this->dossierIncomplet();
734
735 if($incompletude === FALSE) {
736 // Si l'événement d'instruction est de type incompletude
737 if($this->valEvenement['type'] == "incompletude") {
738 // On marque le dossier en incomplétude pour application des actions
739 $incompletude = TRUE;
740 // Set du flag incomplétude de la table dossier
741 $valF['incompletude'] = TRUE;
742 // Enregistrement de l'état dans la variable provisoire
743 $valF['etat_pendant_incompletude'] = $this->valF['archive_etat'];
744 }
745 } else {
746 // Si l'evenement d'instruction est de type retour ou contient une
747 // decision, on sort d'incomplétude
748 if($this->valEvenement['type'] == "retour" OR
749 $this->valEvenement['avis_decision'] != NULL) {
750 // On enlève la marque d'incomplétude pour application des actions
751 $incompletude = FALSE;
752 // On enlève le flag d'incomplétude sur l'enregistrement de la table dossier
753 $valF['incompletude'] = FALSE;
754 // Restauration de l'état depuis l'état provisoire
755 $valF['etat'] = $this->valF['archive_etat_pendant_incompletude'];
756 // On vide la variable provisoire ainsi que le délai de complétude
757 // et la date limite de complétude
758 $valF['etat_pendant_incompletude'] = NULL;
759 $valF['delai_incompletude'] = NULL;
760 $valF['date_limite_incompletude'] = NULL;
761 }
762 }
763 // Récupération des paramètres de l'action
764 $sql = "SELECT * FROM ".DB_PREFIXE."action
765 WHERE action='".$this->valF['action']."'";
766 $res = $db->query($sql);
767 $this->addToLog("triggerajouterapres(): db->query(\"".$sql."\");", VERBOSE_MODE);
768 if (database::isError($res)) {
769 die($res->getMessage());
770 }
771 while ($row=& $res->fetchRow(DB_FETCHMODE_ASSOC)) {
772
773 // pour chacune des regles, on applique la regle
774 if($row['regle_delai']!=''){
775 $valF['delai'] = $this->regle($row['regle_delai']);
776 }
777 if($row['regle_accord_tacite']!=''){
778 $valF['accord_tacite'] = $this->regle($row['regle_accord_tacite']);
779 }
780 if($row['regle_avis']!=''){
781 $valF['avis_decision'] = $this->regle($row['regle_avis']);
782 }
783 if($row['regle_date_limite']!=''){
784 $valF['date_limite']= $this->regle($row['regle_date_limite']);
785 }
786 if($row['regle_date_complet']!=''){
787 $valF['date_complet']= $this->regle($row['regle_date_complet']);
788 }
789 if($row['regle_date_dernier_depot']!=''){
790 $valF['date_dernier_depot']= $this->regle($row['regle_date_dernier_depot']);
791 }
792 if($row['regle_date_notification_delai']!=''){
793 $valF['date_notification_delai']= $this->regle($row['regle_date_notification_delai']);
794 }
795 if($row['regle_date_decision']!=''){
796 $valF['date_decision']= $this->regle($row['regle_date_decision']);
797 }
798 if($row['regle_date_rejet']!=''){
799 $valF['date_rejet']= $this->regle($row['regle_date_rejet']);
800 }
801 if($row['regle_date_validite']!=''){
802 $valF['date_validite']= $this->regle($row['regle_date_validite']);
803 }
804 if($row['regle_date_chantier']!=''){
805 $valF['date_chantier']= $this->regle($row['regle_date_chantier']);
806 }
807 if($row['regle_date_achevement']!=''){
808 $valF['date_achevement']= $this->regle($row['regle_date_achevement']);
809 }
810 if($row['regle_date_conformite']!=''){
811 $valF['date_conformite']= $this->regle($row['regle_date_conformite']);
812 }
813 if($row['regle_date_limite_incompletude']!=''){
814 $valF['date_limite_incompletude']= $this->regle($row['regle_date_limite_incompletude']);
815 }
816 if($row['regle_delai_incompletude']!=''){
817 $valF['delai_incompletude']= $this->regle($row['regle_delai_incompletude']);
818 }
819 if($row['regle_etat']!=''){
820 // Si on est dans le cas général ou qu'on est en incomplétude et
821 // qu'on a un événement de type incomplétude alors : on stocke
822 // l'état dans la variable courante
823 if ($incompletude == FALSE OR $this->valEvenement['type'] == "incompletude") {
824 $valF['etat'] = $this->regle($row['regle_etat']);
825 } else {
826 $valF['etat_pendant_incompletude'] = $this->regle($row['regle_etat']);
827 }
828 }
829
830 if($this->valEvenement['evenement_suivant_tacite'] != '') {
831 // Si on est pas en incomplétude on stocke l'événement tacite
832 //de l'événement dans la variable courante
833 if ($incompletude == FALSE) {
834 $valF['evenement_suivant_tacite'] = $this->valEvenement['evenement_suivant_tacite'];
835 } else {
836 $valF['evenement_suivant_tacite_incompletude'] = $this->valEvenement['evenement_suivant_tacite'];
837 }
838 }
839 }
840 // Si des valeurs ont été calculées alors on met à jour l'enregistrement
841 if ($valF != "") {
842 // On met à jour le dossier
843 $cle = " dossier='".$this->valF['dossier']."'";
844 $res1 = $db->autoExecute(DB_PREFIXE.'dossier', $valF, DB_AUTOQUERY_UPDATE, $cle);
845 $this->addToLog("triggerajouterapres(): db->autoexecute(\"".DB_PREFIXE."dossier\", ".print_r($valF, true).", DB_AUTOQUERY_UPDATE, \"".$cle."\");", VERBOSE_MODE);
846 if (database::isError($res1)) {
847 die($res->getMessage());
848 }
849 // Affichage d'informations à l'utilisateur
850 $this->addToMessage(_('enregistrement')." ".$this->valF['dossier']." "._('table')." dossier [".$db->affectedRows()." "._('enregistrement')." "._('mis_a_jour')."]");
851 }
852
853 /**
854 * REFERENTIEL ERP
855 */
856 // verification si envoi vers ERP est active
857 if ($this->f->getParameter('option_erp') != "") {
858 // la nature du dossier
859 $nature_dossier = substr($this->idxformulaire,0,2);
860 //
861 $sql = "SELECT erp
862 FROM ".DB_PREFIXE."dossier
863 WHERE dossier='".$this->valF['dossier']."'";
864 $dossier_erp = $this->db->getone($sql);
865 $this->addToLog("triggerajouterapres(): db->getone(\"".$sql."\");", VERBOSE_MODE);
866 if (database::isError($res)) {
867 die($res->getMessage());
868 }
869 //
870 $sql = "SELECT libelle
871 FROM ".DB_PREFIXE."evenement
872 WHERE evenement='".$this->valF['evenement']."'";
873 $evenement_libelle = $this->db->getone($sql);
874 $this->addToLog("triggerajouterapres(): db->getone(\"".$sql."\");", VERBOSE_MODE);
875 if (database::isError($res)) {
876 die($res->getMessage());
877 }
878 //
879 if ($dossier_erp == 't') {
880 // envoi du message en cas d'un PC qui est ERP et sur lequel un evenement
881 // d'acceptation etait fait
882 if ($nature_dossier ==
883 $this->f->getParameter('erp_evenement_accepter_dossier_PC')
884 && $this->valF['evenement'] ==
885 $this->f->getParameter('erp_evenement_accepter_sans_reserve')) {
886 $msgenque = new MessageEnqueuer();
887 $msgenque->setDossierInstructionIdentifier($this->valF['dossier']);
888 $msgenque->setDecision($evenement_libelle);
889 $msgenque->enqueueMessage($msgenque::$ERP_ARRETE_PC_EFFECTUE);
890 }
891 if ($this->valF['evenement'] ==
892 $this->f->getParameter('erp_evenement_refuser_dossier')) {
893 $msgenque = new MessageEnqueuer();
894 $msgenque->setDossierInstructionIdentifier($this->valF['dossier']);
895 $msgenque->enqueueMessage($msgenque::$ERP_DECISION_CONFORMITE_EFFECTUE);
896 }
897 }
898 } // fin de if ($this->f->getParameter('option_erp') != "")
899
900 // Mise à jour des données du dossier d'autorisation
901 require_once "../obj/dossier_autorisation.class.php";
902 $da = new dossier_autorisation($this->getDossierAutorisationFromDossier($this->valF['dossier']), $this->db, DEBUG);
903 $da->majDossierAutorisation();
904 }
905
906 function triggermodifierapres($id,&$db,$val,$DEBUG) {
907 /**
908 * L'objectif ici est d'effectuer les recalculs de date dans le dossier
909 * si la date de l'evenement est modifiee
910 */
911 // Initialisation
912 $valF = "";
913 // Récupération de l'action correspondante à l'événement
914 $sql = "SELECT action
915 FROM ".DB_PREFIXE."evenement
916 WHERE evenement=".$this->valF['evenement'];
917 $action = $db->getOne($sql);
918 $this->addToLog("triggermodifierapres(): db->getone(\"".$sql."\");", VERBOSE_MODE);
919 if (database::isError($action)) {
920 die($action->getMessage());
921 }
922
923 // Récupération de tous les paramètres de l'événement sélectionné
924 $sql = "SELECT * FROM ".DB_PREFIXE."evenement
925 WHERE evenement=".$this->valF['evenement'];
926 $res = $db->query($sql);
927 $this->addToLog("triggerajouter(): db->query(\"".$sql."\");", VERBOSE_MODE);
928 if (database::isError($res)) {
929 die($res->getMessage());
930 }
931 while ($row=& $res->fetchRow(DB_FETCHMODE_ASSOC)) {
932 // Si la date de retour signature est éditée on vérifie si il existe un événement automatique
933 if ($this->getVal('date_retour_signature') == "" AND $this->valF['date_retour_signature'] != "") {
934 $new_instruction = new instruction("]", $db, $DEBUG);
935 // Création d'un tableau avec la liste des champs de l'instruction
936 foreach($new_instruction->champs as $champ) {
937 $valNewInstr[$champ] = "";
938 }
939 // Définition des valeurs de la nouvelle instruction
940 $valNewInstr["evenement"] = $row['evenement_retour_signature'];
941 $valNewInstr["destinataire"] = $this->valF['destinataire'];
942 $valNewInstr["dossier"] = $this->valF['dossier'];
943 $valNewInstr["date_evenement"] = date("d/m/Y");
944 $new_instruction->ajouter($valNewInstr,$db, $DEBUG);
945 }
946 // Si la date de retour AR est éditée on vérifie si il existe un événement automatique
947 if ($this->getVal('date_retour_rar') == "" AND $this->valF['date_retour_rar'] != "") {
948 $new_instruction = new instruction("]", $db, $DEBUG);
949 // Création d'un tableau avec la liste des champs de l'instruction
950 foreach($new_instruction->champs as $champ) {
951 $valNewInstr[$champ] = "";
952 }
953 // Définition des valeurs de la nouvelle instruction
954 $valNewInstr["evenement"] = $row['evenement_retour_ar'];
955 $valNewInstr["destinataire"] = $this->valF['destinataire'];
956 $valNewInstr["dossier"] = $this->valF['dossier'];
957 $valNewInstr["date_evenement"] = date("d/m/Y");
958 $new_instruction->ajouter($valNewInstr,$db, $DEBUG);
959 }
960 }
961
962 // Récupération des paramètres de l'action
963 $sql = "SELECT * FROM ".DB_PREFIXE."action
964 WHERE action='".$action."'";
965 $res = $db->query($sql);
966 $this->addToLog("triggermodifierapres(): db->query(\"".$sql."\");", VERBOSE_MODE);
967 if (database::isError($res)) {
968 die($res->getMessage());
969 }
970 while ($row=& $res->fetchRow(DB_FETCHMODE_ASSOC)){
971 // application des regles sur le courrier + delai
972 if(preg_match("/date_evenement/",$row['regle_date_limite'])){
973 $valF['date_limite']= $this->regle($row['regle_date_limite']);
974 }
975 if(preg_match("/date_evenement/",$row['regle_date_complet'])){
976 $valF['date_complet']= $this->regle($row['regle_date_complet']);
977 }
978 if(preg_match("/date_evenement/",$row['regle_date_dernier_depot'])){
979 $valF['date_dernier_depot']= $this->regle($row['regle_date_dernier_depot']);
980 }
981 if(preg_match("/date_evenement/",$row['regle_date_notification_delai'])){
982 $valF['date_notification_delai']= $this->regle($row['regle_date_notification_delai']);
983 }
984 if(preg_match("/date_evenement/",$row['regle_date_decision'])){
985 $valF['date_decision']= $this->regle($row['regle_date_decision']);
986 }
987 if(preg_match("/date_evenement/",$row['regle_date_rejet'])){
988 $valF['date_rejet']= $this->regle($row['regle_date_rejet']);
989 }
990 if(preg_match("/date_evenement/",$row['regle_date_validite'])){
991 $valF['date_validite']= $this->regle($row['regle_date_validite']);
992 }
993 if(preg_match("/date_evenement/",$row['regle_date_chantier'])){
994 $valF['date_chantier']= $this->regle($row['regle_date_chantier']);
995 }
996 if(preg_match("/date_evenement/",$row['regle_date_achevement'])){
997 $valF['date_achevement']= $this->regle($row['regle_date_achevement']);
998 }
999 if(preg_match("/date_evenement/",$row['regle_date_conformite'])){
1000 $valF['date_conformite']= $this->regle($row['regle_date_conformite']);
1001 }
1002 }
1003 // Si des valeurs ont été calculées alors on met à jour l'enregistrement
1004 if ($valF != "") {
1005 // On met à jour le dossier
1006 $cle = " dossier='".$this->valF['dossier']."'";
1007 $res1 = $db->autoExecute(DB_PREFIXE.'dossier', $valF, DB_AUTOQUERY_UPDATE, $cle);
1008 $this->addToLog("triggerajouterapres(): db->autoexecute(\"".DB_PREFIXE."dossier\", ".print_r($valF, true).", DB_AUTOQUERY_UPDATE, \"".$cle."\");", VERBOSE_MODE);
1009 if (database::isError($res1)) {
1010 die($res->getMessage());
1011 }
1012 // Affichage d'informations à l'utilisateur
1013 $this->addToMessage(_('enregistrement')." ".$this->valF['dossier']." "._('table')." dossier [".$db->affectedRows()." "._('enregistrement')." "._('mis_a_jour')."]");
1014 }
1015
1016 /**
1017 * REFERENTIEL ARRETE
1018 */
1019 if ($this->f->getParameter('option_referentiel_arrete') != "") {
1020 if ($this->valF['date_retour_signature'] != $this->getVal('date_retour_signature')) {
1021 $msgenque = new MessageEnqueuer();
1022 $sqlArrete = "SELECT instruction.signataire_arrete as \"ws_DA_In_Signataire\",
1023 signataire_arrete.nom as \"ws_DA_In_Sign_Nom\",
1024 signataire_arrete.prenom as \"ws_DA_In_Sign_Prenom\",
1025 signataire_arrete.qualite as \"ws_DA_In_Sign_Qualite\",
1026 instruction.date_evenement as \"ws_DA_In_Dte_Redac\",
1027 '' as \"ws_DA_In_lieu_Redac\",
1028 instruction.dossier as \"ws_DA_In_N_Doss_DAS\",
1029 '' as \"ws_DA_In_Sigle\",
1030 instruction.etat as \"ws_DA_In_Decision\",
1031 dossier.date_depot as \"ws_DA_In_Dte_Depot_Dem\",
1032 dossier.terrain_numero as \"ws_DA_In_N_Voie\",
1033 '' as \"ws_DA_In_Type_Voie\",
1034 dossier.complement as \"ws_DA_In_Adresse1\",
1035 dossier.terrain_adresse_lieu_dit as \"ws_DA_In_Adresse2\",
1036 dossier.terrain_adresse_code_postal as \"ws_DA_In_CP\",
1037 dossier.terrain_adresse_localite as \"ws_DA_In_Ville\",
1038 dossier.terrain_references_cadastrales as \"ws_DA_In_Nb_Parcelle\",
1039 '' as \"ws_DA_In_Detail_Parcelle\",
1040 CONCAT(donnees_techniques.am_projet_desc,' ',donnees_techniques.co_projet_desc) as \"ws_DA_In_Nature_Trvx\",
1041 '' as \"ws_DA_In_Destination_Trvx\",
1042 dossier_autorisation_type_detaille.code as \"ws_DA_In_Type_Dos_Autoris\",
1043 COALESCE(particulier_nom,personne_morale_raison_sociale) as \"ws_DA_In_Nom_Petition\",
1044 COALESCE(particulier_prenom, personne_morale_denomination) as \"ws_DA_In_Prenom_Petition\",
1045 '' as \"ws_DA_In_Piece_GED\",
1046 instruction.date_retour_signature as \"ws_DA_In_Dte_Signature\"
1047 FROM ".DB_PREFIXE."instruction
1048 LEFT JOIN ".DB_PREFIXE."signataire_arrete ON
1049 instruction.signataire_arrete = signataire_arrete.signataire_arrete
1050 LEFT JOIN ".DB_PREFIXE."dossier ON
1051 instruction.dossier = dossier.dossier
1052 LEFT JOIN ".DB_PREFIXE."lien_dossier_demandeur ON
1053 lien_dossier_demandeur.dossier = dossier.dossier
1054 LEFT JOIN ".DB_PREFIXE."demandeur ON
1055 lien_dossier_demandeur.demandeur = demandeur.demandeur
1056 LEFT JOIN ".DB_PREFIXE."dossier_instruction_type ON
1057 dossier.dossier_instruction_type = dossier_instruction_type.dossier_instruction_type
1058 LEFT JOIN ".DB_PREFIXE."dossier_autorisation_type_detaille ON
1059 dossier_instruction_type.dossier_autorisation_type_detaille =
1060 dossier_autorisation_type_detaille.dossier_autorisation_type_detaille
1061 LEFT JOIN ".DB_PREFIXE."donnees_techniques ON
1062 donnees_techniques.dossier_instruction = dossier.dossier
1063 WHERE instruction.instruction = ".$this->valF['instruction'];
1064 $resArrete = $this->db->query($sqlArrete);
1065 $this->f->addToLog("triggerModifierApres(): db->query(\"".$sqlArrete."\");", VERBOSE_MODE);
1066 if ( database::isError($resArrete)){
1067 die();
1068 }
1069
1070 $rowArrete = $resArrete->fetchRow(DB_FETCHMODE_ASSOC);
1071 $msgenque->setArreteInfo($rowArrete);
1072 $msgenque->enqueueMessage($msgenque::$ARRETE_ENVOI);
1073 }
1074 }
1075
1076 // Mise à jour des données du dossier d'autorisation
1077 require_once "../obj/dossier_autorisation.class.php";
1078 $da = new dossier_autorisation($this->getDossierAutorisationFromDossier($this->valF['dossier']), $this->db, DEBUG);
1079 $da->majDossierAutorisation();
1080 }
1081
1082 function triggersupprimer($id,&$db,$val,$DEBUG) {
1083 /**
1084 * L'objectif ici est de repositionner les valeurs récupérées en
1085 * archive dans le dossier d'instruction avant de supprimer l'événement
1086 * d'instruction
1087 */
1088 // Mise à jour des 4 valeurs modifiées par l'action
1089 $valF['delai'] = $val['archive_delai'];
1090 $valF['accord_tacite'] = $val['archive_accord_tacite'];
1091 $valF['etat'] = $val['archive_etat'];
1092 if ($val['archive_avis'] != '') {
1093 $valF['avis_decision'] = $val['archive_avis'];
1094 } else {
1095 $valF['avis_decision'] = NULL;
1096 }
1097 // Mise à jour des 10 dates avec la valeur présente dans le formulaire
1098 // de suppression. Si la valeur de la date est vide alors on fixe
1099 // à la valeur NULL
1100 //
1101 if ($val['archive_date_complet'] != '') {
1102 $valF['date_complet'] = $val['archive_date_complet'];
1103 } else {
1104 $valF['date_complet'] = NULL;
1105 }
1106 if ($val['archive_date_dernier_depot'] != '') {
1107 $valF['date_dernier_depot'] = $val['archive_date_dernier_depot'];
1108 } else {
1109 $valF['date_dernier_depot'] = NULL;
1110 }
1111 if ($val['archive_date_rejet'] != '') {
1112 $valF['date_rejet'] = $val['archive_date_rejet'];
1113 } else {
1114 $valF['date_rejet'] = NULL;
1115 }
1116 if ($val['archive_date_limite'] != '') {
1117 $valF['date_limite'] = $val['archive_date_limite'];
1118 } else {
1119 $valF['date_limite'] = NULL;
1120 }
1121 if ($val['archive_date_notification_delai'] != '') {
1122 $valF['date_notification_delai'] = $val['archive_date_notification_delai'];
1123 } else {
1124 $valF['date_notification_delai'] = NULL;
1125 }
1126 if ($val['archive_date_decision'] != '') {
1127 $valF['date_decision'] = $val['archive_date_decision'];
1128 } else {
1129 $valF['date_decision'] = NULL;
1130 }
1131 if ($val['archive_date_validite'] != '') {
1132 $valF['date_validite'] = $val['archive_date_validite'];
1133 } else {
1134 $valF['date_validite'] = NULL;
1135 }
1136 if ($val['archive_date_achevement'] != '') {
1137 $valF['date_achevement'] = $val['archive_date_achevement'];
1138 } else {
1139 $valF['date_achevement'] = NULL;
1140 }
1141 if ($val['archive_date_chantier'] != '') {
1142 $valF['date_chantier'] = $val['archive_date_chantier'];
1143 } else {
1144 $valF['date_chantier'] = NULL;
1145 }
1146 if ($val['archive_date_conformite'] != '') {
1147 $valF['date_conformite'] = $val['archive_date_conformite'];
1148 } else {
1149 $valF['date_conformite'] = NULL;
1150 }
1151 if ($val['archive_incompletude'] != '') {
1152 $valF['incompletude'] = $val['archive_incompletude'];
1153 } else {
1154 $valF['incompletude'] = NULL;
1155 }
1156 if ($val['archive_evenement_suivant_tacite'] != '') {
1157 $valF['evenement_suivant_tacite'] = $val['archive_evenement_suivant_tacite'];
1158 } else {
1159 $valF['evenement_suivant_tacite'] = NULL;
1160 }
1161 if ($val['archive_evenement_suivant_tacite_incompletude'] != '') {
1162 $valF['evenement_suivant_tacite_incompletude'] = $val['archive_evenement_suivant_tacite_incompletude'];
1163 } else {
1164 $valF['evenement_suivant_tacite_incompletude'] = NULL;
1165 }
1166 if ($val['archive_etat_pendant_incompletude'] != '') {
1167 $valF['etat_pendant_incompletude'] = $val['archive_etat_pendant_incompletude'];
1168 } else {
1169 $valF['etat_pendant_incompletude'] = NULL;
1170 }
1171 if ($val['archive_date_limite_incompletude'] != '') {
1172 $valF['date_limite_incompletude'] = $val['archive_date_limite_incompletude'];
1173 } else {
1174 $valF['date_limite_incompletude'] = NULL;
1175 }
1176 if ($val['archive_delai_incompletude'] != '') {
1177 $valF['delai_incompletude'] = $val['archive_delai_incompletude'];
1178 } else {
1179 $valF['delai_incompletude'] = NULL;
1180 }
1181 // On met à jour le dossier
1182 $cle = " dossier='".$val['dossier']."'";
1183 $res = $db->autoExecute(DB_PREFIXE.'dossier', $valF, DB_AUTOQUERY_UPDATE, $cle);
1184 $this->addToLog("triggersupprimer(): db->autoexecute(\"".DB_PREFIXE."dossier\", ".print_r($valF, true).", DB_AUTOQUERY_UPDATE, \"".$cle."\");", VERBOSE_MODE);
1185 if (database::isError($res)) {
1186 die($res->getMessage());
1187 }
1188 // Affichage d'informations à l'utilisateur
1189 $this->addToMessage(_("Suppression de l'instruction")." [".$db->affectedRows()." "._('enregistrement')." "._('mis_a_jour')."]");
1190
1191 }
1192
1193 function triggersupprimerapres($id,&$db,$val,$DEBUG) {
1194
1195 // Mise à jour des données du dossier d'autorisation
1196 require_once "../obj/dossier_autorisation.class.php";
1197 $da = new dossier_autorisation($this->getDossierAutorisationFromDossier($val["dossier"]), $this->db, DEBUG);
1198 $da->majDossierAutorisation();
1199 }
1200
1201 // =============================================
1202 // calcul de date avec ajout de mois (delais)
1203 // [add months (delay) and calculation final date]
1204 // LIMITE DE LA FONCTION si delai >24 MOIS
1205 // [limit : delay < 24 month]
1206 // =============================================
1207 function moisdate($date,$delaimois) {
1208 $temp = explode("-" , $date);
1209 $jour = (int) $temp[2];
1210 $mois = (int) $temp[1];
1211 $annee = (int) $temp[0];
1212 // calcul si delai superieur à 12 (limite 24) [delay > 24 month]
1213 if($delaimois>=12){
1214 $delaimois=$delaimois-12;
1215 $annee=$annee+1;
1216 }
1217 if($delaimois>=12){
1218 $delaimois=$delaimois-12;
1219 $annee=$annee+1;
1220 }
1221 // mois
1222 $mois=$mois+$delaimois;
1223 // calcul mois annee [calculation number of years if > 12 month]
1224 // nb de mois > à 12
1225 if ($mois>12){
1226 $mois=$mois-12;
1227 $annee=$annee+1;
1228 }
1229 // Calcul du nombre de jours dans le mois sélectionné [calculation number of days]
1230 switch($mois) {
1231 case "2":
1232 if ($annee % 4 == 0 && $annee % 100 != 0 || $annee % 400 == 0)
1233 $jourmax = 29;
1234 else
1235 $jourmax = 28;
1236 break;
1237 case "4":
1238 case "6":
1239 case "9":
1240 case "11":
1241 $jourmax = 30;
1242 break;
1243 default:
1244 $jourmax = 31;
1245 }
1246 if ($jour > $jourmax)
1247 $jour = $jourmax;
1248 //$dateretour=$annee."-".$mois."-".$jour;
1249 return $annee."-".$mois."-".$jour ;
1250 }
1251
1252 // Vérifie la restriction sur l'événement
1253 function verifier($val = array(), &$db, $DEBUG){
1254 parent::verifier($val, $db, $DEBUG);
1255 //Récupère la restriction
1256 $sql= "SELECT
1257 restriction
1258 FROM
1259 ".DB_PREFIXE."evenement
1260 WHERE
1261 evenement =".$val['evenement'];
1262
1263 $res = $db->query($sql);
1264 $this->addToLog("verifier(): db->query(\"".$sql."\");", VERBOSE_MODE);
1265 if (database::isError($res)) {
1266 die($res->getMessage());
1267 }
1268 $row=& $res->fetchRow(DB_FETCHMODE_ASSOC);
1269
1270 //Test qu'une restriction est présente
1271 if ( isset($row['restriction']) && $row['restriction'] != "" ){
1272
1273 //Test si la restriction est valide
1274 if ( !$this->restrictionIsValid($row['restriction']) ){
1275
1276 $this->correct=false;
1277 $this->addToMessage(_("Restriction non valide"));
1278 }
1279 else {
1280
1281 $this->correct = true;
1282 }
1283 }
1284
1285 $this->updateDate("date_envoi_signature");
1286 $this->updateDate("date_retour_signature");
1287 $this->updateDate("date_envoi_rar");
1288 $this->updateDate("date_retour_rar");
1289 $this->updateDate("date_envoi_controle_legalite");
1290 $this->updateDate("date_retour_controle_legalite");
1291 }
1292
1293 /**
1294 * Méthode permettant de récupérer toutes les valeurs de l'événement
1295 * sélectionné après validation du formulaire d'instruction
1296 *
1297 * @return array() veleurs de l'événement lié
1298 */
1299
1300 private function getValEvenement() {
1301 if(!empty($this->valEvenement)) {
1302 return $this->valEvenement;
1303 } else {
1304 $sql = "SELECT * FROM ".DB_PREFIXE."evenement
1305 WHERE evenement=".$this->valF['evenement'];
1306 $res = $this->db->query($sql);
1307 $this->addToLog("getValEvenement(): db->query(\"".$sql."\");", VERBOSE_MODE);
1308 if (database::isError($res)) {
1309 die($res->getMessage());
1310 }
1311 $this->valEvenement = $res->fetchRow(DB_FETCHMODE_ASSOC);
1312 return $this->valEvenement;
1313 }
1314 }
1315
1316 /**
1317 * Méthode permettant de savoir si le dossier lié à l'instruction à le flag
1318 * incompletude à true après validation du formulaire d'instruction
1319 *
1320 * @return boolean
1321 */
1322 private function dossierIncomplet() {
1323 $sql = "SELECT incompletude FROM ".DB_PREFIXE."dossier
1324 WHERE dossier='".$this->valF['dossier']."'";
1325 $incompletude = $this->db->getOne($sql);
1326 $this->addToLog("dossierIncomplet(): db->query(\"".$sql."\");", VERBOSE_MODE);
1327 if (database::isError($incompletude)) {
1328 die($incompletude->getMessage());
1329 }
1330 if ($incompletude == 't') {
1331 return true;
1332 } else {
1333 return false;
1334 }
1335 }
1336
1337 }// fin classe
1338 ?>

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26