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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2313 - (show annotations)
Wed Sep 18 15:31:34 2013 UTC (11 years, 4 months ago) by softime
File size: 61762 byte(s)
- Ajout du contrôle de l'option SIG pour les liens vers le plan sig dans le formulaire des DI et sur le bouton de récupération de l'adresse lors de l'ajout d'une nouvelle demande.
- Modification des tests du guichet unique pour activer l'option SIG afin d'avoir le bouton de récupération de l'adresse + modification d'ordre de passage des tests pour que le test qui provoque l'erreur sur l'Alert qui n'est toujours pas résolus, ne provoque pas l'erreur des tests suivant.

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 var $autreDossierEnCour;
17
18 function demande($id,&$db,$debug) {
19 $this->constructeur($id,$db,$debug);
20 }// fin constructeur
21
22 function setValF($val) {
23 parent::setValF($val);
24 // Récupération des id demandeurs postés
25 $this->getPostedValues();
26 //$this->valIdDemandeur=$this->postedIdDemandeur;
27 }
28
29 /**
30 * Méthode permettant de récupérer les valeurs du dossier d'autorisation
31 * correspondant à la nouvelle demande
32 */
33 function getValFromDossier($dossier_autorisation) {
34 include "../sql/pgsql/demande.form.inc.php";
35 $sql=str_replace("<idx>",$this->getParameter("idx_dossier"),
36 $sql_infos_dossier);
37 $res = $this->db->query($sql);
38 $this->f->addToLog("getValFromDossier(): db->query(\"".$sql."\")", VERBOSE_MODE);
39 if ( database::isError($res)){
40 die();
41 }
42 $row = & $res->fetchRow(DB_FETCHMODE_ASSOC);
43 return $row;
44 }
45
46 /*
47 * La date du jour par défaut dans le champs date_demande
48 * Put the date of the day by default into the field date_demande
49 */
50 function setVal(&$form, $maj, $validation, &$db) {
51 if($maj == 0) {
52 $form->setVal("date_demande",date('d/m/Y'));
53
54 // Récupération des valeurs du dossier d'autorisation correspondant
55 if($this->getParameter("idx_dossier") != "") {
56 $val_autorisation = $this->getValFromDossier(
57 $this->getParameter("idx_dossier"));
58 foreach($val_autorisation as $champ => $value) {
59 $form->setVal($champ,$value);
60 }
61 }
62 }
63 }
64 function getDataSubmit() {
65
66 $datasubmit = parent::getDataSubmit();
67 if($this->getParameter("idx_dossier") != "") {
68 $datasubmit .= "&idx_dossier=".$this->getParameter("idx_dossier");
69 }
70 return $datasubmit;
71 }
72
73 /**
74 * Méthode de verification du contenu
75 */
76 function verifier($val, &$db, $DEBUG) {
77 parent::verifier($val, $db, $DEBUG);
78 if(!isset($this->postedIdDemandeur["petitionnaire_principal"]) OR
79 empty($this->postedIdDemandeur["petitionnaire_principal"])) {
80 $this->correct = false;
81 $this->addToMessage(_("La saisie d'un petitionnaire principal est obligatoire."));
82 }
83 }
84
85 /**
86 * Configuration des select
87 */
88 function setSelect(&$form, $maj,&$db,$debug) {
89 parent::setSelect($form, $maj,$db,$debug);
90
91 if(file_exists ("../sql/".$db->phptype."/".$this->table.".form.inc.php"))
92 include ("../sql/".$db->phptype."/".$this->table.".form.inc.php");
93 elseif(file_exists ("../sql/".$db->phptype."/".$this->table.".form.inc"))
94 include ("../sql/".$db->phptype."/".$this->table.".form.inc");
95
96 // Si en ajout
97 if ($maj == 0) {
98 //Récupération de paramètre pour le rechargement ajax du select
99 $idx_dossier = $this->getParameter("idx_dossier");
100 $datd = $this->getParameter("datd");
101
102 $contenu = array();
103
104 $sql_demande_type = "SELECT demande_type.demande_type, demande_type.libelle FROM ".DB_PREFIXE."demande_type
105 LEFT OUTER JOIN ".DB_PREFIXE."lien_demande_type_etat_dossier_autorisation
106 ON lien_demande_type_etat_dossier_autorisation.demande_type=demande_type.demande_type
107 LEFT OUTER JOIN ".DB_PREFIXE."dossier_autorisation
108 ON lien_demande_type_etat_dossier_autorisation.etat_dossier_autorisation=
109 dossier_autorisation.etat_dossier_autorisation
110 LEFT OUTER JOIN ".DB_PREFIXE."dossier
111 ON dossier.dossier_autorisation=dossier_autorisation.dossier_autorisation";
112
113
114 // Ajout de filtre sur la requête (initial)
115 if(isset($idx_dossier) AND $idx_dossier != "") {
116 $sql_demande_type .= " WHERE demande_type.demande_nature = 2 ";
117
118 // ajout du numéro de dossier existant pour tester l'état du DA
119 $sql_demande_type .= "AND dossier.dossier = '".$idx_dossier."' ";
120 } else {
121 $sql_demande_type .= " WHERE demande_type.demande_nature = 1 ";
122 }
123 if(isset($_POST["dossier_autorisation_type_detaille"]) AND $_POST["dossier_autorisation_type_detaille"] != "") {
124 $datd = $_POST["dossier_autorisation_type_detaille"];
125 }
126 // Ajout de filtre sur la requête (dossier_autorisation_type_detaille)
127 if(isset($datd) AND $datd != "") {
128 $sql_demande_type .= " AND demande_type.dossier_autorisation_type_detaille = ".$datd;
129 } else {
130 $datd = $this->getVal("dossier_autorisation_type_detaille");
131 if ($datd != "") {
132 $sql_demande_type .= " AND demande_type.dossier_autorisation_type_detaille = ".$datd;
133 }
134 }
135 $sql_demande_type .= " ORDER BY demande_type.libelle";
136 $res = $db->query($sql_demande_type);
137
138 // logger
139 $this->f->addToLog("setSelect(): db->query(\"".$sql_demande_type."\");",
140 VERBOSE_MODE);
141 if ( database::isError($res)){
142 die();
143 }
144
145 $contenu[0][0] = '';
146 $contenu[1][0] = _('choisir')."&nbsp;"._("demande_type");
147
148 $k=1;
149 while($row =& $res->fetchRow()){
150
151 $contenu[0][$k] = $row[0];
152 $contenu[1][$k] = $row[1];
153 $k++;
154 }
155
156 $form->setSelect("demande_type", $contenu);
157 }
158
159 }
160 /*
161 * Ajout du fielset
162 * Add fieldset
163 */
164 function setLayout(&$form, $maj){
165 if ( $maj < 2 OR $maj == 3 ) {
166
167 /*Champ sur lequel s'ouvre le bloc 1 */
168 $form->setBloc('dossier_autorisation_type_detaille','D',"","dossier_type col_8");
169
170 $form->setFieldset('dossier_autorisation_type_detaille','D'
171 ,_('Type de dossier/demande'));
172 $form->setFieldset('demande_type','F','');
173
174 $form->setBloc('demande_type','F');
175 /*Fin bloc 1*/
176
177 /*Champ sur lequel s'ouvre le bloc 2 */
178 $form->setBloc('date_demande','D',"","col_4 demande_hidden_bloc");
179 $form->setFieldset('date_demande','D',_('Date de la demande'));
180 $form->setFieldset('date_demande','F','');
181 $form->setBloc('date_demande','F');
182 /*Fin bloc 2*/
183
184 /*Champ sur lequel s'ouvre le bloc 3 */
185 $form->setBloc('terrain_references_cadastrales','D',"",
186 "localisation col_12 demande_hidden_bloc");
187 $form->setFieldset('terrain_references_cadastrales','D',_('Localisation du terrain'));
188 $form->setFieldset('terrain_superficie','F','');
189 $form->setBloc('terrain_superficie','F');
190 /*Fin bloc 4*/
191
192 }
193 }
194
195 /*
196 * Ajoute des actions sur les deux premiers select
197 * Add actions on the two first select
198 */
199 function setOnchange(&$form,$maj){
200 parent::setOnchange($form,$maj);
201
202 $form->setOnchange("dossier_autorisation_type_detaille","changeDemandeType();");
203 $form->setOnchange("demande_type","showFormsDemande();");
204 }
205
206 function setLib(&$form,$maj) {
207 parent::setLib($form,$maj);
208 //libelle des champs
209
210 $form->setLib('terrain_adresse_voie',_('terrain_adresse'));
211 }
212 /*
213 * Cache le champ terrain_references_cadastrales
214 * Hide the fiels terrain_references_cadastrales
215 */
216 function setType(&$form,$maj) {
217 parent::setType($form,$maj);
218
219 $form->setType('dossier_instruction', 'hidden');
220 $form->setType('dossier_autorisation', 'hidden');
221
222 $form->setType('instruction_recepisse', 'hidden');
223 $form->setType('arrondissement', 'hidden');
224
225 // Si il s'agit d'une demande sur dossier existant on desactive tous les champs
226 // sauf demande_type
227 if(($maj == 0 AND $this-> getParameter("idx_dossier"))) {
228 $form->setType('dossier_autorisation_type_detaille', 'selecthiddenstatic');
229 $form->setType('terrain_references_cadastrales', 'hiddenstatic');
230 $form->setType('terrain_adresse_voie_numero', 'hiddenstatic');
231 $form->setType('terrain_adresse_voie', 'hiddenstatic');
232 $form->setType('terrain_adresse_lieu_dit', 'hiddenstatic');
233 $form->setType('terrain_adresse_localite', 'hiddenstatic');
234 $form->setType('terrain_adresse_code_postal', 'hiddenstatic');
235 $form->setType('terrain_adresse_bp', 'hiddenstatic');
236 $form->setType('terrain_adresse_cedex', 'hiddenstatic');
237 $form->setType('terrain_superficie', 'hiddenstatic');
238 }
239 if($maj == 1) {
240 $form->setType('dossier_autorisation_type_detaille', 'selecthiddenstatic');
241 $form->setType('demande_type', 'selecthiddenstatic');
242 }
243 if($maj == 3) {
244 $form->setType('terrain_references_cadastrales', 'referencescadastralesstatic');
245 }
246
247 }
248
249 /**
250 * Méthode permettant d'ajouter un dossier d'autorisation
251 */
252 function ajoutDossierAutorisation($id, &$db, $val, $DEBUG){
253 require_once '../obj/dossier_autorisation.class.php';
254 $dossier_autorisation = new dossier_autorisation("]",$db,$DEBUG);
255 $id_etat_initial_da = $this->f->getParameter('etat_initial_dossier_autorisation');
256 $error = false;
257
258 // Vérification de l'existance d'un état initial des DA dans la table om_parametre
259 // afin d'éviter d'eventuelle erreur de base de données
260 if(isset($id_etat_initial_da)) {
261 $sql = "SELECT count(*) FROM ".DB_PREFIXE."etat_dossier_autorisation
262 WHERE etat_dossier_autorisation = ".$id_etat_initial_da;
263 $count = $this->db->getOne($sql);
264 $this->f->addToLog("ajoutDossierAutorisation() : db->getOne(\"".$sql."\")", VERBOSE_MODE);
265 if ( database::isError($count)){
266 die();
267 }
268 if($count != 1) {
269 $error = true;
270 } else {
271 // La méthode ajouter prend en paramètre un tableau associatif
272 // contenant toutes les champs de la classe instanciée,
273 // d'où l'initialisation du tableau en bouclant sur la liste des champs du DA
274 foreach($dossier_autorisation->champs as $value) {
275 $valAuto[$value] = NULL;
276 }
277 // Définition des valeurs à insérer
278 $valAuto['dossier_autorisation']="";
279 $valAuto['exercice']=NULL;
280 $valAuto['insee']=NULL;
281 $valAuto['arrondissement']=NULL;
282 $valAuto['etat_dossier_autorisation']=$this->f->getParameter('etat_initial_dossier_autorisation');
283 $valAuto['erp_numero_batiment']=NULL;
284 $valAuto['erp_ouvert']=NULL;
285 $valAuto['erp_arrete_decision']=NULL;
286 $valAuto['dossier_autorisation_type_detaille']=$this->valF['dossier_autorisation_type_detaille'];
287 $valAuto['depot_initial']=$this->dateDBToForm($this->valF['date_demande']);
288 $valAuto['terrain_references_cadastrales']=$this->valF['terrain_references_cadastrales'];
289 $valAuto['terrain_adresse_voie_numero']=$this->valF['terrain_adresse_voie_numero'];
290 $valAuto['terrain_adresse_voie']=$this->valF['terrain_adresse_voie'];
291 $valAuto['terrain_adresse_lieu_dit']=$this->valF['terrain_adresse_lieu_dit'];
292 $valAuto['terrain_adresse_localite']=$this->valF['terrain_adresse_localite'];
293 $valAuto['terrain_adresse_code_postal']=$this->valF['terrain_adresse_code_postal'];
294 $valAuto['terrain_adresse_bp']=$this->valF['terrain_adresse_bp'];
295 $valAuto['terrain_adresse_cedex']=$this->valF['terrain_adresse_cedex'];
296 $valAuto['terrain_superficie']=$this->valF['terrain_superficie'];
297 $valAuto['numero_version']=-1;
298 // Ajout du dossier dans la base
299 $dossier_autorisation->ajouter($valAuto, $db, $DEBUG);
300 // Liaison du dossier ajouter à la demande
301 $this->valF['dossier_autorisation'] = $dossier_autorisation->valF['dossier_autorisation'];
302 }
303 } else {
304 $error = true;
305 }
306 // Affichage de l'erreur et stop de l'affichage
307 if( $error ) {
308 echo "</div>";
309 $class = "error";
310 $message = _("Erreur de parametrage. Contactez votre administrateur.");
311 $this->f->displayMessage($class, $message);
312 die();
313 }
314
315 }
316
317 function getCodeDemandeType($demande_type){
318
319 $sql = "SELECT
320 code
321 FROM
322 ".DB_PREFIXE."demande_type
323 WHERE
324 demande_type = ".$demande_type;
325 $codeDemandeType = $this->db->getOne($sql);
326 $this->addToLog("db->getone(\"".$sql."\");", VERBOSE_MODE);
327
328 return $codeDemandeType;
329 }
330
331 /**
332 * Méthode permettant d'ajouter un dossier d'instruction
333 */
334 function ajoutDossierInstruction($id, &$db, $val, $DEBUG, $dossier_instruction_type){
335 require_once '../obj/dossier.class.php';
336 $dossier = new dossier("]",$db,$DEBUG);
337 foreach($dossier->champs as $value) {
338 $valInstr[$value] = NULL;
339 }
340 require_once '../obj/dossier_autorisation_type_detaille.class.php';
341 $datd = new dossier_autorisation_type_detaille(
342 $this->valF['dossier_autorisation_type_detaille'],$db,$DEBUG);
343
344 /*Ajout de la variable dossier_instruction_type à l'objet dossier pour le
345 * versionning
346 */
347 $dossier->setDossierInstructionType($dossier_instruction_type);
348
349 // Définition des valeurs à entrée dans la table
350 $valInstr['dossier_instruction_type']=$dossier_instruction_type;
351 $valInstr['date_depot']=$this->dateDBToForm($this->valF['date_demande']);
352 $valInstr['date_dernier_depot']=$this->dateDBToForm($this->valF['date_demande']);
353 $valInstr['date_demande']=$this->dateDBToForm($this->valF['date_demande']);
354 $valInstr['depot_initial']=$this->dateDBToForm($this->valF['date_demande']);
355 $valInstr['terrain_references_cadastrales']=$this->valF['terrain_references_cadastrales'];
356 $valInstr['terrain_adresse_voie_numero']=$this->valF['terrain_adresse_voie_numero'];
357 $valInstr['terrain_adresse_voie']=$this->valF['terrain_adresse_voie'];
358 $valInstr['terrain_adresse_lieu_dit']=$this->valF['terrain_adresse_lieu_dit'];
359 $valInstr['terrain_adresse_localite']=$this->valF['terrain_adresse_localite'];
360 $valInstr['terrain_adresse_code_postal']=$this->valF['terrain_adresse_code_postal'];
361 $valInstr['terrain_adresse_bp']=$this->valF['terrain_adresse_bp'];
362 $valInstr['terrain_adresse_cedex']=$this->valF['terrain_adresse_cedex'];
363 $valInstr['terrain_superficie']=$this->valF['terrain_superficie'];
364 $valInstr['description']="";
365 $valInstr['dossier_autorisation']=$this->valF['dossier_autorisation'];
366
367 /*
368 * Gestion de la qualification
369 * */
370 //Récupérer le code du type de la demande
371 $codeDemandeType = $this->getCodeDemandeType($val['demande_type']);
372
373 //Marque le dossier comme à qualifier selon le type de dossier d'instruction
374 if ( strcasecmp($codeDemandeType, "DI") == 0 ||
375 strcasecmp($codeDemandeType, "DT") == 0 ||
376 strcasecmp($codeDemandeType, "DM") == 0 ||
377 strcasecmp($codeDemandeType, "DP") == 0 ||
378 strcasecmp($codeDemandeType, "DTP") == 0 ||
379 strcasecmp($codeDemandeType, "DAACT") == 0 ||
380 strcasecmp($codeDemandeType, "DOC") == 0 ){
381
382 $valInstr['a_qualifier'] = TRUE;
383 }
384
385 // Récupération du cerfa pour le type d'instruction sélectionnée et valide
386 $sql = "SELECT
387 dossier_autorisation_type_detaille.cerfa
388 FROM
389 ".DB_PREFIXE."dossier_autorisation_type_detaille
390 JOIN
391 ".DB_PREFIXE."cerfa
392 ON
393 dossier_autorisation_type_detaille.cerfa = cerfa.cerfa
394 WHERE
395 now()<=om_validite_fin
396 AND now()>=om_validite_debut
397 AND dossier_autorisation_type_detaille=".$this->valF['dossier_autorisation_type_detaille'];
398 $valInstr['cerfa'] = $db->getOne($sql);
399 $this->f->addToLog("ajoutDossierInstruction() : db->getone(\"".$sql."\");", VERBOSE_MODE);
400 if ( database::isError($valInstr['cerfa'])){
401 die();
402 }
403 $dossier->ajouter($valInstr, $db, $DEBUG);
404
405 //Affichage de message à l'utilisateur concernant un problème lors de
406 //l'affectation de l'instructeur au dossier d'instruction
407 if ($dossier->valF['dossier_autorisation'] === '' &&
408 $dossier->valF['instructeur'] === NULL){
409 $this->addToMessage(_("Aucun instructeur compatible avec ce dossier, contactez votre administrateur afin d'en assigner un a ce dossier."));
410 }
411 elseif ( $dossier->valF['instructeur'] === NULL ){
412 if ($this->f->isAccredited("dossier_modifier_instructeur")) {
413 $this->addToMessage("<br/> "._("Pensez a assigner un instructeur a ce dossier."));
414 } else {
415 $this->addToMessage(_("Aucun instructeur compatible avec ce dossier, contactez votre administrateur afin d'en assigner un a ce dossier."));
416 }
417 }
418
419 // Liaison du dossier ajouter à la demande
420 $this->valF['dossier_instruction'] = $dossier->valF['dossier'];
421 }
422
423 /**
424 * Méthode permettant d'ajouter les données techniques au dossier d'autorisation
425 */
426 function ajoutDonneesTechniquesDA($id, &$db, $val, $DEBUG){
427
428 require_once '../obj/donnees_techniques.class.php';
429 $donnees_techniques = new donnees_techniques("]",$db,$DEBUG);
430
431 // Champs tous à NULL car seul le champ concernant le dossier d'autorisation sera rempli
432 foreach($donnees_techniques->champs as $value) {
433 $val[$value] = NULL;
434 }
435
436 // Ajout du numéro de dossier d'instruction
437 $val['dossier_autorisation']=$this->valF['dossier_autorisation'];
438
439 // Ajout des données techniques
440 $donnees_techniques->ajouter($val, $db, $DEBUG);
441 }
442
443 /**
444 * Méthode permettant d'ajouter les données techniques au dossier d'autorisation
445 */
446 function ajoutDonneesTechniquesDI($id, &$db, $val, $DEBUG){
447
448 // Requête permettant de récupérer le dernier enregistrement en base des données techniques
449 // liées au dossier d'autorisationdu dossier d'instruction en cours de création
450 $sql_dt_from_da = "SELECT donnees_techniques
451 FROM ".DB_PREFIXE."donnees_techniques
452 WHERE dossier_autorisation = '".$this->valF['dossier_autorisation']."'
453 ORDER BY donnees_techniques DESC";
454 // Récupération de l'id
455 $id_da = $this->db->getOne($sql_dt_from_da);
456 if ( database::isError($id_da)){
457 // affiche l'erreur pour l'utilisateur et dans le log
458 $this->addToErrors("",
459 _("Erreur lors de la recuperation des donnees techniques en cours de validite"),
460 _("Erreur lors de la recuperation des donnees techniques en cours de validite"));
461 return false;
462 }
463 require_once '../obj/donnees_techniques.class.php';
464 $donnees_techniques = new donnees_techniques($id_da,$db,$DEBUG);
465
466 // Récupération des données du DA
467 foreach($donnees_techniques->champs as $value) {
468 $val[$value] = $donnees_techniques->getVal($value);
469 }
470
471 // Ajout du numéro de dossier d'instruction
472 $val['dossier_instruction'] = $this->valF['dossier_instruction'];
473 // Suppression du numéro de dossier d'autorisation
474 $val['dossier_autorisation'] = NULL;
475
476 // Ajout des données techniques
477 $donnees_techniques->ajouter($val, $db, $DEBUG);
478 }
479
480 /**
481 * Ajout des liens demandeurs / dossier d'autorisation s'ils n'y sont pas déjà
482 **/
483 function ajoutLiensDossierAutorisation($id, &$db, $val, $DEBUG) {
484 // Création des liens entre le dossier autorisation et les demandeurs
485 include '../sql/pgsql/demande.form.inc.php';
486 require_once '../obj/lien_dossier_autorisation_demandeur.class.php';
487 $ldad = new lien_dossier_autorisation_demandeur("]",$db,$DEBUG);
488 // Recupération des demandeurs liés à la demande
489 $sql = str_replace("<demande>",$this->valF['demande'],$sql_lien_demande_demandeur.
490 " AND lien_demande_demandeur.demandeur NOT IN (
491 SELECT lien_dossier_autorisation_demandeur.demandeur
492 FROM ".DB_PREFIXE."lien_dossier_autorisation_demandeur
493 WHERE lien_dossier_autorisation_demandeur.dossier_autorisation =
494 '".$this->valF['dossier_autorisation']."'
495 )");
496 $res = $db->query($sql);
497 $this->f->addToLog("ajoutLiensDossierAutorisation() : db->query(\"".$sql."\");", VERBOSE_MODE);
498 if ( database::isError($res)){
499 die();
500 }
501 while($row = &$res->fetchRow(DB_FETCHMODE_ASSOC)) {
502 $row['lien_dossier_autorisation_demandeur'] = NULL;
503 $row['dossier_autorisation'] = $this->valF['dossier_autorisation'];
504 $ldad->ajouter($row, $db, $DEBUG);
505 }
506 }
507
508 /**
509 * Ajout des liens demandeurs / dossier d'autorisation
510 **/
511 function ajoutLiensDossierInstruction($id, &$db, $val, $DEBUG) {
512 // Création des liens entre le dossier instruction et les demandeurs
513 include '../sql/pgsql/demande.form.inc.php';
514 require_once '../obj/lien_dossier_demandeur.class.php';
515 $ldd = new lien_dossier_demandeur("]",$db,$DEBUG);
516 // Recupération des demandeurs liés à la demande
517 $sql = str_replace("<demande>",$this->valF['demande'],$sql_lien_demande_demandeur);
518 $res = $db->query($sql);
519 $this->f->addToLog("ajoutLiensDossierInstruction() : db->query(\"".$sql."\");", VERBOSE_MODE);
520 if ( database::isError($res)){
521 die();
522 }
523 while($row = &$res->fetchRow(DB_FETCHMODE_ASSOC)) {
524 $row['lien_dossier_demandeur'] = NULL;
525 $row['dossier'] = $this->valF['dossier_instruction'];
526 $ldd->ajouter($row, $db, $DEBUG);
527 }
528 }
529
530 /*
531 * Récupère l'identifiant d'un arrondissement à partir d'un code postal
532 */
533 function getArrondissement($terrain_adresse_code_postal){
534
535 $arrondissement = NULL;
536
537 $sql = "SELECT
538 arrondissement
539 FROM
540 ".DB_PREFIXE."arrondissement
541 WHERE
542 code_postal = '$terrain_adresse_code_postal' ";
543 $this->addToLog("demande.class.php : ".$sql." execute <br>", EXTRA_VERBOSE_MODE);
544
545 $res = $this->db->query($sql);
546 $this->f->addToLog("getArrondissement() : db->query(\"".$sql."\")", VERBOSE_MODE);
547 if ( database::isError($res)){
548 die();
549 }
550
551 if( $res->numrows() > 0 ) {
552
553 $row=& $res->fetchRow(DB_FETCHMODE_ASSOC);
554 $arrondissement = $row['arrondissement'];
555 }
556
557 return $arrondissement;
558 }
559
560 /*
561 * Récupère l'évènement lié à un type de demande
562 */
563 function getEvenement($demande_type){
564
565 $evenement = NULL;
566
567 $sql =
568 "SELECT
569 evenement
570 FROM
571 ".DB_PREFIXE."demande_type
572 WHERE
573 demande_type = $demande_type";
574
575 $res = $this->db->query($sql);
576 $this->f->addToLog("getEvenement() : db->query(\"".$sql."\")", VERBOSE_MODE);
577 if ( database::isError($res)){
578 die();
579 }
580
581 if ( $res->numrows() > 0 ){
582
583 $row=& $res->fetchRow(DB_FETCHMODE_ASSOC);
584 $evenement = $row['evenement'];
585 }
586
587 return $evenement;
588 }
589
590 /*
591 * Récupère la lettre type lié à un événement
592 */
593 function getLettreType($evenement){
594
595 $lettretype = NULL;
596
597 $sql =
598 "SELECT
599 lettretype
600 FROM
601 ".DB_PREFIXE."evenement
602 WHERE
603 evenement = $evenement";
604
605 $res = $this->db->query($sql);
606 $this->f->addToLog("getLettreType() : db->query(\"".$sql."\")", VERBOSE_MODE);
607 if ( database::isError($res)){
608 die();
609 }
610
611 if ( $res->numrows() > 0 ){
612
613 $row=& $res->fetchRow(DB_FETCHMODE_ASSOC);
614 $lettretype = $row['lettretype'];
615 }
616
617 return $lettretype;
618 }
619
620 /**
621 * Retourne le libellé du dossier d'autorisation
622 * @param string $dossier_autorisation Identifiant du dossier d'autorisation
623 * @return string Libellé dossier d'autorisation
624 */
625 function get_dossier_autorisation_libelle($dossier_autorisation) {
626
627 $dossier_autorisation_libelle = "";
628
629 // Requête SQL
630 $sql = "SELECT
631 dossier_autorisation_libelle
632 FROM
633 ".DB_PREFIXE."dossier_autorisation
634 WHERE
635 dossier_autorisation = '$dossier_autorisation'";
636
637 $dossier_autorisation_libelle = $this->db->getOne($sql);
638 $this->addToLog("get_dossier_autorisation_libelle(): db->getOne(\"".$sql."\")", VERBOSE_MODE);
639 database::isError($dossier_autorisation_libelle);
640
641 // Retourne le résultat
642 return $dossier_autorisation_libelle;
643 }
644
645 /**
646 * Retourne le libellé du dossier d'autorisation
647 * @param string $dossier_autorisation Identifiant du dossier d'autorisation
648 * @return string Libellé dossier d'autorisation
649 */
650 function get_dossier_libelle($dossier) {
651
652 $dossier_libelle = "";
653
654 // Requête SQL
655 $sql = "SELECT
656 dossier_libelle
657 FROM
658 ".DB_PREFIXE."dossier
659 WHERE
660 dossier = '$dossier'";
661
662 $dossier_libelle = $this->db->getOne($sql);
663 $this->addToLog("get_dossier_libelle(): db->getOne(\"".$sql."\")", VERBOSE_MODE);
664 database::isError($dossier_libelle);
665
666 // Retourne le résultat
667 return $dossier_libelle;
668 }
669
670 /**
671 * Ajout des dossiers
672 **/
673 function triggerAjouter($id, &$db, $val, $DEBUG){
674
675 include '../sql/pgsql/demande.form.inc.php';
676
677 if($this->valF["demande_type"] != NULL) {
678 $res = $db->query(str_replace('<idx>', $this->valF['demande_type'], $sql_demande_type_details_by_id));
679 $this->f->addToLog("triggerAjouter() : db->query(\"".str_replace('<idx>', $this->valF['demande_type'], $sql_demande_type_details_by_id)."\")", VERBOSE_MODE);
680 if ( database::isError($res)){
681 die();
682 }
683 // Attribut permettant de définir si un dossier a été créé
684 $this->ajoutDI = FALSE;
685 $dossier_type = $res->fetchRow(DB_FETCHMODE_ASSOC);
686 // Création du dossier_autorisation
687 if($this->valF['dossier_autorisation'] == "") {
688 $this->ajoutDossierAutorisation($id, $db, $val, $DEBUG);
689 $this -> addToMessage(_("Creation du dossier d'autorisation no").$this->get_dossier_autorisation_libelle($this->valF['dossier_autorisation']));
690 //Ajout des données techniques au dossier d'autorisation
691 $this->ajoutDonneesTechniquesDA($id, $db, $val, $DEBUG);
692 }
693 // Enregistrement du numéro dossier existant (il sera écrasé si un DI est créé)
694 if ($this->getParameter("idx_dossier") != "") {
695 $this->valF['dossier_instruction'] = $this->getParameter("idx_dossier");
696 }
697 // Création du dossier d'instruction
698 if($dossier_type['dossier_instruction_type'] != NULL) {
699 $this->ajoutDossierInstruction($id, $db, $val, $DEBUG, $dossier_type['dossier_instruction_type']);
700 $this -> addToMessage(_("Creation du dossier d'instruction no").$this->get_dossier_libelle($this->valF['dossier_instruction']));
701 // Attribut permettant de définir si un dossier a été créé.
702 $this->ajoutDI = TRUE;
703
704 //Ajout des données techniques au dossier d'instruction
705 $this->ajoutDonneesTechniquesDI($id, $db, $val, $DEBUG);
706 }
707
708 // Si le dossier_instruction existe
709 if (isset($this->valF['dossier_instruction']) && $this->valF['dossier_instruction'] !== "" ) {
710 // Récupère les informations nécessaire pour créer le répertoire de numérisation
711 $getInfosForFoldername = $this->getInfosForFoldername($this->valF['dossier_instruction']);
712 // Création du répertoire pour la numérisation
713 if ($this->createFolder($getInfosForFoldername['dossier_autorisation'], $getInfosForFoldername['code'], $getInfosForFoldername['version']) === false) {
714 $this->correct = false;
715 // efface les messages précédents
716 $this->msg = '';
717 // affiche l'erreur pour l'utilisateur et dans le log
718 $this->addToErrors('', _("Le repertoire du dossier d'instruction ne s'est pas cree dans le repertoire de numerisation.")." "._("Veuillez contacter votre administrateur."), _("Le repertoire du dossier d'instruction ne s'est pas cree dans le repertoire de numerisation."));
719 // arrête le traitement entier
720 return false;
721 }
722 }
723
724 /*Création du lien de téléchargement de récépissé de demande*/
725 if ( $this->valF['demande_type'] != "" && is_numeric($this->valF['demande_type'])
726 && isset($this->valF['dossier_instruction']) && $this->valF['dossier_instruction'] !== "" ){
727
728 /*Récupérer l'événement lié à ce type de demande*/
729 $evenement = $this->getEvenement($this->valF['demande_type']);
730
731 /*Récupération de la lettre type de l'événement*/
732 $lettretype = $this->getLettreType($evenement);
733
734 /*Création d'une nouvelle instruction avec cet événement*/
735 /*Données*/
736 $valInstr['instruction']=NULL;
737
738 $valInstr['destinataire']=$this->valF['dossier_instruction'];
739 $valInstr['dossier']=$this->valF['dossier_instruction'];
740
741 $valInstr['date_evenement']=date("d/m/Y");
742 $valInstr['evenement']=$evenement;
743 $valInstr['lettretype']=$lettretype;
744 $valInstr['complement']="";
745 $valInstr['complement2']="";
746
747 $valInstr['action']="initialisation";
748 $valInstr['delai']="2";
749 $valInstr['etat']="notifier";
750 $valInstr['accord_tacite']="Oui";
751 $valInstr['delai_notification']="1";
752 $valInstr['archive_delai']="0";
753 $valInstr['archive_date_complet']=NULL;
754 $valInstr['archive_date_dernier_depot']=NULL;
755 $valInstr['archive_date_rejet']=NULL;
756 $valInstr['archive_date_limite']=NULL;
757 $valInstr['archive_date_notification_delai']=NULL;
758 $valInstr['archive_accord_tacite']="Non";
759 $valInstr['archive_etat']="initialiser";
760 $valInstr['archive_date_decision']=NULL;
761 $valInstr['archive_avis']="";
762 $valInstr['archive_date_validite']=NULL;
763 $valInstr['archive_date_achevement']=NULL;
764 $valInstr['archive_date_chantier']=NULL;
765 $valInstr['archive_date_conformite']=NULL;
766 $valInstr['archive_incompletude']=NULL;
767 $valInstr['archive_evenement_suivant_tacite']="";
768 $valInstr['archive_evenement_suivant_tacite_incompletude']=NULL;
769 $valInstr['archive_etat_pendant_incompletude']=NULL;
770 $valInstr['archive_date_limite_incompletude']=NULL;
771 $valInstr['archive_delai_incompletude']=NULL;
772 $valInstr['archive_autorite_competente']=NULL;
773 $valInstr['complement3']="";
774 $valInstr['complement4']="";
775 $valInstr['complement5']="";
776 $valInstr['complement6']="";
777 $valInstr['complement7']="";
778 $valInstr['complement8']="";
779 $valInstr['complement9']="";
780 $valInstr['complement10']="";
781 $valInstr['complement11']="";
782 $valInstr['complement12']="";
783 $valInstr['complement13']="";
784 $valInstr['complement14']="";
785 $valInstr['complement15']="";
786 $valInstr['avis_decision']=NULL;
787 $valInstr['date_finalisation_courrier']=NULL;
788 $valInstr['date_envoi_signature']=NULL;
789 $valInstr['date_retour_signature']=NULL;
790 $valInstr['date_envoi_rar']=NULL;
791 $valInstr['date_retour_rar']=NULL;
792 $valInstr['date_envoi_controle_legalite']=NULL;
793 $valInstr['date_retour_controle_legalite']=NULL;
794 $valInstr['signataire_arrete']=NULL;
795 $valInstr['numero_arrete']=NULL;
796 $valInstr['code_barres']=NULL;
797 $valInstr['om_fichier_instruction']=NULL;
798 $valInstr['om_final_instruction']=NULL;
799 $valInstr['document_numerise']=NULL;
800 $valInstr['autorite_competente']=NULL;
801 $valInstr['duree_validite_parametrage']="0";
802 $valInstr['duree_validite']="0";
803
804 /*Fichier requis*/
805 require_once '../obj/instruction.class.php';
806
807 /*Création d'un nouveau dossier*/
808 $instruction = new instruction("]",$db,$DEBUG);
809 $instruction->valF = "";
810 $instruction->ajouter($valInstr, $db, $DEBUG);
811
812 //Finalisation du document
813 $_GET['obj']='instruction';
814 $_GET['idx']=$instruction->valF[$instruction->clePrimaire];
815 $instruction = new instruction($_GET['idx'],$db,$DEBUG);
816 $res = $instruction->finaliser('', 1, '', '');
817
818 /*Si la création a réussie*/
819 if ( $instruction->valF['instruction'] != "" ){
820
821 /*Affichage du récépissé de la demande*/
822 $this->valF['instruction_recepisse'] = $instruction->valF['instruction'];
823 $this -> addToMessage("<br/><a
824 class='lien'
825 href='"
826 .((isset($res['pdf'])&&$instruction->valF['om_final_instruction'])?$res['pdf']:
827 "../pdf/pdflettretype.php?obj=".$lettretype."&amp;idx=".$instruction->valF['instruction'])."'
828 target='_blank'>
829 <span
830 class=\"om-icon om-icon-16 om-icon-fix pdf-16\"
831 title=\""._("Telecharger le recepisse de la demande")."\">".
832 _("Telecharger le recepisse de la demande").
833 "</span>
834 &nbsp;&nbsp;&nbsp;&nbsp;".
835 _("Telecharger le recepisse de la demande")."
836 </a><br/>");
837 }
838 /*Sinon affiche un message d'erreur*/
839 else {
840
841 $this -> addToMessage(_("Une erreur s'est produite lors de la creation du recepisse"));
842 }
843 }
844
845 /*Ajout de l'arrondissement à partir du code postal*/
846 if ( !is_null($this->valF["terrain_adresse_code_postal"]) && is_numeric($this->valF["terrain_adresse_code_postal"]) ){
847
848 $this->valF["arrondissement"] = $this->getArrondissement($this->valF["terrain_adresse_code_postal"]);
849 }
850 }
851 }
852
853 /**
854 * Ajout des délégataires et pétitionnaires
855 **/
856 function triggerAjouterApres($id, &$db, $val, $DEBUG){
857
858 $this->insertLinkDemandeDemandeur($db, $DEBUG);
859
860 // Ajout des lliens entre dossier_autorisation et demandeur
861 if(!empty($this->valF['dossier_autorisation'])) {
862 $this->ajoutLiensDossierAutorisation($id, $db, $val, $DEBUG);
863 }
864 // Ajout des lliens entre dossier et demandeur
865 if($this->ajoutDI === TRUE) {
866 $this->ajoutLiensDossierInstruction($id, $db, $val, $DEBUG);
867 }
868
869 // Duplication des lots (et leurs données techniques) et
870 // liaison au nouveau dossier_d'instruction
871 if(!empty($this->valF['dossier_autorisation']) AND $val['dossier_autorisation'] != "" ) {
872 $this->lienLotDossierInstruction($id, $db, $val, $DEBUG);
873 }
874 }
875
876 /*Ajout du lien demande / demandeur(s)*/
877 function triggerModifierApres($id, &$db, $val, $DEBUG){
878 $this->listeDemandeur("demande",$this->val[array_search('demande', $this->champs)]);
879 $this->insertLinkDemandeDemandeur($db, $DEBUG);
880 $this->valIdDemandeur=$this->postedIdDemandeur;
881
882 }
883
884 /**
885 * Gestion des liens entre les lots du DA et le nouveau dossier
886 **/
887 function lienLotDossierInstruction($id, $db, $val, $DEBUG) {
888 require_once ("../obj/lot.class.php");
889 $lot = new lot("]", $db, $DEBUG);
890 require_once ("../obj/lien_lot_demandeur.class.php");
891 $lld = new lien_lot_demandeur("]", $db, $DEBUG);
892
893
894 $sqlLots = "SELECT * FROM ".DB_PREFIXE."lot
895 WHERE dossier_autorisation = '".$this->valF['dossier_autorisation']."'";
896 $resLot = $db -> query($sqlLots);
897 $this->f->addToLog("db->query(\"".$sqlLots."\");", VERBOSE_MODE);
898 $this->f->isDatabaseError($resLot);
899 while ($rowLot=& $resLot->fetchRow(DB_FETCHMODE_ASSOC)){
900 // Insertion du nouveau lot
901 $valLot['lot'] = "";
902 $valLot['libelle'] = $rowLot['libelle'];
903 $valLot['dossier_autorisation'] = NULL;
904 $valLot['dossier'] = $this->valF['dossier_instruction'];
905 $lot -> ajouter($valLot, $db, $DEBUG);
906
907 //Insertion des liens entre dossier et les lots
908 $sqlDemandeurs = "SELECT * FROM ".DB_PREFIXE."lien_lot_demandeur
909 WHERE lot = ".$rowLot['lot'];
910 $res = $db -> query($sqlDemandeurs);
911 $this->f->addToLog("lienLotDossierInstruction() : db->query(\"".$sqlDemandeurs."\");", VERBOSE_MODE);
912 if ( database::isError($res)){
913 die();
914 }
915
916 while ($row=& $res->fetchRow(DB_FETCHMODE_ASSOC)){
917 $valLld["lien_lot_demandeur"] = "";
918 $valLld["lot"]=$lot->valF['lot'];
919 $valLld["demandeur"] = $row['demandeur'];
920 $valLld["petitionnaire_principal"] = $row['petitionnaire_principal'];
921 $lld->ajouter($valLld, $db, $DEBUG);
922 }
923
924 // Récupération des données techniques du nouveau lots
925 $this->ajoutDonneesTechniquesLots($id, $db, $val, $DEBUG, $rowLot['lot'], $lot->valF['lot']);
926
927 }
928 }
929
930
931 /**
932 * Méthode permettant d'ajouter les données techniques aux lots
933 */
934 function ajoutDonneesTechniquesLots($id, &$db, $val, $DEBUG, $lotInit, $lotDest){
935 // Requete permettant de recupérer les données techniques du lot passé en paramètre ($lotInit)
936 $sql_get_dt = "SELECT donnees_techniques FROM ".DB_PREFIXE."donnees_techniques WHERE lot=".$lotInit;
937 $id_dt = $this->f->db->getOne($sql_get_dt);
938 // Si des données techniques sont liées au lots on les "copie" et on les lies au lot passé en paramètre (lotDest)
939 if(isset($id_dt) AND !empty($id_dt)) {
940 $this->f->addToLog("ajoutDonneesTechniquesLots() : db->getone(\"".$sql_get_dt."\");", VERBOSE_MODE);
941 if ( database::isError($id_dt)){
942 // Appel de la methode de recuperation des erreurs
943 $this->erreur_db($id_dt->getDebugInfo(), $id_dt->getMessage(), '');
944 return false;
945 }
946 require_once '../obj/donnees_techniques.class.php';
947 $donnees_techniques = new donnees_techniques($id_dt,$db,$DEBUG);
948
949 // Récupération des données dans le tableau des valeurs à insérer
950 foreach($donnees_techniques->champs as $value) {
951 $val[$value] = $donnees_techniques->getVal($value);
952 }
953 // Modification du lien vers le nouveau lot
954 $val["lot"] = $lotDest;
955 // Ajout des données techniques
956 $donnees_techniques->ajouter($val, $db, $DEBUG);
957 }
958 }
959
960 /**
961 * Gestion des liens entre la demande et les demandeurs recemment ajoutés
962 **/
963 function insertLinkDemandeDemandeur($db, $DEBUG) {
964 //
965 require_once "../obj/lien_demande_demandeur.class.php";
966 // Comparaison de l'id petitionnaire principal
967 if(isset($this->postedIdDemandeur['petitionnaire_principal']) AND
968 !empty($this->postedIdDemandeur['petitionnaire_principal']) AND
969 $this->valIdDemandeur['petitionnaire_principal'] !=
970 $this->postedIdDemandeur['petitionnaire_principal']) {
971 // Ajout du nouveau lien
972 $this->addLinkDemandeDemandeur($this->postedIdDemandeur['petitionnaire_principal'], true, $db, $DEBUG);
973 if(!empty($this->valIdDemandeur['petitionnaire_principal'])) {
974 $this->deleteLinkDemandeDemandeur($this->valIdDemandeur['petitionnaire_principal'], $db, $DEBUG);
975 }
976 }
977
978 // Comparaison du delegataire
979 if(isset($this->postedIdDemandeur['delegataire']) AND
980 !empty($this->postedIdDemandeur['delegataire']) AND
981 $this->valIdDemandeur['delegataire'] !=
982 $this->postedIdDemandeur['delegataire']) {
983 // Ajout du nouveau lien
984 $this->addLinkDemandeDemandeur($this->postedIdDemandeur['delegataire'], false, $db, $DEBUG);
985 if(!empty($this->valIdDemandeur['delegataire'])) {
986 $this->deleteLinkDemandeDemandeur($this->valIdDemandeur['delegataire'], $db, $DEBUG);
987 }
988 }
989
990 // Comparaison des different petitionnaires
991 if(isset($this->postedIdDemandeur['petitionnaire'])) {
992 // Suppression des liens non valides
993 foreach ($this->valIdDemandeur['petitionnaire'] as $petitionnaire) {
994 if(!in_array($petitionnaire, $this->postedIdDemandeur['petitionnaire'])) {
995 $this->deleteLinkDemandeDemandeur($petitionnaire, $db, $DEBUG);
996 }
997 }
998 // Ajout des nouveaux liens
999 foreach ($this->postedIdDemandeur['petitionnaire'] as $petitionnaire) {
1000 if(!in_array($petitionnaire, $this->valIdDemandeur['petitionnaire'])) {
1001 $this->addLinkDemandeDemandeur($petitionnaire, false, $db, $DEBUG);
1002 }
1003 }
1004 }
1005 }
1006
1007
1008 /**
1009 * Fonction permettant d'ajouter un lien
1010 * entre la table demande et demandeur
1011 **/
1012 function addLinkDemandeDemandeur($id, $principal, $db, $DEBUG) {
1013 $lienAjout = new lien_demande_demandeur(
1014 "]",
1015 $db,
1016 $DEBUG);
1017 $lien = array('lien_demande_demandeur' => "",
1018 'petitionnaire_principal' => (($principal)?"t":"f"),
1019 'demande' => $this->valF['demande'],
1020 'demandeur' => $id);
1021 $lienAjout->ajouter($lien, $db, $DEBUG);
1022 $lienAjout->__destruct();
1023 }
1024
1025 /**
1026 * Fonction permettant de supprimer un lien
1027 * entre la table demande et demandeur
1028 **/
1029 function deleteLinkDemandeDemandeur($id, $db, $DEBUG) {
1030 // Suppression
1031 $sql = "DELETE FROM ".DB_PREFIXE."lien_demande_demandeur ".
1032 "WHERE demande=".$this->valF['demande'].
1033 " AND demandeur=".$id;
1034 // Execution de la requete de suppression de l'objet
1035 $res = $db->query($sql);
1036 // Logger
1037 $this->f->addToLog("deleteLinkDemandeDemandeur(): db->query(\"".$sql."\");", VERBOSE_MODE);
1038 if ( database::isError($res)){
1039 die();
1040 }
1041
1042 }
1043
1044 /*
1045 * Teste si le lien entre une demande et un demandeur existe
1046 * */
1047 function isLinkDemandeDemandeurExist($idDemandeur) {
1048 $sql = "SELECT count(*)
1049 FROM ".DB_PREFIXE."lien_demande_demandeur
1050 WHERE demande = ".$this->valF['demande'].
1051 "AND demandeur = ".$idDemandeur;
1052 $count = $this->f->db->getOne($sql);
1053 $this->f->addToLog("isLinkDemandeDemandeurExist() : db->getone(\"".$sql."\");", VERBOSE_MODE);
1054 if ( database::isError($count)){
1055 die();
1056 }
1057 if ($count === 0) {
1058 return false;
1059 } else {
1060 return true;
1061 }
1062
1063 }
1064
1065 /**
1066 * Methode de recupération des valeurs postées
1067 **/
1068 function getPostedValues() {
1069 // Récupération des demandeurs dans POST
1070 if (isset($_POST['petitionnaire_principal']) OR
1071 isset($_POST['delegataire']) OR
1072 isset($_POST['petitionnaire'])) {
1073 if( isset($_POST['petitionnaire_principal']) AND
1074 !empty($_POST['petitionnaire_principal'])) {
1075 $this->postedIdDemandeur['petitionnaire_principal'] = $_POST['petitionnaire_principal'];
1076 }
1077 if( isset($_POST['delegataire']) AND
1078 !empty($_POST['delegataire'])) {
1079 $this->postedIdDemandeur['delegataire'] = $_POST['delegataire'];
1080 }
1081 if( isset($_POST['petitionnaire']) AND
1082 !empty($_POST['petitionnaire'])) {
1083 $this->postedIdDemandeur['petitionnaire'] = $_POST['petitionnaire'];
1084 }
1085 }
1086 }
1087
1088 /**
1089 * Méthode permettant de récupérer les id des demandeurs liés à la table
1090 * liée passée en paramètre
1091 *
1092 * @param string $from Table liée : "demande", "dossier", dossier_autorisation"
1093 * @param string $id Identifiant (clé primaire de la table liée en question)
1094 */
1095 function listeDemandeur($from, $id) {
1096 // Récupération des demandeurs de la base
1097 $sql = "SELECT demandeur.demandeur,
1098 demandeur.type_demandeur,
1099 lien_".$from."_demandeur.petitionnaire_principal
1100 FROM ".DB_PREFIXE."lien_".$from."_demandeur
1101 INNER JOIN ".DB_PREFIXE."demandeur
1102 ON demandeur.demandeur=lien_".$from."_demandeur.demandeur
1103 WHERE ".$from." = '".$id."'";
1104 $res = $this->f->db->query($sql);
1105 $this->f->addToLog("listeDemandeur(): db->query(\"".$sql."\")", VERBOSE_MODE);
1106 if ( database::isError($res)){
1107 die();
1108 }
1109 // Stockage du résultat dans un tableau
1110 while ($row=& $res->fetchRow(DB_FETCHMODE_ASSOC)){
1111 if ($row['petitionnaire_principal'] == 't' AND
1112 $row['type_demandeur']=="petitionnaire") {
1113 $this->valIdDemandeur['petitionnaire_principal']=$row['demandeur'];
1114 } elseif ($row['petitionnaire_principal'] == 'f' AND
1115 $row['type_demandeur']=="petitionnaire"){
1116 $this->valIdDemandeur['petitionnaire'][]=$row['demandeur'];
1117 } elseif ($row['type_demandeur']=="delegataire"){
1118 $this->valIdDemandeur['delegataire']=$row['demandeur'];
1119 }
1120 }
1121 }
1122
1123
1124 /**
1125 * Surcharge du bouton retour afin de retourner sur la recherche de dossiers
1126 * d'instruction existant
1127 */
1128 function retour($premier = 0, $recherche = "", $tricol = "") {
1129
1130 echo "\n<a class=\"retour\" ";
1131 echo "href=\"";
1132 //
1133 if($this->getParameter("idx_dossier") != "") {
1134 echo "tab.php?";
1135 echo "obj=recherche_dossier";
1136
1137 } else {
1138 if($this->getParameter("retour")=="form" AND !($this->getParameter("validation")>0 AND $this->getParameter("maj")==2 AND $this->correct)) {
1139 echo "form.php?";
1140 } else {
1141 echo "tab.php?";
1142 }
1143 echo "obj=".get_class($this);
1144 if($this->getParameter("retour")=="form") {
1145 echo "&amp;idx=".$this->getParameter("idx");
1146 echo "&amp;idz=".$this->getParameter("idz");
1147 echo "&amp;action=3";
1148 }
1149 }
1150 echo "&amp;premier=".$this->getParameter("premier");
1151 echo "&amp;tricol=".$this->getParameter("tricol");
1152 echo "&amp;recherche=".$this->getParameter("recherche");
1153 echo "&amp;selectioncol=".$this->getParameter("selectioncol");
1154 echo "&amp;advs_id=".$this->getParameter("advs_id");
1155 echo "&amp;valide=".$this->getParameter("valide");
1156 //
1157 echo "\"";
1158 echo ">";
1159 //
1160 echo _("Retour");
1161 //
1162 echo "</a>\n";
1163
1164 }
1165
1166
1167 /**
1168 * Cette méthode permet d'afficher des informations spécifiques dans le
1169 * formulaire de l'objet
1170 *
1171 * @param integer $maj Mode de mise à jour
1172 */
1173 function formSpecificContent($maj) {
1174
1175 /**
1176 * Gestion du bloc des demandeurs
1177 */
1178 // Si le mode est (modification ou suppression ou consultation) ET que
1179 // le formulaire n'est pas correct (c'est-à-dire que le formulaire est
1180 // actif)
1181 if (!$this->correct AND $maj != 0) {
1182 // Alors on récupère les demandeurs dans la table lien pour
1183 // affectation des résultats dans this->valIdDemandeur
1184 $this->listeDemandeur("demande", $this->val[array_search('demande', $this->champs)]);
1185 }
1186
1187 // Si le mode est (ajout ou modification) ET que le formulaire n'est pas
1188 // correct (c'est-à-dire que le formulaire est actif)
1189 if ($maj < 2 AND !$this->correct) {
1190 // Alors on positionne le marqueur linkable a true qui permet
1191 // d'afficher ou non les actions de gestion des demandeurs
1192 $linkable = true;
1193 } else {
1194 // Sinon on positionne le marqueur linkable a false qui permet
1195 // d'afficher ou non les actions de gestion des demandeurs
1196 $linkable = false;
1197 }
1198
1199 // Affichage des demandeurs et des actions
1200 // Conteneur de la listes des demandeurs
1201 echo "<div id=\"liste_demandeur\" class=\"demande_hidden_bloc col_12\">";
1202 echo "<fieldset class=\"cadre ui-corner-all ui-widget-content\">";
1203 echo " <legend class=\"ui-corner-all ui-widget-content ui-state-active\">"
1204 ._("Petitionnaire")."</legend>";
1205 // Si des demandeurs sont liés à la demande
1206 require_once "../obj/petitionnaire.class.php";
1207 require_once "../obj/delegataire.class.php";
1208 // Affichage du bloc pétitionnaire principal / délégataire
1209 // L'ID DU DIV SUIVANT EST NECESSAIRE AU BON FONCTIONNEMENT DU JS
1210 echo "<div id=\"petitionnaire_principal_delegataire\">";
1211 // Affichage de la synthèse
1212 if (isset ($this->valIdDemandeur["petitionnaire_principal"]) AND
1213 !empty($this->valIdDemandeur["petitionnaire_principal"])) {
1214 $demandeur = new petitionnaire(
1215 $this->valIdDemandeur["petitionnaire_principal"],
1216 $this->f->db,false);
1217 $demandeur -> afficherSynthese("petitionnaire_principal", $linkable);
1218 $demandeur -> __destruct();
1219 } elseif ( isset ($this->postedIdDemandeur["petitionnaire_principal"]) AND
1220 !empty($this->postedIdDemandeur["petitionnaire_principal"]) ) {
1221 $demandeur = new petitionnaire(
1222 $this->postedIdDemandeur["petitionnaire_principal"],
1223 $this->f->db,false);
1224 $demandeur -> afficherSynthese("petitionnaire_principal", $linkable);
1225 $demandeur -> __destruct();
1226 }
1227 // Si en édition de formulaire
1228 if($maj < 2) {
1229 // Bouton d'ajout du pétitionnaire principal
1230 // L'ID DE L'INPUT SUIVANT EST NECESSAIRE AU BON FONCTIONNEMENT DU JS
1231 echo "<span id=\"add_petitionnaire_principal\"
1232 class=\"om-form-button add-16\">".
1233 _("Saisir le petitionnaire principal").
1234 "</span>";
1235 }
1236 // Bouton d'ajout du delegataire
1237 // L'ID DU DIV ET DE L'INPUT SUIVANT EST NECESSAIRE AU BON FONCTIONNEMENT DU JS
1238 echo "<div id=\"delegataire\">";
1239 // Affichage de la synthèse
1240 if (isset ($this->valIdDemandeur["delegataire"]) AND
1241 !empty($this->valIdDemandeur["delegataire"])) {
1242 $demandeur = new delegataire($this->valIdDemandeur["delegataire"],
1243 $this->f->db,false);
1244 $demandeur -> afficherSynthese("delegataire", $linkable);
1245 $demandeur -> __destruct();
1246 } elseif ( isset ($this->postedIdDemandeur["delegataire"]) AND
1247 !empty($this->postedIdDemandeur["delegataire"]) ) {
1248
1249 $demandeur = new delegataire($this->postedIdDemandeur["delegataire"],
1250 $this->f->db,false);
1251 $demandeur -> afficherSynthese("delegataire", $linkable);
1252 $demandeur -> __destruct();
1253 }
1254 if($maj < 2) {
1255 echo "<span id=\"add_delegataire\"
1256 class=\"om-form-button add-16\">".
1257 _("Saisir le delegataire").
1258 "</span>";
1259 }
1260 echo "</div>";
1261 echo "<div class=\"both\"></div>";
1262 echo "</div>";
1263 // Bloc des pétitionnaires secondaires
1264 // L'ID DU DIV SUIVANT EST NECESSAIRE AU BON FONCTIONNEMENT DU JS
1265 echo "<div id=\"listePetitionnaires\">";
1266
1267 // Affichage de la synthèse
1268 if (isset ($this->valIdDemandeur["petitionnaire"]) AND
1269 !empty($this->valIdDemandeur["petitionnaire"])) {
1270
1271 foreach ($this->valIdDemandeur["petitionnaire"] as $petitionnaire) {
1272 $demandeur = new petitionnaire($petitionnaire,
1273 $this->f->db,false);
1274 $demandeur -> afficherSynthese("petitionnaire", $linkable);
1275 $demandeur -> __destruct();
1276 }
1277
1278 } elseif ( isset ($this->postedIdDemandeur["petitionnaire"]) AND
1279 !empty($this->postedIdDemandeur["petitionnaire"]) ) {
1280 foreach ($this->postedIdDemandeur["petitionnaire"] as $petitionnaire) {
1281 $demandeur = new petitionnaire($petitionnaire,
1282 $this->f->db,false);
1283 $demandeur -> afficherSynthese("petitionnaire", $linkable);
1284 $demandeur -> __destruct();
1285 }
1286 }
1287 if ($maj < 2) {
1288 // L'ID DE L'INPUT SUIVANT EST NECESSAIRE AU BON FONCTIONNEMENT DU JS
1289 echo "<span id=\"add_petitionnaire\"
1290 class=\"om-form-button add-16\">".
1291 _("Ajouter un petitionnaire")
1292 ."</span>";
1293 }
1294 echo "</div>";
1295 echo "</fieldset>";
1296 echo "</div>";
1297
1298 // Champ flag permettant de récupérer la valeur de l'option sig pour
1299 // l'utiliser en javascript, notamment lors du chargement de l'interface
1300 // pour les références cadastrales
1301 // XXX Si un widget pour les références cadastrales existait, il n'y
1302 // aurait pas besoin de faire cela
1303 echo "<input id='option_sig' type='hidden' value='".$this->f->getParameter("option_sig")."' name='option_sig'>";
1304 }
1305
1306 // {{{
1307
1308 // getter
1309 function getValIdDemandeur() {
1310 return $this->valIdDemandeur;
1311 }
1312 // setter
1313 function setValIdDemandeur($valIdDemandeur) {
1314 $this->valIdDemandeur = $valIdDemandeur;
1315 }
1316
1317 //Supression du lien entre la demandeur et le(s) demandeur(s)
1318 function triggerSupprimer($id, &$db, $val, $DEBUG){
1319
1320 //Création de la requête
1321 $sql = "DELETE FROM
1322 ".DB_PREFIXE."lien_demande_demandeur
1323 WHERE
1324 demande = $id";
1325
1326 $res = $this->f->db->query($sql);
1327 $this->f->addToLog("triggerSupprimer() : db->query(\"".$sql."\")");
1328 if ( database::isError($res)){
1329 die();
1330 }
1331 }
1332
1333 // }}}
1334
1335
1336 /**
1337 * Cette fonction permet de récupérer les informations nécessaires
1338 * à la génération du nom du répertoire
1339 * @param string $dossier Identifiant du dossier
1340 * @return array Tableau des résultats
1341 */
1342 private function getInfosForFoldername($dossier) {
1343
1344 //Requête SQL
1345 $sql = "SELECT dossier.dossier_autorisation, dossier_instruction_type.code, dossier.version
1346 FROM ".DB_PREFIXE."dossier
1347 LEFT JOIN ".DB_PREFIXE."dossier_instruction_type
1348 ON dossier_instruction_type.dossier_instruction_type = dossier.dossier_instruction_type
1349 WHERE dossier.dossier = '".$dossier."'";
1350 $res = $this->f->db->query($sql);
1351 $this->addToLog("getInfosForFoldername() : db->query(".$sql.")", VERBOSE_MODE);
1352 database::isError($res);
1353
1354 // tableau des résultats
1355 $row = $res->fetchRow(DB_FETCHMODE_ASSOC);
1356
1357 //Formatage du numéro de version
1358 require_once '../obj/dossier.class.php';
1359 $dossier = new dossier($dossier,$this->db,DEBUG);
1360 $row['version'] = $dossier->getNumeroVersionDossierInstructionType($dossier->getVal('dossier_autorisation'), $dossier->getVal('dossier_instruction_type'), $row['version'], false);
1361
1362 // retourne le tableau des résultats
1363 return $row;
1364 }
1365
1366 /**
1367 * Cette fonction permet la création du répertoire dans le dossier de numérisation
1368 * @param string $dossier_autorisation Identifiant dossier d'autorisation
1369 * @param string $code Type du dossier d'instruction
1370 * @param int $version Numéro de version du dossier
1371 * @return boolean Vrai ou Faux
1372 */
1373 private function createFolder($dossier_autorisation, $code, $version) {
1374
1375 // génération du nom du répertoire
1376 $foldername = $dossier_autorisation.".".$code.$version;
1377
1378 // création du répertoire dans le dossier de numérisation
1379 if (isset($this->f->config["path_scan"])) {
1380 $dir = $this->f->config["path_scan"]."Todo/";
1381 // vérifie que le répêrtoire des "à traiter" existe
1382 // et qu'un répertoire du dossier n'existe pas déjà
1383 if (is_dir($dir) && !file_exists($dir.$foldername)) {
1384 mkdir($dir.$foldername, 0777);
1385 // si la création a réussi
1386 $this->addToLog("createFolder() : Success", VERBOSE_MODE);
1387 return true;
1388 }
1389 }
1390
1391 // en cas d'échec
1392 $this->addToLog("createFolder() : Failure", VERBOSE_MODE);
1393 return false;
1394 }
1395
1396 }// fin classe
1397 ?>

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26