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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1643 - (hide annotations)
Thu Apr 11 13:32:55 2013 UTC (11 years, 9 months ago) by nhaye
File size: 51060 byte(s)
Ajout d'un champ version au dossier afin de définir l'ordre des dossiers,
correction de la méthode de mise à jour des données du DA (ajout des velaurs NULL),
appel de cette méthode à chaque ajout modification suppression de dossier d'instruction et d'instruction

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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26