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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 4343 - (show annotations)
Mon May 30 12:01:40 2016 UTC (8 years, 8 months ago) by nmeucci
File size: 114064 byte(s)
Suppression d'une instruction servant au débug

1 <?php
2 /**
3 * DBFORM - 'demande' - Surcharge gen.
4 *
5 * Ce script permet de définir la classe 'demande'.
6 *
7 * @package openads
8 * @version SVN : $Id: demande.class.php 6143 2016-03-09 16:27:26Z jymadier $
9 */
10
11 require_once "../gen/obj/demande.class.php";
12 require_once "../obj/geoads.class.php";
13
14 /**
15 * Définition de la classe 'demande'.
16 *
17 * Cette classe permet d'interfacer la demande, c'est-à-dire l'enregistrement
18 * représentant une demande faite par un pétitionnaire pour un nouveau dossier
19 * ou pour un dossier existant.
20 */
21 class demande extends demande_gen {
22
23 /**
24 * On active les nouvelles actions sur cette classe.
25 */
26 var $activate_class_action = true;
27
28 /**
29 *
30 */
31 function __construct($id, &$dnu1 = null, $dnu2 = null) {
32 $this->constructeur($id);
33 }
34
35 var $valIdDemandeur = array("petitionnaire_principal" => "",
36 "delegataire" => "",
37 "petitionnaire" => array());
38 var $postedIdDemandeur = array("petitionnaire_principal" => "",
39 "delegataire" => "",
40 "petitionnaire" => array());
41
42 var $autreDossierEnCour;
43
44 var $cerfa = null;
45
46 /**
47 * Instance du paramétrage de la taxe d'aménagement
48 *
49 * @var null
50 */
51 var $inst_taxe_amenagement = null;
52
53 /**
54 * Instance de la classe dossier_autorisation.
55 *
56 * @var mixed (resource | null)
57 */
58 var $inst_dossier_autorisation = null;
59
60 /**
61 * Définition des actions disponibles sur la classe.
62 *
63 * @return void
64 */
65 function init_class_actions() {
66
67 // On récupère les actions génériques définies dans la méthode
68 // d'initialisation de la classe parente
69 parent::init_class_actions();
70
71 // ACTION - 100 - pdfetat
72 // Permet de visualiser le récépissé de la demande
73 $this->class_actions[100] = array(
74 "identifier" => "pdfetat",
75 "portlet" => array(
76 "type" => "action-blank",
77 "libelle" => _("Editer le recepisse PDF"),
78 "order" => 100,
79 "class" => "pdf-16",
80 ),
81 "view" => "view_pdfetat",
82 "permission_suffix" => "consulter",
83 );
84
85 // ACTION - 110 - affichage_reglementaire_registre
86 // Affiche un formulaire pour visualiser le registre réglementaire
87 $this->class_actions[110] = array(
88 "identifier" => "affichage_reglementaire_registre",
89 "view" => "view_reglementaire_registre",
90 "permission_suffix" => "consulter",
91 );
92
93 // ACTION - 120 - affichage_reglementaire_attestation
94 // Affiche un formulaire pour visualiser l'attestation réglementaire
95 $this->class_actions[120] = array(
96 "identifier" => "affichage_reglementaire_attestation",
97 "view" => "view_reglementaire_attestation",
98 "permission_suffix" => "consulter",
99 );
100
101 // ACTION - 130 - Récupération de l'adresse
102 $this->class_actions[130] = array(
103 "identifier" => "get_adresse",
104 "view" => "view_get_adresse_by_cadastre",
105 "permission_suffix" => "recuperer_adresse",
106 );
107 }
108
109 /**
110 *
111 */
112 function get_inst_dossier_instruction($dossier_instruction = null) {
113 //
114 return $this->get_inst_common(
115 "dossier_instruction",
116 $dossier_instruction,
117 "dossier"
118 );
119 }
120
121 /**
122 * VIEW - view_pdfetat
123 *
124 * Génère un récépissé PDF de la demande.
125 *
126 * @return void
127 */
128 function view_pdfetat() {
129 // Identifiant de la demande
130 $idx = $this->getVal($this->clePrimaire);
131
132 // Requête qui récupère le type de lettre type
133 $sql = " SELECT instruction.instruction, instruction.lettretype,";
134 $sql .= " demande.om_collectivite, demande.dossier_instruction";
135 $sql .= " FROM ".DB_PREFIXE."demande ";
136 $sql .= " LEFT JOIN ".DB_PREFIXE."instruction ";
137 $sql .= " ON demande.instruction_recepisse=instruction.instruction ";
138 $sql .= " WHERE demande.demande=".intval($idx);
139 $res = $this->f->db->query($sql);
140 $this->f->addToLog(__METHOD__.": db->query(\"".$sql."\")", VERBOSE_MODE);
141 $this->f->isDatabaseError($res);
142 $row = $res->fetchrow(DB_FETCHMODE_ASSOC);
143
144 // Si la requête nous retourne un résultat
145 if (isset($row["instruction"])
146 && !empty($row["instruction"])
147 && isset($row["lettretype"])
148 && !empty($row["lettretype"])) {
149
150 // récupération des paramètres de la collectivité
151 $coll_param = $this->f->getCollectivite($row["om_collectivite"]);
152
153 // Génération du récépissé
154 $pdf_output = $this->compute_pdf_output(
155 "lettretype",
156 $row["lettretype"],
157 $coll_param,
158 $row["instruction"]
159 );
160 // Mise à disposition du récépissé
161 $this->expose_pdf_output(
162 $pdf_output['pdf_output'],
163 "recepisse_depot_".$row["dossier_instruction"].".pdf"
164 );
165 } else {
166 // On indique à l'utilisateur que le récépissé n'existe pas
167 $this->f->displayMessage("error", _("Le recepisse demande n'existe pas."));
168 }
169 }
170
171 /**
172 * VIEW - view_reglementaire_registre
173 *
174 * Affiche un formulaire pour génèrer le registre d'affichage réglementaire.
175 *
176 * @return void
177 */
178 function view_reglementaire_registre() {
179
180 // Vérification de l'accessibilité sur l'élément
181 $this->checkAccessibility();
182
183 /**
184 * Gestion des erreurs : vérification du paramétrage
185 */
186 $erreur = false;
187 // Récupération de l'événement correspondant à l'instruction à insérer pour chaque dossier du registre
188 $aff_obli = $this->f->getParameter('id_affichage_obligatoire');
189 // Si le paramétrage est vide ou pas numérique
190 if ($aff_obli == "" or !is_numeric($aff_obli)) {
191 $erreur = true;
192 } else {
193 // Vérification de l'existance de l'événement
194 $sql_verif = "SELECT count(*) FROM ".DB_PREFIXE."evenement WHERE evenement = ".$aff_obli;
195 $res_verif = $this->f->db->getOne($sql_verif);
196 $this->f->addToLog(__METHOD__.": db->getOne(\"".$sql_verif."\");", VERBOSE_MODE);
197 $this->f->isDatabaseError($res_verif);
198 // Si pas de correspondance d'événement dans la base
199 if ($res_verif === '0') {
200 $erreur = true;
201 }
202 }
203 // Affichage d'un message si en erreur
204 if ($erreur == true) {
205 // Affichage de l'erreur et sortie de la vue
206 $this->f->displayMessage("error", _("Erreur de parametrage. Contactez votre administrateur."));
207 return;
208 }
209
210 // Si un affichage réglementaire des dossiers est demandé (appel en ajax)
211 if ($this->f->get_submitted_get_value('update') !== null) {
212 // Désactivation des logs car appel en ajax
213 $this->f->disableLog();
214 // Récupère la collectivité de l'utilisateur
215 $this->f->getCollectivite();
216 // Récupération de la liste des dossiers d'instruction dont l'état est
217 // "encours" et le groupe est 'ADS'. Une jointure avec la table instruction
218 // permet de savoir si le dossier a déjà été affiché ou non en récupérant
219 // l'id de l'événement qui représente l'attestion de l'affichage
220 // réglementaire dans le paramétrage.
221 $sql = "SELECT dossier.dossier, instruction.instruction, dossier.om_collectivite
222 FROM
223 ".DB_PREFIXE."dossier
224 LEFT JOIN ".DB_PREFIXE."instruction
225 ON dossier.dossier=instruction.dossier
226 AND instruction.evenement=".$aff_obli."
227 LEFT JOIN ".DB_PREFIXE."dossier_autorisation
228 ON dossier.dossier_autorisation =
229 dossier_autorisation.dossier_autorisation
230 LEFT JOIN ".DB_PREFIXE."dossier_autorisation_type_detaille
231 ON dossier_autorisation.dossier_autorisation_type_detaille =
232 dossier_autorisation_type_detaille.dossier_autorisation_type_detaille
233 LEFT JOIN ".DB_PREFIXE."dossier_autorisation_type
234 ON dossier_autorisation_type_detaille.dossier_autorisation_type =
235 dossier_autorisation_type.dossier_autorisation_type
236 LEFT JOIN ".DB_PREFIXE."groupe
237 ON dossier_autorisation_type.groupe = groupe.groupe
238 LEFT JOIN ".DB_PREFIXE."dossier_instruction_type
239 ON dossier.dossier_instruction_type=dossier_instruction_type.dossier_instruction_type
240 WHERE
241 (select
242 e.statut
243 from
244 ".DB_PREFIXE."etat e
245 where
246 e.etat = dossier.etat
247 ) = 'encours'
248 AND groupe.code = 'ADS'
249 AND LOWER(dossier_instruction_type.code) IN ('p','m','t')
250 AND dossier.om_collectivite = ".$this->f->getParameter('om_collectivite_idx');
251 $res = $this->f->db->query($sql);
252 $this->f->addToLog(__METHOD__.": db->query(\"".$sql."\");", VERBOSE_MODE);
253 $this->f->isDatabaseError($res);
254 // Boucle sur les dossiers
255 while ($row =& $res->fetchRow(DB_FETCHMODE_ASSOC)) {
256 // Si aucune instruction n'a d'événement de type "affichage_obligatoire"
257 // on créé une nouvelle instruction avec cet événement.
258 if ($row["instruction"] == "") {
259 // Instanciation d'instruction pour ajout
260 require_once '../obj/instruction.class.php';
261 $instr = new instruction(']', $this->f->db, DEBUG);
262 // Création d'un tableau avec la liste des champs de l'instruction
263 foreach($instr->champs as $champ) {
264 $valF[$champ] = "";
265 }
266 $valF["destinataire"] = $row['dossier'];
267 $valF["date_evenement"] = date("d/m/Y");
268 $valF["evenement"] = $aff_obli;
269 $valF["dossier"] = $row['dossier'];
270
271 // Définition des valeurs de la nouvelle instruction
272 $instr->valF = array();
273 // Insertion dans la base
274 $res_ajout = $instr->ajouter($valF, $this->f->db, DEBUG);
275 $this->f->addToLog(__METHOD__.": db->autoexecute(\"".DB_PREFIXE."instruction\", ".print_r($valF, true).", DB_AUTOQUERY_INSERT);", VERBOSE_MODE);
276 $this->f->isDatabaseError($res_ajout);
277
278 //Finalisation du document
279 $_GET['obj']='instruction';
280 $_GET['idx']=$instr->valF[$instr->clePrimaire];
281 $instr = new instruction($_GET['idx'],$this->f->db,DEBUG);
282 // On se met en contexte de l'action 100 finaliser
283 $instr->setParameter('maj',100);
284 $instr->finalize();
285 }
286 }
287 } else { // Sinon affichage standard
288 // Affichage de la description de l'écran
289 $this->f->displayDescription(_("Cet ecran permet d'imprimer le registre d'affichage ".
290 "reglementaire des dossiers d'instruction en cours. ".
291 "La validation de ce traitement ajoute sur chacun des ".
292 "dossiers d'instruction concernes la possibilite ".
293 "d'imprimer une attestation d'affichage."));
294 // Ouverture du formulaire
295 echo "\t<form";
296 echo " method=\"post\"";
297 echo " id=\"affichage_reglementaire_registre_form\"";
298 echo " action=\"#\"";
299 echo ">\n";
300 //
301 echo "<div id=\"msg\"></div>";
302 // Affichage du bouton
303 echo "\t<div class=\"formControls\">\n";
304 $this->f->layout->display_form_button(array("value" => _("Valider"), "onclick" => "affichage_reglementaire_registre(this); return false;", ));
305 echo "\t</div>\n";
306 // Fermeture du fomulaire
307 echo "\t</form>\n";
308 }
309 }
310
311 /**
312 * VIEW - view_reglementaire_attestation
313 *
314 * Affiche un formulaire pour génèrer l'attestation d'affichage
315 * réglementaire.
316 *
317 * @return void
318 */
319 function view_reglementaire_attestation() {
320
321 // Vérification de l'accessibilité sur l'élément
322 $this->checkAccessibility();
323
324 /**
325 * Gestion des erreurs : vérification du paramétrage
326 */
327 $erreur = false;
328 // Récupération de l'événement correspondant à l'instruction à insérer pour chaque dossier du registre
329 $aff_obli = $this->f->getParameter('id_affichage_obligatoire');
330 // Si le paramétrage est vide ou pas numérique
331 if ($aff_obli == "" or !is_numeric($aff_obli)) {
332 $erreur = true;
333 } else {
334 // Vérification de l'existance de l'événement
335 $sql_verif = "SELECT count(*) FROM ".DB_PREFIXE."evenement WHERE evenement = ".$aff_obli;
336 $res_verif = $this->f->db->getOne($sql_verif);
337 $this->f->addToLog(__METHOD__.": db->getOne(\"".$sql_verif."\");", VERBOSE_MODE);
338 $this->f->isDatabaseError($res_verif);
339 // Si pas de correspondance d'événement dans la base
340 if ($res_verif === '0') {
341 $erreur = true;
342 }
343 }
344 // Affichage d'un message si en erreur
345 if ($erreur == true) {
346 // Affichage de l'erreur et sortie de la vue
347 $this->f->displayMessage("error", _("Erreur de parametrage. Contactez votre administrateur."));
348 return;
349 }
350
351 /**
352 * Validation du formulaire
353 */
354 // Si le formulaire a été validé
355 if ($this->f->get_submitted_post_value("dossier") !== null) {
356 // Si une valeur a été saisie dans le champs dossier
357 if ($this->f->get_submitted_post_value("dossier") != "") {
358 // On récupère la valeur postée :
359 // - on l'échappe pour la base de données
360 // - on supprime les espaces pour faciliter la saisie
361 // - on le positionne en minuscule pour être sûr de la correspondance
362 $posted_dossier = $this->f->db->escapesimple(strtolower(str_replace(' ', '', $this->f->get_submitted_post_value("dossier"))));
363 // Récupération des informations sur le dossier et l'étape d'instruction
364 $sql = "SELECT
365 dossier.dossier, instruction.instruction, instruction.lettretype,
366 instruction.om_final_instruction, instruction.om_fichier_instruction
367 FROM
368 ".DB_PREFIXE."dossier
369 LEFT JOIN ".DB_PREFIXE."instruction
370 ON dossier.dossier=instruction.dossier
371 AND instruction.evenement=".$this->f->getParameter('id_affichage_obligatoire')."
372 WHERE
373 LOWER(dossier.dossier)='".$posted_dossier."' ";
374 $res = $this->f->db->query($sql);
375 $this->f->addToLog(__METHOD__.": db->query(\"".$sql."\");", VERBOSE_MODE);
376 $this->f->isDatabaseError($res);
377 $row =& $res->fetchRow(DB_FETCHMODE_ASSOC);
378 // Si il y a un dossier et une étape d'instrcution correspondante à
379 // l'événement affichage obligatoire
380 if ($res->numrows() != 0 && $row["instruction"] != "") {
381 $message_class = "valid";
382 $message = _("Cliquez sur le lien ci-dessous pour telecharger votre attestation d'affichage");
383 $message .= " : <br/><br/>";
384 $message .= "<a class='om-prev-icon pdf-16'";
385 $message .= " title=\""._("Attestation d'affichage")."\"";
386 //Affichage du lien vers le document stocké
387 if (isset($row['om_fichier_instruction']) &&
388 isset($row['om_final_instruction']) &&
389 $row['om_fichier_instruction']!='' &&
390 $row['om_final_instruction'] == 't' ){
391
392 $message .= " href='../spg/file.php?obj=instruction&amp;"
393 ."champ=om_fichier_instruction&amp;id=".$row['instruction']."'";
394 }
395 //Sinon affichage du lien généré à la volée
396 else{
397 $message .= " href='../pdf/pdflettretype.php?obj=".$row['lettretype']."&amp;idx=".$row['instruction']."'";
398 }
399 $message .= " target='_blank'>";
400 $message .= _("Attestation d'affichage");
401 $message .= "</a>";
402 } elseif ($res->numrows() != 0 && $row["instruction"] == "") {
403 // Si aucune instruction avec l'événement affichage obligatoire n'a
404 // été trouvée
405 $message_class = "error";
406 $message = _("Ce dossier n'a jamais ete affiche.");
407 } else {
408 // Si aucun dossier n'est trouvé
409 $message_class = "error";
410 $message = _("Ce dossier n'existe pas.");
411 }
412 } else {
413 // Si aucune valeur n'a été saisie dans le champs dossier
414 $message_class = "error";
415 $message = _("Veuiller saisir un No de dossier.");
416 }
417 }
418
419 /**
420 * Affichage des messages et du formulaire
421 */
422 // Affichage de la description de l'écran
423 $this->f->displayDescription(_("Cet ecran permet d'imprimer l'attestation d'affichage ".
424 "reglementaire d'un dossier d'instruction. Il suffit de ".
425 "saisir le numero du dossier d'instruction puis de ".
426 "valider pour obtenir le lien de telechargement de ".
427 "l'attestation permettant de l'imprimer."));
428 // Affichage du message de validation ou d'erreur
429 if (isset($message) && isset($message_class) && $message != "") {
430 $this->f->displayMessage($message_class, $message);
431 }
432 // Inclusion de la classe de gestion des formulaires
433 require_once "../obj/om_formulaire.class.php";
434 // Ouverture du formulaire
435 echo "\t<form";
436 echo " method=\"post\"";
437 echo " id=\"affichage_reglementaire_attestation_form\"";
438 echo " action=\"\"";
439 echo ">\n";
440 // Paramétrage des champs du formulaire
441 $champs = array("dossier");
442 // Création d'un nouvel objet de type formulaire
443 $form = new formulaire(NULL, 0, 0, $champs);
444 // Paramétrage des champs du formulaire
445 $form->setLib("dossier", _("No de dossier"));
446 $form->setType("dossier", "text");
447 $form->setTaille("dossier", 25);
448 $form->setMax("dossier", 25);
449 // Affichage du formulaire
450 $form->entete();
451 $form->afficher($champs, 0, false, false);
452 $form->enpied();
453 // Affichage du bouton
454 echo "\t<div class=\"formControls\">\n";
455 $this->f->layout->display_form_button(array("value" => _("Valider")));
456 echo "\t</div>\n";
457 // Fermeture du fomulaire
458 echo "\t</form>\n";
459 }
460
461
462 /**
463 * VIEW - view_get_adresse_by_cadastre
464 *
465 * Permet de récupérer l'adresse de la première référence cadastrale via le sig.
466 *
467 * @return void
468 */
469 public function view_get_adresse_by_cadastre() {
470 //
471 $this->f->disableLog();
472 $refcads = "";
473 // Récupération des références cadastrales passées en paramètre
474 if ($this->f->get_submitted_post_value("refcad") != null) {
475 $refcads = $this->f->get_submitted_post_value("refcad");
476 }
477 // Si ce n'est pas un tableau de références
478 if (is_array($refcads) === false){
479 printf(json_encode(_("Aucune reference cadastrale fournie")));
480 return;
481 }
482 // TODO : Ajouter les tests
483 // XXX
484 // Pour les utilisateur mono, il faut récupérer la session mais s'il s'agit d'un
485 // utilisateur commnauté, il faut récupérer la valeur du champ om_collectivite
486 // et vérifier que celui-ci n'est pas vide sinon afficher un message d'erreur
487 $collectivite_idx = $_SESSION["collectivite"];
488 if ($this->f->get_submitted_post_value("om_collectivite") != null) {
489 $collectivite_idx = $this->f->get_submitted_post_value("om_collectivite");
490 }
491 $collectivite_param = $this->f->getCollectivite($collectivite_idx);
492 // Si le paramètre option_sig de la commune n'a pas la valeur 'sig_externe', on
493 // affiche une erreur.
494 if ($collectivite_param['option_sig'] != 'sig_externe') {
495 printf(json_encode(_("La localisation SIG n'est pas activee pour cette commune.")));
496 return;
497 }
498
499 $wParcelle = "";
500 //Formatage des références cadastrales pour l'envoi
501 foreach ($refcads as $refcad) {
502 //Pour chaque ligne
503 foreach ($refcad as $value) {
504 //On ajoute les données dans le tableau que si quartier + section + parcelle
505 //a été fourni
506 if ($value["quartier"] !== "" && $value["section"] !== "" &&
507 $value["parcelle"] !== "") {
508 //
509 $wParcelle .= $value["quartier"].$value["section"].$value["parcelle"];
510 //Si on a des délimiteurs
511 if (isset($value["delimit"][0])) {
512
513 //Pour chaque délimiteur
514 for($i = 0; $i < count($value["delimit"][0]); $i++) {
515 //
516 $wParcelle .= $value["delimit"][0][$i];
517 }
518 }
519 // Séparateur
520 $wParcelle .= ";";
521 }
522 }
523 }
524
525 try {
526 $geoads = new geoads($collectivite_param);
527 } catch (geoads_exception $e) {
528 printf(json_encode($e->getMessage()));
529 return;
530 }
531 // XXX
532 // Pour les utilisateur mono, il faut récupérer la session mais s'il s'agit d'un
533 // utilisateur commnauté, il faut récupérer la valeur du champ om_collectivite
534 // et vérifier que celui-ci n'est pas vide sinon afficher un message d'erreur
535 // Formatage des parcelles pour l'envoi au webservice
536 $liste_parcelles = $this->f->parseParcelles($wParcelle, $collectivite_idx);
537 try {
538 //On lance la requête SOAP
539 $execute = $geoads->verif_parcelle($liste_parcelles);
540 } catch (geoads_exception $e) {
541 printf(json_encode($e->getMessage()));
542 return;
543 }
544
545 // Vérifie l'existence de la 1ere parcelles
546 if (!isset($execute[0]) or $execute[0]['existe'] != true) {
547 printf(json_encode(_("Aucune adresse ne correspond a la reference cadastrale fournie")));
548 return;
549 }
550
551 $response['return_addr'] = array();
552 // Si plusieurs parcelles sont retournées on n'utilise que la première pour
553 // récupérer l'adresse
554 if (isset($execute[0]) && is_array($execute[0])) {
555 $adresse_ws = $execute[0];
556 }
557 //Récupération du nom de la collectivité
558 $sql = "SELECT UPPER(
559 valeur)
560 FROM
561 ".DB_PREFIXE."om_parametre
562 WHERE
563 libelle = 'ville' and om_collectivite = ".$collectivite_idx;
564 $this->f->addToLog(__METHOD__." : ".$sql." execute <br>", EXTRA_VERBOSE_MODE);
565
566 $ville = $this->f->db->getOne($sql);
567 $this->f->isDatabaseError($ville);
568
569 $response["return_addr"]["localite"] = $ville;
570
571 // Formate le code postal
572 $code_postal = '';
573 // On vérifie que l'arrondissement retourné est bien une valeur
574 // cohérente avant d'essayer de récupérer son code postal en base de
575 // données
576 if (isset($adresse_ws["adresse"]['arrondissement']) === true
577 && $adresse_ws["adresse"]['arrondissement'] != ""
578 && is_numeric($adresse_ws["adresse"]['arrondissement']) === true) {
579 // Requête sql
580 $sqlDonneesArrdt = "SELECT code_postal
581 FROM ".DB_PREFIXE."arrondissement
582 WHERE arrondissement = ".$adresse_ws["adresse"]['arrondissement'];
583 $code_postal = $this->f->db->getOne($sqlDonneesArrdt);
584 $this->f->addToLog("app/geolocalisation_treatment.php : db->query(\"".$sqlDonneesArrdt."\")", VERBOSE_MODE);
585 $this->f->isDatabaseError($code_postal);
586 } else {
587 //Récupération du code postal
588 $sql = "SELECT
589 valeur
590 FROM
591 ".DB_PREFIXE."om_parametre
592 WHERE
593 libelle = 'cp' and om_collectivite = ".$collectivite_idx;
594 $this->f->addToLog(__METHOD__." : ".$sql." execute <br>", EXTRA_VERBOSE_MODE);
595
596 $code_postal = $this->f->db->getOne($sql);
597 $this->f->isDatabaseError($code_postal);
598 }
599
600 $response['return_addr']['code_postal'] = $code_postal;
601
602 // On coupe les chaînes retournées afin que leurs tailles
603 // correspondent aux tailles des champs en base de données
604 if ($adresse_ws["adresse"]['numero_voie'] !== '') {
605 $response['return_addr']['numero_voie'] = substr($adresse_ws["adresse"]['numero_voie'], 0, 20);
606 }
607 if ($adresse_ws["adresse"]['type_voie'] !== '' AND $adresse_ws["adresse"]['nom_voie'] !== '') {
608 $response['return_addr']['nom_voie'] = substr(
609 $adresse_ws["adresse"]['type_voie']." ".$adresse_ws["adresse"]['nom_voie'],
610 0,
611 30
612 );
613 }
614 //
615 printf(json_encode($response));
616 return;
617 }
618
619
620 function setValF($val) {
621 parent::setValF($val);
622 // Récupération des id demandeurs postés
623 $this->getPostedValues();
624 //$this->valIdDemandeur=$this->postedIdDemandeur;
625 }
626
627
628 /**
629 * Méthode permettant de récupérer les valeurs du dossier d'autorisation
630 * correspondant à la nouvelle demande
631 */
632 function getValFromDossier($dossier_autorisation) {
633 include "../sql/pgsql/demande.form.inc.php";
634 $sql=str_replace("<idx>",$this->getParameter("idx_dossier"),
635 $sql_infos_dossier);
636 $res = $this->db->query($sql);
637 $this->f->addToLog("getValFromDossier(): db->query(\"".$sql."\")", VERBOSE_MODE);
638 $this->f->isDatabaseError($res);
639 $row = & $res->fetchRow(DB_FETCHMODE_ASSOC);
640 return $row;
641 }
642
643 /*
644 * La date du jour par défaut dans le champs date_demande
645 * Put the date of the day by default into the field date_demande
646 */
647 function setVal(&$form, $maj, $validation, &$db) {
648 parent::setVal($form, $maj, $validation, $db);
649 if($maj == 0) {
650
651 // Définition de la date de dépôt par défaut
652 if($this->f->getParameter('option_date_depot_demande_defaut') !== 'false') {
653 $form->setVal("date_demande", date('d/m/Y'));
654 }
655
656 // Récupération des valeurs du dossier d'autorisation correspondant
657 if($this->getParameter("idx_dossier") != "") {
658 $val_autorisation = $this->getValFromDossier(
659 $this->getParameter("idx_dossier"));
660 foreach($val_autorisation as $champ => $value) {
661 $form->setVal($champ,$value);
662 }
663 }
664 }
665 }
666 function getDataSubmit() {
667
668 $datasubmit = parent::getDataSubmit();
669 if($this->getParameter("idx_dossier") != "") {
670 $datasubmit .= "&idx_dossier=".$this->getParameter("idx_dossier");
671 }
672 return $datasubmit;
673 }
674
675 /**
676 * Méthode de verification du contenu
677 */
678 function verifier($val, &$db, $DEBUG) {
679 parent::verifier($val, $db, $DEBUG);
680
681 if(!isset($this->postedIdDemandeur["petitionnaire_principal"]) OR
682 empty($this->postedIdDemandeur["petitionnaire_principal"]) AND
683 !is_null($this->form)) {
684 $this->correct = false;
685 $this->addToMessage(_("La saisie d'un petitionnaire principal est obligatoire."));
686 }
687 }
688
689 /**
690 * Configuration des select
691 */
692 function setSelect(&$form, $maj,&$db,$debug) {
693
694 if(file_exists ("../sql/".OM_DB_PHPTYPE."/".$this->table.".form.inc.php"))
695 include ("../sql/".OM_DB_PHPTYPE."/".$this->table.".form.inc.php");
696 elseif(file_exists ("../sql/".OM_DB_PHPTYPE."/".$this->table.".form.inc"))
697 include ("../sql/".OM_DB_PHPTYPE."/".$this->table.".form.inc");
698
699 // Méthode de récupération des valeurs du select "demande_type"
700 if ($maj < 2
701 && (($this->f->get_submitted_get_value('obj') !== null && $this->f->get_submitted_get_value('obj') != "demande")
702 OR ($this->f->get_submitted_get_value('obj') === null))) {
703 // demande_type
704 $form->setSelect('demande_type', $this->loadSelectDemandeType($form, $maj, $db, $debug, "dossier_autorisation_type_detaille"));
705 } else {
706 // demande_type
707 $this->init_select($form, $db, $maj, $debug, "demande_type",
708 $sql_demande_type, $sql_demande_type_by_id, false);
709 }
710 // arrondissement
711 $this->init_select($form, $db, $maj, $debug, "arrondissement",
712 $sql_arrondissement, $sql_arrondissement_by_id, false);
713
714 // dossier_autorisation_type_detaille
715 $this->init_select($form, $db, $maj, $debug, "dossier_autorisation_type_detaille",
716 $sql_dossier_autorisation_type_detaille, $sql_dossier_autorisation_type_detaille_by_id, false);
717
718 // om_collectivite
719 $this->init_select($form, $this->f->db, $maj, null, "om_collectivite", $sql_om_collectivite, $sql_om_collectivite_by_id, false);
720
721
722 }
723
724 /**
725 * Charge le select du champ type de demande
726 * @param object $form Formulaire
727 * @param int $maj Mode d'insertion
728 * @param object $db Database
729 * @param bool $debug Debug active ou pas
730 * @param string $champ champ activant le filtre
731 * @return array Contenu du select
732 */
733 function loadSelectDemandeType(&$form, $maj, &$db, $debug, $champ) {
734
735 //
736 if(file_exists ("../sql/".OM_DB_PHPTYPE."/".$this->table.".form.inc.php"))
737 include ("../sql/".OM_DB_PHPTYPE."/".$this->table.".form.inc.php");
738 elseif(file_exists ("../sql/".OM_DB_PHPTYPE."/".$this->table.".form.inc"))
739 include ("../sql/".OM_DB_PHPTYPE."/".$this->table.".form.inc");
740
741 // Contenu de la liste à choix
742 $contenu=array();
743 $contenu[0][0]='';
744 $contenu[1][0]=_('choisir')."&nbsp;"._("demande_type");
745
746 //Récupère l'id du type de dossier d'autorisation détaillé
747 $id_dossier_autorisation_type_detaille = "";
748 if ($this->f->get_submitted_post_value($champ) !== null) {
749 $id_dossier_autorisation_type_detaille = $this->f->get_submitted_post_value($champ);
750 } elseif($this->getParameter($champ) != "") {
751 $id_dossier_autorisation_type_detaille = $this->getParameter($champ);
752 } elseif(isset($form->val[$champ])) {
753 $id_dossier_autorisation_type_detaille = $form->val[$champ];
754 }
755
756 // Récupération de paramètre pour le rechargement ajax du select
757 $idx_dossier = $this->getParameter("idx_dossier");
758
759 // Récupère l'id de la nature de la demande
760 $id_demande_nature = "1";
761 if (isset($idx_dossier) AND $idx_dossier != "") {
762 $id_demande_nature = '2';
763 }
764
765 // Ajout de condition pour la requête
766 $ajout_condition_requête = "";
767 if ($id_demande_nature == '2') {
768
769 //On récupère le dossier d'autorisation
770 $sql = "SELECT dossier_autorisation
771 FROM ".DB_PREFIXE."dossier
772 WHERE dossier = '".$idx_dossier."'";
773 $dossier_autorisation = $this->db->getOne($sql);
774
775 $this->f->addToLog(
776 "loadSelectDemandeType() : db->getone(\"".$sql."\");",
777 VERBOSE_MODE
778 );
779 $this->f->isDatabaseError($dossier_autorisation);
780
781 //On récupère l'état du dernier dossier d'instruction
782 $sql = "SELECT etat
783 FROM ".DB_PREFIXE."dossier
784 WHERE dossier_autorisation = '".$dossier_autorisation."' AND
785 version = (SELECT max(version) FROM ".DB_PREFIXE."dossier
786 WHERE dossier_autorisation = '".$dossier_autorisation."' )";
787 $etatDernierDi = $this->db->getOne($sql);
788 $this->f->addToLog(
789 "loadSelectDemandeType() : db->getone(\"".$sql."\");",
790 VERBOSE_MODE
791 );
792 $this->f->isDatabaseError($etatDernierDi);
793
794 $ajout_condition_requête = " AND etat.etat = '".$etatDernierDi."'";
795 }
796
797 //
798 if ($id_dossier_autorisation_type_detaille != "") {
799 //Si l'id du type de dossier d'autorisation détaillé est renseigné
800 $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);
801 // Ajoute une condition sur la nature de la demande
802 $sql_demande_type_by_dossier_autorisation_type_detaille = str_replace('<idx_demande_nature>', $id_demande_nature, $sql_demande_type_by_dossier_autorisation_type_detaille);
803 // Permet d'ajouter une condition
804 $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);
805 $res = $this->db->query($sql_demande_type_by_dossier_autorisation_type_detaille);
806 $this->addToLog("db->query(\"".$sql_demande_type_by_dossier_autorisation_type_detaille."\");", VERBOSE_MODE);
807 $this->f->isDatabaseError($res);
808 //Les résultats de la requête sont stocké dans le tableau contenu
809 $k=1;
810 while ($row=& $res->fetchRow()){
811 $contenu[0][$k]=$row[0];
812 $contenu[1][$k]=$row[1];
813 $k++;
814 }
815 }
816
817 // Retourne le contenu de la liste
818 return $contenu;
819 }
820
821 /*
822 * Ajout du fielset
823 * Add fieldset
824 */
825 function setLayout(&$form, $maj){
826 if ( $maj < 2 OR $maj == 3 ) {
827 $form->setBloc('dossier_autorisation_type_detaille','D',"","dossier_type col_12");
828 $form->setBloc('dossier_autorisation_type_detaille','D',"","dossier_type col_8");
829
830 $form->setFieldset('dossier_autorisation_type_detaille','D'
831 ,_('Type de dossier/demande'));
832 $form->setFieldset('demande_type','F','');
833
834 $form->setBloc('demande_type','F');
835 /*Fin bloc 1*/
836
837 // Affichage de l'état du dossier d'instruction
838 $form->setBloc('etat','D',"","col_4 demande_etat_hidden_bloc");
839 $form->setFieldset('etat','D',_('etat du dossier_instruction'));
840 $form->setFieldset('etat','F','');
841 $form->setBloc('etat','F');
842 $form->setBloc('etat','F');
843
844 /*Champ sur lequel s'ouvre le bloc 2 */
845 $form->setBloc('date_demande','D',"","col_4 demande_hidden_bloc");
846 $form->setFieldset('date_demande','D',_('Date de la demande'));
847 $form->setFieldset('date_demande','F','');
848 $form->setBloc('date_demande','F');
849 /*Fin bloc 2*/
850
851 /*Champ sur lequel s'ouvre le bloc 3 */
852 $form->setBloc('terrain_references_cadastrales','D',"",
853 "localisation col_12 demande_hidden_bloc");
854 $form->setFieldset('terrain_references_cadastrales','D',_('Localisation du terrain'));
855 $form->setFieldset('terrain_superficie','F','');
856 $form->setBloc('terrain_superficie','F');
857 /*Fin bloc 4*/
858
859 }
860 }
861
862 /*
863 * Ajoute des actions sur les deux premiers select
864 * Add actions on the two first select
865 */
866 function setOnchange(&$form,$maj){
867 parent::setOnchange($form,$maj);
868
869 $form->setOnchange("dossier_autorisation_type_detaille","changeDemandeType();");
870 $form->setOnchange("demande_type","manage_document_checklist(this);showFormsDemande();");
871 }
872
873 function setLib(&$form,$maj) {
874 parent::setLib($form,$maj);
875 //libelle des champs
876
877 $form->setLib('terrain_adresse_voie',_('terrain_adresse'));
878 }
879 /*
880 * Cache le champ terrain_references_cadastrales
881 * Hide the fiels terrain_references_cadastrales
882 */
883 function setType(&$form,$maj) {
884 parent::setType($form,$maj);
885
886 $form->setType('dossier_instruction', 'hidden');
887 $form->setType('dossier_autorisation', 'hidden');
888
889 $form->setType('instruction_recepisse', 'hidden');
890 $form->setType('arrondissement', 'hidden');
891
892 $form->setType('etat', 'hidden');
893
894 // Si il s'agit d'une demande sur dossier existant on desactive tous les champs
895 // sauf demande_type
896 if(($maj == 0 AND $this-> getParameter("idx_dossier"))) {
897 $form->setType('dossier_autorisation_type_detaille', 'selecthiddenstatic');
898 $form->setType('etat', 'hiddenstatic');
899 $form->setType('terrain_references_cadastrales', 'hiddenstatic');
900 $form->setType('terrain_adresse_voie_numero', 'hiddenstatic');
901 $form->setType('terrain_adresse_voie', 'hiddenstatic');
902 $form->setType('terrain_adresse_lieu_dit', 'hiddenstatic');
903 $form->setType('terrain_adresse_localite', 'hiddenstatic');
904 $form->setType('terrain_adresse_code_postal', 'hiddenstatic');
905 $form->setType('terrain_adresse_bp', 'hiddenstatic');
906 $form->setType('terrain_adresse_cedex', 'hiddenstatic');
907 $form->setType('terrain_superficie', 'hiddenstatic');
908 }
909 if($maj == 1) {
910 $form->setType('dossier_autorisation_type_detaille', 'selecthiddenstatic');
911 $form->setType('demande_type', 'selecthiddenstatic');
912 }
913 if($maj == 3) {
914 $form->setType('terrain_references_cadastrales', 'referencescadastralesstatic');
915 }
916
917 }
918
919 /**
920 * Permet de recupérer l'identifiant du cerfa du DATD séléctionné
921 * par l'utilisateur.
922 *
923 * @return integer identifiant du cerfa
924 */
925 function getIdCerfa() {
926 if($this->cerfa != null) {
927 return $this->cerfa;
928 }
929 // Récupération du cerfa pour le type d'instruction sélectionnée et valide
930 $sql = "SELECT
931 dossier_autorisation_type_detaille.cerfa
932 FROM
933 ".DB_PREFIXE."dossier_autorisation_type_detaille
934 JOIN
935 ".DB_PREFIXE."cerfa
936 ON
937 dossier_autorisation_type_detaille.cerfa = cerfa.cerfa
938 WHERE
939 now()<=om_validite_fin
940 AND now()>=om_validite_debut
941 AND dossier_autorisation_type_detaille=".
942 $this->valF['dossier_autorisation_type_detaille'];
943 $this->cerfa = $this->db->getOne($sql);
944 $this->f->addToLog(
945 "ajoutDossierInstruction() : db->getone(\"".$sql."\");",
946 VERBOSE_MODE
947 );
948 $this->f->isDatabaseError($this->cerfa);
949 return $this->cerfa;
950 }
951
952
953 /**
954 * Méthode permettant d'ajouter un dossier d'autorisation.
955 *
956 * @param integer $id identifiant de la demande
957 * @param database &$db handler de la base de donnée
958 * @param array $val tableau de valeurs postées via le formulaire
959 * @param boolean $DEBUG debug
960 *
961 * @return boolean false si erreur
962 */
963 function ajoutDossierAutorisation($id, &$db, $val, $DEBUG) {
964 require_once '../obj/dossier_autorisation.class.php';
965 $dossier_autorisation = new dossier_autorisation("]", $db, $DEBUG);
966 $id_etat_initial_da =
967 $this->f->getParameter('id_etat_initial_dossier_autorisation');
968
969 // Vérification de l'existance d'un état initial des DA dans la table
970 // om_parametre afin d'éviter d'eventuelle erreur de base de données
971 if(isset($id_etat_initial_da)) {
972 $sql = "SELECT count(*) FROM ".DB_PREFIXE."etat_dossier_autorisation
973 WHERE etat_dossier_autorisation = ".$id_etat_initial_da;
974 $count = $this->db->getOne($sql);
975 $this->f->addToLog(
976 "ajoutDossierAutorisation() : db->getOne(\"".$sql."\")",
977 VERBOSE_MODE
978 );
979 if ($this->f->isDatabaseError($count, true)){
980 $this->f->addToLog(
981 "ajoutDossierAutorisation() : ERROR db->getOne(\"".$sql."\")",
982 DEBUG_MODE
983 );
984 return false;
985 }
986 if($count != 1) {
987 $this->f->addToLog(__METHOD__."() : ERROR - Plusieurs états de dossier d'autorisation ont cet identifiant.", DEBUG_MODE);
988 return false;
989 } else {
990
991 // On récupère les paramètres de la collectivité concernée
992 // par la demande.
993 $collectivite_parameters = $this->f->getCollectivite($this->valF['om_collectivite']);
994 // Le paramètre 'insee' est obligatoire si il n'est pas présent
995 // dans le tableau des paramètres alors on stoppe le traitement.
996 if (!isset($collectivite_parameters['insee'])) {
997 $this->f->addToLog(
998 __METHOD__."(): ERROR om_parametre 'insee' inexistant.",
999 DEBUG_MODE
1000 );
1001 return false;
1002 }
1003
1004 // La méthode ajouter prend en paramètre un tableau associatif
1005 // contenant toutes les champs de la classe instanciée,
1006 // d'où l'initialisation du tableau en bouclant sur la liste des
1007 // champs du DA
1008 foreach($dossier_autorisation->champs as $value) {
1009 $valAuto[$value] = null;
1010 }
1011
1012 // Définition des valeurs à insérer
1013 $valAuto['om_collectivite']=
1014 $this->valF['om_collectivite'];
1015 $valAuto['dossier_autorisation']="";
1016 $valAuto['exercice']=null;
1017 $valAuto['insee']= $collectivite_parameters['insee'];
1018 $valAuto['arrondissement']=
1019 $this->getArrondissement($this->valF['terrain_adresse_code_postal']);
1020 $valAuto['etat_dossier_autorisation']=$id_etat_initial_da;
1021 $valAuto['erp_numero_batiment']=null;
1022 $valAuto['erp_ouvert']=null;
1023 $valAuto['erp_arrete_decision']=null;
1024 $valAuto['dossier_autorisation_type_detaille']=
1025 $this->valF['dossier_autorisation_type_detaille'];
1026 $valAuto['depot_initial']=
1027 $this->dateDBToForm($this->valF['date_demande']);
1028 $valAuto['terrain_references_cadastrales']=
1029 $this->valF['terrain_references_cadastrales'];
1030 $valAuto['terrain_adresse_voie_numero']=
1031 $this->valF['terrain_adresse_voie_numero'];
1032 $valAuto['terrain_adresse_voie']=$this->valF['terrain_adresse_voie'];
1033 $valAuto['terrain_adresse_lieu_dit']=
1034 $this->valF['terrain_adresse_lieu_dit'];
1035 $valAuto['terrain_adresse_localite']=
1036 $this->valF['terrain_adresse_localite'];
1037 $valAuto['terrain_adresse_code_postal']=
1038 $this->valF['terrain_adresse_code_postal'];
1039 $valAuto['terrain_adresse_bp']=$this->valF['terrain_adresse_bp'];
1040 $valAuto['terrain_adresse_cedex']=$this->valF['terrain_adresse_cedex'];
1041 $valAuto['terrain_superficie']=$this->valF['terrain_superficie'];
1042 $valAuto['numero_version']=-1;
1043 // Ajout du dossier dans la base
1044 if($dossier_autorisation->ajouter($valAuto, $db, $DEBUG) === false) {
1045 $this->f->addToLog(__METHOD__."() : ERROR - Impossible d'ajouter le dossier d'autorisation.", DEBUG_MODE);
1046 return false;
1047 }
1048 // Liaison du dossier ajouter à la demande
1049 $this->valF['dossier_autorisation'] =
1050 $dossier_autorisation->valF['dossier_autorisation'];
1051 }
1052 } else {
1053 $this->f->addToLog(__METHOD__."() : ERROR - Le paramétre id_etat_initial_dossier_autorisation n'existe pas.", DEBUG_MODE);
1054 return false;
1055 }
1056
1057 //
1058 return true;
1059 }
1060
1061 /**
1062 * Méthode permettant d'ajouter un dossier d'instruction.
1063 *
1064 * @param integer $id identifiant de la demande
1065 * @param database &$db handler de la base de donnée
1066 * @param array $val tableau de valeurs postées via
1067 * le formulaire
1068 * @param boolean $DEBUG debug
1069 * @param integer $dossier_instruction_type identifiant du DI type
1070 *
1071 * @return boolean false si erreur
1072 */
1073 function ajoutDossierInstruction($id, &$db, $val, $DEBUG, $dossier_instruction_type) {
1074 require_once '../obj/dossier.class.php';
1075 $dossier = new dossier("]", $db, $DEBUG);
1076 foreach($dossier->champs as $value) {
1077 $valInstr[$value] = null;
1078 }
1079 require_once '../obj/dossier_autorisation_type_detaille.class.php';
1080 $datd = new dossier_autorisation_type_detaille(
1081 $this->valF['dossier_autorisation_type_detaille'],
1082 $db,
1083 $DEBUG
1084 );
1085
1086 /*Ajout de la variable dossier_instruction_type à l'objet dossier pour le
1087 * versionning
1088 */
1089 $dossier->setDossierInstructionType($dossier_instruction_type);
1090
1091 // Définition des valeurs à entrée dans la table
1092 $valInstr['om_collectivite']=$this->valF['om_collectivite'];
1093 $valInstr['dossier_instruction_type']=$dossier_instruction_type;
1094 $valInstr['date_depot']=$this->dateDBToForm($this->valF['date_demande']);
1095 $valInstr['date_dernier_depot']=$this->dateDBToForm($this->valF['date_demande']);
1096 $valInstr['date_demande']=$this->dateDBToForm($this->valF['date_demande']);
1097 $valInstr['depot_initial']=$this->dateDBToForm($this->valF['date_demande']);
1098 $annee = DateTime::createFromFormat("Y-m-d", $this->valF['date_demande']);
1099 $valInstr['annee']=$annee->format("y");
1100 $valInstr['terrain_references_cadastrales']=
1101 $this->valF['terrain_references_cadastrales'];
1102 $valInstr['terrain_adresse_voie_numero']=
1103 $this->valF['terrain_adresse_voie_numero'];
1104 $valInstr['terrain_adresse_voie']=$this->valF['terrain_adresse_voie'];
1105 $valInstr['terrain_adresse_lieu_dit']=$this->valF['terrain_adresse_lieu_dit'];
1106 $valInstr['terrain_adresse_localite']=$this->valF['terrain_adresse_localite'];
1107 $valInstr['terrain_adresse_code_postal']=
1108 $this->valF['terrain_adresse_code_postal'];
1109 $valInstr['terrain_adresse_bp']=$this->valF['terrain_adresse_bp'];
1110 $valInstr['terrain_adresse_cedex']=$this->valF['terrain_adresse_cedex'];
1111 $valInstr['terrain_superficie']=$this->valF['terrain_superficie'];
1112 $valInstr['description']="";
1113 $valInstr['dossier_autorisation']=$this->valF['dossier_autorisation'];
1114
1115 /*
1116 * Gestion de la qualification
1117 * */
1118 // Initialise le champ à false
1119 $valInstr['a_qualifier'] = false;
1120
1121 // Récupère l'information depuis le type de la demande
1122 $qualification = $this->get_qualification($val['demande_type']);
1123
1124 // Si le dossier doit être à qualifier
1125 if ($qualification === 't') {
1126 // Met le champ à true
1127 $valInstr['a_qualifier'] = true;
1128 }
1129
1130 // Taxe d'aménagement
1131 $inst_taxe_amenagement = $this->get_inst_taxe_amenagement_by_om_collectivite($this->valF['om_collectivite']);
1132 // Valeur clé primaire
1133 $taxe_amenagement_id = $inst_taxe_amenagement->getVal($inst_taxe_amenagement->clePrimaire);
1134 // Si la colletivité à un paramétrage pour la taxe d'aménagement
1135 if (empty($taxe_amenagement_id) == false) {
1136 // Si la taxe d'aménagement à un secteur
1137 if ($inst_taxe_amenagement->has_one_secteur() == true) {
1138 // Sélectionne l'unique secteur automatiquement
1139 $valInstr['tax_secteur'] = 1;
1140 }
1141 }
1142
1143 //
1144 if($dossier->ajouter($valInstr, $db, $DEBUG) === false) {
1145 $this->f->addToLog(__METHOD__."() : ERROR - Impossible d'ajouter le dossier d'instruction.", DEBUG_MODE);
1146 return false;
1147 }
1148
1149 //Affichage de message à l'utilisateur concernant un problème lors de
1150 //l'affectation de l'instructeur au dossier d'instruction
1151 if ($dossier->valF['dossier_autorisation'] === '' &&
1152 $dossier->valF['instructeur'] === null){
1153 $this->addToMessage(
1154 _("Aucun instructeur compatible avec ce dossier, contactez votre administrateur afin d'en assigner un a ce dossier.")
1155 );
1156 }
1157 elseif ( $dossier->valF['instructeur'] === null ){
1158 if ($this->f->isAccredited("dossier_modifier_instructeur")) {
1159 $this->addToMessage("<br/> ".
1160 _("Pensez a assigner un instructeur a ce dossier.")
1161 );
1162 } else {
1163 $this->addToMessage(
1164 _("Aucun instructeur compatible avec ce dossier, contactez votre administrateur afin d'en assigner un a ce dossier.")
1165 );
1166 }
1167 }
1168
1169 // Liaison du dossier ajouter à la demande
1170 $this->valF['dossier_instruction'] = $dossier->valF['dossier'];
1171
1172 //
1173 return true;
1174 }
1175
1176 /**
1177 * Méthode permettant d'ajouter les données techniques d'un DA.
1178 *
1179 * @param integer $id identifiant de la demande
1180 * @param database &$db handler de la base de donnée
1181 * @param array $val tableau de valeurs postées via le formulaire
1182 * @param boolean $DEBUG debug
1183 *
1184 * @return boolean false si erreur
1185 */
1186 function ajoutDonneesTechniquesDA($id, &$db, $val, $DEBUG) {
1187
1188 require_once '../obj/donnees_techniques.class.php';
1189 $this->DTDA = new donnees_techniques("]", $db, $DEBUG);
1190
1191 // Champs tous à NULL car seul le champ concernant le dossier
1192 // d'autorisation sera rempli
1193 foreach($this->DTDA->champs as $value) {
1194 $valF[$value] = null;
1195 }
1196 // Ajout du numéro de dossier d'instruction
1197 $valF['dossier_autorisation']=$this->valF['dossier_autorisation'];
1198 // Identifiant du cerfa
1199 $valF['cerfa'] = $this->getIdCerfa();
1200 //On vérifie que ce type détaille de dossier d'autorisation a un CERFA
1201 if ( $valF['cerfa'] !== "" && is_numeric($valF['cerfa'])){
1202 // Ajout des données techniques
1203 if($this->DTDA->ajouter($valF, $db, $DEBUG) === false) {
1204 $this->f->addToLog(__METHOD__."() : ERROR - Impossible d'ajouter les données techniques du dossier d'autorisation.", DEBUG_MODE);
1205 return false;
1206 }
1207 }
1208 else {
1209 //On indique que le dossier d'autorisation n'a pas de données techniques
1210 $this->DTDA = null;
1211 //Aucun CERFA n'est paramétré pour ce type détaillé de dossier d'autorisation
1212 $this->f->addToLog(__METHOD__."() : ERROR - Aucun CERFA paramétré.", DEBUG_MODE);
1213 return -1;
1214 }
1215
1216 //
1217 return true;
1218 }
1219
1220 /**
1221 * Ajout des liens demandeurs / dossier d'autorisation s'ils n'y sont pas déjà
1222 **/
1223 function ajoutLiensDossierAutorisation($id, &$db, $val, $DEBUG) {
1224 // Création des liens entre le dossier autorisation et les demandeurs
1225 include '../sql/pgsql/demande.form.inc.php';
1226 require_once '../obj/lien_dossier_autorisation_demandeur.class.php';
1227 $ldad = new lien_dossier_autorisation_demandeur("]",$db,$DEBUG);
1228 // Recupération des demandeurs liés à la demande
1229 $sql = str_replace("<demande>",$this->valF['demande'],$sql_lien_demande_demandeur.
1230 " AND lien_demande_demandeur.demandeur NOT IN (
1231 SELECT lien_dossier_autorisation_demandeur.demandeur
1232 FROM ".DB_PREFIXE."lien_dossier_autorisation_demandeur
1233 WHERE lien_dossier_autorisation_demandeur.dossier_autorisation =
1234 '".$this->valF['dossier_autorisation']."'
1235 )");
1236 $res = $db->query($sql);
1237 $this->f->addToLog("ajoutLiensDossierAutorisation() : db->query(\"".$sql."\");", VERBOSE_MODE);
1238 if ($this->f->isDatabaseError($res, true)) {
1239 return false;
1240 }
1241 while($row = &$res->fetchRow(DB_FETCHMODE_ASSOC)) {
1242 $row['lien_dossier_autorisation_demandeur'] = NULL;
1243 $row['dossier_autorisation'] = $this->valF['dossier_autorisation'];
1244 if ($ldad->ajouter($row, $db, $DEBUG) === false) {
1245 $this->f->addToLog(__METHOD__."() : ERROR - Impossible d'ajouter le lien entre le demandeurs et le dossier d'autorisation.", DEBUG_MODE);
1246 return false;
1247 }
1248 }
1249
1250 //
1251 return true;
1252 }
1253
1254 /**
1255 * Ajout des liens demandeurs / dossier d'autorisation
1256 **/
1257 function ajoutLiensDossierInstruction($id, &$db, $val, $DEBUG) {
1258 // Création des liens entre le dossier instruction et les demandeurs
1259 include '../sql/pgsql/demande.form.inc.php';
1260 require_once '../obj/lien_dossier_demandeur.class.php';
1261 $ldd = new lien_dossier_demandeur("]",$db,$DEBUG);
1262 // Recupération des demandeurs liés à la demande
1263 $sql = str_replace("<demande>",$this->valF['demande'],$sql_lien_demande_demandeur);
1264 $res = $db->query($sql);
1265 $this->f->addToLog("ajoutLiensDossierInstruction() : db->query(\"".$sql."\");", VERBOSE_MODE);
1266 if ($this->f->isDatabaseError($res, true)) {
1267 return false;
1268 }
1269 while($row = &$res->fetchRow(DB_FETCHMODE_ASSOC)) {
1270 $row['lien_dossier_demandeur'] = NULL;
1271 $row['dossier'] = $this->valF['dossier_instruction'];
1272 if ($ldd->ajouter($row, $db, $DEBUG) === false) {
1273 $this->f->addToLog(__METHOD__."() : ERROR - Impossible d'ajouter le lien entre le demandeurs et le dossier d'instruction.", DEBUG_MODE);
1274 return false;
1275 }
1276 }
1277
1278 //
1279 return true;
1280 }
1281
1282 /*
1283 * Récupère l'identifiant d'un arrondissement à partir d'un code postal
1284 */
1285 function getArrondissement($terrain_adresse_code_postal){
1286
1287 $arrondissement = NULL;
1288
1289 $sql = "SELECT
1290 arrondissement
1291 FROM
1292 ".DB_PREFIXE."arrondissement
1293 WHERE
1294 code_postal = '$terrain_adresse_code_postal' ";
1295 $this->addToLog("demande.class.php : ".$sql." execute <br>", EXTRA_VERBOSE_MODE);
1296
1297 $res = $this->db->query($sql);
1298 $this->f->addToLog("getArrondissement() : db->query(\"".$sql."\")", VERBOSE_MODE);
1299 $this->f->isDatabaseError($res);
1300
1301 if( $res->numrows() > 0 ) {
1302
1303 $row=& $res->fetchRow(DB_FETCHMODE_ASSOC);
1304 $arrondissement = $row['arrondissement'];
1305 }
1306
1307 return $arrondissement;
1308 }
1309
1310 /*
1311 * Récupère l'évènement lié à un type de demande
1312 */
1313 function getEvenement($demande_type){
1314
1315 $evenement = null;
1316
1317 $sql =
1318 "SELECT
1319 evenement
1320 FROM
1321 ".DB_PREFIXE."demande_type
1322 WHERE
1323 demande_type = $demande_type";
1324
1325 $res = $this->db->query($sql);
1326 $this->f->addToLog("getEvenement() : db->query(\"".$sql."\")", VERBOSE_MODE);
1327 $this->f->isDatabaseError($res);
1328
1329 if ( $res->numrows() > 0 ){
1330
1331 $row=& $res->fetchRow(DB_FETCHMODE_ASSOC);
1332 $evenement = $row['evenement'];
1333 }
1334
1335 return $evenement;
1336 }
1337
1338
1339
1340 /**
1341 * Retourne le libellé du dossier d'autorisation
1342 * @param string $dossier_autorisation Identifiant du dossier d'autorisation
1343 * @return string Libellé dossier d'autorisation
1344 */
1345 function get_dossier_autorisation_libelle($dossier_autorisation) {
1346
1347 $dossier_autorisation_libelle = "";
1348
1349 // Requête SQL
1350 $sql = "SELECT
1351 dossier_autorisation_libelle
1352 FROM
1353 ".DB_PREFIXE."dossier_autorisation
1354 WHERE
1355 dossier_autorisation = '$dossier_autorisation'";
1356
1357 $dossier_autorisation_libelle = $this->db->getOne($sql);
1358 $this->addToLog("get_dossier_autorisation_libelle(): db->getOne(\"".$sql."\")", VERBOSE_MODE);
1359 $this->f->isDatabaseError($dossier_autorisation_libelle);
1360
1361 // Retourne le résultat
1362 return $dossier_autorisation_libelle;
1363 }
1364
1365 /**
1366 * Retourne le libellé du dossier d'autorisation.
1367 * @param string $dossier Identifiant du dossier d'autorisation
1368 *
1369 * @return string Libellé dossier d'autorisation
1370 */
1371 function get_dossier_libelle($dossier) {
1372
1373 $dossier_libelle = "";
1374
1375 // Requête SQL
1376 $sql = "SELECT
1377 dossier_libelle
1378 FROM
1379 ".DB_PREFIXE."dossier
1380 WHERE
1381 dossier = '$dossier'";
1382
1383 $dossier_libelle = $this->db->getOne($sql);
1384 $this->addToLog(__METHOD__."(): db->getOne(\"".$sql."\")", VERBOSE_MODE);
1385 $this->f->isDatabaseError($dossier_libelle);
1386
1387 // Retourne le résultat
1388 return $dossier_libelle;
1389 }
1390
1391 /**
1392 * Ajout des dossiers
1393 **/
1394 function triggerAjouter($id, &$db, $val, $DEBUG){
1395
1396 include '../sql/pgsql/demande.form.inc.php';
1397
1398 if($this->valF["demande_type"] != null) {
1399 $res = $db->query(
1400 str_replace(
1401 '<idx>',
1402 $this->valF['demande_type'],
1403 $sql_demande_type_details_by_id
1404 )
1405 );
1406 $this->f->addToLog(
1407 "triggerAjouter() : db->query(\"".
1408 str_replace(
1409 '<idx>',
1410 $this->valF['demande_type'],
1411 $sql_demande_type_details_by_id
1412 )."\")",
1413 VERBOSE_MODE
1414 );
1415 if ($this->f->isDatabaseError($res, true)) {
1416 return false;
1417 }
1418 // Attribut permettant de définir si un dossier a été créé
1419 $this->ajoutDI = false;
1420 $dossier_type = $res->fetchRow(DB_FETCHMODE_ASSOC);
1421 // Création du dossier_autorisation
1422 if($this->valF['dossier_autorisation'] == "") {
1423 if($this->ajoutDossierAutorisation($id, $db, $val, $DEBUG) === false) {
1424 $this -> addToMessage(
1425 _("Erreur lors de l'enregistrement de la demande.")." ".
1426 _("Contactez votre administrateur.")
1427 );
1428 $this->correct = false;
1429 return false;
1430 }
1431 $this -> addToMessage(
1432 _("Creation du dossier d'autorisation no").
1433 '<span id="new_da">'.
1434 $this->get_dossier_autorisation_libelle(
1435 $this->valF['dossier_autorisation']
1436 ).'</span>'
1437 );
1438 //Ajout des données techniques au dossier d'autorisation
1439 if($this->ajoutDonneesTechniquesDA($id, $db, $val, $DEBUG) === false) {
1440 $this -> addToMessage(
1441 _("Erreur lors de l'enregistrement de la demande.")." ".
1442 _("Contactez votre administrateur.")
1443 );
1444 $this->correct = false;
1445 return false;
1446 }
1447 } else {
1448 $sqlIdDTDA = "SELECT donnees_techniques
1449 FROM ".DB_PREFIXE."donnees_techniques
1450 WHERE dossier_autorisation='".
1451 $this->valF['dossier_autorisation']."'";
1452 $idDTDA = $this->db->getOne($sqlIdDTDA);
1453 $this->addToLog(
1454 "triggerAjouter(): db->getOne(\"".$sqlIdDTDA."\")",
1455 VERBOSE_MODE
1456 );
1457 if ($this->f->isDatabaseError($idDTDA, true)) {
1458 return false;
1459 }
1460
1461 $this->DTDA = null;
1462 if ($idDTDA!=="" && is_numeric($idDTDA)){
1463 require_once '../obj/donnees_techniques.class.php';
1464 $this->DTDA = new donnees_techniques(
1465 $idDTDA,
1466 $db,
1467 $DEBUG
1468 );
1469 $this->DTDA->setValFFromVal();
1470 }
1471 }
1472 // Enregistrement du numéro dossier existant
1473 // (il sera écrasé si un DI est créé)
1474 if ($this->getParameter("idx_dossier") != "") {
1475 $this->valF['dossier_instruction'] = $this->getParameter("idx_dossier");
1476 }
1477 // Création du dossier d'instruction
1478 if($dossier_type['dossier_instruction_type'] != null) {
1479 if($this->ajoutDossierInstruction(
1480 $id,
1481 $db,
1482 $val,
1483 $DEBUG,
1484 $dossier_type['dossier_instruction_type']
1485 ) === false ) {
1486 $this -> addToMessage(
1487 _("Erreur lors de l'enregistrement de la demande.")." ".
1488 _("Contactez votre administrateur.")
1489 );
1490 $this->correct = false;
1491 return false;
1492 }
1493 // Libellé du dossier
1494 $dossier_libelle = $this->get_dossier_libelle($this->valF['dossier_instruction']);
1495 // Message de validation
1496 $this -> addToMessage(
1497 _("Creation du dossier d'instruction no")."<span id='new_di'>".$dossier_libelle."</span>"
1498 );
1499 // Lien vers le DI
1500 $link_di = sprintf("<a id='link_demande_dossier_instruction' title=\"%s\" class='lien' href='../scr/form.php?obj=dossier_instruction&action=3&idx=%s'>%s</a>", _("Visualiser le dossier d'instruction / modifier la demande"), $this->valF['dossier_instruction'], "<span class='om-icon om-icon-16 om-icon-fix consult-16'></span>"._("Acceder au dossier d'instruction"));
1501 // Ajout du lien vers le DI dans le message de validation
1502 $this -> addToMessage(
1503 "<br/>".$link_di
1504 );
1505 // Attribut permettant de définir si un dossier a été créé.
1506 $this->ajoutDI = true;
1507 }
1508
1509 /*Ajout de l'arrondissement à partir du code postal*/
1510 if ( !is_null($this->valF["terrain_adresse_code_postal"]) && is_numeric($this->valF["terrain_adresse_code_postal"]) ){
1511
1512 $this->valF["arrondissement"] = $this->getArrondissement($this->valF["terrain_adresse_code_postal"]);
1513 }
1514 }
1515
1516 //
1517 return true;
1518 }
1519
1520 /**
1521 * Ajout des délégataires et pétitionnaires
1522 **/
1523 function triggerAjouterApres($id, &$db, $val, $DEBUG){
1524
1525 if ($this->insertLinkDemandeDemandeur($db, $DEBUG) == false) {
1526 return false;
1527 }
1528
1529 // Ajout des lliens entre dossier_autorisation et demandeur
1530 if(!empty($this->valF['dossier_autorisation'])) {
1531 if ($this->ajoutLiensDossierAutorisation($id, $db, $val, $DEBUG) == false) {
1532 return false;
1533 }
1534 }
1535 // Ajout des lliens entre dossier et demandeur
1536 if($this->ajoutDI === TRUE) {
1537 if ($this->ajoutLiensDossierInstruction($id, $db, $val, $DEBUG) == false) {
1538 return false;
1539 }
1540 }
1541
1542 // Duplication des lots (et leurs données techniques) et
1543 // liaison au nouveau dossier_d'instruction
1544 if(!empty($this->valF['dossier_autorisation']) AND $val['dossier_autorisation'] != "" ) {
1545 $this->lienLotDossierInstruction($id, $db, $val, $DEBUG);
1546 }
1547
1548 /*Création du lien de téléchargement de récépissé de demande*/
1549 if ( $this->valF['demande_type'] != "" && is_numeric($this->valF['demande_type'])
1550 && isset($this->valF['dossier_instruction']) && $this->valF['dossier_instruction'] !== "" ){
1551
1552 /*Récupérer l'événement lié à ce type de demande*/
1553 $evenement = $this->getEvenement($this->valF['demande_type']);
1554
1555 /*Récupération de la lettre type de l'événement*/
1556 $lettretype = $this->f->getLettreType($evenement);
1557
1558 /*Création d'une nouvelle instruction avec cet événement*/
1559 /*Données*/
1560 $valInstr['instruction']=NULL;
1561
1562 $valInstr['destinataire']=$this->valF['dossier_instruction'];
1563 $valInstr['dossier']=$this->valF['dossier_instruction'];
1564 // Récupère la date de la demande
1565 $valInstr['date_evenement']=$this->dateDBToForm($this->valF['date_demande']);
1566 $valInstr['evenement']=$evenement;
1567 $valInstr['lettretype']=$lettretype;
1568 $valInstr['complement_om_html']="";
1569 $valInstr['complement2_om_html']="";
1570
1571 $valInstr['action']="initialisation";
1572 $valInstr['delai']="2";
1573 $valInstr['etat']="notifier";
1574 $valInstr['accord_tacite']="Oui";
1575 $valInstr['delai_notification']="1";
1576 $valInstr['archive_delai']="0";
1577 $valInstr['archive_date_complet']=NULL;
1578 $valInstr['archive_date_dernier_depot']=NULL;
1579 $valInstr['archive_date_rejet']=NULL;
1580 $valInstr['archive_date_limite']=NULL;
1581 $valInstr['archive_date_notification_delai']=NULL;
1582 $valInstr['archive_accord_tacite']="Non";
1583 $valInstr['archive_etat']="initialiser";
1584 $valInstr['archive_date_decision']=NULL;
1585 $valInstr['archive_avis']="";
1586 $valInstr['archive_date_validite']=NULL;
1587 $valInstr['archive_date_achevement']=NULL;
1588 $valInstr['archive_date_chantier']=NULL;
1589 $valInstr['archive_date_conformite']=NULL;
1590 $valInstr['archive_incompletude']=NULL;
1591 $valInstr['archive_incomplet_notifie']=NULL;
1592 $valInstr['archive_evenement_suivant_tacite']="";
1593 $valInstr['archive_evenement_suivant_tacite_incompletude']=NULL;
1594 $valInstr['archive_etat_pendant_incompletude']=NULL;
1595 $valInstr['archive_date_limite_incompletude']=NULL;
1596 $valInstr['archive_delai_incompletude']=NULL;
1597 $valInstr['archive_autorite_competente']=NULL;
1598 $valInstr['complement3_om_html']="";
1599 $valInstr['complement4_om_html']="";
1600 $valInstr['complement5_om_html']="";
1601 $valInstr['complement6_om_html']="";
1602 $valInstr['complement7_om_html']="";
1603 $valInstr['complement8_om_html']="";
1604 $valInstr['complement9_om_html']="";
1605 $valInstr['complement10_om_html']="";
1606 $valInstr['complement11_om_html']="";
1607 $valInstr['complement12_om_html']="";
1608 $valInstr['complement13_om_html']="";
1609 $valInstr['complement14_om_html']="";
1610 $valInstr['complement15_om_html']="";
1611 $valInstr['avis_decision']=NULL;
1612 $valInstr['date_finalisation_courrier']=NULL;
1613 $valInstr['date_envoi_signature']=NULL;
1614 $valInstr['date_retour_signature']=NULL;
1615 $valInstr['date_envoi_rar']=NULL;
1616 $valInstr['date_retour_rar']=NULL;
1617 $valInstr['date_envoi_controle_legalite']=NULL;
1618 $valInstr['date_retour_controle_legalite']=NULL;
1619 $valInstr['signataire_arrete']=NULL;
1620 $valInstr['numero_arrete']=NULL;
1621 $valInstr['code_barres']=NULL;
1622 $valInstr['om_fichier_instruction']=NULL;
1623 $valInstr['om_final_instruction']=NULL;
1624 $valInstr['document_numerise']=NULL;
1625 $valInstr['autorite_competente']=NULL;
1626 $valInstr['duree_validite_parametrage']="0";
1627 $valInstr['duree_validite']="0";
1628 $valInstr['date_depot']=NULL;
1629 $valInstr['om_final_instruction_utilisateur']= "f";
1630 $valInstr['created_by_commune']= "f";
1631
1632 // Récupération des champs archive si cette demande a créée un dossier
1633 // d'instruction mais pas un P0
1634 if (!is_null($this->valF['dossier_instruction']) &&
1635 $this->valF['dossier_instruction'] !== "" ){
1636
1637 // Requête
1638 $sql = "SELECT dossier_instruction_type.code
1639 FROM ".DB_PREFIXE."demande_type
1640 LEFT JOIN ".DB_PREFIXE."dossier_instruction_type
1641 ON demande_type.dossier_instruction_type = dossier_instruction_type.dossier_instruction_type
1642 WHERE demande_type.demande_type = ".$this->valF['demande_type'];
1643 $res = $db->getOne($sql);
1644 $this->addToLog("triggerajouter(): db->getOne(\"".$sql."\");", VERBOSE_MODE);
1645 if ($this->f->isDatabaseError($res, true)) {
1646 return false;
1647 }
1648
1649 // On vérifie que ce n'est pas un P0
1650 if ( strcmp($res, "P") !== 0 ){
1651
1652 $res = $this->getArchiveInstruction($this->valF['dossier_instruction']);
1653
1654 if ($res == false) {
1655 return false;
1656 }
1657
1658 if (isset($res['archive_delai'])) {
1659 $valInstr['archive_delai']=$res["archive_delai"];
1660 }
1661 if (isset($res['archive_date_complet'])) {
1662 $valInstr['archive_date_complet']=$res["archive_date_complet"];
1663 }
1664 if (isset($res['archive_date_dernier_depot'])) {
1665 $valInstr['archive_date_dernier_depot']=$res["archive_date_dernier_depot"];
1666 }
1667 if (isset($res['archive_date_rejet'])) {
1668 $valInstr['archive_date_rejet']=$res["archive_date_rejet"];
1669 }
1670 if (isset($res['archive_date_limite'])) {
1671 $valInstr['archive_date_limite']=$res["archive_date_limite"];
1672 }
1673 if (isset($res['archive_date_notification_delai'])) {
1674 $valInstr['archive_date_notification_delai']=$res["archive_date_notification_delai"];
1675 }
1676 if (isset($res['archive_accord_tacite'])) {
1677 $valInstr['archive_accord_tacite']=$res["archive_accord_tacite"];
1678 }
1679 if (isset($res['archive_etat'])) {
1680 $valInstr['archive_etat']=$res["archive_etat"];
1681 }
1682 if (isset($res['archive_date_decision'])) {
1683 $valInstr['archive_date_decision']=$res["archive_date_decision"];
1684 }
1685 if (isset($res['archive_avis'])) {
1686 $valInstr['archive_avis']=$res["archive_avis"];
1687 }
1688 if (isset($res['archive_date_validite'])) {
1689 $valInstr['archive_date_validite']=$res["archive_date_validite"];
1690 }
1691 if (isset($res['archive_date_achevement'])) {
1692 $valInstr['archive_date_achevement']=$res["archive_date_achevement"];
1693 }
1694 if (isset($res['archive_date_chantier'])) {
1695 $valInstr['archive_date_chantier']=$res["archive_date_chantier"];
1696 }
1697 if (isset($res['archive_date_conformite'])) {
1698 $valInstr['archive_date_conformite']=$res["archive_date_conformite"];
1699 }
1700 if (isset($res['archive_incompletude'])) {
1701 $valInstr['archive_incompletude']=$res["archive_incompletude"];
1702 }
1703 if (isset($res['archive_incomplet_notifie'])) {
1704 $valInstr['archive_incomplet_notifie']=$res["archive_incomplet_notifie"];
1705 }
1706 if (isset($res['archive_evenement_suivant_tacite'])) {
1707 $valInstr['archive_evenement_suivant_tacite']=$res["archive_evenement_suivant_tacite"];
1708 }
1709 if (isset($res['archive_evenement_suivant_tacite_incompletude'])) {
1710 $valInstr['archive_evenement_suivant_tacite_incompletude']=$res["archive_evenement_suivant_tacite_incompletude"];
1711 }
1712 if (isset($res['archive_etat_pendant_incompletude'])) {
1713 $valInstr['archive_etat_pendant_incompletude']=$res["archive_etat_pendant_incompletude"];
1714 }
1715 if (isset($res['archive_date_limite_incompletude'])) {
1716 $valInstr['archive_date_limite_incompletude']=$res["archive_date_limite_incompletude"];
1717 }
1718 if (isset($res['archive_delai_incompletude'])) {
1719 $valInstr['archive_delai_incompletude']=$res["archive_delai_incompletude"];
1720 }
1721 if (isset($res['archive_autorite_competente'])) {
1722 $valInstr['archive_autorite_competente']=$res["archive_autorite_competente"];
1723 }
1724 }
1725 }
1726
1727 // Fichier requis
1728 require_once '../obj/instruction.class.php';
1729
1730 // Création d'un nouveau dossier
1731 $instruction = new instruction("]",$db,$DEBUG);
1732 $instruction->valF = "";
1733 if ($instruction->ajouter($valInstr, $db, $DEBUG) === false) {
1734 // Suppression des messages valides puisque erreur
1735 $this->msg = '';
1736 $this -> addToMessage($instruction->msg);
1737 $this -> addToMessage(_("Une erreur s'est produite lors de la creation du recepisse"));
1738 $this->f->addToLog(__METHOD__."() : ERROR - Impossible d'ajouter l'instruction.", DEBUG_MODE);
1739 return false;
1740 }
1741
1742 // Finalisation du document
1743 $_GET['obj']='instruction';
1744 $_GET['idx']=$instruction->valF[$instruction->clePrimaire];
1745 $instruction_final = new instruction($_GET['idx'],$db,$DEBUG);
1746 if($instruction_final->getVal('lettretype') != "") {
1747 // On se met en contexte de l'action 100 finaliser
1748 $instruction_final->setParameter('maj',100);
1749 // On finalise l'événement d'instruction
1750 $res = $instruction_final->finalize();
1751 if ($res === false) {
1752 $this -> addToMessage($instruction_final->msg);
1753 $this->f->addToLog(__METHOD__."() : ERROR - Impossible de finaliser l'instruction.", DEBUG_MODE);
1754 return false;
1755 }
1756 }
1757
1758 // Mise à jour de la demande
1759 $this->valF['instruction_recepisse'] = $instruction->valF['instruction'];
1760 $this->valF['date_demande'] = $this->dateDBToForm($this->valF['date_demande']);
1761 $demande_instance = new demande($this->valF['demande'], $db, $DEBUG);
1762 if ($demande_instance->modifier($this->valF, $db, $DEBUG) === false) {
1763 $this -> addToMessage($demande_instance->msg);
1764 $this->f->addToLog(__METHOD__."() : ERROR - Impossible de modifier la demande.", DEBUG_MODE);
1765 return false;
1766 }
1767
1768 // Si l'option d'accès au portail citoyen est activée
1769 if ($this->f->is_option_citizen_access_portal_enabled() === true) {
1770 // Met à jour la clé d'accès au portail citoyen dans le dossier
1771 // d'autorisation
1772 $inst_da = $this->get_inst_dossier_autorisation($this->valF['dossier_autorisation']);
1773 $update = $inst_da->update_citizen_access_key();
1774 //
1775 if ($update !== true) {
1776 //
1777 $this->addToMessage(_("La cle d'acces au portail citoyen n'a pas pu etre generee."));
1778 return false;
1779 }
1780 }
1781
1782 // Affichage du récépissé de la demande
1783 $this -> addToMessage("<br/><a
1784 class='lien' id='link_demande_recepisse'
1785 title=\""._("Telecharger le recepisse de la demande")."\"
1786 href='../scr/form.php?obj=demande&amp;action=100&amp;idx=".
1787 $this->valF[$this->clePrimaire]."' target='_blank'>
1788 <span
1789 class=\"om-icon om-icon-16 om-icon-fix pdf-16\"
1790 title=\""._("Telecharger le recepisse de la demande")."\">".
1791 _("Telecharger le recepisse de la demande").
1792 "</span>".
1793 _("Telecharger le recepisse de la demande")."
1794 </a><br/>");
1795 }
1796
1797 // DIGITALIZATION
1798 // Si le dossier_instruction existe et que l'option est activée
1799 if ($this->f->is_option_digitalization_folder_enabled() === true
1800 && isset($this->valF['dossier_instruction'])
1801 && $this->valF['dossier_instruction'] !== "" ) {
1802 // Instanciation du dossier d'instruction concerné par la demande
1803 // en cours d'ajout.
1804 $inst_di = $this->get_inst_dossier_instruction(
1805 $this->valF['dossier_instruction']
1806 );
1807 // Création du répertoire de numérisation pour le dossier en
1808 // question.
1809 $ret = $inst_di->create_or_touch_digitalization_folder();
1810 // Si la création a échouée
1811 if ($ret !== true) {
1812 //
1813 $this->msg = "";
1814 $this->addToMessage(_("Erreur lors de la création du répertoire de numérisation. Contactez votre administrateur."));
1815 return false;
1816 }
1817 }
1818
1819 //
1820 return true;
1821 }
1822
1823 /*Ajout du lien demande / demandeur(s)*/
1824 function triggerModifierApres($id, &$db, $val, $DEBUG){
1825 $this->listeDemandeur("demande",$this->val[array_search('demande', $this->champs)]);
1826 if ($this->insertLinkDemandeDemandeur($db, $DEBUG) == false) {
1827 return false;
1828 }
1829 $this->valIdDemandeur=$this->postedIdDemandeur;
1830
1831 //
1832 return true;
1833 }
1834
1835 /**
1836 * Gestion des liens entre les lots du DA et le nouveau dossier
1837 **/
1838 function lienLotDossierInstruction($id, $db, $val, $DEBUG) {
1839 require_once ("../obj/lot.class.php");
1840 $lot = new lot("]", $db, $DEBUG);
1841 require_once ("../obj/lien_lot_demandeur.class.php");
1842 $lld = new lien_lot_demandeur("]", $db, $DEBUG);
1843
1844
1845 $sqlLots = "SELECT * FROM ".DB_PREFIXE."lot
1846 WHERE dossier_autorisation = '".$this->valF['dossier_autorisation']."'";
1847 $resLot = $db -> query($sqlLots);
1848 $this->f->addToLog("db->query(\"".$sqlLots."\");", VERBOSE_MODE);
1849 $this->f->isDatabaseError($resLot);
1850 while ($rowLot=& $resLot->fetchRow(DB_FETCHMODE_ASSOC)){
1851 // Insertion du nouveau lot
1852 $valLot['lot'] = "";
1853 $valLot['libelle'] = $rowLot['libelle'];
1854 $valLot['dossier_autorisation'] = null;
1855 $valLot['dossier'] = $this->valF['dossier_instruction'];
1856 $lot -> ajouter($valLot, $db, $DEBUG);
1857
1858 //Insertion des liens entre dossier et les lots
1859 $sqlDemandeurs = "SELECT * FROM ".DB_PREFIXE."lien_lot_demandeur
1860 WHERE lot = ".$rowLot['lot'];
1861 $res = $db -> query($sqlDemandeurs);
1862 $this->f->addToLog(
1863 "lienLotDossierInstruction() : db->query(\"".$sqlDemandeurs."\");",
1864 VERBOSE_MODE
1865 );
1866 if ($this->f->isDatabaseError($res, true)) {
1867 return false;
1868 }
1869
1870 while ($row=& $res->fetchRow(DB_FETCHMODE_ASSOC)){
1871 $valLld["lien_lot_demandeur"] = "";
1872 $valLld["lot"]=$lot->valF['lot'];
1873 $valLld["demandeur"] = $row['demandeur'];
1874 $valLld["petitionnaire_principal"] = $row['petitionnaire_principal'];
1875 if ($lld->ajouter($valLld, $db, $DEBUG) === false) {
1876 $this->f->addToLog(__METHOD__."() : ERROR - Impossible d'ajouter le lien entre le lot et le dossier d'instruction.", DEBUG_MODE);
1877 return false;
1878 }
1879 }
1880
1881 // Récupération des données techniques du nouveau lots
1882 if($this->ajoutDonneesTechniquesLots(
1883 $id,
1884 $db,
1885 $val,
1886 $DEBUG,
1887 $rowLot['lot'],
1888 $lot->valF['lot']) === false) {
1889 $this -> addToMessage(
1890 _("Erreur lors de l'enregistrement de la demande.")." ".
1891 _("Contactez votre administrateur.")
1892 );
1893 $this->correct = false;
1894 $this->f->addToLog(
1895 "lienLotDossierInstruction() : ERROR ajoutDonneesTechniquesLots",
1896 DEBUG_MODE
1897 );
1898 return false;
1899 }
1900
1901 }
1902
1903 //
1904 return true;
1905 }
1906
1907
1908 /**
1909 * Méthode permettant d'ajouter les données techniques d'un lot.
1910 *
1911 * @param integer $id identifiant de la demande
1912 * @param database &$db handler de la base de donnée
1913 * @param array $val tableau de valeurs postées via le formulaire
1914 * @param boolean $DEBUG debug
1915 * @param integer $lotInit identifiant de lot initial
1916 * @param integer $lotDest identifiant du lot qui va recevoir les données
1917 *
1918 * @return boolean false si erreur
1919 */
1920 function ajoutDonneesTechniquesLots($id, &$db, $val, $DEBUG, $lotInit, $lotDest) {
1921 // Requete permettant de recupérer les données techniques du lot passé
1922 // en paramètre ($lotInit)
1923 $sql_get_dt = "
1924 SELECT donnees_techniques
1925 FROM ".DB_PREFIXE."donnees_techniques
1926 WHERE lot=".$lotInit;
1927 $id_dt = $this->f->db->getOne($sql_get_dt);
1928 // Si des données techniques sont liées au lots on les "copie" et
1929 // on les lies au lot passé en paramètre (lotDest)
1930 if(isset($id_dt) and !empty($id_dt)) {
1931 $this->f->addToLog(
1932 "ajoutDonneesTechniquesLots() : db->getone(\"".$sql_get_dt."\");",
1933 VERBOSE_MODE
1934 );
1935 if ($this->f->isDatabaseError($id_dt, true)){
1936 $this->f->addToLog(
1937 "ajoutDonneesTechniquesLots() : ERROR",
1938 DEBUG_MODE
1939 );
1940 return false;
1941 }
1942 require_once '../obj/donnees_techniques.class.php';
1943 $donnees_techniques = new donnees_techniques($id_dt, $db, $DEBUG);
1944
1945 // Récupération des données dans le tableau des valeurs à insérer
1946 foreach($donnees_techniques->champs as $value) {
1947 $val[$value] = $donnees_techniques->getVal($value);
1948 }
1949 // Modification du lien vers le nouveau lot
1950 $val["lot"] = $lotDest;
1951 // Identifiant du cerfa
1952 $val['cerfa'] = $this->getIdCerfa();
1953 // Ajout des données techniques
1954 if($donnees_techniques->ajouter($val, $db, $DEBUG) === false) {
1955 $this->f->addToLog(__METHOD__."() : ERROR - Impossible d'ajouter les données techniques du lot.", DEBUG_MODE);
1956 return false;
1957 }
1958 }
1959
1960 //
1961 return true;
1962 }
1963
1964 /**
1965 * Gestion des liens entre la demande et les demandeurs recemment ajoutés
1966 **/
1967 function insertLinkDemandeDemandeur($db, $DEBUG) {
1968
1969 //
1970 require_once "../obj/lien_demande_demandeur.class.php";
1971 // Comparaison de l'id petitionnaire principal
1972 if(isset($this->postedIdDemandeur['petitionnaire_principal']) AND
1973 !empty($this->postedIdDemandeur['petitionnaire_principal']) AND
1974 $this->valIdDemandeur['petitionnaire_principal'] !=
1975 $this->postedIdDemandeur['petitionnaire_principal']) {
1976 // Ajout du nouveau lien
1977 if ($this->addLinkDemandeDemandeur($this->postedIdDemandeur['petitionnaire_principal'], true, $db, $DEBUG) == false) {
1978 //
1979 return false;
1980 }
1981 if(!empty($this->valIdDemandeur['petitionnaire_principal'])) {
1982 if ($this->deleteLinkDemandeDemandeur($this->valIdDemandeur['petitionnaire_principal'], $db, $DEBUG) == false) {
1983 //
1984 return false;
1985 }
1986 }
1987 }
1988
1989 // Comparaison du delegataire
1990 if(isset($this->postedIdDemandeur['delegataire']) AND
1991 !empty($this->postedIdDemandeur['delegataire']) AND
1992 $this->valIdDemandeur['delegataire'] !=
1993 $this->postedIdDemandeur['delegataire']) {
1994 // Ajout du nouveau lien
1995 if ($this->addLinkDemandeDemandeur($this->postedIdDemandeur['delegataire'], false, $db, $DEBUG) == false) {
1996 //
1997 return false;
1998 }
1999 if(!empty($this->valIdDemandeur['delegataire'])) {
2000 if ($this->deleteLinkDemandeDemandeur($this->valIdDemandeur['delegataire'], $db, $DEBUG) == false) {
2001 //
2002 return false;
2003 }
2004 }
2005 }
2006
2007 // Comparaison des different petitionnaires
2008 if(isset($this->postedIdDemandeur['petitionnaire'])) {
2009 // Suppression des liens non valides
2010 foreach ($this->valIdDemandeur['petitionnaire'] as $petitionnaire) {
2011 if(!in_array($petitionnaire, $this->postedIdDemandeur['petitionnaire'])) {
2012 if ($this->deleteLinkDemandeDemandeur($petitionnaire, $db, $DEBUG) == false) {
2013 //
2014 return false;
2015 }
2016 }
2017 }
2018 // Ajout des nouveaux liens
2019 foreach ($this->postedIdDemandeur['petitionnaire'] as $petitionnaire) {
2020 if(!in_array($petitionnaire, $this->valIdDemandeur['petitionnaire'])) {
2021 if ($this->addLinkDemandeDemandeur($petitionnaire, false, $db, $DEBUG) == false) {
2022 //
2023 return false;
2024 }
2025 }
2026 }
2027 }
2028
2029 //
2030 return true;
2031 }
2032
2033
2034 /**
2035 * Fonction permettant d'ajouter un lien
2036 * entre la table demande et demandeur
2037 **/
2038 function addLinkDemandeDemandeur($id, $principal, $db, $DEBUG) {
2039 $lienAjout = new lien_demande_demandeur(
2040 "]",
2041 $db,
2042 $DEBUG);
2043 $lien = array('lien_demande_demandeur' => "",
2044 'petitionnaire_principal' => (($principal)?"t":"f"),
2045 'demande' => $this->valF['demande'],
2046 'demandeur' => $id);
2047 if ($lienAjout->ajouter($lien, $db, $DEBUG) === false) {
2048 $this->f->addToLog(__METHOD__."() : ERROR - Impossible d'ajouter le lien entre la demande et le demandeur.", DEBUG_MODE);
2049 return false;
2050 }
2051
2052 //
2053 return true;
2054 }
2055
2056 /**
2057 * Fonction permettant de supprimer un lien
2058 * entre la table demande et demandeur
2059 **/
2060 function deleteLinkDemandeDemandeur($id, $db, $DEBUG) {
2061 // Suppression
2062 $sql = "DELETE FROM ".DB_PREFIXE."lien_demande_demandeur ".
2063 "WHERE demande=".$this->valF['demande'].
2064 " AND demandeur=".$id;
2065 // Execution de la requete de suppression de l'objet
2066 $res = $db->query($sql);
2067 // Logger
2068 $this->f->addToLog("deleteLinkDemandeDemandeur(): db->query(\"".$sql."\");", VERBOSE_MODE);
2069 if ($this->f->isDatabaseError($res, true)){
2070 return false;
2071 }
2072
2073 //
2074 return true;
2075 }
2076
2077 /*
2078 * Teste si le lien entre une demande et un demandeur existe
2079 * */
2080 function isLinkDemandeDemandeurExist($idDemandeur) {
2081 $sql = "SELECT count(*)
2082 FROM ".DB_PREFIXE."lien_demande_demandeur
2083 WHERE demande = ".$this->valF['demande'].
2084 "AND demandeur = ".$idDemandeur;
2085 $count = $this->f->db->getOne($sql);
2086 $this->f->addToLog("isLinkDemandeDemandeurExist() : db->getone(\"".$sql."\");", VERBOSE_MODE);
2087 $this->f->isDatabaseError($count);
2088 if ($count === 0) {
2089 $this->f->addToLog("isLinkDemandeDemandeurExist() : db->getone(\"".$sql."\"); 0 values", VERBOSE_MODE);
2090 return false;
2091 } else {
2092 return true;
2093 }
2094
2095 }
2096
2097 /**
2098 * Methode de recupération des valeurs postées
2099 **/
2100 function getPostedValues() {
2101 // Récupération des demandeurs dans POST
2102 if ($this->f->get_submitted_post_value('petitionnaire_principal') !== null OR
2103 $this->f->get_submitted_post_value('delegataire') !== null OR
2104 $this->f->get_submitted_post_value('petitionnaire') !== null) {
2105 if ($this->f->get_submitted_post_value('petitionnaire_principal') !== null AND
2106 $this->f->get_submitted_post_value('petitionnaire_principal') != '') {
2107 $this->postedIdDemandeur['petitionnaire_principal'] = $this->f->get_submitted_post_value('petitionnaire_principal');
2108 }
2109 if ($this->f->get_submitted_post_value('delegataire') !== null AND
2110 $this->f->get_submitted_post_value('delegataire') != '') {
2111 $this->postedIdDemandeur['delegataire'] = $this->f->get_submitted_post_value('delegataire');
2112 }
2113 if ($this->f->get_submitted_post_value('petitionnaire') !== null AND
2114 $this->f->get_submitted_post_value('petitionnaire') != '') {
2115 $this->postedIdDemandeur['petitionnaire'] = $this->f->get_submitted_post_value('petitionnaire');
2116 }
2117 }
2118 }
2119
2120 /**
2121 * Méthode permettant de récupérer les id des demandeurs liés à la table
2122 * liée passée en paramètre
2123 *
2124 * @param string $from Table liée : "demande", "dossier", dossier_autorisation"
2125 * @param string $id Identifiant (clé primaire de la table liée en question)
2126 */
2127 function listeDemandeur($from, $id) {
2128 // Récupération des demandeurs de la base
2129 $sql = "SELECT demandeur.demandeur,
2130 demandeur.type_demandeur,
2131 lien_".$from."_demandeur.petitionnaire_principal
2132 FROM ".DB_PREFIXE."lien_".$from."_demandeur
2133 INNER JOIN ".DB_PREFIXE."demandeur
2134 ON demandeur.demandeur=lien_".$from."_demandeur.demandeur
2135 WHERE ".$from." = '".$id."'";
2136 $res = $this->f->db->query($sql);
2137 $this->f->addToLog("listeDemandeur(): db->query(\"".$sql."\")", VERBOSE_MODE);
2138 $this->f->isDatabaseError($res);
2139 // Stockage du résultat dans un tableau
2140 while ($row=& $res->fetchRow(DB_FETCHMODE_ASSOC)){
2141 if ($row['petitionnaire_principal'] == 't' AND
2142 $row['type_demandeur']=="petitionnaire") {
2143 $this->valIdDemandeur['petitionnaire_principal']=$row['demandeur'];
2144 } elseif ($row['petitionnaire_principal'] == 'f' AND
2145 $row['type_demandeur']=="petitionnaire"){
2146 $this->valIdDemandeur['petitionnaire'][]=$row['demandeur'];
2147 } elseif ($row['type_demandeur']=="delegataire"){
2148 $this->valIdDemandeur['delegataire']=$row['demandeur'];
2149 }
2150 }
2151 }
2152
2153
2154 /**
2155 * Surcharge du bouton retour afin de retourner sur la recherche de dossiers
2156 * d'instruction existant
2157 */
2158 function retour($premier = 0, $recherche = "", $tricol = "") {
2159
2160 echo "\n<a class=\"retour\" ";
2161 echo "href=\"";
2162 //
2163 if($this->getParameter("idx_dossier") != "") {
2164 echo "tab.php?";
2165 echo "obj=recherche_dossier";
2166
2167 } else {
2168 if($this->getParameter("retour")=="form" AND !($this->getParameter("validation")>0 AND $this->getParameter("maj")==2 AND $this->correct)) {
2169 echo "form.php?";
2170 } else {
2171 echo "tab.php?";
2172 }
2173 echo "obj=".get_class($this);
2174 if($this->getParameter("retour")=="form") {
2175 echo "&amp;idx=".$this->getParameter("idx");
2176 echo "&amp;idz=".$this->getParameter("idz");
2177 echo "&amp;action=3";
2178 }
2179 }
2180 echo "&amp;premier=".$this->getParameter("premier");
2181 echo "&amp;tricol=".$this->getParameter("tricol");
2182 echo "&amp;recherche=".$this->getParameter("recherche");
2183 echo "&amp;selectioncol=".$this->getParameter("selectioncol");
2184 echo "&amp;advs_id=".$this->getParameter("advs_id");
2185 echo "&amp;valide=".$this->getParameter("valide");
2186 //
2187 echo "\"";
2188 echo ">";
2189 //
2190 echo _("Retour");
2191 //
2192 echo "</a>\n";
2193
2194 }
2195
2196
2197 /**
2198 * Cette méthode permet d'afficher des informations spécifiques dans le
2199 * formulaire de l'objet
2200 *
2201 * @param integer $maj Mode de mise à jour
2202 */
2203 function formSpecificContent($maj) {
2204
2205 /**
2206 * Gestion du bloc des demandeurs
2207 */
2208 // Si le mode est (modification ou suppression ou consultation) ET que
2209 // le formulaire n'est pas correct (c'est-à-dire que le formulaire est
2210 // actif)
2211 if (!$this->correct AND $maj != 0) {
2212 // Alors on récupère les demandeurs dans la table lien pour
2213 // affectation des résultats dans this->valIdDemandeur
2214 $this->listeDemandeur("demande", $this->val[array_search('demande', $this->champs)]);
2215 }
2216
2217 // Si le mode est (ajout ou modification) ET que le formulaire n'est pas
2218 // correct (c'est-à-dire que le formulaire est actif)
2219 if ($maj < 2 AND !$this->correct) {
2220 // Alors on positionne le marqueur linkable a true qui permet
2221 // d'afficher ou non les actions de gestion des demandeurs
2222 $linkable = true;
2223 } else {
2224 // Sinon on positionne le marqueur linkable a false qui permet
2225 // d'afficher ou non les actions de gestion des demandeurs
2226 $linkable = false;
2227 }
2228
2229 // Affichage des demandeurs et des actions
2230 // Conteneur de la listes des demandeurs
2231 echo "<div id=\"liste_demandeur\" class=\"demande_hidden_bloc col_12\">";
2232 echo "<fieldset class=\"cadre ui-corner-all ui-widget-content\">";
2233 echo " <legend class=\"ui-corner-all ui-widget-content ui-state-active\">"
2234 ._("Petitionnaire")."</legend>";
2235 // Si des demandeurs sont liés à la demande
2236 require_once "../obj/petitionnaire.class.php";
2237 require_once "../obj/delegataire.class.php";
2238 // Affichage du bloc pétitionnaire principal / délégataire
2239 // L'ID DU DIV SUIVANT EST NECESSAIRE AU BON FONCTIONNEMENT DU JS
2240 echo "<div id=\"petitionnaire_principal_delegataire\">";
2241 // Affichage de la synthèse
2242 if (isset ($this->valIdDemandeur["petitionnaire_principal"]) AND
2243 !empty($this->valIdDemandeur["petitionnaire_principal"])) {
2244 $demandeur = new petitionnaire(
2245 $this->valIdDemandeur["petitionnaire_principal"],
2246 $this->f->db,false);
2247 $demandeur -> afficherSynthese("petitionnaire_principal", $linkable);
2248 $demandeur -> __destruct();
2249 } elseif ( isset ($this->postedIdDemandeur["petitionnaire_principal"]) AND
2250 !empty($this->postedIdDemandeur["petitionnaire_principal"]) ) {
2251 $demandeur = new petitionnaire(
2252 $this->postedIdDemandeur["petitionnaire_principal"],
2253 $this->f->db,false);
2254 $demandeur -> afficherSynthese("petitionnaire_principal", $linkable);
2255 $demandeur -> __destruct();
2256 }
2257 // Si en édition de formulaire
2258 if($maj < 2) {
2259 // Bouton d'ajout du pétitionnaire principal
2260 // L'ID DE L'INPUT SUIVANT EST NECESSAIRE AU BON FONCTIONNEMENT DU JS
2261 echo "<span id=\"add_petitionnaire_principal\"
2262 class=\"om-form-button add-16\">".
2263 _("Saisir le petitionnaire principal").
2264 "</span>";
2265 }
2266 // Bouton d'ajout du delegataire
2267 // L'ID DU DIV ET DE L'INPUT SUIVANT EST NECESSAIRE AU BON FONCTIONNEMENT DU JS
2268 echo "<div id=\"delegataire\">";
2269 // Affichage de la synthèse
2270 if (isset ($this->valIdDemandeur["delegataire"]) AND
2271 !empty($this->valIdDemandeur["delegataire"])) {
2272 $demandeur = new delegataire($this->valIdDemandeur["delegataire"],
2273 $this->f->db,false);
2274 $demandeur -> afficherSynthese("delegataire", $linkable);
2275 $demandeur -> __destruct();
2276 } elseif ( isset ($this->postedIdDemandeur["delegataire"]) AND
2277 !empty($this->postedIdDemandeur["delegataire"]) ) {
2278
2279 $demandeur = new delegataire($this->postedIdDemandeur["delegataire"],
2280 $this->f->db,false);
2281 $demandeur -> afficherSynthese("delegataire", $linkable);
2282 $demandeur -> __destruct();
2283 }
2284 if($maj < 2) {
2285 echo "<span id=\"add_delegataire\"
2286 class=\"om-form-button add-16\">".
2287 _("Saisir un autre correspondant").
2288 "</span>";
2289 }
2290 echo "</div>";
2291 echo "<div class=\"both\"></div>";
2292 echo "</div>";
2293 // Bloc des pétitionnaires secondaires
2294 // L'ID DU DIV SUIVANT EST NECESSAIRE AU BON FONCTIONNEMENT DU JS
2295 echo "<div id=\"listePetitionnaires\">";
2296
2297 // Affichage de la synthèse
2298 if (isset ($this->valIdDemandeur["petitionnaire"]) AND
2299 !empty($this->valIdDemandeur["petitionnaire"])) {
2300
2301 foreach ($this->valIdDemandeur["petitionnaire"] as $petitionnaire) {
2302 $demandeur = new petitionnaire($petitionnaire,
2303 $this->f->db,false);
2304 $demandeur -> afficherSynthese("petitionnaire", $linkable);
2305 $demandeur -> __destruct();
2306 }
2307
2308 } elseif ( isset ($this->postedIdDemandeur["petitionnaire"]) AND
2309 !empty($this->postedIdDemandeur["petitionnaire"]) ) {
2310 foreach ($this->postedIdDemandeur["petitionnaire"] as $petitionnaire) {
2311 $demandeur = new petitionnaire($petitionnaire,
2312 $this->f->db,false);
2313 $demandeur -> afficherSynthese("petitionnaire", $linkable);
2314 $demandeur -> __destruct();
2315 }
2316 }
2317 if ($maj < 2) {
2318 // L'ID DE L'INPUT SUIVANT EST NECESSAIRE AU BON FONCTIONNEMENT DU JS
2319 echo "<span id=\"add_petitionnaire\"
2320 class=\"om-form-button add-16\">".
2321 _("Ajouter un petitionnaire")
2322 ."</span>";
2323 }
2324 echo "</div>";
2325 echo "</fieldset>";
2326 // Champ flag permettant de récupérer la valeur de l'option sig pour
2327 // l'utiliser en javascript, notamment lors du chargement de l'interface
2328 // pour les références cadastrales
2329 // XXX Si un widget pour les références cadastrales existait, il n'y
2330 // aurait pas besoin de faire cela
2331 echo "<input id='option_sig' type='hidden' value='".$this->f->getParameter("option_sig")."' name='option_sig'>";
2332 echo "</div>";
2333 }
2334
2335 // {{{
2336
2337 // getter
2338 function getValIdDemandeur() {
2339 return $this->valIdDemandeur;
2340 }
2341 // setter
2342 function setValIdDemandeur($valIdDemandeur) {
2343 $this->valIdDemandeur = $valIdDemandeur;
2344 }
2345
2346 //Supression du lien entre la demandeur et le(s) demandeur(s)
2347 function triggerSupprimer($id, &$db, $val, $DEBUG){
2348
2349 //Création de la requête
2350 $sql = "DELETE FROM
2351 ".DB_PREFIXE."lien_demande_demandeur
2352 WHERE
2353 demande = $id";
2354
2355 $res = $this->f->db->query($sql);
2356 $this->f->addToLog("triggerSupprimer() : db->query(\"".$sql."\")");
2357 if ($this->f->isDatabaseError($res, true)) {
2358 return false;
2359 }
2360
2361 //
2362 return true;
2363 }
2364
2365 // }}}
2366
2367 /**
2368 * Récupère le champ "qualification" du type de la demande
2369 * @param integer $demande_type Identifiant du type de la demande
2370 * @return boolean
2371 */
2372 function get_qualification($demande_type) {
2373
2374 // Initialise le résultat
2375 $qualification = "";
2376
2377 // Si la condition existe
2378 if (is_numeric($demande_type)) {
2379
2380 // Requête SQL
2381 $sql = "SELECT qualification
2382 FROM ".DB_PREFIXE."demande_type
2383 WHERE demande_type = $demande_type";
2384 $qualification = $this->db->getOne($sql);
2385 $this->f->addToLog("get_qualification() : db->getOne(\"".$sql."\")",
2386 VERBOSE_MODE);
2387 $this->f->isDatabaseError($qualification);
2388 }
2389
2390 // Retourne le résultat
2391 return $qualification;
2392 }
2393
2394 /**
2395 * Récupère les champs archive_* d'une instruction
2396 * @param string $dossier L'identifiant du dossier d'instruction
2397 */
2398 public function getArchiveInstruction($dossierID){
2399
2400 //On récupère les données du dernier DI accordé
2401 $sql = "SELECT dossier.delai, dossier.accord_tacite, dossier.etat,
2402 dossier.avis_decision,
2403 to_char(dossier.date_complet, 'DD/MM/YYYY') as date_complet,
2404 to_char(dossier.date_depot, 'DD/MM/YYYY') as date_depot,
2405 to_char(dossier.date_dernier_depot, 'DD/MM/YYYY') as date_dernier_depot,
2406 to_char(dossier.date_rejet, 'DD/MM/YYYY') as date_rejet,
2407 to_char(dossier.date_limite, 'DD/MM/YYYY') as date_limite,
2408 to_char(dossier.date_notification_delai, 'DD/MM/YYYY') as date_notification_delai,
2409 to_char(dossier.date_decision, 'DD/MM/YYYY') as date_decision,
2410 to_char(dossier.date_validite, 'DD/MM/YYYY') as date_validite,
2411 to_char(dossier.date_achevement, 'DD/MM/YYYY') as date_achevement,
2412 to_char(dossier.date_chantier, 'DD/MM/YYYY') as date_chantier,
2413 to_char(dossier.date_conformite, 'DD/MM/YYYY') as date_conformite,
2414 dossier.incompletude,
2415 dossier.evenement_suivant_tacite, dossier.evenement_suivant_tacite_incompletude,
2416 dossier.etat_pendant_incompletude,
2417 to_char(dossier.date_limite_incompletude, 'DD/MM/YYYY') as date_limite_incompletude,
2418 dossier.delai_incompletude, dossier.autorite_competente, dossier.duree_validite
2419 ,dossier.dossier, dossier.incomplet_notifie
2420 FROM ".DB_PREFIXE."dossier
2421 LEFT JOIN ".DB_PREFIXE."avis_decision
2422 ON dossier.avis_decision = avis_decision.avis_decision
2423 WHERE dossier.avis_decision IS NOT NULL AND avis_decision.typeavis = 'F'
2424 AND dossier.dossier_autorisation = (
2425 SELECT dossier_autorisation.dossier_autorisation
2426 FROM ".DB_PREFIXE."dossier_autorisation
2427 LEFT JOIN ".DB_PREFIXE."dossier
2428 ON dossier_autorisation.dossier_autorisation = dossier.dossier_autorisation
2429 WHERE dossier = '".$dossierID."')
2430 ORDER BY dossier.version DESC";
2431
2432 $res = $this->db->query($sql);
2433 $this->addToLog("updateArchiveInstruction(): db->query(\"".$sql."\");", VERBOSE_MODE);
2434 if ($this->f->isDatabaseError($res, true)) {
2435 return false;
2436 }
2437
2438 //Un des dosssiers d'instruction a été accordé, on récupère ses données
2439 if ( $res->numrows() != 0 ){
2440
2441 $row=& $res->fetchRow(DB_FETCHMODE_ASSOC);
2442 require_once "../obj/instruction.class.php";
2443 $instruction = new instruction("]",$this->db,DEBUG);
2444
2445 $instruction->setParameter("maj", 1);
2446 $instruction->updateArchiveData($row);
2447 return $instruction->valF;
2448 }
2449 //Sinon, on prend les données du P0, si ce n'est pas un P0
2450 else {
2451 $sql = "SELECT dossier.delai, dossier.accord_tacite, dossier.etat,
2452 dossier.avis_decision, dossier.date_complet, dossier.date_dernier_depot,
2453 dossier.date_rejet, dossier.date_limite, dossier.date_notification_delai,
2454 dossier.date_decision, dossier.date_validite, dossier.date_achevement,
2455 dossier.date_chantier, dossier.date_conformite, dossier.incompletude,
2456 dossier.evenement_suivant_tacite, dossier.evenement_suivant_tacite_incompletude,
2457 dossier.etat_pendant_incompletude, dossier.date_limite_incompletude,
2458 dossier.delai_incompletude, dossier.autorite_competente, dossier.duree_validite,
2459 dossier.dossier, dossier.incomplet_notifie, dossier.date_depot
2460 FROM ".DB_PREFIXE."dossier
2461 LEFT JOIN ".DB_PREFIXE."dossier_instruction_type
2462 ON dossier.dossier_instruction_type = dossier_instruction_type.dossier_instruction_type
2463 WHERE dossier.dossier_autorisation = (
2464 SELECT dossier_autorisation.dossier_autorisation
2465 FROM ".DB_PREFIXE."dossier_autorisation
2466 LEFT JOIN ".DB_PREFIXE."dossier
2467 ON dossier_autorisation.dossier_autorisation = dossier.dossier_autorisation
2468 WHERE dossier = '".$dossierID."')
2469 AND dossier_instruction_type.code = 'P'
2470 ORDER BY dossier.version DESC";
2471 $res = $this->db->query($sql);
2472 $this->addToLog("updateArchiveInstruction(): db->query(\"".$sql."\");", VERBOSE_MODE);
2473 if ($this->f->isDatabaseError($res, true)) {
2474 return false;
2475 }
2476
2477 //On est pas dans le cas d'un dépôt d'un P0
2478 if ( $res->numrows() != 0 ){
2479 $row=& $res->fetchRow(DB_FETCHMODE_ASSOC);
2480 require_once "../obj/instruction.class.php";
2481 $instruction = new instruction("]",$this->db,DEBUG);
2482 $instruction->setParameter("maj", 1);
2483 $instruction->updateArchiveData($row);
2484 return $instruction->valF;
2485 }
2486 }
2487 }
2488
2489 /**
2490 * Cette methode permet d'afficher le bouton de validation du formulaire
2491 *
2492 * @param integer $maj Mode de mise a jour
2493 * @return void
2494 */
2495 function bouton($maj) {
2496
2497 if (!$this->correct
2498 && $this->checkActionAvailability() == true) {
2499 //
2500 switch($maj) {
2501 case 0 :
2502 $bouton = _("Ajouter");
2503 break;
2504 case 1 :
2505 $bouton = _("Modifier");
2506 break;
2507 case 2 :
2508 $bouton = _("Supprimer");
2509 break;
2510 default :
2511 // Actions specifiques
2512 if ($this->get_action_param($maj, "button") != null) {
2513 //
2514 $bouton = $this->get_action_param($maj, "button");
2515 } else {
2516 //
2517 $bouton = _("Valider");
2518 }
2519 break;
2520 }
2521 //
2522 $params = array(
2523 "value" => $bouton,
2524 "name" => "submit",
2525 "onclick"=>"return getDataFieldReferenceCadastrale();",
2526 );
2527 //
2528 $this->f->layout->display_form_button($params);
2529 }
2530
2531 }
2532
2533 /**
2534 * Récupère l'instance de la classe taxe_amenagement.
2535 *
2536 * @param integer $om_collectivite La collectivité
2537 *
2538 * @return object
2539 */
2540 function get_inst_taxe_amenagement_by_om_collectivite($om_collectivite) {
2541 //
2542 if (is_null($this->inst_taxe_amenagement)) {
2543 //
2544 $taxe_amenagement = $this->get_taxe_amenagement_by_om_collectivite($om_collectivite);
2545 //
2546 require_once "../obj/taxe_amenagement.class.php";
2547 $this->inst_taxe_amenagement = new taxe_amenagement($taxe_amenagement);
2548 }
2549 //
2550 return $this->inst_taxe_amenagement;
2551 }
2552
2553 /**
2554 * Récupère l'identifiant de la taxe d'aménagement par rapport à la collectivité.
2555 *
2556 * @param integer $om_collectivite La collectivité
2557 *
2558 * @return integer
2559 */
2560 function get_taxe_amenagement_by_om_collectivite($om_collectivite) {
2561 //
2562 $sql = "SELECT taxe_amenagement
2563 FROM ".DB_PREFIXE."taxe_amenagement
2564 WHERE om_collectivite = ".intval($om_collectivite);
2565 $collectivite = $this->f->db->getOne($sql);
2566 $this->addToLog(__METHOD__."(): db->getone(\"".$sql."\")", VERBOSE_MODE);
2567 $this->f->isDatabaseError($collectivite);
2568
2569 //
2570 return $collectivite;
2571 }
2572
2573
2574 /**
2575 * Récupère l'instance du dossier d'autorisation.
2576 *
2577 * @param string $dossier_autorisation Identifiant du dossier d'autorisation.
2578 *
2579 * @return object
2580 */
2581 private function get_inst_dossier_autorisation($dossier_autorisation = null) {
2582 //
2583 return $this->get_inst_common("dossier_autorisation", $dossier_autorisation);
2584 }
2585
2586
2587 }// fin classe
2588 ?>

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26