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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 3873 - (hide annotations)
Wed Apr 6 14:58:39 2016 UTC (8 years, 9 months ago) by nmeucci
File size: 113631 byte(s)
* Correction : Les restrictions d'événement, en sus d'avoir leur taille augmentée, peuvent dorénavant utiliser la date de dépôt du DI ainsi que les opérateurs &&, ||, == et !=.

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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26