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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2979 - (show annotations)
Thu Apr 24 13:38:42 2014 UTC (10 years, 9 months ago) by nmeucci
File size: 105360 byte(s)
* Amélioration - Augmentation de la police du texte pour éviter de zoomer.
* Amélioration - Tous les libellés de champs commencent par une majuscule.
* Amélioration - Pour une meilleure visibilité les valeurs sont en gras.
* Amélioration - Modification de l'affichage des DI et de l'ordre des onglets.
  Masquage des dates d'incomplétude ou de limite d'instruction suivant l'état du
  dossier.
* Amélioration - Dans les DA ajout du libellé du type d'autorisation détaillé sous
  le numéro de dossier. Modification du libellé 'surface' en 'surface créée'.
  Affichage de la date limite d'instruction que si le statut n'est pas incomplet.
  Dans la description du projet retour à la ligne entre les différents champs.
* Amélioration - Dans les demandes d'avis ajout d'une colonne 'avis rendu' à droite
  du tableau des demandes passées. Dans le formulaire ajout des contraintes,
  affichage identique à celui du DI, mais filtrage sur les contraintes présentées
  aux services consultés.
* Amélioration - Pour une meilleure visibilité modification de l'affichage des données
  techniques avec par exemple retour à la ligne.

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

Properties

Name Value
svn:keywords Id

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26