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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2112 - (hide annotations)
Wed Jul 24 17:08:32 2013 UTC (11 years, 6 months ago) by softime
File size: 73043 byte(s)
Ajout du champ dossier_libelle pour la table dossier
Ajout du champ dossier_autorisation_libelle pour la table dossier_autorisation
Génération OM
Modification des formulaires, messages, tableaux et fil d'Ariane pour affiché le numéro de dossier formaté
Traduction des nouveaux champs
Correction des tests utilisant les numéro de dossier
MàJ HISTORY.txt

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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26