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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 3051 - (show annotations)
Wed May 28 15:25:55 2014 UTC (10 years, 8 months ago) by nhaye
File size: 110884 byte(s)
Correction du message "La date n'est pas une date" sur le DI

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 // XXX SERVITUDE
13 var $servitude="";
14 var $auto_pos;
15 var $auto_servitude_surfacique;
16 var $auto_servitude_ligne;
17 var $auto_servitude_point;
18 var $auto_parcelle;
19 var $auto_parcelle_lot;
20 var $aff_depot = "collapsible";
21 var $aff_travaux = "collapsible";
22 var $aff_instruction = "collapsible";
23 var $aff_demandeur = "startClosed";
24 var $aff_delegataire = "startClosed";
25 var $aff_terrain = "startClosed";
26 var $aff_localisation = "collapsible";
27 var $aff_description = "startClosed";
28 var $aff_amenagement = "startClosed";
29 var $dossier_instruction_type;
30 var $is_incomplet_notifie = null;
31 var $valIdDemandeur = array("petitionnaire_principal" => "",
32 "delegataire" => "",
33 "petitionnaire" => array());
34 var $postedIdDemandeur = array("petitionnaire_principal" => "",
35 "delegataire" => "",
36 "petitionnaire" => array());
37
38 function dossier($id,&$db,$DEBUG) {
39 $this->constructeur($id,$db,$DEBUG);
40 } // fin constructeur
41
42 /*Mutateur pour ma variable dossier_instruction_type*/
43 public function getDossierInstructionType(){
44 return $this->dossier_instruction_type;
45 }
46 public function setDossierInstructionType($dossier_instruction_type){
47 $this->dossier_instruction_type = $dossier_instruction_type;
48 }
49
50 // {{{ Gestion de la confidentialité des données spécifiques
51
52 /**
53 * Surcharge pour gérer les actions disponibles dans le portlet
54 */
55 function checkAccessibility() {
56 //
57 parent::checkAccessibility();
58 // Si l'utilisateur est un intructeur qui ne correspond pas à la
59 // division du dossier
60 if ($this->f->isUserInstructeur()
61 && isset($this->f->om_utilisateur["division"])
62 && $this->f->om_utilisateur["division"] != $this->getDivisionFromDossier()) {
63 //
64 $this->parameters["actions"]["modifier"] = NULL;
65 //
66 $this->actions_sup["geolocalisation"] = NULL;
67
68 //Cache le lien du rapport d'instruction, si aucun n'est lié
69 if ( $this->getRapportInstruction() == '' ){
70
71 $this->actions_sup['rapport_instruction'] = NULL;
72 }
73
74 //Cache le lien des données techniques, si aucun n'est lié
75 if ( $this->getDonneesTechniques() == '' ){
76
77 $this->actions_sup['donnees_techniques'] = NULL;
78 }
79 }
80
81 //Si l'utilisateur est un instructeur et le dossier d'instruction est clôturé,
82 //il n'est plus possible de le modifier, on affiche pas le lien de modification du
83 //portlet
84 if ( $this->f->isUserInstructeur() && $this->getStatut() == "cloture" ){
85
86 $this->parameters["actions"]["modifier"] = NULL;
87 //
88 $this->actions_sup["geolocalisation"] = NULL;
89
90 //Cache le lien du rapport d'instruction, si aucun n'est lié
91 if ( $this->getRapportInstruction() == '' ){
92
93 $this->actions_sup['rapport_instruction'] = NULL;
94 }
95 }
96
97 //Cache le lien des données techniques, si aucun n'est lié
98 if ( $this->getDonneesTechniques() == '' && !$this->f->isUserAdministrateur() ){
99
100 $this->actions_sup['donnees_techniques'] = NULL;
101 }
102
103 // Si l'option sig n'est pas réglé sur 'sig_externe',
104 // l'action géolocalisation n'est pas affiché
105 if ($this->f->getParameter('option_sig') != 'sig_externe') {
106 //
107 $this->actions_sup["geolocalisation"] = NULL;
108 }
109 }
110
111 /**
112 * Cette methode est à surcharger elle permet de tester dans chaque classe
113 * des droits des droits spécifiques en fonction des données
114 */
115 function canAccess() {
116 // Si l'utilisateur est un intructeur qui ne correspond pas à la
117 // division du dossier
118 if ($this->f->isUserInstructeur()
119 && $this->f->om_utilisateur["division"] != $this->getDivisionFromDossier()
120 && $this->getParameter("maj") != 3) {
121 //
122 return false;
123 }
124 // Si l'utilisateur est un instructeur et que le dossier est cloturé
125 if ( $this->f->isUserInstructeur() && $this->getStatut() == "cloture"
126 && $this->getParameter("maj") != 3) {
127
128 return false;
129 }
130 //
131 return true;
132 }
133
134 /**
135 * Cette variable permet de stocker le résultat de la méthode
136 * getDivisionFromDossier() afin de ne pas effectuer le recalcul à chacun de
137 * ces appels.
138 * @var string Code de la division du dossier en cours
139 */
140 var $_division_from_dossier = NULL;
141
142 /**
143 * Cette méthode permet de récupérer le code de division correspondant
144 * au dossier sur lequel on se trouve.
145 *
146 * @return string Code de la division du dossier en cours
147 */
148 function getDivisionFromDossier() {
149
150 // Cette méthode peut être appelée plusieurs fois lors d'une requête.
151 // Pour éviter de refaire le traitement de recherche de la division
152 // alors on vérifie si nous ne l'avons pas déjà calculé.
153 if ($this->_division_from_dossier != NULL) {
154 // Logger
155 $this->addToLog("getDivisionFromDossier(): retour de la valeur déjà calculée - '".$this->_division_from_dossier."'", EXTRA_VERBOSE_MODE);
156 // On retourne la valeur déjà calculée
157 return $this->_division_from_dossier;
158 }
159
160 // Par défaut, on définit la valeur du dossier à NULL
161 $dossier = NULL;
162 // Test sur le mode et le contexte du formulaire
163 if ($this->getParameter("maj") == 0
164 && ($this->getParameter("retourformulaire") == "dossier"
165 || $this->getParameter("retourformulaire") == "dossier_instruction"
166 || $this->getParameter("retourformulaire") == "dossier_instruction_mes_encours"
167 || $this->getParameter("retourformulaire") == "dossier_instruction_tous_encours"
168 || $this->getParameter("retourformulaire") == "dossier_instruction_mes_clotures"
169 || $this->getParameter("retourformulaire") == "dossier_instruction_tous_clotures")) {
170 // Si on se trouve en mode AJOUT (seul mode où l'enregistrement
171 // n'existe pas en base de données) ET que nous nous trouvons
172 // dans le contexte d'un dossier d'instruction alors on récupère
173 // le numéro de dossier depuis le paramètre 'idxformulaire'
174 $dossier = $this->getParameter("idxformulaire");
175 } else {
176 // Sinon on récupère le numéro de dossier dans le champs dossier de
177 // l'enregistrement (en base de données)
178 $dossier = $this->getVal("dossier");
179 }
180
181 // On appelle la méthode de la classe utils qui renvoi le code de la
182 // division d'un dossier, on la stocke pour ne pas refaire le calcul au
183 // prochain appel de cette méthode
184 $this->_division_from_dossier = $this->f->getDivisionFromDossier($dossier);
185 // Logger
186 $this->addToLog("getDivisionFromDossier(): retour de la valeur nouvellement calculée - '".$this->_division_from_dossier."'", EXTRA_VERBOSE_MODE);
187 // On retourne la valeur retournée
188 return $this->_division_from_dossier;
189
190 }
191
192 // }}}
193 /*
194 * Ajoute un numéro au dossier
195 *
196 */
197 function setValFAjout($val = array()) {
198
199 //Récupération de la lettre associé au type de dossier d'instruction
200 $code = $this->getCode($this->getDossierInstructionType());
201
202 //Récupération de la valeur du suffixe ce dossier_instruction_type
203 $suffixe = $this->getSuffixe($this->getDossierInstructionType());
204
205 //S'il est à TRUE, on récupère le numéro de version du dossier d'autorisation
206 $numeroVersion = "";
207 $numeroVersionDIT = "";
208 if ( $suffixe == 't' ){
209
210 //Récupération du numéro de version
211 $numeroVersion = $this->getNumeroVersion($val['dossier_autorisation']);
212
213 //Incrémentation du numéro de version
214 if ( is_numeric($numeroVersion) or $numeroVersion == -1 ){
215
216 $this->incrementNumeroVersion($val['dossier_autorisation'], ++$numeroVersion);
217 }
218 //Récupération du numéro de version en fonction du type de dossier d'instruction
219 //Si c'est un modificatif ou un transfert, on utilise un numéro du type
220 // 01 ou 02, etc. sinon on utilise le numéro de version comme auparavant
221 $numeroVersionDossierInstructionType = $this->getNumeroVersionDossierInstructionType($val['dossier_autorisation'], $val['dossier_instruction_type'], $numeroVersion);
222 }
223
224 //Création du numéro de dossier
225 $this->valF['dossier'] = $val['dossier_autorisation'].$code.$numeroVersionDossierInstructionType;
226 $this->valF['version'] = $numeroVersion;
227
228 // Identifiant du dossier d'instruction lisible
229 // Ex : DP 013055 13 00002P0
230 $this->valF['dossier_libelle'] = $this->get_dossier_autorisation_libelle($val['dossier_autorisation']).$code.$numeroVersionDossierInstructionType;
231 }
232
233 /*Récupère la valeur du suffixe d'un dossier_instruction_type*/
234 function getSuffixe($dossierInstructionType){
235
236 $suffixe = "";
237
238 $sql = "SELECT
239 suffixe
240 FROM
241 ".DB_PREFIXE."dossier_instruction_type
242 WHERE
243 dossier_instruction_type = $dossierInstructionType";
244
245 $this->addToLog("getSuffixe(): db->query(\"".$sql."\")", VERBOSE_MODE);
246 $res = $this->db->query($sql);
247 if (database :: isError($res))
248 die($res->getMessage()."erreur ".$sql);
249
250 if ( $res->numRows() > 0 ){
251
252 $row = $res->fetchRow(DB_FETCHMODE_ASSOC);
253 $suffixe = $row['suffixe'];
254 }
255
256 return $suffixe;
257 }
258
259 /*Récupère dans la table de paramètrage la lettre correspondant
260 * au dossier_instruction_type
261 */
262 function getCode($dossierInstructionType){
263
264 $code = "";
265
266 $sql = "SELECT
267 code
268 FROM
269 ".DB_PREFIXE."dossier_instruction_type
270 WHERE
271 dossier_instruction_type = $dossierInstructionType";
272
273 $this->addToLog("getCode(): db->query(\"".$sql."\")", VERBOSE_MODE);
274 $res = $this->db->query($sql);
275 if (database :: isError($res))
276 die($res->getMessage()."erreur ".$sql);
277
278 if ( $res->numRows() > 0 ){
279
280 $row = $res->fetchRow(DB_FETCHMODE_ASSOC);
281 $code = $row['code'];
282 }
283
284 return $code;
285 }
286
287 /*Récupère le numéro de version d'un dossier_autorisation*/
288 function getNumeroVersion($dossierAutorisation){
289
290 $numeroVersion = "";
291
292 $sql = "SELECT
293 numero_version
294 FROM
295 ".DB_PREFIXE."dossier_autorisation
296 WHERE
297 dossier_autorisation = '$dossierAutorisation'";
298
299 $this->addToLog("getNumeroVersion(): db->query(\"".$sql."\")", VERBOSE_MODE);
300 $res = $this->db->query($sql);
301 if (database :: isError($res))
302 die($res->getMessage()."erreur ".$sql);
303
304 if ( $res->numRows() > 0 ){
305
306 $row = $res->fetchRow(DB_FETCHMODE_ASSOC);
307 $numeroVersion = $row['numero_version'];
308 }
309
310 return $numeroVersion;
311 }
312
313 /*Incrémente le numéro de version du dossier*/
314 function incrementNumeroVersion($dossierAutorisation, $nouveauNumeroVersion) {
315
316 $valF = array (
317 "numero_version" => $nouveauNumeroVersion
318 );
319
320 $res = $this->db->autoExecute(DB_PREFIXE."dossier_autorisation",
321 $valF,
322 DB_AUTOQUERY_UPDATE,
323 "dossier_autorisation = '$dossierAutorisation'");
324
325 if (database :: isError($res))
326 die($res->getMessage()."erreur ".$sql);
327
328 }
329
330 /**
331 * Retourne un numéro de version en fonction du type de dossier d'instruction
332 * @param string $dossier_autorisation
333 * @param integer $dossier_instruction_type
334 * @return int
335 */
336 public function getNumeroVersionDossierInstructionType($dossier_autorisation, $dossier_instruction_type, $numero_version, $increment = true){
337
338 $numeroVersionDossierInstructionType = $numero_version;
339
340 //On récupère le code correspondant au type de dossier d'instruction passé
341 //en paramètre
342 $sql = "SELECT
343 code
344 FROM
345 ".DB_PREFIXE."dossier_instruction_type
346 WHERE
347 dossier_instruction_type = ".$dossier_instruction_type;
348 $codeDossierInstructionType = $this->db->getOne($sql);
349 $this->f->addToLog("getNumeroVersionDossierInstructionType(): db->getOne(\"".$sql."\")", VERBOSE_MODE);
350 if ( database::isError($codeDossierInstructionType)){
351 $this->f->addToError("", $codeDossierInstructionType, $codeDossierInstructionType);
352 return false;
353 }
354
355
356 // Si c'est un dossier d'instruction de type "Initial", code "P", on retourne 0
357 if ( strcmp($codeDossierInstructionType, "P") == 0 ){
358 return 0;
359 }
360 //Si c'est un modificatif ou transfert on retourne un nombre correspondant au
361 //nombre de dossier d'instruction de ce type, rattaché au dossier
362 //d'autorisation complété par des 0 à gauche si besoin. Format du retour
363 //attendu : 01 ou 02, etc.
364 else {
365
366 //On récupère le nombre de dossier d'instruction de ce type rattaché au
367 //dossier d'autorisation
368 $sql = "SELECT
369 count(dossier)
370 FROM
371 ".DB_PREFIXE."dossier
372 LEFT JOIN
373 ".DB_PREFIXE."dossier_autorisation
374 ON
375 dossier_autorisation.dossier_autorisation = dossier.dossier_autorisation
376 WHERE
377 dossier_autorisation.dossier_autorisation = '".$dossier_autorisation."'
378 AND
379 dossier.dossier_instruction_type = ".$dossier_instruction_type;
380 $numeroVersionDossierInstructionType = $this->db->getOne($sql);
381 $this->f->addToLog("getNumeroVersionDossierInstructionType(): db->getOne(\"".$sql."\")", VERBOSE_MODE);
382 if ( database::isError($numeroVersionDossierInstructionType)){
383 $this->f->addToError("", $numeroVersionDossierInstructionType, $numeroVersionDossierInstructionType);
384 return false;
385 }
386
387 //
388 if ($increment === true) {
389 $numeroVersionDossierInstructionType = ++$numeroVersionDossierInstructionType;
390 }
391 //On compléte par des 0 à gauche
392 $numeroVersionDossierInstructionType = str_pad($numeroVersionDossierInstructionType, 2, "0", STR_PAD_LEFT);
393
394 return $numeroVersionDossierInstructionType;
395 }
396 }
397 /**
398 * Retourne le libellé du dossier d'autorisation
399 * @param string $dossier_autorisation Identifiant du dossier d'autorisation
400 * @return string Libellé dossier d'autorisation
401 */
402 function get_dossier_autorisation_libelle($dossier_autorisation) {
403
404 $dossier_autorisation_libelle = "";
405
406 // Requête SQL
407 $sql = "SELECT
408 dossier_autorisation_libelle
409 FROM
410 ".DB_PREFIXE."dossier_autorisation
411 WHERE
412 dossier_autorisation = '$dossier_autorisation'";
413
414 $dossier_autorisation_libelle = $this->db->getOne($sql);
415 $this->addToLog("get_dossier_autorisation_libelle(): db->getOne(\"".$sql."\")", VERBOSE_MODE);
416 database::isError($dossier_autorisation_libelle);
417
418 // Retourne le résultat
419 return $dossier_autorisation_libelle;
420 }
421
422 function setvalF($val){
423 parent::setvalF($val);
424
425 // Récupération des id demandeurs postés
426 $this->getPostedValues();
427
428 // enlever les valeurs a ne pas saisir -> recherche en trigger ajouter et modifier
429 // $sig = 1
430 unset ($this->valF['geom']);
431 unset ($this->valF['geom1']);
432 // valeurs hiddenstatic (calcule)
433 if($this->maj==1){
434 // par defaut
435 unset ($this->valF['etat']);
436 unset ($this->valF['delai']);
437 unset ($this->valF['accord_tacite']);
438 }
439 unset ($this->valF['avis_decision']); // avis + libelle avis
440 unset ($this->valF['terrain_surface_calcul']);
441 unset ($this->valF['shon_calcul']);
442 unset ($this->valF['parcelle_archive']);
443 unset ($this->valF['parcelle_lot_archive']);
444 unset ($this->valF['date_notification_delai']);
445 unset ($this->valF['date_decision']);
446 unset ($this->valF['date_limite']);
447 unset ($this->valF['date_validite']);
448 unset ($this->valF['date_chantier']);
449 unset ($this->valF['date_achevement']);
450 unset ($this->valF['date_conformite']);
451
452 // Durée de validité lors de la création du dossier d'instruction
453 $this->valF['duree_validite'] = $this->get_duree_validite($this->valF['dossier_autorisation']);
454 }
455
456 /*Vérification des données saisies*/
457 function verifier($val,&$db,$DEBUG){
458 parent::verifier($val,$db,$DEBUG);
459 if(!isset($this->postedIdDemandeur["petitionnaire_principal"]) OR
460 empty($this->postedIdDemandeur["petitionnaire_principal"])) {
461 $this->correct = false;
462 $this->addToMessage(_("La saisie d'un petitionnaire principal est obligatoire."));
463 }
464 if($val['parcelle']!="" and $val['sig']!='Oui'){
465 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'])){
466 $this->correct=false;
467 $this->addToMessage("<br>format parcelle incorrect");
468 }
469 }
470 }//verifier
471
472
473 function setType(&$form,$maj) {
474 parent::setType($form,$maj);
475 $form->setType('dossier','hidden');
476 $form->setType('amenagement','hidden'); // PC
477 $form->setType('parcelle_lot','hidden'); // PC
478 $form->setType('parcelle_lot_lotissement','hidden'); // PC
479 $form->setType('version','hidden'); // PC
480 $form->setType('incompletude','hidden');
481 $form->setType('etat_pendant_incompletude','hidden');
482 $form->setType('duree_validite','hidden');
483 $form->setType('description','hidden');
484 $form->setType('quartier', 'hidden');
485 // XXX
486 $form->setType('servitude', 'hidden');
487 if ($maj < 2) { //ajouter et modifier
488 // cache
489 if($maj==0) $form->setType('dossier_libelle', 'hidden');
490 if($maj==0) $form->setType('dossier_demandeur','hidden');
491 $form->setType('annee', 'hidden');
492 $form->setType('parcelle_archive','hidden');
493 $form->setType('parcelle_lot_archive','hidden');
494 $form->setType('geom1', 'hidden');
495 $form->setType('geom', 'hiddenstatic');
496 // $form->setType('servitude', 'hiddenstatic');
497
498 $form->setType('autorite_competente', 'selecthiddenstatic');
499 if($this->is_incomplet_notifie()) {
500 $form->setType('evenement_suivant_tacite_incompletude', 'selecthiddenstatic');
501 $form->setType('evenement_suivant_tacite','hidden');
502 } else{
503 $form->setType('evenement_suivant_tacite','selecthiddenstatic');
504 $form->setType('evenement_suivant_tacite_incompletude', 'hidden');
505 }
506
507 // hiddenstatic
508 if($maj==1) $form->setType('dossier_libelle', 'hiddenstatic');
509 if($maj==1) $form->setType('dossier_demandeur','hiddenstatic');
510 $form->setType('terrain','hiddenstatic');
511 $form->setType('etat','hiddenstatic');
512 $form->setType('avis_decision','hiddenstatic');
513 $form->setType('delai_incompletude','hiddenstatic');
514 $form->setType('delai','hiddenstatic');
515 $form->setType('terrain_surface_calcul','hiddenstatic');
516 $form->setType('shon_calcul','hiddenstatic');
517
518 $form->setType('accord_tacite','hiddenstatic');
519
520
521 // hiddenstaticdate
522 $form->setType('date_notification_delai','hiddenstaticdate');
523 $form->setType('date_decision','hiddenstaticdate');
524 $form->setType('date_limite','hiddenstaticdate');
525 $form->setType('date_rejet','hiddenstaticdate');
526 $form->setType('date_complet','hiddenstaticdate');
527 $form->setType('date_limite','hiddenstaticdate');
528 $form->setType('date_validite','hiddenstaticdate');
529 $form->setType('date_chantier','hiddenstaticdate');
530 $form->setType('date_achevement','hiddenstaticdate');
531 $form->setType('date_conformite','hiddenstaticdate');
532 $form->setType('date_limite_incompletude','hiddenstaticdate');
533
534 $form->setType('date_depot','hiddenstaticdate');
535 $form->setType('date_dernier_depot','hiddenstaticdate');
536
537 // checkbox
538 $form->setType('sig','checkbox');
539
540 // zones temp et strategysig
541
542
543 // temp
544 if (file_exists ("../dyn/var.inc"))
545 include ("../dyn/var.inc");
546 if(!isset($auto_pos))
547 $auto_pos=0;
548 if($auto_pos==1)
549 $form->setType('pos','hiddenstatic');
550 else
551 $form->setType('pos','select');
552 $form->setType('temp1',$temp1_type);
553 $form->setType('temp2',$temp2_type);
554 $form->setType('temp3',$temp3_type);
555 $form->setType('temp4',$temp4_type);
556 $form->setType('temp5',$temp5_type);
557 $form->setType('a_qualifier', 'checkbox');
558
559 $form->setType('parcelle', 'hidden');
560 $form->setType('pos', 'hidden');
561 $form->setType('sig', 'hidden');
562 $form->setType('batiment_nombre', 'hidden');
563 $form->setType('logement_nombre', 'hidden');
564 $form->setType('hauteur', 'hidden');
565 $form->setType('piece_nombre', 'hidden');
566 $form->setType('shon', 'hidden');
567 $form->setType('shon_calcul', 'hidden');
568 $form->setType('shob', 'hidden');
569 $form->setType('lot', 'hidden');
570 }
571 if ($maj == 1) {
572 //
573 if ($this->f->isAccredited("dossier_modifier_instructeur")) {
574 $form->setType('instructeur', 'select');
575 } else {
576 $form->setType('instructeur', 'selecthiddenstatic');
577 }
578 //
579 if($this->f->getParameter('option_afficher_division') === 'true') {
580 //
581 if ($this->f->isAccredited("dossier_modifier_division")) {
582 $form->setType('division', 'select');
583 } else {
584 $form->setType('division', 'selecthiddenstatic');
585 }
586 } else {
587 $form->setType('division', 'hidden');
588 }
589 }
590 if($maj == 3) {
591 $form->setType('annee', 'hidden');
592 $form->setType('temp1','hidden');
593 $form->setType('temp2','hidden');
594 $form->setType('temp3','hidden');
595 $form->setType('temp4','hidden');
596 $form->setType('temp5','hidden');
597 $form->setType('parcelle_archive','hidden');
598 $form->setType('parcelle_lot_archive','hidden');
599 $form->setType('geom1','hidden');
600 $form->setType('geom','static');
601 $form->setType('a_qualifier', 'checkboxstatic');
602 $form->setType('terrain_references_cadastrales','referencescadastralesstatic'); // PC
603 $form->setType('parcelle', 'hidden');
604 $form->setType('pos', 'hidden');
605 $form->setType('sig', 'hidden');
606 $form->setType('batiment_nombre', 'hidden');
607 $form->setType('logement_nombre', 'hidden');
608 $form->setType('hauteur', 'hidden');
609 $form->setType('piece_nombre', 'hidden');
610 $form->setType('shon', 'hidden');
611 $form->setType('shon_calcul', 'hidden');
612 $form->setType('shob', 'hidden');
613 $form->setType('lot', 'hidden');
614 $form->setType('delai_incompletude','hidden');
615 // Si l'état du dossier est incomplet
616 if ($this->is_incomplet_notifie()) {
617 // On cache les dates de complétude et de limite d'instruction
618 $form->setType('date_complet', 'hiddendate');
619 $form->setType('date_limite', 'hiddendate');
620 $form->setType('evenement_suivant_tacite_incompletude','selecthiddenstatic');
621 $form->setType('evenement_suivant_tacite','hidden');
622
623 } else {
624 // Sinon on cache la date de limite d'incomplétude
625 $form->setType('date_limite_incompletude', 'hiddendate');
626 $form->setType('evenement_suivant_tacite_incompletude','hidden');
627 $form->setType('evenement_suivant_tacite','selecthiddenstatic');
628 }
629 }
630
631 // Le profil Qualificateur ne peut modifier seulement les champs
632 // autorite_competente, a_qualifier et erp
633 if ($this->f->isUserQualificateur()) {
634
635 // En modification
636 if ($maj == 1) {
637
638 $form->setType('numero_versement_archive', 'static');
639 $form->setType('enjeu_urba', 'checkboxstatic');
640 $form->setType('enjeu_erp', 'checkboxstatic');
641 $form->setType('terrain_references_cadastrales','referencescadastralesstatic');
642 $form->setType('terrain_adresse_voie_numero','static');
643 $form->setType('terrain_adresse_voie','static');
644 $form->setType('terrain_adresse_lieu_dit','static');
645 $form->setType('terrain_adresse_localite','static');
646 $form->setType('terrain_adresse_code_postal','static');
647 $form->setType('terrain_adresse_bp','static');
648 $form->setType('terrain_adresse_cedex','static');
649 $form->setType('terrain_superficie','static');
650 }
651 }
652
653 //
654 if(!$this->f->getParameter('option_afficher_division') === 'true') {
655 $form->setType('division', 'hidden');
656 }
657 $form->setType('dossier_autorisation', 'hidden');
658 $form->setType('dossier_autorisation_libelle', 'hidden');
659 $form->setType('dossier_instruction_type', 'selecthiddenstatic');
660 //
661 if ($maj == 0) {
662 $form->setType('dossier_autorisation', 'select');
663 }
664 // On cache enjeu_ERP si l'option n'est pas activée
665 if($this->f->getParameter('option_erp') != 'true') {
666 $form->setType('erp', 'hidden');
667 $form->setType('enjeu_erp', 'hidden');
668 }
669
670 // En mode modifier, supprimer et consulter
671 if ($maj != 0) {
672 // Cache la date de la demande
673 $form->setType('date_demande', 'hiddendate');
674 }
675
676 // XXX Champs cachés
677 $form->setType('accord_tacite', 'hidden');
678 $form->setType('date_rejet', 'hiddendate');
679 $form->setType('date_notification_delai', 'hiddendate');
680 $form->setType('date_chantier', 'hiddendate');
681 $form->setType('date_achevement', 'hiddendate');
682 $form->setType('date_conformite', 'hiddendate');
683 }
684
685 function setVal(&$form,$maj,$validation){
686 $this->maj=$maj;
687
688 if($this->getVal('geom') != ""
689 && $this->f->getParameter('option_sig') == 'sig_externe'
690 && $this->f->issetSIGParameter() === true) {
691 $form->setVal('geom',
692 "<a id='action-form-localiser'".
693 " target='_SIG' href='../app/redirect_plan_sig.php?idx=".$this->getVal("dossier")."'>".
694 "<span class='om-icon om-icon-16 om-icon-fix sig-16' title='Localiser'>Localiser</span> ".
695 $this->getVal('geom').
696 " </a>");
697 }
698 if ($validation==0) {
699 if ($maj == 0){
700 //$dossier_cp = $this->f->collectivite["cp"];
701 //$dossier_ville = $this->f->collectivite["ville"];
702
703 $form->setVal('annee', date('y'));
704 $form->setVal('date_demande', date('Y-m-d'));
705 $form->setVal('date_depot', date('Y-m-d'));
706
707 //$form->setVal('demandeur_cp', $dossier_cp);
708 //$form->setVal('demandeur_ville', $dossier_ville);
709
710 //$form->setVal('delegataire_cp', $dossier_cp);
711 //$form->setVal('delegataire_ville', $dossier_ville);
712
713 //$form->setVal('terrain_cp', $dossier_cp);
714 //$form->setVal('terrain_ville', $dossier_ville);
715
716 $form->setVal('accord_tacite', 'Non');
717 $form->setVal('etat', 'initialiser');
718 }
719 }
720 }
721
722 function setSelect(&$form, $maj,&$db,$debug) {
723 //optimisation sur table importante parcelle -> pas d appel methode parent
724 if(file_exists ("../sql/".$db->phptype."/".$this->table.".form.inc.php"))
725 include ("../sql/".$db->phptype."/".$this->table.".form.inc.php");
726
727
728 // instructeur
729 $this->init_select($form, $db, $maj, $debug, "instructeur",
730 $sql_instructeur, $sql_instructeur_by_id, true);
731
732 // etat
733 $this->init_select($form, $db, $maj, $debug, "etat",
734 $sql_etat, $sql_etat_by_id, false);
735
736 // dossier_instruction_type
737 $this->init_select($form, $db, $maj, $debug, "dossier_instruction_type",
738 $sql_dossier_instruction_type, $sql_dossier_instruction_type_by_id, false);
739
740 // division
741 $this->init_select($form, $db, $maj, $debug, "division",
742 $sql_division, $sql_division_by_id, true);
743
744 // autorite_competente
745 $this->init_select($form, $db, $maj, $debug, "autorite_competente",
746 $sql_autorite_competente, $sql_autorite_competente_by_id, false);
747
748 // avis_decision
749 $this->init_select($form, $db, $maj, $debug, "avis_decision",
750 $sql_avis_decision, $sql_avis_decision_by_id, false);
751
752 // evenement_suivant_tacite
753 $this->init_select($form, $db, $maj, $debug, "evenement_suivant_tacite",
754 $sql_evenement_suivant_tacite, $sql_evenement_suivant_tacite_by_id, false);
755
756 // evenement_suivant_tacite_incompletude
757 $this->init_select($form, $db, $maj, $debug, "evenement_suivant_tacite_incompletude",
758 $sql_evenement_suivant_tacite_incompletude, $sql_evenement_suivant_tacite_incompletude_by_id, false);
759
760 if($maj<2){
761 // parcelle_lot
762 $contenu="";
763 $contenu[0][0]="parcelle_lot";// table
764 $contenu[0][1]="parcelle_lot"; // zone origine
765 $contenu[1][0]="lotissement";
766 $contenu[1][1]="parcelle_lot_lotissement";
767 $form->setSelect("parcelle_lot",$contenu);
768 $contenu="";
769 $contenu[0][0]="parcelle_lot";// table
770 $contenu[0][1]="lotissement"; // zone origine
771 $contenu[1][0]="parcelle_lot";
772 $contenu[1][1]="parcelle_lot";
773 $form->setSelect("parcelle_lot_lotissement",$contenu);
774 // accord tacite
775 $contenu=array();
776 $contenu[0]=array('Non','Oui');
777 $contenu[1]=array('Non','Oui');
778 $form->setSelect("accord_tacite",$contenu);
779
780 // geom *** a voir
781 if($maj==1){ //modification
782 $contenu=array();
783 $contenu[0]=array("dossier",$this->getParameter("idx"));
784 $form->setSelect('geom',$contenu);
785 }
786 // arrondissement recherche anvancée
787 $this->init_select($form, $db, $maj, $debug, "arrondissement",
788 $sql_arrondissement, $sql_arrondissement_by_id, false);
789 // dossier_autorisation_type_detaille recherche anvancée
790 $this->init_select($form, $db, $maj, $debug, "dossier_autorisation_type_detaille",
791 $sql_dossier_autorisation_type_detaille, $sql_dossier_autorisation_type_detaille_by_id, false);
792 /*
793 * Affichage de données dans le select de la parcelle
794 * */
795 $contenu=array();
796 $sql="select parcelle from ".DB_PREFIXE."parcelle ";
797 $res = $db->query($sql);
798 if (database::isError($res))
799 die($res->getMessage());
800 $contenu[0][0]="";
801 $contenu[1][0]=_("choisir parcelle");
802 $k=1;
803 while ($row=& $res->fetchRow()){
804 $contenu[0][$k]=$row[0];
805 $contenu[1][$k]=$row[0];
806 $k++;
807 }
808 $form->setSelect("parcelle",$contenu);
809
810 }
811 if($this->f->getParameter('option_afficher_division')==='true') {
812 // instructeur
813 $this->init_select($form, $db, $maj, $debug, "instructeur",
814 $sql_instructeur_div, $sql_instructeur_div_by_id, false);
815 }
816 }
817
818 function setLib(&$form,$maj) {
819 parent::setLib($form,$maj);
820 $form->setLib('dossier_autorisation_libelle',_('dossier_autorisation_libelle'));
821 $form->setLib('dossier_instruction_type',_('type de dossier'));
822 $form->setLib('servitude',_('contraintes'));
823 $form->setLib('dossier_demandeur',_('demandeur'));
824 $form->setLib('description_projet',_('description du projet'));
825 $form->setLib('autorite_competente',_('competence'));
826 $form->setLib('geom',_('geolocalisaion'));
827 $form->setLib('date_limite',_("date limite d'instruction"));
828 $form->setLib('delai',_("delai d'instruction"));
829 $form->setLib('accord_tacite',_("decision tacite"));
830 $form->setLib('enjeu_urba', _("urbanisme"));
831 $form->setLib('enjeu_erp', _("ERP"));
832 $form->setLib('numero_versement_archive', _("numero"));
833 $form->setLib('erp', _("ERP"));
834 $form->setLib('date_depot', _("depot"));
835 $form->setLib('date_dernier_depot', _("dernier depot"));
836 $form->setLib('date_limite', _("limite d'instruction"));
837 $form->setLib('delai', _("delai (mois)"));
838 $form->setLib('date_complet', _("completude"));
839 $form->setLib('date_limite_incompletude', _("limite d'incompletude"));
840 $form->setLib('date_decision', _("date de la decision"));
841 $form->setLib('date_validite', _("fin de validite le"));
842 }
843
844 function setOnchange(&$form,$maj){
845 parent::setOnchange($form,$maj);
846 // mise en majuscule
847 $form->setOnchange("demandeur_nom","this.value=this.value.toUpperCase()");
848 $form->setOnchange("demandeur_societe","this.value=this.value.toUpperCase()");
849 $form->setOnchange("delegataire_nom","this.value=this.value.toUpperCase()");
850 $form->setOnchange("delegataire_societe","this.value=this.value.toUpperCase()");
851 $form->setOnchange("architecte_nom","this.value=this.value.toUpperCase()");
852 $form->setOnchange("terrain_adresse","this.value=this.value.toUpperCase()");
853 $form->setOnchange('shon','VerifNumdec(this)');
854 $form->setOnchange('shob','VerifNumdec(this)');
855 $form->setOnchange('hauteur','VerifNumdec(this)');
856 $form->setOnchange('terrain_surface','VerifNumdec(this)');
857 }
858
859 function setLayout(&$form, $maj) {
860
861 // En-tête
862 $form->setBloc('dossier_libelle', 'D', '', ($maj == 3 ? 'col_9':'col_12'));
863
864 // Col1 : Fieldset "Dossier d'Instruction"
865 $form->setBloc('dossier_libelle', 'D', '', 'col_9');
866
867 $form->setFieldset('dossier_libelle', 'D', _("Dossier d'instruction"));
868 $form->setFieldset('geom', 'F');
869
870
871 $form->setBloc('geom', 'F');
872
873 // Col2 : 3 fieldsets
874 $form->setBloc('enjeu_urba', 'D', '', 'col_3');
875
876 // Fieldset "Enjeu"
877 $form->setFieldset('enjeu_urba', 'D', _("Enjeu"));
878 $form->setFieldset('enjeu_erp', 'F');
879 // Fieldset "Qualification"
880 $form->setFieldset('erp', 'D', _("Qualification"));
881 $form->setFieldset('a_qualifier', 'F');
882 // Fieldset "Archive"
883 $form->setFieldset('numero_versement_archive', 'D', _("Archive"));
884 $form->setFieldset('date_demande', 'F');
885
886 $form->setBloc('date_demande', 'F');
887 $form->setBloc('date_demande', 'F');
888
889 // Fieldset "Instruction"
890 $form->setBloc('date_depot', 'D', '', 'col_12');
891 $form->setFieldset('date_depot', 'D', _('Instruction'), 'col_12');
892
893 // Fieldset "Suivi"
894 $form->setBloc('date_depot', 'D', '', 'col_12');
895
896 $form->setFieldset('date_depot', 'D', _('Suivi'), 'col_12');
897 // Col 1
898 $form->setBloc('date_depot', 'D', '', 'col_6');
899 $form->setBloc('date_depot', 'D');
900 $form->setBloc('date_dernier_depot', 'F');
901 $form->setBloc('date_limite', 'D', '', 'interligne');
902 $form->setBloc('date_limite_incompletude', 'F');
903 $form->setBloc('date_limite_incompletude', 'F');
904 // Col 2
905 $form->setBloc('etat', 'D', '', 'col_6');
906 $form->setBloc('etat', 'D');
907 $form->setBloc('etat', 'F');
908 $form->setBloc('evenement_suivant_tacite', 'D', '', 'evmt_suivant_tacite_di');
909 $form->setBloc('evenement_suivant_tacite_incompletude', 'F');
910 $form->setBloc('evenement_suivant_tacite_incompletude', 'F');
911 $form->setFieldset('evenement_suivant_tacite_incompletude','F','');
912
913 $form->setBloc('evenement_suivant_tacite_incompletude', 'F'); // Fin Suivi
914
915 // Bloc 2 fieldsets
916 $form->setBloc('date_decision', 'D', '', 'col_12');
917
918 // Col 1 Fieldset "Décision"
919 $form->setFieldset('date_decision', 'D', _('Decision'), 'col_6');
920 $form->setFieldset('avis_decision','F','');
921 // Col 2 Fieldset "Validité de l'autorisation"
922 $form->setFieldset('date_validite', 'D', _("Validite de l'autorisation"), 'col_6');
923 $form->setFieldset('date_validite','F','');
924
925 $form->setBloc('date_validite', 'F'); // Fin bloc 2 fieldsets
926
927 // XXX Champs cachés
928 // // Fieldset "Autre"
929 // $form->setBloc('accord_tacite', 'D', '', 'col_12');
930 // $form->setFieldset('accord_tacite', 'D', _('Autre'), 'col_12');
931
932 // $form->setBloc('accord_tacite', 'D', '', 'col_4');
933 // $form->setBloc('accord_tacite', 'F');
934
935 // $form->setBloc('date_rejet', 'D', '', 'col_4');
936 // $form->setBloc('date_achevement', 'F');
937
938 // $form->setBloc('date_conformite', 'D', '', 'col_4');
939 // $form->setBloc('date_conformite', 'F');
940
941 // $form->setFieldset('date_conformite','F','');
942 // $form->setBloc('date_conformite', 'F'); // Fin Autre
943
944 $form->setFieldset('date_conformite','F','');
945 $form->setBloc('date_conformite', 'F'); // Fin Instruction
946
947 // Fieldset "Localisation du terrain"
948 $form->setBloc('terrain_adresse_voie_numero', 'D', '', 'col_12');
949
950 $form->setFieldset('terrain_adresse_voie_numero', 'D', _('Localisation du terrain'), 'startClosed');
951 // Col 1
952 $form->setBloc('terrain_adresse_voie_numero', 'D', "", "col_6");
953 $form->setBloc('terrain_references_cadastrales', 'F');
954 // Col 2
955 $form->setBloc('terrain_adresse_voie', 'D', "", "col_6");
956 $form->setBloc('terrain_superficie', 'F');
957
958 $form->setFieldset('terrain_superficie', 'F', '');
959
960 $form->setBloc('terrain_superficie', 'F');
961 }
962
963 /**
964 * Permet de retourner si le dossier est incomplet notifié
965 *
966 * @return boolean true si incomplet notifié
967 */
968 function is_incomplet_notifie() {
969 // Si déjà défini on le retourne
970 if($this->is_incomplet_notifie != null) {
971 return $this->is_incomplet_notifie;
972 }
973 // Si le dossier n'est pas défini en tant qu'incomplet
974 if($this->getVal('incompletude') != 't') {
975 $this->is_incomplet_notifie = false;
976 return $this->is_incomplet_notifie;
977 }
978 // Vérification du retour de notification du dernier evnmt d'incomplétude
979 $sql = "SELECT date_retour_rar
980 FROM ".DB_PREFIXE."instruction WHERE instruction =
981 (SELECT max(instruction) FROM ".DB_PREFIXE."instruction
982 JOIN ".DB_PREFIXE."evenement on instruction.evenement=evenement.evenement
983 WHERE dossier= '".$this->getVal($this->clePrimaire)."'
984 AND evenement.type='incompletude')";
985 $date_retour_rar = $this->db->getOne($sql);
986 if (database :: isError($date_retour_rar)) {
987 return -1;
988 }
989 // Si une date de retour alors l'incompletude est notifiée.
990 if($date_retour_rar != '') {
991 $this->is_incomplet_notifie = true;
992 } else {
993 $this->is_incomplet_notifie = false;
994 }
995 return $this->is_incomplet_notifie;
996 }
997
998 /* =============================================================
999 * fonction trigger relative a la connexion SIG
1000 * $sig = 1 dans dyn/var.inc
1001 * utilisé aussi pour envoyer une message au service REST d'ERP
1002 * ===============================================================
1003 */
1004
1005 function triggerajouterapres($id,&$db,$val,$DEBUG) {
1006 $this->sig_parametre($db);
1007 $id=$this->valF['dossier']; // id n est pas valorise en ajout
1008 if($this->sig==1 and $val['sig']!='Oui'){
1009 if($val['parcelle']!=''or $val['parcelle_lot']!=''){
1010
1011 $this->sig_interne($id,$db,$val,$DEBUG);
1012 }
1013 else
1014 $this->addToMessage("<br>"._("Parcelle non renseignee dans dossier")." ".$id." <br>");
1015
1016 }
1017
1018
1019 if ($this->f->getParameter('option_erp') != "") {
1020 // envoi du message a ERP en cas d'un depot du dossier dat
1021 if ($this->f->getDATDCode($this->valF['dossier']) ==
1022 $this->f->getParameter('erp_depot_dossier_dat')) {
1023 $msgenque = new MessageEnqueuer();
1024 $msgenque->setDossierInstructionIdentifier($this->valF['dossier']);
1025 $return = $msgenque->enqueueMessage($msgenque::$ERP_DEPOT_DOSSIER_DAT);
1026 //Si une erreur s'est produite on arrête le traitement et on
1027 //retourne une erreur
1028 if ($return !== 0){
1029
1030 $this->addToMessage(_("Une erreur s'est produite lors de ".
1031 "l'envoi du message au referentiel ERP. Merci de ".
1032 "contacter votre administrateur"));
1033 //On ne valide pas le formulaire
1034 $this->addToMessage("<br/>"._("SAISIE NON ENREGISTREE")."<br/>");
1035 $this->correct = false;
1036 return false;
1037 }
1038 else {
1039 $this->addToMessage(_("Le message a ete transmis au ".
1040 "referentiel ERP."));
1041 }
1042 }
1043
1044 // envoi du message a ERP en cas d'une demande d'ouverture DAT
1045 if ($this->f->getDATDCode($this->valF['dossier']) ==
1046 $this->f->getParameter('erp_demande_ouverture_dat')) {
1047 $msgenque = new MessageEnqueuer();
1048 $msgenque->setDossierInstructionIdentifier($this->valF['dossier']);
1049 $return = $msgenque->enqueueMessage($msgenque::$ERP_DEMANDE_OUVERTURE_DAT);
1050 //Si une erreur s'est produite on arrête le traitement et on
1051 //retourne une erreur
1052 if ($return !== 0){
1053
1054 $this->addToMessage(_("Une erreur s'est produite lors de ".
1055 "l'envoi du message au referentiel ERP. Merci de ".
1056 "contacter votre administrateur"));
1057 //On ne valide pas le formulaire
1058 $this->addToMessage("<br/>"._("SAISIE NON ENREGISTREE")."<br/>");
1059 $this->correct = false;
1060 return false;
1061 }
1062 else {
1063 $this->addToMessage(_("Le message a ete transmis au ".
1064 "referentiel ERP."));
1065 }
1066 }
1067
1068 if ($this->valF['erp'] === true) {
1069 // envoi du message a ERP en cas d'annulation d'une demande
1070 if ($this->f->getDATDCode($this->valF['dossier']) ==
1071 $this->f->getParameter('erp_annulation_demande')) {
1072 $msgenque = new MessageEnqueuer();
1073 $msgenque->setDossierInstructionIdentifier($this->valF['dossier']);
1074 $return = $msgenque->enqueueMessage($msgenque::$ERP_ANNULATION_DEMANDE);
1075 //Si une erreur s'est produite on arrête le traitement et on
1076 //retourne une erreur
1077 if ($return !== 0){
1078
1079 $this->addToMessage(_("Une erreur s'est produite lors de ".
1080 "l'envoi du message au referentiel ERP. Merci de ".
1081 "contacter votre administrateur"));
1082 //On ne valide pas le formulaire
1083 $this->addToMessage("<br/>"._("SAISIE NON ENREGISTREE")."<br/>");
1084 $this->correct = false;
1085 return false;
1086 }
1087 else {
1088 $this->addToMessage(_("Le message a ete transmis au ".
1089 "referentiel ERP."));
1090 }
1091 }
1092
1093 // envoi du message a ERP en cas d'ouverture d'un dossier PC "rattache"
1094 // au dossier DAACT
1095 if ($this->f->getDATDCode($this->valF['dossier']) ==
1096 $this->f->getParameter('erp_demande_ouverture_pc_daact')) {
1097 $msgenque = new MessageEnqueuer();
1098 $msgenque->setDossierInstructionIdentifier($this->valF['dossier']);
1099 $return = $msgenque->enqueueMessage($msgenque::$ERP_DEMANDE_OUVERTURE_PC);
1100 //Si une erreur s'est produite on arrête le traitement et on
1101 //retourne une erreur
1102 if ($return !== 0){
1103
1104 $this->addToMessage(_("Une erreur s'est produite lors de ".
1105 "l'envoi du message au referentiel ERP. Merci de ".
1106 "contacter votre administrateur"));
1107 //On ne valide pas le formulaire
1108 $this->addToMessage("<br/>"._("SAISIE NON ENREGISTREE")."<br/>");
1109 $this->correct = false;
1110 return false;
1111 }
1112 else {
1113 $this->addToMessage(_("Le message a ete transmis au ".
1114 "referentiel ERP."));
1115 }
1116 }
1117 }
1118 } // fin de if ($this->f->getParameter('option_erp') != "")
1119
1120 // Mise à jour des données du dossier d'autorisation
1121 require_once "../obj/dossier_autorisation.class.php";
1122 $da = new dossier_autorisation($this->valF["dossier_autorisation"], $this->db, DEBUG);
1123 $da->majDossierAutorisation();
1124
1125 // Si le champ des références cadastrales n'est pas vide
1126 if ($this->valF['terrain_references_cadastrales'] != '') {
1127
1128 // Ajout des parcelles dans la table dossier_parcelle
1129 $this->ajouter_dossier_parcelle($this->valF['dossier'],
1130 $this->valF['terrain_references_cadastrales']);
1131
1132 }
1133
1134 }
1135
1136 /**
1137 * Récupère l'identifiant du quartier et d'un arrondissement d'une référence
1138 * cadastrale
1139 * @param string $reference_cadastrale
1140 *
1141 * @return array
1142 */
1143 function getQuartierArrondissement($reference_cadastrale) {
1144
1145 $reference_cadastrale = trim($reference_cadastrale);
1146 $quartier = '';
1147
1148 //Récupère le code impot du quartier dans la référence cadastrale
1149 for ( $i = 0 ; $i < strlen($reference_cadastrale) ; $i++ ){
1150
1151 //Si c'est un chiffre, c'est le code quartier
1152 if (is_numeric($reference_cadastrale[$i]) ){
1153
1154 $quartier .= $reference_cadastrale[$i];
1155 }
1156 //Sinon c'est la section
1157 else{
1158 break;
1159 }
1160 }
1161
1162 //Si le code impôt du quartier a bien été renseigné
1163 if ( $quartier !== '' ){
1164
1165 //Requête de récupération de l'identifiantdu quartier et de
1166 //l'arrondissement
1167 $sql = "SELECT
1168 quartier, arrondissement
1169 FROM
1170 ".DB_PREFIXE."quartier
1171 WHERE
1172 code_impots='$quartier'";
1173 $this->addToLog("getQuartierArrondissement() : db->query(\"$sql\")", VERBOSE_MODE);
1174 $res = $this->db->query($sql);
1175 if (database::isError($res)) {
1176 die();
1177 }
1178
1179 //Si on a un résultat
1180 if ( $res->numRows() == 1 ){
1181 //
1182 return $res->fetchRow(DB_FETCHMODE_ASSOC);
1183 }
1184 }
1185
1186 return NULL;
1187 }
1188
1189 /**
1190 * Récupère la section d'une référence cadastrale
1191 * @param string $reference_cadastrale
1192 *
1193 * @return string
1194 */
1195 function getSection($reference_cadastrale){
1196
1197 $reference_cadastrale = trim($reference_cadastrale);
1198 $section = NULL;
1199
1200 for ( $i = 0 ; $i < strlen($reference_cadastrale) ; $i++ )
1201 if ( !is_numeric($reference_cadastrale[$i]) && is_string($reference_cadastrale[$i]) && $reference_cadastrale[$i] !== ' ' )
1202 $section .= $reference_cadastrale[$i];
1203
1204 return $section;
1205 }
1206
1207 /*
1208 * Retourne l'intructeur correspondant le mieux à la parcelle
1209 * */
1210 /**
1211 * Récupère la section d'une référence cadastrale
1212 * @param string $quartier
1213 * @param string $arrondissement
1214 * @param string $section
1215 * @param string $dossier_autorisation
1216 *
1217 * @return array
1218 */
1219 function getInstructeurDivision( $quartier, $arrondissement, $section, $dossier_autorisation) {
1220
1221 $quartier = ( $quartier == NULL ) ? -1 : $quartier;
1222 $arrondissement = ( $arrondissement == NULL ) ? -1 : $arrondissement;
1223
1224 //Récupération du dossier_autorisation_type_detaille concerné par le
1225 //$dossier_autorisation
1226 $sql = "
1227 SELECT
1228 dossier_autorisation_type_detaille
1229 FROM
1230 ".DB_PREFIXE."dossier_autorisation
1231 WHERE
1232 dossier_autorisation = '$dossier_autorisation'";
1233
1234 $this->addToLog("getInstructeurDivision : db->query(\"$sql\")", VERBOSE_MODE);
1235 $resDATD = $this->db->query($sql);
1236 if (database :: isError($resDATD))
1237 die($resDATD->getMessage()."erreur ".$sql);
1238
1239 //Si le dossier d'autorisation a un type détaillé de dossier
1240 //d'autorisation associé
1241 if ( $resDATD->numRows() > 0 ){
1242 $rowDATD = $resDATD->fetchRow(DB_FETCHMODE_ASSOC);
1243
1244 //Requête de récupération de l'instructeur à affecter
1245 $sql = "
1246 SELECT
1247 instructeur, section, quartier, arrondissement, dossier_autorisation_type_detaille
1248 FROM
1249 ".DB_PREFIXE."affectation_automatique l
1250 WHERE
1251 ( dossier_autorisation_type_detaille IS NULL AND arrondissement IS NULL AND quartier IS NULL AND section IS NULL ) OR
1252 ( dossier_autorisation_type_detaille IS NULL AND arrondissement IS NULL AND quartier IS NULL AND section = '$section' ) OR
1253 ( dossier_autorisation_type_detaille IS NULL AND arrondissement IS NULL AND quartier = $quartier AND section IS NULL ) OR
1254 ( dossier_autorisation_type_detaille IS NULL AND arrondissement IS NULL AND quartier = $quartier AND section = '$section' ) OR
1255 ( dossier_autorisation_type_detaille IS NULL AND arrondissement = $arrondissement AND quartier IS NULL AND section IS NULL ) OR
1256 ( dossier_autorisation_type_detaille IS NULL AND arrondissement = $arrondissement AND quartier IS NULL AND section = '$section' ) OR
1257 ( dossier_autorisation_type_detaille IS NULL AND arrondissement = $arrondissement AND quartier = $quartier AND section IS NULL ) OR
1258 ( dossier_autorisation_type_detaille IS NULL AND arrondissement = $arrondissement AND quartier = $quartier AND section = '$section' ) OR
1259 ( dossier_autorisation_type_detaille = ".$rowDATD['dossier_autorisation_type_detaille']." AND arrondissement IS NULL AND quartier IS NULL AND section IS NULL ) OR
1260 ( dossier_autorisation_type_detaille = ".$rowDATD['dossier_autorisation_type_detaille']." AND arrondissement IS NULL AND quartier IS NULL AND section = '$section' ) OR
1261 ( dossier_autorisation_type_detaille = ".$rowDATD['dossier_autorisation_type_detaille']." AND arrondissement IS NULL AND quartier = $quartier AND section IS NULL ) OR
1262 ( dossier_autorisation_type_detaille = ".$rowDATD['dossier_autorisation_type_detaille']." AND arrondissement IS NULL AND quartier = $quartier AND section = '$section' ) OR
1263 ( dossier_autorisation_type_detaille = ".$rowDATD['dossier_autorisation_type_detaille']." AND arrondissement = $arrondissement AND quartier IS NULL AND section IS NULL ) OR
1264 ( dossier_autorisation_type_detaille = ".$rowDATD['dossier_autorisation_type_detaille']." AND arrondissement = $arrondissement AND quartier IS NULL AND section = '$section' ) OR
1265 ( dossier_autorisation_type_detaille = ".$rowDATD['dossier_autorisation_type_detaille']." AND arrondissement = $arrondissement AND quartier = $quartier AND section IS NULL ) OR
1266 ( dossier_autorisation_type_detaille = ".$rowDATD['dossier_autorisation_type_detaille']." AND arrondissement = $arrondissement AND quartier = $quartier AND section = '$section' )
1267 ORDER BY dossier_autorisation_type_detaille, section, quartier, arrondissement
1268 LIMIT 1";
1269 $this->addToLog("getInstructeurDivision : db->query(\"$sql\")", VERBOSE_MODE);
1270 $res = $this->db->query($sql);
1271 if (database :: isError($res))
1272 die($res->getMessage()."erreur ".$sql);
1273
1274 //Si on a récupéré un instructeur correspondant aux critères
1275 if ( $res->numRows() > 0 ){
1276
1277 $row = $res->fetchRow(DB_FETCHMODE_ASSOC);
1278 //On récupère sa division
1279 $sql = "SELECT division FROM ".DB_PREFIXE."instructeur WHERE instructeur = ".$row['instructeur'];
1280 $res = $this->db->query($sql);
1281 if (database :: isError($res))
1282 die($res->getMessage()."erreur ".$sql);
1283
1284 $row['division'] = NULL;
1285 //S'il a une division
1286 if ( $res->numRows() > 0 ){
1287
1288 $rowT=& $res->fetchRow(DB_FETCHMODE_ASSOC);
1289 $row['division'] = $rowT['division'];
1290 }
1291
1292 return $row;
1293 }
1294 }
1295
1296 return NULL;
1297 }
1298
1299 /* =============================================================
1300 * fonction trigger relative a la connexion SIG
1301 * $sig = 1 dans dyn/var.inc
1302 * ===============================================================
1303 */
1304
1305 function triggerajouter($id,&$db,$val,$DEBUG) {
1306 //
1307 $this->addToLog("triggerajouter() : start", EXTRA_VERBOSE_MODE);
1308
1309 // Initialisation des variables nécessaires à l'affectation automatique
1310 $quartier = NULL;
1311 $arrondissement = NULL;
1312 $section = NULL;
1313 $instructeur = NULL;
1314
1315 // Si la référence cadastrale n'est pas vide alors on récupère la
1316 //section, le quartier et l'arrondissement
1317 if ($this->valF['terrain_references_cadastrales'] != '') {
1318
1319 // Cette méthode récupère l'arrondissement et le quartier de la
1320 //référence cadastrale saisie
1321 $quartierArrondissement = $this->getQuartierArrondissement($this->valF['terrain_references_cadastrales']);
1322 if ( $quartierArrondissement!= NULL ){
1323
1324 $quartier = $quartierArrondissement['quartier'];
1325 $arrondissement = $quartierArrondissement['arrondissement'];
1326 }
1327 // Si il n'y a pas d'arrondissement alors on vide le quartier
1328 if ( strcmp($arrondissement,'') == 0 ) {
1329
1330 $arrondissement = NULL;
1331 $quartier = NULL;
1332 }
1333 // On récupère la section
1334 $section = $this->getSection($this->valF['terrain_references_cadastrales']);
1335 }
1336
1337 // Si aucun instructeur n'est saisi et que la dossier_autorisation_type_detaille n'est pas vide
1338 // alors on récupère l'instructeur et la division depuis l'affectation
1339 if ( ( empty($this->valF['instructeur']) || $this->valF['instructeur'] == '' ) && $val['dossier_autorisation'] != '' ) {
1340
1341 //Récupération de l'instructeur ainsi que de sa division
1342 $instructeurDivision = $this->getInstructeurDivision($quartier, $arrondissement, $section, $this->valF['dossier_autorisation']);
1343
1344 //Si un instructeur et sa division ont été récupérés
1345 if ( $instructeurDivision != NULL ){
1346
1347 $instructeur = $instructeurDivision['instructeur'];
1348 $division = $instructeurDivision['division'];
1349 }
1350 //Si un instructeur et sa division n'ont pas été récupérés, on
1351 //ajoute pas les données
1352 if ( $instructeur != NULL ){
1353
1354 $this->valF['instructeur'] = $instructeur;
1355 $this->valF['division'] = $division;
1356 } else {
1357 //On affiche un message à l'utilisateur pour lui signifier
1358 //qu'aucun instructeur n'a été assigné au dossier d'instruction
1359 //créé
1360 if ($this->f->isAccredited("dossier_modifier_instructeur")) {
1361 $this->addToMessage("<br/> "._("Pensez a assigner un instructeur a ce dossier.")." <br/>");
1362 } else {
1363 $this->addToMessage("<br/> "._("Aucun instructeur compatible avec ce dossier trouve, contactez votre administrateur afin d'en assigner un a ce dossier.")." <br/>");
1364 }
1365 }
1366 } else {
1367 $this->addToMessage("<br/> "._("Aucun instructeur compatible avec ce dossier trouve, contactez votre administrateur afin d'en assigner un a ce dossier.")." <br/>");
1368 }
1369 //
1370 $this->addToLog("triggerajouter() : end", EXTRA_VERBOSE_MODE);
1371 }
1372
1373 function triggermodifierapres($id,&$db,$val,$DEBUG) {
1374 $this->sig_parametre($db);
1375 // si la parcelle est changée
1376 if(($this->sig==1 and $val['sig']!='Oui' and ($val['parcelle']!=$val['parcelle_archive'])
1377 or $val['parcelle_lot']!=$val['parcelle_lot_archive'])){ // parcelle_lot_archive
1378 if($val['parcelle']!='' or $val['parcelle_lot']!='')
1379 $this->sig_interne($this->valF['dossier'],$db,$val,$DEBUG);
1380 else{
1381 if($this->maj ==1){ // en maj mettre a null la geometrie si parcelle changée inexistante
1382 // XXX SERVITUDE
1383 $sql ="update ".DB_PREFIXE."dossier set geom = null, servitude = '', pos= '' where dossier ='".$id."'";
1384 $res = $db -> query($sql);
1385 // XXX SERVITUDE
1386 $this->addToLog("requete trigger modifier parcelle vide -> maj pos et servitude :".$sql, VERBOSE_MODE);
1387 if (database :: isError($res))
1388 die($res->getMessage()."erreur ".$sql);
1389 }
1390 $this->addToMessage("<br>"._("Parcelle ou parcelle_lot non renseignee dans dossier")." ".$id." <br>");
1391 }
1392 }
1393
1394 // verification si envoi vers ERP est active
1395 if ($this->f->getParameter('option_erp') != "") {
1396 if ($this->val[array_search('a_qualifier', $this->champs)] == 't'
1397 && $this->valF['a_qualifier'] === false) {
1398
1399 // envoi du message "ERP Qualifie" pour un dossier DAT qui a besoin
1400 // de la qualification URBA
1401 if ($this->f->getDATDCode($this->valF['dossier']) ==
1402 $this->f->getParameter('erp_nature_dat')) {
1403 $msgenque = new MessageEnqueuer();
1404 $msgenque->setDossierInstructionIdentifier($this->valF['dossier']);
1405 $msgenque->setCompetence($this->valF['autorite_competente']);
1406 // XXX SERVITUDE
1407 $msgenque->setContraintePlu($this->valF['servitude']);
1408 $msgenque->setReferenceCadastrale(
1409 $this->getReferenceCadastrale($this->valF['dossier']));
1410 $return = $msgenque->enqueueMessage($msgenque::$ERP_QUALIFIE);
1411 //Si une erreur s'est produite on arrête le traitement et on
1412 //retourne une erreur
1413 if ($return !== 0){
1414
1415 $this->addToMessage(_("Une erreur s'est produite lors de ".
1416 "l'envoi du message au referentiel ERP. Merci de ".
1417 "contacter votre administrateur"));
1418 //On ne valide pas le formulaire
1419 $this->addToMessage("<br/>"._("SAISIE NON ENREGISTREE")."<br/>");
1420 $this->correct = false;
1421 return false;
1422 }
1423 else {
1424 $this->addToMessage(_("Le message a ete transmis au ".
1425 "referentiel ERP."));
1426 }
1427 }
1428
1429 // envoi des messages a ERP en cas du dossier PC traite par URBA, et
1430 // qui etait classifie come ERP
1431 if ($this->f->getDATDCode($this->valF['dossier']) ==
1432 $this->f->getParameter('erp_dossier_nature_pc')
1433 && $this->valF['erp'] == true) {
1434 $msgenque = new MessageEnqueuer();
1435 $msgenque->setDossierInstructionIdentifier($this->valF['dossier']);
1436 $return = $msgenque->enqueueMessage($msgenque::$ERP_DEMANDE_COMPLETUDE_PC);
1437 //Si une erreur s'est produite on arrête le traitement et on
1438 //retourne une erreur
1439 if ($return !== 0){
1440
1441 $this->addToMessage(_("Une erreur s'est produite lors de ".
1442 "l'envoi du message au referentiel ERP. Merci de ".
1443 "contacter votre administrateur"));
1444 //On ne valide pas le formulaire
1445 $this->addToMessage("<br/>"._("SAISIE NON ENREGISTREE")."<br/>");
1446 $this->correct = false;
1447 return false;
1448 }
1449 else {
1450 $this->addToMessage(_("Le message a ete transmis au ".
1451 "referentiel ERP."));
1452 }
1453
1454 $return = $msgenque->enqueueMessage($msgenque::$ERP_DEMANDE_QUALIFICATION_PC);
1455 //Si une erreur s'est produite on arrête le traitement et on
1456 //retourne une erreur
1457 if ($return !== 0){
1458
1459 $this->addToMessage(_("Une erreur s'est produite lors de ".
1460 "l'envoi du message au referentiel ERP. Merci de ".
1461 "contacter votre administrateur"));
1462 //Si c'est un problème de connexion vers rabbitMQ et AMQP
1463 //On ne valide pas le formulaire
1464 if ( $return === -3 ){
1465 $this->addToMessage("<br/>"._("SAISIE NON ENREGISTREE")."<br/>");
1466 $this->correct = false;
1467 return false;
1468 }
1469 }
1470 else {
1471 $this->addToMessage(_("Le message a ete transmis au ".
1472 "referentiel ERP."));
1473 }
1474 }
1475 }
1476 } // fin de if($this->f->getParameter('option_erp'))
1477
1478 // Ajout ou modification des demandeurs
1479 $this->insertLinkDemandeDemandeur($db, $DEBUG);
1480
1481 // Si le champ des références cadastrales n'est pas vide
1482 if ($this->getVal('terrain_references_cadastrales')
1483 != $this->valF['terrain_references_cadastrales']) {
1484
1485 // On supprime toutes les lignes de la table dossier_parcelle qui
1486 // font référence le dossier en cours de modification
1487 $this->supprimer_dossier_parcelle($val['dossier']);
1488
1489 // Ajout des parcelles dans la table dossier_parcelle
1490 $this->ajouter_dossier_parcelle($val['dossier'],
1491 $val['terrain_references_cadastrales']);
1492
1493 }
1494
1495 }
1496
1497 /**
1498 * Ne servira surement pas mais dans le doute autant recalculer les données du DA
1499 */
1500 function triggersupprimerapres($id,&$db,$val,$DEBUG) {
1501 // Mise à jour des données du dossier d'autorisation
1502 require_once "../obj/dossier_autorisation.class.php";
1503 $da = new dossier_autorisation($this->valF["dossier_autorisation"], $this->db, DEBUG);
1504 $da->majDossierAutorisation();
1505
1506 // On supprime toutes les lignes de la table dossier_parcelle qui
1507 // font référence le dossier en cours de suppression
1508 $this->supprimer_dossier_parcelle($this->valF['dossier']);
1509
1510 }
1511
1512
1513 /**
1514 * Retourne la reference cadastrale de la demande attache a un dossier ERP
1515 * specifique
1516 * @param string $dossier L'identifiant du dossier
1517 * @return string|null La reference cadastrale si elle est trouve,
1518 * sinon NULL. En cas d'erreur de la BD, l'execution s'arrete.
1519 */
1520 function getReferenceCadastrale($dossier) {
1521 $sql = "SELECT terrain_references_cadastrales FROM ".DB_PREFIXE."demande WHERE dossier_instruction = '" . $dossier . "'";
1522 $res = $this->db->limitquery($sql, 0, 1);
1523 $this->addToLog("getReferenceCadastrale(): db->limitquery(\"".
1524 str_replace(",",", ",$sql)."\", 0, 1);", VERBOSE_MODE);
1525 // Si une erreur survient on die
1526 if (database::isError($res, true)) {
1527 // Appel de la methode de recuperation des erreurs
1528 $this->erreur_db($res->getDebugInfo(), $res->getMessage(), 'demande');
1529 }
1530 // retourne la nature du dossier
1531 while ($row =& $res->fetchRow()) {
1532 return $row[0];
1533 }
1534 // la nature n'etait pas trouve, ce qui ne devrait pas se passer
1535 return NULL;
1536 }
1537
1538
1539 function sig_parametre(&$db){
1540 if (file_exists ("../dyn/var.inc"))
1541 include ("../dyn/var.inc");
1542 if(!isset($sig))
1543 $this->sig=0;
1544 else
1545 $this->sig=1;
1546 if(!isset($auto_pos))
1547 $this->auto_pos=0;
1548 else
1549 $this->auto_pos=$auto_pos;
1550 if(!isset($auto_servitude_surfacique))
1551 $this->auto_servitude_surfacique=0;
1552 else
1553 $this->auto_servitude_surfacique=$auto_servitude_surfacique;
1554 if(!isset($auto_servitude_ligne))
1555 $this->auto_servitude_ligne=0;
1556 else
1557 $this->auto_servitude_ligne=$auto_servitude_ligne;
1558 if(!isset($auto_servitude_point))
1559 $this->auto_servitude_point=0;
1560 else
1561 $this->auto_servitude_point=$auto_servitude_point;
1562 if(!isset($auto_parcelle))
1563 $this->auto_parcelle=0;
1564 else
1565 $this->auto_parcelle=$auto_parcelle;
1566 if(!isset($auto_parcelle_lot))
1567 $this->auto_parcelle_lot=0;
1568 else
1569 $this->auto_parcelle_lot=$auto_parcelle_lot;
1570 $this->addToLog("trigger valeur sig :".$this->sig, VERBOSE_MODE);
1571 $this->addToLog("trigger valeur auto_pos :". $this->auto_pos, VERBOSE_MODE);
1572 $this->addToLog("trigger valeur auto_servitude_surfacique :".$this->auto_servitude_surfacique, VERBOSE_MODE);
1573 $this->addToLog("trigger valeur auto_servitude_ligne :". $this->auto_servitude_ligne, VERBOSE_MODE);
1574 $this->addToLog("trigger valeur auto_servitude_point :".$this->auto_servitude_point, VERBOSE_MODE);
1575 $this->addToLog("trigger valeur auto_parcelle :". $this->auto_parcelle, VERBOSE_MODE);
1576 $this->addToLog("trigger valeur auto_parcelle_lot :".$this->auto_parcelle_lot, VERBOSE_MODE);
1577 }
1578
1579
1580 function sig_interne($id,&$db,$val,$DEBUG){
1581 // Strategy interne dans var.inc
1582 // si la parcelle existe, il est cree un point au milieu de la parcelle
1583 // de maniere automatique
1584 $geom='';
1585 $parcelle=$val["parcelle"];
1586 $projection = $db -> getOne("select srid from geometry_columns where f_table_name='dossier'");
1587 if($this->auto_parcelle==1 and $val["parcelle"]!=''){
1588 $sql= "select astext(centroid(geom)) from ".DB_PREFIXE."parcelle where parcelle ='".$val["parcelle"]."'";
1589 $this->addToLog("recherche centroid parcelle :".$sql, VERBOSE_MODE);
1590 $geom = $db -> getOne($sql);
1591 if (database :: isError($geom))die($res->getMessage()."erreur ".$sql);
1592 }
1593 if($geom=='' and $this->auto_parcelle_lot==1 and $val["parcelle_lot"]!=''){ // lot
1594 $sql= "select astext(centroid(geom)) from ".DB_PREFIXE."parcelle_lot where parcelle_lot ='".$val["parcelle_lot"]."'";
1595 $this->addToLog("recherche centroid parcelle lot :".$sql, VERBOSE_MODE);
1596 $geom = $db -> getOne($sql);
1597 if (database :: isError($geom))die($res->getMessage()."erreur ".$sql);
1598 $parcelle=$val["parcelle_lot"]." ".$val["parcelle_lot_lotissement"];
1599 }
1600 if($geom!=''){ // la parcelle est exitante dans la table ou vue parcelle
1601 $sql ="update ".DB_PREFIXE."dossier set geom =geometryfromtext('".$geom."', ".$projection." ) where dossier ='".$id."'";
1602 $this->addToLog("sig_interne maj geom :".$sql, VERBOSE_MODE);
1603 $res = $db -> query($sql);
1604 if (database :: isError($res)) die($res->getMessage()."erreur ".$sql);
1605 $this->addToMessage(""._("centroid de parcelle calcule")." ".$parcelle." ");
1606 if($this->auto_pos==1) // recherche du pos
1607 $this->calcul_auto_pos($id,$db,$geom,$projection);
1608 if($this->auto_servitude_surfacique==1) // recherche de servitude surfacique
1609 $this->calcul_auto_servitude_surfacique($id,$db,$geom,$projection);
1610 if($this->auto_servitude_ligne==1) // recherche de servitude ligne
1611 $this->calcul_auto_servitude_ligne($id,$db,$geom,$projection);
1612 if($this->auto_servitude_point==1) // recherche de servitude point
1613 $this->calcul_auto_servitude_point($id,$db,$geom,$projection);
1614 $temp=strtr($this->servitude,"'"," "); // enleve le '
1615 // XXX SERVITUDE
1616 $sql1 ="update ".DB_PREFIXE."dossier set servitude = '".$temp."' where dossier = '".$id."'";
1617 $res1 = $db -> query($sql1);
1618 // XXX SERVITUDE
1619 $this->addToLog("maj servitudes :".$sql1, VERBOSE_MODE);
1620 if (database:: isError($res1)) die($res1->getMessage()."erreur ".$sql1);
1621 }else{ // parcelle inexistante //***
1622 if($this->maj ==1){ // en maj mettre a null la geometrie si parcelle changée inexistante
1623 // XXX SERVITUDE
1624 $sql ="update ".DB_PREFIXE."dossier set geom = null, servitude = '', pos= '' where dossier ='".$id."'";
1625 $res = $db -> query($sql);
1626 $this->addToLog("requete sig_interne maj parcelle inexistante :".$sql, VERBOSE_MODE);
1627 if (database :: isError($res))
1628 die($res->getMessage()."erreur ".$sql);
1629 }
1630 //$this->addToMessage("<br> parcelle ".$parcelle." "._("inexistante")." ".$id."");
1631 }
1632 }
1633
1634 function calcul_auto_pos($id,&$db,$geom,$projection){
1635 // recherche du pos automatique
1636 $sql="select pos from ".DB_PREFIXE."pos WHERE ST_contains(geom, geometryfromtext('".$geom."', ".$projection."))";
1637 $pos = $db -> getOne($sql);
1638 $this->addToLog("recherche auto_pos :".$sql, VERBOSE_MODE);
1639 if($pos!=''){
1640 $sql1 ="update ".DB_PREFIXE."dossier set pos = '".$pos."' where dossier = '".$id."'";
1641 $res1 = $db -> query($sql1);
1642 $this->addToLog("maj auto_pos :".$sql1, VERBOSE_MODE);
1643 if (database:: isError($res1)) die($res1->getMessage()."erreur ".$sql1);
1644 $this->addToMessage("<br>"._("POS/PLU")." : ".$pos."");
1645 }else{
1646 $this->addToMessage("<br>"._("POS/PLU non trouve")." ".$id."");
1647 }
1648 }
1649
1650 function calcul_auto_servitude_surfacique($id,&$db,$geom,$projection){
1651 // recherche servitude surfacique
1652 $sql="select * from ".DB_PREFIXE."servitude_surfacique WHERE ST_contains(geom, geometryfromtext('".$geom."', ".$projection."))";
1653 $res=$db->query($sql);
1654 if (database:: isError($res)) die($res1->getMessage()."erreur ".$sql);
1655 $this->addToLog("requete :".$sql." executee ", VERBOSE_MODE);
1656 while ($row=& $res->fetchRow(DB_FETCHMODE_ASSOC)){
1657 // XXX SERVITUDE
1658 $this->addToMessage("<br>"._("servitude")." : ".$row['libelle']." - ".$row['observation']);
1659 $this->servitude.=" [".$row['libelle']."] ".$row['observation']." - ";
1660 }
1661 }
1662
1663 function calcul_auto_servitude_ligne($id,&$db,$geom,$projection){
1664 // recherche servitude ligne
1665 $sql="select * from ".DB_PREFIXE."servitude_ligne WHERE ST_contains(ST_buffer(geom, perimetre), geometryfromtext('".$geom."', ".$projection."))";
1666 $res=$db->query($sql);
1667 if (database:: isError($res)) die($res1->getMessage()."erreur ".$sql);
1668 $this->addToLog("requete :".$sql." executee ", VERBOSE_MODE);
1669 while ($row=& $res->fetchRow(DB_FETCHMODE_ASSOC)){
1670 // XXX SERVITUDE
1671 $this->addToMessage("<br>"._("contraintes")." : ".$row['libelle']." - ".$row['observation']);
1672 $this->servitude.=" [".$row['libelle']."] ".$row['observation']." - ";
1673 }
1674 }
1675
1676 function calcul_auto_servitude_point($id,&$db,$geom,$projection){
1677 // recherche servitude point
1678 $sql="select libelle,observation, perimetre, distance(geom, geometryfromtext('".$geom."', ".$projection.")) as distance from ".
1679 DB_PREFIXE."servitude_point WHERE distance(geom, geometryfromtext('".$geom."', ".$projection."))<perimetre";
1680 $res=$db->query($sql);
1681 if (database:: isError($res)) die($res1->getMessage()."erreur ".$sql);
1682 $this->addToLog("requete :".$sql." executee ", VERBOSE_MODE);
1683 while ($row=& $res->fetchRow(DB_FETCHMODE_ASSOC)){
1684 $this->addToMessage("<br>"._("contraintes")." : ".$row['libelle']." - ".$row['observation']." a ".round($row['distance'],2)." m ");
1685 // XXX SERVITUDE
1686 $this->servitude.=" [".$row['libelle']."] ".$row['observation']." a ".round($row['distance'],2)." m - ";
1687 }
1688 }
1689
1690 /**
1691 * Gestion des liens entre la demande et les demandeurs recemment ajoutés
1692 **/
1693 function insertLinkDemandeDemandeur($db, $DEBUG) {
1694 //
1695 require_once "../obj/lien_dossier_demandeur.class.php";
1696 // Sippression des anciens demandeurs
1697 $this->deleteLinkDossierDemandeur($db, $DEBUG);
1698
1699 // Ajout du pétitionnaire principal
1700 if(!empty($this->postedIdDemandeur['petitionnaire_principal'])) {
1701 $this->addLinkDossierDemandeur($this->postedIdDemandeur['petitionnaire_principal'], true, $db, $DEBUG);
1702 }
1703
1704 // Ajout du délégataire
1705 if(!empty($this->postedIdDemandeur['delegataire'])) {
1706 $this->addLinkDossierDemandeur($this->postedIdDemandeur['delegataire'], false, $db, $DEBUG);
1707 }
1708
1709 // Ajout des pétitionnaires
1710 if(isset($this->postedIdDemandeur['petitionnaire'])) {
1711 // Ajout des nouveaux liens
1712 foreach ($this->postedIdDemandeur['petitionnaire'] as $petitionnaire) {
1713 $this->addLinkDossierDemandeur($petitionnaire, false, $db, $DEBUG);
1714 }
1715 }
1716 }
1717
1718
1719 /**
1720 * Fonction permettant d'ajouter un lien
1721 * entre la table demande et demandeur
1722 **/
1723 function addLinkDossierDemandeur($id, $principal, $db, $DEBUG) {
1724 $lienAjout = new lien_dossier_demandeur(
1725 "]",
1726 $db,
1727 $DEBUG);
1728 $lien = array('lien_dossier_demandeur' => "",
1729 'petitionnaire_principal' => (($principal)?"t":"f"),
1730 'dossier' => $this->valF['dossier'],
1731 'demandeur' => $id);
1732 $lienAjout->ajouter($lien, $db, $DEBUG);
1733 $lienAjout->__destruct();
1734 }
1735
1736 /**
1737 * Fonction permettant de supprimer un lien
1738 * entre la table demande et demandeur
1739 **/
1740 function deleteLinkDossierDemandeur($db, $DEBUG) {
1741 // Suppression
1742 $sql = "DELETE FROM ".DB_PREFIXE."lien_dossier_demandeur ".
1743 "WHERE dossier='".$this->valF['dossier']."'";
1744 // Execution de la requete de suppression de l'objet
1745 $res = $db->query($sql);
1746 // Logger
1747 $this->f->addToLog("supprimer(): db->query(\"".$sql."\");", VERBOSE_MODE);
1748 if ( database::isError($res)){
1749 die();
1750 }
1751
1752 }
1753
1754 /**
1755 * Methode de recupération des valeurs postées
1756 **/
1757 function getPostedValues() {
1758 // Récupération des demandeurs dans POST
1759 if (isset($_POST['petitionnaire_principal']) OR
1760 isset($_POST['delegataire']) OR
1761 isset($_POST['petitionnaire'])) {
1762 if( isset($_POST['petitionnaire_principal']) AND
1763 !empty($_POST['petitionnaire_principal'])) {
1764 $this->postedIdDemandeur['petitionnaire_principal'] = $_POST['petitionnaire_principal'];
1765 }
1766 if( isset($_POST['delegataire']) AND
1767 !empty($_POST['delegataire'])) {
1768 $this->postedIdDemandeur['delegataire'] = $_POST['delegataire'];
1769 }
1770 if( isset($_POST['petitionnaire']) AND
1771 !empty($_POST['petitionnaire'])) {
1772 $this->postedIdDemandeur['petitionnaire'] = $_POST['petitionnaire'];
1773 }
1774 }
1775 }
1776
1777 /**
1778 * Méthode permettant de récupérer les id des demandeurs liés à la table
1779 * liée passée en paramètre
1780 *
1781 * @param string $from Table liée : "demande", "dossier", dossier_autorisation"
1782 * @param string $id Identifiant (clé primaire de la table liée en question)
1783 */
1784 function listeDemandeur($from, $id) {
1785 // Récupération des demandeurs de la base
1786 $sql = "SELECT demandeur.demandeur,
1787 demandeur.type_demandeur,
1788 lien_".$from."_demandeur.petitionnaire_principal
1789 FROM ".DB_PREFIXE."lien_".$from."_demandeur
1790 INNER JOIN ".DB_PREFIXE."demandeur
1791 ON demandeur.demandeur=lien_".$from."_demandeur.demandeur
1792 WHERE ".$from." = '".$id."'";
1793 $res = $this->f->db->query($sql);
1794 $this->f->addToLog("listeDemandeur(): db->query(\"".$sql."\")", VERBOSE_MODE);
1795 if ( database::isError($res)){
1796 die();
1797 }
1798 // Stockage du résultat dans un tableau
1799 while ($row=& $res->fetchRow(DB_FETCHMODE_ASSOC)){
1800 if ($row['petitionnaire_principal'] == 't' AND
1801 $row['type_demandeur']=="petitionnaire") {
1802 $this->valIdDemandeur['petitionnaire_principal']=$row['demandeur'];
1803 } elseif ($row['petitionnaire_principal'] == 'f' AND
1804 $row['type_demandeur']=="petitionnaire"){
1805 $this->valIdDemandeur['petitionnaire'][]=$row['demandeur'];
1806 } elseif ($row['type_demandeur']=="delegataire"){
1807 $this->valIdDemandeur['delegataire']=$row['demandeur'];
1808 }
1809 }
1810 }
1811
1812 /**
1813 * Récupère la liste des contraintes d'un dossier.
1814 * @param string $dossier Identifiant du dossier
1815 *
1816 * @return object Résultat de la requête
1817 */
1818 function getListContrainte($dossier) {
1819
1820 // Select
1821 $select = "SELECT dossier_contrainte.dossier_contrainte as dossier_contrainte_id,
1822 dossier_contrainte.texte_complete as dossier_contrainte_texte,
1823 dossier_contrainte.reference as dossier_contrainte_reference,
1824 contrainte.libelle as contrainte_libelle,
1825 contrainte.nature as contrainte_nature,
1826 contrainte.texte as contrainte_texte,
1827 contrainte.reference as contrainte_reference,
1828 lower(contrainte.groupe) as contrainte_groupe,
1829 lower(contrainte.sousgroupe) as contrainte_sousgroupe ";
1830
1831 // From
1832 $from = " FROM ".DB_PREFIXE."contrainte
1833 LEFT JOIN ".DB_PREFIXE."dossier_contrainte
1834 ON dossier_contrainte.contrainte = contrainte.contrainte ";
1835
1836 // Where
1837 $where = " WHERE dossier_contrainte.dossier = '".$dossier."' ";
1838
1839 // Si le paramètre "option_contrainte_di" est définit
1840 if ($this->f->getParameter('option_contrainte_di') != 'aucun') {
1841 // Ajoute la condition
1842 $where .= $this->f->traitement_condition_contrainte(
1843 $this->f->getParameter('option_contrainte_di'));
1844 }
1845
1846 // Tri
1847 $tri = " ORDER BY contrainte_groupe DESC, contrainte_sousgroupe,
1848 contrainte.no_ordre, contrainte.libelle ";
1849
1850 // Requête SQL
1851 $sql = $select.$from.$where.$tri;
1852 $res = $this->f->db->query($sql);
1853 $this->f->addToLog("listContrainte(): db->query(\"".$sql."\");", VERBOSE_MODE);
1854 $this->f->isDatabaseError($res);
1855
1856 // Retourne le résultat
1857 return $res;
1858 }
1859
1860 /**
1861 * Ajout de la liste des contraintes et des demandeurs
1862 */
1863 function formSpecificContent($maj) {
1864
1865 /**
1866 * Liste des contraintes
1867 */
1868 //
1869 $listContrainte = $this->getListContrainte($this->getVal('dossier'));
1870
1871 // Si le dossier possède des contraintes
1872 if ($listContrainte->numRows() != 0) {
1873
1874 // Affiche du fieldset
1875 printf("<div id=\"liste_contrainte\" class=\"demande_hidden_bloc\">");
1876 printf("<fieldset class=\"cadre ui-corner-all ui-widget-content col_12 startClosed\">");
1877 printf(" <legend class=\"ui-corner-all ui-widget-content ui-state-active\"
1878 id =\"fieldset_contraintes_liees\">"
1879 ._("dossier_contrainte")."</legend>");
1880 printf("<div class=\"fieldsetContent\" style=\"display: none;\">");
1881
1882 // Entête pour le groupe
1883 $groupeHeader = "
1884 <div class='dossier_contrainte_groupe'>
1885 <div class='dossier_contrainte_groupe_header'>
1886 <span class='name'>
1887 %s
1888 </span>
1889 </div>
1890 ";
1891
1892 // Entête pour le sous-groupe
1893 $sousgroupeHeader = "
1894 <div class='dossier_contrainte_sousgroupe'>
1895 <div class='dossier_contrainte_sousgroupe_header'>
1896 <span class='name'>
1897 %s
1898 </span>
1899 </div>
1900 ";
1901
1902 // Titres des colonnes
1903 $tableHeader = "
1904 <thead>
1905 <tr class='ui-tabs-nav ui-accordion ui-state-default tab-title'>
1906 <th class='title col-0 firstcol contrainte_th_texte_complete'>
1907 <span class='name'>
1908 "._('texte_complete')."
1909 </span>
1910 </th>
1911 <th class='title col-1 contrainte_th_reference'>
1912 <span class='name'>
1913 "._('reference')."
1914 </span>
1915 </th>
1916 <th class='title col-2 contrainte_th_nature'>
1917 <span class='name'>
1918 "._('nature')."
1919 </span>
1920 </th>
1921 </tr>
1922 </thead>
1923 ";
1924
1925 // Ligne de données
1926 $line = "
1927 <tr class='tab-data %s'>
1928 <td class='col-0 firstcol contrainte_th_texte_complete'>
1929 %s
1930 </td>
1931 <td class='col-1 contrainte_th_reference'>
1932 %s
1933 </td>
1934 <td class='col-2 contrainte_th_nature'>
1935 %s
1936 </td>
1937 ";
1938
1939 // Sauvegarde des données pour les comparer
1940 $lastRow = array();
1941 $lastRow['contrainte_groupe'] = 'empty';
1942 $lastRow['contrainte_sousgroupe'] = 'empty';
1943
1944 // Tant qu'il y a des résultats
1945 while($row = &$listContrainte->fetchRow(DB_FETCHMODE_ASSOC)) {
1946 // Si l'identifiant du groupe de la contrainte présente et
1947 // celle d'avant est différent
1948 if ($row['contrainte_groupe'] != $lastRow['contrainte_groupe']) {
1949
1950 // Si l'identifiant du groupe d'avant est vide
1951 if ($lastRow['contrainte_groupe'] != 'empty') {
1952 // Ferme le tableau
1953 printf("</table>");
1954 // Ferme le div
1955 printf("</div>");
1956 // Ferme le div
1957 printf("</div>");
1958 }
1959
1960 // Affiche le header du groupe
1961 printf($groupeHeader, $row['contrainte_groupe']);
1962 }
1963
1964 // Si l'identifiant du sous-groupe de la contrainte présente et
1965 // celle d'avant est différent
1966 // Ou qu'ils soient identique mais n'appartiennent pas au même groupe
1967 if ($row['contrainte_sousgroupe'] != $lastRow['contrainte_sousgroupe']
1968 || ($row['contrainte_sousgroupe'] == $lastRow['contrainte_sousgroupe']
1969 && $row['contrainte_groupe'] != $lastRow['contrainte_groupe'])) {
1970
1971 //
1972 if($row['contrainte_groupe'] == $lastRow['contrainte_groupe']) {
1973 // Si l'identifiant de la sous-groupe d'avant est vide
1974 if ($lastRow['contrainte_sousgroupe'] != 'empty') {
1975 // Ferme le tableau
1976 printf("</table>");
1977 // Ferme le div
1978 printf("</div>");
1979 }
1980 }
1981
1982 // Affiche le header du sous-groupe
1983 printf($sousgroupeHeader, $row['contrainte_sousgroupe']);
1984
1985 // Ouvre le tableau
1986 printf("<table id='sousgroupe_".$row['contrainte_sousgroupe']."' class='tab-tab dossier_contrainte_view'>");
1987
1988 // Affiche le header des données
1989 printf($tableHeader);
1990
1991 // Définis le style des lignes
1992 $style = 'odd';
1993 }
1994
1995 // Si toujours dans la même groupe et même sous-groupe,
1996 // on change le style de la ligne
1997 if ($row['contrainte_groupe'] == $lastRow['contrainte_groupe']
1998 && $row['contrainte_sousgroupe'] == $lastRow['contrainte_sousgroupe']) {
1999 // Définis le style
2000 $style = ($style=='even')?'odd':'even';
2001 }
2002
2003 // Affiche "Oui" ou "Non" pour le bouléen
2004 if ($row['dossier_contrainte_reference'] == 1
2005 || $row['dossier_contrainte_reference'] == "t"
2006 || $row['dossier_contrainte_reference'] == "Oui") {
2007 //
2008 $contrainte_reference = "Oui";
2009 } else {
2010 //
2011 $contrainte_reference = "Non";
2012 }
2013
2014 // Affiche les données
2015 printf($line, $style,
2016 $row['dossier_contrainte_texte'],
2017 $contrainte_reference,
2018 $row['contrainte_nature']
2019 );
2020
2021 // Sauvegarde les données
2022 $lastRow['contrainte_groupe'] = $row['contrainte_groupe'];
2023 $lastRow['contrainte_sousgroupe'] = $row['contrainte_sousgroupe'];
2024
2025 }
2026 // Ferme le tableau
2027 printf("</table>");
2028 // Ferme le sous-groupe
2029 printf("</div>");
2030 // Ferme le groupe
2031 printf("</div>");
2032
2033 printf("</div>");
2034
2035 printf("<div class=\"visualClear\"></div>");
2036 // Ferme le fieldset content
2037 printf("</div>");
2038 printf("</fieldset>");
2039 }
2040 /**
2041 * Fin Liste des contraintes
2042 */
2043
2044 /**
2045 * Liste des demandeurs
2046 */
2047 $this->listeDemandeur("dossier", $this->getVal('dossier'));
2048
2049 if($maj < 2 AND !$this->correct AND !$this->f->isUserQualificateur()) {
2050 $linkable = true;
2051 } else {
2052 $linkable = false;
2053 }
2054
2055 // Conteneur de la listes des demandeurs
2056 echo "<div id=\"liste_demandeur\" class=\"demande_hidden_bloc col_12\">";
2057 echo "<fieldset class=\"cadre ui-corner-all ui-widget-content startClosed\">";
2058 echo " <legend class=\"ui-corner-all ui-widget-content ui-state-active\">"
2059 ._("Petitionnaire")."</legend>";
2060 // Si des demandeurs sont liés à la demande
2061 require_once "../obj/petitionnaire.class.php";
2062 require_once "../obj/delegataire.class.php";
2063 // Affichage du bloc pétitionnaire principal / délégataire
2064 // L'ID DU DIV SUIVANT EST NECESSAIRE AU BON FONCTIONNEMENT DU JS
2065 echo "<div id=\"petitionnaire_principal_delegataire col_12\">";
2066 // Affichage de la synthèse
2067 if (isset ($this->valIdDemandeur["petitionnaire_principal"]) AND
2068 !empty($this->valIdDemandeur["petitionnaire_principal"])) {
2069 $demandeur = new petitionnaire(
2070 $this->valIdDemandeur["petitionnaire_principal"],
2071 $this->f->db,false);
2072 $demandeur -> afficherSynthese("petitionnaire_principal", $linkable);
2073 $demandeur -> __destruct();
2074 } elseif ( isset ($this->postedIdDemandeur["petitionnaire_principal"]) AND
2075 !empty($this->postedIdDemandeur["petitionnaire_principal"]) ) {
2076 $demandeur = new petitionnaire(
2077 $this->postedIdDemandeur["petitionnaire_principal"],
2078 $this->f->db,false);
2079 $demandeur -> afficherSynthese("petitionnaire_principal", $linkable);
2080 $demandeur -> __destruct();
2081 }
2082 // Si en édition de formulaire
2083 if($maj < 2 AND $linkable) {
2084 // Bouton d'ajout du pétitionnaire principal
2085 // L'ID DE L'INPUT SUIVANT EST NECESSAIRE AU BON FONCTIONNEMENT DU JS
2086 echo "<span id=\"add_petitionnaire_principal\"
2087 class=\"om-form-button add-16\">".
2088 _("Saisir le petitionnaire principal").
2089 "</span>";
2090 }
2091 // Bouton d'ajout du delegataire
2092 // L'ID DU DIV ET DE L'INPUT SUIVANT EST NECESSAIRE AU BON FONCTIONNEMENT DU JS
2093 echo "<div id=\"delegataire\">";
2094 // Affichage de la synthèse
2095 if (isset ($this->valIdDemandeur["delegataire"]) AND
2096 !empty($this->valIdDemandeur["delegataire"])) {
2097 $demandeur = new delegataire($this->valIdDemandeur["delegataire"],
2098 $this->f->db,false);
2099 $demandeur -> afficherSynthese("delegataire", $linkable);
2100 $demandeur -> __destruct();
2101 } elseif ( isset ($this->postedIdDemandeur["delegataire"]) AND
2102 !empty($this->postedIdDemandeur["delegataire"]) ) {
2103
2104 $demandeur = new delegataire($this->postedIdDemandeur["delegataire"],
2105 $this->f->db,false);
2106 $demandeur -> afficherSynthese("delegataire", $linkable);
2107 $demandeur -> __destruct();
2108 }
2109 if($maj < 2 AND $linkable) {
2110 echo "<span id=\"add_delegataire\"
2111 class=\"om-form-button add-16\">".
2112 _("Saisir un autre correspondant").
2113 "</span>";
2114 }
2115 echo "</div>";
2116 echo "<div class=\"both\"></div>";
2117 echo "</div>";
2118 // Bloc des pétitionnaires secondaires
2119 // L'ID DU DIV SUIVANT EST NECESSAIRE AU BON FONCTIONNEMENT DU JS
2120 echo "<div id=\"listePetitionnaires col_12\">";
2121
2122 // Affichage de la synthèse
2123 if (isset ($this->valIdDemandeur["petitionnaire"]) AND
2124 !empty($this->valIdDemandeur["petitionnaire"])) {
2125
2126 foreach ($this->valIdDemandeur["petitionnaire"] as $petitionnaire) {
2127 $demandeur = new petitionnaire($petitionnaire,
2128 $this->f->db,false);
2129 $demandeur -> afficherSynthese("petitionnaire", $linkable);
2130 $demandeur -> __destruct();
2131 }
2132
2133 } elseif ( isset ($this->postedIdDemandeur["petitionnaire"]) AND
2134 !empty($this->postedIdDemandeur["petitionnaire"]) ) {
2135 foreach ($this->postedIdDemandeur["petitionnaire"] as $petitionnaire) {
2136 $demandeur = new petitionnaire($petitionnaire,
2137 $this->f->db,false);
2138 $demandeur -> afficherSynthese("petitionnaire", $linkable);
2139 $demandeur -> __destruct();
2140 }
2141 }
2142 if ($maj < 2 AND $linkable) {
2143 // L'ID DE L'INPUT SUIVANT EST NECESSAIRE AU BON FONCTIONNEMENT DU JS
2144 echo "<span id=\"add_petitionnaire\"
2145 class=\"om-form-button add-16\">".
2146 _("Ajouter un petitionnaire")
2147 ."</span>";
2148 }
2149 echo "</div>";
2150 echo "</fieldset>";
2151 echo "</div>";
2152 /**
2153 * Fin liste des demandeurs
2154 */
2155 }
2156
2157 /**
2158 * Retourne le statut du dossier
2159 * @return string Le statut du dossier d'instruction
2160 */
2161 function getStatut(){
2162
2163 $statut = '';
2164
2165 $etat = $this->getVal("etat");
2166 //Si l'état du dossier d'instruction n'est pas vide
2167 if ( $etat != '' ){
2168
2169 $sql = "SELECT statut
2170 FROM ".DB_PREFIXE."etat
2171 WHERE etat ='".$etat."'";
2172 $statut = $this->db->getOne($sql);
2173 $this->f->addToLog("getStatut() : db->getOne(\"".$sql."\")", VERBOSE_MODE);
2174 if ( database::isError($statut)){
2175 die();
2176 }
2177 }
2178 return $statut;
2179 }
2180
2181 /**
2182 * Retourne l'identifiant du rapport d'instruction lié du dossier
2183 * @return string L'identifiant du rapport d'instruction lié du dossier
2184 */
2185 function getRapportInstruction(){
2186
2187 $rapport_instruction = '';
2188
2189 $sql = "SELECT rapport_instruction
2190 FROM ".DB_PREFIXE."rapport_instruction
2191 WHERE dossier_instruction ='".$this->getVal($this->clePrimaire)."'";
2192 $rapport_instruction = $this->db->getOne($sql);
2193 $this->f->addToLog("getStatut() : db->getOne(\"".$sql."\")", VERBOSE_MODE);
2194 if ( database::isError($rapport_instruction)){
2195 die();
2196 }
2197
2198 return $rapport_instruction;
2199 }
2200
2201 /**
2202 * Retourne l'identifiant des données techniques liées du dossier
2203 * @return string L'identifiant des données techniques liées du dossier
2204 */
2205 function getDonneesTechniques(){
2206
2207 $donnees_techniques = '';
2208
2209 $sql = "SELECT donnees_techniques
2210 FROM ".DB_PREFIXE."donnees_techniques
2211 WHERE dossier_instruction ='".$this->getVal($this->clePrimaire)."'";
2212 $donnees_techniques = $this->db->getOne($sql);
2213 $this->f->addToLog("getStatut() : db->getOne(\"".$sql."\")", VERBOSE_MODE);
2214 if ( database::isError($donnees_techniques)){
2215 die();
2216 }
2217
2218 return $donnees_techniques;
2219 }
2220
2221 /**
2222 * Surcharge du bouton retour afin de retourner sur la recherche de dossiers
2223 * d'instruction existant
2224 */
2225 function retour($premier = 0, $recherche = "", $tricol = "") {
2226
2227 echo "\n<a class=\"retour\" ";
2228 echo "href=\"";
2229 //
2230 if($this->getParameter("idx_dossier") != "") {
2231 echo "tab.php?";
2232 echo "obj=recherche_dossier";
2233
2234 } else {
2235 if($this->getParameter("retour")=="form" AND !($this->getParameter("validation")>0 AND $this->getParameter("maj")==2 AND $this->correct)) {
2236 echo "form.php?";
2237 } else {
2238 echo "tab.php?";
2239 }
2240 // Permet de retourner sur la bonne page
2241 if (isset($_GET['retourformulaire']) && $_GET['retourformulaire'] != '') {
2242 echo "obj=".$_GET['retourformulaire'];
2243 } else {
2244 echo "obj=".get_class($this);
2245 }
2246 if (isset($_GET['retourformulaire2']) && $_GET['retourformulaire2'] != '') {
2247 echo "&retourformulaire=".$_GET['retourformulaire2'];
2248 }
2249 if($this->getParameter("retour")=="form") {
2250 echo "&amp;idx=".$this->getParameter("idx");
2251 echo "&amp;idz=".$this->getParameter("idz");
2252 echo "&amp;action=3";
2253 }
2254 }
2255 echo "&amp;premier=".$this->getParameter("premier");
2256 echo "&amp;tricol=".$this->getParameter("tricol");
2257 echo "&amp;recherche=".$this->getParameter("recherche");
2258 echo "&amp;selectioncol=".$this->getParameter("selectioncol");
2259 echo "&amp;advs_id=".$this->getParameter("advs_id");
2260 echo "&amp;valide=".$this->getParameter("valide");
2261 //
2262 echo "\"";
2263 echo ">";
2264 //
2265 echo _("Retour");
2266 //
2267 echo "</a>\n";
2268
2269 }
2270
2271 /**
2272 * Permet de modifier le fil d'Ariane
2273 * @param string $ent Fil d'Ariane
2274 * @param array $val Valeurs de l'objet
2275 * @param intger $maj Mode du formulaire
2276 */
2277 function getFormTitle($ent) {
2278
2279 // Fil d'Ariane
2280 $ent = _("instruction")." -> "._("dossiers d'instruction");
2281
2282 // Si différent de l'ajout
2283 if($this->getParameter("maj") != 0) {
2284 // Si le champ dossier_libelle existe
2285 if (trim($this->getVal("dossier_libelle")) != '') {
2286 $ent .= " -> ".strtoupper($this->getVal("dossier_libelle"));
2287 }
2288 // Si le champ dossier existe
2289 if (trim($this->getVal("dossier")) != '') {
2290 $demandeur = $this->get_demandeur($this->getVal("dossier"));
2291 // Si le demandeur existe
2292 if (isset($demandeur) && trim($demandeur) != '') {
2293 $ent .= " ".mb_strtoupper($demandeur, "UTF-8");
2294 }
2295 }
2296 }
2297
2298 // Change le fil d'Ariane
2299 return $ent;
2300 }
2301
2302 /**
2303 * Récupère le demandeur du dossier
2304 * @return string Identifiant du dossier
2305 */
2306 private function get_demandeur($dossier) {
2307
2308 // init de la variable de retour
2309 $demandeur = '';
2310
2311 // Requête SQL
2312 $sql = "SELECT
2313 CASE WHEN demandeur.qualite='particulier'
2314 THEN TRIM(CONCAT(demandeur.particulier_nom, ' ', demandeur.particulier_prenom))
2315 ELSE TRIM(CONCAT(demandeur.personne_morale_raison_sociale, ' ', demandeur.personne_morale_denomination))
2316 END as demandeur
2317 FROM ".DB_PREFIXE."dossier
2318 LEFT JOIN ".DB_PREFIXE."lien_dossier_demandeur
2319 ON lien_dossier_demandeur.dossier=dossier.dossier
2320 AND lien_dossier_demandeur.petitionnaire_principal IS TRUE
2321 LEFT JOIN ".DB_PREFIXE."demandeur
2322 ON lien_dossier_demandeur.demandeur=demandeur.demandeur
2323 WHERE dossier.dossier ='".$dossier."'";
2324 $demandeur = $this->db->getOne($sql);
2325 $this->f->addToLog("get_demandeur() : db->getOne(\"".$sql."\")", VERBOSE_MODE);
2326 database::isError($demandeur);
2327
2328 // Résultat retourné
2329 return $demandeur;
2330 }
2331
2332 /**
2333 * Récupère la durée de validité
2334 * @param string $dossier_autorisation Identifiant dossier d'autorisation
2335 * @return intger Durée de validité
2336 */
2337 function get_duree_validite($dossier_autorisation) {
2338
2339 // init de la variable de retour
2340 $duree_validite = "";
2341
2342 // Récupère le numéro de version
2343 $numeroVersion = $this->getNumeroVersion($dossier_autorisation);
2344
2345 // Si c'est l'ajout du dossier initial
2346 if ($numeroVersion < 0) {
2347
2348 // Récupération de la duree de validite depuis la table
2349 // "dossier_autorisation_type_detaille"
2350 $sql = "SELECT duree_validite_parametrage
2351 FROM ".DB_PREFIXE."dossier_autorisation_type_detaille
2352 LEFT JOIN ".DB_PREFIXE."dossier_autorisation
2353 ON dossier_autorisation.dossier_autorisation_type_detaille = dossier_autorisation_type_detaille.dossier_autorisation_type_detaille
2354 WHERE dossier_autorisation.dossier_autorisation='".$dossier_autorisation."'";
2355 $duree_validite = $this->db->getOne($sql);
2356 $this->f->addToLog("get_duree_validite(): db->getOne(\"".$sql."\");", VERBOSE_MODE);
2357 database::isError($duree_validite);
2358
2359 } else {
2360
2361 // Récupération de la duree de validite depuis le P0
2362 $sql = "SELECT duree_validite
2363 FROM ".DB_PREFIXE."dossier
2364 LEFT JOIN ".DB_PREFIXE."dossier_autorisation
2365 ON dossier_autorisation.dossier_autorisation = dossier.dossier_autorisation
2366 WHERE dossier_autorisation.dossier_autorisation='".$dossier_autorisation."'
2367 AND dossier.version = 0";
2368 $duree_validite = $this->db->getOne($sql);
2369 $this->f->addToLog("get_duree_validite(): db->getOne(\"".$sql."\");", VERBOSE_MODE);
2370 database::isError($duree_validite);
2371 }
2372
2373 // retourne le résultat
2374 return $duree_validite;
2375
2376 }
2377
2378 /**
2379 * Ajoute les parcelles du dossier passé en paramètre et met à jour le
2380 * quartier du dossier.
2381 * @param string $dossier Identifiant du dossier
2382 * @param string $terrain_references_cadastrales Références cadastrales du
2383 * dossier
2384 */
2385 function ajouter_dossier_parcelle($dossier, $terrain_references_cadastrales) {
2386
2387 // Parse les parcelles
2388 $list_parcelles = $this->f->parseParcelles($terrain_references_cadastrales);
2389
2390 // Fichier requis
2391 require_once "../obj/dossier_parcelle.class.php";
2392
2393 // A chaque parcelle une nouvelle ligne est créée dans la table
2394 // dossier_parcelle
2395 foreach ($list_parcelles as $parcelle) {
2396
2397 // Instance de la classe dossier_parcelle
2398 $dossier_parcelle = new dossier_parcelle("]", $this->db, DEBUG);
2399
2400 // Valeurs à sauvegarder
2401 $value = array(
2402 'dossier_parcelle' => '',
2403 'dossier' => $dossier,
2404 'parcelle' => '',
2405 'libelle' => $parcelle['quartier']
2406 .$parcelle['section']
2407 .$parcelle['parcelle']
2408 );
2409
2410 // Ajout de la ligne
2411 $dossier_parcelle->ajouter($value, $this->db, DEBUG);
2412 }
2413
2414 // Si la liste des parcelles n'est pas vide
2415 if (count($list_parcelles) > 0) {
2416
2417 // Récupère le code impôt de la première référence cadastrale
2418 $quartier_code_impots = $list_parcelles[0]['quartier'];
2419 // Récupère l'identifiant du quartier
2420 $quartier = $this->get_quartier_by_code_impot($quartier_code_impots);
2421
2422 // Ajoute le quartier au dossier
2423 $this->modifier_quartier_dossier($dossier, $quartier);
2424 }
2425 }
2426
2427 /**
2428 * Supprime les parcelles du dossier passé en paramètre et met à jour le
2429 * quartier du dossier.
2430 * @param string $dossier Identifiant du dossier
2431 */
2432 function supprimer_dossier_parcelle($dossier) {
2433
2434 // Suppression des parcelles du dossier
2435 $sql = "DELETE FROM ".DB_PREFIXE."dossier_parcelle
2436 WHERE dossier='".$dossier."'";
2437 $res = $this->db->query($sql);
2438 $this->addToLog("supprimer_dossier_parcelle() db->query(\"".$sql."\");",
2439 VERBOSE_MODE);
2440 database::isError($res);
2441
2442 // Supprime le quartier dans dossier
2443 $this->modifier_quartier_dossier($dossier);
2444 }
2445
2446 /**
2447 * Modifie le quartier au dossier.
2448 * @param string $dossier Numéro du dossier
2449 * @param integer $quartier Identifiant du quartier
2450 */
2451 function modifier_quartier_dossier($dossier, $quartier = null) {
2452
2453 // Valeurs à mettre à jour
2454 $valF = array();
2455 $valF['quartier'] = $quartier;
2456
2457 // Met à jour le quartier du dossier
2458 $cle = " dossier='".$dossier."'";
2459 $res = $this->db->autoExecute(
2460 DB_PREFIXE.'dossier', $valF, DB_AUTOQUERY_UPDATE, $cle);
2461 $this->addToLog("ajouter_quartier_dossier(): db->autoexecute(\""
2462 .DB_PREFIXE."dossier\", ".print_r($valF, true)
2463 .", DB_AUTOQUERY_UPDATE, \"".$cle."\");", VERBOSE_MODE);
2464 $this->f->isDatabaseError($res);
2465 }
2466
2467 /**
2468 * Récupère le quartier par rapport au code impôts.
2469 * @param string $code_impots Code impôts du quartier
2470 *
2471 * @return integer Identifiant du quartier
2472 */
2473 function get_quartier_by_code_impot($code_impots) {
2474
2475 // Initialisation résultat
2476 $quartier = null;
2477
2478 // Si la condition n'est pas vide
2479 if ($code_impots != ""
2480 && $code_impots != null) {
2481
2482 // Requête SQL
2483 $sql = "SELECT quartier
2484 FROM ".DB_PREFIXE."quartier
2485 WHERE code_impots = '".$code_impots."'";
2486 $this->f->addToLog(
2487 "get_quartier_by_code_impots() : db->getOne(\"".$sql."\")",
2488 VERBOSE_MODE);
2489 $quartier = $this->db->getOne($sql);
2490 $this->f->isDatabaseError($quartier);
2491 }
2492
2493 // Retourne résultat
2494 return $quartier;
2495 }
2496
2497 }// fin classe
2498 ?>

Properties

Name Value
svn:keywords Id

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26