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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2313 - (hide 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 fraynaud 3 <?php
2     //$Id$
3 nhaye 427 //gen openMairie le 10/02/2011 20:39
4    
5 fraynaud 3 require_once ("../gen/obj/dossier.class.php");
6 mlimic 835 require_once("../services/outgoing/messageenqueuer.php");
7 fraynaud 3
8     class dossier extends dossier_gen {
9    
10 fraynaud 20 var $maj;
11 fraynaud 128 var $sig;
12     var $servitude="";
13     var $auto_pos;
14     var $auto_servitude_surfacique;
15 fraynaud 142 var $auto_servitude_ligne;
16     var $auto_servitude_point;
17     var $auto_parcelle;
18     var $auto_parcelle_lot;
19 nhaye 467 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 fmichon 1005 var $dossier_instruction_type;
29 nhaye 1376 var $valIdDemandeur = array("petitionnaire_principal" => "",
30     "delegataire" => "",
31     "petitionnaire" => array());
32     var $postedIdDemandeur = array("petitionnaire_principal" => "",
33     "delegataire" => "",
34     "petitionnaire" => array());
35 nhaye 467
36 fmichon 943 function dossier($id,&$db,$DEBUG) {
37 nhaye 467 $this->constructeur($id,$db,$DEBUG);
38     } // fin constructeur
39 vpihour 1185
40 fmichon 1005 /*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 fmichon 943 // {{{ 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 vpihour 2104 $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 fmichon 943 }
76 vpihour 1978
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 softime 2273
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 fmichon 943 }
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 vpihour 1978 // 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 fmichon 943 //
125     return true;
126     }
127    
128     /**
129 fmichon 1908 * 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 fmichon 943 */
134 fmichon 1908 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 fmichon 943 function getDivisionFromDossier() {
143 fmichon 1908
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 fmichon 943 }
153 fmichon 1908
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 fmichon 943 }
185    
186     // }}}
187 fmichon 1005 /*
188     * Ajoute un numéro au dossier
189     *
190     */
191 nhaye 427 function setValFAjout($val = array()) {
192 fmichon 1005
193 vpihour 2119 //Récupération de la lettre associé au type de dossier d'instruction
194 fmichon 1005 $code = $this->getCode($this->getDossierInstructionType());
195    
196 vpihour 2119 //Récupération de la valeur du suffixe ce dossier_instruction_type
197 fmichon 1005 $suffixe = $this->getSuffixe($this->getDossierInstructionType());
198    
199 vpihour 2119 //S'il est à TRUE, on récupère le numéro de version du dossier d'autorisation
200 fmichon 1005 $numeroVersion = "";
201 vpihour 2119 $numeroVersionDIT = "";
202 fmichon 1005 if ( $suffixe == 't' ){
203    
204 vpihour 2119 //Récupération du numéro de version
205 fmichon 1005 $numeroVersion = $this->getNumeroVersion($val['dossier_autorisation']);
206    
207 vpihour 2119 //Incrémentation du numéro de version
208 fmichon 1005 if ( is_numeric($numeroVersion) or $numeroVersion == -1 ){
209    
210     $this->incrementNumeroVersion($val['dossier_autorisation'], ++$numeroVersion);
211     }
212 vpihour 2119 //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 fmichon 1005 }
217    
218 vpihour 2119 //Création du numéro de dossier
219     $this->valF['dossier'] = $val['dossier_autorisation'].$code.$numeroVersionDossierInstructionType;
220 nhaye 1643 $this->valF['version'] = $numeroVersion;
221 softime 2112
222     // Identifiant du dossier d'instruction lisible
223     // Ex : DP 013055 13 00002P0
224 vpihour 2119 $this->valF['dossier_libelle'] = $this->get_dossier_autorisation_libelle($val['dossier_autorisation']).$code.$numeroVersionDossierInstructionType;
225 nhaye 427 }
226 fraynaud 3
227 fmichon 1005 /*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 softime 2112
324     /**
325 vpihour 2119 * 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 softime 2204 public function getNumeroVersionDossierInstructionType($dossier_autorisation, $dossier_instruction_type, $numero_version, $increment = true){
331 vpihour 2119
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 softime 2204
382     //
383     if ($increment === true) {
384     $numeroVersionDossierInstructionType = ++$numeroVersionDossierInstructionType;
385     }
386 vpihour 2119 //On compléte par des 0 à gauche
387 softime 2204 $numeroVersionDossierInstructionType = str_pad($numeroVersionDossierInstructionType, 2, "0", STR_PAD_LEFT);
388 vpihour 2119
389     return $numeroVersionDossierInstructionType;
390     }
391     //Sinon on retourne le numéro de version
392     else{
393     return $numeroVersionDossierInstructionType;
394     }
395     }
396     /**
397 softime 2112 * 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 fmichon 1005
421 fraynaud 11 function setvalF($val){
422 nhaye 427 parent::setvalF($val);
423 nhaye 1376
424     // Récupération des id demandeurs postés
425     $this->getPostedValues();
426    
427 fraynaud 126 // enlever les valeurs a ne pas saisir -> recherche en trigger ajouter et modifier
428     // $sig = 1
429 fraynaud 369 unset ($this->valF['geom']);
430     unset ($this->valF['geom1']);
431 fraynaud 20 // 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 vpihour 489 unset ($this->valF['avis_decision']); // avis + libelle avis
439 fraynaud 20 unset ($this->valF['terrain_surface_calcul']);
440     unset ($this->valF['shon_calcul']);
441     unset ($this->valF['parcelle_archive']);
442 fraynaud 144 unset ($this->valF['parcelle_lot_archive']);
443 fraynaud 20 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 nhaye 427 unset ($this->valF['date_conformite']);
450 softime 2142
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 fraynaud 11 }
454    
455 vpihour 1058 /*Vérification des données saisies*/
456 fraynaud 11 function verifier($val,&$db,$DEBUG){
457 nhaye 427 parent::verifier($val,$db,$DEBUG);
458 nhaye 1376 if(!isset($this->postedIdDemandeur["petitionnaire_principal"]) OR
459     empty($this->postedIdDemandeur["petitionnaire_principal"])) {
460     $this->correct = false;
461 fmichon 1725 $this->addToMessage(_("La saisie d'un petitionnaire principal est obligatoire."));
462 nhaye 1376 }
463 fraynaud 11 if($val['parcelle']!="" and $val['sig']!='Oui'){
464 vpihour 584 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 fraynaud 126 $this->correct=false;
466 vpihour 575 $this->addToMessage("<br>format parcelle incorrect");
467 fraynaud 126 }
468 fraynaud 11 }
469     }//verifier
470    
471    
472     function setType(&$form,$maj) {
473 nhaye 427 parent::setType($form,$maj);
474 softime 2112 $form->setType('dossier','hidden');
475 nhaye 1457 $form->setType('amenagement','hidden'); // PC
476     $form->setType('parcelle_lot','hidden'); // PC
477     $form->setType('parcelle_lot_lotissement','hidden'); // PC
478 nhaye 1643 $form->setType('version','hidden'); // PC
479 nhaye 1717 $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 softime 2142 $form->setType('duree_validite','hidden');
484 fraynaud 11 if ($maj < 2) { //ajouter et modifier
485 fraynaud 20 // cache
486 softime 2112 if($maj==0) $form->setType('dossier_libelle', 'hidden');
487 fraynaud 11 $form->setType('annee', 'hidden');
488 fraynaud 144 $form->setType('parcelle_archive','hidden');
489     $form->setType('parcelle_lot_archive','hidden');
490 fraynaud 369
491     $form->setType('geom1', 'hidden');
492 nhaye 2240 $form->setType('geom', 'hiddenstatic');
493 softime 2061 $form->setType('servitude', 'hiddenstatic');
494 nhaye 427
495 fraynaud 11
496     // hiddenstatic
497 softime 2112 if($maj==1) $form->setType('dossier_libelle', 'hiddenstatic');
498 fraynaud 20 $form->setType('etat','hiddenstatic');
499 vpihour 489 $form->setType('avis_decision','hiddenstatic');
500 nhaye 1748 $form->setType('delai_incompletude','hiddenstatic');
501 fraynaud 11 $form->setType('delai','hiddenstatic');
502     $form->setType('terrain_surface_calcul','hiddenstatic');
503 fraynaud 20 $form->setType('shon_calcul','hiddenstatic');
504 fraynaud 11
505 fraynaud 20 $form->setType('accord_tacite','hiddenstatic');
506 fraynaud 11
507 fraynaud 20
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 nhaye 1748 $form->setType('date_limite_incompletude','hiddenstaticdate');
520    
521 nhaye 1749 $form->setType('date_demande','hiddenstaticdate');
522     $form->setType('date_depot','hiddenstaticdate');
523     $form->setType('date_dernier_depot','hiddenstaticdate');
524    
525 fraynaud 20 // checkbox
526 nhaye 1371 $form->setType('sig','checkbox');
527 fraynaud 20
528 fraynaud 11 // zones temp et strategysig
529 fraynaud 142
530    
531     // temp
532 fraynaud 266 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 fraynaud 11 $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 mlimic 858 $form->setType('a_qualifier', 'checkbox');
546 nhaye 1434
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 fraynaud 11 }
559 fmichon 686 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 nhaye 445 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 vpihour 2272 $form->setType('geom','static');
589 mlimic 858 $form->setType('a_qualifier', 'checkboxstatic');
590 nhaye 1676 $form->setType('terrain_references_cadastrales','referencescadastralesstatic'); // PC
591 nhaye 1434 $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 nhaye 445 }
603 softime 2120
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 softime 2139 $form->setType('numero_versement_archive', 'static');
612 softime 2120 $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 fmichon 686 //
628     if(!$this->f->getParameter('afficher_division') === 'true') {
629     $form->setType('division', 'hidden');
630     }
631 softime 2112 $form->setType('dossier_autorisation', 'hidden');
632     $form->setType('dossier_autorisation_libelle', 'hiddenstatic');
633 nhaye 1229 $form->setType('dossier_instruction_type', 'selecthiddenstatic');
634 fmichon 933 //
635     if ($maj == 0) {
636     $form->setType('dossier_autorisation', 'select');
637     }
638 nhaye 948 // On cache enjeu_ERP si l'option n'est pas activée
639 fmichon 959 if($this->f->getParameter('option_ERP') != 'true') {
640 nhaye 948 $form->setType('erp', 'hidden');
641     $form->setType('enjeu_erp', 'hidden');
642     }
643 fraynaud 11 }
644    
645     function setVal(&$form,$maj,$validation){
646 fraynaud 20 $this->maj=$maj;
647 nhaye 2240
648 softime 2313 if($this->getVal('geom') != ""
649     && $this->f->getParameter('option_sig') == 'sig_externe'
650     && $this->f->issetSIGParameter() === true) {
651 nhaye 2240 $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 fraynaud 11 if ($validation==0) {
659     if ($maj == 0){
660 nhaye 467 //$dossier_cp = $this->f->collectivite["cp"];
661     //$dossier_ville = $this->f->collectivite["ville"];
662 fraynaud 11
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 nhaye 467 //$form->setVal('demandeur_cp', $dossier_cp);
668     //$form->setVal('demandeur_ville', $dossier_ville);
669 fraynaud 11
670 nhaye 467 //$form->setVal('delegataire_cp', $dossier_cp);
671     //$form->setVal('delegataire_ville', $dossier_ville);
672 fraynaud 11
673 nhaye 467 //$form->setVal('terrain_cp', $dossier_cp);
674     //$form->setVal('terrain_ville', $dossier_ville);
675 fraynaud 11
676     $form->setVal('accord_tacite', 'Non');
677     $form->setVal('etat', 'initialiser');
678 nhaye 427 }
679 fraynaud 11 }
680     }
681    
682     function setSelect(&$form, $maj,&$db,$debug) {
683 nhaye 427 parent::setSelect($form, $maj,$db,$debug);
684 fraynaud 20 //optimisation sur table importante parcelle -> pas d appel methode parent
685 atreal 312 if(file_exists ("../sql/".$db->phptype."/".$this->table.".form.inc.php"))
686     include ("../sql/".$db->phptype."/".$this->table.".form.inc.php");
687 fraynaud 11 if($maj<2){
688 fraynaud 142 // 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 fraynaud 11 // accord tacite
702     $contenu=array();
703     $contenu[0]=array('Non','Oui');
704     $contenu[1]=array('Non','Oui');
705     $form->setSelect("accord_tacite",$contenu);
706 softime 2061
707 fraynaud 338 // 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 nhaye 1023 // 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 vpihour 575 /*
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 fraynaud 11 }
738 nhaye 517 if($this->f->getParameter('afficher_division')==='true') {
739     // instructeur
740 nhaye 520 $this->init_select($form, $db, $maj, $debug, "instructeur",
741     $sql_instructeur_div, $sql_instructeur_div_by_id, false);
742 nhaye 517 }
743 fraynaud 11 }
744    
745 fraynaud 345 function setLib(&$form,$maj) {
746 nhaye 2240 parent::setLib($form,$maj);
747 nhaye 2244 $form->setLib('servitude',_('contraintes'));
748 nhaye 2240 $form->setLib('geom',_('centroide'));
749 nhaye 1734 $form->setLib('date_limite',_("date limite d'instruction"));
750 nhaye 1748 $form->setLib('delai',_("delai d'instruction"));
751 vpihour 2067 $form->setLib('accord_tacite',_("decision tacite"));
752 fraynaud 345 }
753    
754 fraynaud 11 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 fraynaud 20 $form->setOnchange("architecte_nom","this.value=this.value.toUpperCase()");
762 fraynaud 89 $form->setOnchange("terrain_adresse","this.value=this.value.toUpperCase()");
763 fraynaud 271 $form->setOnchange('shon','VerifNumdec(this)');
764     $form->setOnchange('shob','VerifNumdec(this)');
765     $form->setOnchange('hauteur','VerifNumdec(this)');
766 fraynaud 292 $form->setOnchange('terrain_surface','VerifNumdec(this)');
767 fraynaud 11 }
768    
769 fmichon 681 function setLayout(&$form, $maj) {
770 fmichon 686 //
771 softime 2112 $form->setBloc('dossier_libelle', 'D', '', ($maj == 3 ? 'col_9':'col_12'));
772     $form->setBloc('dossier_libelle', 'D', '', 'col_9');
773 nhaye 1457
774 softime 2112 $form->setFieldset('dossier_libelle', 'D', _("Dossier d'instruction"));
775 vpihour 2114 $form->setFieldset('numero_versement_archive', 'F');
776 nhaye 1457
777 vpihour 2114 $form->setBloc('numero_versement_archive', 'F');
778 nhaye 1457
779 nhaye 1434 $form->setBloc('date_demande', 'D', '', 'col_3');
780 nhaye 1457
781 nhaye 1434 $form->setFieldset('date_demande', 'D', _("Depot"));
782 nhaye 1571 $form->setFieldset('date_dernier_depot', 'F');
783 nhaye 1434
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 nhaye 1457
790 nhaye 1434 $form->setBloc('a_qualifier', 'F');
791     $form->setBloc('a_qualifier', 'F');
792 fmichon 686 //
793 nhaye 1750 $form->setBloc('date_complet', 'D', '', 'col_12');
794 nhaye 1457
795     $form->setFieldset('date_complet', 'D', _('Instruction'), 'col_12');
796 nhaye 1748
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 nhaye 1750 $form->setBloc('date_conformite', 'F');
805 nhaye 1748
806 nhaye 1750 $form->setFieldset('date_conformite','F','');
807 nhaye 1457
808 nhaye 1750 $form->setBloc('date_conformite', 'F');
809 fmichon 686
810 vpihour 1372 $form->setBloc('parcelle','D',"", "col_12");
811 nhaye 1457 $form->setBloc('geom1','F');
812 vpihour 1372
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 softime 2249
819     $form->setBloc('description','D',"", "col_12");
820     $form->setBloc('servitude','F','');
821 fmichon 681 }
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 fraynaud 15
836 fraynaud 20
837 nhaye 2244 $form->setRegroupe('description','D',_('description').' '._('contraintes'), $this->aff_amenagement);
838 fraynaud 256 $form->setRegroupe('servitude','F','');
839    
840 mlimic 858
841 fraynaud 11 }
842    
843 vpihour 584 /* =============================================================
844     * fonction trigger relative a la connexion SIG
845     * $sig = 1 dans dyn/var.inc
846 mlimic 835 * utilisé aussi pour envoyer une message au service REST d'ERP
847 vpihour 584 * ===============================================================
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 mlimic 835
863 mlimic 896
864 fmichon 1005 if ($this->f->getParameter('option_erp') != "") {
865     // envoi du message a ERP en cas d'un depot du dossier dat
866 nhaye 1140 if ($this->getDATDCode($this->valF['dossier']) ==
867 fmichon 1005 $this->f->getParameter('erp_depot_dossier_dat')) {
868 mlimic 915 $msgenque = new MessageEnqueuer();
869     $msgenque->setDossierInstructionIdentifier($this->valF['dossier']);
870 fmichon 1005 $msgenque->enqueueMessage($msgenque::$ERP_DEPOT_DOSSIER_DAT);
871 mlimic 915 }
872    
873 fmichon 1005 // envoi du message a ERP en cas d'une demande d'ouverture DAT
874 nhaye 1140 if ($this->getDATDCode($this->valF['dossier']) ==
875 fmichon 1005 $this->f->getParameter('erp_demande_ouverture_dat')) {
876 mlimic 915 $msgenque = new MessageEnqueuer();
877     $msgenque->setDossierInstructionIdentifier($this->valF['dossier']);
878 fmichon 1005 $msgenque->enqueueMessage($msgenque::$ERP_DEMANDE_OUVERTURE_DAT);
879 mlimic 915 }
880 fmichon 1005
881     if ($this->valF['erp'] === true) {
882     // envoi du message a ERP en cas d'annulation d'une demande
883 nhaye 1140 if ($this->getDATDCode($this->valF['dossier']) ==
884 fmichon 1005 $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 nhaye 1140 if ($this->getDATDCode($this->valF['dossier']) ==
893 fmichon 1005 $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 nhaye 1643 } // 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 softime 2267
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 vpihour 584 }
916    
917 vpihour 2302 /**
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 vpihour 575
926 vpihour 2302 $reference_cadastrale = trim($reference_cadastrale);
927     $quartier = '';
928 vpihour 575
929 vpihour 2302 //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 vpihour 575 if ( $quartier !== '' ){
945 vpihour 2302
946     //Requête de récupération de l'identifiantdu quartier et de
947     //l'arrondissement
948 vpihour 575 $sql = "SELECT
949     quartier, arrondissement
950     FROM
951 fmichon 923 ".DB_PREFIXE."quartier
952 vpihour 575 WHERE
953     code_impots='$quartier'";
954 vpihour 2302 $this->addToLog("getQuartierArrondissement() : db->query(\"$sql\")", VERBOSE_MODE);
955 vpihour 770 $res = $this->db->query($sql);
956 vpihour 2302 if (database::isError($res)) {
957     die();
958     }
959    
960     //Si on a un résultat
961     if ( $res->numRows() == 1 ){
962     //
963 vpihour 770 return $res->fetchRow(DB_FETCHMODE_ASSOC);
964 vpihour 575 }
965     }
966 vpihour 2302
967 vpihour 770 return NULL;
968 vpihour 2302 }
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 vpihour 575
978 vpihour 2302 $reference_cadastrale = trim($reference_cadastrale);
979     $section = NULL;
980 vpihour 575
981 vpihour 2302 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 vpihour 575
985 vpihour 2302 return $section;
986     }
987 vpihour 584
988     /*
989     * Retourne l'intructeur correspondant le mieux à la parcelle
990     * */
991 vpihour 2302 /**
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 vpihour 770
1002     $quartier = ( $quartier == NULL ) ? -1 : $quartier;
1003     $arrondissement = ( $arrondissement == NULL ) ? -1 : $arrondissement;
1004 vpihour 584
1005 vpihour 2302 //Récupération du dossier_autorisation_type_detaille concerné par le
1006     //$dossier_autorisation
1007 vpihour 584 $sql = "
1008     SELECT
1009 vpihour 939 dossier_autorisation_type_detaille
1010 vpihour 584 FROM
1011 vpihour 939 ".DB_PREFIXE."dossier_autorisation
1012 vpihour 584 WHERE
1013 vpihour 939 dossier_autorisation = '$dossier_autorisation'";
1014 vpihour 770
1015 vpihour 939 $this->addToLog("getInstructeurDivision : db->query(\"$sql\")", VERBOSE_MODE);
1016     $resDATD = $this->db->query($sql);
1017     if (database :: isError($resDATD))
1018 vpihour 2302 die($resDATD->getMessage()."erreur ".$sql);
1019    
1020     //Si le dossier d'autorisation a un type détaillé de dossier
1021     //d'autorisation associé
1022 vpihour 939 if ( $resDATD->numRows() > 0 ){
1023     $rowDATD = $resDATD->fetchRow(DB_FETCHMODE_ASSOC);
1024 vpihour 719
1025 vpihour 2302 //Requête de récupération de l'instructeur à affecter
1026 vpihour 939 $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 vpihour 2302 LIMIT 1";
1050 vpihour 939 $this->addToLog("getInstructeurDivision : db->query(\"$sql\")", VERBOSE_MODE);
1051 vpihour 770 $res = $this->db->query($sql);
1052 vpihour 719 if (database :: isError($res))
1053     die($res->getMessage()."erreur ".$sql);
1054 vpihour 939
1055 vpihour 2302 //Si on a récupéré un instructeur correspondant aux critères
1056 vpihour 719 if ( $res->numRows() > 0 ){
1057 vpihour 770
1058 vpihour 939 $row = $res->fetchRow(DB_FETCHMODE_ASSOC);
1059 vpihour 2302 //On récupère sa division
1060 vpihour 939 $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 vpihour 2302
1065     $row['division'] = NULL;
1066     //S'il a une division
1067 vpihour 939 if ( $res->numRows() > 0 ){
1068    
1069     $rowT=& $res->fetchRow(DB_FETCHMODE_ASSOC);
1070     $row['division'] = $rowT['division'];
1071     }
1072    
1073     return $row;
1074 vpihour 719 }
1075 fraynaud 11 }
1076 vpihour 939
1077 vpihour 584 return NULL;
1078     }
1079 vpihour 575
1080     /* =============================================================
1081     * fonction trigger relative a la connexion SIG
1082     * $sig = 1 dans dyn/var.inc
1083     * ===============================================================
1084     */
1085 fraynaud 11
1086 vpihour 575 function triggerajouter($id,&$db,$val,$DEBUG) {
1087 fmichon 727 //
1088     $this->addToLog("triggerajouter() : start", EXTRA_VERBOSE_MODE);
1089 vpihour 626
1090 fmichon 727 // Initialisation des variables nécessaires à l'affectation automatique
1091 vpihour 770 $quartier = NULL;
1092     $arrondissement = NULL;
1093     $section = NULL;
1094 fmichon 871 $instructeur = NULL;
1095 vpihour 2302
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 vpihour 770 if ( $quartierArrondissement!= NULL ){
1104    
1105     $quartier = $quartierArrondissement['quartier'];
1106     $arrondissement = $quartierArrondissement['arrondissement'];
1107 fmichon 727 }
1108 vpihour 770 // 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 fmichon 727 // On récupère la section
1115 vpihour 2302 $section = $this->getSection($this->valF['terrain_references_cadastrales']);
1116 fmichon 727 }
1117 vpihour 2302
1118 vpihour 939 // Si aucun instructeur n'est saisi et que la dossier_autorisation_type_detaille n'est pas vide
1119 fmichon 727 // alors on récupère l'instructeur et la division depuis l'affectation
1120 vpihour 939 if ( ( empty($this->valF['instructeur']) || $this->valF['instructeur'] == '' ) && $val['dossier_autorisation'] != '' ) {
1121 vpihour 770
1122 vpihour 2302 //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 vpihour 770 if ( $instructeurDivision != NULL ){
1127    
1128     $instructeur = $instructeurDivision['instructeur'];
1129     $division = $instructeurDivision['division'];
1130     }
1131 vpihour 2302 //Si un instructeur et sa division n'ont pas été récupérés, on
1132     //ajoute pas les données
1133 fmichon 727 if ( $instructeur != NULL ){
1134 vpihour 770
1135 fmichon 727 $this->valF['instructeur'] = $instructeur;
1136     $this->valF['division'] = $division;
1137     } else {
1138 vpihour 2302 //On affiche un message à l'utilisateur pour lui signifier
1139     //qu'aucun instructeur n'a été assigné au dossier d'instruction
1140     //créé
1141 fmichon 727 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 vpihour 719 }
1146     }
1147 fmichon 727 } 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 vpihour 584 }
1150 fmichon 727 //
1151     $this->addToLog("triggerajouter() : end", EXTRA_VERBOSE_MODE);
1152 vpihour 575 }
1153    
1154 fraynaud 44 function triggermodifierapres($id,&$db,$val,$DEBUG) {
1155 fraynaud 128 $this->sig_parametre($db);
1156 fraynaud 44 // si la parcelle est changée
1157 fraynaud 144 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 fraynaud 142 if($val['parcelle']!='' or $val['parcelle_lot']!='')
1160 fmichon 344 $this->sig_interne($this->valF['dossier'],$db,$val,$DEBUG);
1161 fraynaud 256 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 fraynaud 142 $this->addToMessage("<br>"._("Parcelle ou parcelle_lot non renseignee dans dossier")." ".$id." <br>");
1170 fraynaud 256 }
1171 mlimic 835 }
1172 fmichon 1005
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 nhaye 1140 if ($this->getDATDCode($this->valF['dossier']) ==
1181 fmichon 1005 $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 nhaye 1140 if ($this->getDATDCode($this->valF['dossier']) ==
1194 fmichon 1005 $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 mlimic 896 }
1202 nhaye 1377 } // fin de if($this->f->getParameter('option_erp'))
1203 nhaye 1140
1204 nhaye 1376 // Ajout ou modification des demandeurs
1205     $this->insertLinkDemandeDemandeur($db, $DEBUG);
1206 softime 2267
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 nhaye 1376 }
1222 nhaye 1377
1223 nhaye 1643 /**
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 softime 2267
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 nhaye 1643 }
1237 nhaye 1377
1238 nhaye 1140 /**
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 nhaye 1196 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 vpihour 1777 $this->f->addToLog("getDATDCode() : db->getOne(\"".$sql."\")", VERBOSE_MODE);
1252     if ( database::isError($res)){
1253     die();
1254     }
1255 nhaye 1140 return $res;
1256     }
1257 mlimic 896
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 fmichon 923 $sql = "SELECT terrain_references_cadastrales FROM ".DB_PREFIXE."demande WHERE dossier_instruction = '" . $dossier . "'";
1268 mlimic 896 $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 fraynaud 11
1285 fraynaud 128 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 fraynaud 142 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 fraynaud 128 $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 fraynaud 142 $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 fraynaud 128 }
1324    
1325    
1326     function sig_interne($id,&$db,$val,$DEBUG){
1327 fraynaud 12 // 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 fraynaud 145 $geom='';
1331 fraynaud 144 $parcelle=$val["parcelle"];
1332 fraynaud 44 $projection = $db -> getOne("select srid from geometry_columns where f_table_name='dossier'");
1333 fraynaud 144 if($this->auto_parcelle==1 and $val["parcelle"]!=''){
1334 fraynaud 242 $sql= "select astext(centroid(geom)) from ".DB_PREFIXE."parcelle where parcelle ='".$val["parcelle"]."'";
1335 fraynaud 144 $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 fraynaud 242 $sql= "select astext(centroid(geom)) from ".DB_PREFIXE."parcelle_lot where parcelle_lot ='".$val["parcelle_lot"]."'";
1341 fraynaud 142 $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 fraynaud 144 $parcelle=$val["parcelle_lot"]." ".$val["parcelle_lot_lotissement"];
1345 fraynaud 142 }
1346 fraynaud 134 if($geom!=''){ // la parcelle est exitante dans la table ou vue parcelle
1347 fraynaud 242 $sql ="update ".DB_PREFIXE."dossier set geom =geometryfromtext('".$geom."', ".$projection." ) where dossier ='".$id."'";
1348 fraynaud 103 $this->addToLog("sig_interne maj geom :".$sql, VERBOSE_MODE);
1349 fraynaud 11 $res = $db -> query($sql);
1350 fraynaud 144 if (database :: isError($res)) die($res->getMessage()."erreur ".$sql);
1351 fraynaud 232 $this->addToMessage(""._("centroid de parcelle calcule")." ".$parcelle." ");
1352 fraynaud 128 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 fraynaud 134 if($this->auto_servitude_ligne==1) // recherche de servitude ligne
1357 fraynaud 128 $this->calcul_auto_servitude_ligne($id,$db,$geom,$projection);
1358 fraynaud 134 if($this->auto_servitude_point==1) // recherche de servitude point
1359     $this->calcul_auto_servitude_point($id,$db,$geom,$projection);
1360 fraynaud 128 $temp=strtr($this->servitude,"'"," "); // enleve le '
1361 fraynaud 242 $sql1 ="update ".DB_PREFIXE."dossier set servitude = '".$temp."' where dossier = '".$id."'";
1362 fraynaud 128 $res1 = $db -> query($sql1);
1363 fraynaud 134 $this->addToLog("maj servitudes :".$sql1, VERBOSE_MODE);
1364 fraynaud 128 if (database:: isError($res1)) die($res1->getMessage()."erreur ".$sql1);
1365 fraynaud 256 }else{ // parcelle inexistante //***
1366 fraynaud 44 if($this->maj ==1){ // en maj mettre a null la geometrie si parcelle changée inexistante
1367 fraynaud 256 $sql ="update ".DB_PREFIXE."dossier set geom = null, servitude = '', pos= '' where dossier ='".$id."'";
1368 fraynaud 44 $res = $db -> query($sql);
1369 fraynaud 103 $this->addToLog("requete sig_interne maj parcelle inexistante :".$sql, VERBOSE_MODE);
1370 fraynaud 44 if (database :: isError($res))
1371     die($res->getMessage()."erreur ".$sql);
1372     }
1373 vpihour 626 //$this->addToMessage("<br> parcelle ".$parcelle." "._("inexistante")." ".$id."");
1374 fraynaud 11 }
1375     }
1376    
1377 fraynaud 128 function calcul_auto_pos($id,&$db,$geom,$projection){
1378 fraynaud 134 // recherche du pos automatique
1379 fraynaud 242 $sql="select pos from ".DB_PREFIXE."pos WHERE ST_contains(geom, geometryfromtext('".$geom."', ".$projection."))";
1380 fraynaud 44 $pos = $db -> getOne($sql);
1381 fraynaud 103 $this->addToLog("recherche auto_pos :".$sql, VERBOSE_MODE);
1382 fraynaud 44 if($pos!=''){
1383 fraynaud 242 $sql1 ="update ".DB_PREFIXE."dossier set pos = '".$pos."' where dossier = '".$id."'";
1384 fraynaud 44 $res1 = $db -> query($sql1);
1385 fraynaud 103 $this->addToLog("maj auto_pos :".$sql1, VERBOSE_MODE);
1386 fraynaud 126 if (database:: isError($res1)) die($res1->getMessage()."erreur ".$sql1);
1387 fraynaud 128 $this->addToMessage("<br>"._("POS/PLU")." : ".$pos."");
1388 fraynaud 44 }else{
1389 atreal 316 $this->addToMessage("<br>"._("POS/PLU non trouve")." ".$id."");
1390 fraynaud 44 }
1391     }
1392    
1393 fraynaud 128 function calcul_auto_servitude_surfacique($id,&$db,$geom,$projection){
1394 fraynaud 134 // recherche servitude surfacique
1395 fraynaud 242 $sql="select * from ".DB_PREFIXE."servitude_surfacique WHERE ST_contains(geom, geometryfromtext('".$geom."', ".$projection."))";
1396 fraynaud 126 $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 fraynaud 128 $this->servitude.=" [".$row['libelle']."] ".$row['observation']." - ";
1402     }
1403 fraynaud 126 }
1404 fraynaud 44
1405 fraynaud 128 function calcul_auto_servitude_ligne($id,&$db,$geom,$projection){
1406 fraynaud 134 // recherche servitude ligne
1407 fraynaud 242 $sql="select * from ".DB_PREFIXE."servitude_ligne WHERE ST_contains(ST_buffer(geom, perimetre), geometryfromtext('".$geom."', ".$projection."))";
1408 fraynaud 128 $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 nhaye 2244 $this->addToMessage("<br>"._("contraintes")." : ".$row['libelle']." - ".$row['observation']);
1413 fraynaud 128 $this->servitude.=" [".$row['libelle']."] ".$row['observation']." - ";
1414     }
1415     }
1416 fraynaud 126
1417 fraynaud 134 function calcul_auto_servitude_point($id,&$db,$geom,$projection){
1418     // recherche servitude point
1419 fraynaud 242 $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 fraynaud 134 $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 nhaye 2244 $this->addToMessage("<br>"._("contraintes")." : ".$row['libelle']." - ".$row['observation']." a ".round($row['distance'],2)." m ");
1426 fraynaud 137 $this->servitude.=" [".$row['libelle']."] ".$row['observation']." a ".round($row['distance'],2)." m - ";
1427 fraynaud 134 }
1428     }
1429 nhaye 1376
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 nhaye 1399 $this->addLinkDossierDemandeur($this->postedIdDemandeur['delegataire'], false, $db, $DEBUG);
1447 nhaye 1376 }
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 vpihour 1777 if ( database::isError($res)){
1489     die();
1490     }
1491 nhaye 1376
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 fmichon 1713 * 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 nhaye 1376 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 fmichon 1713 $this->f->addToLog("listeDemandeur(): db->query(\"".$sql."\")", VERBOSE_MODE);
1535 vpihour 1777 if ( database::isError($res)){
1536     die();
1537     }
1538 fmichon 1713 // Stockage du résultat dans un tableau
1539 nhaye 1376 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 softime 2120 if($maj < 2 AND !$this->correct AND !$this->f->isUserQualificateur()) {
1560 nhaye 1376 $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 nhaye 1396 if($maj < 2 AND $linkable) {
1594 nhaye 1376 // 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 nhaye 1396 if($maj < 2 AND $linkable) {
1620 nhaye 1376 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 nhaye 1396 if ($maj < 2 AND $linkable) {
1653 nhaye 1376 // 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 vpihour 1978
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 softime 2112
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 softime 2120 // 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 softime 2112 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 softime 2162 function getFormTitle($ent) {
1782 softime 2112
1783     // Fil d'Ariane
1784     $ent = _("instruction")." -> "._("dossiers d'instruction");
1785    
1786     // Si différent de l'ajout
1787 softime 2162 if($this->getParameter("maj") != 0) {
1788 softime 2112 // Si le champ dossier_libelle existe
1789 softime 2162 if (trim($this->getVal("dossier_libelle")) != '') {
1790     $ent .= " -> ".strtoupper($this->getVal("dossier_libelle"));
1791 softime 2112 }
1792     // Si le champ dossier existe
1793 softime 2162 if (trim($this->getVal("dossier")) != '') {
1794     $demandeur = $this->get_demandeur($this->getVal("dossier"));
1795 softime 2112 // 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 softime 2162 return $ent;
1804 softime 2112 }
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 softime 2142
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 softime 2267
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 vpihour 1978
1913 fraynaud 3 }// fin classe
1914     ?>

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26