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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 907 - (show annotations)
Thu Nov 29 15:24:25 2012 UTC (12 years, 2 months ago) by nhaye
File size: 19730 byte(s)
iAjout de dossier d'autorisation lors de l'ajout d'une nouvelle demande

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 la création de dossiers
100 **/
101 function triggerAjoutDossier($id, &$db, $val, $DEBUG){
102 include '../sql/pgsql/demande.form.inc.php';
103 if($this->valF["demande_type"] != NULL) {
104 $res = $db->query(str_replace('<idx>', $this->valF['demande_type'], $sql_demande_type_details_by_id));
105 $this->f->isDatabaseError();
106 $row = $res->fetchRow(DB_FETCHMODE_ASSOC);
107 // Création du dossier_autorisation
108 if($row ['dossier_autorisation_type_detaille'] != NULL) {
109 // Création du dossier
110 $valAuto['dossier_autorisation']=NULL;
111 $valAuto['nature']=NULL;
112 $valAuto['exercice']=NULL;
113 $valAuto['insee']=NULL;
114 $valAuto['arrondissement']=NULL;
115 $valAuto['etat']=NULL;
116 $valAuto['erp_numero_batiment']=NULL;
117 $valAuto['erp_ouvert']=NULL;
118 $valAuto['erp_arrete_decision']=NULL;
119 $valAuto['dossier_autorisation_type_detaille']=$this->valF['dossier_autorisation_type_detaille'];
120 $valAuto['depot_initial']=$this->valF['date_demande'];
121 $valAuto['terrain_references_cadastrales']=$this->valF['terrain_references_cadastrales'];
122 $valAuto['terrain_adresse_voie_numero']=$this->valF['terrain_adresse_voie_numero'];
123 $valAuto['complement']=$this->valF['complement'];
124 $valAuto['terrain_adresse_lieu_dit']=$this->valF['terrain_adresse_lieu_dit'];
125 $valAuto['terrain_adresse_localite']=$this->valF['terrain_adresse_localite'];
126 $valAuto['terrain_adresse_code_postal']=$this->valF['terrain_adresse_code_postal'];
127 $valAuto['terrain_adresse_bp']=$this->valF['terrain_adresse_bp'];
128 $valAuto['terrain_adresse_cedex']=$this->valF['terrain_adresse_cedex'];
129 $valAuto['terrain_superficie']=$this->valF['terrain_superficie'];
130 require_once '../obj/dossier_autorisation.class.php';
131 $dossier_autorisation = new dossier_autorisation("]",$db,$DEBUG);
132 $dossier_autorisation->ajouter($valAuto, $db, $DEBUG);
133 $this->valF['dossier_autorisation'] = $dossier_autorisation->valF['dossier_autorisation'];
134 // Création des liens entre le dossier et les demandeurs
135 require_once '../obj/lien_dossier_autorisation_demandeur.class.php';
136 $ldad = new lien_dossier_autorisation_demandeur("]",$db,$DEBUG);
137 $sql = str_replace("<demande>",$this->valF['demande'],$sql_lien_demande_demandeur);
138 $res = $db->query($sql);
139 $this->f->addToLog("demande.class.php: db->query(\"".$sql."\");", VERBOSE_MODE);
140 $this->f->isDatabaseError();
141 print_r($sql);
142 while($row = &$res->fetchRow(DB_FETCHMODE_ASSOC)) {
143 $row['lien_dossier_autorisation_demandeur'] = NULL;
144 $row['dossier_autorisation'] = $this->valF['dossier_autorisation'];
145 $ldad->ajouter($row, $db, $DEBUG);
146 }
147 $this -> addToMessage(_("Creation du dossier d'autorisation no").$this->valF['dossier_autorisation']);
148 }
149 /*
150 if($row ['dossier_instruction_type'] != NULL) {
151 $valInstr['dossier_autorisation_type_detaille']=$this->valF['dossier_autorisation_type_detaille'];
152
153 $valInstr['depot_initial']=$this->valF['date_demande'];
154 $valInstr['terrain_references_cadastrales']=$this->valF['terrain_references_cadastrales'];
155 $valInstr['terrain_adresse_voie_numero']=$this->valF['terrain_adresse_voie_numero'];
156 $valInstr['complement']=$this->valF['complement'];
157 $valInstr['terrain_adresse_lieu_dit']=$this->valF['terrain_adresse_lieu_dit'];
158 $valInstr['terrain_adresse_localite']=$this->valF['terrain_adresse_localite'];
159 $valInstr['terrain_adresse_code_postal']=$this->valF['terrain_adresse_code_postal'];
160 $valInstr['terrain_adresse_bp']=$this->valF['terrain_adresse_bp'];
161 $valInstr['terrain_adresse_cedex']=$this->valF['terrain_adresse_cedex'];
162 $valInstr['terrain_superficie']=$this->valF['terrain_superficie'];
163
164 require_once '../obj/dossier.class.php';
165 $dossier_instruction = new dossier("]",$db,$DEBUG);
166 $dossier_instruction->ajouter($valInstr, $db, $DEBUG);
167 $this->valF['dossier_instruction'] = $dossier_instruction->valF['dossier'];
168 }
169 */
170 }
171 }
172
173 /**
174 * Ajout des délégataires et pétitionnaires
175 **/
176 function triggerAjouterApres($id, &$db, $val, $DEBUG){
177 $this->insertLinkDemandeDemandeur($db, $DEBUG);
178 $this->valIdDemandeur=$this->postedIdDemandeur;
179 $this->triggerAjoutDossier($id, $db, $val, $DEBUG);
180 }
181 function triggerModifierApres($id, &$db, $val, $DEBUG){
182 $this->listeDemandeur();
183 $this->insertLinkDemandeDemandeur($db, $DEBUG);
184 $this->valIdDemandeur=$this->postedIdDemandeur;
185
186 }
187
188 /**
189 * Gestion des liens entre la demande et les demendeurs recement ajoutés
190 **/
191 function insertLinkDemandeDemandeur($db, $DEBUG) {
192 //
193 require_once "../obj/lien_demande_demandeur.class.php";
194
195 // Comparaison de l'id petitionnaire principal
196 if(isset($this->postedIdDemandeur['petitionnaire_principal']) AND
197 !empty($this->postedIdDemandeur['petitionnaire_principal']) AND
198 $this->valIdDemandeur['petitionnaire_principal'] !=
199 $this->postedIdDemandeur['petitionnaire_principal']) {
200 // Ajout du nouveau lien
201 $this->addLinkDemandeDemandeur($this->postedIdDemandeur['petitionnaire_principal'], true, $db, $DEBUG);
202 if(!empty($this->valIdDemandeur['petitionnaire_principal'])) {
203 $this->deleteLinkDemandeDemandeur($this->valIdDemandeur['petitionnaire_principal'], $db, $DEBUG);
204 }
205 }
206
207 // Comparaison du delegataire
208 if(isset($this->postedIdDemandeur['delegataire']) AND
209 !empty($this->postedIdDemandeur['delegataire']) AND
210 $this->valIdDemandeur['delegataire'] !=
211 $this->postedIdDemandeur['delegataire']) {
212 // Ajout du nouveau lien
213 $this->addLinkDemandeDemandeur($this->postedIdDemandeur['delegataire'], false, $db, $DEBUG);
214 if(!empty($this->valIdDemandeur['delegataire'])) {
215 $this->deleteLinkDemandeDemandeur($this->valIdDemandeur['delegataire'], $db, $DEBUG);
216 }
217 }
218
219 // Comparaison des different petitionnaires
220 if(isset($this->postedIdDemandeur['petitionnaire'])) {
221 // Suppression des liens non valides
222 foreach ($this->valIdDemandeur['petitionnaire'] as $petitionnaire) {
223 if(!in_array($petitionnaire, $this->postedIdDemandeur['petitionnaire'])) {
224 $this->deleteLinkDemandeDemandeur($petitionnaire, $db, $DEBUG);
225 }
226 }
227 // Ajout des nouveaux liens
228 foreach ($this->postedIdDemandeur['petitionnaire'] as $petitionnaire) {
229 if(!in_array($petitionnaire, $this->valIdDemandeur['petitionnaire'])) {
230 $this->addLinkDemandeDemandeur($petitionnaire, false, $db, $DEBUG);
231 }
232 }
233 }
234 }
235
236
237 /**
238 * Fonction permettant d'ajouter un lien
239 * entre la table demande et demandeur
240 **/
241 function addLinkDemandeDemandeur($id, $principal, $db, $DEBUG) {
242 $lienAjout = new lien_demande_demandeur(
243 "]",
244 $db,
245 $DEBUG);
246 $lien = array('lien_demande_demandeur' => "",
247 'petitionnaire_principal' => (($principal)?"t":"f"),
248 'demande' => $this->valF['demande'],
249 'demandeur' => $id);
250 $lienAjout->ajouter($lien, $db, $DEBUG);
251 $lienAjout->__destruct();
252 }
253
254 /**
255 * Fonction permettant de supprimer un lien
256 * entre la table demande et demandeur
257 **/
258 function deleteLinkDemandeDemandeur($id, $db, $DEBUG) {
259 // Suppression
260 $sql = "DELETE FROM ".DB_PREFIXE."lien_demande_demandeur ".
261 "WHERE demande=".$this->valF['demande'].
262 " AND demandeur=".$id;
263 // Execution de la requete de suppression de l'objet
264 $res = $db->query($sql);
265 // Logger
266 $this->f->addToLog("supprimer(): db->query(\"".$sql."\");", VERBOSE_MODE);
267 $this->f->isDatabaseError();
268
269 }
270
271 function isLinkDemandeDemandeurExist($idDemandeur) {
272 $sql = "SELECT count(*)
273 FROM ".DB_PREFIXE."lien_demande_demandeur
274 WHERE demande = ".$this->valF['demande'].
275 "AND demandeur = ".$idDemandeur;
276 $count = $this->f->db->getOne($sql);
277 $this->f->addToLog("db->getone(\"".$sql."\");", VERBOSE_MODE);
278 $this->f->isDatabaseError($count);
279 if ($count === 0) {
280 return false;
281 } else {
282 return true;
283 }
284
285 }
286
287 /**
288 * Methode de recupération des valeurs postées
289 **/
290 function getPostedValues() {
291 // Récupération des demandeurs dans POST
292 if (isset($_POST['petitionnaire_principal']) OR
293 isset($_POST['delegataire']) OR
294 isset($_POST['petitionnaire'])) {
295 if( isset($_POST['petitionnaire_principal']) AND
296 !empty($_POST['petitionnaire_principal'])) {
297 $this->postedIdDemandeur['petitionnaire_principal'] = $_POST['petitionnaire_principal'];
298 }
299 if( isset($_POST['delegataire']) AND
300 !empty($_POST['delegataire'])) {
301 $this->postedIdDemandeur['delegataire'] = $_POST['delegataire'];
302 }
303 if( isset($_POST['petitionnaire']) AND
304 !empty($_POST['petitionnaire'])) {
305 $this->postedIdDemandeur['petitionnaire'] = $_POST['petitionnaire'];
306 }
307 }
308 }
309 /**
310 * Méthode permettant de récupérer les id des demandeur lié à la demande
311 **/
312 function listeDemandeur() {
313 // Récupération des demandeurs de la base
314 $sql = "SELECT demandeur.demandeur,
315 demandeur.type_demandeur,
316 lien_demande_demandeur.petitionnaire_principal
317 FROM ".DB_PREFIXE."lien_demande_demandeur
318 INNER JOIN ".DB_PREFIXE."demandeur
319 ON demandeur.demandeur=lien_demande_demandeur.demandeur
320 WHERE demande = ".$this->val[array_search('demande', $this->champs)];
321 $res = $this->f->db->query($sql);
322 $this->f->addToLog("listeDemandeur() : ".$sql);
323 $this->f->isDatabaseError($res);
324 // Stoquage du résultat dans un tableau
325 while ($row=& $res->fetchRow(DB_FETCHMODE_ASSOC)){
326 if ($row['petitionnaire_principal'] == 't' AND
327 $row['type_demandeur']=="petitionnaire") {
328 $this->valIdDemandeur['petitionnaire_principal']=$row['demandeur'];
329 } elseif ($row['petitionnaire_principal'] == 'f' AND
330 $row['type_demandeur']=="petitionnaire"){
331 $this->valIdDemandeur['petitionnaire'][]=$row['demandeur'];
332 } elseif ($row['type_demandeur']=="delegataire"){
333 $this->valIdDemandeur['delegataire']=$row['demandeur'];
334 }
335 }
336 }
337
338 /**
339 * Ajout de la liste des demandeurs
340 */
341 function formSpecificContent($maj) {
342 if(!$this->correct AND $maj != 0) {
343 $this->listeDemandeur();
344 }
345 if($maj < 2 AND !$this->correct) {
346 $linkable = true;
347 } else {
348 $linkable = false;
349 }
350 // Conteneur de la listes des demandeurs
351 echo "<div class=\"demande_hidden_bloc col_12\">";
352 echo "<fieldset class=\"cadre ui-corner-all ui-widget-content\">";
353 echo " <legend class=\"ui-corner-all ui-widget-content ui-state-active\">"
354 ._("Petitionnaire")."</legend>";
355 // Si des demandeurs sont liés à la demande
356 require_once "../obj/petitionnaire.class.php";
357 require_once "../obj/delegataire.class.php";
358
359 // Affichage du bloc pétitionnaire principal / délégataire
360 // L'ID DU DIV SUIVANT EST NECESSAIRE AU BON FONCTIONNEMENT DU JS
361 echo "<div id=\"petitionnaire_principal_delegataire\">";
362 // Affichage de la synthèse
363 if (isset ($this->valIdDemandeur["petitionnaire_principal"]) AND
364 !empty($this->valIdDemandeur["petitionnaire_principal"])) {
365 $demandeur = new petitionnaire(
366 $this->valIdDemandeur["petitionnaire_principal"],
367 $this->f->db,false);
368 $demandeur -> afficherSynthese("petitionnaire_principal", $linkable);
369 $demandeur -> __destruct();
370 }
371 // Si en édition de formulaire
372 if($maj < 2 AND $this->correct != true) {
373 // Bouton d'ajout du pétitionnaire principal
374 // L'ID DE L'INPUT SUIVANT EST NECESSAIRE AU BON FONCTIONNEMENT DU JS
375 echo "<input id=\"add_petitionnaire_principal\"
376 class=\"ui-button ui-widget ui-state-default ui-corner-all\"
377 type=\"button\" value=\""._("Saisir le petitionnaire principal")."\"/>";
378 echo " <span class=\"om-icon om-icon-16 om-icon-fix arrow-right-16\">></span> ";
379 // Bouton d'ajout du delegataire
380 // L'ID DE L'INPUT SUIVANT EST NECESSAIRE AU BON FONCTIONNEMENT DU JS
381 echo "<input id=\"add_delegataire\"
382 class=\"ui-button ui-widget ui-state-default ui-corner-all\"
383 type=\"button\" value=\""._("Saisir le delegataire")."\"/>";
384 }
385 // Affichage de la synthèse
386 if (isset ($this->valIdDemandeur["delegataire"]) AND
387 !empty($this->valIdDemandeur["delegataire"])) {
388 $demandeur = new delegataire($this->valIdDemandeur["delegataire"],
389 $this->f->db,false);
390 $demandeur -> afficherSynthese("delegataire", $linkable);
391 $demandeur -> __destruct();
392 }
393
394 echo "</div>";
395
396 // Bloc des pétitionnaires secondaires
397 // L'ID DU DIV SUIVANT EST NECESSAIRE AU BON FONCTIONNEMENT DU JS
398 echo "<div id=\"listePetitionnaires\">";
399
400 // Affichage de la synthèse
401 if (isset ($this->valIdDemandeur["petitionnaire"]) AND
402 !empty($this->valIdDemandeur["petitionnaire"])) {
403
404 foreach ($this->valIdDemandeur["petitionnaire"] as $petitionnaire) {
405 $demandeur = new petitionnaire($petitionnaire,
406 $this->f->db,false);
407 $demandeur -> afficherSynthese("petitionnaire", $linkable);
408 $demandeur -> __destruct();
409 }
410
411 }
412 if ($maj < 2 AND !$this->correct) {
413 // L'ID DE L'INPUT SUIVANT EST NECESSAIRE AU BON FONCTIONNEMENT DU JS
414 echo "<input id=\"add_petitionnaire\"
415 class=\"ui-button ui-widget ui-state-default ui-corner-all\"
416 type=\"button\" value=\""._("Ajouter un petitionnaire")."\"/>";
417 }
418 echo "</div>";
419 echo "</fieldset>";
420 echo "</div>";
421 }
422
423 }// fin classe
424 ?>

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26