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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 927 - (show annotations)
Fri Nov 30 02:42:42 2012 UTC (12 years, 2 months ago) by fmichon
File size: 22326 byte(s)
Amélioration de la gestion des identifiants des dossiers

1 <?php
2 //$Id$
3 //gen openMairie le 08/11/2012 14:00
4
5 require_once ("../gen/obj/demande.class.php");
6
7 class demande extends demande_gen {
8
9 var $valIdDemandeur = array("petitionnaire_principal" => "",
10 "delegataire" => "",
11 "petitionnaire" => array());
12 var $postedIdDemandeur = array("petitionnaire_principal" => "",
13 "delegataire" => "",
14 "petitionnaire" => array());
15
16 function demande($id,&$db,$debug) {
17 $this->constructeur($id,$db,$debug);
18 }// fin constructeur
19
20 /*
21 * La date du jour par défaut dans le champs date_demande
22 * Put the date of the day by default into the field date_demande
23 */
24 function setVal(&$form, $maj, $validation, &$db) {
25 if($maj == 0) {
26 $form->setVal("date_demande",date('d/m/Y'));
27 }
28 }
29
30 /**
31 * Méthode de verification du contenu
32 */
33 function verifier($val, &$db, $DEBUG) {
34 parent::verifier($val, $db, $DEBUG);
35 $this->getPostedValues();
36 if(!isset($this->postedIdDemandeur["petitionnaire_principal"]) OR
37 empty($this->postedIdDemandeur["petitionnaire_principal"])) {
38 $this->correct = false;
39 $this->addToMessage("La saisie d'un petitionnaire principal est obligatoire.");
40 $this->valIdDemandeur=$this->postedIdDemandeur;
41 }
42 }
43 /*
44 * Ajout du fielset
45 * Add fieldset
46 */
47 function setLayout(&$form, $maj){
48 if ( $maj < 2 OR $maj == 3 ) {
49
50 //Champs sur lequel s'ouvre le fieldset
51 $form->setBloc('dossier_autorisation_type_detaille','D',"","dossier_type col_8");
52
53 $form->setFieldset('dossier_autorisation_type_detaille','D'
54 ,_('Type de dossier/demande'));
55 $form->setFieldset('demande_type','F','');
56
57 $form->setBloc('demande_type','F');
58
59 $form->setBloc('date_demande','D',"","col_4 demande_hidden_bloc");
60 $form->setFieldset('date_demande','D',_('Date de la demande'));
61 $form->setFieldset('date_demande','F','');
62 $form->setBloc('date_demande','F');
63
64 $form->setBloc('terrain_references_cadastrales','D',"",
65 "localisation col_12 demande_hidden_bloc");
66 $form->setFieldset('terrain_references_cadastrales','D',_('Localisation du terrain'));
67 $form->setFieldset('terrain_superficie','F','');
68 $form->setBloc('terrain_superficie','F');
69
70 $form->setBloc('nombre_lots','D',"","lots col_12 demande_hidden_bloc");
71 $form->setFieldset('nombre_lots','D',_('Nombre de lots'));
72 $form->setFieldset('nombre_lots','F','');
73 $form->setBloc('nombre_lots','F');
74 }
75 }
76
77 /*
78 * Ajoute des actions sur les deux premiers select
79 * Add actions on the two first select
80 */
81 function setOnchange(&$form,$maj){
82 parent::setOnchange($form,$maj);
83 $form->setOnchange("dossier_autorisation_type_detaille","changeDemandeType();");
84 $form->setOnchange("demande_type","showFormsDemande();");
85 }
86
87 /*
88 * Cache le champ terrain_references_cadastrales
89 * Hide the fiels terrain_references_cadastrales
90 */
91 function setType(&$form,$maj) {
92 parent::setType($form,$maj);
93
94 $form->setType('dossier_instruction', 'hidden');
95 $form->setType('dossier_autorisation', 'hidden');
96 }
97
98 /**
99 * Méthode permettant d'ajouter un dossier d'autorisation
100 */
101 function ajoutDossierAutorisation($id, &$db, $val, $DEBUG){
102 require_once '../obj/dossier_autorisation.class.php';
103 $dossier_autorisation = new dossier_autorisation("]",$db,$DEBUG);
104 // Création du dossier
105 foreach($dossier_autorisation->champs as $value) {
106 $valAuto[$value] = NULL;
107 }
108 $valAuto['dossier_autorisation']=NULL;
109 $valAuto['nature']=NULL;
110 $valAuto['exercice']=NULL;
111 $valAuto['insee']=NULL;
112 $valAuto['arrondissement']=NULL;
113 $valAuto['etat']=NULL;
114 $valAuto['erp_numero_batiment']=NULL;
115 $valAuto['erp_ouvert']=NULL;
116 $valAuto['erp_arrete_decision']=NULL;
117 $valAuto['dossier_autorisation_type_detaille']=$this->valF['dossier_autorisation_type_detaille'];
118 $valAuto['depot_initial']=$this->valF['date_demande'];
119 $valAuto['terrain_references_cadastrales']=$this->valF['terrain_references_cadastrales'];
120 $valAuto['terrain_adresse_voie_numero']=$this->valF['terrain_adresse_voie_numero'];
121 $valAuto['complement']=$this->valF['complement'];
122 $valAuto['terrain_adresse_lieu_dit']=$this->valF['terrain_adresse_lieu_dit'];
123 $valAuto['terrain_adresse_localite']=$this->valF['terrain_adresse_localite'];
124 $valAuto['terrain_adresse_code_postal']=$this->valF['terrain_adresse_code_postal'];
125 $valAuto['terrain_adresse_bp']=$this->valF['terrain_adresse_bp'];
126 $valAuto['terrain_adresse_cedex']=$this->valF['terrain_adresse_cedex'];
127 $valAuto['terrain_superficie']=$this->valF['terrain_superficie'];
128 // Ajout du dossier dans la base
129 $dossier_autorisation->ajouter($valAuto, $db, $DEBUG);
130 // Liaison du dossier ajouter à la demande
131 $this->valF['dossier_autorisation'] = $dossier_autorisation->valF['dossier_autorisation'];
132 }
133
134 /**
135 * Méthode permettant d'ajouter un dossier d'instruction
136 */
137 function ajoutDossierInstruction($id, &$db, $val, $DEBUG){
138 require_once '../obj/dossier.class.php';
139 $dossier = new dossier("]",$db,$DEBUG);
140 foreach($dossier->champs as $value) {
141 $valInstr[$value] = NULL;
142 }
143 require_once '../obj/dossier_autorisation_type_detaille.class.php';
144 $datd = new dossier_autorisation_type_detaille(
145 $this->valF['dossier_autorisation_type_detaille'],$db,$DEBUG);
146 // Définition des valeurs à entrée dans la table
147 $valInstr['nature']=$datd->val[array_search("code", $datd->champs)];
148 $valInstr['dossier_autorisation_type_detaille']=$this->valF['dossier_autorisation_type_detaille'];
149 $valInstr['date_depot']=$this->dateDBToForm($this->valF['date_demande']);
150 $valInstr['depot_initial']=$this->dateDBToForm($this->valF['date_demande']);
151 $valInstr['terrain_references_cadastrales']=$this->valF['terrain_references_cadastrales'];
152 $valInstr['terrain_adresse_voie_numero']=$this->valF['terrain_adresse_voie_numero'];
153 $valInstr['complement']=$this->valF['complement'];
154 $valInstr['terrain_adresse_lieu_dit']=$this->valF['terrain_adresse_lieu_dit'];
155 $valInstr['terrain_adresse_localite']=$this->valF['terrain_adresse_localite'];
156 $valInstr['terrain_adresse_code_postal']=$this->valF['terrain_adresse_code_postal'];
157 $valInstr['terrain_adresse_bp']=$this->valF['terrain_adresse_bp'];
158 $valInstr['terrain_adresse_cedex']=$this->valF['terrain_adresse_cedex'];
159 $valInstr['terrain_superficie']=$this->valF['terrain_superficie'];
160 $valInstr['description']="";
161 $valInstr['dossier_autorisation']=$this->valF['dossier_autorisation'];
162 $dossier->ajouter($valInstr, $db, $DEBUG);
163 $this->f->isDatabaseError();
164 // Liaison du dossier ajouter à la demande
165 $this->valF['dossier_instruction'] = $dossier->valF['dossier'];
166 }
167
168 /**
169 * Ajout des liens demandeurs / dossier d'autorisation
170 **/
171 function ajoutLiensDossierAutorisation($id, &$db, $val, $DEBUG) {
172 // Création des liens entre le dossier autorisation et les demandeurs
173 include '../sql/pgsql/demande.form.inc.php';
174 require_once '../obj/lien_dossier_autorisation_demandeur.class.php';
175 $ldad = new lien_dossier_autorisation_demandeur("]",$db,$DEBUG);
176 // Recupération des demandeurs liés à la demande
177 $sql = str_replace("<demande>",$this->valF['demande'],$sql_lien_demande_demandeur);
178 $res = $db->query($sql);
179 $this->f->addToLog("demande.class.php: db->query(\"".$sql."\");", VERBOSE_MODE);
180 $this->f->isDatabaseError();
181 while($row = &$res->fetchRow(DB_FETCHMODE_ASSOC)) {
182 $row['lien_dossier_autorisation_demandeur'] = NULL;
183 $row['dossier_autorisation'] = $this->valF['dossier_autorisation'];
184 $ldad->ajouter($row, $db, $DEBUG);
185 }
186 }
187
188 /**
189 * Ajout des liens demandeurs / dossier d'autorisation
190 **/
191 function ajoutLiensDossierInstruction($id, &$db, $val, $DEBUG) {
192 // Création des liens entre le dossier instruction et les demandeurs
193 include '../sql/pgsql/demande.form.inc.php';
194 require_once '../obj/lien_dossier_demandeur.class.php';
195 $ldd = new lien_dossier_demandeur("]",$db,$DEBUG);
196 // Recupération des demandeurs liés à la demande
197 $sql = str_replace("<demande>",$this->valF['demande'],$sql_lien_demande_demandeur);
198 $res = $db->query($sql);
199 $this->f->addToLog("demande.class.php: db->query(\"".$sql."\");", VERBOSE_MODE);
200 $this->f->isDatabaseError();
201 while($row = &$res->fetchRow(DB_FETCHMODE_ASSOC)) {
202 $row['lien_dossier_demandeur'] = NULL;
203 $row['dossier'] = $this->valF['dossier_instruction'];
204 $ldd->ajouter($row, $db, $DEBUG);
205 }
206 }
207
208 /**
209 * Ajout des dossiers
210 **/
211 function triggerAjouter($id, &$db, $val, $DEBUG){
212 include '../sql/pgsql/demande.form.inc.php';
213 if($this->valF["demande_type"] != NULL) {
214 $res = $db->query(str_replace('<idx>', $this->valF['demande_type'], $sql_demande_type_details_by_id));
215 $this->f->isDatabaseError();
216 $dossier_type = $res->fetchRow(DB_FETCHMODE_ASSOC);
217 // Création du dossier_autorisation
218 if($dossier_type['dossier_autorisation_type_detaille'] != NULL) {
219 $this->ajoutDossierAutorisation($id, $db, $val, $DEBUG);
220 $this -> addToMessage(_("Creation du dossier d'autorisation no").$this->valF['dossier_autorisation']);
221 }
222 // Création du dossier d'instruction
223 if($dossier_type['dossier_instruction_type'] != NULL) {
224 $this->ajoutDossierInstruction($id, $db, $val, $DEBUG);
225 $this -> addToMessage(_("Creation du dossier d'instruction no".$this->valF['dossier_instruction']));
226 }
227 }
228 }
229
230 /**
231 * Ajout des délégataires et pétitionnaires
232 **/
233 function triggerAjouterApres($id, &$db, $val, $DEBUG){
234 $this->insertLinkDemandeDemandeur($db, $DEBUG);
235 $this->valIdDemandeur=$this->postedIdDemandeur;
236 // Ajout des lliens entre dossier_autorisation et demandeur
237 if(!empty($this->valF['dossier_autorisation'])) {
238 $this->ajoutLiensDossierAutorisation($id, $db, $val, $DEBUG);
239 }
240 // Ajout des lliens entre dossier et demandeur
241 if(!empty($this->valF['dossier_instruction'])) {
242 $this->ajoutLiensDossierInstruction($id, $db, $val, $DEBUG);
243 }
244 }
245 function triggerModifierApres($id, &$db, $val, $DEBUG){
246 $this->listeDemandeur();
247 $this->insertLinkDemandeDemandeur($db, $DEBUG);
248 $this->valIdDemandeur=$this->postedIdDemandeur;
249
250 }
251
252 /**
253 * Gestion des liens entre la demande et les demendeurs recement ajoutés
254 **/
255 function insertLinkDemandeDemandeur($db, $DEBUG) {
256 //
257 require_once "../obj/lien_demande_demandeur.class.php";
258
259 // Comparaison de l'id petitionnaire principal
260 if(isset($this->postedIdDemandeur['petitionnaire_principal']) AND
261 !empty($this->postedIdDemandeur['petitionnaire_principal']) AND
262 $this->valIdDemandeur['petitionnaire_principal'] !=
263 $this->postedIdDemandeur['petitionnaire_principal']) {
264 // Ajout du nouveau lien
265 $this->addLinkDemandeDemandeur($this->postedIdDemandeur['petitionnaire_principal'], true, $db, $DEBUG);
266 if(!empty($this->valIdDemandeur['petitionnaire_principal'])) {
267 $this->deleteLinkDemandeDemandeur($this->valIdDemandeur['petitionnaire_principal'], $db, $DEBUG);
268 }
269 }
270
271 // Comparaison du delegataire
272 if(isset($this->postedIdDemandeur['delegataire']) AND
273 !empty($this->postedIdDemandeur['delegataire']) AND
274 $this->valIdDemandeur['delegataire'] !=
275 $this->postedIdDemandeur['delegataire']) {
276 // Ajout du nouveau lien
277 $this->addLinkDemandeDemandeur($this->postedIdDemandeur['delegataire'], false, $db, $DEBUG);
278 if(!empty($this->valIdDemandeur['delegataire'])) {
279 $this->deleteLinkDemandeDemandeur($this->valIdDemandeur['delegataire'], $db, $DEBUG);
280 }
281 }
282
283 // Comparaison des different petitionnaires
284 if(isset($this->postedIdDemandeur['petitionnaire'])) {
285 // Suppression des liens non valides
286 foreach ($this->valIdDemandeur['petitionnaire'] as $petitionnaire) {
287 if(!in_array($petitionnaire, $this->postedIdDemandeur['petitionnaire'])) {
288 $this->deleteLinkDemandeDemandeur($petitionnaire, $db, $DEBUG);
289 }
290 }
291 // Ajout des nouveaux liens
292 foreach ($this->postedIdDemandeur['petitionnaire'] as $petitionnaire) {
293 if(!in_array($petitionnaire, $this->valIdDemandeur['petitionnaire'])) {
294 $this->addLinkDemandeDemandeur($petitionnaire, false, $db, $DEBUG);
295 }
296 }
297 }
298 }
299
300
301 /**
302 * Fonction permettant d'ajouter un lien
303 * entre la table demande et demandeur
304 **/
305 function addLinkDemandeDemandeur($id, $principal, $db, $DEBUG) {
306 $lienAjout = new lien_demande_demandeur(
307 "]",
308 $db,
309 $DEBUG);
310 $lien = array('lien_demande_demandeur' => "",
311 'petitionnaire_principal' => (($principal)?"t":"f"),
312 'demande' => $this->valF['demande'],
313 'demandeur' => $id);
314 $lienAjout->ajouter($lien, $db, $DEBUG);
315 $lienAjout->__destruct();
316 }
317
318 /**
319 * Fonction permettant de supprimer un lien
320 * entre la table demande et demandeur
321 **/
322 function deleteLinkDemandeDemandeur($id, $db, $DEBUG) {
323 // Suppression
324 $sql = "DELETE FROM ".DB_PREFIXE."lien_demande_demandeur ".
325 "WHERE demande=".$this->valF['demande'].
326 " AND demandeur=".$id;
327 // Execution de la requete de suppression de l'objet
328 $res = $db->query($sql);
329 // Logger
330 $this->f->addToLog("supprimer(): db->query(\"".$sql."\");", VERBOSE_MODE);
331 $this->f->isDatabaseError();
332
333 }
334
335 function isLinkDemandeDemandeurExist($idDemandeur) {
336 $sql = "SELECT count(*)
337 FROM ".DB_PREFIXE."lien_demande_demandeur
338 WHERE demande = ".$this->valF['demande'].
339 "AND demandeur = ".$idDemandeur;
340 $count = $this->f->db->getOne($sql);
341 $this->f->addToLog("db->getone(\"".$sql."\");", VERBOSE_MODE);
342 $this->f->isDatabaseError($count);
343 if ($count === 0) {
344 return false;
345 } else {
346 return true;
347 }
348
349 }
350
351 /**
352 * Methode de recupération des valeurs postées
353 **/
354 function getPostedValues() {
355 // Récupération des demandeurs dans POST
356 if (isset($_POST['petitionnaire_principal']) OR
357 isset($_POST['delegataire']) OR
358 isset($_POST['petitionnaire'])) {
359 if( isset($_POST['petitionnaire_principal']) AND
360 !empty($_POST['petitionnaire_principal'])) {
361 $this->postedIdDemandeur['petitionnaire_principal'] = $_POST['petitionnaire_principal'];
362 }
363 if( isset($_POST['delegataire']) AND
364 !empty($_POST['delegataire'])) {
365 $this->postedIdDemandeur['delegataire'] = $_POST['delegataire'];
366 }
367 if( isset($_POST['petitionnaire']) AND
368 !empty($_POST['petitionnaire'])) {
369 $this->postedIdDemandeur['petitionnaire'] = $_POST['petitionnaire'];
370 }
371 }
372 }
373 /**
374 * Méthode permettant de récupérer les id des demandeur lié à la demande
375 **/
376 function listeDemandeur() {
377 // Récupération des demandeurs de la base
378 $sql = "SELECT demandeur.demandeur,
379 demandeur.type_demandeur,
380 lien_demande_demandeur.petitionnaire_principal
381 FROM ".DB_PREFIXE."lien_demande_demandeur
382 INNER JOIN ".DB_PREFIXE."demandeur
383 ON demandeur.demandeur=lien_demande_demandeur.demandeur
384 WHERE demande = ".$this->val[array_search('demande', $this->champs)];
385 $res = $this->f->db->query($sql);
386 $this->f->addToLog("listeDemandeur() : ".$sql);
387 $this->f->isDatabaseError($res);
388 // Stoquage du résultat dans un tableau
389 while ($row=& $res->fetchRow(DB_FETCHMODE_ASSOC)){
390 if ($row['petitionnaire_principal'] == 't' AND
391 $row['type_demandeur']=="petitionnaire") {
392 $this->valIdDemandeur['petitionnaire_principal']=$row['demandeur'];
393 } elseif ($row['petitionnaire_principal'] == 'f' AND
394 $row['type_demandeur']=="petitionnaire"){
395 $this->valIdDemandeur['petitionnaire'][]=$row['demandeur'];
396 } elseif ($row['type_demandeur']=="delegataire"){
397 $this->valIdDemandeur['delegataire']=$row['demandeur'];
398 }
399 }
400 }
401
402 /**
403 * Ajout de la liste des demandeurs
404 */
405 function formSpecificContent($maj) {
406 if(!$this->correct AND $maj != 0) {
407 $this->listeDemandeur();
408 }
409 if($maj < 2 AND !$this->correct) {
410 $linkable = true;
411 } else {
412 $linkable = false;
413 }
414 // Conteneur de la listes des demandeurs
415 echo "<div class=\"demande_hidden_bloc col_12\">";
416 echo "<fieldset class=\"cadre ui-corner-all ui-widget-content\">";
417 echo " <legend class=\"ui-corner-all ui-widget-content ui-state-active\">"
418 ._("Petitionnaire")."</legend>";
419 // Si des demandeurs sont liés à la demande
420 require_once "../obj/petitionnaire.class.php";
421 require_once "../obj/delegataire.class.php";
422
423 // Affichage du bloc pétitionnaire principal / délégataire
424 // L'ID DU DIV SUIVANT EST NECESSAIRE AU BON FONCTIONNEMENT DU JS
425 echo "<div id=\"petitionnaire_principal_delegataire\">";
426 // Affichage de la synthèse
427 if (isset ($this->valIdDemandeur["petitionnaire_principal"]) AND
428 !empty($this->valIdDemandeur["petitionnaire_principal"])) {
429 $demandeur = new petitionnaire(
430 $this->valIdDemandeur["petitionnaire_principal"],
431 $this->f->db,false);
432 $demandeur -> afficherSynthese("petitionnaire_principal", $linkable);
433 $demandeur -> __destruct();
434 }
435 // Si en édition de formulaire
436 if($maj < 2 AND $this->correct != true) {
437 // Bouton d'ajout du pétitionnaire principal
438 // L'ID DE L'INPUT SUIVANT EST NECESSAIRE AU BON FONCTIONNEMENT DU JS
439 echo "<input id=\"add_petitionnaire_principal\"
440 class=\"ui-button ui-widget ui-state-default ui-corner-all\"
441 type=\"button\" value=\""._("Saisir le petitionnaire principal")."\"/>";
442 echo " <span class=\"om-icon om-icon-16 om-icon-fix arrow-right-16\">></span> ";
443 // Bouton d'ajout du delegataire
444 // L'ID DE L'INPUT SUIVANT EST NECESSAIRE AU BON FONCTIONNEMENT DU JS
445 echo "<input id=\"add_delegataire\"
446 class=\"ui-button ui-widget ui-state-default ui-corner-all\"
447 type=\"button\" value=\""._("Saisir le delegataire")."\"/>";
448 }
449 // Affichage de la synthèse
450 if (isset ($this->valIdDemandeur["delegataire"]) AND
451 !empty($this->valIdDemandeur["delegataire"])) {
452 $demandeur = new delegataire($this->valIdDemandeur["delegataire"],
453 $this->f->db,false);
454 $demandeur -> afficherSynthese("delegataire", $linkable);
455 $demandeur -> __destruct();
456 }
457
458 echo "</div>";
459
460 // Bloc des pétitionnaires secondaires
461 // L'ID DU DIV SUIVANT EST NECESSAIRE AU BON FONCTIONNEMENT DU JS
462 echo "<div id=\"listePetitionnaires\">";
463
464 // Affichage de la synthèse
465 if (isset ($this->valIdDemandeur["petitionnaire"]) AND
466 !empty($this->valIdDemandeur["petitionnaire"])) {
467
468 foreach ($this->valIdDemandeur["petitionnaire"] as $petitionnaire) {
469 $demandeur = new petitionnaire($petitionnaire,
470 $this->f->db,false);
471 $demandeur -> afficherSynthese("petitionnaire", $linkable);
472 $demandeur -> __destruct();
473 }
474
475 }
476 if ($maj < 2 AND !$this->correct) {
477 // L'ID DE L'INPUT SUIVANT EST NECESSAIRE AU BON FONCTIONNEMENT DU JS
478 echo "<input id=\"add_petitionnaire\"
479 class=\"ui-button ui-widget ui-state-default ui-corner-all\"
480 type=\"button\" value=\""._("Ajouter un petitionnaire")."\"/>";
481 }
482 echo "</div>";
483 echo "</fieldset>";
484 echo "</div>";
485 }
486
487 }// fin classe
488 ?>

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26