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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 4343 - (hide annotations)
Mon May 30 12:01:40 2016 UTC (8 years, 8 months ago) by nmeucci
File size: 114064 byte(s)
Suppression d'une instruction servant au débug

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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26