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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2643 - (show annotations)
Fri Dec 27 13:45:47 2013 UTC (11 years, 1 month ago) by vpihour
File size: 71009 byte(s)
Recopie des données du dossier d'autorisation vers les nouveaux dossiers d'instruction

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

Properties

Name Value
svn:keywords Id

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26