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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 3876 - (show annotations)
Thu Apr 7 13:25:59 2016 UTC (8 years, 9 months ago) by nmeucci
File size: 113789 byte(s)
* Ajout du log des événements d'instruction dans leur DI

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 var_dump(__LINE__);
1436 $this -> addToMessage(
1437 _("Erreur lors de l'enregistrement de la demande.")." ".
1438 _("Contactez votre administrateur.")
1439 );
1440 $this->correct = false;
1441 return false;
1442 }
1443 } else {
1444 $sqlIdDTDA = "SELECT donnees_techniques
1445 FROM ".DB_PREFIXE."donnees_techniques
1446 WHERE dossier_autorisation='".
1447 $this->valF['dossier_autorisation']."'";
1448 $idDTDA = $this->db->getOne($sqlIdDTDA);
1449 $this->addToLog(
1450 "triggerAjouter(): db->getOne(\"".$sqlIdDTDA."\")",
1451 VERBOSE_MODE
1452 );
1453 if ($this->f->isDatabaseError($idDTDA, true)) {
1454 return false;
1455 }
1456
1457 $this->DTDA = null;
1458 if ($idDTDA!=="" && is_numeric($idDTDA)){
1459 require_once '../obj/donnees_techniques.class.php';
1460 $this->DTDA = new donnees_techniques(
1461 $idDTDA,
1462 $db,
1463 $DEBUG
1464 );
1465 $this->DTDA->setValFFromVal();
1466 }
1467 }
1468 // Enregistrement du numéro dossier existant
1469 // (il sera écrasé si un DI est créé)
1470 if ($this->getParameter("idx_dossier") != "") {
1471 $this->valF['dossier_instruction'] = $this->getParameter("idx_dossier");
1472 }
1473 // Création du dossier d'instruction
1474 if($dossier_type['dossier_instruction_type'] != null) {
1475 if($this->ajoutDossierInstruction(
1476 $id,
1477 $db,
1478 $val,
1479 $DEBUG,
1480 $dossier_type['dossier_instruction_type']
1481 ) === false ) {
1482 var_dump(__LINE__);
1483 $this -> addToMessage(
1484 _("Erreur lors de l'enregistrement de la demande.")." ".
1485 _("Contactez votre administrateur.")
1486 );
1487 $this->correct = false;
1488 return false;
1489 }
1490 // Libellé du dossier
1491 $dossier_libelle = $this->get_dossier_libelle($this->valF['dossier_instruction']);
1492 // Message de validation
1493 $this -> addToMessage(
1494 _("Creation du dossier d'instruction no")."<span id='new_di'>".$dossier_libelle."</span>"
1495 );
1496 // Lien vers le DI
1497 $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"));
1498 // Ajout du lien vers le DI dans le message de validation
1499 $this -> addToMessage(
1500 "<br/>".$link_di
1501 );
1502 // Attribut permettant de définir si un dossier a été créé.
1503 $this->ajoutDI = true;
1504 }
1505
1506 /*Ajout de l'arrondissement à partir du code postal*/
1507 if ( !is_null($this->valF["terrain_adresse_code_postal"]) && is_numeric($this->valF["terrain_adresse_code_postal"]) ){
1508
1509 $this->valF["arrondissement"] = $this->getArrondissement($this->valF["terrain_adresse_code_postal"]);
1510 }
1511 }
1512
1513 //
1514 return true;
1515 }
1516
1517 /**
1518 * Ajout des délégataires et pétitionnaires
1519 **/
1520 function triggerAjouterApres($id, &$db, $val, $DEBUG){
1521
1522 if ($this->insertLinkDemandeDemandeur($db, $DEBUG) == false) {
1523 return false;
1524 }
1525
1526 // Ajout des lliens entre dossier_autorisation et demandeur
1527 if(!empty($this->valF['dossier_autorisation'])) {
1528 if ($this->ajoutLiensDossierAutorisation($id, $db, $val, $DEBUG) == false) {
1529 return false;
1530 }
1531 }
1532 // Ajout des lliens entre dossier et demandeur
1533 if($this->ajoutDI === TRUE) {
1534 if ($this->ajoutLiensDossierInstruction($id, $db, $val, $DEBUG) == false) {
1535 return false;
1536 }
1537 }
1538
1539 // Duplication des lots (et leurs données techniques) et
1540 // liaison au nouveau dossier_d'instruction
1541 if(!empty($this->valF['dossier_autorisation']) AND $val['dossier_autorisation'] != "" ) {
1542 $this->lienLotDossierInstruction($id, $db, $val, $DEBUG);
1543 }
1544
1545 /*Création du lien de téléchargement de récépissé de demande*/
1546 if ( $this->valF['demande_type'] != "" && is_numeric($this->valF['demande_type'])
1547 && isset($this->valF['dossier_instruction']) && $this->valF['dossier_instruction'] !== "" ){
1548
1549 /*Récupérer l'événement lié à ce type de demande*/
1550 $evenement = $this->getEvenement($this->valF['demande_type']);
1551
1552 /*Récupération de la lettre type de l'événement*/
1553 $lettretype = $this->f->getLettreType($evenement);
1554
1555 /*Création d'une nouvelle instruction avec cet événement*/
1556 /*Données*/
1557 $valInstr['instruction']=NULL;
1558
1559 $valInstr['destinataire']=$this->valF['dossier_instruction'];
1560 $valInstr['dossier']=$this->valF['dossier_instruction'];
1561 // Récupère la date de la demande
1562 $valInstr['date_evenement']=$this->dateDBToForm($this->valF['date_demande']);
1563 $valInstr['evenement']=$evenement;
1564 $valInstr['lettretype']=$lettretype;
1565 $valInstr['complement_om_html']="";
1566 $valInstr['complement2_om_html']="";
1567
1568 $valInstr['action']="initialisation";
1569 $valInstr['delai']="2";
1570 $valInstr['etat']="notifier";
1571 $valInstr['accord_tacite']="Oui";
1572 $valInstr['delai_notification']="1";
1573 $valInstr['archive_delai']="0";
1574 $valInstr['archive_date_complet']=NULL;
1575 $valInstr['archive_date_dernier_depot']=NULL;
1576 $valInstr['archive_date_rejet']=NULL;
1577 $valInstr['archive_date_limite']=NULL;
1578 $valInstr['archive_date_notification_delai']=NULL;
1579 $valInstr['archive_accord_tacite']="Non";
1580 $valInstr['archive_etat']="initialiser";
1581 $valInstr['archive_date_decision']=NULL;
1582 $valInstr['archive_avis']="";
1583 $valInstr['archive_date_validite']=NULL;
1584 $valInstr['archive_date_achevement']=NULL;
1585 $valInstr['archive_date_chantier']=NULL;
1586 $valInstr['archive_date_conformite']=NULL;
1587 $valInstr['archive_incompletude']=NULL;
1588 $valInstr['archive_incomplet_notifie']=NULL;
1589 $valInstr['archive_evenement_suivant_tacite']="";
1590 $valInstr['archive_evenement_suivant_tacite_incompletude']=NULL;
1591 $valInstr['archive_etat_pendant_incompletude']=NULL;
1592 $valInstr['archive_date_limite_incompletude']=NULL;
1593 $valInstr['archive_delai_incompletude']=NULL;
1594 $valInstr['archive_autorite_competente']=NULL;
1595 $valInstr['complement3_om_html']="";
1596 $valInstr['complement4_om_html']="";
1597 $valInstr['complement5_om_html']="";
1598 $valInstr['complement6_om_html']="";
1599 $valInstr['complement7_om_html']="";
1600 $valInstr['complement8_om_html']="";
1601 $valInstr['complement9_om_html']="";
1602 $valInstr['complement10_om_html']="";
1603 $valInstr['complement11_om_html']="";
1604 $valInstr['complement12_om_html']="";
1605 $valInstr['complement13_om_html']="";
1606 $valInstr['complement14_om_html']="";
1607 $valInstr['complement15_om_html']="";
1608 $valInstr['avis_decision']=NULL;
1609 $valInstr['date_finalisation_courrier']=NULL;
1610 $valInstr['date_envoi_signature']=NULL;
1611 $valInstr['date_retour_signature']=NULL;
1612 $valInstr['date_envoi_rar']=NULL;
1613 $valInstr['date_retour_rar']=NULL;
1614 $valInstr['date_envoi_controle_legalite']=NULL;
1615 $valInstr['date_retour_controle_legalite']=NULL;
1616 $valInstr['signataire_arrete']=NULL;
1617 $valInstr['numero_arrete']=NULL;
1618 $valInstr['code_barres']=NULL;
1619 $valInstr['om_fichier_instruction']=NULL;
1620 $valInstr['om_final_instruction']=NULL;
1621 $valInstr['document_numerise']=NULL;
1622 $valInstr['autorite_competente']=NULL;
1623 $valInstr['duree_validite_parametrage']="0";
1624 $valInstr['duree_validite']="0";
1625 $valInstr['date_depot']=NULL;
1626 $valInstr['om_final_instruction_utilisateur']= "f";
1627 $valInstr['created_by_commune']= "f";
1628
1629 // Récupération des champs archive si cette demande a créée un dossier
1630 // d'instruction mais pas un P0
1631 if (!is_null($this->valF['dossier_instruction']) &&
1632 $this->valF['dossier_instruction'] !== "" ){
1633
1634 // Requête
1635 $sql = "SELECT dossier_instruction_type.code
1636 FROM ".DB_PREFIXE."demande_type
1637 LEFT JOIN ".DB_PREFIXE."dossier_instruction_type
1638 ON demande_type.dossier_instruction_type = dossier_instruction_type.dossier_instruction_type
1639 WHERE demande_type.demande_type = ".$this->valF['demande_type'];
1640 $res = $db->getOne($sql);
1641 $this->addToLog("triggerajouter(): db->getOne(\"".$sql."\");", VERBOSE_MODE);
1642 if ($this->f->isDatabaseError($res, true)) {
1643 return false;
1644 }
1645
1646 // On vérifie que ce n'est pas un P0
1647 if ( strcmp($res, "P") !== 0 ){
1648
1649 $res = $this->getArchiveInstruction($this->valF['dossier_instruction']);
1650
1651 if ($res == false) {
1652 return false;
1653 }
1654
1655 if (isset($res['archive_delai'])) {
1656 $valInstr['archive_delai']=$res["archive_delai"];
1657 }
1658 if (isset($res['archive_date_complet'])) {
1659 $valInstr['archive_date_complet']=$res["archive_date_complet"];
1660 }
1661 if (isset($res['archive_date_dernier_depot'])) {
1662 $valInstr['archive_date_dernier_depot']=$res["archive_date_dernier_depot"];
1663 }
1664 if (isset($res['archive_date_rejet'])) {
1665 $valInstr['archive_date_rejet']=$res["archive_date_rejet"];
1666 }
1667 if (isset($res['archive_date_limite'])) {
1668 $valInstr['archive_date_limite']=$res["archive_date_limite"];
1669 }
1670 if (isset($res['archive_date_notification_delai'])) {
1671 $valInstr['archive_date_notification_delai']=$res["archive_date_notification_delai"];
1672 }
1673 if (isset($res['archive_accord_tacite'])) {
1674 $valInstr['archive_accord_tacite']=$res["archive_accord_tacite"];
1675 }
1676 if (isset($res['archive_etat'])) {
1677 $valInstr['archive_etat']=$res["archive_etat"];
1678 }
1679 if (isset($res['archive_date_decision'])) {
1680 $valInstr['archive_date_decision']=$res["archive_date_decision"];
1681 }
1682 if (isset($res['archive_avis'])) {
1683 $valInstr['archive_avis']=$res["archive_avis"];
1684 }
1685 if (isset($res['archive_date_validite'])) {
1686 $valInstr['archive_date_validite']=$res["archive_date_validite"];
1687 }
1688 if (isset($res['archive_date_achevement'])) {
1689 $valInstr['archive_date_achevement']=$res["archive_date_achevement"];
1690 }
1691 if (isset($res['archive_date_chantier'])) {
1692 $valInstr['archive_date_chantier']=$res["archive_date_chantier"];
1693 }
1694 if (isset($res['archive_date_conformite'])) {
1695 $valInstr['archive_date_conformite']=$res["archive_date_conformite"];
1696 }
1697 if (isset($res['archive_incompletude'])) {
1698 $valInstr['archive_incompletude']=$res["archive_incompletude"];
1699 }
1700 if (isset($res['archive_incomplet_notifie'])) {
1701 $valInstr['archive_incomplet_notifie']=$res["archive_incomplet_notifie"];
1702 }
1703 if (isset($res['archive_evenement_suivant_tacite'])) {
1704 $valInstr['archive_evenement_suivant_tacite']=$res["archive_evenement_suivant_tacite"];
1705 }
1706 if (isset($res['archive_evenement_suivant_tacite_incompletude'])) {
1707 $valInstr['archive_evenement_suivant_tacite_incompletude']=$res["archive_evenement_suivant_tacite_incompletude"];
1708 }
1709 if (isset($res['archive_etat_pendant_incompletude'])) {
1710 $valInstr['archive_etat_pendant_incompletude']=$res["archive_etat_pendant_incompletude"];
1711 }
1712 if (isset($res['archive_date_limite_incompletude'])) {
1713 $valInstr['archive_date_limite_incompletude']=$res["archive_date_limite_incompletude"];
1714 }
1715 if (isset($res['archive_delai_incompletude'])) {
1716 $valInstr['archive_delai_incompletude']=$res["archive_delai_incompletude"];
1717 }
1718 if (isset($res['archive_autorite_competente'])) {
1719 $valInstr['archive_autorite_competente']=$res["archive_autorite_competente"];
1720 }
1721 }
1722 }
1723
1724 // Fichier requis
1725 require_once '../obj/instruction.class.php';
1726
1727 // Création d'un nouveau dossier
1728 $instruction = new instruction("]",$db,$DEBUG);
1729 $instruction->valF = "";
1730 if ($instruction->ajouter($valInstr, $db, $DEBUG) === false) {
1731 // Suppression des messages valides puisque erreur
1732 $this->msg = '';
1733 $this -> addToMessage($instruction->msg);
1734 $this -> addToMessage(_("Une erreur s'est produite lors de la creation du recepisse"));
1735 $this->f->addToLog(__METHOD__."() : ERROR - Impossible d'ajouter l'instruction.", DEBUG_MODE);
1736 return false;
1737 }
1738
1739 // Finalisation du document
1740 $_GET['obj']='instruction';
1741 $_GET['idx']=$instruction->valF[$instruction->clePrimaire];
1742 $instruction_final = new instruction($_GET['idx'],$db,$DEBUG);
1743 if($instruction_final->getVal('lettretype') != "") {
1744 // On se met en contexte de l'action 100 finaliser
1745 $instruction_final->setParameter('maj',100);
1746 // On finalise l'événement d'instruction
1747 $res = $instruction_final->finalize();
1748 if ($res === false) {
1749 $this -> addToMessage($instruction_final->msg);
1750 $this->f->addToLog(__METHOD__."() : ERROR - Impossible de finaliser l'instruction.", DEBUG_MODE);
1751 return false;
1752 }
1753 }
1754
1755 // Mise à jour de la demande
1756 $this->valF['instruction_recepisse'] = $instruction->valF['instruction'];
1757 $this->valF['date_demande'] = $this->dateDBToForm($this->valF['date_demande']);
1758 $demande_instance = new demande($this->valF['demande'], $db, $DEBUG);
1759 if ($demande_instance->modifier($this->valF, $db, $DEBUG) === false) {
1760 $this -> addToMessage($demande_instance->msg);
1761 $this->f->addToLog(__METHOD__."() : ERROR - Impossible de modifier la demande.", DEBUG_MODE);
1762 return false;
1763 }
1764
1765 // Si l'option d'accès au portail citoyen est activée
1766 if ($this->f->is_option_citizen_access_portal_enabled() === true) {
1767 // Met à jour la clé d'accès au portail citoyen dans le dossier
1768 // d'autorisation
1769 $inst_da = $this->get_inst_dossier_autorisation($this->valF['dossier_autorisation']);
1770 $update = $inst_da->update_citizen_access_key();
1771 //
1772 if ($update !== true) {
1773 //
1774 $this->addToMessage(_("La cle d'acces au portail citoyen n'a pas pu etre generee."));
1775 return false;
1776 }
1777 }
1778
1779 // Affichage du récépissé de la demande
1780 $this -> addToMessage("<br/><a
1781 class='lien' id='link_demande_recepisse'
1782 title=\""._("Telecharger le recepisse de la demande")."\"
1783 href='../scr/form.php?obj=demande&amp;action=100&amp;idx=".
1784 $this->valF[$this->clePrimaire]."' target='_blank'>
1785 <span
1786 class=\"om-icon om-icon-16 om-icon-fix pdf-16\"
1787 title=\""._("Telecharger le recepisse de la demande")."\">".
1788 _("Telecharger le recepisse de la demande").
1789 "</span>".
1790 _("Telecharger le recepisse de la demande")."
1791 </a><br/>");
1792 }
1793
1794 // DIGITALIZATION
1795 // Si le dossier_instruction existe et que l'option est activée
1796 if ($this->f->is_option_digitalization_folder_enabled() === true
1797 && isset($this->valF['dossier_instruction'])
1798 && $this->valF['dossier_instruction'] !== "" ) {
1799 // Instanciation du dossier d'instruction concerné par la demande
1800 // en cours d'ajout.
1801 $inst_di = $this->get_inst_dossier_instruction(
1802 $this->valF['dossier_instruction']
1803 );
1804 // Création du répertoire de numérisation pour le dossier en
1805 // question.
1806 $ret = $inst_di->create_or_touch_digitalization_folder();
1807 // Si la création a échouée
1808 if ($ret !== true) {
1809 //
1810 $this->msg = "";
1811 $this->addToMessage(_("Erreur lors de la création du répertoire de numérisation. Contactez votre administrateur."));
1812 return false;
1813 }
1814 }
1815
1816 //
1817 return true;
1818 }
1819
1820 /*Ajout du lien demande / demandeur(s)*/
1821 function triggerModifierApres($id, &$db, $val, $DEBUG){
1822 $this->listeDemandeur("demande",$this->val[array_search('demande', $this->champs)]);
1823 if ($this->insertLinkDemandeDemandeur($db, $DEBUG) == false) {
1824 return false;
1825 }
1826 $this->valIdDemandeur=$this->postedIdDemandeur;
1827
1828 //
1829 return true;
1830 }
1831
1832 /**
1833 * Gestion des liens entre les lots du DA et le nouveau dossier
1834 **/
1835 function lienLotDossierInstruction($id, $db, $val, $DEBUG) {
1836 require_once ("../obj/lot.class.php");
1837 $lot = new lot("]", $db, $DEBUG);
1838 require_once ("../obj/lien_lot_demandeur.class.php");
1839 $lld = new lien_lot_demandeur("]", $db, $DEBUG);
1840
1841
1842 $sqlLots = "SELECT * FROM ".DB_PREFIXE."lot
1843 WHERE dossier_autorisation = '".$this->valF['dossier_autorisation']."'";
1844 $resLot = $db -> query($sqlLots);
1845 $this->f->addToLog("db->query(\"".$sqlLots."\");", VERBOSE_MODE);
1846 $this->f->isDatabaseError($resLot);
1847 while ($rowLot=& $resLot->fetchRow(DB_FETCHMODE_ASSOC)){
1848 // Insertion du nouveau lot
1849 $valLot['lot'] = "";
1850 $valLot['libelle'] = $rowLot['libelle'];
1851 $valLot['dossier_autorisation'] = null;
1852 $valLot['dossier'] = $this->valF['dossier_instruction'];
1853 $lot -> ajouter($valLot, $db, $DEBUG);
1854
1855 //Insertion des liens entre dossier et les lots
1856 $sqlDemandeurs = "SELECT * FROM ".DB_PREFIXE."lien_lot_demandeur
1857 WHERE lot = ".$rowLot['lot'];
1858 $res = $db -> query($sqlDemandeurs);
1859 $this->f->addToLog(
1860 "lienLotDossierInstruction() : db->query(\"".$sqlDemandeurs."\");",
1861 VERBOSE_MODE
1862 );
1863 if ($this->f->isDatabaseError($res, true)) {
1864 return false;
1865 }
1866
1867 while ($row=& $res->fetchRow(DB_FETCHMODE_ASSOC)){
1868 $valLld["lien_lot_demandeur"] = "";
1869 $valLld["lot"]=$lot->valF['lot'];
1870 $valLld["demandeur"] = $row['demandeur'];
1871 $valLld["petitionnaire_principal"] = $row['petitionnaire_principal'];
1872 if ($lld->ajouter($valLld, $db, $DEBUG) === false) {
1873 $this->f->addToLog(__METHOD__."() : ERROR - Impossible d'ajouter le lien entre le lot et le dossier d'instruction.", DEBUG_MODE);
1874 return false;
1875 }
1876 }
1877
1878 // Récupération des données techniques du nouveau lots
1879 if($this->ajoutDonneesTechniquesLots(
1880 $id,
1881 $db,
1882 $val,
1883 $DEBUG,
1884 $rowLot['lot'],
1885 $lot->valF['lot']) === false) {
1886 $this -> addToMessage(
1887 _("Erreur lors de l'enregistrement de la demande.")." ".
1888 _("Contactez votre administrateur.")
1889 );
1890 $this->correct = false;
1891 $this->f->addToLog(
1892 "lienLotDossierInstruction() : ERROR ajoutDonneesTechniquesLots",
1893 DEBUG_MODE
1894 );
1895 return false;
1896 }
1897
1898 }
1899
1900 //
1901 return true;
1902 }
1903
1904
1905 /**
1906 * Méthode permettant d'ajouter les données techniques d'un lot.
1907 *
1908 * @param integer $id identifiant de la demande
1909 * @param database &$db handler de la base de donnée
1910 * @param array $val tableau de valeurs postées via le formulaire
1911 * @param boolean $DEBUG debug
1912 * @param integer $lotInit identifiant de lot initial
1913 * @param integer $lotDest identifiant du lot qui va recevoir les données
1914 *
1915 * @return boolean false si erreur
1916 */
1917 function ajoutDonneesTechniquesLots($id, &$db, $val, $DEBUG, $lotInit, $lotDest) {
1918 // Requete permettant de recupérer les données techniques du lot passé
1919 // en paramètre ($lotInit)
1920 $sql_get_dt = "
1921 SELECT donnees_techniques
1922 FROM ".DB_PREFIXE."donnees_techniques
1923 WHERE lot=".$lotInit;
1924 $id_dt = $this->f->db->getOne($sql_get_dt);
1925 // Si des données techniques sont liées au lots on les "copie" et
1926 // on les lies au lot passé en paramètre (lotDest)
1927 if(isset($id_dt) and !empty($id_dt)) {
1928 $this->f->addToLog(
1929 "ajoutDonneesTechniquesLots() : db->getone(\"".$sql_get_dt."\");",
1930 VERBOSE_MODE
1931 );
1932 if ($this->f->isDatabaseError($id_dt, true)){
1933 $this->f->addToLog(
1934 "ajoutDonneesTechniquesLots() : ERROR",
1935 DEBUG_MODE
1936 );
1937 return false;
1938 }
1939 require_once '../obj/donnees_techniques.class.php';
1940 $donnees_techniques = new donnees_techniques($id_dt, $db, $DEBUG);
1941
1942 // Récupération des données dans le tableau des valeurs à insérer
1943 foreach($donnees_techniques->champs as $value) {
1944 $val[$value] = $donnees_techniques->getVal($value);
1945 }
1946 // Modification du lien vers le nouveau lot
1947 $val["lot"] = $lotDest;
1948 // Identifiant du cerfa
1949 $val['cerfa'] = $this->getIdCerfa();
1950 // Ajout des données techniques
1951 if($donnees_techniques->ajouter($val, $db, $DEBUG) === false) {
1952 $this->f->addToLog(__METHOD__."() : ERROR - Impossible d'ajouter les données techniques du lot.", DEBUG_MODE);
1953 return false;
1954 }
1955 }
1956
1957 //
1958 return true;
1959 }
1960
1961 /**
1962 * Gestion des liens entre la demande et les demandeurs recemment ajoutés
1963 **/
1964 function insertLinkDemandeDemandeur($db, $DEBUG) {
1965
1966 //
1967 require_once "../obj/lien_demande_demandeur.class.php";
1968 // Comparaison de l'id petitionnaire principal
1969 if(isset($this->postedIdDemandeur['petitionnaire_principal']) AND
1970 !empty($this->postedIdDemandeur['petitionnaire_principal']) AND
1971 $this->valIdDemandeur['petitionnaire_principal'] !=
1972 $this->postedIdDemandeur['petitionnaire_principal']) {
1973 // Ajout du nouveau lien
1974 if ($this->addLinkDemandeDemandeur($this->postedIdDemandeur['petitionnaire_principal'], true, $db, $DEBUG) == false) {
1975 //
1976 return false;
1977 }
1978 if(!empty($this->valIdDemandeur['petitionnaire_principal'])) {
1979 if ($this->deleteLinkDemandeDemandeur($this->valIdDemandeur['petitionnaire_principal'], $db, $DEBUG) == false) {
1980 //
1981 return false;
1982 }
1983 }
1984 }
1985
1986 // Comparaison du delegataire
1987 if(isset($this->postedIdDemandeur['delegataire']) AND
1988 !empty($this->postedIdDemandeur['delegataire']) AND
1989 $this->valIdDemandeur['delegataire'] !=
1990 $this->postedIdDemandeur['delegataire']) {
1991 // Ajout du nouveau lien
1992 if ($this->addLinkDemandeDemandeur($this->postedIdDemandeur['delegataire'], false, $db, $DEBUG) == false) {
1993 //
1994 return false;
1995 }
1996 if(!empty($this->valIdDemandeur['delegataire'])) {
1997 if ($this->deleteLinkDemandeDemandeur($this->valIdDemandeur['delegataire'], $db, $DEBUG) == false) {
1998 //
1999 return false;
2000 }
2001 }
2002 }
2003
2004 // Comparaison des different petitionnaires
2005 if(isset($this->postedIdDemandeur['petitionnaire'])) {
2006 // Suppression des liens non valides
2007 foreach ($this->valIdDemandeur['petitionnaire'] as $petitionnaire) {
2008 if(!in_array($petitionnaire, $this->postedIdDemandeur['petitionnaire'])) {
2009 if ($this->deleteLinkDemandeDemandeur($petitionnaire, $db, $DEBUG) == false) {
2010 //
2011 return false;
2012 }
2013 }
2014 }
2015 // Ajout des nouveaux liens
2016 foreach ($this->postedIdDemandeur['petitionnaire'] as $petitionnaire) {
2017 if(!in_array($petitionnaire, $this->valIdDemandeur['petitionnaire'])) {
2018 if ($this->addLinkDemandeDemandeur($petitionnaire, false, $db, $DEBUG) == false) {
2019 //
2020 return false;
2021 }
2022 }
2023 }
2024 }
2025
2026 //
2027 return true;
2028 }
2029
2030
2031 /**
2032 * Fonction permettant d'ajouter un lien
2033 * entre la table demande et demandeur
2034 **/
2035 function addLinkDemandeDemandeur($id, $principal, $db, $DEBUG) {
2036 $lienAjout = new lien_demande_demandeur(
2037 "]",
2038 $db,
2039 $DEBUG);
2040 $lien = array('lien_demande_demandeur' => "",
2041 'petitionnaire_principal' => (($principal)?"t":"f"),
2042 'demande' => $this->valF['demande'],
2043 'demandeur' => $id);
2044 if ($lienAjout->ajouter($lien, $db, $DEBUG) === false) {
2045 $this->f->addToLog(__METHOD__."() : ERROR - Impossible d'ajouter le lien entre la demande et le demandeur.", DEBUG_MODE);
2046 return false;
2047 }
2048
2049 //
2050 return true;
2051 }
2052
2053 /**
2054 * Fonction permettant de supprimer un lien
2055 * entre la table demande et demandeur
2056 **/
2057 function deleteLinkDemandeDemandeur($id, $db, $DEBUG) {
2058 // Suppression
2059 $sql = "DELETE FROM ".DB_PREFIXE."lien_demande_demandeur ".
2060 "WHERE demande=".$this->valF['demande'].
2061 " AND demandeur=".$id;
2062 // Execution de la requete de suppression de l'objet
2063 $res = $db->query($sql);
2064 // Logger
2065 $this->f->addToLog("deleteLinkDemandeDemandeur(): db->query(\"".$sql."\");", VERBOSE_MODE);
2066 if ($this->f->isDatabaseError($res, true)){
2067 return false;
2068 }
2069
2070 //
2071 return true;
2072 }
2073
2074 /*
2075 * Teste si le lien entre une demande et un demandeur existe
2076 * */
2077 function isLinkDemandeDemandeurExist($idDemandeur) {
2078 $sql = "SELECT count(*)
2079 FROM ".DB_PREFIXE."lien_demande_demandeur
2080 WHERE demande = ".$this->valF['demande'].
2081 "AND demandeur = ".$idDemandeur;
2082 $count = $this->f->db->getOne($sql);
2083 $this->f->addToLog("isLinkDemandeDemandeurExist() : db->getone(\"".$sql."\");", VERBOSE_MODE);
2084 $this->f->isDatabaseError($count);
2085 if ($count === 0) {
2086 $this->f->addToLog("isLinkDemandeDemandeurExist() : db->getone(\"".$sql."\"); 0 values", VERBOSE_MODE);
2087 return false;
2088 } else {
2089 return true;
2090 }
2091
2092 }
2093
2094 /**
2095 * Methode de recupération des valeurs postées
2096 **/
2097 function getPostedValues() {
2098 // Récupération des demandeurs dans POST
2099 if ($this->f->get_submitted_post_value('petitionnaire_principal') !== null OR
2100 $this->f->get_submitted_post_value('delegataire') !== null OR
2101 $this->f->get_submitted_post_value('petitionnaire') !== null) {
2102 if ($this->f->get_submitted_post_value('petitionnaire_principal') !== null AND
2103 $this->f->get_submitted_post_value('petitionnaire_principal') != '') {
2104 $this->postedIdDemandeur['petitionnaire_principal'] = $this->f->get_submitted_post_value('petitionnaire_principal');
2105 }
2106 if ($this->f->get_submitted_post_value('delegataire') !== null AND
2107 $this->f->get_submitted_post_value('delegataire') != '') {
2108 $this->postedIdDemandeur['delegataire'] = $this->f->get_submitted_post_value('delegataire');
2109 }
2110 if ($this->f->get_submitted_post_value('petitionnaire') !== null AND
2111 $this->f->get_submitted_post_value('petitionnaire') != '') {
2112 $this->postedIdDemandeur['petitionnaire'] = $this->f->get_submitted_post_value('petitionnaire');
2113 }
2114 }
2115 }
2116
2117 /**
2118 * Méthode permettant de récupérer les id des demandeurs liés à la table
2119 * liée passée en paramètre
2120 *
2121 * @param string $from Table liée : "demande", "dossier", dossier_autorisation"
2122 * @param string $id Identifiant (clé primaire de la table liée en question)
2123 */
2124 function listeDemandeur($from, $id) {
2125 // Récupération des demandeurs de la base
2126 $sql = "SELECT demandeur.demandeur,
2127 demandeur.type_demandeur,
2128 lien_".$from."_demandeur.petitionnaire_principal
2129 FROM ".DB_PREFIXE."lien_".$from."_demandeur
2130 INNER JOIN ".DB_PREFIXE."demandeur
2131 ON demandeur.demandeur=lien_".$from."_demandeur.demandeur
2132 WHERE ".$from." = '".$id."'";
2133 $res = $this->f->db->query($sql);
2134 $this->f->addToLog("listeDemandeur(): db->query(\"".$sql."\")", VERBOSE_MODE);
2135 $this->f->isDatabaseError($res);
2136 // Stockage du résultat dans un tableau
2137 while ($row=& $res->fetchRow(DB_FETCHMODE_ASSOC)){
2138 if ($row['petitionnaire_principal'] == 't' AND
2139 $row['type_demandeur']=="petitionnaire") {
2140 $this->valIdDemandeur['petitionnaire_principal']=$row['demandeur'];
2141 } elseif ($row['petitionnaire_principal'] == 'f' AND
2142 $row['type_demandeur']=="petitionnaire"){
2143 $this->valIdDemandeur['petitionnaire'][]=$row['demandeur'];
2144 } elseif ($row['type_demandeur']=="delegataire"){
2145 $this->valIdDemandeur['delegataire']=$row['demandeur'];
2146 }
2147 }
2148 }
2149
2150
2151 /**
2152 * Surcharge du bouton retour afin de retourner sur la recherche de dossiers
2153 * d'instruction existant
2154 */
2155 function retour($premier = 0, $recherche = "", $tricol = "") {
2156
2157 echo "\n<a class=\"retour\" ";
2158 echo "href=\"";
2159 //
2160 if($this->getParameter("idx_dossier") != "") {
2161 echo "tab.php?";
2162 echo "obj=recherche_dossier";
2163
2164 } else {
2165 if($this->getParameter("retour")=="form" AND !($this->getParameter("validation")>0 AND $this->getParameter("maj")==2 AND $this->correct)) {
2166 echo "form.php?";
2167 } else {
2168 echo "tab.php?";
2169 }
2170 echo "obj=".get_class($this);
2171 if($this->getParameter("retour")=="form") {
2172 echo "&amp;idx=".$this->getParameter("idx");
2173 echo "&amp;idz=".$this->getParameter("idz");
2174 echo "&amp;action=3";
2175 }
2176 }
2177 echo "&amp;premier=".$this->getParameter("premier");
2178 echo "&amp;tricol=".$this->getParameter("tricol");
2179 echo "&amp;recherche=".$this->getParameter("recherche");
2180 echo "&amp;selectioncol=".$this->getParameter("selectioncol");
2181 echo "&amp;advs_id=".$this->getParameter("advs_id");
2182 echo "&amp;valide=".$this->getParameter("valide");
2183 //
2184 echo "\"";
2185 echo ">";
2186 //
2187 echo _("Retour");
2188 //
2189 echo "</a>\n";
2190
2191 }
2192
2193
2194 /**
2195 * Cette méthode permet d'afficher des informations spécifiques dans le
2196 * formulaire de l'objet
2197 *
2198 * @param integer $maj Mode de mise à jour
2199 */
2200 function formSpecificContent($maj) {
2201
2202 /**
2203 * Gestion du bloc des demandeurs
2204 */
2205 // Si le mode est (modification ou suppression ou consultation) ET que
2206 // le formulaire n'est pas correct (c'est-à-dire que le formulaire est
2207 // actif)
2208 if (!$this->correct AND $maj != 0) {
2209 // Alors on récupère les demandeurs dans la table lien pour
2210 // affectation des résultats dans this->valIdDemandeur
2211 $this->listeDemandeur("demande", $this->val[array_search('demande', $this->champs)]);
2212 }
2213
2214 // Si le mode est (ajout ou modification) ET que le formulaire n'est pas
2215 // correct (c'est-à-dire que le formulaire est actif)
2216 if ($maj < 2 AND !$this->correct) {
2217 // Alors on positionne le marqueur linkable a true qui permet
2218 // d'afficher ou non les actions de gestion des demandeurs
2219 $linkable = true;
2220 } else {
2221 // Sinon on positionne le marqueur linkable a false qui permet
2222 // d'afficher ou non les actions de gestion des demandeurs
2223 $linkable = false;
2224 }
2225
2226 // Affichage des demandeurs et des actions
2227 // Conteneur de la listes des demandeurs
2228 echo "<div id=\"liste_demandeur\" class=\"demande_hidden_bloc col_12\">";
2229 echo "<fieldset class=\"cadre ui-corner-all ui-widget-content\">";
2230 echo " <legend class=\"ui-corner-all ui-widget-content ui-state-active\">"
2231 ._("Petitionnaire")."</legend>";
2232 // Si des demandeurs sont liés à la demande
2233 require_once "../obj/petitionnaire.class.php";
2234 require_once "../obj/delegataire.class.php";
2235 // Affichage du bloc pétitionnaire principal / délégataire
2236 // L'ID DU DIV SUIVANT EST NECESSAIRE AU BON FONCTIONNEMENT DU JS
2237 echo "<div id=\"petitionnaire_principal_delegataire\">";
2238 // Affichage de la synthèse
2239 if (isset ($this->valIdDemandeur["petitionnaire_principal"]) AND
2240 !empty($this->valIdDemandeur["petitionnaire_principal"])) {
2241 $demandeur = new petitionnaire(
2242 $this->valIdDemandeur["petitionnaire_principal"],
2243 $this->f->db,false);
2244 $demandeur -> afficherSynthese("petitionnaire_principal", $linkable);
2245 $demandeur -> __destruct();
2246 } elseif ( isset ($this->postedIdDemandeur["petitionnaire_principal"]) AND
2247 !empty($this->postedIdDemandeur["petitionnaire_principal"]) ) {
2248 $demandeur = new petitionnaire(
2249 $this->postedIdDemandeur["petitionnaire_principal"],
2250 $this->f->db,false);
2251 $demandeur -> afficherSynthese("petitionnaire_principal", $linkable);
2252 $demandeur -> __destruct();
2253 }
2254 // Si en édition de formulaire
2255 if($maj < 2) {
2256 // Bouton d'ajout du pétitionnaire principal
2257 // L'ID DE L'INPUT SUIVANT EST NECESSAIRE AU BON FONCTIONNEMENT DU JS
2258 echo "<span id=\"add_petitionnaire_principal\"
2259 class=\"om-form-button add-16\">".
2260 _("Saisir le petitionnaire principal").
2261 "</span>";
2262 }
2263 // Bouton d'ajout du delegataire
2264 // L'ID DU DIV ET DE L'INPUT SUIVANT EST NECESSAIRE AU BON FONCTIONNEMENT DU JS
2265 echo "<div id=\"delegataire\">";
2266 // Affichage de la synthèse
2267 if (isset ($this->valIdDemandeur["delegataire"]) AND
2268 !empty($this->valIdDemandeur["delegataire"])) {
2269 $demandeur = new delegataire($this->valIdDemandeur["delegataire"],
2270 $this->f->db,false);
2271 $demandeur -> afficherSynthese("delegataire", $linkable);
2272 $demandeur -> __destruct();
2273 } elseif ( isset ($this->postedIdDemandeur["delegataire"]) AND
2274 !empty($this->postedIdDemandeur["delegataire"]) ) {
2275
2276 $demandeur = new delegataire($this->postedIdDemandeur["delegataire"],
2277 $this->f->db,false);
2278 $demandeur -> afficherSynthese("delegataire", $linkable);
2279 $demandeur -> __destruct();
2280 }
2281 if($maj < 2) {
2282 echo "<span id=\"add_delegataire\"
2283 class=\"om-form-button add-16\">".
2284 _("Saisir un autre correspondant").
2285 "</span>";
2286 }
2287 echo "</div>";
2288 echo "<div class=\"both\"></div>";
2289 echo "</div>";
2290 // Bloc des pétitionnaires secondaires
2291 // L'ID DU DIV SUIVANT EST NECESSAIRE AU BON FONCTIONNEMENT DU JS
2292 echo "<div id=\"listePetitionnaires\">";
2293
2294 // Affichage de la synthèse
2295 if (isset ($this->valIdDemandeur["petitionnaire"]) AND
2296 !empty($this->valIdDemandeur["petitionnaire"])) {
2297
2298 foreach ($this->valIdDemandeur["petitionnaire"] as $petitionnaire) {
2299 $demandeur = new petitionnaire($petitionnaire,
2300 $this->f->db,false);
2301 $demandeur -> afficherSynthese("petitionnaire", $linkable);
2302 $demandeur -> __destruct();
2303 }
2304
2305 } elseif ( isset ($this->postedIdDemandeur["petitionnaire"]) AND
2306 !empty($this->postedIdDemandeur["petitionnaire"]) ) {
2307 foreach ($this->postedIdDemandeur["petitionnaire"] as $petitionnaire) {
2308 $demandeur = new petitionnaire($petitionnaire,
2309 $this->f->db,false);
2310 $demandeur -> afficherSynthese("petitionnaire", $linkable);
2311 $demandeur -> __destruct();
2312 }
2313 }
2314 if ($maj < 2) {
2315 // L'ID DE L'INPUT SUIVANT EST NECESSAIRE AU BON FONCTIONNEMENT DU JS
2316 echo "<span id=\"add_petitionnaire\"
2317 class=\"om-form-button add-16\">".
2318 _("Ajouter un petitionnaire")
2319 ."</span>";
2320 }
2321 echo "</div>";
2322 echo "</fieldset>";
2323 // Champ flag permettant de récupérer la valeur de l'option sig pour
2324 // l'utiliser en javascript, notamment lors du chargement de l'interface
2325 // pour les références cadastrales
2326 // XXX Si un widget pour les références cadastrales existait, il n'y
2327 // aurait pas besoin de faire cela
2328 echo "<input id='option_sig' type='hidden' value='".$this->f->getParameter("option_sig")."' name='option_sig'>";
2329 echo "</div>";
2330 }
2331
2332 // {{{
2333
2334 // getter
2335 function getValIdDemandeur() {
2336 return $this->valIdDemandeur;
2337 }
2338 // setter
2339 function setValIdDemandeur($valIdDemandeur) {
2340 $this->valIdDemandeur = $valIdDemandeur;
2341 }
2342
2343 //Supression du lien entre la demandeur et le(s) demandeur(s)
2344 function triggerSupprimer($id, &$db, $val, $DEBUG){
2345
2346 //Création de la requête
2347 $sql = "DELETE FROM
2348 ".DB_PREFIXE."lien_demande_demandeur
2349 WHERE
2350 demande = $id";
2351
2352 $res = $this->f->db->query($sql);
2353 $this->f->addToLog("triggerSupprimer() : db->query(\"".$sql."\")");
2354 if ($this->f->isDatabaseError($res, true)) {
2355 return false;
2356 }
2357
2358 //
2359 return true;
2360 }
2361
2362 // }}}
2363
2364 /**
2365 * Récupère le champ "qualification" du type de la demande
2366 * @param integer $demande_type Identifiant du type de la demande
2367 * @return boolean
2368 */
2369 function get_qualification($demande_type) {
2370
2371 // Initialise le résultat
2372 $qualification = "";
2373
2374 // Si la condition existe
2375 if (is_numeric($demande_type)) {
2376
2377 // Requête SQL
2378 $sql = "SELECT qualification
2379 FROM ".DB_PREFIXE."demande_type
2380 WHERE demande_type = $demande_type";
2381 $qualification = $this->db->getOne($sql);
2382 $this->f->addToLog("get_qualification() : db->getOne(\"".$sql."\")",
2383 VERBOSE_MODE);
2384 $this->f->isDatabaseError($qualification);
2385 }
2386
2387 // Retourne le résultat
2388 return $qualification;
2389 }
2390
2391 /**
2392 * Récupère les champs archive_* d'une instruction
2393 * @param string $dossier L'identifiant du dossier d'instruction
2394 */
2395 public function getArchiveInstruction($dossierID){
2396
2397 //On récupère les données du dernier DI accordé
2398 $sql = "SELECT dossier.delai, dossier.accord_tacite, dossier.etat,
2399 dossier.avis_decision,
2400 to_char(dossier.date_complet, 'DD/MM/YYYY') as date_complet,
2401 to_char(dossier.date_depot, 'DD/MM/YYYY') as date_depot,
2402 to_char(dossier.date_dernier_depot, 'DD/MM/YYYY') as date_dernier_depot,
2403 to_char(dossier.date_rejet, 'DD/MM/YYYY') as date_rejet,
2404 to_char(dossier.date_limite, 'DD/MM/YYYY') as date_limite,
2405 to_char(dossier.date_notification_delai, 'DD/MM/YYYY') as date_notification_delai,
2406 to_char(dossier.date_decision, 'DD/MM/YYYY') as date_decision,
2407 to_char(dossier.date_validite, 'DD/MM/YYYY') as date_validite,
2408 to_char(dossier.date_achevement, 'DD/MM/YYYY') as date_achevement,
2409 to_char(dossier.date_chantier, 'DD/MM/YYYY') as date_chantier,
2410 to_char(dossier.date_conformite, 'DD/MM/YYYY') as date_conformite,
2411 dossier.incompletude,
2412 dossier.evenement_suivant_tacite, dossier.evenement_suivant_tacite_incompletude,
2413 dossier.etat_pendant_incompletude,
2414 to_char(dossier.date_limite_incompletude, 'DD/MM/YYYY') as date_limite_incompletude,
2415 dossier.delai_incompletude, dossier.autorite_competente, dossier.duree_validite
2416 ,dossier.dossier, dossier.incomplet_notifie
2417 FROM ".DB_PREFIXE."dossier
2418 LEFT JOIN ".DB_PREFIXE."avis_decision
2419 ON dossier.avis_decision = avis_decision.avis_decision
2420 WHERE dossier.avis_decision IS NOT NULL AND avis_decision.typeavis = 'F'
2421 AND dossier.dossier_autorisation = (
2422 SELECT dossier_autorisation.dossier_autorisation
2423 FROM ".DB_PREFIXE."dossier_autorisation
2424 LEFT JOIN ".DB_PREFIXE."dossier
2425 ON dossier_autorisation.dossier_autorisation = dossier.dossier_autorisation
2426 WHERE dossier = '".$dossierID."')
2427 ORDER BY dossier.version DESC";
2428
2429 $res = $this->db->query($sql);
2430 $this->addToLog("updateArchiveInstruction(): db->query(\"".$sql."\");", VERBOSE_MODE);
2431 if ($this->f->isDatabaseError($res, true)) {
2432 return false;
2433 }
2434
2435 //Un des dosssiers d'instruction a été accordé, on récupère ses données
2436 if ( $res->numrows() != 0 ){
2437
2438 $row=& $res->fetchRow(DB_FETCHMODE_ASSOC);
2439 require_once "../obj/instruction.class.php";
2440 $instruction = new instruction("]",$this->db,DEBUG);
2441
2442 $instruction->setParameter("maj", 1);
2443 $instruction->updateArchiveData($row);
2444 return $instruction->valF;
2445 }
2446 //Sinon, on prend les données du P0, si ce n'est pas un P0
2447 else {
2448 $sql = "SELECT dossier.delai, dossier.accord_tacite, dossier.etat,
2449 dossier.avis_decision, dossier.date_complet, dossier.date_dernier_depot,
2450 dossier.date_rejet, dossier.date_limite, dossier.date_notification_delai,
2451 dossier.date_decision, dossier.date_validite, dossier.date_achevement,
2452 dossier.date_chantier, dossier.date_conformite, dossier.incompletude,
2453 dossier.evenement_suivant_tacite, dossier.evenement_suivant_tacite_incompletude,
2454 dossier.etat_pendant_incompletude, dossier.date_limite_incompletude,
2455 dossier.delai_incompletude, dossier.autorite_competente, dossier.duree_validite,
2456 dossier.dossier, dossier.incomplet_notifie, dossier.date_depot
2457 FROM ".DB_PREFIXE."dossier
2458 LEFT JOIN ".DB_PREFIXE."dossier_instruction_type
2459 ON dossier.dossier_instruction_type = dossier_instruction_type.dossier_instruction_type
2460 WHERE dossier.dossier_autorisation = (
2461 SELECT dossier_autorisation.dossier_autorisation
2462 FROM ".DB_PREFIXE."dossier_autorisation
2463 LEFT JOIN ".DB_PREFIXE."dossier
2464 ON dossier_autorisation.dossier_autorisation = dossier.dossier_autorisation
2465 WHERE dossier = '".$dossierID."')
2466 AND dossier_instruction_type.code = 'P'
2467 ORDER BY dossier.version DESC";
2468 $res = $this->db->query($sql);
2469 $this->addToLog("updateArchiveInstruction(): db->query(\"".$sql."\");", VERBOSE_MODE);
2470 if ($this->f->isDatabaseError($res, true)) {
2471 return false;
2472 }
2473
2474 //On est pas dans le cas d'un dépôt d'un P0
2475 if ( $res->numrows() != 0 ){
2476 $row=& $res->fetchRow(DB_FETCHMODE_ASSOC);
2477 require_once "../obj/instruction.class.php";
2478 $instruction = new instruction("]",$this->db,DEBUG);
2479 $instruction->setParameter("maj", 1);
2480 $instruction->updateArchiveData($row);
2481 return $instruction->valF;
2482 }
2483 }
2484 }
2485
2486 /**
2487 * Cette methode permet d'afficher le bouton de validation du formulaire
2488 *
2489 * @param integer $maj Mode de mise a jour
2490 * @return void
2491 */
2492 function bouton($maj) {
2493
2494 if (!$this->correct
2495 && $this->checkActionAvailability() == true) {
2496 //
2497 switch($maj) {
2498 case 0 :
2499 $bouton = _("Ajouter");
2500 break;
2501 case 1 :
2502 $bouton = _("Modifier");
2503 break;
2504 case 2 :
2505 $bouton = _("Supprimer");
2506 break;
2507 default :
2508 // Actions specifiques
2509 if ($this->get_action_param($maj, "button") != null) {
2510 //
2511 $bouton = $this->get_action_param($maj, "button");
2512 } else {
2513 //
2514 $bouton = _("Valider");
2515 }
2516 break;
2517 }
2518 //
2519 $params = array(
2520 "value" => $bouton,
2521 "name" => "submit",
2522 "onclick"=>"return getDataFieldReferenceCadastrale();",
2523 );
2524 //
2525 $this->f->layout->display_form_button($params);
2526 }
2527
2528 }
2529
2530 /**
2531 * Récupère l'instance de la classe taxe_amenagement.
2532 *
2533 * @param integer $om_collectivite La collectivité
2534 *
2535 * @return object
2536 */
2537 function get_inst_taxe_amenagement_by_om_collectivite($om_collectivite) {
2538 //
2539 if (is_null($this->inst_taxe_amenagement)) {
2540 //
2541 $taxe_amenagement = $this->get_taxe_amenagement_by_om_collectivite($om_collectivite);
2542 //
2543 require_once "../obj/taxe_amenagement.class.php";
2544 $this->inst_taxe_amenagement = new taxe_amenagement($taxe_amenagement);
2545 }
2546 //
2547 return $this->inst_taxe_amenagement;
2548 }
2549
2550 /**
2551 * Récupère l'identifiant de la taxe d'aménagement par rapport à la collectivité.
2552 *
2553 * @param integer $om_collectivite La collectivité
2554 *
2555 * @return integer
2556 */
2557 function get_taxe_amenagement_by_om_collectivite($om_collectivite) {
2558 //
2559 $sql = "SELECT taxe_amenagement
2560 FROM ".DB_PREFIXE."taxe_amenagement
2561 WHERE om_collectivite = ".intval($om_collectivite);
2562 $collectivite = $this->f->db->getOne($sql);
2563 $this->addToLog(__METHOD__."(): db->getone(\"".$sql."\")", VERBOSE_MODE);
2564 $this->f->isDatabaseError($collectivite);
2565
2566 //
2567 return $collectivite;
2568 }
2569
2570
2571 /**
2572 * Récupère l'instance du dossier d'autorisation.
2573 *
2574 * @param string $dossier_autorisation Identifiant du dossier d'autorisation.
2575 *
2576 * @return object
2577 */
2578 private function get_inst_dossier_autorisation($dossier_autorisation = null) {
2579 //
2580 return $this->get_inst_common("dossier_autorisation", $dossier_autorisation);
2581 }
2582
2583
2584 }// fin classe
2585 ?>

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26