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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1908 - (hide annotations)
Mon May 27 07:54:33 2013 UTC (11 years, 8 months ago) by fmichon
File size: 64544 byte(s)
Correction de la gestion des permissions en fonction de la division sur les objets en onglet dans le contexte d'un dossier d'instruction.

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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26