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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1823 - (hide annotations)
Thu May 2 17:17:40 2013 UTC (11 years, 9 months ago) by vpihour
File size: 60046 byte(s)
Fichier manquant du commit précédent

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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26