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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1005 - (hide annotations)
Thu Dec 6 15:48:07 2012 UTC (12 years, 1 month ago) by fmichon
File size: 35418 byte(s)
Merge de la branche 3.2.x pour la reprise du développement dans le trunk

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     function setValsousformulaire(&$form,$maj,$validation,$idxformulaire,$retourformulaire,$typeformulaire){
118 nhaye 428 if ($validation==0 and $maj<2) {
119 fraynaud 20 if ($maj == 0){
120     $form->setVal("destinataire", $idxformulaire);
121     $form->setVal("dossier", $idxformulaire);
122     $form->setVal("datecourrier", date('Y-m-d'));
123     }
124     $form->setVal("bible_auto","bible_auto()");
125     $form->setVal("bible","bible()");
126     $form->setVal("bible2","bible2()");
127     }
128     $this->retourformulaire=$retourformulaire;
129     $this->idxformulaire=$idxformulaire;
130     }
131    
132     function setType(&$form,$maj) {
133 nhaye 428 parent::setType($form,$maj);
134     if ($maj < 2) { //ajouter et modifier
135     $form->setType('destinataire', 'hidden');
136     $form->setType('lettretype', 'hiddenstatic');
137     $form->setType('complement', 'textarea');
138     $form->setType('complement2', 'textarea');
139     $form->setType('bible_auto', 'httpclick');
140     $form->setType('bible', 'httpclick');
141     $form->setType('bible2', 'httpclick');
142     $form->setType('dossier', 'hiddenstatic');
143     $form->setType('libelle', 'hiddenstatic');
144     if($maj==0){ // add
145     $form->setType('instruction', 'hiddenstatic');
146     $form->setType('evenement', 'select');
147     $form->setType('datecourrier', 'date2');
148     }else{ // modify
149     $form->setType('instruction', 'hiddenstatic');
150     $form->setType('evenement', 'hiddenstatic');
151     //$form->setType('datecourrier', 'hiddenstaticdate');
152     $form->setType('datecourrier', 'date2');
153     // necessaire pour calcul de date en modification
154     $form->setType('delai', 'hiddenstatic');
155     }
156 nhaye 460 } elseif($maj==2){
157     $form->setType('dossier', 'hiddenstatic');
158     }else {
159     $form->setType('destinataire', 'hidden');
160     $form->setType('dossier', 'static');
161 nhaye 428 }
162 fraynaud 20 $form->setType('complement3', 'hidden');
163 nhaye 428 $form->setType('bible_auto', 'hidden');
164     $form->setType('bible', 'hidden');
165     $form->setType('bible2', 'hidden');
166 fraynaud 20 $form->setType('bible3', 'hidden');
167     $form->setType('complement4', 'hidden');
168     $form->setType('bible4', 'hidden');
169     $form->setType('complement5', 'hidden');
170     $form->setType('bible5', 'hidden');
171     $form->setType('complement6', 'hidden');
172     $form->setType('bible6', 'hidden');
173     $form->setType('complement7', 'hidden');
174     $form->setType('bible7', 'hidden');
175     $form->setType('complement8', 'hidden');
176     $form->setType('bible8', 'hidden');
177     $form->setType('complement9', 'hidden');
178     $form->setType('bible9', 'hidden');
179     $form->setType('complement10', 'hidden');
180     $form->setType('bible10', 'hidden');
181     $form->setType('complement11', 'hidden');
182     $form->setType('bible11', 'hidden');
183     $form->setType('complement12', 'hidden');
184     $form->setType('bible12', 'hidden');
185     $form->setType('complement13', 'hidden');
186     $form->setType('bible13', 'hidden');
187     $form->setType('complement14', 'hidden');
188     $form->setType('bible14', 'hidden');
189     $form->setType('complement15', 'hidden');
190     $form->setType('bible15', 'hidden');
191     $form->setType('delai', 'hidden');
192     $form->setType('etat', 'hidden');
193     $form->setType('accord_tacite', 'hidden');
194     $form->setType('action', 'hidden');
195     $form->setType('delai_notification', 'hidden');
196 vpihour 489 $form->setType('avis_decision', 'hidden');
197 fraynaud 20 $form->setType('archive_delai', 'hidden');
198     $form->setType('archive_etat', 'hidden');
199     $form->setType('archive_accord_tacite', 'hidden');
200     $form->setType('archive_avis', 'hidden');
201     $form->setType('archive_date_complet', 'hidden');
202     $form->setType('archive_date_rejet', 'hidden');
203     $form->setType('archive_date_limite', 'hidden');
204     $form->setType('archive_date_notification_delai', 'hidden');
205     $form->setType('archive_date_decision', 'hidden');
206     $form->setType('archive_date_validite', 'hidden');
207     $form->setType('archive_date_achevement', 'hidden');
208     $form->setType('archive_date_conformite', 'hidden');
209 nhaye 428 $form->setType('archive_date_chantier', 'hidden');
210 fraynaud 20 }
211 fraynaud 265
212 fraynaud 20 function setSelect(&$form, $maj,&$db,$DEBUG) {
213 atreal 312 if(file_exists ("../sql/".$db->phptype."/".$this->table.".form.inc.php"))
214     include ("../sql/".$db->phptype."/".$this->table.".form.inc.php");
215 nhaye 428
216     // *** evenement ***
217     $contenu=array();
218     // etat du dossier
219     $sql="select etat from ".DB_PREFIXE."dossier where dossier ='".
220     $this->idxformulaire."'";
221     $etat_dossier = $db->getOne($sql);
222     $nature_dossier= substr($this->idxformulaire,0,2);
223     // recherche des evenement de transition
224     $sql= $sql_transition." where transition.etat ='".$etat_dossier."' and (evenement.nature ='".
225     $nature_dossier."' or (nature ='T' and nature !='CU')) order by evenement.action";
226    
227     // *** attention en dur le CU
228    
229    
230     $res = $db->query($sql);
231     if (database::isError($res))
232     die($res->getMessage());
233     $contenu[0][0]="";
234     $contenu[1][0]=_('choisir')." "._('evenement');
235     $k=1;
236     while ($row=& $res->fetchRow()){
237     if($maj==0){ // ajouter
238     $contenu[0][$k]=$row[0];
239     $contenu[1][$k]=$row[1];
240     $k++;
241     }else{
242     // select hiddenstatic
243     $contenu[0][$k]=$row[0];
244     $contenu[1][$k]=$row[1];
245     $k++;
246 fraynaud 20 }
247     }
248 nhaye 428 $form->setSelect("evenement",$contenu);
249     // lien bible_auto [link]
250     $contenu=array();
251     $contenu[0]=" automatique ";
252     $form->setSelect("bible_auto",$contenu);
253     // lien bible1
254     $contenu=array();
255     $contenu[0]=" Bible ";
256     $form->setSelect("bible",$contenu);
257     // lien bible2
258     $contenu=array();
259     $contenu[0]=" Bible ";
260     $form->setSelect("bible2",$contenu);
261 fraynaud 20 } // function select
262    
263     function setGroupe(&$form,$maj){
264     $form->setGroupe('evenement','D');
265     $form->setGroupe('libelle','G');
266     $form->setGroupe('datecourrier','G');
267     $form->setGroupe('lettretype','F');
268     }
269    
270     function setRegroupe(&$form,$maj){
271     $form->setRegroupe('evenement','D',_('evenement'), "collapsible");
272     $form->setRegroupe('libelle','G','');
273     $form->setRegroupe('datecourrier','G','');
274     $form->setRegroupe('lettretype','F','');
275 fraynaud 196 $form->setRegroupe('complement','D',_('complement'), "collapsible");
276 fraynaud 20 $form->setRegroupe('bible_auto','G','');
277     $form->setRegroupe('bible','F','');
278     $form->setRegroupe('complement2','D',_('complement2'), "startClosed");
279     $form->setRegroupe('bible2','F','');
280     }
281    
282     function setLib(&$form,$maj) {
283     parent :: setLib($form,$maj);
284     $form->setLib('libelle',' ');
285     $form->setLib('bible_auto',"");
286     $form->setLib('bible',"");
287     $form->setLib('bible2',"");
288     $form->setLib('lettretype',"->"._(" courrier "));
289     $form->setLib('datecourrier',_(" du "));
290     }
291    
292     // ==================================================================
293     // trigger avant modification données [trigger before modify data]
294     // ==================================================================
295     function triggerajouter($id,&$db,$val,$DEBUG) {
296     // mise a jour instruction avec evenement
297     // [modify instruction with evenement]
298 fraynaud 242 $sql= "select * from ".DB_PREFIXE."evenement where evenement =".$this->valF['evenement'];
299 fraynaud 20 $res = $db->query($sql);
300 fraynaud 129 if (database::isError($res)) die($res->getMessage());
301 fraynaud 20 if ($DEBUG == 1)
302     echo " la requete ".$sql." est exécutée<br>";
303     while ($row=& $res->fetchRow(DB_FETCHMODE_ASSOC)){
304 nhaye 460 if(isset($row['action']) and !empty($row['action'])) {
305     $this->valF['action']=$row['action'];
306     } else {
307     $this->valF['action']=NULL;
308     }
309 fraynaud 20 $this->valF['delai']=$row['delai'];
310 nhaye 460 if(isset($row['etat']) and !empty($row['etat'])) {
311     $this->valF['etat']=$row['etat'];
312     } else {
313     $this->valF['etat']=NULL;
314     }
315 fraynaud 20 $this->valF['accord_tacite']=$row['accord_tacite'];
316     $this->valF['delai_notification']=$row['delai_notification'];
317 vpihour 489 if(isset($row['avis_decision']) and !empty($row['avis_decision'])) {
318     $this->valF['avis_decision']=$row['avis_decision'];
319 nhaye 460 } else {
320 vpihour 489 $this->valF['avis_decision']=NULL;
321 nhaye 460 }
322 fraynaud 20 if($row['lettretype']!="")
323     $this->valF['lettretype']=$row['lettretype'];
324     else
325     $this->valF['lettretype']="standard";
326     }
327 fraynaud 242 $sql= "select * from ".DB_PREFIXE."dossier where dossier = '".$this->valF['dossier']."'";
328 fraynaud 20 $res = $db->query($sql);
329     if (database::isError($res))
330     die($res->getMessage());
331     if ($DEBUG == 1)
332     echo " la requete ".$sql." est exécutée<br>";
333     while ($row=& $res->fetchRow(DB_FETCHMODE_ASSOC)){
334     //
335     $this->archive_date_depot = $row['date_depot'];
336     // archive en instruction (si suppression)
337     $this->valF['archive_delai']=$row['delai'];
338     $this->valF['archive_accord_tacite']=$row['accord_tacite'];
339     $this->valF['archive_etat']=$row['etat'];
340 vpihour 489 $this->valF['archive_avis']=$row['avis_decision'];
341 fraynaud 20 // compatibilite pgsql
342     if($row['date_complet']!='')
343     $this->valF['archive_date_complet']=$row['date_complet'];
344     if($row['date_rejet']!='')
345     $this->valF['archive_date_rejet']= $row['date_rejet'];
346     if($row['date_limite']!='')
347     $this->valF['archive_date_limite']= $row['date_limite'];
348     if($row['date_notification_delai']!='')
349     $this->valF['archive_date_notification_delai']= $row['date_notification_delai'];
350     if($row['date_decision']!='')
351     $this->valF['archive_date_decision']= $row['date_decision'];
352     if($row['date_validite']!='')
353     $this->valF['archive_date_validite']= $row['date_validite'];
354     if($row['date_achevement']!='')
355     $this->valF['archive_date_achevement']= $row['date_achevement'];
356     if($row['date_chantier']!='')
357     $this->valF['archive_date_chantier']= $row['date_chantier'];
358     if($row['date_conformite']!='')
359     $this->valF['archive_date_conformite']= $row['date_conformite'];
360     }
361     }
362    
363 fraynaud 123 function regle($regle){
364     $temp = explode ("+",$regle);
365 atreal 208 //echo '|'.$regle;
366 fraynaud 124 // cas rejet
367 fraynaud 129 if($regle=="null") // 1 dimension -> null
368 fraynaud 124 return null;
369     if(sizeof($temp)==1) // 1 dimension
370     if($temp[0]=="archive_date_depot") // initialisation avec le depot
371 fraynaud 123 return $this->$regle;
372 fraynaud 124 else // cas general
373 fraynaud 123 return $this->valF[$regle];
374 fraynaud 124 if(sizeof($temp)==2){ // 2 dimensions
375     if($temp[0]=="archive_date_depot") //initialisation avec le depot
376 fraynaud 123 if(is_numeric($temp[1]))
377     return $this->moisdate($this->$temp[0], $temp[1]);
378     else
379     return $this->moisdate($this->$temp[0], $this->valF[$temp[1]]);
380 fraynaud 124 if($temp[0]=="archive_delai") // majoration de delai
381     return $this->valF[$temp[0]]+$this->valF[$temp[1]];
382     // cas general 2 dimensions
383 fraynaud 123 if(is_numeric($temp[1]))
384     return $this->moisdate($this->valF[$temp[0]], $temp[1]);
385     else
386     return $this->moisdate($this->valF[$temp[0]], $this->valF[$temp[1]]);
387     }
388 fraynaud 124 if(sizeof($temp)==3){ // 3 dimensions
389     // cas date de validite de sursis
390     if(is_numeric($temp[1]))
391     $temp1 = $this->moisdate($this->valF[$temp[0]], $temp[1]);
392     else
393     $temp1 = $this->moisdate($this->valF[$temp[0]], $this->valF[$temp[1]]);
394     if(is_numeric($temp[2]))
395     return $this->moisdate($temp1, $temp[2]);
396     else
397     return $this->moisdate($temp1, $this->valF[$temp[2]]);
398     }
399 fraynaud 123 }
400    
401    
402    
403 fraynaud 20 // ==================================================================
404     // valeur dossier apres modification [values dossier after action]
405     // ==================================================================
406     function triggerajouterapres($id,&$db,$val,$DEBUG) {
407 fraynaud 47 // mise a null au lieu de "" / voir compatibilite mysql
408     // voir parametrage CU en dur
409     // voir parametrage des actions en dur
410 fraynaud 123 $param=1;
411 fraynaud 121 if($param==1){
412 fraynaud 242 $sql="select * from ".DB_PREFIXE."action where action = '".$this->valF['action']."'";
413 fraynaud 121 $res = $db->query($sql);
414     if (database::isError($res))
415     die($res->getMessage());
416     while ($row=& $res->fetchRow(DB_FETCHMODE_ASSOC)){
417     if($row['regle_etat']!=''){
418 fraynaud 123 $valF['etat']= $this->regle($row['regle_etat']);
419 fraynaud 121 }
420     if($row['regle_delai']!=''){
421 fraynaud 123 $valF['delai']= $this->regle($row['regle_delai']);
422 fraynaud 121 }
423     if($row['regle_accord_tacite']!=''){
424 fraynaud 123 $valF['accord_tacite']= $this->regle($row['regle_accord_tacite']);
425 fraynaud 121 }
426 fraynaud 124 if($row['regle_avis']!=''){
427 vpihour 489 $valF['avis_decision']= $this->regle($row['regle_avis']);
428 fraynaud 124 }
429 fraynaud 121 if($row['regle_date_limite']!=''){
430 fraynaud 123 $valF['date_limite']= $this->regle($row['regle_date_limite']);
431     }
432     if($row['regle_date_complet']!=''){
433     $valF['date_complet']= $this->regle($row['regle_date_complet']);
434     }
435     if($row['regle_date_notification_delai']!=''){
436     $valF['date_notification_delai']= $this->regle($row['regle_date_notification_delai']);
437     }
438 fraynaud 124 if($row['regle_date_decision']!=''){
439     $valF['date_decision']= $this->regle($row['regle_date_decision']);
440     }
441     if($row['regle_date_rejet']!=''){
442     $valF['date_rejet']= $this->regle($row['regle_date_rejet']);
443     }
444     if($row['regle_date_validite']!=''){
445     $valF['date_validite']= $this->regle($row['regle_date_validite']);
446     }
447     if($row['regle_date_chantier']!=''){
448     $valF['date_chantier']= $this->regle($row['regle_date_chantier']);
449     }
450     if($row['regle_date_achevement']!=''){
451     $valF['date_achevement']= $this->regle($row['regle_date_achevement']);
452     }
453     if($row['regle_date_conformite']!=''){
454     $valF['date_conformite']= $this->regle($row['regle_date_conformite']);
455     }
456 fraynaud 121 }
457     }else{
458 fraynaud 242 switch ($this->valF['action']) {
459     case "initialisation" :
460     $valF['delai']= $this->valF['delai'];
461     $valF['etat']= $this->valF['etat'];
462     $valF['accord_tacite']= $this->valF['accord_tacite'];
463     // la date_complet est la date de depot
464     $valF['date_complet']= $this->archive_date_depot; // ****
465     $valF['date_limite'] = $this->moisdate($valF['date_complet'],$valF['delai']);
466     $valF['date_notification_delai'] = $this->moisdate($valF['date_complet'],1);
467     break;
468     case "notification" :
469     $valF['delai']= $this->valF['delai'];
470     $valF['etat']= $this->valF['etat'];
471     $valF['accord_tacite']= $this->valF['accord_tacite'];
472     // la date_complet est celle precedemment saisie
473     $valF['date_complet']=$this->valF['archive_date_complet'];
474     $valF['date_limite'] = $this->moisdate($valF['date_complet'],$valF['delai']);
475     $valF['date_notification_delai'] = $this->moisdate($valF['date_complet'],1);
476     // la date du courrier ne doit pas etre depasse par rapport au delai de
477     // notification [verify notification date]
478     if($this->valF['archive_date_notification_delai']<$this->valF['datecourrier'])
479     $this->msg=$this->msg."<br><img src='../img/erreur.gif'> "._("date_notification_delai")." ".
480     $this->valF['archive_date_notification_delai']." < "._('datecourrier');
481     //
482     break;
483     case "retour" :
484     $valF['delai']= $this->valF['delai'];
485     $valF['etat']= $this->valF['etat'];
486     $valF['accord_tacite']= $this->valF['accord_tacite'];
487     // la date_complet est celle de l evenement
488     $valF['date_complet']= $this->valF['datecourrier'];
489     $valF['date_limite'] = $this->moisdate($valF['date_complet'],$valF['delai']);
490     $valF['date_notification_delai'] = $this->moisdate($valF['date_complet'],1);
491     break;
492     case "rejet" :
493     //$valF['delai']=0; // *** delai a garder pour etat dpc
494     $valF['etat']= $this->valF['etat'];
495     $valF['accord_tacite']= $this->valF['accord_tacite'];
496     // la date rejet est initialisee
497     $valF['date_rejet']= $this->valF['datecourrier'];
498     // les dates de depart et fin d instruction sont annulées
499     $valF['date_limite'] =null;
500     $valF['date_notification_delai'] =null;
501     $valF['date_complet']=null;
502     break;
503     case "majoration" :
504     $valF['delai']= $this->valF['archive_delai']+$this->valF['delai'];
505     $valF['etat']= $this->valF['etat'];
506     $valF['accord_tacite']= $this->valF['accord_tacite'];
507     $valF['date_complet']=$this->valF['archive_date_complet'];
508     // majoration de la date limite
509     $valF['date_limite'] = $this->moisdate($valF['date_complet'],$valF['delai']);
510     $valF['date_notification_delai'] = $this->moisdate($valF['date_complet'],1);
511     // la date du courrier ne doit pas etre depasse par rapport au delai de
512     // notification
513     if($this->valF['archive_date_notification_delai']<$this->valF['datecourrier'])
514     $this->msg=$this->msg."<br><img src='../img/erreur.gif'>"._("date_notification_delai").
515 fraynaud 20 $this->valF['archive_date_notification_delai']." < "._('datecourrier');
516 fraynaud 242 break;
517     case "acceptation" :
518     $valF['etat']= $this->valF['etat'];
519     $valF['date_decision']= $this->valF['datecourrier'];
520 vpihour 489 $valF['avis_decision']= $this->valF['avis_decision'];
521 fraynaud 242 // date de validite = date de l evenement + delai
522     $valF['date_validite'] = $this->moisdate($this->valF['datecourrier'],$this->valF['delai']);
523     break;
524     case "refus" :
525     $valF['etat']= $this->valF['etat'];
526     $valF['date_decision']= $this->valF['datecourrier'];
527 vpihour 489 $valF['avis_decision']= $this->valF['avis_decision'];
528 fraynaud 242 break;
529     case "prolongation" :
530     $valF['date_validite'] = $this->moisdate($this->valF['archive_date_validite'],$this->valF['delai']);
531     break;
532     case "sursis" :
533     $valF['date_limite'] = $this->moisdate($this->valF['datecourrier'],$this->valF['delai']);
534     $valF['etat']= $this->valF['etat'];
535     $valF['accord_tacite']= $this->valF['accord_tacite'];
536 vpihour 489 $valF['avis_decision']= $this->valF['avis_decision'];
537 fraynaud 242 $valF['date_decision']= $this->valF['datecourrier'];
538     $temp = $valF['date_limite'];
539     $valF['date_validite']= $this->moisdate($temp,2);
540     break;
541     case "execution" :
542     $valF['etat']= $this->valF['etat'];
543     $valF['date_chantier'] = $this->valF['datecourrier'];
544     //echo $this->msg=$this->msg.$valF['date_chantier']."";
545     break;
546     case "achevement" :
547     $valF['etat']= $this->valF['etat'];
548     $valF['date_achevement'] = $this->valF['datecourrier'];
549     break;
550     case "archivage" :
551     $valF['etat']= $this->valF['etat'];
552     $valF['date_conformite'] = $this->valF['datecourrier'];
553     break;
554    
555     default:
556     if ($this->valF['etat']!="")
557     $valF['etat']= $this->valF['etat'];
558     }// end switch
559 fraynaud 121 } // end param
560 fraynaud 20 if($valF!=""){
561     $cle= " dossier = '".$this->valF['dossier']."'";
562 fraynaud 242 $res1= $db->autoExecute(DB_PREFIXE.'dossier',$valF,DB_AUTOQUERY_UPDATE,$cle);
563 fraynaud 20 if (database::isError($res1))
564     die($res->getMessage());
565     if ($DEBUG == 1)
566     echo "La requête de mise à jour est effectuée.<br>";
567     $this->msg=$this->msg."<br>"._('enregistrement')." ".
568     $this->valF['dossier']." "._('table')." dossier [".
569     $db->affectedRows()." "._('enregistrement').
570     " "._('mis_a_jour')."]" ;
571     }
572 fmichon 1005 // verification si envoi vers ERP est active
573     if ($this->f->getParameter('option_erp') != "") {
574     // la nature du dossier
575     $nature_dossier = substr($this->idxformulaire,0,2);
576     $dossier_erp = $this->getFromDB("SELECT erp FROM ".DB_PREFIXE."dossier WHERE dossier = '" .
577     $this->valF['dossier'] . "'");
578     $evenement_libelle = $this->getFromDB(
579     "SELECT libelle FROM ".DB_PREFIXE."evenement WHERE evenement = '" .
580     $this->valF['evenement'] . "'");
581     if ($dossier_erp == 't') {
582     // envoi du message en cas d'un PC qui est ERP et sur lequel un evenement
583     // d'acceptation etait fait
584     if ($nature_dossier ==
585     $this->f->getParameter('erp_evenement_accepter_dossier_PC')
586     && $this->valF['evenement'] ==
587     $this->f->getParameter('erp_evenement_accepter_sans_reserve')) {
588     $msgenque = new MessageEnqueuer();
589     $msgenque->setDossierInstructionIdentifier($this->valF['dossier']);
590     $msgenque->setDecision($evenement_libelle);
591     $msgenque->enqueueMessage($msgenque::$ERP_ARRETE_PC_EFFECTUE);
592     }
593     if ($this->valF['evenement'] ==
594     $this->f->getParameter('erp_evenement_refuser_dossier')) {
595     $msgenque = new MessageEnqueuer();
596     $msgenque->setDossierInstructionIdentifier($this->valF['dossier']);
597     $msgenque->enqueueMessage($msgenque::$ERP_DECISION_CONFORMITE_EFFECTUE);
598     }
599 mlimic 936 }
600 fmichon 1005 } // fin de if ($this->f->getParameter('option_erp') != "")
601 fraynaud 20 }
602 mlimic 910
603    
604     /**
605     * Fait une requette sql pour extraire la valeur d'un champ, et retourne
606     * cette valeur
607     * @param string $sql La requete sql a executer
608     * @return La valeur du champs cherche, sinon NULL. En cas d'erreur de la BD
609     * l'execution s'arrete.
610     */
611     function getFromDB($sql) {
612 fmichon 926 //$sql = "SELECT libelle FROM ".DB_PREFIXE."dossier WHERE dossier = '" . $dossier . "'";
613 mlimic 910 $res = $this->db->limitquery($sql, 0, 1);
614     $this->addToLog("getDossierERPSpecification(): db->limitquery(\"".
615     str_replace(",",", ",$sql)."\", 0, 1);", VERBOSE_MODE);
616     // Si une erreur survient on die
617     if (database::isError($res, true)) {
618     // Appel de la methode de recuperation des erreurs
619     $this->erreur_db($res->getDebugInfo(), $res->getMessage(), 'instruction');
620     }
621     // retourne la nature du dossier
622     while ($row =& $res->fetchRow()) {
623     return $row[0];
624     }
625     // la nature n'etait pas trouve, ce qui ne devrait pas se passer
626     return NULL;
627 fraynaud 129
628 mlimic 910 }
629    
630    
631 fraynaud 129 function triggermodifierapres($id,&$db,$val,$DEBUG) {
632     /*
633     * cette fonction apour objet de permettre de modifier la date courrier
634     */
635     $valF=array();
636 fraynaud 242 $sql= "select action from ".DB_PREFIXE."evenement where evenement =".$this->valF['evenement'];
637 fraynaud 129 $action = $db->getOne($sql);
638     if (database::isError($action)) die($action->getMessage().$sql);
639 fraynaud 242 $sql="select * from ".DB_PREFIXE."action where action = '".$action."'";
640 fraynaud 129 $res = $db->query($sql);
641     if (database::isError($res)) die($res->getMessage().$sql);
642     while ($row=& $res->fetchRow(DB_FETCHMODE_ASSOC)){
643     // application des regles sur le courrier + delai
644     if(preg_match("/datecourrier/",$row['regle_date_limite'])){
645     $valF['date_limite']= $this->regle($row['regle_date_limite']);
646     }
647     if(preg_match("/datecourrier/",$row['regle_date_complet'])){
648     $valF['date_complet']= $this->regle($row['regle_date_complet']);
649     }
650     if(preg_match("/datecourrier/",$row['regle_date_notification_delai'])){
651     $valF['date_notification_delai']= $this->regle($row['regle_date_notification_delai']);
652     }
653     if(preg_match("/datecourrier/",$row['regle_date_decision'])){
654     $valF['date_decision']= $this->regle($row['regle_date_decision']);
655     }
656     if(preg_match("/datecourrier/",$row['regle_date_rejet'])){
657     $valF['date_rejet']= $this->regle($row['regle_date_rejet']);
658     }
659     if(preg_match("/datecourrier/",$row['regle_date_validite'])){
660     $valF['date_validite']= $this->regle($row['regle_date_validite']);
661     }
662     if(preg_match("/datecourrier/",$row['regle_date_chantier'])){
663     $valF['date_chantier']= $this->regle($row['regle_date_chantier']);
664     }
665     if(preg_match("/datecourrier/",$row['regle_date_achevement'])){
666     $valF['date_achevement']= $this->regle($row['regle_date_achevement']);
667     }
668     if(preg_match("/datecourrier/",$row['regle_date_conformite'])){
669     $valF['date_conformite']= $this->regle($row['regle_date_conformite']);
670     }
671     } // while
672     if($valF!=array()){
673     $cle= " dossier = '".$this->valF['dossier']."'";
674 fraynaud 242 $res1= $db->autoExecute(DB_PREFIXE.'dossier',$valF,DB_AUTOQUERY_UPDATE,$cle);
675 fraynaud 129 if (database::isError($res1))
676     die($res->getMessage());
677     if ($DEBUG == 1)
678     echo "La requête de mise à jour est effectuée.<br>";
679     $this->msg=$this->msg."<br>"._('enregistrement')." ".
680     $this->valF['dossier']." "._('table')." dossier [".
681     $db->affectedRows()." "._('enregistrement').
682     " "._('mis_a_jour')."]" ;
683     }
684     }
685    
686    
687 fraynaud 20
688     // trigger before delete
689     function triggersupprimer($id,&$db,$val,$DEBUG) {
690     // archive en instruction (si suppression) [archive if delete instruction]
691     $valF['delai']=$val['archive_delai'];
692     $valF['accord_tacite']=$val['archive_accord_tacite'];
693     $valF['etat']=$val['archive_etat'];
694 fraynaud 80 if($val['archive_avis']=='')
695 vpihour 489 $valF['avis_decision']= null;
696 fraynaud 80 else
697 vpihour 489 $valF['avis_decision']=$val['archive_avis'];
698 fraynaud 20 // if= compatibilite pgsql
699     if($val['archive_date_complet']!='')
700     $valF['date_complet']=$val['archive_date_complet'];
701     if($val['archive_date_rejet']!='')
702     $valF['date_rejet']= $val['archive_date_rejet'];
703     if($val['archive_date_limite']!='')
704     $valF['date_limite']= $val['archive_date_limite'];
705     if($val['archive_date_notification_delai']!='')
706     $valF['date_notification_delai']= $val['archive_date_notification_delai'];
707     if($val['archive_date_decision']!='')
708     $valF['date_decision']= $val['archive_date_decision'];
709     if($val['archive_date_validite']!='')
710     $valF['date_validite']= $val['archive_date_validite'];
711     if($val['archive_date_achevement']!='')
712     $valF['date_achevement']= $val['archive_date_achevement'];
713     if($val['archive_date_chantier']!='')
714     $valF['date_chantier']= $val['archive_date_chantier'];
715     if($val['archive_date_conformite']!='')
716     $valF['date_conformite']= $val['archive_date_conformite'];
717 fraynaud 80
718 fraynaud 20 $cle= " dossier = '".$val['dossier']."'";
719 fraynaud 242 $res= $db->autoExecute(DB_PREFIXE.'dossier',$valF,DB_AUTOQUERY_UPDATE,$cle);
720 fraynaud 20 if (database::isError($res))
721     die($res->getMessage());
722     else{
723     if ($DEBUG == 1)
724     echo "La requête de mise à jour est effectuée.<br>";
725     }
726     }
727     // =============================================
728     // calcul de date avec ajout de mois (delais)
729     // [add months (delay) and calculation final date]
730     // LIMITE DE LA FONCTION si delai >24 MOIS
731     // [limit : delay < 24 month]
732     // =============================================
733     function moisdate($date,$delaimois) {
734     $temp = explode("-" , $date);
735     $jour = (int) $temp[2];
736     $mois = (int) $temp[1];
737     $annee = (int) $temp[0];
738     // calcul si delai superieur à 12 (limite 24) [delay > 24 month]
739     if($delaimois>=12){
740     $delaimois=$delaimois-12;
741     $annee=$annee+1;
742     }
743     if($delaimois>=12){
744     $delaimois=$delaimois-12;
745     $annee=$annee+1;
746     }
747     // mois
748     $mois=$mois+$delaimois;
749     // calcul mois annee [calculation number of years if > 12 month]
750     // nb de mois > à 12
751     if ($mois>12){
752     $mois=$mois-12;
753     $annee=$annee+1;
754     }
755     // Calcul du nombre de jours dans le mois sélectionné [calculation number of days]
756     switch($mois) {
757     case "2":
758     if ($annee % 4 == 0 && $annee % 100 != 0 || $annee % 400 == 0)
759     $jourmax = 29;
760     else
761     $jourmax = 28;
762     break;
763     case "4":
764     case "6":
765     case "9":
766     case "11":
767     $jourmax = 30;
768     break;
769     default:
770     $jourmax = 31;
771     }
772     if ($jour > $jourmax)
773     $jour = $jourmax;
774     //$dateretour=$annee."-".$mois."-".$jour;
775     return $annee."-".$mois."-".$jour ;
776     }
777    
778 fraynaud 3 }// fin classe
779 atreal 208 ?>

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26