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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 7067 - (hide annotations)
Wed Jul 5 14:42:38 2017 UTC (7 years, 7 months ago) by softime
File size: 141390 byte(s)
* Merge depuis la branche d'intégration evol_contentieux (4.3.0)

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 nhaye 5254 * @version SVN : $Id$
9 mbroquet 3730 */
10    
11     require_once "../gen/obj/demande.class.php";
12 nhaye 5254
13 mbroquet 3730 require_once "../obj/geoads.class.php";
14 softime 6565 // Si des demandeurs sont liés à la demande
15     require_once "../obj/petitionnaire.class.php";
16     require_once "../obj/delegataire.class.php";
17     require_once "../obj/plaignant.class.php";
18     require_once "../obj/contrevenant.class.php";
19     require_once "../obj/requerant.class.php";
20     require_once "../obj/avocat.class.php";
21 softime 7067 require_once "../obj/bailleur.class.php";
22 mbroquet 3730
23     /**
24     * Définition de la classe 'demande'.
25     *
26     * Cette classe permet d'interfacer la demande, c'est-à-dire l'enregistrement
27     * représentant une demande faite par un pétitionnaire pour un nouveau dossier
28     * ou pour un dossier existant.
29     */
30     class demande extends demande_gen {
31    
32     /**
33 nhaye 5254 * Constructeur.
34 mbroquet 3730 */
35     function __construct($id, &$dnu1 = null, $dnu2 = null) {
36     $this->constructeur($id);
37     }
38    
39 softime 6565 var $valIdDemandeur = array("petitionnaire_principal" => array(),
40     "delegataire" => array(),
41     "petitionnaire" => array(),
42     "plaignant_principal" => array(),
43     "plaignant" => array(),
44     "contrevenant_principal" => array(),
45     "contrevenant" => array(),
46     "requerant_principal" => array(),
47     "requerant" => array(),
48     "avocat_principal" => array(),
49     "avocat" => array(),
50 softime 7067 "bailleur_principal" => array(),
51     "bailleur" => array(),
52 softime 6565 );
53     var $postedIdDemandeur = array("petitionnaire_principal" => array(),
54     "delegataire" => array(),
55     "petitionnaire" => array(),
56     "plaignant_principal" => array(),
57     "plaignant" => array(),
58     "contrevenant_principal" => array(),
59     "contrevenant" => array(),
60     "requerant_principal" => array(),
61     "requerant" => array(),
62     "avocat_principal" => array(),
63     "avocat" => array(),
64 softime 7067 "bailleur_principal" => array(),
65     "bailleur" => array(),
66 softime 6565 );
67 mbroquet 3730
68     var $autreDossierEnCour;
69    
70     var $cerfa = null;
71    
72     /**
73     * Instance du paramétrage de la taxe d'aménagement
74     *
75     * @var null
76     */
77     var $inst_taxe_amenagement = null;
78    
79     /**
80     * Instance de la classe dossier_autorisation.
81     *
82     * @var mixed (resource | null)
83     */
84     var $inst_dossier_autorisation = null;
85    
86     /**
87 softime 6929 * Instance de la classe cerfa.
88     *
89     * @var mixed (resource | null)
90     */
91     var $inst_cerfa = null;
92    
93     /**
94 mbroquet 3730 * Définition des actions disponibles sur la classe.
95     *
96     * @return void
97     */
98     function init_class_actions() {
99    
100     // On récupère les actions génériques définies dans la méthode
101     // d'initialisation de la classe parente
102     parent::init_class_actions();
103    
104 softime 6929 // ACTION - 003 - consulter
105     //
106     $this->class_actions[3]["condition"] = "is_user_from_allowed_collectivite";
107    
108 mbroquet 3730 // ACTION - 100 - pdfetat
109     // Permet de visualiser le récépissé de la demande
110     $this->class_actions[100] = array(
111     "identifier" => "pdfetat",
112     "portlet" => array(
113     "type" => "action-blank",
114     "libelle" => _("Editer le recepisse PDF"),
115     "order" => 100,
116     "class" => "pdf-16",
117     ),
118     "view" => "view_pdfetat",
119     "permission_suffix" => "consulter",
120     );
121    
122     // ACTION - 110 - affichage_reglementaire_registre
123     // Affiche un formulaire pour visualiser le registre réglementaire
124     $this->class_actions[110] = array(
125     "identifier" => "affichage_reglementaire_registre",
126     "view" => "view_reglementaire_registre",
127     "permission_suffix" => "consulter",
128     );
129    
130 jymadier 4588 // ACTION - 111 - generate_affichage_reglementaire_registre
131     // Génère et affiche le PDF registre d'affichage réglementaire
132     $this->class_actions[111] = array(
133     "identifier" => "generate_affichage_reglementaire_registre",
134     "view" => "view_generate_affichage_reglementaire_registre",
135     "permission_suffix" => "consulter",
136     );
137    
138 mbroquet 3730 // ACTION - 120 - affichage_reglementaire_attestation
139     // Affiche un formulaire pour visualiser l'attestation réglementaire
140     $this->class_actions[120] = array(
141     "identifier" => "affichage_reglementaire_attestation",
142     "view" => "view_reglementaire_attestation",
143     "permission_suffix" => "consulter",
144     );
145    
146     // ACTION - 130 - Récupération de l'adresse
147     $this->class_actions[130] = array(
148     "identifier" => "get_adresse",
149     "view" => "view_get_adresse_by_cadastre",
150     "permission_suffix" => "recuperer_adresse",
151     );
152     }
153    
154 softime 6929
155 mbroquet 3730 /**
156 softime 6929 * CONDITION - is_user_from_allowed_collectivite.
157 mbroquet 3730 *
158 softime 6929 * Cette condition permet de vérifier si l'utilisateur connecté appartient
159     * à une collectivité autorisée : c'est-à-dire de niveau 2 ou identique à
160     * la collectivité de l'enregistrement sur lequel on se trouve.
161     *
162     * @return boolean
163 mbroquet 3730 */
164 softime 6929 public function is_user_from_allowed_collectivite() {
165    
166     // Si l'utilisateur est de niveau 2
167     if ($this->f->isCollectiviteMono() === false) {
168     // Alors l'utilisateur fait partie d'une collectivité autorisée
169     return true;
170     }
171    
172     // L'utilisateur est donc de niveau 1
173     // On vérifie donc si la collectivité de l'utilisateur est la même
174     // que la collectivité de l'élément sur lequel on se trouve
175     if ($_SESSION["collectivite"] === $this->getVal("om_collectivite")) {
176     // Alors l'utilisateur fait partie d'une collectivité autorisée
177     return true;
178     }
179    
180     // L'utilisateur ne fait pas partie d'une collectivité autorisée
181     return false;
182     }
183    
184    
185     /**
186     *
187     */
188 mbroquet 3730 function get_inst_dossier_instruction($dossier_instruction = null) {
189     //
190     return $this->get_inst_common(
191     "dossier_instruction",
192     $dossier_instruction,
193     "dossier"
194     );
195     }
196    
197     /**
198     * VIEW - view_pdfetat
199     *
200     * Génère un récépissé PDF de la demande.
201     *
202     * @return void
203     */
204     function view_pdfetat() {
205     // Identifiant de la demande
206     $idx = $this->getVal($this->clePrimaire);
207    
208     // Requête qui récupère le type de lettre type
209     $sql = " SELECT instruction.instruction, instruction.lettretype,";
210     $sql .= " demande.om_collectivite, demande.dossier_instruction";
211     $sql .= " FROM ".DB_PREFIXE."demande ";
212     $sql .= " LEFT JOIN ".DB_PREFIXE."instruction ";
213     $sql .= " ON demande.instruction_recepisse=instruction.instruction ";
214     $sql .= " WHERE demande.demande=".intval($idx);
215     $res = $this->f->db->query($sql);
216     $this->f->addToLog(__METHOD__.": db->query(\"".$sql."\")", VERBOSE_MODE);
217     $this->f->isDatabaseError($res);
218     $row = $res->fetchrow(DB_FETCHMODE_ASSOC);
219    
220     // Si la requête nous retourne un résultat
221     if (isset($row["instruction"])
222     && !empty($row["instruction"])
223     && isset($row["lettretype"])
224     && !empty($row["lettretype"])) {
225    
226     // récupération des paramètres de la collectivité
227     $coll_param = $this->f->getCollectivite($row["om_collectivite"]);
228    
229     // Génération du récépissé
230     $pdf_output = $this->compute_pdf_output(
231     "lettretype",
232     $row["lettretype"],
233     $coll_param,
234     $row["instruction"]
235     );
236     // Mise à disposition du récépissé
237     $this->expose_pdf_output(
238     $pdf_output['pdf_output'],
239     "recepisse_depot_".$row["dossier_instruction"].".pdf"
240     );
241     } else {
242     // On indique à l'utilisateur que le récépissé n'existe pas
243     $this->f->displayMessage("error", _("Le recepisse demande n'existe pas."));
244     }
245     }
246    
247     /**
248     * VIEW - view_reglementaire_registre
249     *
250     * Affiche un formulaire pour génèrer le registre d'affichage réglementaire.
251     *
252     * @return void
253     */
254     function view_reglementaire_registre() {
255    
256     // Vérification de l'accessibilité sur l'élément
257     $this->checkAccessibility();
258    
259     /**
260     * Gestion des erreurs : vérification du paramétrage
261     */
262     $erreur = false;
263     // Récupération de l'événement correspondant à l'instruction à insérer pour chaque dossier du registre
264     $aff_obli = $this->f->getParameter('id_affichage_obligatoire');
265     // Si le paramétrage est vide ou pas numérique
266     if ($aff_obli == "" or !is_numeric($aff_obli)) {
267     $erreur = true;
268     } else {
269     // Vérification de l'existance de l'événement
270     $sql_verif = "SELECT count(*) FROM ".DB_PREFIXE."evenement WHERE evenement = ".$aff_obli;
271     $res_verif = $this->f->db->getOne($sql_verif);
272     $this->f->addToLog(__METHOD__.": db->getOne(\"".$sql_verif."\");", VERBOSE_MODE);
273     $this->f->isDatabaseError($res_verif);
274     // Si pas de correspondance d'événement dans la base
275     if ($res_verif === '0') {
276     $erreur = true;
277     }
278     }
279     // Affichage d'un message si en erreur
280     if ($erreur == true) {
281     // Affichage de l'erreur et sortie de la vue
282     $this->f->displayMessage("error", _("Erreur de parametrage. Contactez votre administrateur."));
283     return;
284     }
285    
286     // Si un affichage réglementaire des dossiers est demandé (appel en ajax)
287     if ($this->f->get_submitted_get_value('update') !== null) {
288     // Désactivation des logs car appel en ajax
289     $this->f->disableLog();
290     // Récupère la collectivité de l'utilisateur
291     $this->f->getCollectivite();
292     // Récupération de la liste des dossiers d'instruction dont l'état est
293     // "encours" et le groupe est 'ADS'. Une jointure avec la table instruction
294     // permet de savoir si le dossier a déjà été affiché ou non en récupérant
295     // l'id de l'événement qui représente l'attestion de l'affichage
296     // réglementaire dans le paramétrage.
297     $sql = "SELECT dossier.dossier, instruction.instruction, dossier.om_collectivite
298     FROM
299     ".DB_PREFIXE."dossier
300     LEFT JOIN ".DB_PREFIXE."instruction
301     ON dossier.dossier=instruction.dossier
302     AND instruction.evenement=".$aff_obli."
303     LEFT JOIN ".DB_PREFIXE."dossier_autorisation
304     ON dossier.dossier_autorisation =
305     dossier_autorisation.dossier_autorisation
306     LEFT JOIN ".DB_PREFIXE."dossier_autorisation_type_detaille
307     ON dossier_autorisation.dossier_autorisation_type_detaille =
308     dossier_autorisation_type_detaille.dossier_autorisation_type_detaille
309     LEFT JOIN ".DB_PREFIXE."dossier_autorisation_type
310     ON dossier_autorisation_type_detaille.dossier_autorisation_type =
311     dossier_autorisation_type.dossier_autorisation_type
312     LEFT JOIN ".DB_PREFIXE."groupe
313     ON dossier_autorisation_type.groupe = groupe.groupe
314     LEFT JOIN ".DB_PREFIXE."dossier_instruction_type
315     ON dossier.dossier_instruction_type=dossier_instruction_type.dossier_instruction_type
316     WHERE
317     (select
318     e.statut
319     from
320     ".DB_PREFIXE."etat e
321     where
322     e.etat = dossier.etat
323     ) = 'encours'
324     AND groupe.code = 'ADS'
325     AND LOWER(dossier_instruction_type.code) IN ('p','m','t')
326     AND dossier.om_collectivite = ".$this->f->getParameter('om_collectivite_idx');
327     $res = $this->f->db->query($sql);
328     $this->f->addToLog(__METHOD__.": db->query(\"".$sql."\");", VERBOSE_MODE);
329     $this->f->isDatabaseError($res);
330     // Boucle sur les dossiers
331     while ($row =& $res->fetchRow(DB_FETCHMODE_ASSOC)) {
332     // Si aucune instruction n'a d'événement de type "affichage_obligatoire"
333     // on créé une nouvelle instruction avec cet événement.
334     if ($row["instruction"] == "") {
335     // Instanciation d'instruction pour ajout
336     require_once '../obj/instruction.class.php';
337     $instr = new instruction(']', $this->f->db, DEBUG);
338     // Création d'un tableau avec la liste des champs de l'instruction
339     foreach($instr->champs as $champ) {
340     $valF[$champ] = "";
341     }
342     $valF["destinataire"] = $row['dossier'];
343     $valF["date_evenement"] = date("d/m/Y");
344     $valF["evenement"] = $aff_obli;
345     $valF["dossier"] = $row['dossier'];
346    
347     // Définition des valeurs de la nouvelle instruction
348     $instr->valF = array();
349     // Insertion dans la base
350     $res_ajout = $instr->ajouter($valF, $this->f->db, DEBUG);
351     $this->f->addToLog(__METHOD__.": db->autoexecute(\"".DB_PREFIXE."instruction\", ".print_r($valF, true).", DB_AUTOQUERY_INSERT);", VERBOSE_MODE);
352     $this->f->isDatabaseError($res_ajout);
353    
354     //Finalisation du document
355     $_GET['obj']='instruction';
356     $_GET['idx']=$instr->valF[$instr->clePrimaire];
357     $instr = new instruction($_GET['idx'],$this->f->db,DEBUG);
358     // On se met en contexte de l'action 100 finaliser
359     $instr->setParameter('maj',100);
360     $instr->finalize();
361     }
362     }
363     } else { // Sinon affichage standard
364     // Affichage de la description de l'écran
365     $this->f->displayDescription(_("Cet ecran permet d'imprimer le registre d'affichage ".
366     "reglementaire des dossiers d'instruction en cours. ".
367     "La validation de ce traitement ajoute sur chacun des ".
368     "dossiers d'instruction concernes la possibilite ".
369     "d'imprimer une attestation d'affichage."));
370     // Ouverture du formulaire
371     echo "\t<form";
372     echo " method=\"post\"";
373     echo " id=\"affichage_reglementaire_registre_form\"";
374     echo " action=\"#\"";
375     echo ">\n";
376     //
377     echo "<div id=\"msg\"></div>";
378     // Affichage du bouton
379     echo "\t<div class=\"formControls\">\n";
380     $this->f->layout->display_form_button(array("value" => _("Valider"), "onclick" => "affichage_reglementaire_registre(this); return false;", ));
381     echo "\t</div>\n";
382     // Fermeture du fomulaire
383     echo "\t</form>\n";
384     }
385     }
386    
387     /**
388 jymadier 4588 * VIEW - view_generate_affichage_reglementaire_registre
389     *
390     * Génère et affiche l'édition PDF registre d'affichage
391     * réglementaire.
392     *
393     * @return void
394     */
395     function view_generate_affichage_reglementaire_registre() {
396    
397     // Vérification de l'accessibilité sur l'élément
398     $this->checkAccessibility();
399     // Génération du PDF
400     $result = $this->compute_pdf_output('etat', 'registre_dossiers_affichage_reglementaire', null, $this->getVal($this->clePrimaire));
401     // Affichage du PDF
402     $this->expose_pdf_output(
403     $result['pdf_output'],
404     $result['filename']
405     );
406     }
407    
408     /**
409 mbroquet 3730 * VIEW - view_reglementaire_attestation
410     *
411     * Affiche un formulaire pour génèrer l'attestation d'affichage
412     * réglementaire.
413     *
414     * @return void
415     */
416     function view_reglementaire_attestation() {
417    
418     // Vérification de l'accessibilité sur l'élément
419     $this->checkAccessibility();
420    
421     /**
422     * Gestion des erreurs : vérification du paramétrage
423     */
424     $erreur = false;
425     // Récupération de l'événement correspondant à l'instruction à insérer pour chaque dossier du registre
426     $aff_obli = $this->f->getParameter('id_affichage_obligatoire');
427     // Si le paramétrage est vide ou pas numérique
428     if ($aff_obli == "" or !is_numeric($aff_obli)) {
429     $erreur = true;
430     } else {
431     // Vérification de l'existance de l'événement
432     $sql_verif = "SELECT count(*) FROM ".DB_PREFIXE."evenement WHERE evenement = ".$aff_obli;
433     $res_verif = $this->f->db->getOne($sql_verif);
434     $this->f->addToLog(__METHOD__.": db->getOne(\"".$sql_verif."\");", VERBOSE_MODE);
435     $this->f->isDatabaseError($res_verif);
436     // Si pas de correspondance d'événement dans la base
437     if ($res_verif === '0') {
438     $erreur = true;
439     }
440     }
441     // Affichage d'un message si en erreur
442     if ($erreur == true) {
443     // Affichage de l'erreur et sortie de la vue
444     $this->f->displayMessage("error", _("Erreur de parametrage. Contactez votre administrateur."));
445     return;
446     }
447    
448     /**
449     * Validation du formulaire
450     */
451     // Si le formulaire a été validé
452     if ($this->f->get_submitted_post_value("dossier") !== null) {
453     // Si une valeur a été saisie dans le champs dossier
454     if ($this->f->get_submitted_post_value("dossier") != "") {
455 jymadier 4102 // On récupère la valeur postée :
456     // - on l'échappe pour la base de données
457     // - on supprime les espaces pour faciliter la saisie
458     // - on le positionne en minuscule pour être sûr de la correspondance
459     $posted_dossier = $this->f->db->escapesimple(strtolower(str_replace(' ', '', $this->f->get_submitted_post_value("dossier"))));
460 mbroquet 3730 // Récupération des informations sur le dossier et l'étape d'instruction
461     $sql = "SELECT
462     dossier.dossier, instruction.instruction, instruction.lettretype,
463     instruction.om_final_instruction, instruction.om_fichier_instruction
464     FROM
465     ".DB_PREFIXE."dossier
466     LEFT JOIN ".DB_PREFIXE."instruction
467     ON dossier.dossier=instruction.dossier
468     AND instruction.evenement=".$this->f->getParameter('id_affichage_obligatoire')."
469     WHERE
470 jymadier 4102 LOWER(dossier.dossier)='".$posted_dossier."' ";
471 mbroquet 3730 $res = $this->f->db->query($sql);
472     $this->f->addToLog(__METHOD__.": db->query(\"".$sql."\");", VERBOSE_MODE);
473     $this->f->isDatabaseError($res);
474     $row =& $res->fetchRow(DB_FETCHMODE_ASSOC);
475     // Si il y a un dossier et une étape d'instrcution correspondante à
476 jymadier 4588 // l'événement affichage obligatoire et que l'instruction est bien finalisée
477     if ($res->numrows() != 0
478     && $row["instruction"] != ""
479     && isset($row['om_fichier_instruction'])
480     && isset($row['om_final_instruction'])
481     && $row['om_fichier_instruction'] != ''
482     && $row['om_final_instruction'] == 't') {
483     //
484 mbroquet 3730 $message_class = "valid";
485     $message = _("Cliquez sur le lien ci-dessous pour telecharger votre attestation d'affichage");
486     $message .= " : <br/><br/>";
487     $message .= "<a class='om-prev-icon pdf-16'";
488     $message .= " title=\""._("Attestation d'affichage")."\"";
489 jymadier 4588 $message .= " href='../spg/file.php?obj=instruction&amp;"
490 mbroquet 3730 ."champ=om_fichier_instruction&amp;id=".$row['instruction']."'";
491     $message .= " target='_blank'>";
492     $message .= _("Attestation d'affichage");
493     $message .= "</a>";
494 jymadier 4588 } elseif ($res->numrows() != 0
495     && $row["instruction"] != ""
496     && isset($row['om_fichier_instruction'])
497     && isset($row['om_final_instruction'])
498     && $row['om_fichier_instruction'] != ''
499     && $row['om_final_instruction'] == 'f') {
500     // Si l'instruction n'est pas finalisée on indique à l'utilisateur que l'édition n'est pas possible
501     $message_class = "error";
502     $message = _("L'attestation de ce dossier existe mais n'est pas finalisée.");
503 mbroquet 3730 } elseif ($res->numrows() != 0 && $row["instruction"] == "") {
504     // Si aucune instruction avec l'événement affichage obligatoire n'a
505     // été trouvée
506     $message_class = "error";
507     $message = _("Ce dossier n'a jamais ete affiche.");
508     } else {
509     // Si aucun dossier n'est trouvé
510     $message_class = "error";
511     $message = _("Ce dossier n'existe pas.");
512     }
513     } else {
514     // Si aucune valeur n'a été saisie dans le champs dossier
515     $message_class = "error";
516     $message = _("Veuiller saisir un No de dossier.");
517     }
518     }
519    
520     /**
521     * Affichage des messages et du formulaire
522     */
523     // Affichage de la description de l'écran
524     $this->f->displayDescription(_("Cet ecran permet d'imprimer l'attestation d'affichage ".
525     "reglementaire d'un dossier d'instruction. Il suffit de ".
526     "saisir le numero du dossier d'instruction puis de ".
527     "valider pour obtenir le lien de telechargement de ".
528     "l'attestation permettant de l'imprimer."));
529     // Affichage du message de validation ou d'erreur
530     if (isset($message) && isset($message_class) && $message != "") {
531     $this->f->displayMessage($message_class, $message);
532     }
533     // Inclusion de la classe de gestion des formulaires
534     require_once "../obj/om_formulaire.class.php";
535     // Ouverture du formulaire
536     echo "\t<form";
537     echo " method=\"post\"";
538     echo " id=\"affichage_reglementaire_attestation_form\"";
539     echo " action=\"\"";
540     echo ">\n";
541     // Paramétrage des champs du formulaire
542     $champs = array("dossier");
543     // Création d'un nouvel objet de type formulaire
544     $form = new formulaire(NULL, 0, 0, $champs);
545     // Paramétrage des champs du formulaire
546     $form->setLib("dossier", _("No de dossier"));
547     $form->setType("dossier", "text");
548     $form->setTaille("dossier", 25);
549     $form->setMax("dossier", 25);
550     // Affichage du formulaire
551     $form->entete();
552     $form->afficher($champs, 0, false, false);
553     $form->enpied();
554     // Affichage du bouton
555     echo "\t<div class=\"formControls\">\n";
556     $this->f->layout->display_form_button(array("value" => _("Valider")));
557     echo "\t</div>\n";
558     // Fermeture du fomulaire
559     echo "\t</form>\n";
560     }
561    
562    
563     /**
564     * VIEW - view_get_adresse_by_cadastre
565     *
566     * Permet de récupérer l'adresse de la première référence cadastrale via le sig.
567     *
568     * @return void
569     */
570     public function view_get_adresse_by_cadastre() {
571     //
572     $this->f->disableLog();
573     $refcads = "";
574     // Récupération des références cadastrales passées en paramètre
575     if ($this->f->get_submitted_post_value("refcad") != null) {
576     $refcads = $this->f->get_submitted_post_value("refcad");
577     }
578     // Si ce n'est pas un tableau de références
579     if (is_array($refcads) === false){
580     printf(json_encode(_("Aucune reference cadastrale fournie")));
581     return;
582     }
583     // TODO : Ajouter les tests
584     // XXX
585     // Pour les utilisateur mono, il faut récupérer la session mais s'il s'agit d'un
586     // utilisateur commnauté, il faut récupérer la valeur du champ om_collectivite
587     // et vérifier que celui-ci n'est pas vide sinon afficher un message d'erreur
588     $collectivite_idx = $_SESSION["collectivite"];
589     if ($this->f->get_submitted_post_value("om_collectivite") != null) {
590     $collectivite_idx = $this->f->get_submitted_post_value("om_collectivite");
591     }
592     $collectivite_param = $this->f->getCollectivite($collectivite_idx);
593     // Si le paramètre option_sig de la commune n'a pas la valeur 'sig_externe', on
594     // affiche une erreur.
595     if ($collectivite_param['option_sig'] != 'sig_externe') {
596     printf(json_encode(_("La localisation SIG n'est pas activee pour cette commune.")));
597     return;
598     }
599    
600     $wParcelle = "";
601     //Formatage des références cadastrales pour l'envoi
602     foreach ($refcads as $refcad) {
603     //Pour chaque ligne
604     foreach ($refcad as $value) {
605     //On ajoute les données dans le tableau que si quartier + section + parcelle
606     //a été fourni
607     if ($value["quartier"] !== "" && $value["section"] !== "" &&
608     $value["parcelle"] !== "") {
609     //
610     $wParcelle .= $value["quartier"].$value["section"].$value["parcelle"];
611     //Si on a des délimiteurs
612     if (isset($value["delimit"][0])) {
613    
614     //Pour chaque délimiteur
615     for($i = 0; $i < count($value["delimit"][0]); $i++) {
616     //
617     $wParcelle .= $value["delimit"][0][$i];
618     }
619     }
620     // Séparateur
621     $wParcelle .= ";";
622     }
623     }
624     }
625    
626     try {
627     $geoads = new geoads($collectivite_param);
628     } catch (geoads_exception $e) {
629     printf(json_encode($e->getMessage()));
630     return;
631     }
632     // XXX
633     // Pour les utilisateur mono, il faut récupérer la session mais s'il s'agit d'un
634     // utilisateur commnauté, il faut récupérer la valeur du champ om_collectivite
635     // et vérifier que celui-ci n'est pas vide sinon afficher un message d'erreur
636     // Formatage des parcelles pour l'envoi au webservice
637     $liste_parcelles = $this->f->parseParcelles($wParcelle, $collectivite_idx);
638     try {
639     //On lance la requête SOAP
640     $execute = $geoads->verif_parcelle($liste_parcelles);
641     } catch (geoads_exception $e) {
642     printf(json_encode($e->getMessage()));
643     return;
644     }
645    
646     // Vérifie l'existence de la 1ere parcelles
647     if (!isset($execute[0]) or $execute[0]['existe'] != true) {
648     printf(json_encode(_("Aucune adresse ne correspond a la reference cadastrale fournie")));
649     return;
650     }
651    
652     $response['return_addr'] = array();
653     // Si plusieurs parcelles sont retournées on n'utilise que la première pour
654     // récupérer l'adresse
655     if (isset($execute[0]) && is_array($execute[0])) {
656     $adresse_ws = $execute[0];
657     }
658     //Récupération du nom de la collectivité
659     $sql = "SELECT UPPER(
660     valeur)
661     FROM
662     ".DB_PREFIXE."om_parametre
663     WHERE
664     libelle = 'ville' and om_collectivite = ".$collectivite_idx;
665     $this->f->addToLog(__METHOD__." : ".$sql." execute <br>", EXTRA_VERBOSE_MODE);
666    
667     $ville = $this->f->db->getOne($sql);
668     $this->f->isDatabaseError($ville);
669    
670     $response["return_addr"]["localite"] = $ville;
671    
672     // Formate le code postal
673     $code_postal = '';
674     // On vérifie que l'arrondissement retourné est bien une valeur
675     // cohérente avant d'essayer de récupérer son code postal en base de
676     // données
677     if (isset($adresse_ws["adresse"]['arrondissement']) === true
678     && $adresse_ws["adresse"]['arrondissement'] != ""
679     && is_numeric($adresse_ws["adresse"]['arrondissement']) === true) {
680     // Requête sql
681     $sqlDonneesArrdt = "SELECT code_postal
682     FROM ".DB_PREFIXE."arrondissement
683     WHERE arrondissement = ".$adresse_ws["adresse"]['arrondissement'];
684     $code_postal = $this->f->db->getOne($sqlDonneesArrdt);
685     $this->f->addToLog("app/geolocalisation_treatment.php : db->query(\"".$sqlDonneesArrdt."\")", VERBOSE_MODE);
686     $this->f->isDatabaseError($code_postal);
687     } else {
688     //Récupération du code postal
689     $sql = "SELECT
690     valeur
691     FROM
692     ".DB_PREFIXE."om_parametre
693     WHERE
694     libelle = 'cp' and om_collectivite = ".$collectivite_idx;
695     $this->f->addToLog(__METHOD__." : ".$sql." execute <br>", EXTRA_VERBOSE_MODE);
696    
697     $code_postal = $this->f->db->getOne($sql);
698     $this->f->isDatabaseError($code_postal);
699     }
700    
701     $response['return_addr']['code_postal'] = $code_postal;
702    
703     // On coupe les chaînes retournées afin que leurs tailles
704     // correspondent aux tailles des champs en base de données
705     if ($adresse_ws["adresse"]['numero_voie'] !== '') {
706     $response['return_addr']['numero_voie'] = substr($adresse_ws["adresse"]['numero_voie'], 0, 20);
707     }
708     if ($adresse_ws["adresse"]['type_voie'] !== '' AND $adresse_ws["adresse"]['nom_voie'] !== '') {
709     $response['return_addr']['nom_voie'] = substr(
710     $adresse_ws["adresse"]['type_voie']." ".$adresse_ws["adresse"]['nom_voie'],
711     0,
712     30
713     );
714     }
715     //
716     printf(json_encode($response));
717     return;
718     }
719    
720    
721 softime 6929 function setValF($val = array()) {
722 mbroquet 3730 parent::setValF($val);
723     // Récupération des id demandeurs postés
724     $this->getPostedValues();
725     //$this->valIdDemandeur=$this->postedIdDemandeur;
726 softime 6565
727     // On retraite le texte saisie pour jointure en BDD.
728     // Traitement identique à celui effectué en JavaScript
729     // dans la fonction lookingForAutorisationContestee().
730     if ($this->valF['autorisation_contestee'] !== NULL) {
731     $val = trim($this->valF['autorisation_contestee']);
732     $this->valF['autorisation_contestee'] = preg_replace(
733     '/\s+/',
734     '',
735     $val
736     );
737     }
738    
739 mbroquet 3730 }
740    
741    
742     /**
743     * Méthode permettant de récupérer les valeurs du dossier d'autorisation
744     * correspondant à la nouvelle demande
745     */
746     function getValFromDossier($dossier_autorisation) {
747     include "../sql/pgsql/demande.form.inc.php";
748     $sql=str_replace("<idx>",$this->getParameter("idx_dossier"),
749     $sql_infos_dossier);
750     $res = $this->db->query($sql);
751     $this->f->addToLog("getValFromDossier(): db->query(\"".$sql."\")", VERBOSE_MODE);
752     $this->f->isDatabaseError($res);
753     $row = & $res->fetchRow(DB_FETCHMODE_ASSOC);
754     return $row;
755     }
756    
757     /*
758     * La date du jour par défaut dans le champs date_demande
759     * Put the date of the day by default into the field date_demande
760     */
761 softime 6929 function setVal(&$form, $maj, $validation, &$db = null, $DEBUG = null) {
762     parent::setVal($form, $maj, $validation, $db, $DEBUG);
763 mbroquet 3730 if($maj == 0) {
764    
765     // Définition de la date de dépôt par défaut
766     if($this->f->getParameter('option_date_depot_demande_defaut') !== 'false') {
767     $form->setVal("date_demande", date('d/m/Y'));
768     }
769    
770     // Récupération des valeurs du dossier d'autorisation correspondant
771     if($this->getParameter("idx_dossier") != "") {
772     $val_autorisation = $this->getValFromDossier(
773     $this->getParameter("idx_dossier"));
774     foreach($val_autorisation as $champ => $value) {
775     $form->setVal($champ,$value);
776     }
777     }
778     }
779     }
780     function getDataSubmit() {
781    
782     $datasubmit = parent::getDataSubmit();
783     if($this->getParameter("idx_dossier") != "") {
784     $datasubmit .= "&idx_dossier=".$this->getParameter("idx_dossier");
785     }
786     return $datasubmit;
787     }
788    
789     /**
790 softime 7067 * Retourne le type de formulaire : ADS, CTX RE, CTX IN ou DPC.
791 softime 6565 *
792     * @return, string Type de formulaire.
793     */
794     function get_type_affichage_formulaire() {
795    
796     $sql = "SELECT dossier_autorisation_type.affichage_form
797     FROM ".DB_PREFIXE."demande_type
798     INNER JOIN ".DB_PREFIXE."dossier_autorisation_type_detaille
799     ON demande_type.dossier_autorisation_type_detaille=dossier_autorisation_type_detaille.dossier_autorisation_type_detaille
800     INNER JOIN ".DB_PREFIXE."dossier_autorisation_type
801     ON dossier_autorisation_type.dossier_autorisation_type=dossier_autorisation_type_detaille.dossier_autorisation_type
802     WHERE demande_type.demande_type=".$this->valF["demande_type"];
803     $type_aff_form = $this->db->getOne($sql);
804     $this->f->addToLog(__METHOD__ . " : db->getOne(\"".$sql."\")", VERBOSE_MODE);
805     if($this->f->isDatabaseError($type_aff_form, true) === true) {
806     return false;
807     }
808     return $type_aff_form;
809     }
810    
811     /**
812 mbroquet 3730 * Méthode de verification du contenu
813     */
814 softime 6929 function verifier($val = array(), &$db = null, $DEBUG = null) {
815 mbroquet 3730 parent::verifier($val, $db, $DEBUG);
816    
817 softime 6565 $type_aff_form = $this->get_type_affichage_formulaire();
818     if ($type_aff_form ===false) {
819 mbroquet 3730 $this->correct = false;
820 softime 6565 $this->addToMessage(_("Une erreur s'est produite lors de l'ajout de ce dossier. Veuillez contacter votre administrateur."));
821 mbroquet 3730 }
822 softime 6565 switch ($type_aff_form) {
823     case 'ADS':
824     case 'CTX RE':
825     if(!isset($this->postedIdDemandeur["petitionnaire_principal"]) OR
826     empty($this->postedIdDemandeur["petitionnaire_principal"]) AND
827     !is_null($this->form)) {
828     $this->correct = false;
829     $this->addToMessage(_("La saisie d'un petitionnaire principal est obligatoire."));
830     }
831     break;
832     case 'CTX IN':
833     if(!isset($this->postedIdDemandeur["contrevenant_principal"]) OR
834     empty($this->postedIdDemandeur["contrevenant_principal"]) AND
835     !is_null($this->form)) {
836     $this->correct = false;
837     $this->addToMessage(_("La saisie d'un contrevenant principal est obligatoire."));
838     }
839     break;
840 softime 7067 case 'DPC':
841     if(!isset($this->postedIdDemandeur["petitionnaire_principal"]) OR
842     empty($this->postedIdDemandeur["petitionnaire_principal"]) AND
843     !is_null($this->form)) {
844     $this->correct = false;
845     $this->addToMessage(_("La saisie d'un petitionnaire principal est obligatoire."));
846     }
847     if(!isset($this->postedIdDemandeur["bailleur_principal"]) OR
848     empty($this->postedIdDemandeur["bailleur_principal"]) AND
849     !is_null($this->form)) {
850     $this->correct = false;
851     $this->addToMessage(_("La saisie d'un bailleur principal est obligatoire."));
852     }
853     break;
854 softime 6565
855     }
856    
857 mbroquet 3730 }
858    
859     /**
860     * Configuration des select
861     */
862 softime 6929 function setSelect(&$form, $maj, &$db = null, $debug = null) {
863 mbroquet 3730
864     if(file_exists ("../sql/".OM_DB_PHPTYPE."/".$this->table.".form.inc.php"))
865     include ("../sql/".OM_DB_PHPTYPE."/".$this->table.".form.inc.php");
866     elseif(file_exists ("../sql/".OM_DB_PHPTYPE."/".$this->table.".form.inc"))
867     include ("../sql/".OM_DB_PHPTYPE."/".$this->table.".form.inc");
868    
869     // Méthode de récupération des valeurs du select "demande_type"
870     if ($maj < 2
871     && (($this->f->get_submitted_get_value('obj') !== null && $this->f->get_submitted_get_value('obj') != "demande")
872     OR ($this->f->get_submitted_get_value('obj') === null))) {
873     // demande_type
874     $form->setSelect('demande_type', $this->loadSelectDemandeType($form, $maj, $db, $debug, "dossier_autorisation_type_detaille"));
875     } else {
876     // demande_type
877     $this->init_select($form, $db, $maj, $debug, "demande_type",
878     $sql_demande_type, $sql_demande_type_by_id, false);
879     }
880     // arrondissement
881     $this->init_select($form, $db, $maj, $debug, "arrondissement",
882     $sql_arrondissement, $sql_arrondissement_by_id, false);
883    
884 softime 6565 // Filtre des demandes par groupes
885     $group_clause = array();
886     $ajout_condition_requete = "";
887     foreach ($_SESSION["groupe"] as $key => $value) {
888     if($value["enregistrement_demande"] !== true) {
889     continue;
890     }
891     $group_clause[$key] = "(groupe.code = '".$key."'";
892     if($value["confidentiel"] !== true) {
893     $group_clause[$key] .= " AND dossier_autorisation_type.confidentiel IS NOT TRUE";
894     }
895     $group_clause[$key] .= ")";
896     }
897     // Mise en chaîne des clauses
898     $conditions = implode(" OR ", $group_clause);
899     if($conditions !== "") {
900     $ajout_condition_requete .= " AND (".$conditions.")";
901     }
902     // Les clauses sont une white list. Cela qui signifie que l'on
903     // rajoute une condition irréalisable si absence de clause.
904     if ($ajout_condition_requete === '') {
905     $ajout_condition_requete = 'AND false';
906     }
907     $sql_dossier_autorisation_type_detaille = str_replace('<ajout_condition_requete>', $ajout_condition_requete, $sql_dossier_autorisation_type_detaille);
908 mbroquet 3730 $this->init_select($form, $db, $maj, $debug, "dossier_autorisation_type_detaille",
909     $sql_dossier_autorisation_type_detaille, $sql_dossier_autorisation_type_detaille_by_id, false);
910    
911     // om_collectivite
912     $this->init_select($form, $this->f->db, $maj, null, "om_collectivite", $sql_om_collectivite, $sql_om_collectivite_by_id, false);
913    
914    
915 softime 6565 // autorisation_contestee
916     $this->init_select($form, $this->f->db, $maj, null, "autorisation_contestee", $sql_autorisation_contestee, $sql_autorisation_contestee_by_id, false);
917 mbroquet 3730 }
918    
919     /**
920     * Charge le select du champ type de demande
921     * @param object $form Formulaire
922     * @param int $maj Mode d'insertion
923     * @param object $db Database
924     * @param bool $debug Debug active ou pas
925     * @param string $champ champ activant le filtre
926     * @return array Contenu du select
927     */
928     function loadSelectDemandeType(&$form, $maj, &$db, $debug, $champ) {
929    
930     //
931     if(file_exists ("../sql/".OM_DB_PHPTYPE."/".$this->table.".form.inc.php"))
932     include ("../sql/".OM_DB_PHPTYPE."/".$this->table.".form.inc.php");
933     elseif(file_exists ("../sql/".OM_DB_PHPTYPE."/".$this->table.".form.inc"))
934     include ("../sql/".OM_DB_PHPTYPE."/".$this->table.".form.inc");
935    
936     // Contenu de la liste à choix
937     $contenu=array();
938     $contenu[0][0]='';
939     $contenu[1][0]=_('choisir')."&nbsp;"._("demande_type");
940    
941     //Récupère l'id du type de dossier d'autorisation détaillé
942     $id_dossier_autorisation_type_detaille = "";
943     if ($this->f->get_submitted_post_value($champ) !== null) {
944     $id_dossier_autorisation_type_detaille = $this->f->get_submitted_post_value($champ);
945     } elseif($this->getParameter($champ) != "") {
946     $id_dossier_autorisation_type_detaille = $this->getParameter($champ);
947     } elseif(isset($form->val[$champ])) {
948     $id_dossier_autorisation_type_detaille = $form->val[$champ];
949     }
950    
951     // Récupération de paramètre pour le rechargement ajax du select
952     $idx_dossier = $this->getParameter("idx_dossier");
953    
954     // Récupère l'id de la nature de la demande
955     $id_demande_nature = "1";
956     if (isset($idx_dossier) AND $idx_dossier != "") {
957     $id_demande_nature = '2';
958     }
959    
960     // Ajout de condition pour la requête
961     $ajout_condition_requête = "";
962     if ($id_demande_nature == '2') {
963    
964     //On récupère le dossier d'autorisation
965     $sql = "SELECT dossier_autorisation
966     FROM ".DB_PREFIXE."dossier
967     WHERE dossier = '".$idx_dossier."'";
968     $dossier_autorisation = $this->db->getOne($sql);
969    
970     $this->f->addToLog(
971     "loadSelectDemandeType() : db->getone(\"".$sql."\");",
972     VERBOSE_MODE
973     );
974     $this->f->isDatabaseError($dossier_autorisation);
975    
976     //On récupère l'état du dernier dossier d'instruction
977     $sql = "SELECT etat
978     FROM ".DB_PREFIXE."dossier
979     WHERE dossier_autorisation = '".$dossier_autorisation."' AND
980     version = (SELECT max(version) FROM ".DB_PREFIXE."dossier
981     WHERE dossier_autorisation = '".$dossier_autorisation."' )";
982     $etatDernierDi = $this->db->getOne($sql);
983     $this->f->addToLog(
984     "loadSelectDemandeType() : db->getone(\"".$sql."\");",
985     VERBOSE_MODE
986     );
987     $this->f->isDatabaseError($etatDernierDi);
988    
989 softime 6565 $ajout_condition_requête = " AND etat.etat = '".$etatDernierDi."'
990     ";
991 mbroquet 3730 }
992    
993     //
994     if ($id_dossier_autorisation_type_detaille != "") {
995     //Si l'id du type de dossier d'autorisation détaillé est renseigné
996     $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);
997     // Ajoute une condition sur la nature de la demande
998     $sql_demande_type_by_dossier_autorisation_type_detaille = str_replace('<idx_demande_nature>', $id_demande_nature, $sql_demande_type_by_dossier_autorisation_type_detaille);
999     // Permet d'ajouter une condition
1000     $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);
1001     $res = $this->db->query($sql_demande_type_by_dossier_autorisation_type_detaille);
1002     $this->addToLog("db->query(\"".$sql_demande_type_by_dossier_autorisation_type_detaille."\");", VERBOSE_MODE);
1003     $this->f->isDatabaseError($res);
1004     //Les résultats de la requête sont stocké dans le tableau contenu
1005     $k=1;
1006     while ($row=& $res->fetchRow()){
1007     $contenu[0][$k]=$row[0];
1008     $contenu[1][$k]=$row[1];
1009     $k++;
1010     }
1011     }
1012    
1013     // Retourne le contenu de la liste
1014     return $contenu;
1015     }
1016    
1017     /*
1018     * Ajout du fielset
1019     * Add fieldset
1020     */
1021     function setLayout(&$form, $maj){
1022 softime 6565 if ( $maj < 2) {
1023 mbroquet 3730
1024 softime 6565 // Type de dossier/demande
1025     $form->setBloc('om_collectivite','D',"","col_12 dossier_type");
1026     $form->setFieldset('om_collectivite','D'
1027 mbroquet 3730 ,_('Type de dossier/demande'));
1028 softime 6565 $form->setFieldset('etat','F','');
1029     $form->setBloc('etat','F');
1030    
1031     // Autorisation contestée
1032     $form->setBloc('autorisation_contestee','D',"","col_12 demande_autorisation_contestee_hidden_bloc");
1033     $form->setFieldset('autorisation_contestee','D'
1034     ,_('Autorisation contestée'));
1035     $form->setFieldset('autorisation_contestee','F','');
1036     $form->setBloc('autorisation_contestee','F');
1037    
1038     // Date de la demande
1039     $form->setBloc('date_demande','D',"","col_4 demande_hidden_bloc");
1040     $form->setFieldset('date_demande','D',_('Date de la demande'));
1041     $form->setFieldset('date_demande','F','');
1042     $form->setBloc('date_demande','F');
1043    
1044 softime 7067 // Localisation
1045 softime 6565 $form->setBloc('terrain_references_cadastrales','D',"",
1046     "col_12 localisation demande_hidden_bloc");
1047 softime 7067 $form->setFieldset('terrain_references_cadastrales','D',_('Localisation'));
1048 softime 6565 $form->setFieldset('terrain_superficie','F','');
1049     $form->setBloc('terrain_superficie','F');
1050    
1051     // Demandeurs
1052     // → cf. formSpecificContent()
1053     }
1054     if ( $maj == 3 ) {
1055     $form->setBloc('om_collectivite','D',"","dossier_type col_12");
1056     $form->setBloc('om_collectivite','D',"","dossier_type col_8");
1057     $form->setFieldset('om_collectivite','D'
1058     ,_('Type de dossier/demande'));
1059     $form->setFieldset('dossier_autorisation','F','');
1060     $form->setBloc('dossier_autorisation','F');
1061 mbroquet 3730 /*Fin bloc 1*/
1062    
1063     // Affichage de l'état du dossier d'instruction
1064     $form->setBloc('etat','D',"","col_4 demande_etat_hidden_bloc");
1065     $form->setFieldset('etat','D',_('etat du dossier_instruction'));
1066     $form->setFieldset('etat','F','');
1067     $form->setBloc('etat','F');
1068     $form->setBloc('etat','F');
1069    
1070 softime 6565 $form->setBloc('autorisation_contestee','DF',"","demande_autorisation_contestee_hidden_bloc");
1071    
1072 mbroquet 3730 /*Champ sur lequel s'ouvre le bloc 2 */
1073     $form->setBloc('date_demande','D',"","col_4 demande_hidden_bloc");
1074     $form->setFieldset('date_demande','D',_('Date de la demande'));
1075     $form->setFieldset('date_demande','F','');
1076     $form->setBloc('date_demande','F');
1077     /*Fin bloc 2*/
1078    
1079     /*Champ sur lequel s'ouvre le bloc 3 */
1080     $form->setBloc('terrain_references_cadastrales','D',"",
1081     "localisation col_12 demande_hidden_bloc");
1082 softime 7067 $form->setFieldset('terrain_references_cadastrales','D',_('Localisation'));
1083 mbroquet 3730 $form->setFieldset('terrain_superficie','F','');
1084     $form->setBloc('terrain_superficie','F');
1085     /*Fin bloc 4*/
1086     }
1087     }
1088    
1089     /*
1090     * Ajoute des actions sur les deux premiers select
1091     * Add actions on the two first select
1092     */
1093     function setOnchange(&$form,$maj){
1094     parent::setOnchange($form,$maj);
1095    
1096     $form->setOnchange("dossier_autorisation_type_detaille","changeDemandeType();");
1097 softime 6565 $form->setOnchange("demande_type","manage_document_checklist(this);showFormDemande();");
1098 mbroquet 3730 }
1099    
1100     function setLib(&$form,$maj) {
1101     parent::setLib($form,$maj);
1102     //libelle des champs
1103    
1104     $form->setLib('terrain_adresse_voie',_('terrain_adresse'));
1105 softime 6565 $form->setLib('autorisation_contestee',_('numéro du dossier contesté').' '.$form->required_tag);
1106 mbroquet 3730 }
1107 softime 6565
1108 mbroquet 3730 /*
1109     * Cache le champ terrain_references_cadastrales
1110     * Hide the fiels terrain_references_cadastrales
1111     */
1112     function setType(&$form,$maj) {
1113     parent::setType($form,$maj);
1114    
1115     $form->setType('dossier_instruction', 'hidden');
1116     $form->setType('dossier_autorisation', 'hidden');
1117 softime 6565 $form->setType('autorisation_contestee', 'autorisation_contestee');
1118 mbroquet 3730
1119     $form->setType('instruction_recepisse', 'hidden');
1120     $form->setType('arrondissement', 'hidden');
1121    
1122     $form->setType('etat', 'hidden');
1123    
1124     // Si il s'agit d'une demande sur dossier existant on desactive tous les champs
1125     // sauf demande_type
1126     if(($maj == 0 AND $this-> getParameter("idx_dossier"))) {
1127     $form->setType('dossier_autorisation_type_detaille', 'selecthiddenstatic');
1128     $form->setType('etat', 'hiddenstatic');
1129     $form->setType('terrain_references_cadastrales', 'hiddenstatic');
1130     $form->setType('terrain_adresse_voie_numero', 'hiddenstatic');
1131     $form->setType('terrain_adresse_voie', 'hiddenstatic');
1132     $form->setType('terrain_adresse_lieu_dit', 'hiddenstatic');
1133     $form->setType('terrain_adresse_localite', 'hiddenstatic');
1134     $form->setType('terrain_adresse_code_postal', 'hiddenstatic');
1135     $form->setType('terrain_adresse_bp', 'hiddenstatic');
1136     $form->setType('terrain_adresse_cedex', 'hiddenstatic');
1137     $form->setType('terrain_superficie', 'hiddenstatic');
1138     }
1139     if($maj == 1) {
1140     $form->setType('dossier_autorisation_type_detaille', 'selecthiddenstatic');
1141     $form->setType('demande_type', 'selecthiddenstatic');
1142     }
1143     if($maj == 3) {
1144     $form->setType('terrain_references_cadastrales', 'referencescadastralesstatic');
1145     }
1146    
1147     }
1148    
1149     /**
1150     * Permet de recupérer l'identifiant du cerfa du DATD séléctionné
1151     * par l'utilisateur.
1152     *
1153     * @return integer identifiant du cerfa
1154     */
1155     function getIdCerfa() {
1156     if($this->cerfa != null) {
1157     return $this->cerfa;
1158     }
1159     // Récupération du cerfa pour le type d'instruction sélectionnée et valide
1160     $sql = "SELECT
1161     dossier_autorisation_type_detaille.cerfa
1162     FROM
1163     ".DB_PREFIXE."dossier_autorisation_type_detaille
1164     JOIN
1165     ".DB_PREFIXE."cerfa
1166     ON
1167     dossier_autorisation_type_detaille.cerfa = cerfa.cerfa
1168     WHERE
1169     now()<=om_validite_fin
1170     AND now()>=om_validite_debut
1171     AND dossier_autorisation_type_detaille=".
1172     $this->valF['dossier_autorisation_type_detaille'];
1173     $this->cerfa = $this->db->getOne($sql);
1174     $this->f->addToLog(
1175     "ajoutDossierInstruction() : db->getone(\"".$sql."\");",
1176     VERBOSE_MODE
1177     );
1178     $this->f->isDatabaseError($this->cerfa);
1179     return $this->cerfa;
1180     }
1181    
1182    
1183     /**
1184     * Méthode permettant d'ajouter un dossier d'autorisation.
1185     *
1186     * @param integer $id identifiant de la demande
1187     * @param database &$db handler de la base de donnée
1188     * @param array $val tableau de valeurs postées via le formulaire
1189     * @param boolean $DEBUG debug
1190     *
1191     * @return boolean false si erreur
1192     */
1193     function ajoutDossierAutorisation($id, &$db, $val, $DEBUG) {
1194     require_once '../obj/dossier_autorisation.class.php';
1195     $dossier_autorisation = new dossier_autorisation("]", $db, $DEBUG);
1196     $id_etat_initial_da =
1197     $this->f->getParameter('id_etat_initial_dossier_autorisation');
1198    
1199     // Vérification de l'existance d'un état initial des DA dans la table
1200     // om_parametre afin d'éviter d'eventuelle erreur de base de données
1201     if(isset($id_etat_initial_da)) {
1202     $sql = "SELECT count(*) FROM ".DB_PREFIXE."etat_dossier_autorisation
1203     WHERE etat_dossier_autorisation = ".$id_etat_initial_da;
1204     $count = $this->db->getOne($sql);
1205     $this->f->addToLog(
1206     "ajoutDossierAutorisation() : db->getOne(\"".$sql."\")",
1207     VERBOSE_MODE
1208     );
1209     if ($this->f->isDatabaseError($count, true)){
1210     $this->f->addToLog(
1211     "ajoutDossierAutorisation() : ERROR db->getOne(\"".$sql."\")",
1212     DEBUG_MODE
1213     );
1214 softime 6565
1215 mbroquet 3730 return false;
1216     }
1217     if($count != 1) {
1218     $this->f->addToLog(__METHOD__."() : ERROR - Plusieurs états de dossier d'autorisation ont cet identifiant.", DEBUG_MODE);
1219 softime 6565
1220 mbroquet 3730 return false;
1221 softime 6565 }
1222 mbroquet 3730
1223 softime 6565 // On récupère les paramètres de la collectivité concernée
1224     // par la demande.
1225     $collectivite_parameters = $this->f->getCollectivite($this->valF['om_collectivite']);
1226     // Le paramètre 'insee' est obligatoire si il n'est pas présent
1227     // dans le tableau des paramètres alors on stoppe le traitement.
1228     if (!isset($collectivite_parameters['insee'])) {
1229     $this->f->addToLog(
1230     __METHOD__."(): ERROR om_parametre 'insee' inexistant.",
1231     DEBUG_MODE
1232     );
1233 mbroquet 3730
1234 softime 6565 return false;
1235     }
1236 mbroquet 3730
1237 softime 6565 // La méthode ajouter prend en paramètre un tableau associatif
1238     // contenant toutes les champs de la classe instanciée,
1239     // d'où l'initialisation du tableau en bouclant sur la liste des
1240     // champs du DA
1241     foreach($dossier_autorisation->champs as $value) {
1242     $valAuto[$value] = null;
1243 mbroquet 3730 }
1244 softime 6565
1245     // Définition des valeurs à insérer
1246     $valAuto['om_collectivite']=
1247     $this->valF['om_collectivite'];
1248     $valAuto['dossier_autorisation']="";
1249     $valAuto['exercice']=null;
1250     $valAuto['insee']= $collectivite_parameters['insee'];
1251     $valAuto['arrondissement']=
1252     $this->getArrondissement($this->valF['terrain_adresse_code_postal']);
1253     $valAuto['etat_dossier_autorisation']=$id_etat_initial_da;
1254     $valAuto['erp_numero_batiment']=null;
1255     $valAuto['erp_ouvert']=null;
1256     $valAuto['erp_arrete_decision']=null;
1257     $valAuto['dossier_autorisation_type_detaille']=
1258     $this->valF['dossier_autorisation_type_detaille'];
1259     $valAuto['depot_initial']=
1260     $this->dateDBToForm($this->valF['date_demande']);
1261     $valAuto['terrain_references_cadastrales']=
1262     $this->valF['terrain_references_cadastrales'];
1263     $valAuto['terrain_adresse_voie_numero']=
1264     $this->valF['terrain_adresse_voie_numero'];
1265     $valAuto['terrain_adresse_voie']=$this->valF['terrain_adresse_voie'];
1266     $valAuto['terrain_adresse_lieu_dit']=
1267     $this->valF['terrain_adresse_lieu_dit'];
1268     $valAuto['terrain_adresse_localite']=
1269     $this->valF['terrain_adresse_localite'];
1270     $valAuto['terrain_adresse_code_postal']=
1271     $this->valF['terrain_adresse_code_postal'];
1272     $valAuto['terrain_adresse_bp']=$this->valF['terrain_adresse_bp'];
1273     $valAuto['terrain_adresse_cedex']=$this->valF['terrain_adresse_cedex'];
1274     $valAuto['terrain_superficie']=$this->valF['terrain_superficie'];
1275     $valAuto['numero_version']=-1;
1276     // Ajout du dossier dans la base
1277     if($dossier_autorisation->ajouter($valAuto, $db, $DEBUG) === false) {
1278     $this->f->addToLog(__METHOD__."() : ERROR - Impossible d'ajouter le dossier d'autorisation.", DEBUG_MODE);
1279    
1280     return false;
1281     }
1282     // Liaison du dossier ajouter à la demande
1283     $this->valF['dossier_autorisation'] =
1284     $dossier_autorisation->valF['dossier_autorisation'];
1285    
1286     return true;
1287 mbroquet 3730 }
1288    
1289 softime 6565 $this->f->addToLog(__METHOD__."() : ERROR - Le paramétre id_etat_initial_dossier_autorisation n'existe pas.", DEBUG_MODE);
1290    
1291     return false;
1292 mbroquet 3730 }
1293    
1294     /**
1295     * Méthode permettant d'ajouter un dossier d'instruction.
1296     *
1297     * @param integer $id identifiant de la demande
1298     * @param database &$db handler de la base de donnée
1299     * @param array $val tableau de valeurs postées via
1300     * le formulaire
1301     * @param boolean $DEBUG debug
1302     * @param integer $dossier_instruction_type identifiant du DI type
1303     *
1304     * @return boolean false si erreur
1305     */
1306     function ajoutDossierInstruction($id, &$db, $val, $DEBUG, $dossier_instruction_type) {
1307     require_once '../obj/dossier.class.php';
1308     $dossier = new dossier("]", $db, $DEBUG);
1309     foreach($dossier->champs as $value) {
1310     $valInstr[$value] = null;
1311     }
1312     require_once '../obj/dossier_autorisation_type_detaille.class.php';
1313     $datd = new dossier_autorisation_type_detaille(
1314     $this->valF['dossier_autorisation_type_detaille'],
1315     $db,
1316     $DEBUG
1317     );
1318    
1319     /*Ajout de la variable dossier_instruction_type à l'objet dossier pour le
1320     * versionning
1321     */
1322     $dossier->setDossierInstructionType($dossier_instruction_type);
1323    
1324     // Définition des valeurs à entrée dans la table
1325     $valInstr['om_collectivite']=$this->valF['om_collectivite'];
1326     $valInstr['dossier_instruction_type']=$dossier_instruction_type;
1327     $valInstr['date_depot']=$this->dateDBToForm($this->valF['date_demande']);
1328     $valInstr['date_dernier_depot']=$this->dateDBToForm($this->valF['date_demande']);
1329     $valInstr['date_demande']=$this->dateDBToForm($this->valF['date_demande']);
1330     $valInstr['depot_initial']=$this->dateDBToForm($this->valF['date_demande']);
1331     $annee = DateTime::createFromFormat("Y-m-d", $this->valF['date_demande']);
1332     $valInstr['annee']=$annee->format("y");
1333     $valInstr['terrain_references_cadastrales']=
1334     $this->valF['terrain_references_cadastrales'];
1335     $valInstr['terrain_adresse_voie_numero']=
1336     $this->valF['terrain_adresse_voie_numero'];
1337     $valInstr['terrain_adresse_voie']=$this->valF['terrain_adresse_voie'];
1338     $valInstr['terrain_adresse_lieu_dit']=$this->valF['terrain_adresse_lieu_dit'];
1339     $valInstr['terrain_adresse_localite']=$this->valF['terrain_adresse_localite'];
1340     $valInstr['terrain_adresse_code_postal']=
1341     $this->valF['terrain_adresse_code_postal'];
1342     $valInstr['terrain_adresse_bp']=$this->valF['terrain_adresse_bp'];
1343     $valInstr['terrain_adresse_cedex']=$this->valF['terrain_adresse_cedex'];
1344     $valInstr['terrain_superficie']=$this->valF['terrain_superficie'];
1345     $valInstr['description']="";
1346     $valInstr['dossier_autorisation']=$this->valF['dossier_autorisation'];
1347 softime 6565 if ($this->valF["autorisation_contestee"] != "") {
1348     $valInstr['autorisation_contestee'] = str_replace(' ', '', $this->valF['autorisation_contestee']);
1349     }
1350 mbroquet 3730
1351     /*
1352     * Gestion de la qualification
1353     * */
1354     // Initialise le champ à false
1355     $valInstr['a_qualifier'] = false;
1356    
1357     // Récupère l'information depuis le type de la demande
1358     $qualification = $this->get_qualification($val['demande_type']);
1359    
1360     // Si le dossier doit être à qualifier
1361     if ($qualification === 't') {
1362     // Met le champ à true
1363     $valInstr['a_qualifier'] = true;
1364     }
1365    
1366 softime 6929 /*
1367     * Gestion de la simulation des taxes
1368     */
1369     // Récupère l'instance du cerfa lié au type détaillé du DA
1370     $inst_cerfa = $this->get_inst_cerfa_by_datd($val['dossier_autorisation_type_detaille']);
1371    
1372     // Si l'option de simulation est activée pour la collectivité du dossier
1373     // et que le cerfa du dossier à les champs requis
1374     if ($this->f->is_option_simulation_taxes_enabled($val['om_collectivite']) === true
1375     && $inst_cerfa->can_simulate_taxe_amenagement() === true) {
1376    
1377     // Récupère le paramétrage des taxes
1378     $inst_taxe_amenagement = $this->get_inst_taxe_amenagement_by_om_collectivite($this->valF['om_collectivite']);
1379     // Si un paramétrage des taxes est récupéré pour la collectivité
1380     if ($inst_taxe_amenagement !== null) {
1381    
1382     // Si la taxe d'aménagement à un seul secteur
1383     if ($inst_taxe_amenagement->has_one_secteur() == true) {
1384     // Sélectionne l'unique secteur automatiquement
1385     $valInstr['tax_secteur'] = 1;
1386     }
1387 mbroquet 3730 }
1388     }
1389    
1390     //
1391     if($dossier->ajouter($valInstr, $db, $DEBUG) === false) {
1392     $this->f->addToLog(__METHOD__."() : ERROR - Impossible d'ajouter le dossier d'instruction.", DEBUG_MODE);
1393     return false;
1394     }
1395    
1396     //Affichage de message à l'utilisateur concernant un problème lors de
1397     //l'affectation de l'instructeur au dossier d'instruction
1398     if ($dossier->valF['dossier_autorisation'] === '' &&
1399     $dossier->valF['instructeur'] === null){
1400     $this->addToMessage(
1401     _("Aucun instructeur compatible avec ce dossier, contactez votre administrateur afin d'en assigner un a ce dossier.")
1402     );
1403     }
1404     elseif ( $dossier->valF['instructeur'] === null ){
1405     if ($this->f->isAccredited("dossier_modifier_instructeur")) {
1406     $this->addToMessage("<br/> ".
1407     _("Pensez a assigner un instructeur a ce dossier.")
1408     );
1409     } else {
1410     $this->addToMessage(
1411     _("Aucun instructeur compatible avec ce dossier, contactez votre administrateur afin d'en assigner un a ce dossier.")
1412     );
1413     }
1414     }
1415    
1416     // Liaison du dossier ajouter à la demande
1417     $this->valF['dossier_instruction'] = $dossier->valF['dossier'];
1418    
1419     //
1420     return true;
1421     }
1422    
1423     /**
1424     * Méthode permettant d'ajouter les données techniques d'un DA.
1425     *
1426     * @param integer $id identifiant de la demande
1427     * @param database &$db handler de la base de donnée
1428     * @param array $val tableau de valeurs postées via le formulaire
1429     * @param boolean $DEBUG debug
1430     *
1431     * @return boolean false si erreur
1432     */
1433     function ajoutDonneesTechniquesDA($id, &$db, $val, $DEBUG) {
1434    
1435     require_once '../obj/donnees_techniques.class.php';
1436     $this->DTDA = new donnees_techniques("]", $db, $DEBUG);
1437    
1438     // Champs tous à NULL car seul le champ concernant le dossier
1439     // d'autorisation sera rempli
1440     foreach($this->DTDA->champs as $value) {
1441     $valF[$value] = null;
1442     }
1443     // Ajout du numéro de dossier d'instruction
1444     $valF['dossier_autorisation']=$this->valF['dossier_autorisation'];
1445     // Identifiant du cerfa
1446     $valF['cerfa'] = $this->getIdCerfa();
1447     //On vérifie que ce type détaille de dossier d'autorisation a un CERFA
1448     if ( $valF['cerfa'] !== "" && is_numeric($valF['cerfa'])){
1449     // Ajout des données techniques
1450     if($this->DTDA->ajouter($valF, $db, $DEBUG) === false) {
1451     $this->f->addToLog(__METHOD__."() : ERROR - Impossible d'ajouter les données techniques du dossier d'autorisation.", DEBUG_MODE);
1452     return false;
1453     }
1454     }
1455     else {
1456     //On indique que le dossier d'autorisation n'a pas de données techniques
1457     $this->DTDA = null;
1458     //Aucun CERFA n'est paramétré pour ce type détaillé de dossier d'autorisation
1459     $this->f->addToLog(__METHOD__."() : ERROR - Aucun CERFA paramétré.", DEBUG_MODE);
1460     return -1;
1461     }
1462    
1463     //
1464     return true;
1465     }
1466    
1467     /**
1468     * Ajout des liens demandeurs / dossier d'autorisation s'ils n'y sont pas déjà
1469     **/
1470     function ajoutLiensDossierAutorisation($id, &$db, $val, $DEBUG) {
1471     // Création des liens entre le dossier autorisation et les demandeurs
1472     include '../sql/pgsql/demande.form.inc.php';
1473     require_once '../obj/lien_dossier_autorisation_demandeur.class.php';
1474     $ldad = new lien_dossier_autorisation_demandeur("]",$db,$DEBUG);
1475     // Recupération des demandeurs liés à la demande
1476     $sql = str_replace("<demande>",$this->valF['demande'],$sql_lien_demande_demandeur.
1477     " AND lien_demande_demandeur.demandeur NOT IN (
1478     SELECT lien_dossier_autorisation_demandeur.demandeur
1479     FROM ".DB_PREFIXE."lien_dossier_autorisation_demandeur
1480     WHERE lien_dossier_autorisation_demandeur.dossier_autorisation =
1481     '".$this->valF['dossier_autorisation']."'
1482     )");
1483     $res = $db->query($sql);
1484     $this->f->addToLog("ajoutLiensDossierAutorisation() : db->query(\"".$sql."\");", VERBOSE_MODE);
1485     if ($this->f->isDatabaseError($res, true)) {
1486     return false;
1487     }
1488     while($row = &$res->fetchRow(DB_FETCHMODE_ASSOC)) {
1489     $row['lien_dossier_autorisation_demandeur'] = NULL;
1490     $row['dossier_autorisation'] = $this->valF['dossier_autorisation'];
1491     if ($ldad->ajouter($row, $db, $DEBUG) === false) {
1492     $this->f->addToLog(__METHOD__."() : ERROR - Impossible d'ajouter le lien entre le demandeurs et le dossier d'autorisation.", DEBUG_MODE);
1493     return false;
1494     }
1495     }
1496    
1497     //
1498     return true;
1499     }
1500    
1501     /**
1502     * Ajout des liens demandeurs / dossier d'autorisation
1503     **/
1504     function ajoutLiensDossierInstruction($id, &$db, $val, $DEBUG) {
1505     // Création des liens entre le dossier instruction et les demandeurs
1506     include '../sql/pgsql/demande.form.inc.php';
1507     require_once '../obj/lien_dossier_demandeur.class.php';
1508     $ldd = new lien_dossier_demandeur("]",$db,$DEBUG);
1509     // Recupération des demandeurs liés à la demande
1510     $sql = str_replace("<demande>",$this->valF['demande'],$sql_lien_demande_demandeur);
1511     $res = $db->query($sql);
1512     $this->f->addToLog("ajoutLiensDossierInstruction() : db->query(\"".$sql."\");", VERBOSE_MODE);
1513     if ($this->f->isDatabaseError($res, true)) {
1514     return false;
1515     }
1516     while($row = &$res->fetchRow(DB_FETCHMODE_ASSOC)) {
1517     $row['lien_dossier_demandeur'] = NULL;
1518     $row['dossier'] = $this->valF['dossier_instruction'];
1519     if ($ldd->ajouter($row, $db, $DEBUG) === false) {
1520     $this->f->addToLog(__METHOD__."() : ERROR - Impossible d'ajouter le lien entre le demandeurs et le dossier d'instruction.", DEBUG_MODE);
1521     return false;
1522     }
1523     }
1524    
1525     //
1526     return true;
1527     }
1528    
1529     /*
1530     * Récupère l'identifiant d'un arrondissement à partir d'un code postal
1531     */
1532     function getArrondissement($terrain_adresse_code_postal){
1533    
1534     $arrondissement = NULL;
1535    
1536     $sql = "SELECT
1537     arrondissement
1538     FROM
1539     ".DB_PREFIXE."arrondissement
1540     WHERE
1541     code_postal = '$terrain_adresse_code_postal' ";
1542     $this->addToLog("demande.class.php : ".$sql." execute <br>", EXTRA_VERBOSE_MODE);
1543    
1544     $res = $this->db->query($sql);
1545     $this->f->addToLog("getArrondissement() : db->query(\"".$sql."\")", VERBOSE_MODE);
1546     $this->f->isDatabaseError($res);
1547    
1548     if( $res->numrows() > 0 ) {
1549    
1550     $row=& $res->fetchRow(DB_FETCHMODE_ASSOC);
1551     $arrondissement = $row['arrondissement'];
1552     }
1553    
1554     return $arrondissement;
1555     }
1556    
1557     /*
1558     * Récupère l'évènement lié à un type de demande
1559     */
1560     function getEvenement($demande_type){
1561    
1562     $evenement = null;
1563    
1564     $sql =
1565     "SELECT
1566     evenement
1567     FROM
1568     ".DB_PREFIXE."demande_type
1569     WHERE
1570     demande_type = $demande_type";
1571    
1572     $res = $this->db->query($sql);
1573     $this->f->addToLog("getEvenement() : db->query(\"".$sql."\")", VERBOSE_MODE);
1574     $this->f->isDatabaseError($res);
1575    
1576     if ( $res->numrows() > 0 ){
1577    
1578     $row=& $res->fetchRow(DB_FETCHMODE_ASSOC);
1579     $evenement = $row['evenement'];
1580     }
1581    
1582     return $evenement;
1583     }
1584    
1585    
1586    
1587     /**
1588     * Retourne le libellé du dossier d'autorisation
1589     * @param string $dossier_autorisation Identifiant du dossier d'autorisation
1590     * @return string Libellé dossier d'autorisation
1591     */
1592     function get_dossier_autorisation_libelle($dossier_autorisation) {
1593    
1594     $dossier_autorisation_libelle = "";
1595    
1596     // Requête SQL
1597     $sql = "SELECT
1598     dossier_autorisation_libelle
1599     FROM
1600     ".DB_PREFIXE."dossier_autorisation
1601     WHERE
1602     dossier_autorisation = '$dossier_autorisation'";
1603    
1604     $dossier_autorisation_libelle = $this->db->getOne($sql);
1605     $this->addToLog("get_dossier_autorisation_libelle(): db->getOne(\"".$sql."\")", VERBOSE_MODE);
1606     $this->f->isDatabaseError($dossier_autorisation_libelle);
1607    
1608     // Retourne le résultat
1609     return $dossier_autorisation_libelle;
1610     }
1611    
1612     /**
1613     * Retourne le libellé du dossier d'autorisation.
1614     * @param string $dossier Identifiant du dossier d'autorisation
1615     *
1616     * @return string Libellé dossier d'autorisation
1617     */
1618     function get_dossier_libelle($dossier) {
1619    
1620     $dossier_libelle = "";
1621    
1622     // Requête SQL
1623     $sql = "SELECT
1624     dossier_libelle
1625     FROM
1626     ".DB_PREFIXE."dossier
1627     WHERE
1628     dossier = '$dossier'";
1629    
1630     $dossier_libelle = $this->db->getOne($sql);
1631     $this->addToLog(__METHOD__."(): db->getOne(\"".$sql."\")", VERBOSE_MODE);
1632     $this->f->isDatabaseError($dossier_libelle);
1633    
1634     // Retourne le résultat
1635     return $dossier_libelle;
1636     }
1637    
1638     /**
1639     * Ajout des dossiers
1640     **/
1641 softime 6929 function triggerajouter($id, &$db = null, $val = array(), $DEBUG = null) {
1642 mbroquet 3730
1643     include '../sql/pgsql/demande.form.inc.php';
1644    
1645     if($this->valF["demande_type"] != null) {
1646     $res = $db->query(
1647     str_replace(
1648     '<idx>',
1649     $this->valF['demande_type'],
1650     $sql_demande_type_details_by_id
1651     )
1652     );
1653     $this->f->addToLog(
1654     "triggerAjouter() : db->query(\"".
1655     str_replace(
1656     '<idx>',
1657     $this->valF['demande_type'],
1658     $sql_demande_type_details_by_id
1659     )."\")",
1660     VERBOSE_MODE
1661     );
1662     if ($this->f->isDatabaseError($res, true)) {
1663     return false;
1664     }
1665     // Attribut permettant de définir si un dossier a été créé
1666     $this->ajoutDI = false;
1667     $dossier_type = $res->fetchRow(DB_FETCHMODE_ASSOC);
1668     // Création du dossier_autorisation
1669     if($this->valF['dossier_autorisation'] == "") {
1670 softime 6565 //
1671 mbroquet 3730 if($this->ajoutDossierAutorisation($id, $db, $val, $DEBUG) === false) {
1672     $this -> addToMessage(
1673     _("Erreur lors de l'enregistrement de la demande.")." ".
1674     _("Contactez votre administrateur.")
1675     );
1676     $this->correct = false;
1677     return false;
1678     }
1679 softime 6565 //
1680     $inst_da = $this->get_inst_dossier_autorisation($this->valF['dossier_autorisation']);
1681     if ($inst_da->is_dossier_autorisation_visible()) {
1682     $this -> addToMessage(
1683     _("Creation du dossier d'autorisation no").
1684     '<span id="new_da">'.
1685     $this->get_dossier_autorisation_libelle(
1686     $this->valF['dossier_autorisation']
1687     ).'</span>'
1688     );
1689     }
1690     // Ajout des données techniques au dossier d'autorisation
1691 mbroquet 3730 if($this->ajoutDonneesTechniquesDA($id, $db, $val, $DEBUG) === false) {
1692     $this -> addToMessage(
1693     _("Erreur lors de l'enregistrement de la demande.")." ".
1694     _("Contactez votre administrateur.")
1695     );
1696     $this->correct = false;
1697     return false;
1698     }
1699     } else {
1700     $sqlIdDTDA = "SELECT donnees_techniques
1701     FROM ".DB_PREFIXE."donnees_techniques
1702     WHERE dossier_autorisation='".
1703     $this->valF['dossier_autorisation']."'";
1704     $idDTDA = $this->db->getOne($sqlIdDTDA);
1705     $this->addToLog(
1706     "triggerAjouter(): db->getOne(\"".$sqlIdDTDA."\")",
1707     VERBOSE_MODE
1708     );
1709     if ($this->f->isDatabaseError($idDTDA, true)) {
1710     return false;
1711     }
1712    
1713     $this->DTDA = null;
1714     if ($idDTDA!=="" && is_numeric($idDTDA)){
1715     require_once '../obj/donnees_techniques.class.php';
1716     $this->DTDA = new donnees_techniques(
1717     $idDTDA,
1718     $db,
1719     $DEBUG
1720     );
1721     $this->DTDA->setValFFromVal();
1722     }
1723     }
1724     // Enregistrement du numéro dossier existant
1725     // (il sera écrasé si un DI est créé)
1726     if ($this->getParameter("idx_dossier") != "") {
1727     $this->valF['dossier_instruction'] = $this->getParameter("idx_dossier");
1728     }
1729     // Création du dossier d'instruction
1730     if($dossier_type['dossier_instruction_type'] != null) {
1731     if($this->ajoutDossierInstruction(
1732     $id,
1733     $db,
1734     $val,
1735     $DEBUG,
1736     $dossier_type['dossier_instruction_type']
1737     ) === false ) {
1738     $this -> addToMessage(
1739     _("Erreur lors de l'enregistrement de la demande.")." ".
1740     _("Contactez votre administrateur.")
1741     );
1742     $this->correct = false;
1743     return false;
1744     }
1745     // Libellé du dossier
1746     $dossier_libelle = $this->get_dossier_libelle($this->valF['dossier_instruction']);
1747     // Message de validation
1748     $this -> addToMessage(
1749 softime 4631 _("Creation du dossier d'instruction no")."<span id='new_di'>".$dossier_libelle."</span>"."<br/>"
1750 mbroquet 3730 );
1751 softime 4631
1752 mbroquet 3730 // Attribut permettant de définir si un dossier a été créé.
1753     $this->ajoutDI = true;
1754     }
1755    
1756 softime 6565 $inst_datd = $this->get_inst_common("dossier_autorisation_type_detaille", $this->valF['dossier_autorisation_type_detaille']);
1757     $code_datd = $inst_datd->getVal('code');
1758    
1759     $obj = "dossier_instruction";
1760     if ($code_datd === 'REC' OR $code_datd === 'REG') {
1761     $obj = "dossier_contentieux_tous_recours";
1762     }
1763     if ($code_datd === 'IN') {
1764     $obj = "dossier_contentieux_toutes_infractions";
1765     }
1766    
1767 softime 4631 // Template du lien vers le DI
1768 softime 6565 $template_link_di = "<a id='link_demande_dossier_instruction' title=\"%s\" class='lien' href='../scr/form.php?obj=" . $obj . "&action=3&idx=%s'><span class='om-icon om-icon-16 om-icon-fix consult-16'></span>%s</a>";
1769 softime 4631
1770     // Lien vers le DI
1771     $link_di = sprintf($template_link_di, _("Visualiser le dossier d'instruction / modifier la demande"), $this->valF['dossier_instruction'], _("Acceder au dossier d'instruction"));
1772    
1773     // Message affiché à l'utilisateur
1774     $this->addToMessage($link_di."<br/>");
1775    
1776 mbroquet 3730 /*Ajout de l'arrondissement à partir du code postal*/
1777     if ( !is_null($this->valF["terrain_adresse_code_postal"]) && is_numeric($this->valF["terrain_adresse_code_postal"]) ){
1778    
1779     $this->valF["arrondissement"] = $this->getArrondissement($this->valF["terrain_adresse_code_postal"]);
1780     }
1781     }
1782    
1783     //
1784     return true;
1785     }
1786    
1787     /**
1788 fmichon 4708 * TRIGGER - triggerajouterapres.
1789     *
1790     * - Ajout des délégataires et pétitionnaires
1791     * - ...
1792     * - Option de numérisation
1793     * - Interface avec le référentiel ERP [109]
1794     * - Interface avec le référentiel ERP [112]
1795     * - Interface avec le référentiel ERP [110]
1796     * - Interface avec le référentiel ERP [107]
1797     *
1798     * @return boolean
1799     */
1800 softime 6929 function triggerajouterapres($id, &$db = null, $val = array(), $DEBUG = null) {
1801 mbroquet 3730
1802 softime 6391 // Récupération d'informations nécessaires seulement lors de l'envoi de messages ERP
1803     if ($this->f->is_option_referentiel_erp_enabled() === true) {
1804     // Instanciation du dossier d'instruction concerné par la demande en
1805     // cours d'ajout avant modification éventuelle par l'instruction
1806     $inst_di = $this->get_inst_dossier_instruction($this->valF['dossier_instruction']);
1807     // Récupère l'état du dossier avant l'exécution d'une éventuelle action
1808     // associée à l'événement d'instruction : utile pour le message 112 vers
1809     // le référentiel ERP
1810     $etat_di_before_instr = $this->getEtatDossier($inst_di->getVal($inst_di->clePrimaire));
1811     }
1812    
1813 fmichon 4708 /**
1814     *
1815     */
1816 mbroquet 3730 if ($this->insertLinkDemandeDemandeur($db, $DEBUG) == false) {
1817     return false;
1818     }
1819    
1820     // Ajout des lliens entre dossier_autorisation et demandeur
1821     if(!empty($this->valF['dossier_autorisation'])) {
1822     if ($this->ajoutLiensDossierAutorisation($id, $db, $val, $DEBUG) == false) {
1823     return false;
1824     }
1825     }
1826 softime 6565 // Ajout des liens entre dossier et demandeur
1827 mbroquet 3730 if($this->ajoutDI === TRUE) {
1828     if ($this->ajoutLiensDossierInstruction($id, $db, $val, $DEBUG) == false) {
1829     return false;
1830     }
1831     }
1832 softime 6565
1833     // Création d'un lien entre le nouveau DI et le dossier contesté
1834     if ($this->valF["autorisation_contestee"] != "") {
1835     if ($this->ajoutLienDossierConteste() === false) {
1836     return false;
1837     }
1838     }
1839 mbroquet 3730
1840     // Duplication des lots (et leurs données techniques) et
1841     // liaison au nouveau dossier_d'instruction
1842     if(!empty($this->valF['dossier_autorisation']) AND $val['dossier_autorisation'] != "" ) {
1843     $this->lienLotDossierInstruction($id, $db, $val, $DEBUG);
1844     }
1845    
1846     /*Création du lien de téléchargement de récépissé de demande*/
1847     if ( $this->valF['demande_type'] != "" && is_numeric($this->valF['demande_type'])
1848     && isset($this->valF['dossier_instruction']) && $this->valF['dossier_instruction'] !== "" ){
1849    
1850     /*Récupérer l'événement lié à ce type de demande*/
1851     $evenement = $this->getEvenement($this->valF['demande_type']);
1852    
1853     /*Récupération de la lettre type de l'événement*/
1854     $lettretype = $this->f->getLettreType($evenement);
1855    
1856     /*Création d'une nouvelle instruction avec cet événement*/
1857     /*Données*/
1858     $valInstr['instruction']=NULL;
1859    
1860     $valInstr['destinataire']=$this->valF['dossier_instruction'];
1861     $valInstr['dossier']=$this->valF['dossier_instruction'];
1862     // Récupère la date de la demande
1863     $valInstr['date_evenement']=$this->dateDBToForm($this->valF['date_demande']);
1864     $valInstr['evenement']=$evenement;
1865     $valInstr['lettretype']=$lettretype;
1866     $valInstr['complement_om_html']="";
1867     $valInstr['complement2_om_html']="";
1868    
1869     $valInstr['action']="initialisation";
1870     $valInstr['delai']="2";
1871     $valInstr['etat']="notifier";
1872     $valInstr['accord_tacite']="Oui";
1873     $valInstr['delai_notification']="1";
1874     $valInstr['archive_delai']="0";
1875     $valInstr['archive_date_complet']=NULL;
1876     $valInstr['archive_date_dernier_depot']=NULL;
1877     $valInstr['archive_date_rejet']=NULL;
1878     $valInstr['archive_date_limite']=NULL;
1879     $valInstr['archive_date_notification_delai']=NULL;
1880     $valInstr['archive_accord_tacite']="Non";
1881     $valInstr['archive_etat']="initialiser";
1882     $valInstr['archive_date_decision']=NULL;
1883     $valInstr['archive_avis']="";
1884     $valInstr['archive_date_validite']=NULL;
1885     $valInstr['archive_date_achevement']=NULL;
1886     $valInstr['archive_date_chantier']=NULL;
1887     $valInstr['archive_date_conformite']=NULL;
1888     $valInstr['archive_incompletude']=NULL;
1889     $valInstr['archive_incomplet_notifie']=NULL;
1890     $valInstr['archive_evenement_suivant_tacite']="";
1891     $valInstr['archive_evenement_suivant_tacite_incompletude']=NULL;
1892     $valInstr['archive_etat_pendant_incompletude']=NULL;
1893     $valInstr['archive_date_limite_incompletude']=NULL;
1894     $valInstr['archive_delai_incompletude']=NULL;
1895     $valInstr['archive_autorite_competente']=NULL;
1896     $valInstr['complement3_om_html']="";
1897     $valInstr['complement4_om_html']="";
1898     $valInstr['complement5_om_html']="";
1899     $valInstr['complement6_om_html']="";
1900     $valInstr['complement7_om_html']="";
1901     $valInstr['complement8_om_html']="";
1902     $valInstr['complement9_om_html']="";
1903     $valInstr['complement10_om_html']="";
1904     $valInstr['complement11_om_html']="";
1905     $valInstr['complement12_om_html']="";
1906     $valInstr['complement13_om_html']="";
1907     $valInstr['complement14_om_html']="";
1908     $valInstr['complement15_om_html']="";
1909     $valInstr['avis_decision']=NULL;
1910     $valInstr['date_finalisation_courrier']=NULL;
1911     $valInstr['date_envoi_signature']=NULL;
1912     $valInstr['date_retour_signature']=NULL;
1913     $valInstr['date_envoi_rar']=NULL;
1914     $valInstr['date_retour_rar']=NULL;
1915     $valInstr['date_envoi_controle_legalite']=NULL;
1916     $valInstr['date_retour_controle_legalite']=NULL;
1917     $valInstr['signataire_arrete']=NULL;
1918     $valInstr['numero_arrete']=NULL;
1919     $valInstr['code_barres']=NULL;
1920     $valInstr['om_fichier_instruction']=NULL;
1921     $valInstr['om_final_instruction']=NULL;
1922     $valInstr['document_numerise']=NULL;
1923     $valInstr['autorite_competente']=NULL;
1924     $valInstr['duree_validite_parametrage']="0";
1925     $valInstr['duree_validite']="0";
1926 nmeucci 3873 $valInstr['date_depot']=NULL;
1927 mbroquet 3730 $valInstr['om_final_instruction_utilisateur']= "f";
1928     $valInstr['created_by_commune']= "f";
1929 softime 6565 $valInstr['archive_date_cloture_instruction'] = null;
1930     $valInstr['archive_date_premiere_visite'] = null;
1931     $valInstr['archive_date_derniere_visite'] = null;
1932     $valInstr['archive_date_contradictoire'] = null;
1933     $valInstr['archive_date_retour_contradictoire'] = null;
1934     $valInstr['archive_date_ait'] = null;
1935     $valInstr['archive_date_transmission_parquet'] = null;
1936 mbroquet 3730
1937     // Récupération des champs archive si cette demande a créée un dossier
1938     // d'instruction mais pas un P0
1939     if (!is_null($this->valF['dossier_instruction']) &&
1940     $this->valF['dossier_instruction'] !== "" ){
1941    
1942     // Requête
1943     $sql = "SELECT dossier_instruction_type.code
1944     FROM ".DB_PREFIXE."demande_type
1945     LEFT JOIN ".DB_PREFIXE."dossier_instruction_type
1946     ON demande_type.dossier_instruction_type = dossier_instruction_type.dossier_instruction_type
1947     WHERE demande_type.demande_type = ".$this->valF['demande_type'];
1948     $res = $db->getOne($sql);
1949     $this->addToLog("triggerajouter(): db->getOne(\"".$sql."\");", VERBOSE_MODE);
1950     if ($this->f->isDatabaseError($res, true)) {
1951     return false;
1952     }
1953    
1954     // On vérifie que ce n'est pas un P0
1955     if ( strcmp($res, "P") !== 0 ){
1956    
1957     $res = $this->getArchiveInstruction($this->valF['dossier_instruction']);
1958    
1959     if ($res == false) {
1960     return false;
1961     }
1962    
1963     if (isset($res['archive_delai'])) {
1964     $valInstr['archive_delai']=$res["archive_delai"];
1965     }
1966     if (isset($res['archive_date_complet'])) {
1967     $valInstr['archive_date_complet']=$res["archive_date_complet"];
1968     }
1969     if (isset($res['archive_date_dernier_depot'])) {
1970     $valInstr['archive_date_dernier_depot']=$res["archive_date_dernier_depot"];
1971     }
1972     if (isset($res['archive_date_rejet'])) {
1973     $valInstr['archive_date_rejet']=$res["archive_date_rejet"];
1974     }
1975     if (isset($res['archive_date_limite'])) {
1976     $valInstr['archive_date_limite']=$res["archive_date_limite"];
1977     }
1978     if (isset($res['archive_date_notification_delai'])) {
1979     $valInstr['archive_date_notification_delai']=$res["archive_date_notification_delai"];
1980     }
1981     if (isset($res['archive_accord_tacite'])) {
1982     $valInstr['archive_accord_tacite']=$res["archive_accord_tacite"];
1983     }
1984     if (isset($res['archive_etat'])) {
1985     $valInstr['archive_etat']=$res["archive_etat"];
1986     }
1987     if (isset($res['archive_date_decision'])) {
1988     $valInstr['archive_date_decision']=$res["archive_date_decision"];
1989     }
1990     if (isset($res['archive_avis'])) {
1991     $valInstr['archive_avis']=$res["archive_avis"];
1992     }
1993     if (isset($res['archive_date_validite'])) {
1994     $valInstr['archive_date_validite']=$res["archive_date_validite"];
1995     }
1996     if (isset($res['archive_date_achevement'])) {
1997     $valInstr['archive_date_achevement']=$res["archive_date_achevement"];
1998     }
1999     if (isset($res['archive_date_chantier'])) {
2000     $valInstr['archive_date_chantier']=$res["archive_date_chantier"];
2001     }
2002     if (isset($res['archive_date_conformite'])) {
2003     $valInstr['archive_date_conformite']=$res["archive_date_conformite"];
2004     }
2005     if (isset($res['archive_incompletude'])) {
2006     $valInstr['archive_incompletude']=$res["archive_incompletude"];
2007     }
2008     if (isset($res['archive_incomplet_notifie'])) {
2009     $valInstr['archive_incomplet_notifie']=$res["archive_incomplet_notifie"];
2010     }
2011     if (isset($res['archive_evenement_suivant_tacite'])) {
2012     $valInstr['archive_evenement_suivant_tacite']=$res["archive_evenement_suivant_tacite"];
2013     }
2014     if (isset($res['archive_evenement_suivant_tacite_incompletude'])) {
2015     $valInstr['archive_evenement_suivant_tacite_incompletude']=$res["archive_evenement_suivant_tacite_incompletude"];
2016     }
2017     if (isset($res['archive_etat_pendant_incompletude'])) {
2018     $valInstr['archive_etat_pendant_incompletude']=$res["archive_etat_pendant_incompletude"];
2019     }
2020     if (isset($res['archive_date_limite_incompletude'])) {
2021     $valInstr['archive_date_limite_incompletude']=$res["archive_date_limite_incompletude"];
2022     }
2023     if (isset($res['archive_delai_incompletude'])) {
2024     $valInstr['archive_delai_incompletude']=$res["archive_delai_incompletude"];
2025     }
2026     if (isset($res['archive_autorite_competente'])) {
2027     $valInstr['archive_autorite_competente']=$res["archive_autorite_competente"];
2028     }
2029 softime 6565 if (isset($res['archive_date_cloture_instruction'])) {
2030     $valInstr['archive_date_cloture_instruction'] = $res['archive_date_cloture_instruction'];
2031     }
2032     if (isset($res['archive_date_premiere_visite'])) {
2033     $valInstr['archive_date_premiere_visite'] = $res['archive_date_premiere_visite'];
2034     }
2035     if (isset($res['archive_date_derniere_visite'])) {
2036     $valInstr['archive_date_derniere_visite'] = $res['archive_date_derniere_visite'];
2037     }
2038     if (isset($res['archive_date_contradictoire'])) {
2039     $valInstr['archive_date_contradictoire'] = $res['archive_date_contradictoire'];
2040     }
2041     if (isset($res['archive_date_retour_contradictoire'])) {
2042     $valInstr['archive_date_retour_contradictoire'] = $res['archive_date_retour_contradictoire'];
2043     }
2044     if (isset($res['archive_date_ait'])) {
2045     $valInstr['archive_date_ait'] = $res['archive_date_ait'];
2046     }
2047     if (isset($res['archive_date_transmission_parquet'])) {
2048     $valInstr['archive_date_transmission_parquet'] = $res['archive_date_transmission_parquet'];
2049     }
2050 mbroquet 3730 }
2051     }
2052    
2053     // Fichier requis
2054     require_once '../obj/instruction.class.php';
2055    
2056     // Création d'un nouveau dossier
2057     $instruction = new instruction("]",$db,$DEBUG);
2058     $instruction->valF = "";
2059     if ($instruction->ajouter($valInstr, $db, $DEBUG) === false) {
2060 nmeucci 3876 // Suppression des messages valides puisque erreur
2061     $this->msg = '';
2062     $this -> addToMessage($instruction->msg);
2063 mbroquet 3730 $this -> addToMessage(_("Une erreur s'est produite lors de la creation du recepisse"));
2064     $this->f->addToLog(__METHOD__."() : ERROR - Impossible d'ajouter l'instruction.", DEBUG_MODE);
2065     return false;
2066     }
2067    
2068     // Finalisation du document
2069     $_GET['obj']='instruction';
2070     $_GET['idx']=$instruction->valF[$instruction->clePrimaire];
2071     $instruction_final = new instruction($_GET['idx'],$db,$DEBUG);
2072     if($instruction_final->getVal('lettretype') != "") {
2073     // On se met en contexte de l'action 100 finaliser
2074     $instruction_final->setParameter('maj',100);
2075     // On finalise l'événement d'instruction
2076     $res = $instruction_final->finalize();
2077 softime 5024 // Si échec cela ne stoppe pas la création du dossier
2078     // et l'utilisateur n'en est pas informé dans l'IHM
2079     // mais l'erreur est loguée
2080 mbroquet 3730 if ($res === false) {
2081     $this->f->addToLog(__METHOD__."() : ERROR - Impossible de finaliser l'instruction.", DEBUG_MODE);
2082     }
2083     }
2084    
2085     // Mise à jour de la demande
2086     $this->valF['instruction_recepisse'] = $instruction->valF['instruction'];
2087     $this->valF['date_demande'] = $this->dateDBToForm($this->valF['date_demande']);
2088     $demande_instance = new demande($this->valF['demande'], $db, $DEBUG);
2089     if ($demande_instance->modifier($this->valF, $db, $DEBUG) === false) {
2090     $this -> addToMessage($demande_instance->msg);
2091     $this->f->addToLog(__METHOD__."() : ERROR - Impossible de modifier la demande.", DEBUG_MODE);
2092     return false;
2093     }
2094    
2095 softime 6565 $inst_da = $this->get_inst_dossier_autorisation($this->valF['dossier_autorisation']);
2096    
2097 mbroquet 3730 // Si l'option d'accès au portail citoyen est activée
2098 softime 6565 if ($this->f->is_option_citizen_access_portal_enabled() === true
2099     AND $inst_da->is_dossier_autorisation_visible() === true) {
2100 mbroquet 3730 // Met à jour la clé d'accès au portail citoyen dans le dossier
2101     // d'autorisation
2102     $update = $inst_da->update_citizen_access_key();
2103     //
2104     if ($update !== true) {
2105     //
2106     $this->addToMessage(_("La cle d'acces au portail citoyen n'a pas pu etre generee."));
2107     return false;
2108     }
2109     }
2110    
2111    
2112 jymadier 4441 // Si l'instruction initiale a une lettre type liée
2113     if ($instruction->valF['lettretype'] !== ''
2114     && $instruction->valF['lettretype'] !== null) {
2115    
2116     // Affichage du récépissé de la demande
2117     $this -> addToMessage("<a
2118     class='lien' id='link_demande_recepisse'
2119     title=\""._("Telecharger le recepisse de la demande")."\"
2120     href='../scr/form.php?obj=demande&amp;action=100&amp;idx=".
2121     $this->valF[$this->clePrimaire]."' target='_blank'>
2122     <span
2123     class=\"om-icon om-icon-16 om-icon-fix pdf-16\"
2124     title=\""._("Telecharger le recepisse de la demande")."\">".
2125     _("Telecharger le recepisse de la demande").
2126     "</span>".
2127     _("Telecharger le recepisse de la demande")."
2128     </a><br/>");
2129     }
2130     }
2131    
2132 fmichon 4708 // Instanciation du dossier d'instruction concerné par la demande en cours d'ajout.
2133     $inst_di = $this->get_inst_dossier_instruction($this->valF['dossier_instruction']);
2134    
2135     /**
2136     * Option de numérisation.
2137     */
2138     // Si l'option est activée
2139     if ($this->f->is_option_digitalization_folder_enabled() === true) {
2140 mbroquet 3730 // Création du répertoire de numérisation pour le dossier en
2141     // question.
2142     $ret = $inst_di->create_or_touch_digitalization_folder();
2143     // Si la création a échouée
2144     if ($ret !== true) {
2145     //
2146     $this->msg = "";
2147     $this->addToMessage(_("Erreur lors de la création du répertoire de numérisation. Contactez votre administrateur."));
2148     return false;
2149     }
2150     }
2151    
2152 fmichon 4708 /**
2153     * Interface avec le référentiel ERP.
2154     *
2155     * (WS->ERP)[109] Retrait de la demande -> AT
2156     * Déclencheur :
2157     * - L'option ERP est activée
2158     * - Le dossier est de type AT
2159     * - Le dossier est marqué comme "connecté au référentiel ERP"
2160     * - Le formulaire d'ajout de demande est validé avec un type de
2161     * demande correspondant à une demande de retrait
2162     */
2163 mbroquet 3730 //
2164 fmichon 4708 if ($this->f->is_option_referentiel_erp_enabled() === true
2165     && $inst_di->is_connected_to_referentiel_erp() === true
2166     && $this->f->getDATDCode($inst_di->getVal($inst_di->clePrimaire)) == $this->f->getParameter('erp__dossier__nature__at')
2167     && in_array($this->valF["demande_type"], explode(";", $this->f->getParameter('erp__demandes__retrait__at')))) {
2168     //
2169     $infos = array(
2170     "dossier_instruction" => $inst_di->getVal($inst_di->clePrimaire),
2171     );
2172     //
2173     $ret = $this->f->send_message_to_referentiel_erp(109, $infos);
2174     if ($ret !== true) {
2175     $this->cleanMessage();
2176     $this->addToMessage(_("Une erreur s'est produite lors de la notification (109) du référentiel ERP. Contactez votre administrateur."));
2177     return false;
2178     }
2179     $this->addToMessage(_("Notification (109) du référentiel ERP OK."));
2180     }
2181    
2182     /**
2183     * Interface avec le référentiel ERP.
2184     *
2185     * (WS->ERP)[112] Dépôt de pièces sur une DAT -> AT
2186     * Déclencheur :
2187     * - L'option ERP est activée
2188     * - Le dossier est de type AT
2189     * - Le dossier est marqué comme "connecté au référentiel ERP"
2190     * - Le formulaire d'ajout de demande est validé avec un type de
2191     * demande correspondant à un dépôt de pièces
2192     */
2193     //
2194     if ($this->f->is_option_referentiel_erp_enabled() === true
2195     && $inst_di->is_connected_to_referentiel_erp() === true
2196     && $this->f->getDATCode($inst_di->getVal($inst_di->clePrimaire)) == $this->f->getParameter('erp__dossier__nature__at')
2197     && in_array($this->valF["demande_type"], explode(";", $this->f->getParameter('erp__demandes__depot_piece__at')))) {
2198 softime 6391 // Définit le type de pièce par l'état du dossier
2199     $type_piece = "supplementaire";
2200     if ($etat_di_before_instr === 'incomplet') {
2201     $type_piece = "complementaire";
2202     }
2203 fmichon 4708 //
2204     $infos = array(
2205     "dossier_instruction" => $inst_di->getVal($inst_di->clePrimaire),
2206 softime 6391 "type_piece" => $type_piece,
2207 fmichon 4708 );
2208     //
2209     $ret = $this->f->send_message_to_referentiel_erp(112, $infos);
2210     if ($ret !== true) {
2211     $this->cleanMessage();
2212     $this->addToMessage(_("Une erreur s'est produite lors de la notification (112) du référentiel ERP. Contactez votre administrateur."));
2213     return false;
2214     }
2215     $this->addToMessage(_("Notification (112) du référentiel ERP OK."));
2216     }
2217    
2218     /**
2219     * Interface avec le référentiel ERP.
2220     *
2221     * (WS->ERP)[110] Demande d'ouverture ERP DAT -> AT
2222     * Déclencheur :
2223     * - L'option ERP est activée
2224     * - Le dossier est de type AT
2225     * - Le dossier est marqué comme "connecté au référentiel ERP"
2226     * - Le formulaire d'ajout de demande est validé avec un type de
2227     * demande correspondant à une demande de visite d'ouverture ERP
2228     */
2229     //
2230     if ($this->f->is_option_referentiel_erp_enabled() === true
2231     && $inst_di->is_connected_to_referentiel_erp() === true
2232     && $this->f->getDATCode($inst_di->getVal($inst_di->clePrimaire)) == $this->f->getParameter('erp__dossier__nature__at')
2233     && in_array($this->valF["demande_type"], explode(";", $this->f->getParameter('erp__demandes__ouverture__at')))) {
2234     //
2235     $infos = array(
2236     "dossier_instruction" => $inst_di->getVal($inst_di->clePrimaire),
2237     );
2238     //
2239     $ret = $this->f->send_message_to_referentiel_erp(110, $infos);
2240     if ($ret !== true) {
2241     $this->cleanMessage();
2242     $this->addToMessage(_("Une erreur s'est produite lors de la notification (110) du référentiel ERP. Contactez votre administrateur."));
2243     return false;
2244     }
2245     $this->addToMessage(_("Notification (110) du référentiel ERP OK."));
2246     }
2247    
2248     /**
2249     * Interface avec le référentiel ERP.
2250     *
2251     * (WS->ERP)[107] Demande d'ouverture ERP PC -> PC
2252     * Déclencheur :
2253     * - L'option ERP est activée
2254     * - Le dossier est de type PC
2255     * - Le dossier est marqué comme "connecté au référentiel ERP"
2256     * - Le formulaire d'ajout de demande est validé avec un type de
2257     * demande correspondant à une demande de visite d'ouverture ERP
2258     */
2259     //
2260     if ($this->f->is_option_referentiel_erp_enabled() === true
2261     && $inst_di->is_connected_to_referentiel_erp() === true
2262     && $this->f->getDATCode($inst_di->getVal($inst_di->clePrimaire)) == $this->f->getParameter('erp__dossier__nature__pc')
2263     && in_array($this->valF["demande_type"], explode(";", $this->f->getParameter('erp__demandes__ouverture__pc')))) {
2264     //
2265     $infos = array(
2266     "dossier_instruction" => $inst_di->getVal($inst_di->clePrimaire),
2267     );
2268     //
2269     $ret = $this->f->send_message_to_referentiel_erp(107, $infos);
2270     if ($ret !== true) {
2271     $this->cleanMessage();
2272     $this->addToMessage(_("Une erreur s'est produite lors de la notification (107) du référentiel ERP. Contactez votre administrateur."));
2273     return false;
2274     }
2275     $this->addToMessage(_("Notification (107) du référentiel ERP OK."));
2276     }
2277    
2278     //
2279 mbroquet 3730 return true;
2280     }
2281 fmichon 4708
2282     /**
2283     * Récupère l'état d'un dossier d'instruction
2284     * @param $idxDossier L'identifiant du dossier d'instruction
2285     * @return L'état du dossier d'instruction
2286     */
2287     function getEtatDossier($idxDossier){
2288    
2289     $etat = "";
2290    
2291     $sql = "SELECT etat.etat
2292     FROM ".DB_PREFIXE."etat
2293     LEFT JOIN
2294     ".DB_PREFIXE."dossier
2295     ON
2296     dossier.etat = etat.etat
2297     WHERE dossier.dossier = '".$idxDossier."'";
2298     $etat = $this->db->getOne($sql);
2299     $this->addToLog("getEtatDossier(): db->getOne(\"".$sql."\");", VERBOSE_MODE);
2300     // Si une erreur survient on die
2301     if (database::isError($etat, true)) {
2302     // Appel de la methode de recuperation des erreurs
2303     $this->erreur_db($etat->getDebugInfo(), $etat->getMessage(), 'document_numerise');
2304     }
2305    
2306     return $etat;
2307     }
2308    
2309 mbroquet 3730 /*Ajout du lien demande / demandeur(s)*/
2310 softime 6929 function triggermodifierapres($id, &$db = null, $val = array(), $DEBUG = null) {
2311 mbroquet 3730 $this->listeDemandeur("demande",$this->val[array_search('demande', $this->champs)]);
2312     if ($this->insertLinkDemandeDemandeur($db, $DEBUG) == false) {
2313     return false;
2314     }
2315     $this->valIdDemandeur=$this->postedIdDemandeur;
2316    
2317     //
2318     return true;
2319     }
2320    
2321 softime 6565
2322 mbroquet 3730 /**
2323 softime 6565 * Ajout du lien avec le dossier contesté dans le cas de l'ajout d'un
2324     * dossier de recours.
2325     *
2326     * @return, [type] [description]
2327     */
2328     function ajoutLienDossierConteste() {
2329     // Création des liens entre le dossier instruction créé et le dossier
2330     // contesté
2331     require_once '../obj/lien_dossier_dossier.class.php';
2332     $ldd = new lien_dossier_dossier("]");
2333     // Préparation des valeurs à mettre en base
2334     $val['lien_dossier_dossier'] = "";
2335     $val['dossier_src'] = $this->valF['dossier_instruction'];
2336     $val['dossier_cible'] = $this->valF["autorisation_contestee"];
2337     $val['type_lien'] = 'auto_recours';
2338    
2339     return $ldd->ajouter($val, $this->f->db, NULL);
2340     }
2341    
2342    
2343     /**
2344 mbroquet 3730 * Gestion des liens entre les lots du DA et le nouveau dossier
2345     **/
2346     function lienLotDossierInstruction($id, $db, $val, $DEBUG) {
2347     require_once ("../obj/lot.class.php");
2348     $lot = new lot("]", $db, $DEBUG);
2349     require_once ("../obj/lien_lot_demandeur.class.php");
2350     $lld = new lien_lot_demandeur("]", $db, $DEBUG);
2351    
2352    
2353     $sqlLots = "SELECT * FROM ".DB_PREFIXE."lot
2354     WHERE dossier_autorisation = '".$this->valF['dossier_autorisation']."'";
2355     $resLot = $db -> query($sqlLots);
2356     $this->f->addToLog("db->query(\"".$sqlLots."\");", VERBOSE_MODE);
2357     $this->f->isDatabaseError($resLot);
2358     while ($rowLot=& $resLot->fetchRow(DB_FETCHMODE_ASSOC)){
2359     // Insertion du nouveau lot
2360     $valLot['lot'] = "";
2361     $valLot['libelle'] = $rowLot['libelle'];
2362     $valLot['dossier_autorisation'] = null;
2363     $valLot['dossier'] = $this->valF['dossier_instruction'];
2364     $lot -> ajouter($valLot, $db, $DEBUG);
2365    
2366     //Insertion des liens entre dossier et les lots
2367     $sqlDemandeurs = "SELECT * FROM ".DB_PREFIXE."lien_lot_demandeur
2368     WHERE lot = ".$rowLot['lot'];
2369     $res = $db -> query($sqlDemandeurs);
2370     $this->f->addToLog(
2371     "lienLotDossierInstruction() : db->query(\"".$sqlDemandeurs."\");",
2372     VERBOSE_MODE
2373     );
2374     if ($this->f->isDatabaseError($res, true)) {
2375     return false;
2376     }
2377    
2378     while ($row=& $res->fetchRow(DB_FETCHMODE_ASSOC)){
2379     $valLld["lien_lot_demandeur"] = "";
2380     $valLld["lot"]=$lot->valF['lot'];
2381     $valLld["demandeur"] = $row['demandeur'];
2382     $valLld["petitionnaire_principal"] = $row['petitionnaire_principal'];
2383     if ($lld->ajouter($valLld, $db, $DEBUG) === false) {
2384     $this->f->addToLog(__METHOD__."() : ERROR - Impossible d'ajouter le lien entre le lot et le dossier d'instruction.", DEBUG_MODE);
2385     return false;
2386     }
2387     }
2388    
2389     // Récupération des données techniques du nouveau lots
2390     if($this->ajoutDonneesTechniquesLots(
2391     $id,
2392     $db,
2393     $val,
2394     $DEBUG,
2395     $rowLot['lot'],
2396     $lot->valF['lot']) === false) {
2397     $this -> addToMessage(
2398     _("Erreur lors de l'enregistrement de la demande.")." ".
2399     _("Contactez votre administrateur.")
2400     );
2401     $this->correct = false;
2402     $this->f->addToLog(
2403     "lienLotDossierInstruction() : ERROR ajoutDonneesTechniquesLots",
2404     DEBUG_MODE
2405     );
2406     return false;
2407     }
2408    
2409     }
2410    
2411     //
2412     return true;
2413     }
2414    
2415    
2416     /**
2417     * Méthode permettant d'ajouter les données techniques d'un lot.
2418     *
2419     * @param integer $id identifiant de la demande
2420     * @param database &$db handler de la base de donnée
2421     * @param array $val tableau de valeurs postées via le formulaire
2422     * @param boolean $DEBUG debug
2423     * @param integer $lotInit identifiant de lot initial
2424     * @param integer $lotDest identifiant du lot qui va recevoir les données
2425     *
2426     * @return boolean false si erreur
2427     */
2428     function ajoutDonneesTechniquesLots($id, &$db, $val, $DEBUG, $lotInit, $lotDest) {
2429     // Requete permettant de recupérer les données techniques du lot passé
2430     // en paramètre ($lotInit)
2431     $sql_get_dt = "
2432     SELECT donnees_techniques
2433     FROM ".DB_PREFIXE."donnees_techniques
2434     WHERE lot=".$lotInit;
2435     $id_dt = $this->f->db->getOne($sql_get_dt);
2436     // Si des données techniques sont liées au lots on les "copie" et
2437     // on les lies au lot passé en paramètre (lotDest)
2438     if(isset($id_dt) and !empty($id_dt)) {
2439     $this->f->addToLog(
2440     "ajoutDonneesTechniquesLots() : db->getone(\"".$sql_get_dt."\");",
2441     VERBOSE_MODE
2442     );
2443     if ($this->f->isDatabaseError($id_dt, true)){
2444     $this->f->addToLog(
2445     "ajoutDonneesTechniquesLots() : ERROR",
2446     DEBUG_MODE
2447     );
2448     return false;
2449     }
2450     require_once '../obj/donnees_techniques.class.php';
2451     $donnees_techniques = new donnees_techniques($id_dt, $db, $DEBUG);
2452    
2453     // Récupération des données dans le tableau des valeurs à insérer
2454     foreach($donnees_techniques->champs as $value) {
2455     $val[$value] = $donnees_techniques->getVal($value);
2456     }
2457     // Modification du lien vers le nouveau lot
2458     $val["lot"] = $lotDest;
2459     // Identifiant du cerfa
2460     $val['cerfa'] = $this->getIdCerfa();
2461     // Ajout des données techniques
2462     if($donnees_techniques->ajouter($val, $db, $DEBUG) === false) {
2463     $this->f->addToLog(__METHOD__."() : ERROR - Impossible d'ajouter les données techniques du lot.", DEBUG_MODE);
2464     return false;
2465     }
2466     }
2467    
2468     //
2469     return true;
2470     }
2471    
2472     /**
2473     * Gestion des liens entre la demande et les demandeurs recemment ajoutés
2474     **/
2475     function insertLinkDemandeDemandeur($db, $DEBUG) {
2476    
2477     //
2478     require_once "../obj/lien_demande_demandeur.class.php";
2479 softime 6565 $types_demandeur = array(
2480     "petitionnaire_principal",
2481     "delegataire",
2482     "petitionnaire",
2483     "plaignant_principal",
2484     "plaignant",
2485     "contrevenant_principal",
2486     "contrevenant",
2487     "requerant_principal",
2488     "requerant",
2489     "avocat_principal",
2490     "avocat",
2491 softime 7067 "bailleur_principal",
2492     "bailleur",
2493 softime 6565 );
2494     foreach ($types_demandeur as $type) {
2495     // Comparaison des autres demandeurs
2496     if(isset($this->postedIdDemandeur[$type]) === true) {
2497     // Suppression des liens non valides
2498     foreach ($this->valIdDemandeur[$type] as $demandeur) {
2499     // Demandeur
2500     if(!in_array($demandeur, $this->postedIdDemandeur[$type])) {
2501     if ($this->deleteLinkDemandeDemandeur($demandeur, $db, $DEBUG) == false) {
2502     //
2503     return false;
2504     }
2505 mbroquet 3730 }
2506 softime 6565
2507 mbroquet 3730 }
2508 softime 6565 // Ajout des nouveaux liens
2509     foreach ($this->postedIdDemandeur[$type] as $demandeur) {
2510     if(!in_array($demandeur, $this->valIdDemandeur[$type])) {
2511     $principal = false;
2512     if(strpos($type, '_principal') !== false) {
2513     $principal = true;
2514     }
2515     if ($this->addLinkDemandeDemandeur($demandeur, $principal, $db, $DEBUG) == false) {
2516     //
2517     return false;
2518     }
2519 mbroquet 3730 }
2520     }
2521     }
2522     }
2523    
2524     //
2525     return true;
2526     }
2527    
2528    
2529     /**
2530     * Fonction permettant d'ajouter un lien
2531     * entre la table demande et demandeur
2532     **/
2533     function addLinkDemandeDemandeur($id, $principal, $db, $DEBUG) {
2534     $lienAjout = new lien_demande_demandeur(
2535     "]",
2536     $db,
2537     $DEBUG);
2538     $lien = array('lien_demande_demandeur' => "",
2539     'petitionnaire_principal' => (($principal)?"t":"f"),
2540     'demande' => $this->valF['demande'],
2541     'demandeur' => $id);
2542     if ($lienAjout->ajouter($lien, $db, $DEBUG) === false) {
2543     $this->f->addToLog(__METHOD__."() : ERROR - Impossible d'ajouter le lien entre la demande et le demandeur.", DEBUG_MODE);
2544     return false;
2545     }
2546    
2547     //
2548     return true;
2549     }
2550    
2551     /**
2552     * Fonction permettant de supprimer un lien
2553     * entre la table demande et demandeur
2554     **/
2555     function deleteLinkDemandeDemandeur($id, $db, $DEBUG) {
2556     // Suppression
2557     $sql = "DELETE FROM ".DB_PREFIXE."lien_demande_demandeur ".
2558     "WHERE demande=".$this->valF['demande'].
2559     " AND demandeur=".$id;
2560     // Execution de la requete de suppression de l'objet
2561     $res = $db->query($sql);
2562     // Logger
2563     $this->f->addToLog("deleteLinkDemandeDemandeur(): db->query(\"".$sql."\");", VERBOSE_MODE);
2564     if ($this->f->isDatabaseError($res, true)){
2565     return false;
2566     }
2567    
2568     //
2569     return true;
2570     }
2571    
2572     /*
2573     * Teste si le lien entre une demande et un demandeur existe
2574     * */
2575     function isLinkDemandeDemandeurExist($idDemandeur) {
2576     $sql = "SELECT count(*)
2577     FROM ".DB_PREFIXE."lien_demande_demandeur
2578     WHERE demande = ".$this->valF['demande'].
2579     "AND demandeur = ".$idDemandeur;
2580     $count = $this->f->db->getOne($sql);
2581     $this->f->addToLog("isLinkDemandeDemandeurExist() : db->getone(\"".$sql."\");", VERBOSE_MODE);
2582     $this->f->isDatabaseError($count);
2583     if ($count === 0) {
2584     $this->f->addToLog("isLinkDemandeDemandeurExist() : db->getone(\"".$sql."\"); 0 values", VERBOSE_MODE);
2585     return false;
2586     } else {
2587     return true;
2588     }
2589    
2590     }
2591    
2592     /**
2593     * Methode de recupération des valeurs postées
2594     **/
2595     function getPostedValues() {
2596     // Récupération des demandeurs dans POST
2597 softime 6565 $types_demandeur = array(
2598     "petitionnaire_principal",
2599     "delegataire",
2600     "petitionnaire",
2601     "plaignant_principal",
2602     "plaignant",
2603     "contrevenant_principal",
2604     "contrevenant",
2605     "requerant_principal",
2606     "requerant",
2607     "avocat_principal",
2608     "avocat",
2609 softime 7067 "bailleur_principal",
2610     "bailleur",
2611 softime 6565 );
2612     foreach ($types_demandeur as $type) {
2613     if($this->f->get_submitted_post_value($type) !== null AND
2614     $this->f->get_submitted_post_value($type) != '') {
2615     $this->postedIdDemandeur[$type] = $this->f->get_submitted_post_value($type);
2616 mbroquet 3730 }
2617     }
2618     }
2619    
2620     /**
2621     * Méthode permettant de récupérer les id des demandeurs liés à la table
2622     * liée passée en paramètre
2623     *
2624     * @param string $from Table liée : "demande", "dossier", dossier_autorisation"
2625     * @param string $id Identifiant (clé primaire de la table liée en question)
2626     */
2627     function listeDemandeur($from, $id) {
2628     // Récupération des demandeurs de la base
2629     $sql = "SELECT demandeur.demandeur,
2630     demandeur.type_demandeur,
2631     lien_".$from."_demandeur.petitionnaire_principal
2632     FROM ".DB_PREFIXE."lien_".$from."_demandeur
2633     INNER JOIN ".DB_PREFIXE."demandeur
2634     ON demandeur.demandeur=lien_".$from."_demandeur.demandeur
2635     WHERE ".$from." = '".$id."'";
2636     $res = $this->f->db->query($sql);
2637     $this->f->addToLog("listeDemandeur(): db->query(\"".$sql."\")", VERBOSE_MODE);
2638     $this->f->isDatabaseError($res);
2639     // Stockage du résultat dans un tableau
2640     while ($row=& $res->fetchRow(DB_FETCHMODE_ASSOC)){
2641 softime 6565 $demandeur_type = $row['type_demandeur'];
2642     if ($row['petitionnaire_principal'] == 't'){
2643     $demandeur_type .= "_principal";
2644 mbroquet 3730 }
2645 softime 6565 $this->valIdDemandeur[$demandeur_type][] = $row['demandeur'];
2646 mbroquet 3730 }
2647     }
2648    
2649    
2650     /**
2651     * Surcharge du bouton retour afin de retourner sur la recherche de dossiers
2652     * d'instruction existant
2653     */
2654     function retour($premier = 0, $recherche = "", $tricol = "") {
2655    
2656     echo "\n<a class=\"retour\" ";
2657     echo "href=\"";
2658     //
2659     if($this->getParameter("idx_dossier") != "") {
2660     echo "tab.php?";
2661     echo "obj=recherche_dossier";
2662    
2663     } else {
2664     if($this->getParameter("retour")=="form" AND !($this->getParameter("validation")>0 AND $this->getParameter("maj")==2 AND $this->correct)) {
2665     echo "form.php?";
2666     } else {
2667     echo "tab.php?";
2668     }
2669     echo "obj=".get_class($this);
2670     if($this->getParameter("retour")=="form") {
2671     echo "&amp;idx=".$this->getParameter("idx");
2672     echo "&amp;idz=".$this->getParameter("idz");
2673     echo "&amp;action=3";
2674     }
2675     }
2676     echo "&amp;premier=".$this->getParameter("premier");
2677     echo "&amp;tricol=".$this->getParameter("tricol");
2678     echo "&amp;recherche=".$this->getParameter("recherche");
2679     echo "&amp;selectioncol=".$this->getParameter("selectioncol");
2680     echo "&amp;advs_id=".$this->getParameter("advs_id");
2681     echo "&amp;valide=".$this->getParameter("valide");
2682     //
2683     echo "\"";
2684     echo ">";
2685     //
2686     echo _("Retour");
2687     //
2688     echo "</a>\n";
2689    
2690     }
2691    
2692    
2693     /**
2694     * Cette méthode permet d'afficher des informations spécifiques dans le
2695     * formulaire de l'objet
2696     *
2697     * @param integer $maj Mode de mise à jour
2698     */
2699     function formSpecificContent($maj) {
2700 softime 6565 // Tableau des demandeurs selon le contexte
2701     $listeDemandeur = $this->valIdDemandeur;
2702 mbroquet 3730 /**
2703     * Gestion du bloc des demandeurs
2704     */
2705     // Si le mode est (modification ou suppression ou consultation) ET que
2706     // le formulaire n'est pas correct (c'est-à-dire que le formulaire est
2707     // actif)
2708 softime 6565 if ($this->correct !== true AND
2709     $this->getParameter('validation') === 0 AND
2710     $this->getParameter("maj") > 0) {
2711 mbroquet 3730 // Alors on récupère les demandeurs dans la table lien pour
2712 softime 6565 // affectation des résultats dans $this->valIdDemandeur
2713 mbroquet 3730 $this->listeDemandeur("demande", $this->val[array_search('demande', $this->champs)]);
2714 softime 6565 $listeDemandeur = $this->valIdDemandeur;
2715 mbroquet 3730 }
2716    
2717 softime 6565 // Récupération des valeurs postées
2718     if ($this->getParameter('validation') > 0) {
2719     $listeDemandeur = $this->postedIdDemandeur;
2720     }
2721    
2722 mbroquet 3730 // Si le mode est (ajout ou modification) ET que le formulaire n'est pas
2723     // correct (c'est-à-dire que le formulaire est actif)
2724 softime 6565 if ($this->getParameter("maj") < 2 AND $this->correct !== true) {
2725 mbroquet 3730 // Alors on positionne le marqueur linkable a true qui permet
2726     // d'afficher ou non les actions de gestion des demandeurs
2727     $linkable = true;
2728     } else {
2729     // Sinon on positionne le marqueur linkable a false qui permet
2730     // d'afficher ou non les actions de gestion des demandeurs
2731     $linkable = false;
2732     }
2733    
2734     // Affichage des demandeurs et des actions
2735     // Conteneur de la listes des demandeurs
2736     echo "<div id=\"liste_demandeur\" class=\"demande_hidden_bloc col_12\">";
2737     echo "<fieldset class=\"cadre ui-corner-all ui-widget-content\">";
2738     echo " <legend class=\"ui-corner-all ui-widget-content ui-state-active\">"
2739 softime 6565 ._("Demandeurs")."</legend>";
2740    
2741 mbroquet 3730 // Affichage du bloc pétitionnaire principal / délégataire
2742     // L'ID DU DIV SUIVANT EST NECESSAIRE AU BON FONCTIONNEMENT DU JS
2743     echo "<div id=\"petitionnaire_principal_delegataire\">";
2744 softime 6565 // Affichage de la synthèse du pétitionnaire principal
2745     $this->displaySyntheseDemandeur($listeDemandeur, "petitionnaire_principal");
2746 mbroquet 3730 // L'ID DU DIV ET DE L'INPUT SUIVANT EST NECESSAIRE AU BON FONCTIONNEMENT DU JS
2747     echo "<div id=\"delegataire\">";
2748 softime 6565 // Affichage de la synthèse du délégataire
2749     $this->displaySyntheseDemandeur($listeDemandeur, "delegataire");
2750 mbroquet 3730 echo "</div>";
2751     echo "<div class=\"both\"></div>";
2752     echo "</div>";
2753     // Bloc des pétitionnaires secondaires
2754     // L'ID DU DIV SUIVANT EST NECESSAIRE AU BON FONCTIONNEMENT DU JS
2755     echo "<div id=\"listePetitionnaires\">";
2756 softime 6565 $this->displaySyntheseDemandeur($listeDemandeur, "petitionnaire");
2757 mbroquet 3730 echo "</div>";
2758 softime 7067
2759     // Affichage du bloc pétitionnaire principal / délégataire / bailleur
2760     // L'ID DU DIV SUIVANT EST NECESSAIRE AU BON FONCTIONNEMENT DU JS
2761     echo "<div id=\"petitionnaire_principal_delegataire_bailleur\">";
2762     // Doit être utilisé avec la div petitionnaire_principal_delegataire
2763     echo "<div id=\"listeBailleurs\" class=\"col_12\">";
2764     // L'ID DU DIV SUIVANT EST NECESSAIRE AU BON FONCTIONNEMENT DU JS
2765     echo "<div id=\"bailleur_principal\">";
2766     // Affichage de la synthèse
2767     $this->displaySyntheseDemandeur($listeDemandeur, "bailleur_principal");
2768     echo "</div>";
2769     echo "<div id=\"listeAutresBailleurs\">";
2770     $this->displaySyntheseDemandeur($listeDemandeur, "bailleur");
2771     echo "</div>";
2772     echo "</div>";
2773     echo "</div>";
2774 softime 6565
2775     echo "<div id=\"plaignant_contrevenant\">";
2776     // Affichage du bloc contrevenant
2777     // L'ID DU DIV SUIVANT EST NECESSAIRE AU BON FONCTIONNEMENT DU JS
2778     echo "<div id=\"listeContrevenants\" class=\"col_12\">";
2779     // L'ID DU DIV SUIVANT EST NECESSAIRE AU BON FONCTIONNEMENT DU JS
2780     echo "<div id=\"contrevenant_principal\">";
2781     // Affichage de la synthèse
2782     $this->displaySyntheseDemandeur($listeDemandeur, "contrevenant_principal");
2783     echo "</div>";
2784     echo "<div id=\"listeAutresContrevenants\">";
2785     // Affichage de la synthèse
2786     $this->displaySyntheseDemandeur($listeDemandeur, "contrevenant");
2787     echo "</div>";
2788     echo "</div>";
2789     // Affichage du bloc plaignant
2790     // L'ID DU DIV SUIVANT EST NECESSAIRE AU BON FONCTIONNEMENT DU JS
2791     echo "<div id=\"listePlaignants\" class=\"col_12\">";
2792     // L'ID DU DIV SUIVANT EST NECESSAIRE AU BON FONCTIONNEMENT DU JS
2793     echo "<div id=\"plaignant_principal\">";
2794     // Affichage de la synthèse
2795     $this->displaySyntheseDemandeur($listeDemandeur, "plaignant_principal");
2796     echo "</div>";
2797     echo "<div id=\"listeAutresPlaignants\">";
2798     $this->displaySyntheseDemandeur($listeDemandeur, "plaignant");
2799     echo "</div>";
2800     echo "</div>";
2801     echo "</div>";
2802     echo "<div id=\"requerant_avocat\">";
2803     // Affichage du bloc requérant
2804     // L'ID DU DIV SUIVANT EST NECESSAIRE AU BON FONCTIONNEMENT DU JS
2805     echo "<div id=\"listeRequerants\" class=\"col_12\">";
2806     // L'ID DU DIV SUIVANT EST NECESSAIRE AU BON FONCTIONNEMENT DU JS
2807     echo "<div id=\"requerant_principal\">";
2808     // Affichage de la synthèse
2809     $this->displaySyntheseDemandeur($listeDemandeur, "requerant_principal");
2810     echo "</div>";
2811     echo "<div id=\"listeAutresRequerants\">";
2812     $this->displaySyntheseDemandeur($listeDemandeur, "requerant");
2813     echo "</div>";
2814     echo "</div>";
2815     // Affichage du bloc avocat
2816     // L'ID DU DIV SUIVANT EST NECESSAIRE AU BON FONCTIONNEMENT DU JS
2817     echo "<div id=\"listeAvocat\" class=\"col_12\">";
2818     // L'ID DU DIV SUIVANT EST NECESSAIRE AU BON FONCTIONNEMENT DU JS
2819     echo "<div id=\"avocat_principal\">";
2820     $this->displaySyntheseDemandeur($listeDemandeur, "avocat_principal");
2821     echo "</div>";
2822     echo "<div id=\"listeAutresAvocats\">";
2823     $this->displaySyntheseDemandeur($listeDemandeur, "avocat");
2824     echo "</div>";
2825     echo "</div>";
2826     echo "</div>";
2827 mbroquet 3730 echo "</fieldset>";
2828     // Champ flag permettant de récupérer la valeur de l'option sig pour
2829     // l'utiliser en javascript, notamment lors du chargement de l'interface
2830     // pour les références cadastrales
2831     // XXX Si un widget pour les références cadastrales existait, il n'y
2832     // aurait pas besoin de faire cela
2833     echo "<input id='option_sig' type='hidden' value='".$this->f->getParameter("option_sig")."' name='option_sig'>";
2834     echo "</div>";
2835     }
2836 softime 6565
2837     function displaySyntheseDemandeur($listeDemandeur, $type) {
2838     // Si le mode est (ajout ou modification) ET que le formulaire n'est pas
2839     // correct (c'est-à-dire que le formulaire est actif)
2840     if ($this->getParameter("maj") < 2 AND $this->correct === false) {
2841     // Alors on positionne le marqueur linkable a true qui permet
2842     // d'afficher ou non les actions de gestion des demandeurs
2843     $linkable = true;
2844     } else {
2845     // Sinon on positionne le marqueur linkable a false qui permet
2846     // d'afficher ou non les actions de gestion des demandeurs
2847     $linkable = false;
2848     }
2849     // Récupération du type de demandeur pour l'affichage
2850     switch ($type) {
2851     case 'petitionnaire_principal':
2852     $legend = _("Petitionnaire principal");
2853     break;
2854 mbroquet 3730
2855 softime 6565 case 'delegataire':
2856     $legend = _("Autre correspondant");
2857     break;
2858    
2859     case 'petitionnaire':
2860     $legend = _("Petitionnaire");
2861     break;
2862    
2863     case 'contrevenant_principal':
2864     $legend = _("Contrevenant principal");
2865     break;
2866    
2867     case 'contrevenant':
2868     $legend = _("Autre contrevenant");
2869     break;
2870    
2871     case 'plaignant_principal':
2872     $legend = _("Plaignant principal");
2873     break;
2874    
2875     case 'plaignant':
2876     $legend = _("Autre plaignant");
2877     break;
2878    
2879     case 'requerant_principal':
2880     $legend = _("Requérant principal");
2881     break;
2882    
2883     case 'requerant':
2884     $legend = _("Autre requérant");
2885     break;
2886    
2887     case 'avocat_principal':
2888     $legend = _("Avocat principal");
2889     break;
2890    
2891     case 'avocat':
2892     $legend = _("Autre avocat");
2893     break;
2894 softime 7067
2895     case 'bailleur_principal':
2896     $legend = _("Bailleur principal");
2897     break;
2898    
2899     case 'bailleur':
2900     $legend = _("Autre bailleur");
2901     break;
2902 softime 6565 }
2903     foreach ($listeDemandeur[$type] as $demandeur_id) {
2904     $obj = str_replace('_principal', '', $type);
2905     $demandeur = new $obj(
2906     $demandeur_id,
2907     $this->f->db,false);
2908     $demandeur -> afficherSynthese($type, $linkable);
2909     $demandeur -> __destruct();
2910     }
2911     // Si en édition de formulaire
2912     if ($this->getParameter("maj") < 2 AND $this->correct !== true) {
2913     // Bouton d'ajout du avocat
2914     // L'ID DE L'INPUT SUIVANT EST NECESSAIRE AU BON FONCTIONNEMENT DU JS
2915     echo "<span id=\"add_".$type."\"
2916     class=\"om-form-button add-16\">".
2917     $legend.
2918     "</span>";
2919     }
2920     }
2921    
2922 mbroquet 3730 // {{{
2923    
2924     // getter
2925     function getValIdDemandeur() {
2926     return $this->valIdDemandeur;
2927     }
2928     // setter
2929     function setValIdDemandeur($valIdDemandeur) {
2930     $this->valIdDemandeur = $valIdDemandeur;
2931     }
2932    
2933     //Supression du lien entre la demandeur et le(s) demandeur(s)
2934 softime 6929 function triggersupprimer($id, &$db = null, $val = array(), $DEBUG = null) {
2935 mbroquet 3730
2936     //Création de la requête
2937     $sql = "DELETE FROM
2938     ".DB_PREFIXE."lien_demande_demandeur
2939     WHERE
2940     demande = $id";
2941    
2942     $res = $this->f->db->query($sql);
2943     $this->f->addToLog("triggerSupprimer() : db->query(\"".$sql."\")");
2944     if ($this->f->isDatabaseError($res, true)) {
2945     return false;
2946     }
2947    
2948     //
2949     return true;
2950     }
2951    
2952     // }}}
2953    
2954     /**
2955     * Récupère le champ "qualification" du type de la demande
2956     * @param integer $demande_type Identifiant du type de la demande
2957     * @return boolean
2958     */
2959     function get_qualification($demande_type) {
2960    
2961     // Initialise le résultat
2962     $qualification = "";
2963    
2964     // Si la condition existe
2965     if (is_numeric($demande_type)) {
2966    
2967     // Requête SQL
2968     $sql = "SELECT qualification
2969     FROM ".DB_PREFIXE."demande_type
2970     WHERE demande_type = $demande_type";
2971     $qualification = $this->db->getOne($sql);
2972     $this->f->addToLog("get_qualification() : db->getOne(\"".$sql."\")",
2973     VERBOSE_MODE);
2974     $this->f->isDatabaseError($qualification);
2975     }
2976    
2977     // Retourne le résultat
2978     return $qualification;
2979     }
2980    
2981     /**
2982     * Récupère les champs archive_* d'une instruction
2983     * @param string $dossier L'identifiant du dossier d'instruction
2984     */
2985     public function getArchiveInstruction($dossierID){
2986    
2987     //On récupère les données du dernier DI accordé
2988     $sql = "SELECT dossier.delai, dossier.accord_tacite, dossier.etat,
2989     dossier.avis_decision,
2990     to_char(dossier.date_complet, 'DD/MM/YYYY') as date_complet,
2991 nmeucci 3873 to_char(dossier.date_depot, 'DD/MM/YYYY') as date_depot,
2992 mbroquet 3730 to_char(dossier.date_dernier_depot, 'DD/MM/YYYY') as date_dernier_depot,
2993     to_char(dossier.date_rejet, 'DD/MM/YYYY') as date_rejet,
2994     to_char(dossier.date_limite, 'DD/MM/YYYY') as date_limite,
2995     to_char(dossier.date_notification_delai, 'DD/MM/YYYY') as date_notification_delai,
2996     to_char(dossier.date_decision, 'DD/MM/YYYY') as date_decision,
2997     to_char(dossier.date_validite, 'DD/MM/YYYY') as date_validite,
2998     to_char(dossier.date_achevement, 'DD/MM/YYYY') as date_achevement,
2999     to_char(dossier.date_chantier, 'DD/MM/YYYY') as date_chantier,
3000     to_char(dossier.date_conformite, 'DD/MM/YYYY') as date_conformite,
3001     dossier.incompletude,
3002     dossier.evenement_suivant_tacite, dossier.evenement_suivant_tacite_incompletude,
3003     dossier.etat_pendant_incompletude,
3004     to_char(dossier.date_limite_incompletude, 'DD/MM/YYYY') as date_limite_incompletude,
3005     dossier.delai_incompletude, dossier.autorite_competente, dossier.duree_validite
3006 softime 6565 ,dossier.dossier, dossier.incomplet_notifie,
3007     to_char(dossier.date_cloture_instruction, 'DD/MM/YYYY') as date_cloture_instruction,
3008     to_char(dossier.date_premiere_visite, 'DD/MM/YYYY') as date_premiere_visite,
3009     to_char(dossier.date_derniere_visite, 'DD/MM/YYYY') as date_derniere_visite,
3010     to_char(dossier.date_contradictoire, 'DD/MM/YYYY') as date_contradictoire,
3011     to_char(dossier.date_retour_contradictoire, 'DD/MM/YYYY') as date_retour_contradictoire,
3012     to_char(dossier.date_ait, 'DD/MM/YYYY') as date_ait,
3013     to_char(dossier.date_transmission_parquet, 'DD/MM/YYYY') as date_transmission_parquet
3014 mbroquet 3730 FROM ".DB_PREFIXE."dossier
3015     LEFT JOIN ".DB_PREFIXE."avis_decision
3016     ON dossier.avis_decision = avis_decision.avis_decision
3017     WHERE dossier.avis_decision IS NOT NULL AND avis_decision.typeavis = 'F'
3018     AND dossier.dossier_autorisation = (
3019     SELECT dossier_autorisation.dossier_autorisation
3020     FROM ".DB_PREFIXE."dossier_autorisation
3021     LEFT JOIN ".DB_PREFIXE."dossier
3022     ON dossier_autorisation.dossier_autorisation = dossier.dossier_autorisation
3023     WHERE dossier = '".$dossierID."')
3024     ORDER BY dossier.version DESC";
3025    
3026     $res = $this->db->query($sql);
3027     $this->addToLog("updateArchiveInstruction(): db->query(\"".$sql."\");", VERBOSE_MODE);
3028     if ($this->f->isDatabaseError($res, true)) {
3029     return false;
3030     }
3031    
3032     //Un des dosssiers d'instruction a été accordé, on récupère ses données
3033     if ( $res->numrows() != 0 ){
3034    
3035     $row=& $res->fetchRow(DB_FETCHMODE_ASSOC);
3036     require_once "../obj/instruction.class.php";
3037     $instruction = new instruction("]",$this->db,DEBUG);
3038    
3039     $instruction->setParameter("maj", 1);
3040     $instruction->updateArchiveData($row);
3041     return $instruction->valF;
3042     }
3043     //Sinon, on prend les données du P0, si ce n'est pas un P0
3044     else {
3045     $sql = "SELECT dossier.delai, dossier.accord_tacite, dossier.etat,
3046     dossier.avis_decision, dossier.date_complet, dossier.date_dernier_depot,
3047     dossier.date_rejet, dossier.date_limite, dossier.date_notification_delai,
3048     dossier.date_decision, dossier.date_validite, dossier.date_achevement,
3049     dossier.date_chantier, dossier.date_conformite, dossier.incompletude,
3050     dossier.evenement_suivant_tacite, dossier.evenement_suivant_tacite_incompletude,
3051     dossier.etat_pendant_incompletude, dossier.date_limite_incompletude,
3052     dossier.delai_incompletude, dossier.autorite_competente, dossier.duree_validite,
3053 softime 6565 dossier.dossier, dossier.incomplet_notifie, dossier.date_depot,
3054     dossier.date_cloture_instruction, dossier.date_premiere_visite,
3055     dossier.date_derniere_visite, dossier.date_contradictoire,
3056     dossier.date_retour_contradictoire, dossier.date_ait,
3057     dossier.date_transmission_parquet
3058 mbroquet 3730 FROM ".DB_PREFIXE."dossier
3059     LEFT JOIN ".DB_PREFIXE."dossier_instruction_type
3060     ON dossier.dossier_instruction_type = dossier_instruction_type.dossier_instruction_type
3061     WHERE dossier.dossier_autorisation = (
3062     SELECT dossier_autorisation.dossier_autorisation
3063     FROM ".DB_PREFIXE."dossier_autorisation
3064     LEFT JOIN ".DB_PREFIXE."dossier
3065     ON dossier_autorisation.dossier_autorisation = dossier.dossier_autorisation
3066     WHERE dossier = '".$dossierID."')
3067     AND dossier_instruction_type.code = 'P'
3068     ORDER BY dossier.version DESC";
3069     $res = $this->db->query($sql);
3070     $this->addToLog("updateArchiveInstruction(): db->query(\"".$sql."\");", VERBOSE_MODE);
3071     if ($this->f->isDatabaseError($res, true)) {
3072     return false;
3073     }
3074    
3075     //On est pas dans le cas d'un dépôt d'un P0
3076     if ( $res->numrows() != 0 ){
3077     $row=& $res->fetchRow(DB_FETCHMODE_ASSOC);
3078     require_once "../obj/instruction.class.php";
3079     $instruction = new instruction("]",$this->db,DEBUG);
3080     $instruction->setParameter("maj", 1);
3081     $instruction->updateArchiveData($row);
3082     return $instruction->valF;
3083     }
3084     }
3085     }
3086    
3087     /**
3088     * Cette methode permet d'afficher le bouton de validation du formulaire
3089     *
3090     * @param integer $maj Mode de mise a jour
3091     * @return void
3092     */
3093     function bouton($maj) {
3094    
3095     if (!$this->correct
3096     && $this->checkActionAvailability() == true) {
3097     //
3098     switch($maj) {
3099     case 0 :
3100     $bouton = _("Ajouter");
3101     break;
3102     case 1 :
3103     $bouton = _("Modifier");
3104     break;
3105     case 2 :
3106     $bouton = _("Supprimer");
3107     break;
3108     default :
3109     // Actions specifiques
3110     if ($this->get_action_param($maj, "button") != null) {
3111     //
3112     $bouton = $this->get_action_param($maj, "button");
3113     } else {
3114     //
3115     $bouton = _("Valider");
3116     }
3117     break;
3118     }
3119     //
3120     $params = array(
3121     "value" => $bouton,
3122     "name" => "submit",
3123     "onclick"=>"return getDataFieldReferenceCadastrale();",
3124     );
3125     //
3126     $this->f->layout->display_form_button($params);
3127     }
3128    
3129     }
3130    
3131     /**
3132     * Récupère l'instance de la classe taxe_amenagement.
3133     *
3134     * @param integer $om_collectivite La collectivité
3135     *
3136     * @return object
3137     */
3138     function get_inst_taxe_amenagement_by_om_collectivite($om_collectivite) {
3139     //
3140 softime 6929 if ($this->inst_taxe_amenagement === null) {
3141 mbroquet 3730 //
3142     $taxe_amenagement = $this->get_taxe_amenagement_by_om_collectivite($om_collectivite);
3143 softime 6929
3144     // Si aucun paramétrage de taxe trouvé et que la collectivité
3145     // est mono
3146     if ($taxe_amenagement === null
3147     && $this->f->isCollectiviteMono($om_collectivite) === true) {
3148     // Récupère la collectivité multi
3149     $om_collectivite_multi = $this->f->get_idx_collectivite_multi();
3150     //
3151     $taxe_amenagement = $this->get_taxe_amenagement_by_om_collectivite($om_collectivite_multi);
3152     }
3153    
3154 mbroquet 3730 //
3155 softime 6929 if ($taxe_amenagement === null) {
3156     //
3157     return null;
3158     }
3159    
3160     //
3161 mbroquet 3730 require_once "../obj/taxe_amenagement.class.php";
3162     $this->inst_taxe_amenagement = new taxe_amenagement($taxe_amenagement);
3163     }
3164     //
3165     return $this->inst_taxe_amenagement;
3166     }
3167    
3168     /**
3169     * Récupère l'identifiant de la taxe d'aménagement par rapport à la collectivité.
3170     *
3171     * @param integer $om_collectivite La collectivité
3172     *
3173     * @return integer
3174     */
3175     function get_taxe_amenagement_by_om_collectivite($om_collectivite) {
3176     //
3177 softime 6929 $taxe_amenagement = null;
3178 mbroquet 3730
3179 softime 6929 // Si la collectivité n'est pas renseigné
3180     if ($om_collectivite !== '' && $om_collectivite !== null) {
3181    
3182     // SQL
3183     $sql = "SELECT taxe_amenagement
3184     FROM ".DB_PREFIXE."taxe_amenagement
3185     WHERE om_collectivite = ".intval($om_collectivite);
3186     $taxe_amenagement = $this->f->db->getOne($sql);
3187     $this->addToLog(__METHOD__."(): db->getone(\"".$sql."\")", VERBOSE_MODE);
3188     $this->f->isDatabaseError($taxe_amenagement);
3189     }
3190    
3191 mbroquet 3730 //
3192 softime 6929 return $taxe_amenagement;
3193 mbroquet 3730 }
3194    
3195    
3196     /**
3197 softime 6929 * Récupère l'instance du cerfa par le type détaillé du DA.
3198     *
3199     * @param integer $datd Identifiant du type détaillé du DA.
3200     *
3201     * @return object
3202     */
3203     protected function get_inst_cerfa_by_datd($datd = null) {
3204     //
3205     if ($this->inst_cerfa === null) {
3206     //
3207     $inst_datd = $this->get_inst_common("dossier_autorisation_type_detaille", $datd);
3208     //
3209     $cerfa = $inst_datd->getVal('cerfa');
3210     //
3211     if ($cerfa !== '' && $cerfa !== null) {
3212     //
3213     require_once "../obj/cerfa.class.php";
3214     $this->inst_cerfa = new cerfa($cerfa);
3215     }
3216     }
3217    
3218     //
3219     return $this->inst_cerfa;
3220     }
3221    
3222    
3223     /**
3224 mbroquet 3730 * Récupère l'instance du dossier d'autorisation.
3225     *
3226     * @param string $dossier_autorisation Identifiant du dossier d'autorisation.
3227     *
3228     * @return object
3229     */
3230 fmichon 4708 function get_inst_dossier_autorisation($dossier_autorisation = null) {
3231 mbroquet 3730 //
3232     return $this->get_inst_common("dossier_autorisation", $dossier_autorisation);
3233     }
3234    
3235 nhaye 5254 }
3236 mbroquet 3730
3237     ?>

Properties

Name Value
svn:keywords "Id"

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26