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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1749 - (show annotations)
Mon Apr 22 10:55:44 2013 UTC (11 years, 9 months ago) by nhaye
File size: 62326 byte(s)
Modification du type des dates de demande, dépôt, dernier dépôt

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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26