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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1540 - (hide annotations)
Thu Mar 21 06:50:50 2013 UTC (11 years, 10 months ago) by fmichon
File size: 50289 byte(s)
Nettoyage de la classe instruction + Ajout d'un select multiple pour sélectionner les états depuis le formulaire de l'événement

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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26