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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1439 - (hide annotations)
Fri Mar 15 14:45:21 2013 UTC (11 years, 10 months ago) by nhaye
File size: 51287 byte(s)
Modification de la mise en page des formulaires d'instructions

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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26