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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 8329 - (hide annotations)
Wed Nov 14 11:20:57 2018 UTC (6 years, 2 months ago) by softime
File size: 144180 byte(s)
* Merge de la branche d'intégration 4.8.0-develop dans le trunk

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

Properties

Name Value
svn:keywords "Id"

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26