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

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

Parent Directory Parent Directory | Revision Log Revision Log


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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26