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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2313 - (show annotations)
Wed Sep 18 15:31:34 2013 UTC (11 years, 4 months ago) by softime
File size: 84996 byte(s)
- Ajout du contrôle de l'option SIG pour les liens vers le plan sig dans le formulaire des DI et sur le bouton de récupération de l'adresse lors de l'ajout d'une nouvelle demande.
- Modification des tests du guichet unique pour activer l'option SIG afin d'avoir le bouton de récupération de l'adresse + modification d'ordre de passage des tests pour que le test qui provoque l'erreur sur l'Alert qui n'est toujours pas résolus, ne provoque pas l'erreur des tests suivant.

1 <?php
2 //$Id$
3 //gen openMairie le 10/02/2011 20:39
4
5 require_once ("../gen/obj/dossier.class.php");
6 require_once("../services/outgoing/messageenqueuer.php");
7
8 class dossier extends dossier_gen {
9
10 var $maj;
11 var $sig;
12 var $servitude="";
13 var $auto_pos;
14 var $auto_servitude_surfacique;
15 var $auto_servitude_ligne;
16 var $auto_servitude_point;
17 var $auto_parcelle;
18 var $auto_parcelle_lot;
19 var $aff_depot = "collapsible";
20 var $aff_travaux = "collapsible";
21 var $aff_instruction = "collapsible";
22 var $aff_demandeur = "startClosed";
23 var $aff_delegataire = "startClosed";
24 var $aff_terrain = "startClosed";
25 var $aff_localisation = "collapsible";
26 var $aff_description = "startClosed";
27 var $aff_amenagement = "startClosed";
28 var $dossier_instruction_type;
29 var $valIdDemandeur = array("petitionnaire_principal" => "",
30 "delegataire" => "",
31 "petitionnaire" => array());
32 var $postedIdDemandeur = array("petitionnaire_principal" => "",
33 "delegataire" => "",
34 "petitionnaire" => array());
35
36 function dossier($id,&$db,$DEBUG) {
37 $this->constructeur($id,$db,$DEBUG);
38 } // fin constructeur
39
40 /*Mutateur pour ma variable dossier_instruction_type*/
41 public function getDossierInstructionType(){
42 return $this->dossier_instruction_type;
43 }
44 public function setDossierInstructionType($dossier_instruction_type){
45 $this->dossier_instruction_type = $dossier_instruction_type;
46 }
47
48 // {{{ Gestion de la confidentialité des données spécifiques
49
50 /**
51 * Surcharge pour gérer les actions disponibles dans le portlet
52 */
53 function checkAccessibility() {
54 //
55 parent::checkAccessibility();
56 // Si l'utilisateur est un intructeur qui en correspond pas à la
57 // division du dossier
58 if ($this->f->isUserInstructeur()
59 && isset($this->f->om_utilisateur["division"])
60 && $this->f->om_utilisateur["division"] != $this->getDivisionFromDossier()) {
61 //
62 $this->parameters["actions"]["modifier"] = NULL;
63
64 //Cache le lien du rapport d'instruction, si aucun n'est lié
65 if ( $this->getRapportInstruction() == '' ){
66
67 $this->actions_sup['rapport_instruction'] = NULL;
68 }
69
70 //Cache le lien des données techniques, si aucun n'est lié
71 if ( $this->getDonneesTechniques() == '' ){
72
73 $this->actions_sup['donnees_techniques'] = NULL;
74 }
75 }
76
77 //Si l'utilisateur est un instructeur et le dossier d'instruction est clôturé,
78 //il n'est plus possible de le modifier, on affiche pas le lien de modification du
79 //portlet
80 if ( $this->f->isUserInstructeur() && $this->getStatut() == "cloture" ){
81
82 $this->parameters["actions"]["modifier"] = NULL;
83
84 //Cache le lien du rapport d'instruction, si aucun n'est lié
85 if ( $this->getRapportInstruction() == '' ){
86
87 $this->actions_sup['rapport_instruction'] = NULL;
88 }
89
90 //Cache le lien des données techniques, si aucun n'est lié
91 if ( $this->getDonneesTechniques() == '' ){
92
93 $this->actions_sup['donnees_techniques'] = NULL;
94 }
95 }
96
97 // Si l'option sig n'est pas réglé sur 'sig_externe',
98 // l'action géolocalisation n'est pas affiché
99 if ($this->f->getParameter('option_sig') != 'sig_externe') {
100 //
101 $this->actions_sup["geolocalisation"] = NULL;
102 }
103 }
104
105 /**
106 * Cette methode est à surcharger elle permet de tester dans chaque classe
107 * des droits des droits spécifiques en fonction des données
108 */
109 function canAccess() {
110 // Si l'utilisateur est un intructeur qui ne correspond pas à la
111 // division du dossier
112 if ($this->f->isUserInstructeur()
113 && $this->f->om_utilisateur["division"] != $this->getDivisionFromDossier()
114 && $this->getParameter("maj") != 3) {
115 //
116 return false;
117 }
118 // Si l'utilisateur est un instructeur et que le dossier est cloturé
119 if ( $this->f->isUserInstructeur() && $this->getStatut() == "cloture"
120 && $this->getParameter("maj") != 3) {
121
122 return false;
123 }
124 //
125 return true;
126 }
127
128 /**
129 * Cette variable permet de stocker le résultat de la méthode
130 * getDivisionFromDossier() afin de ne pas effectuer le recalcul à chacun de
131 * ces appels.
132 * @var string Code de la division du dossier en cours
133 */
134 var $_division_from_dossier = NULL;
135
136 /**
137 * Cette méthode permet de récupérer le code de division correspondant
138 * au dossier sur lequel on se trouve.
139 *
140 * @return string Code de la division du dossier en cours
141 */
142 function getDivisionFromDossier() {
143
144 // Cette méthode peut être appelée plusieurs fois lors d'une requête.
145 // Pour éviter de refaire le traitement de recherche de la division
146 // alors on vérifie si nous ne l'avons pas déjà calculé.
147 if ($this->_division_from_dossier != NULL) {
148 // Logger
149 $this->addToLog("getDivisionFromDossier(): retour de la valeur déjà calculée - '".$this->_division_from_dossier."'", EXTRA_VERBOSE_MODE);
150 // On retourne la valeur déjà calculée
151 return $this->_division_from_dossier;
152 }
153
154 // Par défaut, on définit la valeur du dossier à NULL
155 $dossier = NULL;
156 // Test sur le mode et le contexte du formulaire
157 if ($this->getParameter("maj") == 0
158 && ($this->getParameter("retourformulaire") == "dossier"
159 || $this->getParameter("retourformulaire") == "dossier_instruction"
160 || $this->getParameter("retourformulaire") == "dossier_instruction_mes_encours"
161 || $this->getParameter("retourformulaire") == "dossier_instruction_tous_encours"
162 || $this->getParameter("retourformulaire") == "dossier_instruction_mes_clotures"
163 || $this->getParameter("retourformulaire") == "dossier_instruction_tous_clotures")) {
164 // Si on se trouve en mode AJOUT (seul mode où l'enregistrement
165 // n'existe pas en base de données) ET que nous nous trouvons
166 // dans le contexte d'un dossier d'instruction alors on récupère
167 // le numéro de dossier depuis le paramètre 'idxformulaire'
168 $dossier = $this->getParameter("idxformulaire");
169 } else {
170 // Sinon on récupère le numéro de dossier dans le champs dossier de
171 // l'enregistrement (en base de données)
172 $dossier = $this->getVal("dossier");
173 }
174
175 // On appelle la méthode de la classe utils qui renvoi le code de la
176 // division d'un dossier, on la stocke pour ne pas refaire le calcul au
177 // prochain appel de cette méthode
178 $this->_division_from_dossier = $this->f->getDivisionFromDossier($dossier);
179 // Logger
180 $this->addToLog("getDivisionFromDossier(): retour de la valeur nouvellement calculée - '".$this->_division_from_dossier."'", EXTRA_VERBOSE_MODE);
181 // On retourne la valeur retournée
182 return $this->_division_from_dossier;
183
184 }
185
186 // }}}
187 /*
188 * Ajoute un numéro au dossier
189 *
190 */
191 function setValFAjout($val = array()) {
192
193 //Récupération de la lettre associé au type de dossier d'instruction
194 $code = $this->getCode($this->getDossierInstructionType());
195
196 //Récupération de la valeur du suffixe ce dossier_instruction_type
197 $suffixe = $this->getSuffixe($this->getDossierInstructionType());
198
199 //S'il est à TRUE, on récupère le numéro de version du dossier d'autorisation
200 $numeroVersion = "";
201 $numeroVersionDIT = "";
202 if ( $suffixe == 't' ){
203
204 //Récupération du numéro de version
205 $numeroVersion = $this->getNumeroVersion($val['dossier_autorisation']);
206
207 //Incrémentation du numéro de version
208 if ( is_numeric($numeroVersion) or $numeroVersion == -1 ){
209
210 $this->incrementNumeroVersion($val['dossier_autorisation'], ++$numeroVersion);
211 }
212 //Récupération du numéro de version en fonction du type de dossier d'instruction
213 //Si c'est un modificatif ou un transfert, on utilise un numéro du type
214 // 01 ou 02, etc. sinon on utilise le numéro de version comme auparavant
215 $numeroVersionDossierInstructionType = $this->getNumeroVersionDossierInstructionType($val['dossier_autorisation'], $val['dossier_instruction_type'], $numeroVersion);
216 }
217
218 //Création du numéro de dossier
219 $this->valF['dossier'] = $val['dossier_autorisation'].$code.$numeroVersionDossierInstructionType;
220 $this->valF['version'] = $numeroVersion;
221
222 // Identifiant du dossier d'instruction lisible
223 // Ex : DP 013055 13 00002P0
224 $this->valF['dossier_libelle'] = $this->get_dossier_autorisation_libelle($val['dossier_autorisation']).$code.$numeroVersionDossierInstructionType;
225 }
226
227 /*Récupère la valeur du suffixe d'un dossier_instruction_type*/
228 function getSuffixe($dossierInstructionType){
229
230 $suffixe = "";
231
232 $sql = "SELECT
233 suffixe
234 FROM
235 ".DB_PREFIXE."dossier_instruction_type
236 WHERE
237 dossier_instruction_type = $dossierInstructionType";
238
239 $this->addToLog("getSuffixe(): db->query(\"".$sql."\")", VERBOSE_MODE);
240 $res = $this->db->query($sql);
241 if (database :: isError($res))
242 die($res->getMessage()."erreur ".$sql);
243
244 if ( $res->numRows() > 0 ){
245
246 $row = $res->fetchRow(DB_FETCHMODE_ASSOC);
247 $suffixe = $row['suffixe'];
248 }
249
250 return $suffixe;
251 }
252
253 /*Récupère dans la table de paramètrage la lettre correspondant
254 * au dossier_instruction_type
255 */
256 function getCode($dossierInstructionType){
257
258 $code = "";
259
260 $sql = "SELECT
261 code
262 FROM
263 ".DB_PREFIXE."dossier_instruction_type
264 WHERE
265 dossier_instruction_type = $dossierInstructionType";
266
267 $this->addToLog("getCode(): db->query(\"".$sql."\")", VERBOSE_MODE);
268 $res = $this->db->query($sql);
269 if (database :: isError($res))
270 die($res->getMessage()."erreur ".$sql);
271
272 if ( $res->numRows() > 0 ){
273
274 $row = $res->fetchRow(DB_FETCHMODE_ASSOC);
275 $code = $row['code'];
276 }
277
278 return $code;
279 }
280
281 /*Récupère le numéro de version d'un dossier_autorisation*/
282 function getNumeroVersion($dossierAutorisation){
283
284 $numeroVersion = "";
285
286 $sql = "SELECT
287 numero_version
288 FROM
289 ".DB_PREFIXE."dossier_autorisation
290 WHERE
291 dossier_autorisation = '$dossierAutorisation'";
292
293 $this->addToLog("getNumeroVersion(): db->query(\"".$sql."\")", VERBOSE_MODE);
294 $res = $this->db->query($sql);
295 if (database :: isError($res))
296 die($res->getMessage()."erreur ".$sql);
297
298 if ( $res->numRows() > 0 ){
299
300 $row = $res->fetchRow(DB_FETCHMODE_ASSOC);
301 $numeroVersion = $row['numero_version'];
302 }
303
304 return $numeroVersion;
305 }
306
307 /*Incrémente le numéro de version du dossier*/
308 function incrementNumeroVersion($dossierAutorisation, $nouveauNumeroVersion) {
309
310 $valF = array (
311 "numero_version" => $nouveauNumeroVersion
312 );
313
314 $res = $this->db->autoExecute(DB_PREFIXE."dossier_autorisation",
315 $valF,
316 DB_AUTOQUERY_UPDATE,
317 "dossier_autorisation = '$dossierAutorisation'");
318
319 if (database :: isError($res))
320 die($res->getMessage()."erreur ".$sql);
321
322 }
323
324 /**
325 * Retourne un numéro de version en fonction du type de dossier d'instruction
326 * @param string $dossier_autorisation
327 * @param integer $dossier_instruction_type
328 * @return int
329 */
330 public function getNumeroVersionDossierInstructionType($dossier_autorisation, $dossier_instruction_type, $numero_version, $increment = true){
331
332 $numeroVersionDossierInstructionType = $numero_version;
333
334 //On récupère le code correspondant au type de dossier d'instruction passé
335 //en paramètre
336 $sql = "SELECT
337 code
338 FROM
339 ".DB_PREFIXE."dossier_instruction_type
340 WHERE
341 dossier_instruction_type = ".$dossier_instruction_type;
342 $codeDossierInstructionType = $this->db->getOne($sql);
343 $this->f->addToLog("getNumeroVersionDossierInstructionType(): db->getOne(\"".$sql."\")", VERBOSE_MODE);
344 if ( database::isError($codeDossierInstructionType)){
345 $this->f->addToError("", $codeDossierInstructionType, $codeDossierInstructionType);
346 return false;
347 }
348
349
350 // Si c'est un dossier d'instruction de type "Initial", code "P", on retourne 0
351 if ( strcmp($codeDossierInstructionType, "P") == 0 ){
352 return 0;
353 }
354 //Si c'est un modificatif ou transfert on retourne un nombre correspondant au
355 //nombre de dossier d'instruction de ce type, rattaché au dossier
356 //d'autorisation complété par des 0 à gauche si besoin. Format du retour
357 //attendu : 01 ou 02, etc.
358 elseif ( strcmp($codeDossierInstructionType, "M") == 0 ||
359 strcmp($codeDossierInstructionType, "T") == 0 ){
360
361 //On récupère le nombre de dossier d'instruction de ce type rattaché au
362 //dossier d'autorisation
363 $sql = "SELECT
364 count(*)
365 FROM
366 ".DB_PREFIXE."dossier
367 LEFT JOIN
368 ".DB_PREFIXE."dossier_autorisation
369 ON
370 dossier_autorisation.dossier_autorisation = dossier.dossier_autorisation
371 WHERE
372 dossier_autorisation.dossier_autorisation = '".$dossier_autorisation."'
373 AND
374 dossier.dossier_instruction_type = ".$dossier_instruction_type;
375 $numeroVersionDossierInstructionType = $this->db->getOne($sql);
376 $this->f->addToLog("getNumeroVersionDossierInstructionType(): db->getOne(\"".$sql."\")", VERBOSE_MODE);
377 if ( database::isError($numeroVersionDossierInstructionType)){
378 $this->f->addToError("", $numeroVersionDossierInstructionType, $numeroVersionDossierInstructionType);
379 return false;
380 }
381
382 //
383 if ($increment === true) {
384 $numeroVersionDossierInstructionType = ++$numeroVersionDossierInstructionType;
385 }
386 //On compléte par des 0 à gauche
387 $numeroVersionDossierInstructionType = str_pad($numeroVersionDossierInstructionType, 2, "0", STR_PAD_LEFT);
388
389 return $numeroVersionDossierInstructionType;
390 }
391 //Sinon on retourne le numéro de version
392 else{
393 return $numeroVersionDossierInstructionType;
394 }
395 }
396 /**
397 * Retourne le libellé du dossier d'autorisation
398 * @param string $dossier_autorisation Identifiant du dossier d'autorisation
399 * @return string Libellé dossier d'autorisation
400 */
401 function get_dossier_autorisation_libelle($dossier_autorisation) {
402
403 $dossier_autorisation_libelle = "";
404
405 // Requête SQL
406 $sql = "SELECT
407 dossier_autorisation_libelle
408 FROM
409 ".DB_PREFIXE."dossier_autorisation
410 WHERE
411 dossier_autorisation = '$dossier_autorisation'";
412
413 $dossier_autorisation_libelle = $this->db->getOne($sql);
414 $this->addToLog("get_dossier_autorisation_libelle(): db->getOne(\"".$sql."\")", VERBOSE_MODE);
415 database::isError($dossier_autorisation_libelle);
416
417 // Retourne le résultat
418 return $dossier_autorisation_libelle;
419 }
420
421 function setvalF($val){
422 parent::setvalF($val);
423
424 // Récupération des id demandeurs postés
425 $this->getPostedValues();
426
427 // enlever les valeurs a ne pas saisir -> recherche en trigger ajouter et modifier
428 // $sig = 1
429 unset ($this->valF['geom']);
430 unset ($this->valF['geom1']);
431 // valeurs hiddenstatic (calcule)
432 if($this->maj==1){
433 // par defaut
434 unset ($this->valF['etat']);
435 unset ($this->valF['delai']);
436 unset ($this->valF['accord_tacite']);
437 }
438 unset ($this->valF['avis_decision']); // avis + libelle avis
439 unset ($this->valF['terrain_surface_calcul']);
440 unset ($this->valF['shon_calcul']);
441 unset ($this->valF['parcelle_archive']);
442 unset ($this->valF['parcelle_lot_archive']);
443 unset ($this->valF['date_notification_delai']);
444 unset ($this->valF['date_decision']);
445 unset ($this->valF['date_limite']);
446 unset ($this->valF['date_validite']);
447 unset ($this->valF['date_chantier']);
448 unset ($this->valF['date_achevement']);
449 unset ($this->valF['date_conformite']);
450
451 // Durée de validaité lors de la création du dossier d'instruction
452 $this->valF['duree_validite'] = $this->get_duree_validite($this->valF['dossier_autorisation']);
453 }
454
455 /*Vérification des données saisies*/
456 function verifier($val,&$db,$DEBUG){
457 parent::verifier($val,$db,$DEBUG);
458 if(!isset($this->postedIdDemandeur["petitionnaire_principal"]) OR
459 empty($this->postedIdDemandeur["petitionnaire_principal"])) {
460 $this->correct = false;
461 $this->addToMessage(_("La saisie d'un petitionnaire principal est obligatoire."));
462 }
463 if($val['parcelle']!="" and $val['sig']!='Oui'){
464 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'])){
465 $this->correct=false;
466 $this->addToMessage("<br>format parcelle incorrect");
467 }
468 }
469 }//verifier
470
471
472 function setType(&$form,$maj) {
473 parent::setType($form,$maj);
474 $form->setType('dossier','hidden');
475 $form->setType('amenagement','hidden'); // PC
476 $form->setType('parcelle_lot','hidden'); // PC
477 $form->setType('parcelle_lot_lotissement','hidden'); // PC
478 $form->setType('version','hidden'); // PC
479 $form->setType('incompletude','hidden');
480 $form->setType('evenement_suivant_tacite','hidden');
481 $form->setType('evenement_suivant_tacite_incompletude','hidden');
482 $form->setType('etat_pendant_incompletude','hidden');
483 $form->setType('duree_validite','hidden');
484 if ($maj < 2) { //ajouter et modifier
485 // cache
486 if($maj==0) $form->setType('dossier_libelle', 'hidden');
487 $form->setType('annee', 'hidden');
488 $form->setType('parcelle_archive','hidden');
489 $form->setType('parcelle_lot_archive','hidden');
490
491 $form->setType('geom1', 'hidden');
492 $form->setType('geom', 'hiddenstatic');
493 $form->setType('servitude', 'hiddenstatic');
494
495
496 // hiddenstatic
497 if($maj==1) $form->setType('dossier_libelle', 'hiddenstatic');
498 $form->setType('etat','hiddenstatic');
499 $form->setType('avis_decision','hiddenstatic');
500 $form->setType('delai_incompletude','hiddenstatic');
501 $form->setType('delai','hiddenstatic');
502 $form->setType('terrain_surface_calcul','hiddenstatic');
503 $form->setType('shon_calcul','hiddenstatic');
504
505 $form->setType('accord_tacite','hiddenstatic');
506
507
508 // hiddenstaticdate
509 $form->setType('date_notification_delai','hiddenstaticdate');
510 $form->setType('date_decision','hiddenstaticdate');
511 $form->setType('date_limite','hiddenstaticdate');
512 $form->setType('date_rejet','hiddenstaticdate');
513 $form->setType('date_complet','hiddenstaticdate');
514 $form->setType('date_limite','hiddenstaticdate');
515 $form->setType('date_validite','hiddenstaticdate');
516 $form->setType('date_chantier','hiddenstaticdate');
517 $form->setType('date_achevement','hiddenstaticdate');
518 $form->setType('date_conformite','hiddenstaticdate');
519 $form->setType('date_limite_incompletude','hiddenstaticdate');
520
521 $form->setType('date_demande','hiddenstaticdate');
522 $form->setType('date_depot','hiddenstaticdate');
523 $form->setType('date_dernier_depot','hiddenstaticdate');
524
525 // checkbox
526 $form->setType('sig','checkbox');
527
528 // zones temp et strategysig
529
530
531 // temp
532 if (file_exists ("../dyn/var.inc"))
533 include ("../dyn/var.inc");
534 if(!isset($auto_pos))
535 $auto_pos=0;
536 if($auto_pos==1)
537 $form->setType('pos','hiddenstatic');
538 else
539 $form->setType('pos','select');
540 $form->setType('temp1',$temp1_type);
541 $form->setType('temp2',$temp2_type);
542 $form->setType('temp3',$temp3_type);
543 $form->setType('temp4',$temp4_type);
544 $form->setType('temp5',$temp5_type);
545 $form->setType('a_qualifier', 'checkbox');
546
547 $form->setType('parcelle', 'hidden');
548 $form->setType('pos', 'hidden');
549 $form->setType('sig', 'hidden');
550 $form->setType('batiment_nombre', 'hidden');
551 $form->setType('logement_nombre', 'hidden');
552 $form->setType('hauteur', 'hidden');
553 $form->setType('piece_nombre', 'hidden');
554 $form->setType('shon', 'hidden');
555 $form->setType('shon_calcul', 'hidden');
556 $form->setType('shob', 'hidden');
557 $form->setType('lot', 'hidden');
558 }
559 if ($maj == 1) {
560 //
561 if ($this->f->isAccredited("dossier_modifier_instructeur")) {
562 $form->setType('instructeur', 'select');
563 } else {
564 $form->setType('instructeur', 'selecthiddenstatic');
565 }
566 //
567 if($this->f->getParameter('afficher_division') === 'true') {
568 //
569 if ($this->f->isAccredited("dossier_modifier_division")) {
570 $form->setType('division', 'select');
571 } else {
572 $form->setType('division', 'selecthiddenstatic');
573 }
574 } else {
575 $form->setType('division', 'hidden');
576 }
577 }
578 if($maj == 3) {
579 $form->setType('annee', 'hidden');
580 $form->setType('temp1','hidden');
581 $form->setType('temp2','hidden');
582 $form->setType('temp3','hidden');
583 $form->setType('temp4','hidden');
584 $form->setType('temp5','hidden');
585 $form->setType('parcelle_archive','hidden');
586 $form->setType('parcelle_lot_archive','hidden');
587 $form->setType('geom1','hidden');
588 $form->setType('geom','static');
589 $form->setType('a_qualifier', 'checkboxstatic');
590 $form->setType('terrain_references_cadastrales','referencescadastralesstatic'); // PC
591 $form->setType('parcelle', 'hidden');
592 $form->setType('pos', 'hidden');
593 $form->setType('sig', 'hidden');
594 $form->setType('batiment_nombre', 'hidden');
595 $form->setType('logement_nombre', 'hidden');
596 $form->setType('hauteur', 'hidden');
597 $form->setType('piece_nombre', 'hidden');
598 $form->setType('shon', 'hidden');
599 $form->setType('shon_calcul', 'hidden');
600 $form->setType('shob', 'hidden');
601 $form->setType('lot', 'hidden');
602 }
603
604 // Le profil Qualificateur ne peut modifier seulement les champs
605 // autorite_competente, a_qualifier et erp
606 if ($this->f->isUserQualificateur()) {
607
608 // En modification
609 if ($maj == 1) {
610
611 $form->setType('numero_versement_archive', 'static');
612 $form->setType('enjeu_urba', 'checkboxstatic');
613 $form->setType('enjeu_erp', 'checkboxstatic');
614 $form->setType('description','textareastatic');
615 $form->setType('terrain_references_cadastrales','referencescadastralesstatic');
616 $form->setType('terrain_adresse_voie_numero','static');
617 $form->setType('terrain_adresse_voie','static');
618 $form->setType('terrain_adresse_lieu_dit','static');
619 $form->setType('terrain_adresse_localite','static');
620 $form->setType('terrain_adresse_code_postal','static');
621 $form->setType('terrain_adresse_bp','static');
622 $form->setType('terrain_adresse_cedex','static');
623 $form->setType('terrain_superficie','static');
624 }
625 }
626
627 //
628 if(!$this->f->getParameter('afficher_division') === 'true') {
629 $form->setType('division', 'hidden');
630 }
631 $form->setType('dossier_autorisation', 'hidden');
632 $form->setType('dossier_autorisation_libelle', 'hiddenstatic');
633 $form->setType('dossier_instruction_type', 'selecthiddenstatic');
634 //
635 if ($maj == 0) {
636 $form->setType('dossier_autorisation', 'select');
637 }
638 // On cache enjeu_ERP si l'option n'est pas activée
639 if($this->f->getParameter('option_ERP') != 'true') {
640 $form->setType('erp', 'hidden');
641 $form->setType('enjeu_erp', 'hidden');
642 }
643 }
644
645 function setVal(&$form,$maj,$validation){
646 $this->maj=$maj;
647
648 if($this->getVal('geom') != ""
649 && $this->f->getParameter('option_sig') == 'sig_externe'
650 && $this->f->issetSIGParameter() === true) {
651 $form->setVal('geom',
652 "<a id='action-form-localiser'".
653 " target='_blank' href='../app/redirect_plan_sig.php?idx=".$this->getVal("dossier")."'>".
654 "<span class='om-icon om-icon-16 om-icon-fix sig-16' title='Localiser'>Localiser</span> ".
655 $this->getVal('geom').
656 " </a>");
657 }
658 if ($validation==0) {
659 if ($maj == 0){
660 //$dossier_cp = $this->f->collectivite["cp"];
661 //$dossier_ville = $this->f->collectivite["ville"];
662
663 $form->setVal('annee', date('y'));
664 $form->setVal('date_demande', date('Y-m-d'));
665 $form->setVal('date_depot', date('Y-m-d'));
666
667 //$form->setVal('demandeur_cp', $dossier_cp);
668 //$form->setVal('demandeur_ville', $dossier_ville);
669
670 //$form->setVal('delegataire_cp', $dossier_cp);
671 //$form->setVal('delegataire_ville', $dossier_ville);
672
673 //$form->setVal('terrain_cp', $dossier_cp);
674 //$form->setVal('terrain_ville', $dossier_ville);
675
676 $form->setVal('accord_tacite', 'Non');
677 $form->setVal('etat', 'initialiser');
678 }
679 }
680 }
681
682 function setSelect(&$form, $maj,&$db,$debug) {
683 parent::setSelect($form, $maj,$db,$debug);
684 //optimisation sur table importante parcelle -> pas d appel methode parent
685 if(file_exists ("../sql/".$db->phptype."/".$this->table.".form.inc.php"))
686 include ("../sql/".$db->phptype."/".$this->table.".form.inc.php");
687 if($maj<2){
688 // parcelle_lot
689 $contenu="";
690 $contenu[0][0]="parcelle_lot";// table
691 $contenu[0][1]="parcelle_lot"; // zone origine
692 $contenu[1][0]="lotissement";
693 $contenu[1][1]="parcelle_lot_lotissement";
694 $form->setSelect("parcelle_lot",$contenu);
695 $contenu="";
696 $contenu[0][0]="parcelle_lot";// table
697 $contenu[0][1]="lotissement"; // zone origine
698 $contenu[1][0]="parcelle_lot";
699 $contenu[1][1]="parcelle_lot";
700 $form->setSelect("parcelle_lot_lotissement",$contenu);
701 // accord tacite
702 $contenu=array();
703 $contenu[0]=array('Non','Oui');
704 $contenu[1]=array('Non','Oui');
705 $form->setSelect("accord_tacite",$contenu);
706
707 // geom *** a voir
708 if($maj==1){ //modification
709 $contenu=array();
710 $contenu[0]=array("dossier",$this->getParameter("idx"));
711 $form->setSelect('geom',$contenu);
712 }
713 // arrondissement recherche anvancée
714 $this->init_select($form, $db, $maj, $debug, "arrondissement",
715 $sql_arrondissement, $sql_arrondissement_by_id, false);
716 // dossier_autorisation_type_detaille recherche anvancée
717 $this->init_select($form, $db, $maj, $debug, "dossier_autorisation_type_detaille",
718 $sql_dossier_autorisation_type_detaille, $sql_dossier_autorisation_type_detaille_by_id, false);
719 /*
720 * Affichage de données dans le select de la parcelle
721 * */
722 $contenu=array();
723 $sql="select parcelle from ".DB_PREFIXE."parcelle ";
724 $res = $db->query($sql);
725 if (database::isError($res))
726 die($res->getMessage());
727 $contenu[0][0]="";
728 $contenu[1][0]=_("choisir parcelle");
729 $k=1;
730 while ($row=& $res->fetchRow()){
731 $contenu[0][$k]=$row[0];
732 $contenu[1][$k]=$row[0];
733 $k++;
734 }
735 $form->setSelect("parcelle",$contenu);
736
737 }
738 if($this->f->getParameter('afficher_division')==='true') {
739 // instructeur
740 $this->init_select($form, $db, $maj, $debug, "instructeur",
741 $sql_instructeur_div, $sql_instructeur_div_by_id, false);
742 }
743 }
744
745 function setLib(&$form,$maj) {
746 parent::setLib($form,$maj);
747 $form->setLib('servitude',_('contraintes'));
748 $form->setLib('geom',_('centroide'));
749 $form->setLib('date_limite',_("date limite d'instruction"));
750 $form->setLib('delai',_("delai d'instruction"));
751 $form->setLib('accord_tacite',_("decision tacite"));
752 }
753
754 function setOnchange(&$form,$maj){
755 parent::setOnchange($form,$maj);
756 // mise en majuscule
757 $form->setOnchange("demandeur_nom","this.value=this.value.toUpperCase()");
758 $form->setOnchange("demandeur_societe","this.value=this.value.toUpperCase()");
759 $form->setOnchange("delegataire_nom","this.value=this.value.toUpperCase()");
760 $form->setOnchange("delegataire_societe","this.value=this.value.toUpperCase()");
761 $form->setOnchange("architecte_nom","this.value=this.value.toUpperCase()");
762 $form->setOnchange("terrain_adresse","this.value=this.value.toUpperCase()");
763 $form->setOnchange('shon','VerifNumdec(this)');
764 $form->setOnchange('shob','VerifNumdec(this)');
765 $form->setOnchange('hauteur','VerifNumdec(this)');
766 $form->setOnchange('terrain_surface','VerifNumdec(this)');
767 }
768
769 function setLayout(&$form, $maj) {
770 //
771 $form->setBloc('dossier_libelle', 'D', '', ($maj == 3 ? 'col_9':'col_12'));
772 $form->setBloc('dossier_libelle', 'D', '', 'col_9');
773
774 $form->setFieldset('dossier_libelle', 'D', _("Dossier d'instruction"));
775 $form->setFieldset('numero_versement_archive', 'F');
776
777 $form->setBloc('numero_versement_archive', 'F');
778
779 $form->setBloc('date_demande', 'D', '', 'col_3');
780
781 $form->setFieldset('date_demande', 'D', _("Depot"));
782 $form->setFieldset('date_dernier_depot', 'F');
783
784 $form->setFieldset('enjeu_urba', 'D', _("Enjeu"));
785 $form->setFieldset('enjeu_erp', 'F');
786
787 $form->setFieldset('erp', 'D', _("Qualification"));
788 $form->setFieldset('a_qualifier', 'F');
789
790 $form->setBloc('a_qualifier', 'F');
791 $form->setBloc('a_qualifier', 'F');
792 //
793 $form->setBloc('date_complet', 'D', '', 'col_12');
794
795 $form->setFieldset('date_complet', 'D', _('Instruction'), 'col_12');
796
797 $form->setBloc('date_complet', 'D', '', 'col_4');
798 $form->setBloc('date_limite_incompletude', 'F');
799
800 $form->setBloc('date_rejet', 'D', '', 'col_4');
801 $form->setBloc('delai_incompletude', 'F');
802
803 $form->setBloc('etat', 'D', '', 'col_4');
804 $form->setBloc('date_conformite', 'F');
805
806 $form->setFieldset('date_conformite','F','');
807
808 $form->setBloc('date_conformite', 'F');
809
810 $form->setBloc('parcelle','D',"", "col_12");
811 $form->setBloc('geom1','F');
812
813 //Fieldset "Localisation du terrain"
814 $form->setBloc('terrain_references_cadastrales','D',"","col_12");
815 $form->setFieldset('terrain_references_cadastrales','D',_('Localisation du terrain'));
816 $form->setFieldset('terrain_superficie','F','');
817 $form->setBloc('terrain_superficie','F');
818
819 $form->setBloc('description','D',"", "col_12");
820 $form->setBloc('servitude','F','');
821 }
822
823 function setRegroupe(&$form,$maj) {
824 //// depot
825 //If ($maj==0){
826 // $form->setRegroupe('date_demande','D',_("Depot"),$this->aff_depot );
827 //}
828 //If ($maj==1){
829 // $form->setRegroupe('dossier','D',_("Depot"), $this->aff_depot);
830 // $form->setRegroupe('date_demande','G','');
831 //}
832 //$form->setRegroupe('date_depot','G','');
833 //$form->setRegroupe('division','F','');
834
835
836
837 $form->setRegroupe('description','D',_('description').' '._('contraintes'), $this->aff_amenagement);
838 $form->setRegroupe('servitude','F','');
839
840
841 }
842
843 /* =============================================================
844 * fonction trigger relative a la connexion SIG
845 * $sig = 1 dans dyn/var.inc
846 * utilisé aussi pour envoyer une message au service REST d'ERP
847 * ===============================================================
848 */
849
850 function triggerajouterapres($id,&$db,$val,$DEBUG) {
851 $this->sig_parametre($db);
852 $id=$this->valF['dossier']; // id n est pas valorise en ajout
853 if($this->sig==1 and $val['sig']!='Oui'){
854 if($val['parcelle']!=''or $val['parcelle_lot']!=''){
855
856 $this->sig_interne($id,$db,$val,$DEBUG);
857 }
858 else
859 $this->addToMessage("<br>"._("Parcelle non renseignee dans dossier")." ".$id." <br>");
860
861 }
862
863
864 if ($this->f->getParameter('option_erp') != "") {
865 // envoi du message a ERP en cas d'un depot du dossier dat
866 if ($this->getDATDCode($this->valF['dossier']) ==
867 $this->f->getParameter('erp_depot_dossier_dat')) {
868 $msgenque = new MessageEnqueuer();
869 $msgenque->setDossierInstructionIdentifier($this->valF['dossier']);
870 $msgenque->enqueueMessage($msgenque::$ERP_DEPOT_DOSSIER_DAT);
871 }
872
873 // envoi du message a ERP en cas d'une demande d'ouverture DAT
874 if ($this->getDATDCode($this->valF['dossier']) ==
875 $this->f->getParameter('erp_demande_ouverture_dat')) {
876 $msgenque = new MessageEnqueuer();
877 $msgenque->setDossierInstructionIdentifier($this->valF['dossier']);
878 $msgenque->enqueueMessage($msgenque::$ERP_DEMANDE_OUVERTURE_DAT);
879 }
880
881 if ($this->valF['erp'] === true) {
882 // envoi du message a ERP en cas d'annulation d'une demande
883 if ($this->getDATDCode($this->valF['dossier']) ==
884 $this->f->getParameter('erp_annulation_demande')) {
885 $msgenque = new MessageEnqueuer();
886 $msgenque->setDossierInstructionIdentifier($this->valF['dossier']);
887 $msgenque->enqueueMessage($msgenque::$ERP_ANNULATION_DEMANDE);
888 }
889
890 // envoi du message a ERP en cas d'ouverture d'un dossier PC "rattache"
891 // au dossier DAACT
892 if ($this->getDATDCode($this->valF['dossier']) ==
893 $this->f->getParameter('erp_demande_ouverture_pc_daact')) {
894 $msgenque = new MessageEnqueuer();
895 $msgenque->setDossierInstructionIdentifier($this->valF['dossier']);
896 $msgenque->enqueueMessage($msgenque::$ERP_DEMANDE_OUVERTURE_PC);
897 }
898 }
899 } // fin de if ($this->f->getParameter('option_erp') != "")
900
901 // Mise à jour des données du dossier d'autorisation
902 require_once "../obj/dossier_autorisation.class.php";
903 $da = new dossier_autorisation($this->valF["dossier_autorisation"], $this->db, DEBUG);
904 $da->majDossierAutorisation();
905
906 // Si le champ des références cadastrales n'est pas vide
907 if ($this->valF['terrain_references_cadastrales'] != '') {
908
909 // Ajout des parcelles dans la table dossier_parcelle
910 $this->ajouter_dossier_parcelle($this->valF['dossier'],
911 $this->valF['terrain_references_cadastrales']);
912
913 }
914
915 }
916
917 /**
918 * Récupère l'identifiant du quartier et d'un arrondissement d'une référence
919 * cadastrale
920 * @param string $reference_cadastrale
921 *
922 * @return array
923 */
924 function getQuartierArrondissement($reference_cadastrale) {
925
926 $reference_cadastrale = trim($reference_cadastrale);
927 $quartier = '';
928
929 //Récupère le code impot du quartier dans la référence cadastrale
930 for ( $i = 0 ; $i < strlen($reference_cadastrale) ; $i++ ){
931
932 //Si c'est un chiffre, c'est le code quartier
933 if (is_numeric($reference_cadastrale[$i]) ){
934
935 $quartier .= $reference_cadastrale[$i];
936 }
937 //Sinon c'est la section
938 else{
939 break;
940 }
941 }
942
943 //Si le code impôt du quartier a bien été renseigné
944 if ( $quartier !== '' ){
945
946 //Requête de récupération de l'identifiantdu quartier et de
947 //l'arrondissement
948 $sql = "SELECT
949 quartier, arrondissement
950 FROM
951 ".DB_PREFIXE."quartier
952 WHERE
953 code_impots='$quartier'";
954 $this->addToLog("getQuartierArrondissement() : db->query(\"$sql\")", VERBOSE_MODE);
955 $res = $this->db->query($sql);
956 if (database::isError($res)) {
957 die();
958 }
959
960 //Si on a un résultat
961 if ( $res->numRows() == 1 ){
962 //
963 return $res->fetchRow(DB_FETCHMODE_ASSOC);
964 }
965 }
966
967 return NULL;
968 }
969
970 /**
971 * Récupère la section d'une référence cadastrale
972 * @param string $reference_cadastrale
973 *
974 * @return string
975 */
976 function getSection($reference_cadastrale){
977
978 $reference_cadastrale = trim($reference_cadastrale);
979 $section = NULL;
980
981 for ( $i = 0 ; $i < strlen($reference_cadastrale) ; $i++ )
982 if ( !is_numeric($reference_cadastrale[$i]) && is_string($reference_cadastrale[$i]) && $reference_cadastrale[$i] !== ' ' )
983 $section .= $reference_cadastrale[$i];
984
985 return $section;
986 }
987
988 /*
989 * Retourne l'intructeur correspondant le mieux à la parcelle
990 * */
991 /**
992 * Récupère la section d'une référence cadastrale
993 * @param string $quartier
994 * @param string $arrondissement
995 * @param string $section
996 * @param string $dossier_autorisation
997 *
998 * @return array
999 */
1000 function getInstructeurDivision( $quartier, $arrondissement, $section, $dossier_autorisation) {
1001
1002 $quartier = ( $quartier == NULL ) ? -1 : $quartier;
1003 $arrondissement = ( $arrondissement == NULL ) ? -1 : $arrondissement;
1004
1005 //Récupération du dossier_autorisation_type_detaille concerné par le
1006 //$dossier_autorisation
1007 $sql = "
1008 SELECT
1009 dossier_autorisation_type_detaille
1010 FROM
1011 ".DB_PREFIXE."dossier_autorisation
1012 WHERE
1013 dossier_autorisation = '$dossier_autorisation'";
1014
1015 $this->addToLog("getInstructeurDivision : db->query(\"$sql\")", VERBOSE_MODE);
1016 $resDATD = $this->db->query($sql);
1017 if (database :: isError($resDATD))
1018 die($resDATD->getMessage()."erreur ".$sql);
1019
1020 //Si le dossier d'autorisation a un type détaillé de dossier
1021 //d'autorisation associé
1022 if ( $resDATD->numRows() > 0 ){
1023 $rowDATD = $resDATD->fetchRow(DB_FETCHMODE_ASSOC);
1024
1025 //Requête de récupération de l'instructeur à affecter
1026 $sql = "
1027 SELECT
1028 instructeur, section, quartier, arrondissement, dossier_autorisation_type_detaille
1029 FROM
1030 ".DB_PREFIXE."affectation_automatique l
1031 WHERE
1032 ( dossier_autorisation_type_detaille IS NULL AND arrondissement IS NULL AND quartier IS NULL AND section IS NULL ) OR
1033 ( dossier_autorisation_type_detaille IS NULL AND arrondissement IS NULL AND quartier IS NULL AND section = '$section' ) OR
1034 ( dossier_autorisation_type_detaille IS NULL AND arrondissement IS NULL AND quartier = $quartier AND section IS NULL ) OR
1035 ( dossier_autorisation_type_detaille IS NULL AND arrondissement IS NULL AND quartier = $quartier AND section = '$section' ) OR
1036 ( dossier_autorisation_type_detaille IS NULL AND arrondissement = $arrondissement AND quartier IS NULL AND section IS NULL ) OR
1037 ( dossier_autorisation_type_detaille IS NULL AND arrondissement = $arrondissement AND quartier IS NULL AND section = '$section' ) OR
1038 ( dossier_autorisation_type_detaille IS NULL AND arrondissement = $arrondissement AND quartier = $quartier AND section IS NULL ) OR
1039 ( dossier_autorisation_type_detaille IS NULL AND arrondissement = $arrondissement AND quartier = $quartier AND section = '$section' ) OR
1040 ( dossier_autorisation_type_detaille = ".$rowDATD['dossier_autorisation_type_detaille']." AND arrondissement IS NULL AND quartier IS NULL AND section IS NULL ) OR
1041 ( dossier_autorisation_type_detaille = ".$rowDATD['dossier_autorisation_type_detaille']." AND arrondissement IS NULL AND quartier IS NULL AND section = '$section' ) OR
1042 ( dossier_autorisation_type_detaille = ".$rowDATD['dossier_autorisation_type_detaille']." AND arrondissement IS NULL AND quartier = $quartier AND section IS NULL ) OR
1043 ( dossier_autorisation_type_detaille = ".$rowDATD['dossier_autorisation_type_detaille']." AND arrondissement IS NULL AND quartier = $quartier AND section = '$section' ) OR
1044 ( dossier_autorisation_type_detaille = ".$rowDATD['dossier_autorisation_type_detaille']." AND arrondissement = $arrondissement AND quartier IS NULL AND section IS NULL ) OR
1045 ( dossier_autorisation_type_detaille = ".$rowDATD['dossier_autorisation_type_detaille']." AND arrondissement = $arrondissement AND quartier IS NULL AND section = '$section' ) OR
1046 ( dossier_autorisation_type_detaille = ".$rowDATD['dossier_autorisation_type_detaille']." AND arrondissement = $arrondissement AND quartier = $quartier AND section IS NULL ) OR
1047 ( dossier_autorisation_type_detaille = ".$rowDATD['dossier_autorisation_type_detaille']." AND arrondissement = $arrondissement AND quartier = $quartier AND section = '$section' )
1048 ORDER BY section, quartier, arrondissement, dossier_autorisation_type_detaille
1049 LIMIT 1";
1050 $this->addToLog("getInstructeurDivision : db->query(\"$sql\")", VERBOSE_MODE);
1051 $res = $this->db->query($sql);
1052 if (database :: isError($res))
1053 die($res->getMessage()."erreur ".$sql);
1054
1055 //Si on a récupéré un instructeur correspondant aux critères
1056 if ( $res->numRows() > 0 ){
1057
1058 $row = $res->fetchRow(DB_FETCHMODE_ASSOC);
1059 //On récupère sa division
1060 $sql = "SELECT division FROM ".DB_PREFIXE."instructeur WHERE instructeur = ".$row['instructeur'];
1061 $res = $this->db->query($sql);
1062 if (database :: isError($res))
1063 die($res->getMessage()."erreur ".$sql);
1064
1065 $row['division'] = NULL;
1066 //S'il a une division
1067 if ( $res->numRows() > 0 ){
1068
1069 $rowT=& $res->fetchRow(DB_FETCHMODE_ASSOC);
1070 $row['division'] = $rowT['division'];
1071 }
1072
1073 return $row;
1074 }
1075 }
1076
1077 return NULL;
1078 }
1079
1080 /* =============================================================
1081 * fonction trigger relative a la connexion SIG
1082 * $sig = 1 dans dyn/var.inc
1083 * ===============================================================
1084 */
1085
1086 function triggerajouter($id,&$db,$val,$DEBUG) {
1087 //
1088 $this->addToLog("triggerajouter() : start", EXTRA_VERBOSE_MODE);
1089
1090 // Initialisation des variables nécessaires à l'affectation automatique
1091 $quartier = NULL;
1092 $arrondissement = NULL;
1093 $section = NULL;
1094 $instructeur = NULL;
1095
1096 // Si la référence cadastrale n'est pas vide alors on récupère la
1097 //section, le quartier et l'arrondissement
1098 if ($this->valF['terrain_references_cadastrales'] != '') {
1099
1100 // Cette méthode récupère l'arrondissement et le quartier de la
1101 //référence cadastrale saisie
1102 $quartierArrondissement = $this->getQuartierArrondissement($this->valF['terrain_references_cadastrales']);
1103 if ( $quartierArrondissement!= NULL ){
1104
1105 $quartier = $quartierArrondissement['quartier'];
1106 $arrondissement = $quartierArrondissement['arrondissement'];
1107 }
1108 // Si il n'y a pas d'arrondissement alors on vide le quartier
1109 if ( strcmp($arrondissement,'') == 0 ) {
1110
1111 $arrondissement = NULL;
1112 $quartier = NULL;
1113 }
1114 // On récupère la section
1115 $section = $this->getSection($this->valF['terrain_references_cadastrales']);
1116 }
1117
1118 // Si aucun instructeur n'est saisi et que la dossier_autorisation_type_detaille n'est pas vide
1119 // alors on récupère l'instructeur et la division depuis l'affectation
1120 if ( ( empty($this->valF['instructeur']) || $this->valF['instructeur'] == '' ) && $val['dossier_autorisation'] != '' ) {
1121
1122 //Récupération de l'instructeur ainsi que de sa division
1123 $instructeurDivision = $this->getInstructeurDivision($quartier, $arrondissement, $section, $this->valF['dossier_autorisation']);
1124
1125 //Si un instructeur et sa division ont été récupérés
1126 if ( $instructeurDivision != NULL ){
1127
1128 $instructeur = $instructeurDivision['instructeur'];
1129 $division = $instructeurDivision['division'];
1130 }
1131 //Si un instructeur et sa division n'ont pas été récupérés, on
1132 //ajoute pas les données
1133 if ( $instructeur != NULL ){
1134
1135 $this->valF['instructeur'] = $instructeur;
1136 $this->valF['division'] = $division;
1137 } else {
1138 //On affiche un message à l'utilisateur pour lui signifier
1139 //qu'aucun instructeur n'a été assigné au dossier d'instruction
1140 //créé
1141 if ($this->f->isAccredited("dossier_modifier_instructeur")) {
1142 $this->addToMessage("<br/> "._("Pensez a assigner un instructeur a ce dossier.")." <br/>");
1143 } else {
1144 $this->addToMessage("<br/> "._("Aucun instructeur compatible avec ce dossier trouve, contactez votre administrateur afin d'en assigner un a ce dossier.")." <br/>");
1145 }
1146 }
1147 } else {
1148 $this->addToMessage("<br/> "._("Aucun instructeur compatible avec ce dossier trouve, contactez votre administrateur afin d'en assigner un a ce dossier.")." <br/>");
1149 }
1150 //
1151 $this->addToLog("triggerajouter() : end", EXTRA_VERBOSE_MODE);
1152 }
1153
1154 function triggermodifierapres($id,&$db,$val,$DEBUG) {
1155 $this->sig_parametre($db);
1156 // si la parcelle est changée
1157 if(($this->sig==1 and $val['sig']!='Oui' and ($val['parcelle']!=$val['parcelle_archive'])
1158 or $val['parcelle_lot']!=$val['parcelle_lot_archive'])){ // parcelle_lot_archive
1159 if($val['parcelle']!='' or $val['parcelle_lot']!='')
1160 $this->sig_interne($this->valF['dossier'],$db,$val,$DEBUG);
1161 else{
1162 if($this->maj ==1){ // en maj mettre a null la geometrie si parcelle changée inexistante
1163 $sql ="update ".DB_PREFIXE."dossier set geom = null, servitude = '', pos= '' where dossier ='".$id."'";
1164 $res = $db -> query($sql);
1165 $this->addToLog("requete trigger modifier parcelle vide -> maj pos et servitude :".$sql, VERBOSE_MODE);
1166 if (database :: isError($res))
1167 die($res->getMessage()."erreur ".$sql);
1168 }
1169 $this->addToMessage("<br>"._("Parcelle ou parcelle_lot non renseignee dans dossier")." ".$id." <br>");
1170 }
1171 }
1172
1173 // verification si envoi vers ERP est active
1174 if ($this->f->getParameter('option_erp') != "") {
1175 if ($this->val[array_search('a_qualifier', $this->champs)] == 't'
1176 && $this->valF['a_qualifier'] === false) {
1177
1178 // envoi du message "ERP Qualifie" pour un dossier DAT qui a besoin
1179 // de la qualification URBA
1180 if ($this->getDATDCode($this->valF['dossier']) ==
1181 $this->f->getParameter('erp_nature_dat')) {
1182 $msgenque = new MessageEnqueuer();
1183 $msgenque->setDossierInstructionIdentifier($this->valF['dossier']);
1184 $msgenque->setCompetence($this->valF['autorite_competente']);
1185 $msgenque->setContraintePlu($this->valF['servitude']);
1186 $msgenque->setReferenceCadastrale(
1187 $this->getReferenceCadastrale($this->valF['dossier']));
1188 $msgenque->enqueueMessage($msgenque::$ERP_QUALIFIE);
1189 }
1190
1191 // envoi des messages a ERP en cas du dossier PC traite par URBA, et
1192 // qui etait classifie come ERP
1193 if ($this->getDATDCode($this->valF['dossier']) ==
1194 $this->f->getParameter('erp_dossier_nature_pc')
1195 && $this->valF['erp'] == true) {
1196 $msgenque = new MessageEnqueuer();
1197 $msgenque->setDossierInstructionIdentifier($this->valF['dossier']);
1198 $msgenque->enqueueMessage($msgenque::$ERP_DEMANDE_COMPLETUDE_PC);
1199 $msgenque->enqueueMessage($msgenque::$ERP_DEMANDE_QUALIFICATION_PC);
1200 }
1201 }
1202 } // fin de if($this->f->getParameter('option_erp'))
1203
1204 // Ajout ou modification des demandeurs
1205 $this->insertLinkDemandeDemandeur($db, $DEBUG);
1206
1207 // Si le champ des références cadastrales n'est pas vide
1208 if ($this->getVal('terrain_references_cadastrales')
1209 != $this->valF['terrain_references_cadastrales']) {
1210
1211 // On supprime toutes les lignes de la table dossier_parcelle qui
1212 // font référence le dossier en cours de modification
1213 $this->supprimer_dossier_parcelle($val['dossier']);
1214
1215 // Ajout des parcelles dans la table dossier_parcelle
1216 $this->ajouter_dossier_parcelle($val['dossier'],
1217 $val['terrain_references_cadastrales']);
1218
1219 }
1220
1221 }
1222
1223 /**
1224 * Ne servira surement pas mais dans le doute autant recalculer les données du DA
1225 */
1226 function triggersupprimerapres($id,&$db,$val,$DEBUG) {
1227 // Mise à jour des données du dossier d'autorisation
1228 require_once "../obj/dossier_autorisation.class.php";
1229 $da = new dossier_autorisation($this->valF["dossier_autorisation"], $this->db, DEBUG);
1230 $da->majDossierAutorisation();
1231
1232 // On supprime toutes les lignes de la table dossier_parcelle qui
1233 // font référence le dossier en cours de suppression
1234 $this->supprimer_dossier_parcelle($this->valF['dossier']);
1235
1236 }
1237
1238 /**
1239 * Retourne le type de dossier d'autorisation du dossier courant :
1240 * - dossier_autorisation_type_detaille.code
1241 **/
1242 function getDATDCode($idxDossier) {
1243 $sql = "SELECT dossier_autorisation_type_detaille.code
1244 FROM ".DB_PREFIXE."dossier_autorisation_type_detaille
1245 INNER JOIN ".DB_PREFIXE."dossier_autorisation
1246 ON dossier_autorisation_type_detaille.dossier_autorisation_type_detaille =
1247 dossier_autorisation.dossier_autorisation_type_detaille
1248 INNER JOIN ".DB_PREFIXE."dossier ON dossier.dossier_autorisation = dossier_autorisation.dossier_autorisation
1249 WHERE dossier.dossier = '".$idxDossier."'";
1250 $res = $this -> db -> getOne($sql);
1251 $this->f->addToLog("getDATDCode() : db->getOne(\"".$sql."\")", VERBOSE_MODE);
1252 if ( database::isError($res)){
1253 die();
1254 }
1255 return $res;
1256 }
1257
1258
1259 /**
1260 * Retourne la reference cadastrale de la demande attache a un dossier ERP
1261 * specifique
1262 * @param string $dossier L'identifiant du dossier
1263 * @return string|null La reference cadastrale si elle est trouve,
1264 * sinon NULL. En cas d'erreur de la BD, l'execution s'arrete.
1265 */
1266 function getReferenceCadastrale($dossier) {
1267 $sql = "SELECT terrain_references_cadastrales FROM ".DB_PREFIXE."demande WHERE dossier_instruction = '" . $dossier . "'";
1268 $res = $this->db->limitquery($sql, 0, 1);
1269 $this->addToLog("getReferenceCadastrale(): db->limitquery(\"".
1270 str_replace(",",", ",$sql)."\", 0, 1);", VERBOSE_MODE);
1271 // Si une erreur survient on die
1272 if (database::isError($res, true)) {
1273 // Appel de la methode de recuperation des erreurs
1274 $this->erreur_db($res->getDebugInfo(), $res->getMessage(), 'demande');
1275 }
1276 // retourne la nature du dossier
1277 while ($row =& $res->fetchRow()) {
1278 return $row[0];
1279 }
1280 // la nature n'etait pas trouve, ce qui ne devrait pas se passer
1281 return NULL;
1282 }
1283
1284
1285 function sig_parametre(&$db){
1286 if (file_exists ("../dyn/var.inc"))
1287 include ("../dyn/var.inc");
1288 if(!isset($sig))
1289 $this->sig=0;
1290 else
1291 $this->sig=1;
1292 if(!isset($auto_pos))
1293 $this->auto_pos=0;
1294 else
1295 $this->auto_pos=$auto_pos;
1296 if(!isset($auto_servitude_surfacique))
1297 $this->auto_servitude_surfacique=0;
1298 else
1299 $this->auto_servitude_surfacique=$auto_servitude_surfacique;
1300 if(!isset($auto_servitude_ligne))
1301 $this->auto_servitude_ligne=0;
1302 else
1303 $this->auto_servitude_ligne=$auto_servitude_ligne;
1304 if(!isset($auto_servitude_point))
1305 $this->auto_servitude_point=0;
1306 else
1307 $this->auto_servitude_point=$auto_servitude_point;
1308 if(!isset($auto_parcelle))
1309 $this->auto_parcelle=0;
1310 else
1311 $this->auto_parcelle=$auto_parcelle;
1312 if(!isset($auto_parcelle_lot))
1313 $this->auto_parcelle_lot=0;
1314 else
1315 $this->auto_parcelle_lot=$auto_parcelle_lot;
1316 $this->addToLog("trigger valeur sig :".$this->sig, VERBOSE_MODE);
1317 $this->addToLog("trigger valeur auto_pos :". $this->auto_pos, VERBOSE_MODE);
1318 $this->addToLog("trigger valeur auto_servitude_surfacique :".$this->auto_servitude_surfacique, VERBOSE_MODE);
1319 $this->addToLog("trigger valeur auto_servitude_ligne :". $this->auto_servitude_ligne, VERBOSE_MODE);
1320 $this->addToLog("trigger valeur auto_servitude_point :".$this->auto_servitude_point, VERBOSE_MODE);
1321 $this->addToLog("trigger valeur auto_parcelle :". $this->auto_parcelle, VERBOSE_MODE);
1322 $this->addToLog("trigger valeur auto_parcelle_lot :".$this->auto_parcelle_lot, VERBOSE_MODE);
1323 }
1324
1325
1326 function sig_interne($id,&$db,$val,$DEBUG){
1327 // Strategy interne dans var.inc
1328 // si la parcelle existe, il est cree un point au milieu de la parcelle
1329 // de maniere automatique
1330 $geom='';
1331 $parcelle=$val["parcelle"];
1332 $projection = $db -> getOne("select srid from geometry_columns where f_table_name='dossier'");
1333 if($this->auto_parcelle==1 and $val["parcelle"]!=''){
1334 $sql= "select astext(centroid(geom)) from ".DB_PREFIXE."parcelle where parcelle ='".$val["parcelle"]."'";
1335 $this->addToLog("recherche centroid parcelle :".$sql, VERBOSE_MODE);
1336 $geom = $db -> getOne($sql);
1337 if (database :: isError($geom))die($res->getMessage()."erreur ".$sql);
1338 }
1339 if($geom=='' and $this->auto_parcelle_lot==1 and $val["parcelle_lot"]!=''){ // lot
1340 $sql= "select astext(centroid(geom)) from ".DB_PREFIXE."parcelle_lot where parcelle_lot ='".$val["parcelle_lot"]."'";
1341 $this->addToLog("recherche centroid parcelle lot :".$sql, VERBOSE_MODE);
1342 $geom = $db -> getOne($sql);
1343 if (database :: isError($geom))die($res->getMessage()."erreur ".$sql);
1344 $parcelle=$val["parcelle_lot"]." ".$val["parcelle_lot_lotissement"];
1345 }
1346 if($geom!=''){ // la parcelle est exitante dans la table ou vue parcelle
1347 $sql ="update ".DB_PREFIXE."dossier set geom =geometryfromtext('".$geom."', ".$projection." ) where dossier ='".$id."'";
1348 $this->addToLog("sig_interne maj geom :".$sql, VERBOSE_MODE);
1349 $res = $db -> query($sql);
1350 if (database :: isError($res)) die($res->getMessage()."erreur ".$sql);
1351 $this->addToMessage(""._("centroid de parcelle calcule")." ".$parcelle." ");
1352 if($this->auto_pos==1) // recherche du pos
1353 $this->calcul_auto_pos($id,$db,$geom,$projection);
1354 if($this->auto_servitude_surfacique==1) // recherche de servitude surfacique
1355 $this->calcul_auto_servitude_surfacique($id,$db,$geom,$projection);
1356 if($this->auto_servitude_ligne==1) // recherche de servitude ligne
1357 $this->calcul_auto_servitude_ligne($id,$db,$geom,$projection);
1358 if($this->auto_servitude_point==1) // recherche de servitude point
1359 $this->calcul_auto_servitude_point($id,$db,$geom,$projection);
1360 $temp=strtr($this->servitude,"'"," "); // enleve le '
1361 $sql1 ="update ".DB_PREFIXE."dossier set servitude = '".$temp."' where dossier = '".$id."'";
1362 $res1 = $db -> query($sql1);
1363 $this->addToLog("maj servitudes :".$sql1, VERBOSE_MODE);
1364 if (database:: isError($res1)) die($res1->getMessage()."erreur ".$sql1);
1365 }else{ // parcelle inexistante //***
1366 if($this->maj ==1){ // en maj mettre a null la geometrie si parcelle changée inexistante
1367 $sql ="update ".DB_PREFIXE."dossier set geom = null, servitude = '', pos= '' where dossier ='".$id."'";
1368 $res = $db -> query($sql);
1369 $this->addToLog("requete sig_interne maj parcelle inexistante :".$sql, VERBOSE_MODE);
1370 if (database :: isError($res))
1371 die($res->getMessage()."erreur ".$sql);
1372 }
1373 //$this->addToMessage("<br> parcelle ".$parcelle." "._("inexistante")." ".$id."");
1374 }
1375 }
1376
1377 function calcul_auto_pos($id,&$db,$geom,$projection){
1378 // recherche du pos automatique
1379 $sql="select pos from ".DB_PREFIXE."pos WHERE ST_contains(geom, geometryfromtext('".$geom."', ".$projection."))";
1380 $pos = $db -> getOne($sql);
1381 $this->addToLog("recherche auto_pos :".$sql, VERBOSE_MODE);
1382 if($pos!=''){
1383 $sql1 ="update ".DB_PREFIXE."dossier set pos = '".$pos."' where dossier = '".$id."'";
1384 $res1 = $db -> query($sql1);
1385 $this->addToLog("maj auto_pos :".$sql1, VERBOSE_MODE);
1386 if (database:: isError($res1)) die($res1->getMessage()."erreur ".$sql1);
1387 $this->addToMessage("<br>"._("POS/PLU")." : ".$pos."");
1388 }else{
1389 $this->addToMessage("<br>"._("POS/PLU non trouve")." ".$id."");
1390 }
1391 }
1392
1393 function calcul_auto_servitude_surfacique($id,&$db,$geom,$projection){
1394 // recherche servitude surfacique
1395 $sql="select * from ".DB_PREFIXE."servitude_surfacique WHERE ST_contains(geom, geometryfromtext('".$geom."', ".$projection."))";
1396 $res=$db->query($sql);
1397 if (database:: isError($res)) die($res1->getMessage()."erreur ".$sql);
1398 $this->addToLog("requete :".$sql." executee ", VERBOSE_MODE);
1399 while ($row=& $res->fetchRow(DB_FETCHMODE_ASSOC)){
1400 $this->addToMessage("<br>"._("servitude")." : ".$row['libelle']." - ".$row['observation']);
1401 $this->servitude.=" [".$row['libelle']."] ".$row['observation']." - ";
1402 }
1403 }
1404
1405 function calcul_auto_servitude_ligne($id,&$db,$geom,$projection){
1406 // recherche servitude ligne
1407 $sql="select * from ".DB_PREFIXE."servitude_ligne WHERE ST_contains(ST_buffer(geom, perimetre), geometryfromtext('".$geom."', ".$projection."))";
1408 $res=$db->query($sql);
1409 if (database:: isError($res)) die($res1->getMessage()."erreur ".$sql);
1410 $this->addToLog("requete :".$sql." executee ", VERBOSE_MODE);
1411 while ($row=& $res->fetchRow(DB_FETCHMODE_ASSOC)){
1412 $this->addToMessage("<br>"._("contraintes")." : ".$row['libelle']." - ".$row['observation']);
1413 $this->servitude.=" [".$row['libelle']."] ".$row['observation']." - ";
1414 }
1415 }
1416
1417 function calcul_auto_servitude_point($id,&$db,$geom,$projection){
1418 // recherche servitude point
1419 $sql="select libelle,observation, perimetre, distance(geom, geometryfromtext('".$geom."', ".$projection.")) as distance from ".
1420 DB_PREFIXE."servitude_point WHERE distance(geom, geometryfromtext('".$geom."', ".$projection."))<perimetre";
1421 $res=$db->query($sql);
1422 if (database:: isError($res)) die($res1->getMessage()."erreur ".$sql);
1423 $this->addToLog("requete :".$sql." executee ", VERBOSE_MODE);
1424 while ($row=& $res->fetchRow(DB_FETCHMODE_ASSOC)){
1425 $this->addToMessage("<br>"._("contraintes")." : ".$row['libelle']." - ".$row['observation']." a ".round($row['distance'],2)." m ");
1426 $this->servitude.=" [".$row['libelle']."] ".$row['observation']." a ".round($row['distance'],2)." m - ";
1427 }
1428 }
1429
1430 /**
1431 * Gestion des liens entre la demande et les demandeurs recemment ajoutés
1432 **/
1433 function insertLinkDemandeDemandeur($db, $DEBUG) {
1434 //
1435 require_once "../obj/lien_dossier_demandeur.class.php";
1436 // Sippression des anciens demandeurs
1437 $this->deleteLinkDossierDemandeur($db, $DEBUG);
1438
1439 // Ajout du pétitionnaire principal
1440 if(!empty($this->postedIdDemandeur['petitionnaire_principal'])) {
1441 $this->addLinkDossierDemandeur($this->postedIdDemandeur['petitionnaire_principal'], true, $db, $DEBUG);
1442 }
1443
1444 // Ajout du délégataire
1445 if(!empty($this->postedIdDemandeur['delegataire'])) {
1446 $this->addLinkDossierDemandeur($this->postedIdDemandeur['delegataire'], false, $db, $DEBUG);
1447 }
1448
1449 // Ajout des pétitionnaires
1450 if(isset($this->postedIdDemandeur['petitionnaire'])) {
1451 // Ajout des nouveaux liens
1452 foreach ($this->postedIdDemandeur['petitionnaire'] as $petitionnaire) {
1453 $this->addLinkDossierDemandeur($petitionnaire, false, $db, $DEBUG);
1454 }
1455 }
1456 }
1457
1458
1459 /**
1460 * Fonction permettant d'ajouter un lien
1461 * entre la table demande et demandeur
1462 **/
1463 function addLinkDossierDemandeur($id, $principal, $db, $DEBUG) {
1464 $lienAjout = new lien_dossier_demandeur(
1465 "]",
1466 $db,
1467 $DEBUG);
1468 $lien = array('lien_dossier_demandeur' => "",
1469 'petitionnaire_principal' => (($principal)?"t":"f"),
1470 'dossier' => $this->valF['dossier'],
1471 'demandeur' => $id);
1472 $lienAjout->ajouter($lien, $db, $DEBUG);
1473 $lienAjout->__destruct();
1474 }
1475
1476 /**
1477 * Fonction permettant de supprimer un lien
1478 * entre la table demande et demandeur
1479 **/
1480 function deleteLinkDossierDemandeur($db, $DEBUG) {
1481 // Suppression
1482 $sql = "DELETE FROM ".DB_PREFIXE."lien_dossier_demandeur ".
1483 "WHERE dossier='".$this->valF['dossier']."'";
1484 // Execution de la requete de suppression de l'objet
1485 $res = $db->query($sql);
1486 // Logger
1487 $this->f->addToLog("supprimer(): db->query(\"".$sql."\");", VERBOSE_MODE);
1488 if ( database::isError($res)){
1489 die();
1490 }
1491
1492 }
1493
1494 /**
1495 * Methode de recupération des valeurs postées
1496 **/
1497 function getPostedValues() {
1498 // Récupération des demandeurs dans POST
1499 if (isset($_POST['petitionnaire_principal']) OR
1500 isset($_POST['delegataire']) OR
1501 isset($_POST['petitionnaire'])) {
1502 if( isset($_POST['petitionnaire_principal']) AND
1503 !empty($_POST['petitionnaire_principal'])) {
1504 $this->postedIdDemandeur['petitionnaire_principal'] = $_POST['petitionnaire_principal'];
1505 }
1506 if( isset($_POST['delegataire']) AND
1507 !empty($_POST['delegataire'])) {
1508 $this->postedIdDemandeur['delegataire'] = $_POST['delegataire'];
1509 }
1510 if( isset($_POST['petitionnaire']) AND
1511 !empty($_POST['petitionnaire'])) {
1512 $this->postedIdDemandeur['petitionnaire'] = $_POST['petitionnaire'];
1513 }
1514 }
1515 }
1516
1517 /**
1518 * Méthode permettant de récupérer les id des demandeurs liés à la table
1519 * liée passée en paramètre
1520 *
1521 * @param string $from Table liée : "demande", "dossier", dossier_autorisation"
1522 * @param string $id Identifiant (clé primaire de la table liée en question)
1523 */
1524 function listeDemandeur($from, $id) {
1525 // Récupération des demandeurs de la base
1526 $sql = "SELECT demandeur.demandeur,
1527 demandeur.type_demandeur,
1528 lien_".$from."_demandeur.petitionnaire_principal
1529 FROM ".DB_PREFIXE."lien_".$from."_demandeur
1530 INNER JOIN ".DB_PREFIXE."demandeur
1531 ON demandeur.demandeur=lien_".$from."_demandeur.demandeur
1532 WHERE ".$from." = '".$id."'";
1533 $res = $this->f->db->query($sql);
1534 $this->f->addToLog("listeDemandeur(): db->query(\"".$sql."\")", VERBOSE_MODE);
1535 if ( database::isError($res)){
1536 die();
1537 }
1538 // Stockage du résultat dans un tableau
1539 while ($row=& $res->fetchRow(DB_FETCHMODE_ASSOC)){
1540 if ($row['petitionnaire_principal'] == 't' AND
1541 $row['type_demandeur']=="petitionnaire") {
1542 $this->valIdDemandeur['petitionnaire_principal']=$row['demandeur'];
1543 } elseif ($row['petitionnaire_principal'] == 'f' AND
1544 $row['type_demandeur']=="petitionnaire"){
1545 $this->valIdDemandeur['petitionnaire'][]=$row['demandeur'];
1546 } elseif ($row['type_demandeur']=="delegataire"){
1547 $this->valIdDemandeur['delegataire']=$row['demandeur'];
1548 }
1549 }
1550 }
1551
1552 /**
1553 * Ajout de la liste des demandeurs
1554 */
1555 function formSpecificContent($maj) {
1556
1557 $this->listeDemandeur("dossier", $this->getVal('dossier'));
1558
1559 if($maj < 2 AND !$this->correct AND !$this->f->isUserQualificateur()) {
1560 $linkable = true;
1561 } else {
1562 $linkable = false;
1563 }
1564
1565 // Conteneur de la listes des demandeurs
1566 echo "<div id=\"liste_demandeur\" class=\"demande_hidden_bloc col_12\">";
1567 echo "<fieldset class=\"cadre ui-corner-all ui-widget-content\">";
1568 echo " <legend class=\"ui-corner-all ui-widget-content ui-state-active\">"
1569 ._("Petitionnaire")."</legend>";
1570 // Si des demandeurs sont liés à la demande
1571 require_once "../obj/petitionnaire.class.php";
1572 require_once "../obj/delegataire.class.php";
1573 // Affichage du bloc pétitionnaire principal / délégataire
1574 // L'ID DU DIV SUIVANT EST NECESSAIRE AU BON FONCTIONNEMENT DU JS
1575 echo "<div id=\"petitionnaire_principal_delegataire col_12\">";
1576 // Affichage de la synthèse
1577 if (isset ($this->valIdDemandeur["petitionnaire_principal"]) AND
1578 !empty($this->valIdDemandeur["petitionnaire_principal"])) {
1579 $demandeur = new petitionnaire(
1580 $this->valIdDemandeur["petitionnaire_principal"],
1581 $this->f->db,false);
1582 $demandeur -> afficherSynthese("petitionnaire_principal", $linkable);
1583 $demandeur -> __destruct();
1584 } elseif ( isset ($this->postedIdDemandeur["petitionnaire_principal"]) AND
1585 !empty($this->postedIdDemandeur["petitionnaire_principal"]) ) {
1586 $demandeur = new petitionnaire(
1587 $this->postedIdDemandeur["petitionnaire_principal"],
1588 $this->f->db,false);
1589 $demandeur -> afficherSynthese("petitionnaire_principal", $linkable);
1590 $demandeur -> __destruct();
1591 }
1592 // Si en édition de formulaire
1593 if($maj < 2 AND $linkable) {
1594 // Bouton d'ajout du pétitionnaire principal
1595 // L'ID DE L'INPUT SUIVANT EST NECESSAIRE AU BON FONCTIONNEMENT DU JS
1596 echo "<span id=\"add_petitionnaire_principal\"
1597 class=\"om-form-button add-16\">".
1598 _("Saisir le petitionnaire principal").
1599 "</span>";
1600 }
1601 // Bouton d'ajout du delegataire
1602 // L'ID DU DIV ET DE L'INPUT SUIVANT EST NECESSAIRE AU BON FONCTIONNEMENT DU JS
1603 echo "<div id=\"delegataire\">";
1604 // Affichage de la synthèse
1605 if (isset ($this->valIdDemandeur["delegataire"]) AND
1606 !empty($this->valIdDemandeur["delegataire"])) {
1607 $demandeur = new delegataire($this->valIdDemandeur["delegataire"],
1608 $this->f->db,false);
1609 $demandeur -> afficherSynthese("delegataire", $linkable);
1610 $demandeur -> __destruct();
1611 } elseif ( isset ($this->postedIdDemandeur["delegataire"]) AND
1612 !empty($this->postedIdDemandeur["delegataire"]) ) {
1613
1614 $demandeur = new delegataire($this->postedIdDemandeur["delegataire"],
1615 $this->f->db,false);
1616 $demandeur -> afficherSynthese("delegataire", $linkable);
1617 $demandeur -> __destruct();
1618 }
1619 if($maj < 2 AND $linkable) {
1620 echo "<span id=\"add_delegataire\"
1621 class=\"om-form-button add-16\">".
1622 _("Saisir le delegataire").
1623 "</span>";
1624 }
1625 echo "</div>";
1626 echo "<div class=\"both\"></div>";
1627 echo "</div>";
1628 // Bloc des pétitionnaires secondaires
1629 // L'ID DU DIV SUIVANT EST NECESSAIRE AU BON FONCTIONNEMENT DU JS
1630 echo "<div id=\"listePetitionnaires col_12\">";
1631
1632 // Affichage de la synthèse
1633 if (isset ($this->valIdDemandeur["petitionnaire"]) AND
1634 !empty($this->valIdDemandeur["petitionnaire"])) {
1635
1636 foreach ($this->valIdDemandeur["petitionnaire"] as $petitionnaire) {
1637 $demandeur = new petitionnaire($petitionnaire,
1638 $this->f->db,false);
1639 $demandeur -> afficherSynthese("petitionnaire", $linkable);
1640 $demandeur -> __destruct();
1641 }
1642
1643 } elseif ( isset ($this->postedIdDemandeur["petitionnaire"]) AND
1644 !empty($this->postedIdDemandeur["petitionnaire"]) ) {
1645 foreach ($this->postedIdDemandeur["petitionnaire"] as $petitionnaire) {
1646 $demandeur = new petitionnaire($petitionnaire,
1647 $this->f->db,false);
1648 $demandeur -> afficherSynthese("petitionnaire", $linkable);
1649 $demandeur -> __destruct();
1650 }
1651 }
1652 if ($maj < 2 AND $linkable) {
1653 // L'ID DE L'INPUT SUIVANT EST NECESSAIRE AU BON FONCTIONNEMENT DU JS
1654 echo "<span id=\"add_petitionnaire\"
1655 class=\"om-form-button add-16\">".
1656 _("Ajouter un petitionnaire")
1657 ."</span>";
1658 }
1659 echo "</div>";
1660 echo "</fieldset>";
1661 echo "</div>";
1662 }
1663
1664 /**
1665 * Retourne le statut du dossier
1666 * @return string Le statut du dossier d'instruction
1667 */
1668 function getStatut(){
1669
1670 $statut = '';
1671
1672 $etat = $this->getVal("etat");
1673 //Si l'état du dossier d'instruction n'est pas vide
1674 if ( $etat != '' ){
1675
1676 $sql = "SELECT statut
1677 FROM ".DB_PREFIXE."etat
1678 WHERE etat ='".$etat."'";
1679 $statut = $this->db->getOne($sql);
1680 $this->f->addToLog("getStatut() : db->getOne(\"".$sql."\")", VERBOSE_MODE);
1681 if ( database::isError($statut)){
1682 die();
1683 }
1684 }
1685 return $statut;
1686 }
1687
1688 /**
1689 * Retourne l'identifiant du rapport d'instruction lié du dossier
1690 * @return string L'identifiant du rapport d'instruction lié du dossier
1691 */
1692 function getRapportInstruction(){
1693
1694 $rapport_instruction = '';
1695
1696 $sql = "SELECT rapport_instruction
1697 FROM ".DB_PREFIXE."rapport_instruction
1698 WHERE dossier_instruction ='".$this->getVal($this->clePrimaire)."'";
1699 $rapport_instruction = $this->db->getOne($sql);
1700 $this->f->addToLog("getStatut() : db->getOne(\"".$sql."\")", VERBOSE_MODE);
1701 if ( database::isError($rapport_instruction)){
1702 die();
1703 }
1704
1705 return $rapport_instruction;
1706 }
1707
1708 /**
1709 * Retourne l'identifiant des données techniques liées du dossier
1710 * @return string L'identifiant des données techniques liées du dossier
1711 */
1712 function getDonneesTechniques(){
1713
1714 $donnees_techniques = '';
1715
1716 $sql = "SELECT donnees_techniques
1717 FROM ".DB_PREFIXE."donnees_techniques
1718 WHERE dossier_instruction ='".$this->getVal($this->clePrimaire)."'";
1719 $donnees_techniques = $this->db->getOne($sql);
1720 $this->f->addToLog("getStatut() : db->getOne(\"".$sql."\")", VERBOSE_MODE);
1721 if ( database::isError($donnees_techniques)){
1722 die();
1723 }
1724
1725 return $donnees_techniques;
1726 }
1727
1728 /**
1729 * Surcharge du bouton retour afin de retourner sur la recherche de dossiers
1730 * d'instruction existant
1731 */
1732 function retour($premier = 0, $recherche = "", $tricol = "") {
1733
1734 echo "\n<a class=\"retour\" ";
1735 echo "href=\"";
1736 //
1737 if($this->getParameter("idx_dossier") != "") {
1738 echo "tab.php?";
1739 echo "obj=recherche_dossier";
1740
1741 } else {
1742 if($this->getParameter("retour")=="form" AND !($this->getParameter("validation")>0 AND $this->getParameter("maj")==2 AND $this->correct)) {
1743 echo "form.php?";
1744 } else {
1745 echo "tab.php?";
1746 }
1747 // Permet de retourner sur la bonne page
1748 if (isset($_GET['retourformulaire']) && $_GET['retourformulaire'] != '') {
1749 echo "obj=".$_GET['retourformulaire'];
1750 } else {
1751 echo "obj=".get_class($this);
1752 }
1753 if($this->getParameter("retour")=="form") {
1754 echo "&amp;idx=".$this->getParameter("idx");
1755 echo "&amp;idz=".$this->getParameter("idz");
1756 echo "&amp;action=3";
1757 }
1758 }
1759 echo "&amp;premier=".$this->getParameter("premier");
1760 echo "&amp;tricol=".$this->getParameter("tricol");
1761 echo "&amp;recherche=".$this->getParameter("recherche");
1762 echo "&amp;selectioncol=".$this->getParameter("selectioncol");
1763 echo "&amp;advs_id=".$this->getParameter("advs_id");
1764 echo "&amp;valide=".$this->getParameter("valide");
1765 //
1766 echo "\"";
1767 echo ">";
1768 //
1769 echo _("Retour");
1770 //
1771 echo "</a>\n";
1772
1773 }
1774
1775 /**
1776 * Permet de modifier le fil d'Ariane
1777 * @param string $ent Fil d'Ariane
1778 * @param array $val Valeurs de l'objet
1779 * @param intger $maj Mode du formulaire
1780 */
1781 function getFormTitle($ent) {
1782
1783 // Fil d'Ariane
1784 $ent = _("instruction")." -> "._("dossiers d'instruction");
1785
1786 // Si différent de l'ajout
1787 if($this->getParameter("maj") != 0) {
1788 // Si le champ dossier_libelle existe
1789 if (trim($this->getVal("dossier_libelle")) != '') {
1790 $ent .= " -> ".strtoupper($this->getVal("dossier_libelle"));
1791 }
1792 // Si le champ dossier existe
1793 if (trim($this->getVal("dossier")) != '') {
1794 $demandeur = $this->get_demandeur($this->getVal("dossier"));
1795 // Si le demandeur existe
1796 if (isset($demandeur) && trim($demandeur) != '') {
1797 $ent .= " ".strtoupper($demandeur);
1798 }
1799 }
1800 }
1801
1802 // Change le fil d'Ariane
1803 return $ent;
1804 }
1805
1806 /**
1807 * Récupère le demandeur du dossier
1808 * @return string Identifiant du dossier
1809 */
1810 private function get_demandeur($dossier) {
1811
1812 // init de la variable de retour
1813 $demandeur = '';
1814
1815 // Requête SQL
1816 $sql = "SELECT
1817 CASE WHEN demandeur.qualite='particulier'
1818 THEN TRIM(CONCAT(demandeur.particulier_nom, ' ', demandeur.particulier_prenom))
1819 ELSE TRIM(CONCAT(demandeur.personne_morale_raison_sociale, ' ', demandeur.personne_morale_denomination))
1820 END as demandeur
1821 FROM ".DB_PREFIXE."dossier
1822 LEFT JOIN ".DB_PREFIXE."lien_dossier_demandeur
1823 ON lien_dossier_demandeur.dossier=dossier.dossier
1824 AND lien_dossier_demandeur.petitionnaire_principal IS TRUE
1825 LEFT JOIN ".DB_PREFIXE."demandeur
1826 ON lien_dossier_demandeur.demandeur=demandeur.demandeur
1827 WHERE dossier.dossier ='".$dossier."'";
1828 $demandeur = $this->db->getOne($sql);
1829 $this->f->addToLog("get_demandeur() : db->getOne(\"".$sql."\")", VERBOSE_MODE);
1830 database::isError($demandeur);
1831
1832 // Résultat retourné
1833 return $demandeur;
1834 }
1835
1836 /**
1837 * Récupère la durée de validité du type détaillé du dossier d'autorisation
1838 * @param string $dossier_autorisation Identifiant dossier d'autorisation
1839 * @return intger Durée de validité
1840 */
1841 function get_duree_validite($dossier_autorisation) {
1842
1843 // init de la variable de retour
1844 $duree_validite = "";
1845
1846 // Récupération de la duree de validite du dossier d'autorisation
1847 $sql = "SELECT duree_validite_parametrage
1848 FROM ".DB_PREFIXE."dossier_autorisation_type_detaille
1849 LEFT JOIN ".DB_PREFIXE."dossier_autorisation
1850 ON dossier_autorisation.dossier_autorisation_type_detaille = dossier_autorisation_type_detaille.dossier_autorisation_type_detaille
1851 WHERE dossier_autorisation.dossier_autorisation='".$dossier_autorisation."'";
1852 $duree_validite = $this->db->getOne($sql);
1853 $this->f->addToLog("get_duree_validite(): db->getOne(\"".$sql."\");", VERBOSE_MODE);
1854 database::isError($duree_validite);
1855
1856 // retourne le résultat
1857 return $duree_validite;
1858
1859 }
1860
1861 /**
1862 * Ajoute les parcelles du dossier passé en paramètre
1863 * @param string $dossier Identifiant du dossier
1864 * @param string $terrain_references_cadastrales Références cadastrales du
1865 * dossier
1866 */
1867 function ajouter_dossier_parcelle($dossier, $terrain_references_cadastrales) {
1868
1869 // Parse les parcelles
1870 $list_parcelles = $this->f->parseParcelles($terrain_references_cadastrales);
1871
1872 // Fichier requis
1873 require_once "../obj/dossier_parcelle.class.php";
1874
1875 // A chaque parcelle une nouvelle ligne est créée dans la table
1876 // dossier_parcelle
1877 foreach ($list_parcelles as $parcelle) {
1878
1879 // Instance de la classe dossier_parcelle
1880 $dossier_parcelle = new dossier_parcelle("]", $this->db, DEBUG);
1881
1882 // Valeurs à sauvegarder
1883 $value = array(
1884 'dossier_parcelle' => '',
1885 'dossier' => $dossier,
1886 'parcelle' => '',
1887 'libelle' => $parcelle['quartier']
1888 .$parcelle['section']
1889 .$parcelle['parcelle']
1890 );
1891
1892 // Ajout de la ligne
1893 $dossier_parcelle->ajouter($value, $this->db, DEBUG);
1894 }
1895
1896 }
1897
1898 /**
1899 * Supprime les parcelles du dossier passé en paramètre
1900 * @param string $dossier Identifiant du dossier
1901 */
1902 function supprimer_dossier_parcelle($dossier) {
1903
1904 // Suppression des parcelles du dossier
1905 $sql = "DELETE FROM ".DB_PREFIXE."dossier_parcelle
1906 WHERE dossier='".$dossier."'";
1907 $res = $this->db->query($sql);
1908 $this->addToLog("supprimer_dossier_parcelle() db->query(\"".$sql."\");", VERBOSE_MODE);
1909 database::isError($res);
1910
1911 }
1912
1913 }// fin classe
1914 ?>

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26