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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2110 - (show annotations)
Tue Jul 23 17:14:24 2013 UTC (11 years, 6 months ago) by nhaye
File size: 58174 byte(s)
* Amélioration de la remontées des informations du dernier dossier d'instruction accepté au dossier d'autorisation lié
* Modification de la structure de la base : La table cerfa n'est plus liée aux dossier_instruction_type mais aux dossier_autorisation_type_detaille
* Lors d'une demande sur dossier existant récupération des données techniques en cours de validité de la même façon qu'on récupère les valeurs du dossier créé, idem pour les données des lots.

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 // Liaison du dossier ajouter à la demande
405 $this->valF['dossier_instruction'] = $dossier->valF['dossier'];
406 }
407
408 /**
409 * Méthode permettant d'ajouter les données techniques au dossier d'autorisation
410 */
411 function ajoutDonneesTechniquesDA($id, &$db, $val, $DEBUG){
412
413 require_once '../obj/donnees_techniques.class.php';
414 $donnees_techniques = new donnees_techniques("]",$db,$DEBUG);
415
416 // Champs tous à NULL car seul le champ concernant le dossier d'autorisation sera rempli
417 foreach($donnees_techniques->champs as $value) {
418 $val[$value] = NULL;
419 }
420
421 // Ajout du numéro de dossier d'instruction
422 $val['dossier_autorisation']=$this->valF['dossier_autorisation'];
423
424 // Ajout des données techniques
425 $donnees_techniques->ajouter($val, $db, $DEBUG);
426 }
427
428 /**
429 * Méthode permettant d'ajouter les données techniques au dossier d'autorisation
430 */
431 function ajoutDonneesTechniquesDI($id, &$db, $val, $DEBUG){
432
433 // Requête permettant de récupérer le dernier enregistrement en base des données techniques
434 // liées au dossier d'autorisationdu dossier d'instruction en cours de création
435 $sql_dt_from_da = "SELECT donnees_techniques
436 FROM ".DB_PREFIXE."donnees_techniques
437 WHERE dossier_autorisation = '".$this->valF['dossier_autorisation']."'
438 ORDER BY donnees_techniques DESC";
439 // Récupération de l'id
440 $id_da = $this->db->getOne($sql_dt_from_da);
441 if ( database::isError($id_da)){
442 // affiche l'erreur pour l'utilisateur et dans le log
443 $this->addToErrors("",
444 _("Erreur lors de la recuperation des donnees techniques en cours de validite"),
445 _("Erreur lors de la recuperation des donnees techniques en cours de validite"));
446 return false;
447 }
448 require_once '../obj/donnees_techniques.class.php';
449 $donnees_techniques = new donnees_techniques($id_da,$db,$DEBUG);
450
451 // Récupération des données du DA
452 foreach($donnees_techniques->champs as $value) {
453 $val[$value] = $donnees_techniques->getVal($value);
454 }
455
456 // Ajout du numéro de dossier d'instruction
457 $val['dossier_instruction'] = $this->valF['dossier_instruction'];
458 // Suppression du numéro de dossier d'autorisation
459 $val['dossier_autorisation'] = NULL;
460
461 // Ajout des données techniques
462 $donnees_techniques->ajouter($val, $db, $DEBUG);
463 }
464
465 /**
466 * Ajout des liens demandeurs / dossier d'autorisation s'ils n'y sont pas déjà
467 **/
468 function ajoutLiensDossierAutorisation($id, &$db, $val, $DEBUG) {
469 // Création des liens entre le dossier autorisation et les demandeurs
470 include '../sql/pgsql/demande.form.inc.php';
471 require_once '../obj/lien_dossier_autorisation_demandeur.class.php';
472 $ldad = new lien_dossier_autorisation_demandeur("]",$db,$DEBUG);
473 // Recupération des demandeurs liés à la demande
474 $sql = str_replace("<demande>",$this->valF['demande'],$sql_lien_demande_demandeur.
475 " AND lien_demande_demandeur.demandeur NOT IN (
476 SELECT lien_dossier_autorisation_demandeur.demandeur
477 FROM ".DB_PREFIXE."lien_dossier_autorisation_demandeur
478 WHERE lien_dossier_autorisation_demandeur.dossier_autorisation =
479 '".$this->valF['dossier_autorisation']."'
480 )");
481 $res = $db->query($sql);
482 $this->f->addToLog("ajoutLiensDossierAutorisation() : db->query(\"".$sql."\");", VERBOSE_MODE);
483 if ( database::isError($res)){
484 die();
485 }
486 while($row = &$res->fetchRow(DB_FETCHMODE_ASSOC)) {
487 $row['lien_dossier_autorisation_demandeur'] = NULL;
488 $row['dossier_autorisation'] = $this->valF['dossier_autorisation'];
489 $ldad->ajouter($row, $db, $DEBUG);
490 }
491 }
492
493 /**
494 * Ajout des liens demandeurs / dossier d'autorisation
495 **/
496 function ajoutLiensDossierInstruction($id, &$db, $val, $DEBUG) {
497 // Création des liens entre le dossier instruction et les demandeurs
498 include '../sql/pgsql/demande.form.inc.php';
499 require_once '../obj/lien_dossier_demandeur.class.php';
500 $ldd = new lien_dossier_demandeur("]",$db,$DEBUG);
501 // Recupération des demandeurs liés à la demande
502 $sql = str_replace("<demande>",$this->valF['demande'],$sql_lien_demande_demandeur);
503 $res = $db->query($sql);
504 $this->f->addToLog("ajoutLiensDossierInstruction() : db->query(\"".$sql."\");", VERBOSE_MODE);
505 if ( database::isError($res)){
506 die();
507 }
508 while($row = &$res->fetchRow(DB_FETCHMODE_ASSOC)) {
509 $row['lien_dossier_demandeur'] = NULL;
510 $row['dossier'] = $this->valF['dossier_instruction'];
511 $ldd->ajouter($row, $db, $DEBUG);
512 }
513 }
514
515 /*
516 * Récupère l'identifiant d'un arrondissement à partir d'un code postal
517 */
518 function getArrondissement($terrain_adresse_code_postal){
519
520 $arrondissement = NULL;
521
522 $sql = "SELECT
523 arrondissement
524 FROM
525 ".DB_PREFIXE."arrondissement
526 WHERE
527 code_postal = '$terrain_adresse_code_postal' ";
528 $this->addToLog("demande.class.php : ".$sql." execute <br>", EXTRA_VERBOSE_MODE);
529
530 $res = $this->db->query($sql);
531 $this->f->addToLog("getArrondissement() : db->query(\"".$sql."\")", VERBOSE_MODE);
532 if ( database::isError($res)){
533 die();
534 }
535
536 if( $res->numrows() > 0 ) {
537
538 $row=& $res->fetchRow(DB_FETCHMODE_ASSOC);
539 $arrondissement = $row['arrondissement'];
540 }
541
542 return $arrondissement;
543 }
544
545 /*
546 * Récupère l'évènement lié à un type de demande
547 */
548 function getEvenement($demande_type){
549
550 $evenement = NULL;
551
552 $sql =
553 "SELECT
554 evenement
555 FROM
556 ".DB_PREFIXE."demande_type
557 WHERE
558 demande_type = $demande_type";
559
560 $res = $this->db->query($sql);
561 $this->f->addToLog("getEvenement() : db->query(\"".$sql."\")", VERBOSE_MODE);
562 if ( database::isError($res)){
563 die();
564 }
565
566 if ( $res->numrows() > 0 ){
567
568 $row=& $res->fetchRow(DB_FETCHMODE_ASSOC);
569 $evenement = $row['evenement'];
570 }
571
572 return $evenement;
573 }
574
575 /*
576 * Récupère la lettre type lié à un événement
577 */
578 function getLettreType($evenement){
579
580 $lettretype = NULL;
581
582 $sql =
583 "SELECT
584 lettretype
585 FROM
586 ".DB_PREFIXE."evenement
587 WHERE
588 evenement = $evenement";
589
590 $res = $this->db->query($sql);
591 $this->f->addToLog("getLettreType() : db->query(\"".$sql."\")", VERBOSE_MODE);
592 if ( database::isError($res)){
593 die();
594 }
595
596 if ( $res->numrows() > 0 ){
597
598 $row=& $res->fetchRow(DB_FETCHMODE_ASSOC);
599 $lettretype = $row['lettretype'];
600 }
601
602 return $lettretype;
603 }
604
605 /**
606 * Ajout des dossiers
607 **/
608 function triggerAjouter($id, &$db, $val, $DEBUG){
609
610 include '../sql/pgsql/demande.form.inc.php';
611
612 if($this->valF["demande_type"] != NULL) {
613 $res = $db->query(str_replace('<idx>', $this->valF['demande_type'], $sql_demande_type_details_by_id));
614 $this->f->addToLog("triggerAjouter() : db->query(\"".str_replace('<idx>', $this->valF['demande_type'], $sql_demande_type_details_by_id)."\")", VERBOSE_MODE);
615 if ( database::isError($res)){
616 die();
617 }
618 // Attribut permettant de définir si un dossier a été créé
619 $this->ajoutDI = FALSE;
620 $dossier_type = $res->fetchRow(DB_FETCHMODE_ASSOC);
621 // Création du dossier_autorisation
622 if($this->valF['dossier_autorisation'] == "") {
623 $this->ajoutDossierAutorisation($id, $db, $val, $DEBUG);
624 $this -> addToMessage(_("Creation du dossier d'autorisation no").$this->valF['dossier_autorisation']);
625 //Ajout des données techniques au dossier d'autorisation
626 $this->ajoutDonneesTechniquesDA($id, $db, $val, $DEBUG);
627 }
628 // Enregistrement du numéro dossier existant (il sera écrasé si un DI est créé)
629 if ($this->getParameter("idx_dossier") != "") {
630 $this->valF['dossier_instruction'] = $this->getParameter("idx_dossier");
631 }
632 // Création du dossier d'instruction
633 if($dossier_type['dossier_instruction_type'] != NULL) {
634 $this->ajoutDossierInstruction($id, $db, $val, $DEBUG, $dossier_type['dossier_instruction_type']);
635 $this -> addToMessage(_("Creation du dossier d'instruction no").$this->valF['dossier_instruction']);
636 // Attribut permettant de définir si un dossier a été créé.
637 $this->ajoutDI = TRUE;
638
639 //Ajout des données techniques au dossier d'instruction
640 $this->ajoutDonneesTechniquesDI($id, $db, $val, $DEBUG);
641 }
642
643 // Si le dossier_instruction existe
644 if (isset($this->valF['dossier_instruction']) && $this->valF['dossier_instruction'] !== "" ) {
645 // Récupère les informations nécessaire pour créer le répertoire de numérisation
646 $getInfosForFoldername = $this->getInfosForFoldername($this->valF['dossier_instruction']);
647 // Création du répertoire pour la numérisation
648 if ($this->createFolder($getInfosForFoldername['dossier_autorisation'], $getInfosForFoldername['code'], $getInfosForFoldername['version']) === false) {
649 $this->correct = false;
650 // efface les messages précédents
651 $this->msg = '';
652 // affiche l'erreur pour l'utilisateur et dans le log
653 $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."));
654 // arrête le traitement entier
655 return false;
656 }
657 }
658
659 /*Création du lien de téléchargement de récépissé de demande*/
660 if ( $this->valF['demande_type'] != "" && is_numeric($this->valF['demande_type'])
661 && isset($this->valF['dossier_instruction']) && $this->valF['dossier_instruction'] !== "" ){
662
663 /*Récupérer l'événement lié à ce type de demande*/
664 $evenement = $this->getEvenement($this->valF['demande_type']);
665
666 /*Récupération de la lettre type de l'événement*/
667 $lettretype = $this->getLettreType($evenement);
668
669 /*Création d'une nouvelle instruction avec cet événement*/
670 /*Données*/
671 $valInstr['instruction']=NULL;
672
673 $valInstr['destinataire']=$this->valF['dossier_instruction'];
674 $valInstr['dossier']=$this->valF['dossier_instruction'];
675
676 $valInstr['date_evenement']=date("d/m/Y");
677 $valInstr['evenement']=$evenement;
678 $valInstr['lettretype']=$lettretype;
679 $valInstr['complement']="";
680 $valInstr['complement2']="";
681
682 $valInstr['action']="initialisation";
683 $valInstr['delai']="2";
684 $valInstr['etat']="notifier";
685 $valInstr['accord_tacite']="Oui";
686 $valInstr['delai_notification']="1";
687 $valInstr['archive_delai']="0";
688 $valInstr['archive_date_complet']=NULL;
689 $valInstr['archive_date_dernier_depot']=NULL;
690 $valInstr['archive_date_rejet']=NULL;
691 $valInstr['archive_date_limite']=NULL;
692 $valInstr['archive_date_notification_delai']=NULL;
693 $valInstr['archive_accord_tacite']="Non";
694 $valInstr['archive_etat']="initialiser";
695 $valInstr['archive_date_decision']=NULL;
696 $valInstr['archive_avis']="";
697 $valInstr['archive_date_validite']=NULL;
698 $valInstr['archive_date_achevement']=NULL;
699 $valInstr['archive_date_chantier']=NULL;
700 $valInstr['archive_date_conformite']=NULL;
701 $valInstr['archive_incompletude']=NULL;
702 $valInstr['archive_evenement_suivant_tacite']="";
703 $valInstr['archive_evenement_suivant_tacite_incompletude']=NULL;
704 $valInstr['archive_etat_pendant_incompletude']=NULL;
705 $valInstr['archive_date_limite_incompletude']=NULL;
706 $valInstr['archive_delai_incompletude']=NULL;
707 $valInstr['archive_autorite_competente']=NULL;
708 $valInstr['complement3']="";
709 $valInstr['complement4']="";
710 $valInstr['complement5']="";
711 $valInstr['complement6']="";
712 $valInstr['complement7']="";
713 $valInstr['complement8']="";
714 $valInstr['complement9']="";
715 $valInstr['complement10']="";
716 $valInstr['complement11']="";
717 $valInstr['complement12']="";
718 $valInstr['complement13']="";
719 $valInstr['complement14']="";
720 $valInstr['complement15']="";
721 $valInstr['avis_decision']=NULL;
722 $valInstr['date_finalisation_courrier']=NULL;
723 $valInstr['date_envoi_signature']=NULL;
724 $valInstr['date_retour_signature']=NULL;
725 $valInstr['date_envoi_rar']=NULL;
726 $valInstr['date_retour_rar']=NULL;
727 $valInstr['date_envoi_controle_legalite']=NULL;
728 $valInstr['date_retour_controle_legalite']=NULL;
729 $valInstr['signataire_arrete']=NULL;
730 $valInstr['numero_arrete']=NULL;
731 $valInstr['code_barres']=NULL;
732 $valInstr['om_fichier_instruction']=NULL;
733 $valInstr['om_final_instruction']=NULL;
734 $valInstr['document_numerise']=NULL;
735 $valInstr['autorite_competente']=NULL;
736
737 /*Fichier requis*/
738 require_once '../obj/instruction.class.php';
739
740 /*Création d'un nouveau dossier*/
741 $instruction = new instruction("]",$db,$DEBUG);
742 $instruction->valF = "";
743 $instruction->ajouter($valInstr, $db, $DEBUG);
744
745 //Finalisation du document
746 $_GET['obj']='instruction';
747 $_GET['idx']=$instruction->valF[$instruction->clePrimaire];
748 $instruction = new instruction($_GET['idx'],$db,$DEBUG);
749 $res = $instruction->finaliser('', 1, '', '');
750
751 /*Si la création a réussie*/
752 if ( $instruction->valF['instruction'] != "" ){
753
754 /*Affichage du récépissé de la demande*/
755 $this->valF['instruction_recepisse'] = $instruction->valF['instruction'];
756 $this -> addToMessage("<br/><a
757 class='lien'
758 href='"
759 .((isset($res['pdf'])&&$instruction->valF['om_final_instruction'])?$res['pdf']:
760 "../pdf/pdflettretype.php?obj=".$lettretype."&amp;idx=".$instruction->valF['instruction'])."'
761 target='_blank'>
762 <span
763 class=\"om-icon om-icon-16 om-icon-fix pdf-16\"
764 title=\""._("Telecharger le recepisse de la demande")."\">".
765 _("Telecharger le recepisse de la demande").
766 "</span>
767 &nbsp;&nbsp;&nbsp;&nbsp;".
768 _("Telecharger le recepisse de la demande")."
769 </a><br/>");
770 }
771 /*Sinon affiche un message d'erreur*/
772 else {
773
774 $this -> addToMessage(_("Une erreur s'est produite lors de la creation du recepisse"));
775 }
776 }
777
778 /*Ajout de l'arrondissement à partir du code postal*/
779 if ( !is_null($this->valF["terrain_adresse_code_postal"]) && is_numeric($this->valF["terrain_adresse_code_postal"]) ){
780
781 $this->valF["arrondissement"] = $this->getArrondissement($this->valF["terrain_adresse_code_postal"]);
782 }
783 }
784 }
785
786 /**
787 * Ajout des délégataires et pétitionnaires
788 **/
789 function triggerAjouterApres($id, &$db, $val, $DEBUG){
790
791 $this->insertLinkDemandeDemandeur($db, $DEBUG);
792
793 // Ajout des lliens entre dossier_autorisation et demandeur
794 if(!empty($this->valF['dossier_autorisation'])) {
795 $this->ajoutLiensDossierAutorisation($id, $db, $val, $DEBUG);
796 }
797 // Ajout des lliens entre dossier et demandeur
798 if($this->ajoutDI === TRUE) {
799 $this->ajoutLiensDossierInstruction($id, $db, $val, $DEBUG);
800 }
801
802 // Duplication des lots (et leurs données techniques) et
803 // liaison au nouveau dossier_d'instruction
804 if(!empty($this->valF['dossier_autorisation']) AND $val['dossier_autorisation'] != "" ) {
805 $this->lienLotDossierInstruction($id, $db, $val, $DEBUG);
806 }
807 }
808
809 /*Ajout du lien demande / demandeur(s)*/
810 function triggerModifierApres($id, &$db, $val, $DEBUG){
811 $this->listeDemandeur("demande",$this->val[array_search('demande', $this->champs)]);
812 $this->insertLinkDemandeDemandeur($db, $DEBUG);
813 $this->valIdDemandeur=$this->postedIdDemandeur;
814
815 }
816
817 /**
818 * Gestion des liens entre les lots du DA et le nouveau dossier
819 **/
820 function lienLotDossierInstruction($id, $db, $val, $DEBUG) {
821 require_once ("../obj/lot.class.php");
822 $lot = new lot("]", $db, $DEBUG);
823 require_once ("../obj/lien_lot_demandeur.class.php");
824 $lld = new lien_lot_demandeur("]", $db, $DEBUG);
825
826
827 $sqlLots = "SELECT * FROM ".DB_PREFIXE."lot
828 WHERE dossier_autorisation = '".$this->valF['dossier_autorisation']."'";
829 $resLot = $db -> query($sqlLots);
830 $this->f->addToLog("db->query(\"".$sqlLots."\");", VERBOSE_MODE);
831 $this->f->isDatabaseError($resLot);
832 while ($rowLot=& $resLot->fetchRow(DB_FETCHMODE_ASSOC)){
833 // Insertion du nouveau lot
834 $valLot['lot'] = "";
835 $valLot['libelle'] = $rowLot['libelle'];
836 $valLot['dossier_autorisation'] = NULL;
837 $valLot['dossier'] = $this->valF['dossier_instruction'];
838 $lot -> ajouter($valLot, $db, $DEBUG);
839
840 //Insertion des liens entre dossier et les lots
841 $sqlDemandeurs = "SELECT * FROM ".DB_PREFIXE."lien_lot_demandeur
842 WHERE lot = ".$rowLot['lot'];
843 $res = $db -> query($sqlDemandeurs);
844 $this->f->addToLog("lienLotDossierInstruction() : db->query(\"".$sqlDemandeurs."\");", VERBOSE_MODE);
845 if ( database::isError($res)){
846 die();
847 }
848
849 while ($row=& $res->fetchRow(DB_FETCHMODE_ASSOC)){
850 $valLld["lien_lot_demandeur"] = "";
851 $valLld["lot"]=$lot->valF['lot'];
852 $valLld["demandeur"] = $row['demandeur'];
853 $valLld["petitionnaire_principal"] = $row['petitionnaire_principal'];
854 $lld->ajouter($valLld, $db, $DEBUG);
855 }
856
857 // Récupération des données techniques du nouveau lots
858 $this->ajoutDonneesTechniquesLots($id, $db, $val, $DEBUG, $rowLot['lot'], $lot->valF['lot']);
859
860 }
861 }
862
863
864 /**
865 * Méthode permettant d'ajouter les données techniques aux lots
866 */
867 function ajoutDonneesTechniquesLots($id, &$db, $val, $DEBUG, $lotInit, $lotDest){
868 // Requete permettant de recupérer les données techniques du lot passé en paramètre ($lotInit)
869 $sql_get_dt = "SELECT donnees_techniques FROM ".DB_PREFIXE."donnees_techniques WHERE lot=".$lotInit;
870 $id_dt = $this->f->db->getOne($sql_get_dt);
871 // Si des données techniques sont liées au lots on les "copie" et on les lies au lot passé en paramètre (lotDest)
872 if(isset($id_dt) AND !empty($id_dt)) {
873 $this->f->addToLog("ajoutDonneesTechniquesLots() : db->getone(\"".$sql_get_dt."\");", VERBOSE_MODE);
874 if ( database::isError($id_dt)){
875 // Appel de la methode de recuperation des erreurs
876 $this->erreur_db($id_dt->getDebugInfo(), $id_dt->getMessage(), '');
877 return false;
878 }
879 require_once '../obj/donnees_techniques.class.php';
880 $donnees_techniques = new donnees_techniques($id_dt,$db,$DEBUG);
881
882 // Récupération des données dans le tableau des valeurs à insérer
883 foreach($donnees_techniques->champs as $value) {
884 $val[$value] = $donnees_techniques->getVal($value);
885 }
886 // Modification du lien vers le nouveau lot
887 $val["lot"] = $lotDest;
888 // Ajout des données techniques
889 $donnees_techniques->ajouter($val, $db, $DEBUG);
890 }
891 }
892
893 /**
894 * Gestion des liens entre la demande et les demandeurs recemment ajoutés
895 **/
896 function insertLinkDemandeDemandeur($db, $DEBUG) {
897 //
898 require_once "../obj/lien_demande_demandeur.class.php";
899 // Comparaison de l'id petitionnaire principal
900 if(isset($this->postedIdDemandeur['petitionnaire_principal']) AND
901 !empty($this->postedIdDemandeur['petitionnaire_principal']) AND
902 $this->valIdDemandeur['petitionnaire_principal'] !=
903 $this->postedIdDemandeur['petitionnaire_principal']) {
904 // Ajout du nouveau lien
905 $this->addLinkDemandeDemandeur($this->postedIdDemandeur['petitionnaire_principal'], true, $db, $DEBUG);
906 if(!empty($this->valIdDemandeur['petitionnaire_principal'])) {
907 $this->deleteLinkDemandeDemandeur($this->valIdDemandeur['petitionnaire_principal'], $db, $DEBUG);
908 }
909 }
910
911 // Comparaison du delegataire
912 if(isset($this->postedIdDemandeur['delegataire']) AND
913 !empty($this->postedIdDemandeur['delegataire']) AND
914 $this->valIdDemandeur['delegataire'] !=
915 $this->postedIdDemandeur['delegataire']) {
916 // Ajout du nouveau lien
917 $this->addLinkDemandeDemandeur($this->postedIdDemandeur['delegataire'], false, $db, $DEBUG);
918 if(!empty($this->valIdDemandeur['delegataire'])) {
919 $this->deleteLinkDemandeDemandeur($this->valIdDemandeur['delegataire'], $db, $DEBUG);
920 }
921 }
922
923 // Comparaison des different petitionnaires
924 if(isset($this->postedIdDemandeur['petitionnaire'])) {
925 // Suppression des liens non valides
926 foreach ($this->valIdDemandeur['petitionnaire'] as $petitionnaire) {
927 if(!in_array($petitionnaire, $this->postedIdDemandeur['petitionnaire'])) {
928 $this->deleteLinkDemandeDemandeur($petitionnaire, $db, $DEBUG);
929 }
930 }
931 // Ajout des nouveaux liens
932 foreach ($this->postedIdDemandeur['petitionnaire'] as $petitionnaire) {
933 if(!in_array($petitionnaire, $this->valIdDemandeur['petitionnaire'])) {
934 $this->addLinkDemandeDemandeur($petitionnaire, false, $db, $DEBUG);
935 }
936 }
937 }
938 }
939
940
941 /**
942 * Fonction permettant d'ajouter un lien
943 * entre la table demande et demandeur
944 **/
945 function addLinkDemandeDemandeur($id, $principal, $db, $DEBUG) {
946 $lienAjout = new lien_demande_demandeur(
947 "]",
948 $db,
949 $DEBUG);
950 $lien = array('lien_demande_demandeur' => "",
951 'petitionnaire_principal' => (($principal)?"t":"f"),
952 'demande' => $this->valF['demande'],
953 'demandeur' => $id);
954 $lienAjout->ajouter($lien, $db, $DEBUG);
955 $lienAjout->__destruct();
956 }
957
958 /**
959 * Fonction permettant de supprimer un lien
960 * entre la table demande et demandeur
961 **/
962 function deleteLinkDemandeDemandeur($id, $db, $DEBUG) {
963 // Suppression
964 $sql = "DELETE FROM ".DB_PREFIXE."lien_demande_demandeur ".
965 "WHERE demande=".$this->valF['demande'].
966 " AND demandeur=".$id;
967 // Execution de la requete de suppression de l'objet
968 $res = $db->query($sql);
969 // Logger
970 $this->f->addToLog("deleteLinkDemandeDemandeur(): db->query(\"".$sql."\");", VERBOSE_MODE);
971 if ( database::isError($res)){
972 die();
973 }
974
975 }
976
977 /*
978 * Teste si le lien entre une demande et un demandeur existe
979 * */
980 function isLinkDemandeDemandeurExist($idDemandeur) {
981 $sql = "SELECT count(*)
982 FROM ".DB_PREFIXE."lien_demande_demandeur
983 WHERE demande = ".$this->valF['demande'].
984 "AND demandeur = ".$idDemandeur;
985 $count = $this->f->db->getOne($sql);
986 $this->f->addToLog("isLinkDemandeDemandeurExist() : db->getone(\"".$sql."\");", VERBOSE_MODE);
987 if ( database::isError($count)){
988 die();
989 }
990 if ($count === 0) {
991 return false;
992 } else {
993 return true;
994 }
995
996 }
997
998 /**
999 * Methode de recupération des valeurs postées
1000 **/
1001 function getPostedValues() {
1002 // Récupération des demandeurs dans POST
1003 if (isset($_POST['petitionnaire_principal']) OR
1004 isset($_POST['delegataire']) OR
1005 isset($_POST['petitionnaire'])) {
1006 if( isset($_POST['petitionnaire_principal']) AND
1007 !empty($_POST['petitionnaire_principal'])) {
1008 $this->postedIdDemandeur['petitionnaire_principal'] = $_POST['petitionnaire_principal'];
1009 }
1010 if( isset($_POST['delegataire']) AND
1011 !empty($_POST['delegataire'])) {
1012 $this->postedIdDemandeur['delegataire'] = $_POST['delegataire'];
1013 }
1014 if( isset($_POST['petitionnaire']) AND
1015 !empty($_POST['petitionnaire'])) {
1016 $this->postedIdDemandeur['petitionnaire'] = $_POST['petitionnaire'];
1017 }
1018 }
1019 }
1020
1021 /**
1022 * Méthode permettant de récupérer les id des demandeurs liés à la table
1023 * liée passée en paramètre
1024 *
1025 * @param string $from Table liée : "demande", "dossier", dossier_autorisation"
1026 * @param string $id Identifiant (clé primaire de la table liée en question)
1027 */
1028 function listeDemandeur($from, $id) {
1029 // Récupération des demandeurs de la base
1030 $sql = "SELECT demandeur.demandeur,
1031 demandeur.type_demandeur,
1032 lien_".$from."_demandeur.petitionnaire_principal
1033 FROM ".DB_PREFIXE."lien_".$from."_demandeur
1034 INNER JOIN ".DB_PREFIXE."demandeur
1035 ON demandeur.demandeur=lien_".$from."_demandeur.demandeur
1036 WHERE ".$from." = '".$id."'";
1037 $res = $this->f->db->query($sql);
1038 $this->f->addToLog("listeDemandeur(): db->query(\"".$sql."\")", VERBOSE_MODE);
1039 if ( database::isError($res)){
1040 die();
1041 }
1042 // Stockage du résultat dans un tableau
1043 while ($row=& $res->fetchRow(DB_FETCHMODE_ASSOC)){
1044 if ($row['petitionnaire_principal'] == 't' AND
1045 $row['type_demandeur']=="petitionnaire") {
1046 $this->valIdDemandeur['petitionnaire_principal']=$row['demandeur'];
1047 } elseif ($row['petitionnaire_principal'] == 'f' AND
1048 $row['type_demandeur']=="petitionnaire"){
1049 $this->valIdDemandeur['petitionnaire'][]=$row['demandeur'];
1050 } elseif ($row['type_demandeur']=="delegataire"){
1051 $this->valIdDemandeur['delegataire']=$row['demandeur'];
1052 }
1053 }
1054 }
1055
1056
1057 /**
1058 * Surcharge du bouton retour afin de retourner sur la recherche de dossiers
1059 * d'instruction existant
1060 */
1061 function retour($premier = 0, $recherche = "", $tricol = "") {
1062
1063 echo "\n<a class=\"retour\" ";
1064 echo "href=\"";
1065 //
1066 if($this->getParameter("idx_dossier") != "") {
1067 echo "tab.php?";
1068 echo "obj=recherche_dossier";
1069
1070 } else {
1071 if($this->getParameter("retour")=="form" AND !($this->getParameter("validation")>0 AND $this->getParameter("maj")==2 AND $this->correct)) {
1072 echo "form.php?";
1073 } else {
1074 echo "tab.php?";
1075 }
1076 echo "obj=".get_class($this);
1077 if($this->getParameter("retour")=="form") {
1078 echo "&amp;idx=".$this->getParameter("idx");
1079 echo "&amp;idz=".$this->getParameter("idz");
1080 echo "&amp;action=3";
1081 }
1082 }
1083 echo "&amp;premier=".$this->getParameter("premier");
1084 echo "&amp;tricol=".$this->getParameter("tricol");
1085 echo "&amp;recherche=".$this->getParameter("recherche");
1086 echo "&amp;selectioncol=".$this->getParameter("selectioncol");
1087 echo "&amp;advs_id=".$this->getParameter("advs_id");
1088 echo "&amp;valide=".$this->getParameter("valide");
1089 //
1090 echo "\"";
1091 echo ">";
1092 //
1093 echo _("Retour");
1094 //
1095 echo "</a>\n";
1096
1097 }
1098
1099
1100 /**
1101 * Cette méthode permet d'afficher des informations spécifiques dans le
1102 * formulaire de l'objet
1103 *
1104 * @param integer $maj Mode de mise à jour
1105 */
1106 function formSpecificContent($maj) {
1107
1108 /**
1109 * Gestion du bloc des demandeurs
1110 */
1111 // Si le mode est (modification ou suppression ou consultation) ET que
1112 // le formulaire n'est pas correct (c'est-à-dire que le formulaire est
1113 // actif)
1114 if (!$this->correct AND $maj != 0) {
1115 // Alors on récupère les demandeurs dans la table lien pour
1116 // affectation des résultats dans this->valIdDemandeur
1117 $this->listeDemandeur("demande", $this->val[array_search('demande', $this->champs)]);
1118 }
1119
1120 // Si le mode est (ajout ou modification) ET que le formulaire n'est pas
1121 // correct (c'est-à-dire que le formulaire est actif)
1122 if ($maj < 2 AND !$this->correct) {
1123 // Alors on positionne le marqueur linkable a true qui permet
1124 // d'afficher ou non les actions de gestion des demandeurs
1125 $linkable = true;
1126 } else {
1127 // Sinon on positionne le marqueur linkable a false qui permet
1128 // d'afficher ou non les actions de gestion des demandeurs
1129 $linkable = false;
1130 }
1131
1132 // Affichage des demandeurs et des actions
1133 // Conteneur de la listes des demandeurs
1134 echo "<div id=\"liste_demandeur\" class=\"demande_hidden_bloc col_12\">";
1135 echo "<fieldset class=\"cadre ui-corner-all ui-widget-content\">";
1136 echo " <legend class=\"ui-corner-all ui-widget-content ui-state-active\">"
1137 ._("Petitionnaire")."</legend>";
1138 // Si des demandeurs sont liés à la demande
1139 require_once "../obj/petitionnaire.class.php";
1140 require_once "../obj/delegataire.class.php";
1141 // Affichage du bloc pétitionnaire principal / délégataire
1142 // L'ID DU DIV SUIVANT EST NECESSAIRE AU BON FONCTIONNEMENT DU JS
1143 echo "<div id=\"petitionnaire_principal_delegataire\">";
1144 // Affichage de la synthèse
1145 if (isset ($this->valIdDemandeur["petitionnaire_principal"]) AND
1146 !empty($this->valIdDemandeur["petitionnaire_principal"])) {
1147 $demandeur = new petitionnaire(
1148 $this->valIdDemandeur["petitionnaire_principal"],
1149 $this->f->db,false);
1150 $demandeur -> afficherSynthese("petitionnaire_principal", $linkable);
1151 $demandeur -> __destruct();
1152 } elseif ( isset ($this->postedIdDemandeur["petitionnaire_principal"]) AND
1153 !empty($this->postedIdDemandeur["petitionnaire_principal"]) ) {
1154 $demandeur = new petitionnaire(
1155 $this->postedIdDemandeur["petitionnaire_principal"],
1156 $this->f->db,false);
1157 $demandeur -> afficherSynthese("petitionnaire_principal", $linkable);
1158 $demandeur -> __destruct();
1159 }
1160 // Si en édition de formulaire
1161 if($maj < 2) {
1162 // Bouton d'ajout du pétitionnaire principal
1163 // L'ID DE L'INPUT SUIVANT EST NECESSAIRE AU BON FONCTIONNEMENT DU JS
1164 echo "<span id=\"add_petitionnaire_principal\"
1165 class=\"om-form-button add-16\">".
1166 _("Saisir le petitionnaire principal").
1167 "</span>";
1168 }
1169 // Bouton d'ajout du delegataire
1170 // L'ID DU DIV ET DE L'INPUT SUIVANT EST NECESSAIRE AU BON FONCTIONNEMENT DU JS
1171 echo "<div id=\"delegataire\">";
1172 // Affichage de la synthèse
1173 if (isset ($this->valIdDemandeur["delegataire"]) AND
1174 !empty($this->valIdDemandeur["delegataire"])) {
1175 $demandeur = new delegataire($this->valIdDemandeur["delegataire"],
1176 $this->f->db,false);
1177 $demandeur -> afficherSynthese("delegataire", $linkable);
1178 $demandeur -> __destruct();
1179 } elseif ( isset ($this->postedIdDemandeur["delegataire"]) AND
1180 !empty($this->postedIdDemandeur["delegataire"]) ) {
1181
1182 $demandeur = new delegataire($this->postedIdDemandeur["delegataire"],
1183 $this->f->db,false);
1184 $demandeur -> afficherSynthese("delegataire", $linkable);
1185 $demandeur -> __destruct();
1186 }
1187 if($maj < 2) {
1188 echo "<span id=\"add_delegataire\"
1189 class=\"om-form-button add-16\">".
1190 _("Saisir le delegataire").
1191 "</span>";
1192 }
1193 echo "</div>";
1194 echo "<div class=\"both\"></div>";
1195 echo "</div>";
1196 // Bloc des pétitionnaires secondaires
1197 // L'ID DU DIV SUIVANT EST NECESSAIRE AU BON FONCTIONNEMENT DU JS
1198 echo "<div id=\"listePetitionnaires\">";
1199
1200 // Affichage de la synthèse
1201 if (isset ($this->valIdDemandeur["petitionnaire"]) AND
1202 !empty($this->valIdDemandeur["petitionnaire"])) {
1203
1204 foreach ($this->valIdDemandeur["petitionnaire"] as $petitionnaire) {
1205 $demandeur = new petitionnaire($petitionnaire,
1206 $this->f->db,false);
1207 $demandeur -> afficherSynthese("petitionnaire", $linkable);
1208 $demandeur -> __destruct();
1209 }
1210
1211 } elseif ( isset ($this->postedIdDemandeur["petitionnaire"]) AND
1212 !empty($this->postedIdDemandeur["petitionnaire"]) ) {
1213 foreach ($this->postedIdDemandeur["petitionnaire"] as $petitionnaire) {
1214 $demandeur = new petitionnaire($petitionnaire,
1215 $this->f->db,false);
1216 $demandeur -> afficherSynthese("petitionnaire", $linkable);
1217 $demandeur -> __destruct();
1218 }
1219 }
1220 if ($maj < 2) {
1221 // L'ID DE L'INPUT SUIVANT EST NECESSAIRE AU BON FONCTIONNEMENT DU JS
1222 echo "<span id=\"add_petitionnaire\"
1223 class=\"om-form-button add-16\">".
1224 _("Ajouter un petitionnaire")
1225 ."</span>";
1226 }
1227 echo "</div>";
1228 echo "</fieldset>";
1229 echo "</div>";
1230 }
1231
1232 // {{{
1233
1234 // getter
1235 function getValIdDemandeur() {
1236 return $this->valIdDemandeur;
1237 }
1238 // setter
1239 function setValIdDemandeur($valIdDemandeur) {
1240 $this->valIdDemandeur = $valIdDemandeur;
1241 }
1242
1243 //Supression du lien entre la demandeur et le(s) demandeur(s)
1244 function triggerSupprimer($id, &$db, $val, $DEBUG){
1245
1246 //Création de la requête
1247 $sql = "DELETE FROM
1248 ".DB_PREFIXE."lien_demande_demandeur
1249 WHERE
1250 demande = $id";
1251
1252 $res = $this->f->db->query($sql);
1253 $this->f->addToLog("triggerSupprimer() : db->query(\"".$sql."\")");
1254 if ( database::isError($res)){
1255 die();
1256 }
1257 }
1258
1259 // }}}
1260
1261
1262 /**
1263 * Cette fonction permet de récupérer les informations nécessaires
1264 * à la génération du nom du répertoire
1265 * @param string $dossier Identifiant du dossier
1266 * @return array Tableau des résultats
1267 */
1268 private function getInfosForFoldername($dossier) {
1269
1270 //Requête SQL
1271 $sql = "SELECT dossier.dossier_autorisation, dossier_instruction_type.code, dossier.version
1272 FROM ".DB_PREFIXE."dossier
1273 LEFT JOIN ".DB_PREFIXE."dossier_instruction_type
1274 ON dossier_instruction_type.dossier_instruction_type = dossier.dossier_instruction_type
1275 WHERE dossier.dossier = '".$dossier."'";
1276 $res = $this->f->db->query($sql);
1277 $this->addToLog("getInfosForFoldername() : db->query(".$sql.")", VERBOSE_MODE);
1278 database::isError($res);
1279
1280 // tableau des résultats
1281 $row = $res->fetchRow(DB_FETCHMODE_ASSOC);
1282
1283 // retourne le tableau des résultats
1284 return $row;
1285 }
1286
1287 /**
1288 * Cette fonction permet la création du répertoire dans le dossier de numérisation
1289 * @param string $dossier_autorisation Identifiant dossier d'autorisation
1290 * @param string $code Type du dossier d'instruction
1291 * @param int $version Numéro de version du dossier
1292 * @return boolean Vrai ou Faux
1293 */
1294 private function createFolder($dossier_autorisation, $code, $version) {
1295
1296 // génération du nom du répertoire
1297 $foldername = $dossier_autorisation.".".$code.$version;
1298
1299 // création du répertoire dans le dossier de numérisation
1300 if (isset($this->f->config["path_scan"])) {
1301 $dir = $this->f->config["path_scan"]."Todo/";
1302 // vérifie que le répêrtoire des "à traiter" existe
1303 // et qu'un répertoire du dossier n'existe pas déjà
1304 if (is_dir($dir) && !file_exists($dir.$foldername)) {
1305 mkdir($dir.$foldername, 0777);
1306 // si la création a réussi
1307 $this->addToLog("createFolder() : Success", VERBOSE_MODE);
1308 return true;
1309 }
1310 }
1311
1312 // en cas d'échec
1313 $this->addToLog("createFolder() : Failure", VERBOSE_MODE);
1314 return false;
1315 }
1316
1317 }// fin classe
1318 ?>

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26