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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 4584 - (show annotations)
Fri Jun 24 16:21:18 2016 UTC (8 years, 7 months ago) by softime
File size: 114921 byte(s)
* Merge de la branche lien_di
* Correction - Lorsqu'il y avait plus d'un événement d'instruction dans un DI
  alors on le qualifiait d'instruit. Dorénavant on vérifie que les événements
  créés ne sont pas de type affichage, considérés comme non instruisant le DI.
  Ticket #8378.

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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26