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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1734 - (show annotations)
Fri Apr 19 10:41:39 2013 UTC (11 years, 9 months ago) by nhaye
File size: 62448 byte(s)
Positionnement des champs ajoutés au formulaire de dossier

1 <?php
2 //$Id$
3 //gen openMairie le 10/02/2011 20:39
4
5 require_once ("../gen/obj/dossier.class.php");
6 require_once("../services/outgoing/messageenqueuer.php");
7
8 class dossier extends dossier_gen {
9
10 var $maj;
11 var $sig;
12 var $servitude="";
13 var $auto_pos;
14 var $auto_servitude_surfacique;
15 var $auto_servitude_ligne;
16 var $auto_servitude_point;
17 var $auto_parcelle;
18 var $auto_parcelle_lot;
19 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 var $dossier_instruction_type;
29 var $valIdDemandeur = array("petitionnaire_principal" => "",
30 "delegataire" => "",
31 "petitionnaire" => array());
32 var $postedIdDemandeur = array("petitionnaire_principal" => "",
33 "delegataire" => "",
34 "petitionnaire" => array());
35
36 function dossier($id,&$db,$DEBUG) {
37 $this->constructeur($id,$db,$DEBUG);
38 } // fin constructeur
39
40 /*Mutateur pour ma variable dossier_instruction_type*/
41 public function getDossierInstructionType(){
42 return $this->dossier_instruction_type;
43 }
44 public function setDossierInstructionType($dossier_instruction_type){
45 $this->dossier_instruction_type = $dossier_instruction_type;
46 }
47
48 // {{{ Gestion de la confidentialité des données spécifiques
49
50 /**
51 * Surcharge pour gérer les actions disponibles dans le portlet
52 */
53 function checkAccessibility() {
54 //
55 parent::checkAccessibility();
56 // Si l'utilisateur est un intructeur qui en correspond pas à la
57 // division du dossier
58 if ($this->f->isUserInstructeur()
59 && isset($this->f->om_utilisateur["division"])
60 && $this->f->om_utilisateur["division"] != $this->getDivisionFromDossier()) {
61 //
62 $this->actions_sup = array();
63 $this->setParameter("actions", array());
64 }
65 }
66
67 /**
68 * Cette methode est à surcharger elle permet de tester dans chaque classe
69 * des droits des droits spécifiques en fonction des données
70 */
71 function canAccess() {
72 // Si l'utilisateur est un intructeur qui ne correspond pas à la
73 // division du dossier
74 if ($this->f->isUserInstructeur()
75 && $this->f->om_utilisateur["division"] != $this->getDivisionFromDossier()
76 && $this->getParameter("maj") != 3) {
77 //
78 return false;
79 }
80 //
81 return true;
82 }
83
84 /**
85 * Cette méthode permet de récupérer la division d'un dossier
86 */
87 function getDivisionFromDossier() {
88 //
89 if (!isset($this->val[array_search("dossier", $this->champs)])) {
90 return NULL;
91 }
92 //
93 $sql = "select division from ".DB_PREFIXE."dossier ";
94 $sql .= " where dossier='".$this->val[array_search("dossier", $this->champs)]."'";
95 //
96 $division = $this->db->getOne($sql);
97 $this->addToLog("getDivisionFromDossier(): db->getone(\"".$sql."\")", VERBOSE_MODE);
98 database::isError($division);
99 //
100 return $division;
101 }
102
103 // }}}
104 /*
105 * Ajoute un numéro au dossier
106 *
107 */
108 function setValFAjout($val = array()) {
109
110 /*Récupération de la lettre associé au type de dossier d'instruction*/
111 $code = $this->getCode($this->getDossierInstructionType());
112
113 /* Récupération de la valeur du suffixe ce dossier_instruction_type */
114 $suffixe = $this->getSuffixe($this->getDossierInstructionType());
115
116 /*S'il est à TRUE, on récupère le numéro de version du dossier d'autorisation*/
117 $numeroVersion = "";
118 if ( $suffixe == 't' ){
119
120 $numeroVersion = $this->getNumeroVersion($val['dossier_autorisation']);
121
122 /* Incrémentation du numéro de version */
123 if ( is_numeric($numeroVersion) or $numeroVersion == -1 ){
124
125 $this->incrementNumeroVersion($val['dossier_autorisation'], ++$numeroVersion);
126 }
127 }
128
129 /*Création du numéro de dossier*/
130 $this->valF['dossier'] = $val['dossier_autorisation']."$code$numeroVersion";
131 $this->valF['version'] = $numeroVersion;
132 }
133
134 /*Récupère la valeur du suffixe d'un dossier_instruction_type*/
135 function getSuffixe($dossierInstructionType){
136
137 $suffixe = "";
138
139 $sql = "SELECT
140 suffixe
141 FROM
142 ".DB_PREFIXE."dossier_instruction_type
143 WHERE
144 dossier_instruction_type = $dossierInstructionType";
145
146 $this->addToLog("getSuffixe(): db->query(\"".$sql."\")", VERBOSE_MODE);
147 $res = $this->db->query($sql);
148 if (database :: isError($res))
149 die($res->getMessage()."erreur ".$sql);
150
151 if ( $res->numRows() > 0 ){
152
153 $row = $res->fetchRow(DB_FETCHMODE_ASSOC);
154 $suffixe = $row['suffixe'];
155 }
156
157 return $suffixe;
158 }
159
160 /*Récupère dans la table de paramètrage la lettre correspondant
161 * au dossier_instruction_type
162 */
163 function getCode($dossierInstructionType){
164
165 $code = "";
166
167 $sql = "SELECT
168 code
169 FROM
170 ".DB_PREFIXE."dossier_instruction_type
171 WHERE
172 dossier_instruction_type = $dossierInstructionType";
173
174 $this->addToLog("getCode(): db->query(\"".$sql."\")", VERBOSE_MODE);
175 $res = $this->db->query($sql);
176 if (database :: isError($res))
177 die($res->getMessage()."erreur ".$sql);
178
179 if ( $res->numRows() > 0 ){
180
181 $row = $res->fetchRow(DB_FETCHMODE_ASSOC);
182 $code = $row['code'];
183 }
184
185 return $code;
186 }
187
188 /*Récupère le numéro de version d'un dossier_autorisation*/
189 function getNumeroVersion($dossierAutorisation){
190
191 $numeroVersion = "";
192
193 $sql = "SELECT
194 numero_version
195 FROM
196 ".DB_PREFIXE."dossier_autorisation
197 WHERE
198 dossier_autorisation = '$dossierAutorisation'";
199
200 $this->addToLog("getNumeroVersion(): db->query(\"".$sql."\")", VERBOSE_MODE);
201 $res = $this->db->query($sql);
202 if (database :: isError($res))
203 die($res->getMessage()."erreur ".$sql);
204
205 if ( $res->numRows() > 0 ){
206
207 $row = $res->fetchRow(DB_FETCHMODE_ASSOC);
208 $numeroVersion = $row['numero_version'];
209 }
210
211 return $numeroVersion;
212 }
213
214 /*Incrémente le numéro de version du dossier*/
215 function incrementNumeroVersion($dossierAutorisation, $nouveauNumeroVersion) {
216
217 $valF = array (
218 "numero_version" => $nouveauNumeroVersion
219 );
220
221 $res = $this->db->autoExecute(DB_PREFIXE."dossier_autorisation",
222 $valF,
223 DB_AUTOQUERY_UPDATE,
224 "dossier_autorisation = '$dossierAutorisation'");
225
226 if (database :: isError($res))
227 die($res->getMessage()."erreur ".$sql);
228
229 }
230
231 function setvalF($val){
232 parent::setvalF($val);
233
234 // Récupération des id demandeurs postés
235 $this->getPostedValues();
236
237 // enlever les valeurs a ne pas saisir -> recherche en trigger ajouter et modifier
238 // $sig = 1
239 unset ($this->valF['geom']);
240 unset ($this->valF['geom1']);
241 // valeurs hiddenstatic (calcule)
242 if($this->maj==1){
243 // par defaut
244 unset ($this->valF['etat']);
245 unset ($this->valF['delai']);
246 unset ($this->valF['accord_tacite']);
247 unset ($this->valF['types']);
248 }
249 unset ($this->valF['avis_decision']); // avis + libelle avis
250 unset ($this->valF['terrain_surface_calcul']);
251 unset ($this->valF['shon_calcul']);
252 unset ($this->valF['parcelle_archive']);
253 unset ($this->valF['parcelle_lot_archive']);
254 unset ($this->valF['date_notification_delai']);
255 unset ($this->valF['date_decision']);
256 unset ($this->valF['date_limite']);
257 unset ($this->valF['date_validite']);
258 unset ($this->valF['date_chantier']);
259 unset ($this->valF['date_achevement']);
260 unset ($this->valF['date_conformite']);
261 }
262
263 /*Vérification des données saisies*/
264 function verifier($val,&$db,$DEBUG){
265 parent::verifier($val,$db,$DEBUG);
266 if(!isset($this->postedIdDemandeur["petitionnaire_principal"]) OR
267 empty($this->postedIdDemandeur["petitionnaire_principal"])) {
268 $this->correct = false;
269 $this->addToMessage(_("La saisie d'un petitionnaire principal est obligatoire."));
270 }
271 if($val['parcelle']!="" and $val['sig']!='Oui'){
272 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'])){
273 $this->correct=false;
274 $this->addToMessage("<br>format parcelle incorrect");
275 }
276 }
277 }//verifier
278
279
280 function setType(&$form,$maj) {
281 parent::setType($form,$maj);
282 $form->setType('amenagement','hidden'); // PC
283 $form->setType('parcelle_lot','hidden'); // PC
284 $form->setType('parcelle_lot_lotissement','hidden'); // PC
285 $form->setType('version','hidden'); // PC
286 $form->setType('incompletude','hidden');
287 $form->setType('evenement_suivant_tacite','hidden');
288 $form->setType('evenement_suivant_tacite_incompletude','hidden');
289 $form->setType('etat_pendant_incompletude','hidden');
290 if ($maj < 2) { //ajouter et modifier
291 // cache
292 if($maj==0) $form->setType('dossier', 'hidden');
293 $form->setType('annee', 'hidden');
294 $form->setType('parcelle_archive','hidden');
295 $form->setType('parcelle_lot_archive','hidden');
296 $form->setType('objet_dossier','hidden'); // PC
297
298 $form->setType('geom1', 'hidden');
299 $form->setType('geom', 'geom');
300 $form->setType('servitude', 'hiddenstatic');
301
302 //select
303 $form->setType('terrain_numero_complement','select');
304
305
306
307 // hiddenstatic
308 if($maj==1) $form->setType('dossier', 'hiddenstatic');
309 $form->setType('etat','hiddenstatic');
310 $form->setType('avis_decision','hiddenstatic');
311 $form->setType('delai','hiddenstatic');
312 $form->setType('terrain_surface_calcul','hiddenstatic');
313 $form->setType('shon_calcul','hiddenstatic');
314
315 $form->setType('accord_tacite','hiddenstatic');
316 $form->setType('types', 'hiddenstatic'); // transfert modificatif
317
318
319 // hiddenstaticdate
320 $form->setType('date_notification_delai','hiddenstaticdate');
321 $form->setType('date_decision','hiddenstaticdate');
322 $form->setType('date_limite','hiddenstaticdate');
323 $form->setType('date_rejet','hiddenstaticdate');
324 $form->setType('date_complet','hiddenstaticdate');
325 $form->setType('date_limite','hiddenstaticdate');
326 $form->setType('date_validite','hiddenstaticdate');
327 $form->setType('date_chantier','hiddenstaticdate');
328 $form->setType('date_achevement','hiddenstaticdate');
329 $form->setType('date_conformite','hiddenstaticdate');
330
331 // checkbox
332 $form->setType('sig','checkbox');
333
334 // zones temp et strategysig
335
336
337 // temp
338 if (file_exists ("../dyn/var.inc"))
339 include ("../dyn/var.inc");
340 if(!isset($auto_pos))
341 $auto_pos=0;
342 if($auto_pos==1)
343 $form->setType('pos','hiddenstatic');
344 else
345 $form->setType('pos','select');
346 $form->setType('temp1',$temp1_type);
347 $form->setType('temp2',$temp2_type);
348 $form->setType('temp3',$temp3_type);
349 $form->setType('temp4',$temp4_type);
350 $form->setType('temp5',$temp5_type);
351 $form->setType('a_qualifier', 'checkbox');
352
353 $form->setType('parcelle', 'hidden');
354 $form->setType('pos', 'hidden');
355 $form->setType('sig', 'hidden');
356 $form->setType('batiment_nombre', 'hidden');
357 $form->setType('logement_nombre', 'hidden');
358 $form->setType('hauteur', 'hidden');
359 $form->setType('piece_nombre', 'hidden');
360 $form->setType('shon', 'hidden');
361 $form->setType('shon_calcul', 'hidden');
362 $form->setType('shob', 'hidden');
363 $form->setType('lot', 'hidden');
364 }
365 if ($maj == 1) {
366 //
367 if ($this->f->isAccredited("dossier_modifier_instructeur")) {
368 $form->setType('instructeur', 'select');
369 } else {
370 $form->setType('instructeur', 'selecthiddenstatic');
371 }
372 //
373 if($this->f->getParameter('afficher_division') === 'true') {
374 //
375 if ($this->f->isAccredited("dossier_modifier_division")) {
376 $form->setType('division', 'select');
377 } else {
378 $form->setType('division', 'selecthiddenstatic');
379 }
380 } else {
381 $form->setType('division', 'hidden');
382 }
383 }
384 if($maj == 3) {
385 $form->setType('annee', 'hidden');
386 $form->setType('temp1','hidden');
387 $form->setType('temp2','hidden');
388 $form->setType('temp3','hidden');
389 $form->setType('temp4','hidden');
390 $form->setType('temp5','hidden');
391 $form->setType('parcelle_archive','hidden');
392 $form->setType('parcelle_lot_archive','hidden');
393 $form->setType('geom1','hidden');
394 $form->setType('geom','hidden');
395 $form->setType('a_qualifier', 'checkboxstatic');
396 $form->setType('terrain_references_cadastrales','referencescadastralesstatic'); // PC
397 $form->setType('objet_dossier','hidden'); // PC
398 $form->setType('parcelle', 'hidden');
399 $form->setType('pos', 'hidden');
400 $form->setType('sig', 'hidden');
401 $form->setType('batiment_nombre', 'hidden');
402 $form->setType('logement_nombre', 'hidden');
403 $form->setType('hauteur', 'hidden');
404 $form->setType('piece_nombre', 'hidden');
405 $form->setType('shon', 'hidden');
406 $form->setType('shon_calcul', 'hidden');
407 $form->setType('shob', 'hidden');
408 $form->setType('lot', 'hidden');
409 }
410 //
411 if(!$this->f->getParameter('afficher_division') === 'true') {
412 $form->setType('division', 'hidden');
413 }
414 $form->setType('dossier_autorisation', 'hiddenstatic');
415 $form->setType('dossier_instruction_type', 'selecthiddenstatic');
416 //
417 if ($maj == 0) {
418 $form->setType('dossier_autorisation', 'select');
419 }
420 // On cache enjeu_ERP si l'option n'est pas activée
421 if($this->f->getParameter('option_ERP') != 'true') {
422 $form->setType('erp', 'hidden');
423 $form->setType('enjeu_erp', 'hidden');
424 }
425 }
426
427 function setVal(&$form,$maj,$validation){
428 $this->maj=$maj;
429 if ($validation==0) {
430 if ($maj == 0){
431 //$dossier_cp = $this->f->collectivite["cp"];
432 //$dossier_ville = $this->f->collectivite["ville"];
433
434 $form->setVal('annee', date('y'));
435 $form->setVal('date_demande', date('Y-m-d'));
436 $form->setVal('date_depot', date('Y-m-d'));
437
438 //$form->setVal('demandeur_cp', $dossier_cp);
439 //$form->setVal('demandeur_ville', $dossier_ville);
440
441 //$form->setVal('delegataire_cp', $dossier_cp);
442 //$form->setVal('delegataire_ville', $dossier_ville);
443
444 //$form->setVal('terrain_cp', $dossier_cp);
445 //$form->setVal('terrain_ville', $dossier_ville);
446
447 $form->setVal('accord_tacite', 'Non');
448 $form->setVal('etat', 'initialiser');
449 $form->setVal('types', 'Initial');
450 }
451 }
452 }
453
454 function setSelect(&$form, $maj,&$db,$debug) {
455 parent::setSelect($form, $maj,$db,$debug);
456 //optimisation sur table importante parcelle -> pas d appel methode parent
457 if(file_exists ("../sql/".$db->phptype."/".$this->table.".form.inc.php"))
458 include ("../sql/".$db->phptype."/".$this->table.".form.inc.php");
459 if($maj<2){
460 // parcelle_lot
461 $contenu="";
462 $contenu[0][0]="parcelle_lot";// table
463 $contenu[0][1]="parcelle_lot"; // zone origine
464 $contenu[1][0]="lotissement";
465 $contenu[1][1]="parcelle_lot_lotissement";
466 $form->setSelect("parcelle_lot",$contenu);
467 $contenu="";
468 $contenu[0][0]="parcelle_lot";// table
469 $contenu[0][1]="lotissement"; // zone origine
470 $contenu[1][0]="parcelle_lot";
471 $contenu[1][1]="parcelle_lot";
472 $form->setSelect("parcelle_lot_lotissement",$contenu);
473 // accord tacite
474 $contenu=array();
475 $contenu[0]=array('Non','Oui');
476 $contenu[1]=array('Non','Oui');
477 $form->setSelect("accord_tacite",$contenu);
478 // terrain_numero_complement
479 $contenu=array();
480 $contenu[0]=array('','bis','ter','quater');
481 $contenu[1]=array('','bis','ter','quater');
482 $form->setSelect("terrain_numero_complement",$contenu);
483 // geom *** a voir
484 if($maj==1){ //modification
485 $contenu=array();
486 $contenu[0]=array("dossier",$this->getParameter("idx"));
487 $form->setSelect('geom',$contenu);
488 }
489 // arrondissement recherche anvancée
490 $this->init_select($form, $db, $maj, $debug, "arrondissement",
491 $sql_arrondissement, $sql_arrondissement_by_id, false);
492 // dossier_autorisation_type_detaille recherche anvancée
493 $this->init_select($form, $db, $maj, $debug, "dossier_autorisation_type_detaille",
494 $sql_dossier_autorisation_type_detaille, $sql_dossier_autorisation_type_detaille_by_id, false);
495 /*
496 * Affichage de données dans le select de la parcelle
497 * */
498 $contenu=array();
499 $sql="select parcelle from ".DB_PREFIXE."parcelle ";
500 $res = $db->query($sql);
501 if (database::isError($res))
502 die($res->getMessage());
503 $contenu[0][0]="";
504 $contenu[1][0]=_("choisir parcelle");
505 $k=1;
506 while ($row=& $res->fetchRow()){
507 $contenu[0][$k]=$row[0];
508 $contenu[1][$k]=$row[0];
509 $k++;
510 }
511 $form->setSelect("parcelle",$contenu);
512
513 }
514 if($this->f->getParameter('afficher_division')==='true') {
515 // instructeur
516 $this->init_select($form, $db, $maj, $debug, "instructeur",
517 $sql_instructeur_div, $sql_instructeur_div_by_id, false);
518 }
519 }
520
521 function setLib(&$form,$maj) {
522 parent::setLib($form,$maj);
523 $form->setLib('geom','');
524 $form->setLib('date_limite',_("date limite d'instruction"));
525
526 }
527
528 function setGroupe(&$form,$maj){
529 // instruction
530 $form->setGroupe('date_complet','D');
531 $form->setGroupe('date_rejet','G');
532 $form->setGroupe('rejet','G');
533 $form->setGroupe('delai','F');
534
535 $form->setGroupe('date_limite','D');
536 $form->setGroupe('date_notification_delai','G');
537 $form->setGroupe('accord_tacite','G');
538 $form->setGroupe('etat','F');
539
540 $form->setGroupe('date_decision','D');
541 $form->setGroupe('avis_decision','G');
542 $form->setGroupe('date_validite','G');
543 $form->setGroupe('types','F');
544
545 $form->setGroupe('date_chantier','D');
546 $form->setGroupe('date_achevement','G');
547 $form->setGroupe('date_conformite','F');
548
549 $form->setGroupe('date_limite_incompletude','D');
550 $form->setGroupe('delai_incompletude','F');
551
552 // localisation
553 $form->setGroupe('parcelle','D');
554 $form->setGroupe('pos','G');
555 if($maj==1){
556 $form->setGroupe('sig','G');
557 $form->setGroupe('geom','F');
558 }else {
559 $form->setGroupe('sig','F');
560 }
561 if($maj==1){
562 $form->setGroupe('sig','G');
563 $form->setGroupe('geom','F');
564 }
565
566 }
567
568 function setOnchange(&$form,$maj){
569 parent::setOnchange($form,$maj);
570 // mise en majuscule
571 $form->setOnchange("demandeur_nom","this.value=this.value.toUpperCase()");
572 $form->setOnchange("demandeur_societe","this.value=this.value.toUpperCase()");
573 $form->setOnchange("delegataire_nom","this.value=this.value.toUpperCase()");
574 $form->setOnchange("delegataire_societe","this.value=this.value.toUpperCase()");
575 $form->setOnchange("architecte_nom","this.value=this.value.toUpperCase()");
576 $form->setOnchange("terrain_adresse","this.value=this.value.toUpperCase()");
577 $form->setOnchange('shon','VerifNumdec(this)');
578 $form->setOnchange('shob','VerifNumdec(this)');
579 $form->setOnchange('hauteur','VerifNumdec(this)');
580 $form->setOnchange('terrain_surface','VerifNumdec(this)');
581 }
582
583 function setLayout(&$form, $maj) {
584 //
585 $form->setBloc('dossier', 'D', '', ($maj == 3 ? 'col_9':'col_12'));
586 $form->setBloc('dossier', 'D', '', 'col_9');
587
588 $form->setFieldset('dossier', 'D', _("Dossier d'instruction"));
589 $form->setFieldset('autorite_competente', 'F');
590
591 $form->setBloc('autorite_competente', 'F');
592
593 $form->setBloc('date_demande', 'D', '', 'col_3');
594
595 $form->setFieldset('date_demande', 'D', _("Depot"));
596 $form->setFieldset('date_dernier_depot', 'F');
597
598 $form->setFieldset('enjeu_urba', 'D', _("Enjeu"));
599 $form->setFieldset('enjeu_erp', 'F');
600
601 $form->setFieldset('erp', 'D', _("Qualification"));
602 $form->setFieldset('a_qualifier', 'F');
603
604 $form->setBloc('a_qualifier', 'F');
605 $form->setBloc('a_qualifier', 'F');
606 //
607 $form->setBloc('objet_dossier', 'D', '', 'col_12');
608
609 $form->setFieldset('date_complet', 'D', _('Instruction'), 'col_12');
610 $form->setFieldset('delai_incompletude','F','');
611
612 $form->setBloc('date_conformite', 'F');
613
614 $form->setBloc('parcelle','D',"", "col_12");
615 $form->setBloc('geom1','F');
616
617 //Fieldset "Localisation du terrain"
618 $form->setBloc('terrain_references_cadastrales','D',"","col_12");
619 $form->setFieldset('terrain_references_cadastrales','D',_('Localisation du terrain'));
620 $form->setFieldset('terrain_superficie','F','');
621 $form->setBloc('terrain_superficie','F');
622 }
623
624 function setRegroupe(&$form,$maj) {
625 //// depot
626 //If ($maj==0){
627 // $form->setRegroupe('date_demande','D',_("Depot"),$this->aff_depot );
628 //}
629 //If ($maj==1){
630 // $form->setRegroupe('dossier','D',_("Depot"), $this->aff_depot);
631 // $form->setRegroupe('date_demande','G','');
632 //}
633 //$form->setRegroupe('date_depot','G','');
634 //$form->setRegroupe('division','F','');
635
636
637
638 $form->setRegroupe('description','D',_('description').' '._('servitude'), $this->aff_amenagement);
639 $form->setRegroupe('servitude','F','');
640
641
642 }
643
644 /* =============================================================
645 * fonction trigger relative a la connexion SIG
646 * $sig = 1 dans dyn/var.inc
647 * utilisé aussi pour envoyer une message au service REST d'ERP
648 * ===============================================================
649 */
650
651 function triggerajouterapres($id,&$db,$val,$DEBUG) {
652 $this->sig_parametre($db);
653 $id=$this->valF['dossier']; // id n est pas valorise en ajout
654 if($this->sig==1 and $val['sig']!='Oui'){
655 if($val['parcelle']!=''or $val['parcelle_lot']!=''){
656
657 $this->sig_interne($id,$db,$val,$DEBUG);
658 }
659 else
660 $this->addToMessage("<br>"._("Parcelle non renseignee dans dossier")." ".$id." <br>");
661
662 }
663
664
665 if ($this->f->getParameter('option_erp') != "") {
666 // envoi du message a ERP en cas d'un depot du dossier dat
667 if ($this->getDATDCode($this->valF['dossier']) ==
668 $this->f->getParameter('erp_depot_dossier_dat')) {
669 $msgenque = new MessageEnqueuer();
670 $msgenque->setDossierInstructionIdentifier($this->valF['dossier']);
671 $msgenque->enqueueMessage($msgenque::$ERP_DEPOT_DOSSIER_DAT);
672 }
673
674 // envoi du message a ERP en cas d'une demande d'ouverture DAT
675 if ($this->getDATDCode($this->valF['dossier']) ==
676 $this->f->getParameter('erp_demande_ouverture_dat')) {
677 $msgenque = new MessageEnqueuer();
678 $msgenque->setDossierInstructionIdentifier($this->valF['dossier']);
679 $msgenque->enqueueMessage($msgenque::$ERP_DEMANDE_OUVERTURE_DAT);
680 }
681
682 if ($this->valF['erp'] === true) {
683 // envoi du message a ERP en cas d'annulation d'une demande
684 if ($this->getDATDCode($this->valF['dossier']) ==
685 $this->f->getParameter('erp_annulation_demande')) {
686 $msgenque = new MessageEnqueuer();
687 $msgenque->setDossierInstructionIdentifier($this->valF['dossier']);
688 $msgenque->enqueueMessage($msgenque::$ERP_ANNULATION_DEMANDE);
689 }
690
691 // envoi du message a ERP en cas d'ouverture d'un dossier PC "rattache"
692 // au dossier DAACT
693 if ($this->getDATDCode($this->valF['dossier']) ==
694 $this->f->getParameter('erp_demande_ouverture_pc_daact')) {
695 $msgenque = new MessageEnqueuer();
696 $msgenque->setDossierInstructionIdentifier($this->valF['dossier']);
697 $msgenque->enqueueMessage($msgenque::$ERP_DEMANDE_OUVERTURE_PC);
698 }
699 }
700 } // fin de if ($this->f->getParameter('option_erp') != "")
701
702 // Mise à jour des données du dossier d'autorisation
703 require_once "../obj/dossier_autorisation.class.php";
704 $da = new dossier_autorisation($this->valF["dossier_autorisation"], $this->db, DEBUG);
705 $da->majDossierAutorisation();
706 }
707
708 /*
709 * Calcul l'identifiant du quartier et d'un arrondissement d'une parcelle
710 * */
711 function getQuartierArrondissement($parcelle) {
712
713 $parcelle = trim($parcelle);
714 $quartier = '';
715
716 /*Récupère le code impot du quartier dans la parcelle*/
717 for ( $i = 0 ; $i < strlen($parcelle) ; $i++ ){
718
719 if (is_numeric($parcelle[$i]) ){
720
721 $quartier .= $parcelle[$i];
722 }
723 else{
724
725 break;
726 }
727 }
728
729 if ( $quartier !== '' ){
730
731 /*identifiant*/
732 $sql = "SELECT
733 quartier, arrondissement
734 FROM
735 ".DB_PREFIXE."quartier
736 WHERE
737 code_impots='$quartier'";
738
739 $this->addToLog("getQuartierArrondissement(parcelle) : db->query(\"$sql\")", VERBOSE_MODE);
740 $res = $this->db->query($sql);
741 if (database :: isError($res))
742 die($res->getMessage()."erreur ".$sql);
743
744 if ( $res->numRows() > 0 ){
745
746 return $res->fetchRow(DB_FETCHMODE_ASSOC);
747 }
748 }
749
750 return NULL;
751 }
752
753 /*
754 * Retourne la section d'une parcelle
755 * */
756 function getSection($parcelle){
757
758 $parcelle = trim($parcelle);
759 $section = NULL;
760
761 for ( $i = 0 ; $i < strlen($parcelle) ; $i++ )
762 if ( !is_numeric($parcelle[$i]) && is_string($parcelle[$i]) && $parcelle[$i] !== ' ' )
763 $section .= $parcelle[$i];
764
765 return $section;
766 }
767
768 /*
769 * Retourne l'intructeur correspondant le mieux à la parcelle
770 * */
771 function getInstructeurDivision( $quartier, $arrondissement, $section, $dossier_autorisation) {
772
773 $quartier = ( $quartier == NULL ) ? -1 : $quartier;
774 $arrondissement = ( $arrondissement == NULL ) ? -1 : $arrondissement;
775
776 /*Récupération du dossier_autorisation_type_detaille concerné par le $dossier_autorisation*/
777 $sql = "
778 SELECT
779 dossier_autorisation_type_detaille
780 FROM
781 ".DB_PREFIXE."dossier_autorisation
782 WHERE
783 dossier_autorisation = '$dossier_autorisation'";
784
785 $this->addToLog("getInstructeurDivision : db->query(\"$sql\")", VERBOSE_MODE);
786 $resDATD = $this->db->query($sql);
787 if (database :: isError($resDATD))
788 die($resDATD->getMessage()."erreur ".$sql);
789
790 if ( $resDATD->numRows() > 0 ){
791 $rowDATD = $resDATD->fetchRow(DB_FETCHMODE_ASSOC);
792
793 $sql = "
794 SELECT
795 instructeur, section, quartier, arrondissement, dossier_autorisation_type_detaille
796 FROM
797 ".DB_PREFIXE."affectation_automatique l
798 WHERE
799 ( dossier_autorisation_type_detaille IS NULL AND arrondissement IS NULL AND quartier IS NULL AND section IS NULL ) OR
800 ( dossier_autorisation_type_detaille IS NULL AND arrondissement IS NULL AND quartier IS NULL AND section = '$section' ) OR
801 ( dossier_autorisation_type_detaille IS NULL AND arrondissement IS NULL AND quartier = $quartier AND section IS NULL ) OR
802 ( dossier_autorisation_type_detaille IS NULL AND arrondissement IS NULL AND quartier = $quartier AND section = '$section' ) OR
803 ( dossier_autorisation_type_detaille IS NULL AND arrondissement = $arrondissement AND quartier IS NULL AND section IS NULL ) OR
804 ( dossier_autorisation_type_detaille IS NULL AND arrondissement = $arrondissement AND quartier IS NULL AND section = '$section' ) OR
805 ( dossier_autorisation_type_detaille IS NULL AND arrondissement = $arrondissement AND quartier = $quartier AND section IS NULL ) OR
806 ( dossier_autorisation_type_detaille IS NULL AND arrondissement = $arrondissement AND quartier = $quartier AND section = '$section' ) OR
807 ( dossier_autorisation_type_detaille = ".$rowDATD['dossier_autorisation_type_detaille']." AND arrondissement IS NULL AND quartier IS NULL AND section IS NULL ) OR
808 ( dossier_autorisation_type_detaille = ".$rowDATD['dossier_autorisation_type_detaille']." AND arrondissement IS NULL AND quartier IS NULL AND section = '$section' ) OR
809 ( dossier_autorisation_type_detaille = ".$rowDATD['dossier_autorisation_type_detaille']." AND arrondissement IS NULL AND quartier = $quartier AND section IS NULL ) OR
810 ( dossier_autorisation_type_detaille = ".$rowDATD['dossier_autorisation_type_detaille']." AND arrondissement IS NULL AND quartier = $quartier AND section = '$section' ) OR
811 ( dossier_autorisation_type_detaille = ".$rowDATD['dossier_autorisation_type_detaille']." AND arrondissement = $arrondissement AND quartier IS NULL AND section IS NULL ) OR
812 ( dossier_autorisation_type_detaille = ".$rowDATD['dossier_autorisation_type_detaille']." AND arrondissement = $arrondissement AND quartier IS NULL AND section = '$section' ) OR
813 ( dossier_autorisation_type_detaille = ".$rowDATD['dossier_autorisation_type_detaille']." AND arrondissement = $arrondissement AND quartier = $quartier AND section IS NULL ) OR
814 ( dossier_autorisation_type_detaille = ".$rowDATD['dossier_autorisation_type_detaille']." AND arrondissement = $arrondissement AND quartier = $quartier AND section = '$section' )
815 ORDER BY section, quartier, arrondissement, dossier_autorisation_type_detaille
816 LIMIT 1
817 ";
818
819 $this->addToLog("getInstructeurDivision : db->query(\"$sql\")", VERBOSE_MODE);
820 $res = $this->db->query($sql);
821 if (database :: isError($res))
822 die($res->getMessage()."erreur ".$sql);
823
824 if ( $res->numRows() > 0 ){
825
826 $row = $res->fetchRow(DB_FETCHMODE_ASSOC);
827
828 $sql = "SELECT division FROM ".DB_PREFIXE."instructeur WHERE instructeur = ".$row['instructeur'];
829 $res = $this->db->query($sql);
830 if (database :: isError($res))
831 die($res->getMessage()."erreur ".$sql);
832
833 if ( $res->numRows() > 0 ){
834
835 $rowT=& $res->fetchRow(DB_FETCHMODE_ASSOC);
836 $row['division'] = $rowT['division'];
837 }
838
839 return $row;
840 }
841 }
842
843 return NULL;
844 }
845
846 /* =============================================================
847 * fonction trigger relative a la connexion SIG
848 * $sig = 1 dans dyn/var.inc
849 * ===============================================================
850 */
851
852 function triggerajouter($id,&$db,$val,$DEBUG) {
853 //
854 $this->addToLog("triggerajouter() : start", EXTRA_VERBOSE_MODE);
855
856 // Initialisation des variables nécessaires à l'affectation automatique
857 $quartier = NULL;
858 $arrondissement = NULL;
859 $section = NULL;
860 $instructeur = NULL;
861
862 // Si la parcelle n'est pas vide alors on récupère la section, le
863 // quartier et l'arrondissement
864 if ($val['parcelle'] != '') {
865 // Cette méthode récupère l'arrondissement et le quartier associé à une parcelle
866 $quartierArrondissement = $this->getQuartierArrondissement($val['parcelle']);
867 if ( $quartierArrondissement!= NULL ){
868
869 $quartier = $quartierArrondissement['quartier'];
870 $arrondissement = $quartierArrondissement['arrondissement'];
871 }
872 // Si il n'y a pas d'arrondissement alors on vide le quartier
873 if ( strcmp($arrondissement,'') == 0 ) {
874
875 $arrondissement = NULL;
876 $quartier = NULL;
877 }
878 // On récupère la section
879 $section = $this->getSection($val['parcelle']);
880 }
881
882 // Si aucun instructeur n'est saisi et que la dossier_autorisation_type_detaille n'est pas vide
883 // alors on récupère l'instructeur et la division depuis l'affectation
884 if ( ( empty($this->valF['instructeur']) || $this->valF['instructeur'] == '' ) && $val['dossier_autorisation'] != '' ) {
885
886 //
887 $instructeurDivision = $this->getInstructeurDivision($quartier, $arrondissement, $section, $val['dossier_autorisation']);
888 if ( $instructeurDivision != NULL ){
889
890 $instructeur = $instructeurDivision['instructeur'];
891 $division = $instructeurDivision['division'];
892 }
893
894 if ( $instructeur != NULL ){
895
896 $this->valF['instructeur'] = $instructeur;
897 $this->valF['division'] = $division;
898 } else {
899 if ($this->f->isAccredited("dossier_modifier_instructeur")) {
900 $this->addToMessage("<br/> "._("Pensez a assigner un instructeur a ce dossier.")." <br/>");
901 } else {
902 $this->addToMessage("<br/> "._("Aucun instructeur compatible avec ce dossier trouve, contactez votre administrateur afin d'en assigner un a ce dossier.")." <br/>");
903 }
904 }
905 } else {
906 $this->addToMessage("<br/> "._("Aucun instructeur compatible avec ce dossier trouve, contactez votre administrateur afin d'en assigner un a ce dossier.")." <br/>");
907 }
908 //
909 $this->addToLog("triggerajouter() : end", EXTRA_VERBOSE_MODE);
910 }
911
912 function triggermodifierapres($id,&$db,$val,$DEBUG) {
913 $this->sig_parametre($db);
914 // si la parcelle est changée
915 if(($this->sig==1 and $val['sig']!='Oui' and ($val['parcelle']!=$val['parcelle_archive'])
916 or $val['parcelle_lot']!=$val['parcelle_lot_archive'])){ // parcelle_lot_archive
917 if($val['parcelle']!='' or $val['parcelle_lot']!='')
918 $this->sig_interne($this->valF['dossier'],$db,$val,$DEBUG);
919 else{
920 if($this->maj ==1){ // en maj mettre a null la geometrie si parcelle changée inexistante
921 $sql ="update ".DB_PREFIXE."dossier set geom = null, servitude = '', pos= '' where dossier ='".$id."'";
922 $res = $db -> query($sql);
923 $this->addToLog("requete trigger modifier parcelle vide -> maj pos et servitude :".$sql, VERBOSE_MODE);
924 if (database :: isError($res))
925 die($res->getMessage()."erreur ".$sql);
926 }
927 $this->addToMessage("<br>"._("Parcelle ou parcelle_lot non renseignee dans dossier")." ".$id." <br>");
928 }
929 }
930
931 // verification si envoi vers ERP est active
932 if ($this->f->getParameter('option_erp') != "") {
933 if ($this->val[array_search('a_qualifier', $this->champs)] == 't'
934 && $this->valF['a_qualifier'] === false) {
935
936 // envoi du message "ERP Qualifie" pour un dossier DAT qui a besoin
937 // de la qualification URBA
938 if ($this->getDATDCode($this->valF['dossier']) ==
939 $this->f->getParameter('erp_nature_dat')) {
940 $msgenque = new MessageEnqueuer();
941 $msgenque->setDossierInstructionIdentifier($this->valF['dossier']);
942 $msgenque->setCompetence($this->valF['autorite_competente']);
943 $msgenque->setContraintePlu($this->valF['servitude']);
944 $msgenque->setReferenceCadastrale(
945 $this->getReferenceCadastrale($this->valF['dossier']));
946 $msgenque->enqueueMessage($msgenque::$ERP_QUALIFIE);
947 }
948
949 // envoi des messages a ERP en cas du dossier PC traite par URBA, et
950 // qui etait classifie come ERP
951 if ($this->getDATDCode($this->valF['dossier']) ==
952 $this->f->getParameter('erp_dossier_nature_pc')
953 && $this->valF['erp'] == true) {
954 $msgenque = new MessageEnqueuer();
955 $msgenque->setDossierInstructionIdentifier($this->valF['dossier']);
956 $msgenque->enqueueMessage($msgenque::$ERP_DEMANDE_COMPLETUDE_PC);
957 $msgenque->enqueueMessage($msgenque::$ERP_DEMANDE_QUALIFICATION_PC);
958 }
959 }
960 } // fin de if($this->f->getParameter('option_erp'))
961
962 // Ajout ou modification des demandeurs
963 $this->insertLinkDemandeDemandeur($db, $DEBUG);
964 }
965
966 /**
967 * Ne servira surement pas mais dans le doute autant recalculer les données du DA
968 */
969 function triggersupprimerapres($id,&$db,$val,$DEBUG) {
970 // Mise à jour des données du dossier d'autorisation
971 require_once "../obj/dossier_autorisation.class.php";
972 $da = new dossier_autorisation($this->valF["dossier_autorisation"], $this->db, DEBUG);
973 $da->majDossierAutorisation();
974 }
975
976 /**
977 * Retourne le type de dossier d'autorisation du dossier courant :
978 * - dossier_autorisation_type_detaille.code
979 **/
980 function getDATDCode($idxDossier) {
981 $sql = "SELECT dossier_autorisation_type_detaille.code
982 FROM ".DB_PREFIXE."dossier_autorisation_type_detaille
983 INNER JOIN ".DB_PREFIXE."dossier_autorisation
984 ON dossier_autorisation_type_detaille.dossier_autorisation_type_detaille =
985 dossier_autorisation.dossier_autorisation_type_detaille
986 INNER JOIN ".DB_PREFIXE."dossier ON dossier.dossier_autorisation = dossier_autorisation.dossier_autorisation
987 WHERE dossier.dossier = '".$idxDossier."'";
988 $res = $this -> db -> getOne($sql);
989 $this->f->isDatabaseError();
990 $this->addToLog($sql);
991 return $res;
992 }
993
994
995 /**
996 * Retourne la reference cadastrale de la demande attache a un dossier ERP
997 * specifique
998 * @param string $dossier L'identifiant du dossier
999 * @return string|null La reference cadastrale si elle est trouve,
1000 * sinon NULL. En cas d'erreur de la BD, l'execution s'arrete.
1001 */
1002 function getReferenceCadastrale($dossier) {
1003 $sql = "SELECT terrain_references_cadastrales FROM ".DB_PREFIXE."demande WHERE dossier_instruction = '" . $dossier . "'";
1004 $res = $this->db->limitquery($sql, 0, 1);
1005 $this->addToLog("getReferenceCadastrale(): db->limitquery(\"".
1006 str_replace(",",", ",$sql)."\", 0, 1);", VERBOSE_MODE);
1007 // Si une erreur survient on die
1008 if (database::isError($res, true)) {
1009 // Appel de la methode de recuperation des erreurs
1010 $this->erreur_db($res->getDebugInfo(), $res->getMessage(), 'demande');
1011 }
1012 // retourne la nature du dossier
1013 while ($row =& $res->fetchRow()) {
1014 return $row[0];
1015 }
1016 // la nature n'etait pas trouve, ce qui ne devrait pas se passer
1017 return NULL;
1018 }
1019
1020
1021 function sig_parametre(&$db){
1022 if (file_exists ("../dyn/var.inc"))
1023 include ("../dyn/var.inc");
1024 if(!isset($sig))
1025 $this->sig=0;
1026 else
1027 $this->sig=1;
1028 if(!isset($auto_pos))
1029 $this->auto_pos=0;
1030 else
1031 $this->auto_pos=$auto_pos;
1032 if(!isset($auto_servitude_surfacique))
1033 $this->auto_servitude_surfacique=0;
1034 else
1035 $this->auto_servitude_surfacique=$auto_servitude_surfacique;
1036 if(!isset($auto_servitude_ligne))
1037 $this->auto_servitude_ligne=0;
1038 else
1039 $this->auto_servitude_ligne=$auto_servitude_ligne;
1040 if(!isset($auto_servitude_point))
1041 $this->auto_servitude_point=0;
1042 else
1043 $this->auto_servitude_point=$auto_servitude_point;
1044 if(!isset($auto_parcelle))
1045 $this->auto_parcelle=0;
1046 else
1047 $this->auto_parcelle=$auto_parcelle;
1048 if(!isset($auto_parcelle_lot))
1049 $this->auto_parcelle_lot=0;
1050 else
1051 $this->auto_parcelle_lot=$auto_parcelle_lot;
1052 $this->addToLog("trigger valeur sig :".$this->sig, VERBOSE_MODE);
1053 $this->addToLog("trigger valeur auto_pos :". $this->auto_pos, VERBOSE_MODE);
1054 $this->addToLog("trigger valeur auto_servitude_surfacique :".$this->auto_servitude_surfacique, VERBOSE_MODE);
1055 $this->addToLog("trigger valeur auto_servitude_ligne :". $this->auto_servitude_ligne, VERBOSE_MODE);
1056 $this->addToLog("trigger valeur auto_servitude_point :".$this->auto_servitude_point, VERBOSE_MODE);
1057 $this->addToLog("trigger valeur auto_parcelle :". $this->auto_parcelle, VERBOSE_MODE);
1058 $this->addToLog("trigger valeur auto_parcelle_lot :".$this->auto_parcelle_lot, VERBOSE_MODE);
1059 }
1060
1061
1062 function sig_interne($id,&$db,$val,$DEBUG){
1063 // Strategy interne dans var.inc
1064 // si la parcelle existe, il est cree un point au milieu de la parcelle
1065 // de maniere automatique
1066 $geom='';
1067 $parcelle=$val["parcelle"];
1068 $projection = $db -> getOne("select srid from geometry_columns where f_table_name='dossier'");
1069 if($this->auto_parcelle==1 and $val["parcelle"]!=''){
1070 $sql= "select astext(centroid(geom)) from ".DB_PREFIXE."parcelle where parcelle ='".$val["parcelle"]."'";
1071 $this->addToLog("recherche centroid parcelle :".$sql, VERBOSE_MODE);
1072 $geom = $db -> getOne($sql);
1073 if (database :: isError($geom))die($res->getMessage()."erreur ".$sql);
1074 }
1075 if($geom=='' and $this->auto_parcelle_lot==1 and $val["parcelle_lot"]!=''){ // lot
1076 $sql= "select astext(centroid(geom)) from ".DB_PREFIXE."parcelle_lot where parcelle_lot ='".$val["parcelle_lot"]."'";
1077 $this->addToLog("recherche centroid parcelle lot :".$sql, VERBOSE_MODE);
1078 $geom = $db -> getOne($sql);
1079 if (database :: isError($geom))die($res->getMessage()."erreur ".$sql);
1080 $parcelle=$val["parcelle_lot"]." ".$val["parcelle_lot_lotissement"];
1081 }
1082 if($geom!=''){ // la parcelle est exitante dans la table ou vue parcelle
1083 $sql ="update ".DB_PREFIXE."dossier set geom =geometryfromtext('".$geom."', ".$projection." ) where dossier ='".$id."'";
1084 $this->addToLog("sig_interne maj geom :".$sql, VERBOSE_MODE);
1085 $res = $db -> query($sql);
1086 if (database :: isError($res)) die($res->getMessage()."erreur ".$sql);
1087 $this->addToMessage(""._("centroid de parcelle calcule")." ".$parcelle." ");
1088 if($this->auto_pos==1) // recherche du pos
1089 $this->calcul_auto_pos($id,$db,$geom,$projection);
1090 if($this->auto_servitude_surfacique==1) // recherche de servitude surfacique
1091 $this->calcul_auto_servitude_surfacique($id,$db,$geom,$projection);
1092 if($this->auto_servitude_ligne==1) // recherche de servitude ligne
1093 $this->calcul_auto_servitude_ligne($id,$db,$geom,$projection);
1094 if($this->auto_servitude_point==1) // recherche de servitude point
1095 $this->calcul_auto_servitude_point($id,$db,$geom,$projection);
1096 $temp=strtr($this->servitude,"'"," "); // enleve le '
1097 $sql1 ="update ".DB_PREFIXE."dossier set servitude = '".$temp."' where dossier = '".$id."'";
1098 $res1 = $db -> query($sql1);
1099 $this->addToLog("maj servitudes :".$sql1, VERBOSE_MODE);
1100 if (database:: isError($res1)) die($res1->getMessage()."erreur ".$sql1);
1101 }else{ // parcelle inexistante //***
1102 if($this->maj ==1){ // en maj mettre a null la geometrie si parcelle changée inexistante
1103 $sql ="update ".DB_PREFIXE."dossier set geom = null, servitude = '', pos= '' where dossier ='".$id."'";
1104 $res = $db -> query($sql);
1105 $this->addToLog("requete sig_interne maj parcelle inexistante :".$sql, VERBOSE_MODE);
1106 if (database :: isError($res))
1107 die($res->getMessage()."erreur ".$sql);
1108 }
1109 //$this->addToMessage("<br> parcelle ".$parcelle." "._("inexistante")." ".$id."");
1110 }
1111 }
1112
1113 function calcul_auto_pos($id,&$db,$geom,$projection){
1114 // recherche du pos automatique
1115 $sql="select pos from ".DB_PREFIXE."pos WHERE ST_contains(geom, geometryfromtext('".$geom."', ".$projection."))";
1116 $pos = $db -> getOne($sql);
1117 $this->addToLog("recherche auto_pos :".$sql, VERBOSE_MODE);
1118 if($pos!=''){
1119 $sql1 ="update ".DB_PREFIXE."dossier set pos = '".$pos."' where dossier = '".$id."'";
1120 $res1 = $db -> query($sql1);
1121 $this->addToLog("maj auto_pos :".$sql1, VERBOSE_MODE);
1122 if (database:: isError($res1)) die($res1->getMessage()."erreur ".$sql1);
1123 $this->addToMessage("<br>"._("POS/PLU")." : ".$pos."");
1124 }else{
1125 $this->addToMessage("<br>"._("POS/PLU non trouve")." ".$id."");
1126 }
1127 }
1128
1129 function calcul_auto_servitude_surfacique($id,&$db,$geom,$projection){
1130 // recherche servitude surfacique
1131 $sql="select * from ".DB_PREFIXE."servitude_surfacique WHERE ST_contains(geom, geometryfromtext('".$geom."', ".$projection."))";
1132 $res=$db->query($sql);
1133 if (database:: isError($res)) die($res1->getMessage()."erreur ".$sql);
1134 $this->addToLog("requete :".$sql." executee ", VERBOSE_MODE);
1135 while ($row=& $res->fetchRow(DB_FETCHMODE_ASSOC)){
1136 $this->addToMessage("<br>"._("servitude")." : ".$row['libelle']." - ".$row['observation']);
1137 $this->servitude.=" [".$row['libelle']."] ".$row['observation']." - ";
1138 }
1139 }
1140
1141 function calcul_auto_servitude_ligne($id,&$db,$geom,$projection){
1142 // recherche servitude ligne
1143 $sql="select * from ".DB_PREFIXE."servitude_ligne WHERE ST_contains(ST_buffer(geom, perimetre), geometryfromtext('".$geom."', ".$projection."))";
1144 $res=$db->query($sql);
1145 if (database:: isError($res)) die($res1->getMessage()."erreur ".$sql);
1146 $this->addToLog("requete :".$sql." executee ", VERBOSE_MODE);
1147 while ($row=& $res->fetchRow(DB_FETCHMODE_ASSOC)){
1148 $this->addToMessage("<br>"._("servitude")." : ".$row['libelle']." - ".$row['observation']);
1149 $this->servitude.=" [".$row['libelle']."] ".$row['observation']." - ";
1150 }
1151 }
1152
1153 function calcul_auto_servitude_point($id,&$db,$geom,$projection){
1154 // recherche servitude point
1155 $sql="select libelle,observation, perimetre, distance(geom, geometryfromtext('".$geom."', ".$projection.")) as distance from ".
1156 DB_PREFIXE."servitude_point WHERE distance(geom, geometryfromtext('".$geom."', ".$projection."))<perimetre";
1157 $res=$db->query($sql);
1158 if (database:: isError($res)) die($res1->getMessage()."erreur ".$sql);
1159 $this->addToLog("requete :".$sql." executee ", VERBOSE_MODE);
1160 while ($row=& $res->fetchRow(DB_FETCHMODE_ASSOC)){
1161 $this->addToMessage("<br>"._("servitude")." : ".$row['libelle']." - ".$row['observation']." a ".round($row['distance'],2)." m ");
1162 $this->servitude.=" [".$row['libelle']."] ".$row['observation']." a ".round($row['distance'],2)." m - ";
1163 }
1164 }
1165
1166 /**
1167 * Gestion des liens entre la demande et les demandeurs recemment ajoutés
1168 **/
1169 function insertLinkDemandeDemandeur($db, $DEBUG) {
1170 //
1171 require_once "../obj/lien_dossier_demandeur.class.php";
1172 // Sippression des anciens demandeurs
1173 $this->deleteLinkDossierDemandeur($db, $DEBUG);
1174
1175 // Ajout du pétitionnaire principal
1176 if(!empty($this->postedIdDemandeur['petitionnaire_principal'])) {
1177 $this->addLinkDossierDemandeur($this->postedIdDemandeur['petitionnaire_principal'], true, $db, $DEBUG);
1178 }
1179
1180 // Ajout du délégataire
1181 if(!empty($this->postedIdDemandeur['delegataire'])) {
1182 $this->addLinkDossierDemandeur($this->postedIdDemandeur['delegataire'], false, $db, $DEBUG);
1183 }
1184
1185 // Ajout des pétitionnaires
1186 if(isset($this->postedIdDemandeur['petitionnaire'])) {
1187 // Ajout des nouveaux liens
1188 foreach ($this->postedIdDemandeur['petitionnaire'] as $petitionnaire) {
1189 $this->addLinkDossierDemandeur($petitionnaire, false, $db, $DEBUG);
1190 }
1191 }
1192 }
1193
1194
1195 /**
1196 * Fonction permettant d'ajouter un lien
1197 * entre la table demande et demandeur
1198 **/
1199 function addLinkDossierDemandeur($id, $principal, $db, $DEBUG) {
1200 $lienAjout = new lien_dossier_demandeur(
1201 "]",
1202 $db,
1203 $DEBUG);
1204 $lien = array('lien_dossier_demandeur' => "",
1205 'petitionnaire_principal' => (($principal)?"t":"f"),
1206 'dossier' => $this->valF['dossier'],
1207 'demandeur' => $id);
1208 $lienAjout->ajouter($lien, $db, $DEBUG);
1209 $lienAjout->__destruct();
1210 }
1211
1212 /**
1213 * Fonction permettant de supprimer un lien
1214 * entre la table demande et demandeur
1215 **/
1216 function deleteLinkDossierDemandeur($db, $DEBUG) {
1217 // Suppression
1218 $sql = "DELETE FROM ".DB_PREFIXE."lien_dossier_demandeur ".
1219 "WHERE dossier='".$this->valF['dossier']."'";
1220 // Execution de la requete de suppression de l'objet
1221 $res = $db->query($sql);
1222 // Logger
1223 $this->f->addToLog("supprimer(): db->query(\"".$sql."\");", VERBOSE_MODE);
1224 $this->f->isDatabaseError();
1225
1226 }
1227
1228 /**
1229 * Methode de recupération des valeurs postées
1230 **/
1231 function getPostedValues() {
1232 // Récupération des demandeurs dans POST
1233 if (isset($_POST['petitionnaire_principal']) OR
1234 isset($_POST['delegataire']) OR
1235 isset($_POST['petitionnaire'])) {
1236 if( isset($_POST['petitionnaire_principal']) AND
1237 !empty($_POST['petitionnaire_principal'])) {
1238 $this->postedIdDemandeur['petitionnaire_principal'] = $_POST['petitionnaire_principal'];
1239 }
1240 if( isset($_POST['delegataire']) AND
1241 !empty($_POST['delegataire'])) {
1242 $this->postedIdDemandeur['delegataire'] = $_POST['delegataire'];
1243 }
1244 if( isset($_POST['petitionnaire']) AND
1245 !empty($_POST['petitionnaire'])) {
1246 $this->postedIdDemandeur['petitionnaire'] = $_POST['petitionnaire'];
1247 }
1248 }
1249 }
1250
1251 /**
1252 * Méthode permettant de récupérer les id des demandeurs liés à la table
1253 * liée passée en paramètre
1254 *
1255 * @param string $from Table liée : "demande", "dossier", dossier_autorisation"
1256 * @param string $id Identifiant (clé primaire de la table liée en question)
1257 */
1258 function listeDemandeur($from, $id) {
1259 // Récupération des demandeurs de la base
1260 $sql = "SELECT demandeur.demandeur,
1261 demandeur.type_demandeur,
1262 lien_".$from."_demandeur.petitionnaire_principal
1263 FROM ".DB_PREFIXE."lien_".$from."_demandeur
1264 INNER JOIN ".DB_PREFIXE."demandeur
1265 ON demandeur.demandeur=lien_".$from."_demandeur.demandeur
1266 WHERE ".$from." = '".$id."'";
1267 $res = $this->f->db->query($sql);
1268 $this->f->addToLog("listeDemandeur(): db->query(\"".$sql."\")", VERBOSE_MODE);
1269 $this->f->isDatabaseError($res);
1270 // Stockage du résultat dans un tableau
1271 while ($row=& $res->fetchRow(DB_FETCHMODE_ASSOC)){
1272 if ($row['petitionnaire_principal'] == 't' AND
1273 $row['type_demandeur']=="petitionnaire") {
1274 $this->valIdDemandeur['petitionnaire_principal']=$row['demandeur'];
1275 } elseif ($row['petitionnaire_principal'] == 'f' AND
1276 $row['type_demandeur']=="petitionnaire"){
1277 $this->valIdDemandeur['petitionnaire'][]=$row['demandeur'];
1278 } elseif ($row['type_demandeur']=="delegataire"){
1279 $this->valIdDemandeur['delegataire']=$row['demandeur'];
1280 }
1281 }
1282 }
1283
1284 /**
1285 * Ajout de la liste des demandeurs
1286 */
1287 function formSpecificContent($maj) {
1288
1289 $this->listeDemandeur("dossier", $this->getVal('dossier'));
1290
1291 if($maj < 2 AND !$this->correct) {
1292 $linkable = true;
1293 } else {
1294 $linkable = false;
1295 }
1296
1297 // Conteneur de la listes des demandeurs
1298 echo "<div id=\"liste_demandeur\" class=\"demande_hidden_bloc col_12\">";
1299 echo "<fieldset class=\"cadre ui-corner-all ui-widget-content\">";
1300 echo " <legend class=\"ui-corner-all ui-widget-content ui-state-active\">"
1301 ._("Petitionnaire")."</legend>";
1302 // Si des demandeurs sont liés à la demande
1303 require_once "../obj/petitionnaire.class.php";
1304 require_once "../obj/delegataire.class.php";
1305 // Affichage du bloc pétitionnaire principal / délégataire
1306 // L'ID DU DIV SUIVANT EST NECESSAIRE AU BON FONCTIONNEMENT DU JS
1307 echo "<div id=\"petitionnaire_principal_delegataire col_12\">";
1308 // Affichage de la synthèse
1309 if (isset ($this->valIdDemandeur["petitionnaire_principal"]) AND
1310 !empty($this->valIdDemandeur["petitionnaire_principal"])) {
1311 $demandeur = new petitionnaire(
1312 $this->valIdDemandeur["petitionnaire_principal"],
1313 $this->f->db,false);
1314 $demandeur -> afficherSynthese("petitionnaire_principal", $linkable);
1315 $demandeur -> __destruct();
1316 } elseif ( isset ($this->postedIdDemandeur["petitionnaire_principal"]) AND
1317 !empty($this->postedIdDemandeur["petitionnaire_principal"]) ) {
1318 $demandeur = new petitionnaire(
1319 $this->postedIdDemandeur["petitionnaire_principal"],
1320 $this->f->db,false);
1321 $demandeur -> afficherSynthese("petitionnaire_principal", $linkable);
1322 $demandeur -> __destruct();
1323 }
1324 // Si en édition de formulaire
1325 if($maj < 2 AND $linkable) {
1326 // Bouton d'ajout du pétitionnaire principal
1327 // L'ID DE L'INPUT SUIVANT EST NECESSAIRE AU BON FONCTIONNEMENT DU JS
1328 echo "<span id=\"add_petitionnaire_principal\"
1329 class=\"om-form-button add-16\">".
1330 _("Saisir le petitionnaire principal").
1331 "</span>";
1332 }
1333 // Bouton d'ajout du delegataire
1334 // L'ID DU DIV ET DE L'INPUT SUIVANT EST NECESSAIRE AU BON FONCTIONNEMENT DU JS
1335 echo "<div id=\"delegataire\">";
1336 // Affichage de la synthèse
1337 if (isset ($this->valIdDemandeur["delegataire"]) AND
1338 !empty($this->valIdDemandeur["delegataire"])) {
1339 $demandeur = new delegataire($this->valIdDemandeur["delegataire"],
1340 $this->f->db,false);
1341 $demandeur -> afficherSynthese("delegataire", $linkable);
1342 $demandeur -> __destruct();
1343 } elseif ( isset ($this->postedIdDemandeur["delegataire"]) AND
1344 !empty($this->postedIdDemandeur["delegataire"]) ) {
1345
1346 $demandeur = new delegataire($this->postedIdDemandeur["delegataire"],
1347 $this->f->db,false);
1348 $demandeur -> afficherSynthese("delegataire", $linkable);
1349 $demandeur -> __destruct();
1350 }
1351 if($maj < 2 AND $linkable) {
1352 echo "<span id=\"add_delegataire\"
1353 class=\"om-form-button add-16\">".
1354 _("Saisir le delegataire").
1355 "</span>";
1356 }
1357 echo "</div>";
1358 echo "<div class=\"both\"></div>";
1359 echo "</div>";
1360 // Bloc des pétitionnaires secondaires
1361 // L'ID DU DIV SUIVANT EST NECESSAIRE AU BON FONCTIONNEMENT DU JS
1362 echo "<div id=\"listePetitionnaires col_12\">";
1363
1364 // Affichage de la synthèse
1365 if (isset ($this->valIdDemandeur["petitionnaire"]) AND
1366 !empty($this->valIdDemandeur["petitionnaire"])) {
1367
1368 foreach ($this->valIdDemandeur["petitionnaire"] as $petitionnaire) {
1369 $demandeur = new petitionnaire($petitionnaire,
1370 $this->f->db,false);
1371 $demandeur -> afficherSynthese("petitionnaire", $linkable);
1372 $demandeur -> __destruct();
1373 }
1374
1375 } elseif ( isset ($this->postedIdDemandeur["petitionnaire"]) AND
1376 !empty($this->postedIdDemandeur["petitionnaire"]) ) {
1377 foreach ($this->postedIdDemandeur["petitionnaire"] as $petitionnaire) {
1378 $demandeur = new petitionnaire($petitionnaire,
1379 $this->f->db,false);
1380 $demandeur -> afficherSynthese("petitionnaire", $linkable);
1381 $demandeur -> __destruct();
1382 }
1383 }
1384 if ($maj < 2 AND $linkable) {
1385 // L'ID DE L'INPUT SUIVANT EST NECESSAIRE AU BON FONCTIONNEMENT DU JS
1386 echo "<span id=\"add_petitionnaire\"
1387 class=\"om-form-button add-16\">".
1388 _("Ajouter un petitionnaire")
1389 ."</span>";
1390 }
1391 echo "</div>";
1392 echo "</fieldset>";
1393 echo "</div>";
1394 }
1395 }// fin classe
1396 ?>

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26