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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1899 - (hide annotations)
Fri May 24 12:59:42 2013 UTC (11 years, 8 months ago) by vpihour
File size: 61029 byte(s)
Finalisation des documents, non finalisé

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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26