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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2114 - (hide annotations)
Thu Jul 25 15:13:55 2013 UTC (11 years, 6 months ago) by vpihour
File size: 73053 byte(s)
Ajout d'un nouveau champ dans la table dossier, numero_versement_archive

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 vpihour 2114 $form->setFieldset('numero_versement_archive', 'F');
669 nhaye 1457
670 vpihour 2114 $form->setBloc('numero_versement_archive', '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