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

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

Parent Directory Parent Directory | Revision Log Revision Log


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

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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26