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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1659 - (hide annotations)
Fri Apr 12 16:34:57 2013 UTC (11 years, 9 months ago) by nhaye
File size: 52186 byte(s)
Ajout de la ressource REST permettant de mettre à jour les dossiers ayant un evenement tacite prevu et une date limite inférieur à la date du jour,
amélioration du metiermanager.php
corrections apportées dans instruction.class.php

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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26