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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 4588 - (hide annotations)
Fri Jun 24 16:46:55 2016 UTC (8 years, 7 months ago) by jymadier
File size: 116299 byte(s)
- Suppression des derniers appels aux scripts pdf/ dans le menu d'affichage réglementaire
- Suppression de la surcharge de compute_pdf_output de expose_pdf_output dans om_dbform.class.php
- Suppression de l'externals vers le répertoire pdf/ du Framework
- Suppression d'une méthode inutile 'generate_edition' dans le contexte du rapport d'instruction.

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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26