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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 4031 - (show annotations)
Thu Apr 21 17:09:11 2016 UTC (8 years, 9 months ago) by jymadier
File size: 113749 byte(s)
Suppression d'un var_dump

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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26