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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2114 - (show 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 <?php
2 //$Id$
3 //gen openMairie le 10/02/2011 20:39
4
5 require_once ("../gen/obj/dossier.class.php");
6 require_once("../services/outgoing/messageenqueuer.php");
7
8 class dossier extends dossier_gen {
9
10 var $maj;
11 var $sig;
12 var $servitude="";
13 var $auto_pos;
14 var $auto_servitude_surfacique;
15 var $auto_servitude_ligne;
16 var $auto_servitude_point;
17 var $auto_parcelle;
18 var $auto_parcelle_lot;
19 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 var $dossier_instruction_type;
29 var $valIdDemandeur = array("petitionnaire_principal" => "",
30 "delegataire" => "",
31 "petitionnaire" => array());
32 var $postedIdDemandeur = array("petitionnaire_principal" => "",
33 "delegataire" => "",
34 "petitionnaire" => array());
35
36 function dossier($id,&$db,$DEBUG) {
37 $this->constructeur($id,$db,$DEBUG);
38 } // fin constructeur
39
40 /*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 // {{{ 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->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 }
76
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 }
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 // 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 //
118 return true;
119 }
120
121 /**
122 * 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 */
127 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 function getDivisionFromDossier() {
136
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 }
146
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 }
178
179 // }}}
180 /*
181 * Ajoute un numéro au dossier
182 *
183 */
184 function setValFAjout($val = array()) {
185
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 $this->valF['dossier'] = $val['dossier_autorisation']."$code$numeroVersion";
207 $this->valF['version'] = $numeroVersion;
208
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 }
213
214 /*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
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
336 function setvalF($val){
337 parent::setvalF($val);
338
339 // Récupération des id demandeurs postés
340 $this->getPostedValues();
341
342 // enlever les valeurs a ne pas saisir -> recherche en trigger ajouter et modifier
343 // $sig = 1
344 unset ($this->valF['geom']);
345 unset ($this->valF['geom1']);
346 // 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 unset ($this->valF['avis_decision']); // avis + libelle avis
354 unset ($this->valF['terrain_surface_calcul']);
355 unset ($this->valF['shon_calcul']);
356 unset ($this->valF['parcelle_archive']);
357 unset ($this->valF['parcelle_lot_archive']);
358 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 unset ($this->valF['date_conformite']);
365 }
366
367 /*Vérification des données saisies*/
368 function verifier($val,&$db,$DEBUG){
369 parent::verifier($val,$db,$DEBUG);
370 if(!isset($this->postedIdDemandeur["petitionnaire_principal"]) OR
371 empty($this->postedIdDemandeur["petitionnaire_principal"])) {
372 $this->correct = false;
373 $this->addToMessage(_("La saisie d'un petitionnaire principal est obligatoire."));
374 }
375 if($val['parcelle']!="" and $val['sig']!='Oui'){
376 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 $this->correct=false;
378 $this->addToMessage("<br>format parcelle incorrect");
379 }
380 }
381 }//verifier
382
383
384 function setType(&$form,$maj) {
385 parent::setType($form,$maj);
386 $form->setType('dossier','hidden');
387 $form->setType('amenagement','hidden'); // PC
388 $form->setType('parcelle_lot','hidden'); // PC
389 $form->setType('parcelle_lot_lotissement','hidden'); // PC
390 $form->setType('version','hidden'); // PC
391 $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 if ($maj < 2) { //ajouter et modifier
396 // cache
397 if($maj==0) $form->setType('dossier_libelle', 'hidden');
398 $form->setType('annee', 'hidden');
399 $form->setType('parcelle_archive','hidden');
400 $form->setType('parcelle_lot_archive','hidden');
401
402 $form->setType('geom1', 'hidden');
403 $form->setType('geom', 'geom');
404 $form->setType('servitude', 'hiddenstatic');
405
406
407 // hiddenstatic
408 if($maj==1) $form->setType('dossier_libelle', 'hiddenstatic');
409 $form->setType('etat','hiddenstatic');
410 $form->setType('avis_decision','hiddenstatic');
411 $form->setType('delai_incompletude','hiddenstatic');
412 $form->setType('delai','hiddenstatic');
413 $form->setType('terrain_surface_calcul','hiddenstatic');
414 $form->setType('shon_calcul','hiddenstatic');
415
416 $form->setType('accord_tacite','hiddenstatic');
417
418
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 $form->setType('date_limite_incompletude','hiddenstaticdate');
431
432 $form->setType('date_demande','hiddenstaticdate');
433 $form->setType('date_depot','hiddenstaticdate');
434 $form->setType('date_dernier_depot','hiddenstaticdate');
435
436 // checkbox
437 $form->setType('sig','checkbox');
438
439 // zones temp et strategysig
440
441
442 // temp
443 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 $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 $form->setType('a_qualifier', 'checkbox');
457
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 }
470 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 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 $form->setType('geom','hidden');
500 $form->setType('a_qualifier', 'checkboxstatic');
501 $form->setType('terrain_references_cadastrales','referencescadastralesstatic'); // PC
502 $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 }
514 //
515 if(!$this->f->getParameter('afficher_division') === 'true') {
516 $form->setType('division', 'hidden');
517 }
518 $form->setType('dossier_autorisation', 'hidden');
519 $form->setType('dossier_autorisation_libelle', 'hiddenstatic');
520 $form->setType('dossier_instruction_type', 'selecthiddenstatic');
521 //
522 if ($maj == 0) {
523 $form->setType('dossier_autorisation', 'select');
524 }
525 // On cache enjeu_ERP si l'option n'est pas activée
526 if($this->f->getParameter('option_ERP') != 'true') {
527 $form->setType('erp', 'hidden');
528 $form->setType('enjeu_erp', 'hidden');
529 }
530 }
531
532 function setVal(&$form,$maj,$validation){
533 $this->maj=$maj;
534 if ($validation==0) {
535 if ($maj == 0){
536 //$dossier_cp = $this->f->collectivite["cp"];
537 //$dossier_ville = $this->f->collectivite["ville"];
538
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 //$form->setVal('demandeur_cp', $dossier_cp);
544 //$form->setVal('demandeur_ville', $dossier_ville);
545
546 //$form->setVal('delegataire_cp', $dossier_cp);
547 //$form->setVal('delegataire_ville', $dossier_ville);
548
549 //$form->setVal('terrain_cp', $dossier_cp);
550 //$form->setVal('terrain_ville', $dossier_ville);
551
552 $form->setVal('accord_tacite', 'Non');
553 $form->setVal('etat', 'initialiser');
554 }
555 }
556 }
557
558 function setSelect(&$form, $maj,&$db,$debug) {
559 parent::setSelect($form, $maj,$db,$debug);
560 //optimisation sur table importante parcelle -> pas d appel methode parent
561 if(file_exists ("../sql/".$db->phptype."/".$this->table.".form.inc.php"))
562 include ("../sql/".$db->phptype."/".$this->table.".form.inc.php");
563 if($maj<2){
564 // 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 // accord tacite
578 $contenu=array();
579 $contenu[0]=array('Non','Oui');
580 $contenu[1]=array('Non','Oui');
581 $form->setSelect("accord_tacite",$contenu);
582
583 // 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 // 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 /*
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 }
614 if($this->f->getParameter('afficher_division')==='true') {
615 // instructeur
616 $this->init_select($form, $db, $maj, $debug, "instructeur",
617 $sql_instructeur_div, $sql_instructeur_div_by_id, false);
618 }
619 }
620
621 function setLib(&$form,$maj) {
622 parent::setLib($form,$maj);
623 $form->setLib('geom','');
624 $form->setLib('date_limite',_("date limite d'instruction"));
625 $form->setLib('delai',_("delai d'instruction"));
626 $form->setLib('accord_tacite',_("decision tacite"));
627 }
628
629 function setGroupe(&$form,$maj){
630
631 // localisation
632 $form->setGroupe('parcelle','D');
633 $form->setGroupe('pos','G');
634 if($maj==1){
635 $form->setGroupe('sig','G');
636 $form->setGroupe('geom','F');
637 }else {
638 $form->setGroupe('sig','F');
639 }
640 if($maj==1){
641 $form->setGroupe('sig','G');
642 $form->setGroupe('geom','F');
643 }
644
645 }
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 $form->setOnchange("architecte_nom","this.value=this.value.toUpperCase()");
655 $form->setOnchange("terrain_adresse","this.value=this.value.toUpperCase()");
656 $form->setOnchange('shon','VerifNumdec(this)');
657 $form->setOnchange('shob','VerifNumdec(this)');
658 $form->setOnchange('hauteur','VerifNumdec(this)');
659 $form->setOnchange('terrain_surface','VerifNumdec(this)');
660 }
661
662 function setLayout(&$form, $maj) {
663 //
664 $form->setBloc('dossier_libelle', 'D', '', ($maj == 3 ? 'col_9':'col_12'));
665 $form->setBloc('dossier_libelle', 'D', '', 'col_9');
666
667 $form->setFieldset('dossier_libelle', 'D', _("Dossier d'instruction"));
668 $form->setFieldset('numero_versement_archive', 'F');
669
670 $form->setBloc('numero_versement_archive', 'F');
671
672 $form->setBloc('date_demande', 'D', '', 'col_3');
673
674 $form->setFieldset('date_demande', 'D', _("Depot"));
675 $form->setFieldset('date_dernier_depot', 'F');
676
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
683 $form->setBloc('a_qualifier', 'F');
684 $form->setBloc('a_qualifier', 'F');
685 //
686 $form->setBloc('date_complet', 'D', '', 'col_12');
687
688 $form->setFieldset('date_complet', 'D', _('Instruction'), 'col_12');
689
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 $form->setBloc('date_conformite', 'F');
698
699 $form->setFieldset('date_conformite','F','');
700
701 $form->setBloc('date_conformite', 'F');
702
703 $form->setBloc('parcelle','D',"", "col_12");
704 $form->setBloc('geom1','F');
705
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 }
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
726
727 $form->setRegroupe('description','D',_('description').' '._('servitude'), $this->aff_amenagement);
728 $form->setRegroupe('servitude','F','');
729
730
731 }
732
733 /* =============================================================
734 * fonction trigger relative a la connexion SIG
735 * $sig = 1 dans dyn/var.inc
736 * utilisé aussi pour envoyer une message au service REST d'ERP
737 * ===============================================================
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
753
754 if ($this->f->getParameter('option_erp') != "") {
755 // envoi du message a ERP en cas d'un depot du dossier dat
756 if ($this->getDATDCode($this->valF['dossier']) ==
757 $this->f->getParameter('erp_depot_dossier_dat')) {
758 $msgenque = new MessageEnqueuer();
759 $msgenque->setDossierInstructionIdentifier($this->valF['dossier']);
760 $msgenque->enqueueMessage($msgenque::$ERP_DEPOT_DOSSIER_DAT);
761 }
762
763 // envoi du message a ERP en cas d'une demande d'ouverture DAT
764 if ($this->getDATDCode($this->valF['dossier']) ==
765 $this->f->getParameter('erp_demande_ouverture_dat')) {
766 $msgenque = new MessageEnqueuer();
767 $msgenque->setDossierInstructionIdentifier($this->valF['dossier']);
768 $msgenque->enqueueMessage($msgenque::$ERP_DEMANDE_OUVERTURE_DAT);
769 }
770
771 if ($this->valF['erp'] === true) {
772 // envoi du message a ERP en cas d'annulation d'une demande
773 if ($this->getDATDCode($this->valF['dossier']) ==
774 $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 if ($this->getDATDCode($this->valF['dossier']) ==
783 $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 } // 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 }
796
797 /*
798 * Calcul l'identifiant du quartier et d'un arrondissement d'une parcelle
799 * */
800 function getQuartierArrondissement($parcelle) {
801
802 $parcelle = trim($parcelle);
803 $quartier = '';
804
805 /*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 $quartier .= $parcelle[$i];
811 }
812 else{
813
814 break;
815 }
816 }
817
818 if ( $quartier !== '' ){
819
820 /*identifiant*/
821 $sql = "SELECT
822 quartier, arrondissement
823 FROM
824 ".DB_PREFIXE."quartier
825 WHERE
826 code_impots='$quartier'";
827
828 $this->addToLog("getQuartierArrondissement(parcelle) : db->query(\"$sql\")", VERBOSE_MODE);
829 $res = $this->db->query($sql);
830 if (database :: isError($res))
831 die($res->getMessage()."erreur ".$sql);
832
833 if ( $res->numRows() > 0 ){
834
835 return $res->fetchRow(DB_FETCHMODE_ASSOC);
836 }
837 }
838
839 return NULL;
840 }
841
842 /*
843 * Retourne la section d'une parcelle
844 * */
845 function getSection($parcelle){
846
847 $parcelle = trim($parcelle);
848 $section = NULL;
849
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
857 /*
858 * Retourne l'intructeur correspondant le mieux à la parcelle
859 * */
860 function getInstructeurDivision( $quartier, $arrondissement, $section, $dossier_autorisation) {
861
862 $quartier = ( $quartier == NULL ) ? -1 : $quartier;
863 $arrondissement = ( $arrondissement == NULL ) ? -1 : $arrondissement;
864
865 /*Récupération du dossier_autorisation_type_detaille concerné par le $dossier_autorisation*/
866 $sql = "
867 SELECT
868 dossier_autorisation_type_detaille
869 FROM
870 ".DB_PREFIXE."dossier_autorisation
871 WHERE
872 dossier_autorisation = '$dossier_autorisation'";
873
874 $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
879 if ( $resDATD->numRows() > 0 ){
880 $rowDATD = $resDATD->fetchRow(DB_FETCHMODE_ASSOC);
881
882 $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
908 $this->addToLog("getInstructeurDivision : db->query(\"$sql\")", VERBOSE_MODE);
909 $res = $this->db->query($sql);
910 if (database :: isError($res))
911 die($res->getMessage()."erreur ".$sql);
912
913 if ( $res->numRows() > 0 ){
914
915 $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 }
930 }
931
932 return NULL;
933 }
934
935 /* =============================================================
936 * fonction trigger relative a la connexion SIG
937 * $sig = 1 dans dyn/var.inc
938 * ===============================================================
939 */
940
941 function triggerajouter($id,&$db,$val,$DEBUG) {
942 //
943 $this->addToLog("triggerajouter() : start", EXTRA_VERBOSE_MODE);
944
945 // Initialisation des variables nécessaires à l'affectation automatique
946 $quartier = NULL;
947 $arrondissement = NULL;
948 $section = NULL;
949 $instructeur = NULL;
950
951 // 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 // 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 }
961 // 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 // On récupère la section
968 $section = $this->getSection($val['parcelle']);
969 }
970
971 // Si aucun instructeur n'est saisi et que la dossier_autorisation_type_detaille n'est pas vide
972 // alors on récupère l'instructeur et la division depuis l'affectation
973 if ( ( empty($this->valF['instructeur']) || $this->valF['instructeur'] == '' ) && $val['dossier_autorisation'] != '' ) {
974
975 //
976 $instructeurDivision = $this->getInstructeurDivision($quartier, $arrondissement, $section, $val['dossier_autorisation']);
977 if ( $instructeurDivision != NULL ){
978
979 $instructeur = $instructeurDivision['instructeur'];
980 $division = $instructeurDivision['division'];
981 }
982
983 if ( $instructeur != NULL ){
984
985 $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 }
993 }
994 } 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 }
997 //
998 $this->addToLog("triggerajouter() : end", EXTRA_VERBOSE_MODE);
999 }
1000
1001 function triggermodifierapres($id,&$db,$val,$DEBUG) {
1002 $this->sig_parametre($db);
1003 // si la parcelle est changée
1004 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 if($val['parcelle']!='' or $val['parcelle_lot']!='')
1007 $this->sig_interne($this->valF['dossier'],$db,$val,$DEBUG);
1008 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 $this->addToMessage("<br>"._("Parcelle ou parcelle_lot non renseignee dans dossier")." ".$id." <br>");
1017 }
1018 }
1019
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 if ($this->getDATDCode($this->valF['dossier']) ==
1028 $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 if ($this->getDATDCode($this->valF['dossier']) ==
1041 $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 }
1049 } // fin de if($this->f->getParameter('option_erp'))
1050
1051 // Ajout ou modification des demandeurs
1052 $this->insertLinkDemandeDemandeur($db, $DEBUG);
1053 }
1054
1055 /**
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
1065 /**
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 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 $this->f->addToLog("getDATDCode() : db->getOne(\"".$sql."\")", VERBOSE_MODE);
1079 if ( database::isError($res)){
1080 die();
1081 }
1082 return $res;
1083 }
1084
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 $sql = "SELECT terrain_references_cadastrales FROM ".DB_PREFIXE."demande WHERE dossier_instruction = '" . $dossier . "'";
1095 $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
1112 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 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 $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 $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 }
1151
1152
1153 function sig_interne($id,&$db,$val,$DEBUG){
1154 // 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 $geom='';
1158 $parcelle=$val["parcelle"];
1159 $projection = $db -> getOne("select srid from geometry_columns where f_table_name='dossier'");
1160 if($this->auto_parcelle==1 and $val["parcelle"]!=''){
1161 $sql= "select astext(centroid(geom)) from ".DB_PREFIXE."parcelle where parcelle ='".$val["parcelle"]."'";
1162 $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 $sql= "select astext(centroid(geom)) from ".DB_PREFIXE."parcelle_lot where parcelle_lot ='".$val["parcelle_lot"]."'";
1168 $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 $parcelle=$val["parcelle_lot"]." ".$val["parcelle_lot_lotissement"];
1172 }
1173 if($geom!=''){ // la parcelle est exitante dans la table ou vue parcelle
1174 $sql ="update ".DB_PREFIXE."dossier set geom =geometryfromtext('".$geom."', ".$projection." ) where dossier ='".$id."'";
1175 $this->addToLog("sig_interne maj geom :".$sql, VERBOSE_MODE);
1176 $res = $db -> query($sql);
1177 if (database :: isError($res)) die($res->getMessage()."erreur ".$sql);
1178 $this->addToMessage(""._("centroid de parcelle calcule")." ".$parcelle." ");
1179 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 if($this->auto_servitude_ligne==1) // recherche de servitude ligne
1184 $this->calcul_auto_servitude_ligne($id,$db,$geom,$projection);
1185 if($this->auto_servitude_point==1) // recherche de servitude point
1186 $this->calcul_auto_servitude_point($id,$db,$geom,$projection);
1187 $temp=strtr($this->servitude,"'"," "); // enleve le '
1188 $sql1 ="update ".DB_PREFIXE."dossier set servitude = '".$temp."' where dossier = '".$id."'";
1189 $res1 = $db -> query($sql1);
1190 $this->addToLog("maj servitudes :".$sql1, VERBOSE_MODE);
1191 if (database:: isError($res1)) die($res1->getMessage()."erreur ".$sql1);
1192 }else{ // parcelle inexistante //***
1193 if($this->maj ==1){ // en maj mettre a null la geometrie si parcelle changée inexistante
1194 $sql ="update ".DB_PREFIXE."dossier set geom = null, servitude = '', pos= '' where dossier ='".$id."'";
1195 $res = $db -> query($sql);
1196 $this->addToLog("requete sig_interne maj parcelle inexistante :".$sql, VERBOSE_MODE);
1197 if (database :: isError($res))
1198 die($res->getMessage()."erreur ".$sql);
1199 }
1200 //$this->addToMessage("<br> parcelle ".$parcelle." "._("inexistante")." ".$id."");
1201 }
1202 }
1203
1204 function calcul_auto_pos($id,&$db,$geom,$projection){
1205 // recherche du pos automatique
1206 $sql="select pos from ".DB_PREFIXE."pos WHERE ST_contains(geom, geometryfromtext('".$geom."', ".$projection."))";
1207 $pos = $db -> getOne($sql);
1208 $this->addToLog("recherche auto_pos :".$sql, VERBOSE_MODE);
1209 if($pos!=''){
1210 $sql1 ="update ".DB_PREFIXE."dossier set pos = '".$pos."' where dossier = '".$id."'";
1211 $res1 = $db -> query($sql1);
1212 $this->addToLog("maj auto_pos :".$sql1, VERBOSE_MODE);
1213 if (database:: isError($res1)) die($res1->getMessage()."erreur ".$sql1);
1214 $this->addToMessage("<br>"._("POS/PLU")." : ".$pos."");
1215 }else{
1216 $this->addToMessage("<br>"._("POS/PLU non trouve")." ".$id."");
1217 }
1218 }
1219
1220 function calcul_auto_servitude_surfacique($id,&$db,$geom,$projection){
1221 // recherche servitude surfacique
1222 $sql="select * from ".DB_PREFIXE."servitude_surfacique WHERE ST_contains(geom, geometryfromtext('".$geom."', ".$projection."))";
1223 $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 $this->servitude.=" [".$row['libelle']."] ".$row['observation']." - ";
1229 }
1230 }
1231
1232 function calcul_auto_servitude_ligne($id,&$db,$geom,$projection){
1233 // recherche servitude ligne
1234 $sql="select * from ".DB_PREFIXE."servitude_ligne WHERE ST_contains(ST_buffer(geom, perimetre), geometryfromtext('".$geom."', ".$projection."))";
1235 $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
1244 function calcul_auto_servitude_point($id,&$db,$geom,$projection){
1245 // recherche servitude point
1246 $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 $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 $this->addToMessage("<br>"._("servitude")." : ".$row['libelle']." - ".$row['observation']." a ".round($row['distance'],2)." m ");
1253 $this->servitude.=" [".$row['libelle']."] ".$row['observation']." a ".round($row['distance'],2)." m - ";
1254 }
1255 }
1256
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 $this->addLinkDossierDemandeur($this->postedIdDemandeur['delegataire'], false, $db, $DEBUG);
1274 }
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 if ( database::isError($res)){
1316 die();
1317 }
1318
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 * 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 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 $this->f->addToLog("listeDemandeur(): db->query(\"".$sql."\")", VERBOSE_MODE);
1362 if ( database::isError($res)){
1363 die();
1364 }
1365 // Stockage du résultat dans un tableau
1366 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 if($maj < 2 AND $linkable) {
1421 // 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 if($maj < 2 AND $linkable) {
1447 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 if ($maj < 2 AND $linkable) {
1480 // 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
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
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
1658 }// fin classe
1659 ?>

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26