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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 923 - (hide annotations)
Thu Nov 29 22:51:42 2012 UTC (12 years, 2 months ago) by fmichon
File size: 52816 byte(s)
Ajout de la constante DB_PREFIXE manquante

1 fraynaud 3 <?php
2     //$Id$
3 nhaye 427 //gen openMairie le 10/02/2011 20:39
4    
5 fraynaud 3 require_once ("../gen/obj/dossier.class.php");
6 mlimic 835 require_once("../services/outgoing/messageenqueuer.php");
7 fraynaud 3
8     class dossier extends dossier_gen {
9    
10 fraynaud 20 var $maj;
11 fraynaud 128 var $sig;
12     var $servitude="";
13     var $auto_pos;
14     var $auto_servitude_surfacique;
15 fraynaud 142 var $auto_servitude_ligne;
16     var $auto_servitude_point;
17     var $auto_parcelle;
18     var $auto_parcelle_lot;
19 nhaye 467 var $aff_depot = "collapsible";
20     var $aff_travaux = "collapsible";
21     var $aff_instruction = "collapsible";
22     var $aff_demandeur = "startClosed";
23     var $aff_delegataire = "startClosed";
24     var $aff_terrain = "startClosed";
25     var $aff_localisation = "collapsible";
26     var $aff_description = "startClosed";
27     var $aff_amenagement = "startClosed";
28    
29     function dossier($id,&$db,$DEBUG) {
30     $this->constructeur($id,$db,$DEBUG);
31     } // fin constructeur
32 fraynaud 128
33 nhaye 427 function setValFAjout($val = array()) {
34 nhaye 920 /*
35 nhaye 427 // Cle primaire
36     $lettre=$this->f->collectivite["lettre"];
37     $numero_unique = $this->f->collectivite["numero_unique"];
38     if($numero_unique==1){
39     // numero unique (voir dyn/var.inc)
40     $temp=$this->$db->nextId(DB_PREFIXE.$this->table);
41     }else{
42     // numero suivant nature
43 nhaye 467 $temp=$this->db->nextId(DB_PREFIXE."dossier_".$val['nature']);
44 nhaye 427 }
45     $temp=str_pad($temp,4,"0", STR_PAD_LEFT);
46     $this->valF['dossier'] = $this->valF['nature'].$this->valF['annee'].
47     $lettre.$temp;
48 nhaye 920 */
49     $this->valF['dossier'] = time();
50 nhaye 427 }
51 fraynaud 3
52 fraynaud 11 function setvalF($val){
53 nhaye 427 parent::setvalF($val);
54 fraynaud 126 // enlever les valeurs a ne pas saisir -> recherche en trigger ajouter et modifier
55     // $sig = 1
56 fraynaud 369 unset ($this->valF['geom']);
57     unset ($this->valF['geom1']);
58 fraynaud 20 // valeurs hiddenstatic (calcule)
59     if($this->maj==1){
60     // par defaut
61     unset ($this->valF['etat']);
62     unset ($this->valF['delai']);
63     unset ($this->valF['accord_tacite']);
64     unset ($this->valF['types']);
65     }
66 vpihour 489 unset ($this->valF['avis_decision']); // avis + libelle avis
67 fraynaud 20 unset ($this->valF['terrain_surface_calcul']);
68     unset ($this->valF['shon_calcul']);
69     unset ($this->valF['parcelle_archive']);
70 fraynaud 144 unset ($this->valF['parcelle_lot_archive']);
71 fraynaud 20 unset ($this->valF['date_notification_delai']);
72     unset ($this->valF['date_decision']);
73     unset ($this->valF['date_limite']);
74     unset ($this->valF['date_validite']);
75     unset ($this->valF['date_chantier']);
76     unset ($this->valF['date_achevement']);
77 nhaye 427 unset ($this->valF['date_conformite']);
78 fraynaud 11 }
79    
80     function verifier($val,&$db,$DEBUG){
81 nhaye 427 parent::verifier($val,$db,$DEBUG);
82 fraynaud 11 if($val['parcelle']!="" and $val['sig']!='Oui'){
83 vpihour 584 if (!preg_match('/^[0-9]{3} [A-Z]{1,3} [0-9]{1,5}$/', $val['parcelle']) && !preg_match('/^[0-9]{3}[A-Z]{1,3}[0-9]{1,5}$/', $val['parcelle'])){
84 fraynaud 126 $this->correct=false;
85 vpihour 575 $this->addToMessage("<br>format parcelle incorrect");
86 fraynaud 126 }
87 fraynaud 11 }
88     // regles travaux verification
89     if ($this->valF['travaux']!=""){
90 fraynaud 242 $sql= "select * from ".DB_PREFIXE."regle where id = '".$this->valF['travaux'].
91 fraynaud 11 "' and controle = 'travaux' order by ordre";
92     $res = $db->query($sql);
93 fraynaud 126 if (database :: isError($res)) die($res->getMessage().$sql);
94     $this->addToLog("requete ".$sql." execute <br>", EXTRA_VERBOSE_MODE);
95     $regle=0;
96     $msg="";
97     while ($row=& $res->fetchRow(DB_FETCHMODE_ASSOC)){
98 fraynaud 152 if(isset($this->valF[$row['champ']]))
99     $champvaleur=$this->valF[$row['champ']];
100     else
101     $champvaleur=0;
102 fraynaud 126 switch ($row['operateur']) {
103     case ">" :
104     if($row['sens']=="plus"){
105 fraynaud 152 if($champvaleur > $row['valeur'])
106 fraynaud 126 $condition = 1;
107     else
108     $condition = 0;
109     if($regle==1 or $condition == 1)
110     $regle=1;
111     else
112     $regle=0;
113     $msg=$msg."<br> + ".$row['message']." [".$row['champ']." = ".
114 fraynaud 152 $champvaleur."]";
115 fraynaud 126 }else{
116 fraynaud 152 if($champvaleur > $row['valeur']){
117 fraynaud 126 $condition = 0;
118 fraynaud 11 }else{
119 fraynaud 126 $condition = 1;
120     $regle=0;
121 fraynaud 11 }
122 fraynaud 126 $msg=$msg."<br> ou ".$row['message']." [".$row['champ']." = ".
123 fraynaud 152 $champvaleur."]";
124 fraynaud 126 }
125 fraynaud 11 break;
126 fraynaud 126 case ">=":
127 fraynaud 152 if($row['sens']=="plus"){
128     if($champvaleur >= $row['valeur'])
129 fraynaud 126 $condition = 1;
130     else
131     $condition = 0;
132     if($regle==1 or $condition == 1)
133     $regle=1;
134     else
135     $regle=0;
136     $msg=$msg."<br> + ".$row['message']." [".$row['champ']." = ".
137 fraynaud 152 $champvaleur."]";
138 fraynaud 126 }else{
139 fraynaud 152 if($champvaleur >= $row['valeur']){
140 fraynaud 126 $condition = 0;
141    
142 fraynaud 11 }else{
143 fraynaud 126 $condition = 1;
144     $regle=0;
145 fraynaud 11 }
146 fraynaud 126 $msg=$msg."<br> ou ".$row['message']." [".$row['champ']." = ".
147 fraynaud 152 $champvaleur."]";
148     }
149 fraynaud 126 break;
150     case "<" :
151 fraynaud 11 if($row['sens']=="plus"){
152 fraynaud 152 if($champvaleur < $row['valeur'])
153 fraynaud 11 $condition = 1;
154     else
155     $condition = 0;
156     if($regle==1 or $condition == 1)
157     $regle=1;
158     else
159     $regle=0;
160     $msg=$msg."<br> + ".$row['message']." [".$row['champ']." = ".
161 fraynaud 152 $champvaleur."]";
162 fraynaud 126 }else{
163 fraynaud 152 if($champvaleur < $row['valeur']){
164 fraynaud 11 $condition = 0;
165     }else{
166     $condition = 1;
167     $regle=0;
168     }
169 fraynaud 126 $msg=$msg."<br> et ".$row['message']." [".$row['champ']." = ".
170 fraynaud 152 $champvaleur."]";
171 fraynaud 11 }
172     break;
173 fraynaud 126 case "==":
174 fraynaud 152 if($row['sens']=="plus"){
175     if($champvaleur == $row['valeur'])
176     $condition = 1;
177     else
178     $condition = 0;
179     if($regle==1 or $condition == 1)
180     $regle=1;
181     else
182     $regle=0;
183     $msg=$msg."<br> + ".$row['message']." [".$row['champ']." = ".
184     $champvaleur."]";
185 fraynaud 126 }else{
186 fraynaud 152 if($champvaleur == $row['valeur']){
187     $condition = 0;
188    
189     }else{
190     $condition = 1;
191     $regle=0;
192     }
193     $msg=$msg."<br> ou ".$row['message']." [".$row['champ']." = ".
194     $champvaleur."]";
195 fraynaud 126 }
196     break;
197 fraynaud 152 //break;
198 fraynaud 11 } // switch
199 fraynaud 126 if($regle==0)
200 fraynaud 152 $this->addToMessage($msg." <br>");
201 fraynaud 126 } // while
202     } // travaux
203 fraynaud 11 }//verifier
204    
205    
206     function setType(&$form,$maj) {
207 nhaye 427 parent::setType($form,$maj);
208 fraynaud 11 if ($maj < 2) { //ajouter et modifier
209 fraynaud 20 // cache
210     if($maj==0) $form->setType('dossier', 'hidden');
211 fraynaud 11 $form->setType('annee', 'hidden');
212 nhaye 467 $form->setType('nature', 'select');
213 fraynaud 144 $form->setType('parcelle_archive','hidden');
214     $form->setType('parcelle_lot_archive','hidden');
215 fraynaud 20 $form->setType('objet_dossier','hidden'); // PC
216     $form->setType('amenagement','hidden'); // PC
217 fraynaud 142 $form->setType('parcelle_lot','hidden'); // PC
218     $form->setType('parcelle_lot_lotissement','hidden'); // PC
219 fraynaud 369
220     $form->setType('geom1', 'hidden');
221 fraynaud 338 $form->setType('geom', 'geom');
222 fraynaud 126 $form->setType('servitude', 'hiddenstatic');
223 nhaye 427
224 fraynaud 11 //select
225 nhaye 427 $form->setType('terrain_numero_complement','select');
226 fraynaud 11
227     // combo
228     $form->setType('rivoli','comboD');
229     $form->setType('terrain_adresse','comboG');
230     $form->setType('architecte_nom','comboG');
231 fraynaud 142 $form->setType('architecte','comboD');
232 fraynaud 11
233 fraynaud 142
234 fraynaud 11 // hiddenstatic
235 fraynaud 20 if($maj==1) $form->setType('dossier', 'hiddenstatic');
236     $form->setType('etat','hiddenstatic');
237 vpihour 489 $form->setType('avis_decision','hiddenstatic');
238 fraynaud 11 $form->setType('delai','hiddenstatic');
239     $form->setType('terrain_surface_calcul','hiddenstatic');
240 fraynaud 20 $form->setType('shon_calcul','hiddenstatic');
241 fraynaud 11
242 fraynaud 20 $form->setType('accord_tacite','hiddenstatic');
243     $form->setType('types', 'hiddenstatic'); // transfert modificatif
244 fraynaud 11
245 fraynaud 20
246     // hiddenstaticdate
247     $form->setType('date_notification_delai','hiddenstaticdate');
248     $form->setType('date_decision','hiddenstaticdate');
249     $form->setType('date_limite','hiddenstaticdate');
250     $form->setType('date_rejet','hiddenstaticdate');
251     $form->setType('date_complet','hiddenstaticdate');
252     $form->setType('date_limite','hiddenstaticdate');
253     $form->setType('date_validite','hiddenstaticdate');
254     $form->setType('date_chantier','hiddenstaticdate');
255     $form->setType('date_achevement','hiddenstaticdate');
256     $form->setType('date_conformite','hiddenstaticdate');
257    
258     // checkbox
259 fraynaud 142 $form->setType('sig','checkbox');
260 fraynaud 20 $form->setType('delegataire','checkbox');
261 fraynaud 142
262 fraynaud 20 // mail
263     $form->setType('delegataire_email','mail');
264     $form->setType('demandeur_email','mail');
265    
266 fraynaud 11 // zones temp et strategysig
267 fraynaud 142
268    
269     // temp
270 fraynaud 266 if (file_exists ("../dyn/var.inc"))
271     include ("../dyn/var.inc");
272     if(!isset($auto_pos))
273     $auto_pos=0;
274     if($auto_pos==1)
275     $form->setType('pos','hiddenstatic');
276     else
277     $form->setType('pos','select');
278 fraynaud 11 $form->setType('temp1',$temp1_type);
279     $form->setType('temp2',$temp2_type);
280     $form->setType('temp3',$temp3_type);
281     $form->setType('temp4',$temp4_type);
282     $form->setType('temp5',$temp5_type);
283 mlimic 858 $form->setType('a_qualifier', 'checkbox');
284 fraynaud 11 }
285 fmichon 686 if ($maj == 1) {
286     //
287     if ($this->f->isAccredited("dossier_modifier_instructeur")) {
288     $form->setType('instructeur', 'select');
289     } else {
290     $form->setType('instructeur', 'selecthiddenstatic');
291     }
292     //
293     if($this->f->getParameter('afficher_division') === 'true') {
294     //
295     if ($this->f->isAccredited("dossier_modifier_division")) {
296     $form->setType('division', 'select');
297     } else {
298     $form->setType('division', 'selecthiddenstatic');
299     }
300     } else {
301     $form->setType('division', 'hidden');
302     }
303     }
304 nhaye 445 if($maj == 3) {
305     $form->setType('annee', 'hidden');
306 nhaye 467 $form->setType('nature', 'selectstatic');
307 nhaye 445 $form->setType('temp1','hidden');
308     $form->setType('temp2','hidden');
309     $form->setType('temp3','hidden');
310     $form->setType('temp4','hidden');
311     $form->setType('temp5','hidden');
312     $form->setType('parcelle_archive','hidden');
313     $form->setType('parcelle_lot_archive','hidden');
314     $form->setType('geom1','hidden');
315 nhaye 446 $form->setType('geom','hidden');
316 mlimic 858 $form->setType('a_qualifier', 'checkboxstatic');
317 nhaye 445 }
318 fmichon 686 //
319     if(!$this->f->getParameter('afficher_division') === 'true') {
320     $form->setType('division', 'hidden');
321     }
322 fraynaud 11 }
323    
324     function setVal(&$form,$maj,$validation){
325 fraynaud 20 $this->maj=$maj;
326 fraynaud 11 if ($validation==0) {
327     if ($maj == 0){
328 nhaye 467 //$dossier_cp = $this->f->collectivite["cp"];
329     //$dossier_ville = $this->f->collectivite["ville"];
330     //$form->setVal('nature', $this->nature);
331 fraynaud 11
332     $form->setVal('annee', date('y'));
333     $form->setVal('date_demande', date('Y-m-d'));
334     $form->setVal('date_depot', date('Y-m-d'));
335    
336 nhaye 467 //$form->setVal('demandeur_cp', $dossier_cp);
337     //$form->setVal('demandeur_ville', $dossier_ville);
338 fraynaud 11
339 nhaye 467 //$form->setVal('delegataire_cp', $dossier_cp);
340     //$form->setVal('delegataire_ville', $dossier_ville);
341 fraynaud 11
342 nhaye 467 //$form->setVal('terrain_cp', $dossier_cp);
343     //$form->setVal('terrain_ville', $dossier_ville);
344 fraynaud 11
345     $form->setVal('accord_tacite', 'Non');
346     $form->setVal('etat', 'initialiser');
347     $form->setVal('types', 'Initial');
348 nhaye 427 }
349 fraynaud 11 }
350     }
351    
352     function setSelect(&$form, $maj,&$db,$debug) {
353 nhaye 427 parent::setSelect($form, $maj,$db,$debug);
354 fraynaud 20 //optimisation sur table importante parcelle -> pas d appel methode parent
355 atreal 312 if(file_exists ("../sql/".$db->phptype."/".$this->table.".form.inc.php"))
356     include ("../sql/".$db->phptype."/".$this->table.".form.inc.php");
357 fraynaud 11 if($maj<2){
358     // travaux
359     $contenu=array();
360 fraynaud 20 // prise en compte du solde en ajout
361     if($maj==0)
362     $sql_travaux = $sql_travaux.
363     " and solde = 'Non' order by libelle";
364     else
365     $sql_travaux = $sql_travaux.
366     " order by libelle";
367 fraynaud 11 $res = $db->query($sql_travaux);
368 fraynaud 126 if (database::isError($res)) die($res->getMessage()).$sql_travaux;
369     $this->addToLog(" la requete ".$sql_travaux." est executee", VERBOSE_MODE);
370     $contenu[0][0]="";
371     $contenu[1][0]=_('choisir')." "._('travaux');
372     $k=1;
373     while ($row=& $res->fetchRow()){
374     $contenu[0][$k]=$row[0];
375     $contenu[1][$k]=$row[1];
376     $k++;
377     }
378 fraynaud 11 $form->setSelect("travaux",$contenu);
379 fraynaud 20
380 fraynaud 11 // code et libelle voie
381     $contenu="";
382     $contenu[0][0]="rivoli";// table
383     $contenu[0][1]="rivoli"; // zone origine
384     $contenu[1][0]="libelle";
385     $contenu[1][1]="terrain_adresse";
386     $form->setSelect("rivoli",$contenu);
387 fraynaud 126 //terrain_adresse
388 fraynaud 11 $contenu="";
389     $contenu[0][0]="rivoli";// table
390     $contenu[0][1]="libelle"; // zone origine
391     $contenu[1][0]="rivoli";
392     $contenu[1][1]="rivoli";
393     $form->setSelect("terrain_adresse",$contenu);
394     // code et libelle architecte
395     $contenu="";
396     $contenu[0][0]="architecte";// table
397     $contenu[0][1]="architecte"; // zone origine
398     $contenu[1][0]="nom";
399     $contenu[1][1]="architecte_nom";
400     $form->setSelect("architecte",$contenu);
401     $contenu="";
402     $contenu[0][0]="architecte";// table
403     $contenu[0][1]="nom"; // zone origine
404     $contenu[1][0]="architecte";
405     $contenu[1][1]="architecte";
406     $form->setSelect("architecte_nom",$contenu);
407 fraynaud 142 // parcelle_lot
408     $contenu="";
409     $contenu[0][0]="parcelle_lot";// table
410     $contenu[0][1]="parcelle_lot"; // zone origine
411     $contenu[1][0]="lotissement";
412     $contenu[1][1]="parcelle_lot_lotissement";
413     $form->setSelect("parcelle_lot",$contenu);
414     $contenu="";
415     $contenu[0][0]="parcelle_lot";// table
416     $contenu[0][1]="lotissement"; // zone origine
417     $contenu[1][0]="parcelle_lot";
418     $contenu[1][1]="parcelle_lot";
419     $form->setSelect("parcelle_lot_lotissement",$contenu);
420 fraynaud 11 // accord tacite
421     $contenu=array();
422     $contenu[0]=array('Non','Oui');
423     $contenu[1]=array('Non','Oui');
424     $form->setSelect("accord_tacite",$contenu);
425     // terrain_numero_complement
426     $contenu=array();
427     $contenu[0]=array('','bis','ter','quater');
428     $contenu[1]=array('','bis','ter','quater');
429     $form->setSelect("terrain_numero_complement",$contenu);
430 fraynaud 338 // geom *** a voir
431     if($maj==1){ //modification
432     $contenu=array();
433     $contenu[0]=array("dossier",$this->getParameter("idx"));
434     $form->setSelect('geom',$contenu);
435     }
436    
437 vpihour 575 /*
438     * Affichage de donnĂ©es dans le select de la parcelle
439     * */
440     $contenu=array();
441     $sql="select parcelle from ".DB_PREFIXE."parcelle ";
442     $res = $db->query($sql);
443     if (database::isError($res))
444     die($res->getMessage());
445     $contenu[0][0]="";
446     $contenu[1][0]=_("choisir parcelle");
447     $k=1;
448     while ($row=& $res->fetchRow()){
449     $contenu[0][$k]=$row[0];
450     $contenu[1][$k]=$row[0];
451     $k++;
452     }
453     $form->setSelect("parcelle",$contenu);
454    
455 fraynaud 11 }
456 nhaye 517 if($this->f->getParameter('afficher_division')==='true') {
457     // instructeur
458 nhaye 520 $this->init_select($form, $db, $maj, $debug, "instructeur",
459     $sql_instructeur_div, $sql_instructeur_div_by_id, false);
460 nhaye 517 }
461 fraynaud 11 }
462    
463 fraynaud 345 function setLib(&$form,$maj) {
464     parent::setLib($form,$maj);
465     $form->setLib('geom','');
466     }
467    
468 fraynaud 11 function setGroupe(&$form,$maj){
469 fmichon 686 //If ($maj==0){
470     // $form->setGroupe('date_demande','D');
471     // $form->setGroupe('date_depot','G');
472     // $form->setGroupe('division','F');
473     //}else{
474     // $form->setGroupe('dossier','D');
475     // $form->setGroupe('nature','G');
476     // $form->setGroupe('annee','G');
477     // $form->setGroupe('date_demande','G');
478     // $form->setGroupe('date_depot','G');
479     // $form->setGroupe('division','F');
480     //}
481 fraynaud 20 $form->setGroupe('demandeur_categorie','D');
482     $form->setGroupe('demandeur_civilite','G');
483 atreal 316 $form->setGroupe('demandeur_nom','F');
484    
485     $form->setGroupe('demandeur_societe','D');
486     $form->setGroupe('demandeur_adresse','G');
487     $form->setGroupe('demandeur_adresse_complement','F');
488    
489     $form->setGroupe('demandeur_cp','D');
490 fraynaud 20 $form->setGroupe('demandeur_ville','G');
491     $form->setGroupe('demandeur_pays','F');
492    
493     $form->setGroupe('demandeur_email','D');
494     $form->setGroupe('demandeur_telephone','F');
495    
496     $form->setGroupe('delegataire','D');
497     $form->setGroupe('delegataire_civilite','G');
498 atreal 316 $form->setGroupe('delegataire_nom','F');
499    
500     $form->setGroupe('delegataire_societe','D');
501     $form->setGroupe('delegataire_adresse','G');
502     $form->setGroupe('delegataire_adresse_complement','F');
503     $form->setGroupe('delegataire_cp','D');
504 fraynaud 20 $form->setGroupe('delegataire_ville','G');
505     $form->setGroupe('delegataire_pays','F');
506    
507     $form->setGroupe('delegataire_email','D');
508     $form->setGroupe('delegataire_telephone','F');
509    
510     $form->setGroupe('architecte','D');
511 fmichon 656 $form->setGroupe('architecte_nom','F');
512     //$form->setGroupe('saisie_architecte','F');
513 fraynaud 20
514 atreal 312 $form->setGroupe('travaux','D');
515     $form->setGroupe('travaux_complement','F');
516    
517 fraynaud 11 // terrain
518     $form->setGroupe('terrain_numero','D');
519     $form->setGroupe('terrain_numero_complement','G');
520 atreal 316 $form->setGroupe('rivoli','F');
521     $form->setGroupe('terrain_adresse','D');
522 fraynaud 20 $form->setGroupe('terrain_adresse_complement','F');
523    
524     $form->setGroupe('terrain_cp','D');
525     $form->setGroupe('terrain_ville','F');
526    
527     // surface
528     $form->setGroupe('terrain_surface','D');
529 fraynaud 11 $form->setGroupe('terrain_surface_calcul','F');
530    
531 fraynaud 20 // instruction
532 fraynaud 11 $form->setGroupe('date_complet','D');
533     $form->setGroupe('date_rejet','G');
534     $form->setGroupe('rejet','G');
535     $form->setGroupe('delai','F');
536    
537     $form->setGroupe('date_limite','D');
538     $form->setGroupe('date_notification_delai','G');
539     $form->setGroupe('accord_tacite','G');
540     $form->setGroupe('etat','F');
541    
542     $form->setGroupe('date_decision','D');
543 vpihour 489 $form->setGroupe('avis_decision','G');
544 fraynaud 11 $form->setGroupe('date_validite','G');
545     $form->setGroupe('types','F');
546    
547 fraynaud 20 $form->setGroupe('date_chantier','D');
548     $form->setGroupe('date_achevement','G');
549 fraynaud 11 $form->setGroupe('date_conformite','F');
550 fraynaud 142
551 fraynaud 20 // localisation
552 fraynaud 11 $form->setGroupe('parcelle','D');
553 fraynaud 142 $form->setGroupe('pos','G');
554 fraynaud 345 if($maj==1){
555     $form->setGroupe('sig','G');
556     $form->setGroupe('geom','F');
557 nhaye 427 }else {
558     $form->setGroupe('sig','F');
559 fraynaud 345 }
560 nhaye 427 if($maj==1){
561     $form->setGroupe('sig','G');
562     $form->setGroupe('geom','F');
563     }
564 fraynaud 345
565 fraynaud 20 // description
566     $form->setGroupe('batiment_nombre','D');
567     $form->setGroupe('logement_nombre','G');
568     $form->setGroupe('hauteur','G');
569     $form->setGroupe('piece_nombre','F');
570    
571     $form->setGroupe('shon','D');
572     $form->setGroupe('shon_calcul','G');
573     $form->setGroupe('shob','G');
574     $form->setGroupe('lot','F');
575 fraynaud 142
576     $form->setGroupe('amenagement','D');
577     $form->setGroupe('parcelle_lot','G');
578     $form->setGroupe('parcelle_lot_lotissement','F');
579 fraynaud 11 }
580    
581     function setOnchange(&$form,$maj){
582     parent::setOnchange($form,$maj);
583     // mise en majuscule
584     $form->setOnchange("demandeur_nom","this.value=this.value.toUpperCase()");
585     $form->setOnchange("demandeur_societe","this.value=this.value.toUpperCase()");
586     $form->setOnchange("delegataire_nom","this.value=this.value.toUpperCase()");
587     $form->setOnchange("delegataire_societe","this.value=this.value.toUpperCase()");
588 fraynaud 20 $form->setOnchange("architecte_nom","this.value=this.value.toUpperCase()");
589 fraynaud 89 $form->setOnchange("terrain_adresse","this.value=this.value.toUpperCase()");
590 fraynaud 271 $form->setOnchange('shon','VerifNumdec(this)');
591     $form->setOnchange('shob','VerifNumdec(this)');
592     $form->setOnchange('hauteur','VerifNumdec(this)');
593 fraynaud 292 $form->setOnchange('terrain_surface','VerifNumdec(this)');
594 fraynaud 11 }
595    
596 fmichon 681 function setLayout(&$form, $maj) {
597 fmichon 686 //
598     $form->setBloc('dossier', 'D', '', ($maj == 3 ? 'col_9':'col_12'));
599     $form->setBloc('dossier', 'D', '', 'col_9');
600 fmichon 681 $form->setFieldset('dossier', 'D', _("Dossier d'instruction"));
601 fmichon 686 $form->setFieldset('autorite_competente', 'F');
602     $form->setBloc('autorite_competente', 'F');
603     $form->setBloc('date_demande', 'D', '', 'col_3');
604     $form->setFieldset('date_demande', 'D', _("Depot"));
605     $form->setFieldset('date_depot', 'F');
606     $form->setFieldset('enjeu_urba', 'D', _("Enjeu"));
607     $form->setFieldset('enjeu_erp', 'F');
608     $form->setBloc('enjeu_erp', 'F');
609     $form->setBloc('enjeu_erp', 'F');
610     //
611     $form->setBloc('objet_dossier', 'D', '', 'col_12');
612     //
613     $form->setFieldset('date_complet', 'D', _('Instruction'), 'col_12');
614     $form->setRegroupe('date_conformite','F','');
615     //
616 fmichon 869 $form->setBloc('terrain_superficie', 'F');
617 fmichon 686
618 fmichon 681 }
619    
620     function setRegroupe(&$form,$maj) {
621     //// depot
622     //If ($maj==0){
623     // $form->setRegroupe('date_demande','D',_("Depot"),$this->aff_depot );
624     //}
625     //If ($maj==1){
626     // $form->setRegroupe('dossier','D',_("Depot"), $this->aff_depot);
627     // $form->setRegroupe('date_demande','G','');
628     //}
629     //$form->setRegroupe('date_depot','G','');
630     //$form->setRegroupe('division','F','');
631    
632 fraynaud 20 // travaux
633     $form->setRegroupe('architecte','D',_('Architecte')." / "._("Travaux"), $this->aff_travaux);
634     $form->setRegroupe('architecte_nom','G','');
635 atreal 312 $form->setRegroupe('travaux','G','');
636     $form->setRegroupe('travaux_complement','F','');
637 fraynaud 15
638 fmichon 686 //// instruction
639     //$form->setRegroupe('date_complet','D',_('Instruction'), $this->aff_instruction);
640     //$form->setRegroupe('date_rejet','G','');
641     //$form->setRegroupe('date_notification_delai','G','');
642     //$form->setRegroupe('delai','G','');
643     //$form->setRegroupe('date_limite','G','Decision ');
644     //$form->setRegroupe('accord_tacite','G','');
645     //$form->setRegroupe('etat','G','');
646     //$form->setRegroupe('date_decision','G','');
647     //$form->setRegroupe('avis_decision','G','');
648     //$form->setRegroupe('date_validite','G','');
649     //$form->setRegroupe('types','G','');
650     //$form->setRegroupe('date_chantier','G','');
651     //$form->setRegroupe('date_achevement','G','');
652     //$form->setRegroupe('date_conformite','F','');
653 fraynaud 15
654 fraynaud 20 // demandeur
655     $form->setRegroupe('demandeur_categorie','D',_('Demandeur'), $this->aff_demandeur);
656     $form->setRegroupe('demandeur_civilite','G','');
657     $form->setRegroupe('demandeur_nom','G','');
658     $form->setRegroupe('demandeur_societe','G','');
659     $form->setRegroupe('demandeur_adresse','G','Decision ');
660     $form->setRegroupe('demandeur_cp','G','');
661     $form->setRegroupe('demandeur_ville','G','');
662     $form->setRegroupe('demandeur_pays','G','');
663     $form->setRegroupe('demandeur_email','G','');
664     $form->setRegroupe('demandeur_telephone','F','');
665    
666    
667     // delegataire
668     $form->setRegroupe('delegataire','D',_('delegataire'), $this->aff_delegataire);
669     $form->setRegroupe('delegataire_civilite','G','');
670     $form->setRegroupe('delegataire_nom','G','');
671     $form->setRegroupe('delegataire_societe','G','');
672     $form->setRegroupe('delegataire_adresse','G','Decision ');
673     $form->setRegroupe('delegataire_cp','G','');
674     $form->setRegroupe('delegataire_ville','G','');
675     $form->setRegroupe('delegataire_pays','G','');
676     $form->setRegroupe('delegataire_email','G','');
677     $form->setRegroupe('delegataire_telephone','F','');
678 fraynaud 15
679     // terrain
680 fraynaud 20 $form->setRegroupe('terrain_numero','D',_('terrain'), $this->aff_terrain);
681 fraynaud 12 $form->setRegroupe('terrain_numero_complement','G','');
682     $form->setRegroupe('rivoli','G','');
683     $form->setRegroupe('terrain_adresse','G','');
684     $form->setRegroupe('terrain_adresse_complement','G','');
685 fraynaud 20 $form->setRegroupe('terrain_cp','G','');
686     $form->setRegroupe('terrain_ville','G','');
687     $form->setRegroupe('terrain_surface','G',_('surface'),'');// $this->aff_surface);
688 fraynaud 12 $form->setRegroupe('terrain_surface_calcul','F','');
689 fraynaud 20
690     // localisation
691     $form->setRegroupe('parcelle','D',_('localisation'), $this->aff_localisation);
692 fraynaud 142 $form->setRegroupe('pos','G','');
693     $form->setRegroupe('sig','F','');
694 fraynaud 345 if($maj==1){
695     $form->setRegroupe('sig','G','');
696     $form->setRegroupe('geom','F','');
697     }
698 fraynaud 20
699     // description
700 fraynaud 257 $form->setRegroupe('batiment_nombre','D',_('statistique'), $this->aff_description);
701 fraynaud 20 $form->setRegroupe('logement_nombre','G','');
702     $form->setRegroupe('hauteur','G','');
703     $form->setRegroupe('piece_nombre','G','');
704     $form->setRegroupe('shon','G','');
705     $form->setRegroupe('shon_calcul','G','');
706     $form->setRegroupe('shob','G','');
707     $form->setRegroupe('lot','F','');
708 fraynaud 142
709 fraynaud 257 $form->setRegroupe('description','D',_('description').' '._('servitude'), $this->aff_amenagement);
710 fraynaud 256 $form->setRegroupe('servitude','F','');
711    
712 fraynaud 142 // amenagement
713     $form->setRegroupe('amenagement','D',_('Amenagement'), $this->aff_amenagement);
714     $form->setRegroupe('parcelle_lot','G','');
715     $form->setRegroupe('parcelle_lot_lotissement','F','');
716 mlimic 858
717 fraynaud 11 }
718    
719 vpihour 584
720    
721     /* =============================================================
722     * fonction trigger relative a la connexion SIG
723     * $sig = 1 dans dyn/var.inc
724 mlimic 835 * utilisé aussi pour envoyer une message au service REST d'ERP
725 vpihour 584 * ===============================================================
726     */
727    
728     function triggerajouterapres($id,&$db,$val,$DEBUG) {
729     $this->sig_parametre($db);
730     $id=$this->valF['dossier']; // id n est pas valorise en ajout
731     if($this->sig==1 and $val['sig']!='Oui'){
732     if($val['parcelle']!=''or $val['parcelle_lot']!=''){
733    
734     $this->sig_interne($id,$db,$val,$DEBUG);
735     }
736     else
737     $this->addToMessage("<br>"._("Parcelle non renseignee dans dossier")." ".$id." <br>");
738    
739     }
740 mlimic 896
741     // envoi du message a ERP en cas d'un depot du dossier dat
742     if ($this->valF['nature'] ==
743     $this->f->getParameter('erp_depot_dossier_dat')) {
744     $msgenque = new MessageEnqueuer();
745     $msgenque->setDossierInstructionIdentifier($this->valF['dossier']);
746 fmichon 919 $msgenque->enqueueMessage($msgenque->ERP_DEPOT_DOSSIER_DAT);
747 mlimic 896 }
748 mlimic 835
749 mlimic 896 // envoi du message a ERP en cas d'une demande d'ouverture DAT
750     if ($this->valF['nature'] ==
751     $this->f->getParameter('erp_demande_ouverture_dat')) {
752     $msgenque = new MessageEnqueuer();
753     $msgenque->setDossierInstructionIdentifier($this->valF['dossier']);
754 fmichon 919 $msgenque->enqueueMessage($msgenque->ERP_DEMANDE_OUVERTURE_DAT);
755 mlimic 896 }
756    
757 mlimic 915 if ($this->valF['erp'] === true) {
758     // envoi du message a ERP en cas d'annulation d'une demande
759     if ($this->valF['nature'] ==
760     $this->f->getParameter('erp_annulation_demande')) {
761     $msgenque = new MessageEnqueuer();
762     $msgenque->setDossierInstructionIdentifier($this->valF['dossier']);
763 fmichon 919 $msgenque->enqueueMessage($msgenque->ERP_ANNULATION_DEMANDE);
764 mlimic 915 }
765    
766     // envoi du message a ERP en cas d'ouverture d'un dossier PC "rattache"
767     // au dossier DAACT
768     if ($this->valF['nature'] ==
769     $this->f->getParameter('erp_demande_ouverture_pc_daact')) {
770     $msgenque = new MessageEnqueuer();
771     $msgenque->setDossierInstructionIdentifier($this->valF['dossier']);
772 fmichon 919 $msgenque->enqueueMessage($msgenque->ERP_DEMANDE_OUVERTURE_PC);
773 mlimic 915 }
774 mlimic 912 }
775    
776 vpihour 584 }
777    
778 vpihour 575 /*
779     * Calcul l'identifiant du quartier et d'un arrondissement d'une parcelle
780     * */
781 vpihour 770 function getQuartierArrondissement($parcelle) {
782 vpihour 575
783     $parcelle = trim($parcelle);
784 vpihour 626 $quartier = '';
785 vpihour 575
786 vpihour 770 /*Récupère le code impot du quartier dans la parcelle*/
787     for ( $i = 0 ; $i < strlen($parcelle) ; $i++ ){
788    
789     if (is_numeric($parcelle[$i]) ){
790    
791 vpihour 575 $quartier .= $parcelle[$i];
792 vpihour 770 }
793     else{
794    
795 vpihour 575 break;
796 vpihour 770 }
797     }
798 vpihour 575
799     if ( $quartier !== '' ){
800    
801     /*identifiant*/
802     $sql = "SELECT
803     quartier, arrondissement
804     FROM
805 fmichon 923 ".DB_PREFIXE."quartier
806 vpihour 575 WHERE
807     code_impots='$quartier'";
808    
809 vpihour 770 $this->addToLog("getQuartierArrondissement(parcelle) : db->query(\"$sql\")", VERBOSE_MODE);
810     $res = $this->db->query($sql);
811 vpihour 575 if (database :: isError($res))
812     die($res->getMessage()."erreur ".$sql);
813    
814 vpihour 621 if ( $res->numRows() > 0 ){
815    
816 vpihour 770 return $res->fetchRow(DB_FETCHMODE_ASSOC);
817 vpihour 575 }
818     }
819 vpihour 770
820     return NULL;
821 vpihour 575 }
822    
823     /*
824     * Retourne la section d'une parcelle
825     * */
826     function getSection($parcelle){
827    
828     $parcelle = trim($parcelle);
829 vpihour 584 $section = NULL;
830 vpihour 575
831     for ( $i = 0 ; $i < strlen($parcelle) ; $i++ )
832     if ( !is_numeric($parcelle[$i]) && is_string($parcelle[$i]) && $parcelle[$i] !== ' ' )
833     $section .= $parcelle[$i];
834    
835     return $section;
836     }
837 vpihour 584
838     /*
839     * Retourne l'intructeur correspondant le mieux Ă  la parcelle
840     * */
841 vpihour 770 function getInstructeurDivision( $quartier, $arrondissement, $section, $nature) {
842    
843     $quartier = ( $quartier == NULL ) ? -1 : $quartier;
844     $arrondissement = ( $arrondissement == NULL ) ? -1 : $arrondissement;
845 vpihour 584
846     $sql = "
847     SELECT
848     instructeur, section, quartier, arrondissement, nature
849     FROM
850 fmichon 923 ".DB_PREFIXE."lien_localisation_nature l
851 vpihour 584 WHERE
852     ( nature IS NULL AND arrondissement IS NULL AND quartier IS NULL AND section IS NULL ) OR
853     ( nature IS NULL AND arrondissement IS NULL AND quartier IS NULL AND section = '$section' ) OR
854     ( nature IS NULL AND arrondissement IS NULL AND quartier = $quartier AND section IS NULL ) OR
855     ( nature IS NULL AND arrondissement IS NULL AND quartier = $quartier AND section = '$section' ) OR
856     ( nature IS NULL AND arrondissement = $arrondissement AND quartier IS NULL AND section IS NULL ) OR
857     ( nature IS NULL AND arrondissement = $arrondissement AND quartier IS NULL AND section = '$section' ) OR
858     ( nature IS NULL AND arrondissement = $arrondissement AND quartier = $quartier AND section IS NULL ) OR
859     ( nature IS NULL AND arrondissement = $arrondissement AND quartier = $quartier AND section = '$section' ) OR
860     ( nature = '$nature' AND arrondissement IS NULL AND quartier IS NULL AND section IS NULL ) OR
861     ( nature = '$nature' AND arrondissement IS NULL AND quartier IS NULL AND section = '$section' ) OR
862     ( nature = '$nature' AND arrondissement IS NULL AND quartier = $quartier AND section IS NULL ) OR
863     ( nature = '$nature' AND arrondissement IS NULL AND quartier = $quartier AND section = '$section' ) OR
864     ( nature = '$nature' AND arrondissement = $arrondissement AND quartier IS NULL AND section IS NULL ) OR
865     ( nature = '$nature' AND arrondissement = $arrondissement AND quartier IS NULL AND section = '$section' ) OR
866     ( nature = '$nature' AND arrondissement = $arrondissement AND quartier = $quartier AND section IS NULL ) OR
867     ( nature = '$nature' AND arrondissement = $arrondissement AND quartier = $quartier AND section = '$section' )
868     ORDER BY section, quartier, arrondissement, nature
869     LIMIT 1
870     ";
871 vpihour 770
872     $this->addToLog("getInstructeurDivision( quartier, arrondissement, section, nature) : db->query(\"$sql\")", VERBOSE_MODE);
873     $res = $this->db->query($sql);
874 vpihour 584 if (database :: isError($res))
875     die($res->getMessage()."erreur ".$sql);
876    
877     if ( $res->numRows() > 0 ){
878 vpihour 719
879 vpihour 770 $row = $res->fetchRow(DB_FETCHMODE_ASSOC);
880    
881 fmichon 923 $sql = "SELECT division FROM ".DB_PREFIXE."instructeur WHERE instructeur = ".$row['instructeur'];
882 vpihour 770 $res = $this->db->query($sql);
883 vpihour 719 if (database :: isError($res))
884     die($res->getMessage()."erreur ".$sql);
885    
886     if ( $res->numRows() > 0 ){
887 vpihour 770
888 vpihour 719 $rowT=& $res->fetchRow(DB_FETCHMODE_ASSOC);
889 vpihour 770 $row['division'] = $rowT['division'];
890 vpihour 719 }
891    
892 vpihour 770 return $row;
893 fraynaud 11 }
894 vpihour 584
895     return NULL;
896     }
897 vpihour 575
898     /* =============================================================
899     * fonction trigger relative a la connexion SIG
900     * $sig = 1 dans dyn/var.inc
901     * ===============================================================
902     */
903 fraynaud 11
904 vpihour 575 function triggerajouter($id,&$db,$val,$DEBUG) {
905 fmichon 727 //
906     $this->addToLog("triggerajouter() : start", EXTRA_VERBOSE_MODE);
907 vpihour 626
908 fmichon 727 // Initialisation des variables nécessaires à l'affectation automatique
909 vpihour 770 $quartier = NULL;
910     $arrondissement = NULL;
911     $section = NULL;
912 fmichon 871 $instructeur = NULL;
913 vpihour 626
914 fmichon 727 // Si la parcelle n'est pas vide alors on récupère la section, le
915     // quartier et l'arrondissement
916     if ($val['parcelle'] != '') {
917 vpihour 770 // Cette méthode récupère l'arrondissement et le quartier associé à une parcelle
918     $quartierArrondissement = $this->getQuartierArrondissement($val['parcelle']);
919     if ( $quartierArrondissement!= NULL ){
920    
921     $quartier = $quartierArrondissement['quartier'];
922     $arrondissement = $quartierArrondissement['arrondissement'];
923 fmichon 727 }
924 vpihour 770 // Si il n'y a pas d'arrondissement alors on vide le quartier
925     if ( strcmp($arrondissement,'') == 0 ) {
926    
927     $arrondissement = NULL;
928     $quartier = NULL;
929     }
930 fmichon 727 // On récupère la section
931 vpihour 575 $section = $this->getSection($val['parcelle']);
932 fmichon 727 }
933    
934     // Si aucun instructeur n'est saisi et que la nature n'est pas vide
935     // alors on rĂ©cupère l'instructeur et la division depuis l'affectation
936     if ( ( empty($this->valF['instructeur']) || $this->valF['instructeur'] == '' ) && $val['nature'] != '' ) {
937 vpihour 770
938 fmichon 727 //
939 vpihour 770 $instructeurDivision = $this->getInstructeurDivision($quartier, $arrondissement, $section, $val['nature']);
940     if ( $instructeurDivision != NULL ){
941    
942     $instructeur = $instructeurDivision['instructeur'];
943     $division = $instructeurDivision['division'];
944     }
945 vpihour 621
946 fmichon 727 if ( $instructeur != NULL ){
947 vpihour 770
948 fmichon 727 $this->valF['instructeur'] = $instructeur;
949     $this->valF['division'] = $division;
950     } else {
951     if ($this->f->isAccredited("dossier_modifier_instructeur")) {
952     $this->addToMessage("<br/> "._("Pensez a assigner un instructeur a ce dossier.")." <br/>");
953     } else {
954     $this->addToMessage("<br/> "._("Aucun instructeur compatible avec ce dossier trouve, contactez votre administrateur afin d'en assigner un a ce dossier.")." <br/>");
955 vpihour 719 }
956     }
957 fmichon 727 } else {
958     $this->addToMessage("<br/> "._("Aucun instructeur compatible avec ce dossier trouve, contactez votre administrateur afin d'en assigner un a ce dossier.")." <br/>");
959 vpihour 584 }
960 fmichon 727 //
961     $this->addToLog("triggerajouter() : end", EXTRA_VERBOSE_MODE);
962 vpihour 575 }
963    
964 fraynaud 44 function triggermodifierapres($id,&$db,$val,$DEBUG) {
965 fraynaud 128 $this->sig_parametre($db);
966 fraynaud 44 // si la parcelle est changée
967 fraynaud 144 if(($this->sig==1 and $val['sig']!='Oui' and ($val['parcelle']!=$val['parcelle_archive'])
968     or $val['parcelle_lot']!=$val['parcelle_lot_archive'])){ // parcelle_lot_archive
969 fraynaud 142 if($val['parcelle']!='' or $val['parcelle_lot']!='')
970 fmichon 344 $this->sig_interne($this->valF['dossier'],$db,$val,$DEBUG);
971 fraynaud 256 else{
972     if($this->maj ==1){ // en maj mettre a null la geometrie si parcelle changĂ©e inexistante
973     $sql ="update ".DB_PREFIXE."dossier set geom = null, servitude = '', pos= '' where dossier ='".$id."'";
974     $res = $db -> query($sql);
975     $this->addToLog("requete trigger modifier parcelle vide -> maj pos et servitude :".$sql, VERBOSE_MODE);
976     if (database :: isError($res))
977     die($res->getMessage()."erreur ".$sql);
978     }
979 fraynaud 142 $this->addToMessage("<br>"._("Parcelle ou parcelle_lot non renseignee dans dossier")." ".$id." <br>");
980 fraynaud 256 }
981 mlimic 835 }
982 mlimic 896
983     // BOGUE: le test pour la nature doit etre change parce que
984     // 'erp_depot_dossier_dat' n'a pas la connexion directe avec
985     // qualification d'un dossier, mais c'est necessaire pour les tests
986     if ($this->val[array_search('a_qualifier', $this->champs)] == 't'
987     && $this->valF['a_qualifier'] === false) {
988    
989     $dossier_nature_dat = array(
990     $this->f->getParameter('erp_depot_dossier_dat'),
991     $this->f->getParameter('erp_demande_ouverture_dat'));
992    
993     // envoi du message "ERP Qualifie" pour un dossier DAT qui a besoin
994     // de la qualification URBA
995     if (in_array($this->valF['nature'], $dossier_nature_dat)) {
996     $msgenque = new MessageEnqueuer();
997     $msgenque->setDossierInstructionIdentifier($this->valF['dossier']);
998     $msgenque->setCompetence($this->valF['autorite_competente']);
999     $msgenque->setContraintePlu($this->valF['servitude']);
1000     $msgenque->setReferenceCadastrale(
1001     $this->getReferenceCadastrale($this->valF['dossier']));
1002 fmichon 919 $msgenque->enqueueMessage($msgenque->ERP_QUALIFIE);
1003 mlimic 896 }
1004    
1005     // envoi des messages a ERP en cas du dossier PC traite par URBA, et
1006     // qui etait classifie come ERP
1007     if ($this->valF['nature'] == 'PC' && $this->valF['erp'] == true) {
1008     $msgenque = new MessageEnqueuer();
1009     $msgenque->setDossierInstructionIdentifier($this->valF['dossier']);
1010 fmichon 919 $msgenque->enqueueMessage($msgenque->ERP_DEMANDE_COMPLETUDE_PC);
1011     $msgenque->enqueueMessage($msgenque->ERP_DEMANDE_QUALIFICATION_PC);
1012 mlimic 896 }
1013    
1014     }
1015    
1016 fraynaud 11 }
1017 mlimic 896
1018    
1019     /**
1020     * Retourne la reference cadastrale de la demande attache a un dossier ERP
1021     * specifique
1022     * @param string $dossier L'identifiant du dossier
1023     * @return string|null La reference cadastrale si elle est trouve,
1024     * sinon NULL. En cas d'erreur de la BD, l'execution s'arrete.
1025     */
1026     function getReferenceCadastrale($dossier) {
1027 fmichon 923 $sql = "SELECT terrain_references_cadastrales FROM ".DB_PREFIXE."demande WHERE dossier_instruction = '" . $dossier . "'";
1028 mlimic 896 $res = $this->db->limitquery($sql, 0, 1);
1029     $this->addToLog("getReferenceCadastrale(): db->limitquery(\"".
1030     str_replace(",",", ",$sql)."\", 0, 1);", VERBOSE_MODE);
1031     // Si une erreur survient on die
1032     if (database::isError($res, true)) {
1033     // Appel de la methode de recuperation des erreurs
1034     $this->erreur_db($res->getDebugInfo(), $res->getMessage(), 'demande');
1035     }
1036     // retourne la nature du dossier
1037     while ($row =& $res->fetchRow()) {
1038     return $row[0];
1039     }
1040     // la nature n'etait pas trouve, ce qui ne devrait pas se passer
1041     return NULL;
1042     }
1043    
1044 fraynaud 11
1045 fraynaud 128 function sig_parametre(&$db){
1046     if (file_exists ("../dyn/var.inc"))
1047     include ("../dyn/var.inc");
1048     if(!isset($sig))
1049     $this->sig=0;
1050     else
1051     $this->sig=1;
1052     if(!isset($auto_pos))
1053     $this->auto_pos=0;
1054     else
1055     $this->auto_pos=$auto_pos;
1056     if(!isset($auto_servitude_surfacique))
1057     $this->auto_servitude_surfacique=0;
1058     else
1059     $this->auto_servitude_surfacique=$auto_servitude_surfacique;
1060     if(!isset($auto_servitude_ligne))
1061     $this->auto_servitude_ligne=0;
1062     else
1063     $this->auto_servitude_ligne=$auto_servitude_ligne;
1064     if(!isset($auto_servitude_point))
1065     $this->auto_servitude_point=0;
1066     else
1067     $this->auto_servitude_point=$auto_servitude_point;
1068 fraynaud 142 if(!isset($auto_parcelle))
1069     $this->auto_parcelle=0;
1070     else
1071     $this->auto_parcelle=$auto_parcelle;
1072     if(!isset($auto_parcelle_lot))
1073     $this->auto_parcelle_lot=0;
1074     else
1075     $this->auto_parcelle_lot=$auto_parcelle_lot;
1076 fraynaud 128 $this->addToLog("trigger valeur sig :".$this->sig, VERBOSE_MODE);
1077     $this->addToLog("trigger valeur auto_pos :". $this->auto_pos, VERBOSE_MODE);
1078     $this->addToLog("trigger valeur auto_servitude_surfacique :".$this->auto_servitude_surfacique, VERBOSE_MODE);
1079     $this->addToLog("trigger valeur auto_servitude_ligne :". $this->auto_servitude_ligne, VERBOSE_MODE);
1080     $this->addToLog("trigger valeur auto_servitude_point :".$this->auto_servitude_point, VERBOSE_MODE);
1081 fraynaud 142 $this->addToLog("trigger valeur auto_parcelle :". $this->auto_parcelle, VERBOSE_MODE);
1082     $this->addToLog("trigger valeur auto_parcelle_lot :".$this->auto_parcelle_lot, VERBOSE_MODE);
1083 fraynaud 128 }
1084    
1085    
1086     function sig_interne($id,&$db,$val,$DEBUG){
1087 fraynaud 12 // Strategy interne dans var.inc
1088     // si la parcelle existe, il est cree un point au milieu de la parcelle
1089     // de maniere automatique
1090 fraynaud 145 $geom='';
1091 fraynaud 144 $parcelle=$val["parcelle"];
1092 fraynaud 44 $projection = $db -> getOne("select srid from geometry_columns where f_table_name='dossier'");
1093 fraynaud 144 if($this->auto_parcelle==1 and $val["parcelle"]!=''){
1094 fraynaud 242 $sql= "select astext(centroid(geom)) from ".DB_PREFIXE."parcelle where parcelle ='".$val["parcelle"]."'";
1095 fraynaud 144 $this->addToLog("recherche centroid parcelle :".$sql, VERBOSE_MODE);
1096     $geom = $db -> getOne($sql);
1097     if (database :: isError($geom))die($res->getMessage()."erreur ".$sql);
1098     }
1099     if($geom=='' and $this->auto_parcelle_lot==1 and $val["parcelle_lot"]!=''){ // lot
1100 fraynaud 242 $sql= "select astext(centroid(geom)) from ".DB_PREFIXE."parcelle_lot where parcelle_lot ='".$val["parcelle_lot"]."'";
1101 fraynaud 142 $this->addToLog("recherche centroid parcelle lot :".$sql, VERBOSE_MODE);
1102     $geom = $db -> getOne($sql);
1103     if (database :: isError($geom))die($res->getMessage()."erreur ".$sql);
1104 fraynaud 144 $parcelle=$val["parcelle_lot"]." ".$val["parcelle_lot_lotissement"];
1105 fraynaud 142 }
1106 fraynaud 134 if($geom!=''){ // la parcelle est exitante dans la table ou vue parcelle
1107 fraynaud 242 $sql ="update ".DB_PREFIXE."dossier set geom =geometryfromtext('".$geom."', ".$projection." ) where dossier ='".$id."'";
1108 fraynaud 103 $this->addToLog("sig_interne maj geom :".$sql, VERBOSE_MODE);
1109 fraynaud 11 $res = $db -> query($sql);
1110 fraynaud 144 if (database :: isError($res)) die($res->getMessage()."erreur ".$sql);
1111 fraynaud 232 $this->addToMessage(""._("centroid de parcelle calcule")." ".$parcelle." ");
1112 fraynaud 128 if($this->auto_pos==1) // recherche du pos
1113     $this->calcul_auto_pos($id,$db,$geom,$projection);
1114     if($this->auto_servitude_surfacique==1) // recherche de servitude surfacique
1115     $this->calcul_auto_servitude_surfacique($id,$db,$geom,$projection);
1116 fraynaud 134 if($this->auto_servitude_ligne==1) // recherche de servitude ligne
1117 fraynaud 128 $this->calcul_auto_servitude_ligne($id,$db,$geom,$projection);
1118 fraynaud 134 if($this->auto_servitude_point==1) // recherche de servitude point
1119     $this->calcul_auto_servitude_point($id,$db,$geom,$projection);
1120 fraynaud 128 $temp=strtr($this->servitude,"'"," "); // enleve le '
1121 fraynaud 242 $sql1 ="update ".DB_PREFIXE."dossier set servitude = '".$temp."' where dossier = '".$id."'";
1122 fraynaud 128 $res1 = $db -> query($sql1);
1123 fraynaud 134 $this->addToLog("maj servitudes :".$sql1, VERBOSE_MODE);
1124 fraynaud 128 if (database:: isError($res1)) die($res1->getMessage()."erreur ".$sql1);
1125 fraynaud 256 }else{ // parcelle inexistante //***
1126 fraynaud 44 if($this->maj ==1){ // en maj mettre a null la geometrie si parcelle changée inexistante
1127 fraynaud 256 $sql ="update ".DB_PREFIXE."dossier set geom = null, servitude = '', pos= '' where dossier ='".$id."'";
1128 fraynaud 44 $res = $db -> query($sql);
1129 fraynaud 103 $this->addToLog("requete sig_interne maj parcelle inexistante :".$sql, VERBOSE_MODE);
1130 fraynaud 44 if (database :: isError($res))
1131     die($res->getMessage()."erreur ".$sql);
1132     }
1133 vpihour 626 //$this->addToMessage("<br> parcelle ".$parcelle." "._("inexistante")." ".$id."");
1134 fraynaud 11 }
1135     }
1136    
1137 fraynaud 128 function calcul_auto_pos($id,&$db,$geom,$projection){
1138 fraynaud 134 // recherche du pos automatique
1139 fraynaud 242 $sql="select pos from ".DB_PREFIXE."pos WHERE ST_contains(geom, geometryfromtext('".$geom."', ".$projection."))";
1140 fraynaud 44 $pos = $db -> getOne($sql);
1141 fraynaud 103 $this->addToLog("recherche auto_pos :".$sql, VERBOSE_MODE);
1142 fraynaud 44 if($pos!=''){
1143 fraynaud 242 $sql1 ="update ".DB_PREFIXE."dossier set pos = '".$pos."' where dossier = '".$id."'";
1144 fraynaud 44 $res1 = $db -> query($sql1);
1145 fraynaud 103 $this->addToLog("maj auto_pos :".$sql1, VERBOSE_MODE);
1146 fraynaud 126 if (database:: isError($res1)) die($res1->getMessage()."erreur ".$sql1);
1147 fraynaud 128 $this->addToMessage("<br>"._("POS/PLU")." : ".$pos."");
1148 fraynaud 44 }else{
1149 atreal 316 $this->addToMessage("<br>"._("POS/PLU non trouve")." ".$id."");
1150 fraynaud 44 }
1151     }
1152    
1153 fraynaud 128 function calcul_auto_servitude_surfacique($id,&$db,$geom,$projection){
1154 fraynaud 134 // recherche servitude surfacique
1155 fraynaud 242 $sql="select * from ".DB_PREFIXE."servitude_surfacique WHERE ST_contains(geom, geometryfromtext('".$geom."', ".$projection."))";
1156 fraynaud 126 $res=$db->query($sql);
1157     if (database:: isError($res)) die($res1->getMessage()."erreur ".$sql);
1158     $this->addToLog("requete :".$sql." executee ", VERBOSE_MODE);
1159     while ($row=& $res->fetchRow(DB_FETCHMODE_ASSOC)){
1160     $this->addToMessage("<br>"._("servitude")." : ".$row['libelle']." - ".$row['observation']);
1161 fraynaud 128 $this->servitude.=" [".$row['libelle']."] ".$row['observation']." - ";
1162     }
1163 fraynaud 126 }
1164 fraynaud 44
1165 fraynaud 128 function calcul_auto_servitude_ligne($id,&$db,$geom,$projection){
1166 fraynaud 134 // recherche servitude ligne
1167 fraynaud 242 $sql="select * from ".DB_PREFIXE."servitude_ligne WHERE ST_contains(ST_buffer(geom, perimetre), geometryfromtext('".$geom."', ".$projection."))";
1168 fraynaud 128 $res=$db->query($sql);
1169     if (database:: isError($res)) die($res1->getMessage()."erreur ".$sql);
1170     $this->addToLog("requete :".$sql." executee ", VERBOSE_MODE);
1171     while ($row=& $res->fetchRow(DB_FETCHMODE_ASSOC)){
1172     $this->addToMessage("<br>"._("servitude")." : ".$row['libelle']." - ".$row['observation']);
1173     $this->servitude.=" [".$row['libelle']."] ".$row['observation']." - ";
1174     }
1175     }
1176 fraynaud 126
1177 fraynaud 134 function calcul_auto_servitude_point($id,&$db,$geom,$projection){
1178     // recherche servitude point
1179 fraynaud 242 $sql="select libelle,observation, perimetre, distance(geom, geometryfromtext('".$geom."', ".$projection.")) as distance from ".
1180     DB_PREFIXE."servitude_point WHERE distance(geom, geometryfromtext('".$geom."', ".$projection."))<perimetre";
1181 fraynaud 134 $res=$db->query($sql);
1182     if (database:: isError($res)) die($res1->getMessage()."erreur ".$sql);
1183     $this->addToLog("requete :".$sql." executee ", VERBOSE_MODE);
1184     while ($row=& $res->fetchRow(DB_FETCHMODE_ASSOC)){
1185 fraynaud 152 $this->addToMessage("<br>"._("servitude")." : ".$row['libelle']." - ".$row['observation']." a ".round($row['distance'],2)." m ");
1186 fraynaud 137 $this->servitude.=" [".$row['libelle']."] ".$row['observation']." a ".round($row['distance'],2)." m - ";
1187 fraynaud 134 }
1188     }
1189 fraynaud 3 }// fin classe
1190     ?>

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26