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

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

Parent Directory Parent Directory | Revision Log Revision Log


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

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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26