/[openfoncier]/branches/2.x/obj/instruction.class.php
ViewVC logotype

Contents of /branches/2.x/obj/instruction.class.php

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2 - (show annotations)
Tue Feb 8 10:07:21 2011 UTC (13 years, 11 months ago) by fmichon
File size: 21237 byte(s)
Import de la version 2.x d'openfoncier anciennement sous CVS

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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26