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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1777 - (hide annotations)
Tue Apr 23 10:37:14 2013 UTC (11 years, 9 months ago) by vpihour
File size: 59383 byte(s)
Correction des erreurs de base de données non gérées

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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26