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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 46 - (show annotations)
Tue Aug 2 15:14:06 2011 UTC (13 years, 6 months ago) by fraynaud
File size: 24609 byte(s)
mise au point 


1 <?php
2 //$Id$
3 //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 require_once ("../gen/obj/instruction.class.php");
21
22 class instruction extends instruction_gen {
23
24 var $archive_date_depot; // specific
25 var $retourformulaire; // specific
26 var $idxformulaire; // specific
27
28 function instruction($id,&$db,$debug) {
29 $this->constructeur($id,$db,$debug);
30 }// fin constructeur
31
32 function setvalF($val){
33 $this->valF['instruction'] = $val['instruction'];
34 $this->valF['destinataire'] = $val['destinataire'];
35 $this->valF['lettretype'] = $val['lettretype'];
36 $this->valF['dossier'] = $val['dossier'];
37 if($val['datecourrier']!="")
38 $this->valF['datecourrier'] = $this->dateDB($val['datecourrier']);
39 $this->valF['complement'] = $val['complement'];
40 $this->valF['complement2'] = $val['complement2'];
41 $this->valF['evenement'] = $val['evenement'];
42 }
43
44
45 function cleSecondaire($id,&$db,$val,$DEBUG) {
46 // controle suppression cle secondaire [secondary key delete control]
47 // ------------------------------------------------------------------------------------
48 // specifique detruire que le dernier [specific instruction : delete the last event ]
49 // ------------------------------------------------------------------------------------
50 $dernierevenement='';
51 $sql="select max(instruction) from instruction where dossier ='".
52 $this->idxformulaire."'";
53 $dernierevenement = $db->getOne($sql);
54 if($dernierevenement==$id){
55 $this->correct=true;
56 $this->msg="<br>"._('destruction_chronologique')." ok <br>";
57 }else{
58 $this->msg="<br>"._('destruction_evenement')." : ".$dernierevenement.
59 "<br>"._('destruction_chronologique');
60 $this->correct=false;
61 }
62 }
63
64 function verifier($val,&$db,$DEBUG){
65 $this->correct=True;
66 $imgv="";
67 $f="&nbsp!&nbsp;&nbsp;&nbsp;&nbsp;";
68 $imgv="<img src='../img/punaise.png' style='vertical-align:middle' hspace='2' border='0'>";
69 // obligatoire
70 if ($this->valF['destinataire']==""){
71 $this->correct=false;
72 $this->msg= $this->msg.$imgv." "._('instruction')." ".
73 _('obligatoire').$f;
74 }
75 if ($val['datecourrier']==""){
76 $this->correct=false;
77 $this->msg= $this->msg.$imgv." "._('datecourrier')." ".
78 _('obligatoire').$f;
79 }
80 if ($val['evenement']==""){
81 $this->correct=false;
82 $this->msg= $this->msg.$imgv." "._('evenement')." ".
83 _('obligatoire').$f;
84 }
85 }//verifier
86
87 function setValsousformulaire(&$form,$maj,$validation,$idxformulaire,$retourformulaire,$typeformulaire){
88 if ($validation==0) {
89 if ($maj == 0){
90 $form->setVal("destinataire", $idxformulaire);
91 $form->setVal("dossier", $idxformulaire);
92 $form->setVal("datecourrier", date('Y-m-d'));
93 }
94 $form->setVal("bible_auto","bible_auto()");
95 $form->setVal("bible","bible()");
96 $form->setVal("bible2","bible2()");
97 }
98 $this->retourformulaire=$retourformulaire;
99 $this->idxformulaire=$idxformulaire;
100 }
101
102 function setType(&$form,$maj) {
103 if ($maj < 2) { //ajouter et modifier
104 $form->setType('destinataire', 'hidden');
105 $form->setType('lettretype', 'hiddenstatic');
106 $form->setType('complement', 'textarea');
107 $form->setType('complement2', 'textarea');
108 $form->setType('complement3', 'hidden');
109 $form->setType('bible3', 'hidden');
110 $form->setType('complement4', 'hidden');
111 $form->setType('bible4', 'hidden');
112 $form->setType('complement5', 'hidden');
113 $form->setType('bible5', 'hidden');
114 $form->setType('complement6', 'hidden');
115 $form->setType('bible6', 'hidden');
116 $form->setType('complement7', 'hidden');
117 $form->setType('bible7', 'hidden');
118 $form->setType('complement8', 'hidden');
119 $form->setType('bible8', 'hidden');
120 $form->setType('complement9', 'hidden');
121 $form->setType('bible9', 'hidden');
122 $form->setType('complement10', 'hidden');
123 $form->setType('bible10', 'hidden');
124 $form->setType('complement11', 'hidden');
125 $form->setType('bible11', 'hidden');
126 $form->setType('complement12', 'hidden');
127 $form->setType('bible12', 'hidden');
128 $form->setType('complement13', 'hidden');
129 $form->setType('bible13', 'hidden');
130 $form->setType('complement14', 'hidden');
131 $form->setType('bible14', 'hidden');
132 $form->setType('complement15', 'hidden');
133 $form->setType('bible15', 'hidden');
134 $form->setType('bible_auto', 'httpclick');
135 $form->setType('bible', 'httpclick');
136 $form->setType('bible2', 'httpclick');
137 $form->setType('dossier', 'hiddenstatic');
138 $form->setType('delai', 'hidden');
139 $form->setType('etat', 'hidden');
140 $form->setType('accord_tacite', 'hidden');
141 $form->setType('action', 'hidden');
142 $form->setType('delai_notification', 'hidden');
143 $form->setType('avis', 'hidden');
144 $form->setType('archive_delai', 'hidden');
145 $form->setType('archive_etat', 'hidden');
146 $form->setType('archive_accord_tacite', 'hidden');
147 $form->setType('archive_avis', 'hidden');
148 $form->setType('archive_date_complet', 'hidden');
149 $form->setType('archive_date_rejet', 'hidden');
150 $form->setType('archive_date_limite', 'hidden');
151 $form->setType('archive_date_notification_delai', 'hidden');
152 $form->setType('archive_date_decision', 'hidden');
153 $form->setType('archive_date_validite', 'hidden');
154 $form->setType('archive_date_achevement', 'hidden');
155 $form->setType('archive_date_conformite', 'hidden');
156 $form->setType('archive_date_chantier', 'hidden');
157 $form->setType('libelle', 'hiddenstatic');
158 if($maj==0){ // add
159 $form->setType('instruction', 'hiddenstatic');
160 $form->setType('evenement', 'select');
161 $form->setType('datecourrier', 'date2');
162 }else{ // modify
163 $form->setType('instruction', 'hiddenstatic');
164 $form->setType('evenement', 'hiddenstatic');
165 $form->setType('datecourrier', 'hiddenstaticdate');
166 }
167 }else{ // supprimer [delete]
168 $form->setType('instruction', 'hiddenstatic');
169 $form->setType('dossier', 'hiddenstatic');
170 $form->setType('archive_delai', 'hiddenstatic');
171 $form->setType('archive_etat', 'hiddenstatic');
172 $form->setType('archive_accord_tacite', 'hiddenstatic');
173 $form->setType('archive_avis', 'hiddenstatic');
174 $form->setType('archive_date_complet', 'hiddenstatic');
175 $form->setType('archive_date_rejet', 'hiddenstatic');
176 $form->setType('archive_date_limite', 'hiddenstatic');
177 $form->setType('archive_date_notification_delai', 'hiddenstatic');
178 $form->setType('archive_date_decision', 'hiddenstatic');
179 $form->setType('archive_date_validite', 'hiddenstatic');
180 $form->setType('archive_date_achevement', 'hiddenstatic');
181 }
182 }
183
184 function setTaille(&$form,$maj){
185 $form->setTaille('complement', 120);
186 $form->setTaille('complement2', 120);
187 $form->setTaille('datecourrier', 12);
188 }
189
190 function setMax(&$form,$maj){
191 $form->setMax('complement',12 );
192 $form->setMax('complement2',12 );
193 }
194
195 //function setSelect(&$form, $maj,&$db,$DEBUG,$idxformulaire) {
196 function setSelect(&$form, $maj,&$db,$DEBUG) {
197 if(file_exists ("../sql/".$db->phptype."/".$this->table.".form.inc"))
198 include ("../sql/".$db->phptype."/".$this->table.".form.inc");
199 if($maj<2){
200 // *** evenement ***
201 $contenu=array();
202 // etat du dossier
203 $sql="select etat from dossier where dossier ='".
204 $this->idxformulaire."'";
205 $etat_dossier = $db->getOne($sql);
206 $nature_dossier= substr($this->idxformulaire,0,2);
207 // recherche des evenement de transition
208 $sql= $sql_transition." where transition.etat ='".$etat_dossier."' and (evenement.nature ='".
209 $nature_dossier."' or (nature ='T' and nature !='CU')) order by evenement.action";
210 //$sql= $sql_transition." where (evenement.nature ='".
211 // $nature_dossier."' or (nature ='T' and nature !='CU')) order by evenement.action";
212
213
214 $res = $db->query($sql);
215 if (database::isError($res))
216 die($res->getMessage());
217 $contenu[0][0]="";
218 $contenu[1][0]=_('choisir')." "._('evenement');
219 $k=1;
220 while ($row=& $res->fetchRow()){
221 if($maj==0){ // ajouter
222 $contenu[0][$k]=$row[0];
223 $contenu[1][$k]=$row[1];
224 $k++;
225 }else{
226 // select hiddenstatic
227 $contenu[0][$k]=$row[0];
228 $contenu[1][$k]=$row[1];
229 $k++;
230 }
231 }
232 $form->setSelect("evenement",$contenu);
233 // lien bible_auto [link]
234 $contenu=array();
235 $contenu[0]=" automatique ";
236 $form->setSelect("bible_auto",$contenu);
237 // lien bible1
238 $contenu=array();
239 $contenu[0]=" Bible ";
240 $form->setSelect("bible",$contenu);
241 // lien bible2
242 $contenu=array();
243 $contenu[0]=" Bible ";
244 $form->setSelect("bible2",$contenu);
245 }
246 } // function select
247
248 function setGroupe(&$form,$maj){
249 $form->setGroupe('evenement','D');
250 $form->setGroupe('libelle','G');
251 $form->setGroupe('datecourrier','G');
252 $form->setGroupe('lettretype','F');
253 }
254
255 function setRegroupe(&$form,$maj){
256 $form->setRegroupe('evenement','D',_('evenement'), "collapsible");
257 $form->setRegroupe('libelle','G','');
258 $form->setRegroupe('datecourrier','G','');
259 $form->setRegroupe('lettretype','F','');
260 $form->setRegroupe('complement','D',_('complement'), "startClosed");
261 $form->setRegroupe('bible_auto','G','');
262 $form->setRegroupe('bible','F','');
263 $form->setRegroupe('complement2','D',_('complement2'), "startClosed");
264 $form->setRegroupe('bible2','F','');
265 }
266
267 function setLib(&$form,$maj) {
268 parent :: setLib($form,$maj);
269 $form->setLib('libelle',' ');
270 $form->setLib('bible_auto',"");
271 $form->setLib('bible',"");
272 $form->setLib('bible2',"");
273 $form->setLib('lettretype',"->"._(" courrier "));
274 $form->setLib('datecourrier',_(" du "));
275 }
276
277 function setOnchange(&$form,$maj){
278 $form->setOnchange("datecourrier","fdate(this)");
279 }
280
281 // ==================================================================
282 // trigger avant modification données [trigger before modify data]
283 // ==================================================================
284 function triggerajouter($id,&$db,$val,$DEBUG) {
285 // mise a jour instruction avec evenement
286 // [modify instruction with evenement]
287 $sql= "select * from evenement where evenement =".$this->valF['evenement'];
288 $res = $db->query($sql);
289 if (database::isError($res))
290 die($res->getMessage());
291 if ($DEBUG == 1)
292 echo " la requete ".$sql." est exécutée<br>";
293 while ($row=& $res->fetchRow(DB_FETCHMODE_ASSOC)){
294 $this->valF['action']=$row['action'];
295 $this->valF['delai']=$row['delai'];
296 $this->valF['etat']=$row['etat'];
297 $this->valF['accord_tacite']=$row['accord_tacite'];
298 $this->valF['delai_notification']=$row['delai_notification'];
299 $this->valF['avis']=$row['avis'];
300 if($row['lettretype']!="")
301 $this->valF['lettretype']=$row['lettretype'];
302 else
303 $this->valF['lettretype']="standard";
304 }
305 $sql= "select * from dossier where dossier = '".$this->valF['dossier']."'";
306 $res = $db->query($sql);
307 if (database::isError($res))
308 die($res->getMessage());
309 if ($DEBUG == 1)
310 echo " la requete ".$sql." est exécutée<br>";
311 while ($row=& $res->fetchRow(DB_FETCHMODE_ASSOC)){
312 //
313 $this->archive_date_depot = $row['date_depot'];
314 // archive en instruction (si suppression)
315 $this->valF['archive_delai']=$row['delai'];
316 $this->valF['archive_accord_tacite']=$row['accord_tacite'];
317 $this->valF['archive_etat']=$row['etat'];
318 $this->valF['archive_avis']=$row['avis'];
319 // compatibilite pgsql
320 if($row['date_complet']!='')
321 $this->valF['archive_date_complet']=$row['date_complet'];
322 if($row['date_rejet']!='')
323 $this->valF['archive_date_rejet']= $row['date_rejet'];
324 if($row['date_limite']!='')
325 $this->valF['archive_date_limite']= $row['date_limite'];
326 if($row['date_notification_delai']!='')
327 $this->valF['archive_date_notification_delai']= $row['date_notification_delai'];
328 if($row['date_decision']!='')
329 $this->valF['archive_date_decision']= $row['date_decision'];
330 if($row['date_validite']!='')
331 $this->valF['archive_date_validite']= $row['date_validite'];
332 if($row['date_achevement']!='')
333 $this->valF['archive_date_achevement']= $row['date_achevement'];
334 if($row['date_chantier']!='')
335 $this->valF['archive_date_chantier']= $row['date_chantier'];
336 if($row['date_conformite']!='')
337 $this->valF['archive_date_conformite']= $row['date_conformite'];
338 }
339 }
340
341 // ==================================================================
342 // valeur dossier apres modification [values dossier after action]
343 // ==================================================================
344 function triggerajouterapres($id,&$db,$val,$DEBUG) {
345 switch ($this->valF['action']) {
346 case "initialisation" :
347 $valF['delai']= $this->valF['delai'];
348 $valF['etat']= $this->valF['etat'];
349 $valF['accord_tacite']= $this->valF['accord_tacite'];
350 // la date_complet est la date de depot
351 $valF['date_complet']= $this->archive_date_depot;
352 $valF['date_limite'] = $this->moisdate($valF['date_complet'],$valF['delai']);
353 $valF['date_notification_delai'] = $this->moisdate($valF['date_complet'],1);
354 break;
355 case "notification" :
356 $valF['delai']= $this->valF['delai'];
357 $valF['etat']= $this->valF['etat'];
358 $valF['accord_tacite']= $this->valF['accord_tacite'];
359 // la date_complet est celle precedemment saisie
360 $valF['date_complet']=$this->valF['archive_date_complet'];
361 $valF['date_limite'] = $this->moisdate($valF['date_complet'],$valF['delai']);
362 $valF['date_notification_delai'] = $this->moisdate($valF['date_complet'],1);
363 // la date du courrier ne doit pas etre depasse par rapport au delai de
364 // notification [verify notification date]
365 if($this->valF['archive_date_notification_delai']<$this->valF['datecourrier'])
366 $this->msg=$this->msg."<br><img src='../img/erreur.gif'> "._("date_notification_delai")." ".
367 $this->valF['archive_date_notification_delai']." < "._('datecourrier');
368 //
369 break;
370 case "retour" :
371 $valF['delai']= $this->valF['delai'];
372 $valF['etat']= $this->valF['etat'];
373 $valF['accord_tacite']= $this->valF['accord_tacite'];
374 // la date_complet est celle de l evenement
375 $valF['date_complet']= $this->valF['datecourrier'];
376 $valF['date_limite'] = $this->moisdate($valF['date_complet'],$valF['delai']);
377 $valF['date_notification_delai'] = $this->moisdate($valF['date_complet'],1);
378 break;
379 case "rejet" :
380 //$valF['delai']=0; // *** delai a garder pour etat dpc
381 $valF['etat']= $this->valF['etat'];
382 $valF['accord_tacite']= $this->valF['accord_tacite'];
383 // la date rejet est initialisee
384 $valF['date_rejet']= $this->valF['datecourrier'];
385 // les dates de depart et fin d instruction sont annulées
386 $valF['date_limite'] ="";
387 $valF['date_notification_delai'] ="";
388 $valF['date_complet']="";
389 break;
390 case "majoration" :
391 $valF['delai']= $this->valF['archive_delai']+$this->valF['delai'];
392 $valF['etat']= $this->valF['etat'];
393 $valF['accord_tacite']= $this->valF['accord_tacite'];
394 $valF['date_complet']=$this->valF['archive_date_complet'];
395 // majoration de la date limite
396 $valF['date_limite'] = $this->moisdate($valF['date_complet'],$valF['delai']);
397 $valF['date_notification_delai'] = $this->moisdate($valF['date_complet'],1);
398 // la date du courrier ne doit pas etre depasse par rapport au delai de
399 // notification
400 if($this->valF['archive_date_notification_delai']<$this->valF['datecourrier'])
401 $this->msg=$this->msg."<br><img src='../img/erreur.gif'>"._("date_notification_delai").
402 $this->valF['archive_date_notification_delai']." < "._('datecourrier');
403 break;
404 case "acceptation" :
405 $valF['etat']= $this->valF['etat'];
406 $valF['date_decision']= $this->valF['datecourrier'];
407 $valF['avis']= $this->valF['avis'];
408 // date de validite = date de l evenement + delai
409 $valF['date_validite'] = $this->moisdate($this->valF['datecourrier'],$this->valF['delai']);
410 break;
411 case "refus" :
412 $valF['etat']= $this->valF['etat'];
413 $valF['date_decision']= $this->valF['datecourrier'];
414 $valF['avis']= $this->valF['avis'];
415 break;
416 case "prolongation" :
417 $valF['date_validite'] = $this->moisdate($this->valF['archive_date_validite'],$this->valF['delai']);
418 break;
419 case "sursis" :
420 $valF['date_limite'] = $this->moisdate($this->valF['datecourrier'],$this->valF['delai']);
421 $valF['etat']= $this->valF['etat'];
422 $valF['accord_tacite']= $this->valF['accord_tacite'];
423 $valF['avis']= $this->valF['avis'];
424 $valF['date_decision']= $this->valF['datecourrier'];
425 $temp = $valF['date_limite'];
426 $valF['date_validite']= $this->moisdate($temp,2);
427 echo $valF['date_limite']."vvv" ;
428 break;
429 case "execution" :
430 $valF['etat']= $this->valF['etat'];
431 $valF['date_chantier'] = $this->valF['datecourrier'];
432 echo $this->msg=$this->msg.$valF['date_chantier']."***";
433 break;
434 case "achevement" :
435 $valF['etat']= $this->valF['etat'];
436 $valF['date_achevement'] = $this->valF['datecourrier'];
437 break;
438 case "archivage" :
439 $valF['etat']= $this->valF['etat'];
440 $valF['date_conformite'] = $this->valF['datecourrier'];
441 break;
442 /*
443 case "abandon" :
444 $valF['etat']= $this->valF['etat'];
445 break;
446 */
447 default:
448 if ($this->valF['etat']!="")
449 $valF['etat']= $this->valF['etat'];
450 }// end switch
451
452 // mise à jour dossier [modify dossier]
453 if($valF!=""){
454 $cle= " dossier = '".$this->valF['dossier']."'";
455 $res1= $db->autoExecute('dossier',$valF,DB_AUTOQUERY_UPDATE,$cle);
456 if (database::isError($res1))
457 die($res->getMessage());
458 if ($DEBUG == 1)
459 echo "La requête de mise à jour est effectuée.<br>";
460 $this->msg=$this->msg."<br>"._('enregistrement')." ".
461 $this->valF['dossier']." "._('table')." dossier [".
462 $db->affectedRows()." "._('enregistrement').
463 " "._('mis_a_jour')."]" ;
464 }
465 }
466
467 // trigger before delete
468 function triggersupprimer($id,&$db,$val,$DEBUG) {
469 // archive en instruction (si suppression) [archive if delete instruction]
470 $valF['delai']=$val['archive_delai'];
471 $valF['accord_tacite']=$val['archive_accord_tacite'];
472 $valF['etat']=$val['archive_etat'];
473 $valF['avis']=$val['archive_avis'];
474 // if= compatibilite pgsql
475 if($val['archive_date_complet']!='')
476 $valF['date_complet']=$val['archive_date_complet'];
477 if($val['archive_date_rejet']!='')
478 $valF['date_rejet']= $val['archive_date_rejet'];
479 if($val['archive_date_limite']!='')
480 $valF['date_limite']= $val['archive_date_limite'];
481 if($val['archive_date_notification_delai']!='')
482 $valF['date_notification_delai']= $val['archive_date_notification_delai'];
483 if($val['archive_date_decision']!='')
484 $valF['date_decision']= $val['archive_date_decision'];
485 if($val['archive_date_validite']!='')
486 $valF['date_validite']= $val['archive_date_validite'];
487 if($val['archive_date_achevement']!='')
488 $valF['date_achevement']= $val['archive_date_achevement'];
489 if($val['archive_date_chantier']!='')
490 $valF['date_chantier']= $val['archive_date_chantier'];
491 if($val['archive_date_conformite']!='')
492 $valF['date_conformite']= $val['archive_date_conformite'];
493 $cle= " dossier = '".$val['dossier']."'";
494 $res= $db->autoExecute('dossier',$valF,DB_AUTOQUERY_UPDATE,$cle);
495 if (database::isError($res))
496 die($res->getMessage());
497 else{
498 if ($DEBUG == 1)
499 echo "La requête de mise à jour est effectuée.<br>";
500 }
501 }
502 // =============================================
503 // calcul de date avec ajout de mois (delais)
504 // [add months (delay) and calculation final date]
505 // LIMITE DE LA FONCTION si delai >24 MOIS
506 // [limit : delay < 24 month]
507 // =============================================
508 function moisdate($date,$delaimois) {
509 $temp = explode("-" , $date);
510 $jour = (int) $temp[2];
511 $mois = (int) $temp[1];
512 $annee = (int) $temp[0];
513 // calcul si delai superieur à 12 (limite 24) [delay > 24 month]
514 if($delaimois>=12){
515 $delaimois=$delaimois-12;
516 $annee=$annee+1;
517 }
518 if($delaimois>=12){
519 $delaimois=$delaimois-12;
520 $annee=$annee+1;
521 }
522 // mois
523 $mois=$mois+$delaimois;
524 // calcul mois annee [calculation number of years if > 12 month]
525 // nb de mois > à 12
526 if ($mois>12){
527 $mois=$mois-12;
528 $annee=$annee+1;
529 }
530 // Calcul du nombre de jours dans le mois sélectionné [calculation number of days]
531 switch($mois) {
532 case "2":
533 if ($annee % 4 == 0 && $annee % 100 != 0 || $annee % 400 == 0)
534 $jourmax = 29;
535 else
536 $jourmax = 28;
537 break;
538 case "4":
539 case "6":
540 case "9":
541 case "11":
542 $jourmax = 30;
543 break;
544 default:
545 $jourmax = 31;
546 }
547 if ($jour > $jourmax)
548 $jour = $jourmax;
549 //$dateretour=$annee."-".$mois."-".$jour;
550 return $annee."-".$mois."-".$jour ;
551 }
552
553 }// fin classe
554 ?>

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26