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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 8593 - (hide annotations)
Wed Feb 27 16:39:17 2019 UTC (5 years, 11 months ago) by softime
File size: 144512 byte(s)
* Merge de la branche d'intégration 4.10.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 softime 8593 $valInstr['flag_edition_integrale'] = 'f';
1972     $valInstr['titre_om_htmletat'] = null;
1973     $valInstr['corps_om_htmletatex'] = null;
1974     $valInstr['archive_dossier_instruction_type'] = null;
1975 mbroquet 3730
1976     // Récupération des champs archive si cette demande a créée un dossier
1977     // d'instruction mais pas un P0
1978     if (!is_null($this->valF['dossier_instruction']) &&
1979     $this->valF['dossier_instruction'] !== "" ){
1980    
1981     // Requête
1982     $sql = "SELECT dossier_instruction_type.code
1983     FROM ".DB_PREFIXE."demande_type
1984     LEFT JOIN ".DB_PREFIXE."dossier_instruction_type
1985     ON demande_type.dossier_instruction_type = dossier_instruction_type.dossier_instruction_type
1986     WHERE demande_type.demande_type = ".$this->valF['demande_type'];
1987     $res = $db->getOne($sql);
1988     $this->addToLog("triggerajouter(): db->getOne(\"".$sql."\");", VERBOSE_MODE);
1989     if ($this->f->isDatabaseError($res, true)) {
1990     return false;
1991     }
1992    
1993     // On vérifie que ce n'est pas un P0
1994     if ( strcmp($res, "P") !== 0 ){
1995    
1996     $res = $this->getArchiveInstruction($this->valF['dossier_instruction']);
1997    
1998     if ($res == false) {
1999     return false;
2000     }
2001    
2002     if (isset($res['archive_delai'])) {
2003     $valInstr['archive_delai']=$res["archive_delai"];
2004     }
2005     if (isset($res['archive_date_complet'])) {
2006     $valInstr['archive_date_complet']=$res["archive_date_complet"];
2007     }
2008     if (isset($res['archive_date_dernier_depot'])) {
2009     $valInstr['archive_date_dernier_depot']=$res["archive_date_dernier_depot"];
2010     }
2011     if (isset($res['archive_date_rejet'])) {
2012     $valInstr['archive_date_rejet']=$res["archive_date_rejet"];
2013     }
2014     if (isset($res['archive_date_limite'])) {
2015     $valInstr['archive_date_limite']=$res["archive_date_limite"];
2016     }
2017     if (isset($res['archive_date_notification_delai'])) {
2018     $valInstr['archive_date_notification_delai']=$res["archive_date_notification_delai"];
2019     }
2020     if (isset($res['archive_accord_tacite'])) {
2021     $valInstr['archive_accord_tacite']=$res["archive_accord_tacite"];
2022     }
2023     if (isset($res['archive_etat'])) {
2024     $valInstr['archive_etat']=$res["archive_etat"];
2025     }
2026     if (isset($res['archive_date_decision'])) {
2027     $valInstr['archive_date_decision']=$res["archive_date_decision"];
2028     }
2029     if (isset($res['archive_avis'])) {
2030     $valInstr['archive_avis']=$res["archive_avis"];
2031     }
2032     if (isset($res['archive_date_validite'])) {
2033     $valInstr['archive_date_validite']=$res["archive_date_validite"];
2034     }
2035     if (isset($res['archive_date_achevement'])) {
2036     $valInstr['archive_date_achevement']=$res["archive_date_achevement"];
2037     }
2038     if (isset($res['archive_date_chantier'])) {
2039     $valInstr['archive_date_chantier']=$res["archive_date_chantier"];
2040     }
2041     if (isset($res['archive_date_conformite'])) {
2042     $valInstr['archive_date_conformite']=$res["archive_date_conformite"];
2043     }
2044     if (isset($res['archive_incompletude'])) {
2045     $valInstr['archive_incompletude']=$res["archive_incompletude"];
2046     }
2047     if (isset($res['archive_incomplet_notifie'])) {
2048     $valInstr['archive_incomplet_notifie']=$res["archive_incomplet_notifie"];
2049     }
2050     if (isset($res['archive_evenement_suivant_tacite'])) {
2051     $valInstr['archive_evenement_suivant_tacite']=$res["archive_evenement_suivant_tacite"];
2052     }
2053     if (isset($res['archive_evenement_suivant_tacite_incompletude'])) {
2054     $valInstr['archive_evenement_suivant_tacite_incompletude']=$res["archive_evenement_suivant_tacite_incompletude"];
2055     }
2056     if (isset($res['archive_etat_pendant_incompletude'])) {
2057     $valInstr['archive_etat_pendant_incompletude']=$res["archive_etat_pendant_incompletude"];
2058     }
2059     if (isset($res['archive_date_limite_incompletude'])) {
2060     $valInstr['archive_date_limite_incompletude']=$res["archive_date_limite_incompletude"];
2061     }
2062     if (isset($res['archive_delai_incompletude'])) {
2063     $valInstr['archive_delai_incompletude']=$res["archive_delai_incompletude"];
2064     }
2065     if (isset($res['archive_autorite_competente'])) {
2066     $valInstr['archive_autorite_competente']=$res["archive_autorite_competente"];
2067     }
2068 softime 6565 if (isset($res['archive_date_cloture_instruction'])) {
2069     $valInstr['archive_date_cloture_instruction'] = $res['archive_date_cloture_instruction'];
2070     }
2071     if (isset($res['archive_date_premiere_visite'])) {
2072     $valInstr['archive_date_premiere_visite'] = $res['archive_date_premiere_visite'];
2073     }
2074     if (isset($res['archive_date_derniere_visite'])) {
2075     $valInstr['archive_date_derniere_visite'] = $res['archive_date_derniere_visite'];
2076     }
2077     if (isset($res['archive_date_contradictoire'])) {
2078     $valInstr['archive_date_contradictoire'] = $res['archive_date_contradictoire'];
2079     }
2080     if (isset($res['archive_date_retour_contradictoire'])) {
2081     $valInstr['archive_date_retour_contradictoire'] = $res['archive_date_retour_contradictoire'];
2082     }
2083     if (isset($res['archive_date_ait'])) {
2084     $valInstr['archive_date_ait'] = $res['archive_date_ait'];
2085     }
2086     if (isset($res['archive_date_transmission_parquet'])) {
2087     $valInstr['archive_date_transmission_parquet'] = $res['archive_date_transmission_parquet'];
2088     }
2089 mbroquet 3730 }
2090     }
2091    
2092     // Création d'un nouveau dossier
2093 softime 7996 $instruction = $this->f->get_inst__om_dbform(array(
2094     "obj" => "instruction",
2095     "idx" => "]",
2096     ));
2097 mbroquet 3730 $instruction->valF = "";
2098     if ($instruction->ajouter($valInstr, $db, $DEBUG) === false) {
2099 nmeucci 3876 // Suppression des messages valides puisque erreur
2100     $this->msg = '';
2101     $this -> addToMessage($instruction->msg);
2102 mbroquet 3730 $this -> addToMessage(_("Une erreur s'est produite lors de la creation du recepisse"));
2103     $this->f->addToLog(__METHOD__."() : ERROR - Impossible d'ajouter l'instruction.", DEBUG_MODE);
2104     return false;
2105     }
2106    
2107     // Finalisation du document
2108     $_GET['obj']='instruction';
2109     $_GET['idx']=$instruction->valF[$instruction->clePrimaire];
2110 softime 7996 $instruction_final = $this->f->get_inst__om_dbform(array(
2111     "obj" => "instruction",
2112     "idx" => $_GET['idx'],
2113     ));
2114    
2115     // Si l'instruction a une lettre type associée
2116     // ET si elle n'est pas déjà finalisée
2117     if($instruction_final->getVal('lettretype') != ""
2118     && $instruction_final->getVal('om_final_instruction') !== 't') {
2119 mbroquet 3730 // On se met en contexte de l'action 100 finaliser
2120     $instruction_final->setParameter('maj',100);
2121     // On finalise l'événement d'instruction
2122     $res = $instruction_final->finalize();
2123 softime 5024 // Si échec cela ne stoppe pas la création du dossier
2124     // et l'utilisateur n'en est pas informé dans l'IHM
2125     // mais l'erreur est loguée
2126 mbroquet 3730 if ($res === false) {
2127     $this->f->addToLog(__METHOD__."() : ERROR - Impossible de finaliser l'instruction.", DEBUG_MODE);
2128     }
2129     }
2130    
2131     // Mise à jour de la demande
2132     $this->valF['instruction_recepisse'] = $instruction->valF['instruction'];
2133     $this->valF['date_demande'] = $this->dateDBToForm($this->valF['date_demande']);
2134 softime 7996 $demande_instance = $this->f->get_inst__om_dbform(array(
2135     "obj" => "demande",
2136     "idx" => $this->valF['demande'],
2137     ));
2138 mbroquet 3730 if ($demande_instance->modifier($this->valF, $db, $DEBUG) === false) {
2139     $this -> addToMessage($demande_instance->msg);
2140     $this->f->addToLog(__METHOD__."() : ERROR - Impossible de modifier la demande.", DEBUG_MODE);
2141     return false;
2142     }
2143    
2144 softime 8329 // Instance du dossier d'autorisation
2145 softime 6565 $inst_da = $this->get_inst_dossier_autorisation($this->valF['dossier_autorisation']);
2146    
2147 softime 8329 // Si l'option d'accès au portail citoyen est activée et que le DA est visible
2148 softime 7366 if ($this->f->is_option_citizen_access_portal_enabled($this->valF['om_collectivite']) === true
2149 softime 8329 && $inst_da->is_dossier_autorisation_visible() === true) {
2150    
2151     // Permet de forcer la regénération de la clé citoyen
2152     $force = false;
2153    
2154     // Regénération de la clé citoyen si le type de demande le demande
2155     $regeneration_cle_citoyen = $this->get_demande_type_regeneration_cle_citoyen($val['demande_type']);
2156     if ($regeneration_cle_citoyen === true) {
2157     $force = true;
2158     }
2159    
2160 mbroquet 3730 // Met à jour la clé d'accès au portail citoyen dans le dossier
2161     // d'autorisation
2162 softime 8329 $update = $inst_da->update_citizen_access_key($force);
2163 mbroquet 3730 //
2164     if ($update !== true) {
2165     //
2166     $this->addToMessage(_("La cle d'acces au portail citoyen n'a pas pu etre generee."));
2167     return false;
2168     }
2169     }
2170    
2171 jymadier 4441 // Si l'instruction initiale a une lettre type liée
2172     if ($instruction->valF['lettretype'] !== ''
2173     && $instruction->valF['lettretype'] !== null) {
2174    
2175     // Affichage du récépissé de la demande
2176     $this -> addToMessage("<a
2177     class='lien' id='link_demande_recepisse'
2178     title=\""._("Telecharger le recepisse de la demande")."\"
2179 softime 7996 href='".OM_ROUTE_FORM."&obj=demande&amp;action=100&amp;idx=".
2180 jymadier 4441 $this->valF[$this->clePrimaire]."' target='_blank'>
2181     <span
2182     class=\"om-icon om-icon-16 om-icon-fix pdf-16\"
2183     title=\""._("Telecharger le recepisse de la demande")."\">".
2184     _("Telecharger le recepisse de la demande").
2185     "</span>".
2186     _("Telecharger le recepisse de la demande")."
2187     </a><br/>");
2188     }
2189     }
2190    
2191 fmichon 4708 // Instanciation du dossier d'instruction concerné par la demande en cours d'ajout.
2192     $inst_di = $this->get_inst_dossier_instruction($this->valF['dossier_instruction']);
2193    
2194     /**
2195     * Option de numérisation.
2196     */
2197     // Si l'option est activée
2198     if ($this->f->is_option_digitalization_folder_enabled() === true) {
2199 mbroquet 3730 // Création du répertoire de numérisation pour le dossier en
2200     // question.
2201     $ret = $inst_di->create_or_touch_digitalization_folder();
2202     // Si la création a échouée
2203     if ($ret !== true) {
2204     //
2205     $this->msg = "";
2206     $this->addToMessage(_("Erreur lors de la création du répertoire de numérisation. Contactez votre administrateur."));
2207     return false;
2208     }
2209     }
2210    
2211 fmichon 4708 /**
2212     * Interface avec le référentiel ERP.
2213     *
2214     * (WS->ERP)[109] Retrait de la demande -> AT
2215     * Déclencheur :
2216     * - L'option ERP est activée
2217     * - Le dossier est de type AT
2218     * - Le dossier est marqué comme "connecté au référentiel ERP"
2219     * - Le formulaire d'ajout de demande est validé avec un type de
2220     * demande correspondant à une demande de retrait
2221     */
2222 mbroquet 3730 //
2223 softime 7366 if ($this->f->is_option_referentiel_erp_enabled($this->valF['om_collectivite']) === true
2224 fmichon 4708 && $inst_di->is_connected_to_referentiel_erp() === true
2225     && $this->f->getDATDCode($inst_di->getVal($inst_di->clePrimaire)) == $this->f->getParameter('erp__dossier__nature__at')
2226     && in_array($this->valF["demande_type"], explode(";", $this->f->getParameter('erp__demandes__retrait__at')))) {
2227     //
2228     $infos = array(
2229     "dossier_instruction" => $inst_di->getVal($inst_di->clePrimaire),
2230     );
2231     //
2232     $ret = $this->f->send_message_to_referentiel_erp(109, $infos);
2233     if ($ret !== true) {
2234     $this->cleanMessage();
2235     $this->addToMessage(_("Une erreur s'est produite lors de la notification (109) du référentiel ERP. Contactez votre administrateur."));
2236     return false;
2237     }
2238     $this->addToMessage(_("Notification (109) du référentiel ERP OK."));
2239     }
2240    
2241     /**
2242     * Interface avec le référentiel ERP.
2243     *
2244     * (WS->ERP)[112] Dépôt de pièces sur une DAT -> AT
2245     * Déclencheur :
2246     * - L'option ERP est activée
2247     * - Le dossier est de type AT
2248     * - Le dossier est marqué comme "connecté au référentiel ERP"
2249     * - Le formulaire d'ajout de demande est validé avec un type de
2250     * demande correspondant à un dépôt de pièces
2251     */
2252     //
2253 softime 7366 if ($this->f->is_option_referentiel_erp_enabled($this->valF['om_collectivite']) === true
2254 fmichon 4708 && $inst_di->is_connected_to_referentiel_erp() === true
2255     && $this->f->getDATCode($inst_di->getVal($inst_di->clePrimaire)) == $this->f->getParameter('erp__dossier__nature__at')
2256     && in_array($this->valF["demande_type"], explode(";", $this->f->getParameter('erp__demandes__depot_piece__at')))) {
2257 softime 6391 // Définit le type de pièce par l'état du dossier
2258     $type_piece = "supplementaire";
2259     if ($etat_di_before_instr === 'incomplet') {
2260     $type_piece = "complementaire";
2261     }
2262 fmichon 4708 //
2263     $infos = array(
2264     "dossier_instruction" => $inst_di->getVal($inst_di->clePrimaire),
2265 softime 6391 "type_piece" => $type_piece,
2266 fmichon 4708 );
2267     //
2268     $ret = $this->f->send_message_to_referentiel_erp(112, $infos);
2269     if ($ret !== true) {
2270     $this->cleanMessage();
2271     $this->addToMessage(_("Une erreur s'est produite lors de la notification (112) du référentiel ERP. Contactez votre administrateur."));
2272     return false;
2273     }
2274     $this->addToMessage(_("Notification (112) du référentiel ERP OK."));
2275     }
2276    
2277     /**
2278     * Interface avec le référentiel ERP.
2279     *
2280     * (WS->ERP)[110] Demande d'ouverture ERP DAT -> AT
2281     * Déclencheur :
2282     * - L'option ERP est activée
2283     * - Le dossier est de type AT
2284     * - Le dossier est marqué comme "connecté au référentiel ERP"
2285     * - Le formulaire d'ajout de demande est validé avec un type de
2286     * demande correspondant à une demande de visite d'ouverture ERP
2287     */
2288     //
2289 softime 7366 if ($this->f->is_option_referentiel_erp_enabled($this->valF['om_collectivite']) === true
2290 fmichon 4708 && $inst_di->is_connected_to_referentiel_erp() === true
2291     && $this->f->getDATCode($inst_di->getVal($inst_di->clePrimaire)) == $this->f->getParameter('erp__dossier__nature__at')
2292     && in_array($this->valF["demande_type"], explode(";", $this->f->getParameter('erp__demandes__ouverture__at')))) {
2293     //
2294     $infos = array(
2295     "dossier_instruction" => $inst_di->getVal($inst_di->clePrimaire),
2296     );
2297     //
2298     $ret = $this->f->send_message_to_referentiel_erp(110, $infos);
2299     if ($ret !== true) {
2300     $this->cleanMessage();
2301     $this->addToMessage(_("Une erreur s'est produite lors de la notification (110) du référentiel ERP. Contactez votre administrateur."));
2302     return false;
2303     }
2304     $this->addToMessage(_("Notification (110) du référentiel ERP OK."));
2305     }
2306    
2307     /**
2308     * Interface avec le référentiel ERP.
2309     *
2310     * (WS->ERP)[107] Demande d'ouverture ERP PC -> PC
2311     * Déclencheur :
2312     * - L'option ERP est activée
2313     * - Le dossier est de type PC
2314     * - Le dossier est marqué comme "connecté au référentiel ERP"
2315     * - Le formulaire d'ajout de demande est validé avec un type de
2316     * demande correspondant à une demande de visite d'ouverture ERP
2317     */
2318     //
2319 softime 7366 if ($this->f->is_option_referentiel_erp_enabled($this->valF['om_collectivite']) === true
2320 fmichon 4708 && $inst_di->is_connected_to_referentiel_erp() === true
2321     && $this->f->getDATCode($inst_di->getVal($inst_di->clePrimaire)) == $this->f->getParameter('erp__dossier__nature__pc')
2322     && in_array($this->valF["demande_type"], explode(";", $this->f->getParameter('erp__demandes__ouverture__pc')))) {
2323     //
2324     $infos = array(
2325     "dossier_instruction" => $inst_di->getVal($inst_di->clePrimaire),
2326     );
2327     //
2328     $ret = $this->f->send_message_to_referentiel_erp(107, $infos);
2329     if ($ret !== true) {
2330     $this->cleanMessage();
2331     $this->addToMessage(_("Une erreur s'est produite lors de la notification (107) du référentiel ERP. Contactez votre administrateur."));
2332     return false;
2333     }
2334     $this->addToMessage(_("Notification (107) du référentiel ERP OK."));
2335     }
2336    
2337     //
2338 mbroquet 3730 return true;
2339     }
2340 fmichon 4708
2341     /**
2342     * Récupère l'état d'un dossier d'instruction
2343     * @param $idxDossier L'identifiant du dossier d'instruction
2344     * @return L'état du dossier d'instruction
2345     */
2346     function getEtatDossier($idxDossier){
2347    
2348     $etat = "";
2349    
2350     $sql = "SELECT etat.etat
2351     FROM ".DB_PREFIXE."etat
2352     LEFT JOIN
2353     ".DB_PREFIXE."dossier
2354     ON
2355     dossier.etat = etat.etat
2356     WHERE dossier.dossier = '".$idxDossier."'";
2357     $etat = $this->db->getOne($sql);
2358     $this->addToLog("getEtatDossier(): db->getOne(\"".$sql."\");", VERBOSE_MODE);
2359     // Si une erreur survient on die
2360     if (database::isError($etat, true)) {
2361     // Appel de la methode de recuperation des erreurs
2362     $this->erreur_db($etat->getDebugInfo(), $etat->getMessage(), 'document_numerise');
2363     }
2364    
2365     return $etat;
2366     }
2367    
2368 mbroquet 3730 /*Ajout du lien demande / demandeur(s)*/
2369 softime 6929 function triggermodifierapres($id, &$db = null, $val = array(), $DEBUG = null) {
2370 mbroquet 3730 $this->listeDemandeur("demande",$this->val[array_search('demande', $this->champs)]);
2371     if ($this->insertLinkDemandeDemandeur($db, $DEBUG) == false) {
2372     return false;
2373     }
2374     $this->valIdDemandeur=$this->postedIdDemandeur;
2375    
2376     //
2377     return true;
2378     }
2379    
2380 softime 6565
2381 mbroquet 3730 /**
2382 softime 6565 * Ajout du lien avec le dossier contesté dans le cas de l'ajout d'un
2383     * dossier de recours.
2384     *
2385     * @return, [type] [description]
2386     */
2387     function ajoutLienDossierConteste() {
2388     // Création des liens entre le dossier instruction créé et le dossier
2389     // contesté
2390 softime 7996 $ldd = $this->f->get_inst__om_dbform(array(
2391     "obj" => "lien_dossier_dossier",
2392     "idx" => "]",
2393     ));
2394 softime 6565 // Préparation des valeurs à mettre en base
2395     $val['lien_dossier_dossier'] = "";
2396     $val['dossier_src'] = $this->valF['dossier_instruction'];
2397     $val['dossier_cible'] = $this->valF["autorisation_contestee"];
2398     $val['type_lien'] = 'auto_recours';
2399    
2400     return $ldd->ajouter($val, $this->f->db, NULL);
2401     }
2402    
2403    
2404     /**
2405 mbroquet 3730 * Gestion des liens entre les lots du DA et le nouveau dossier
2406     **/
2407     function lienLotDossierInstruction($id, $db, $val, $DEBUG) {
2408 softime 7996 $lot = $this->f->get_inst__om_dbform(array(
2409     "obj" => "lot",
2410     "idx" => "]",
2411     ));
2412     $lld = $this->f->get_inst__om_dbform(array(
2413     "obj" => "lien_lot_demandeur",
2414     "idx" => "]",
2415     ));
2416 mbroquet 3730
2417    
2418     $sqlLots = "SELECT * FROM ".DB_PREFIXE."lot
2419     WHERE dossier_autorisation = '".$this->valF['dossier_autorisation']."'";
2420     $resLot = $db -> query($sqlLots);
2421     $this->f->addToLog("db->query(\"".$sqlLots."\");", VERBOSE_MODE);
2422     $this->f->isDatabaseError($resLot);
2423     while ($rowLot=& $resLot->fetchRow(DB_FETCHMODE_ASSOC)){
2424     // Insertion du nouveau lot
2425     $valLot['lot'] = "";
2426     $valLot['libelle'] = $rowLot['libelle'];
2427     $valLot['dossier_autorisation'] = null;
2428     $valLot['dossier'] = $this->valF['dossier_instruction'];
2429     $lot -> ajouter($valLot, $db, $DEBUG);
2430    
2431     //Insertion des liens entre dossier et les lots
2432     $sqlDemandeurs = "SELECT * FROM ".DB_PREFIXE."lien_lot_demandeur
2433     WHERE lot = ".$rowLot['lot'];
2434     $res = $db -> query($sqlDemandeurs);
2435     $this->f->addToLog(
2436     "lienLotDossierInstruction() : db->query(\"".$sqlDemandeurs."\");",
2437     VERBOSE_MODE
2438     );
2439     if ($this->f->isDatabaseError($res, true)) {
2440     return false;
2441     }
2442    
2443     while ($row=& $res->fetchRow(DB_FETCHMODE_ASSOC)){
2444     $valLld["lien_lot_demandeur"] = "";
2445     $valLld["lot"]=$lot->valF['lot'];
2446     $valLld["demandeur"] = $row['demandeur'];
2447     $valLld["petitionnaire_principal"] = $row['petitionnaire_principal'];
2448     if ($lld->ajouter($valLld, $db, $DEBUG) === false) {
2449     $this->f->addToLog(__METHOD__."() : ERROR - Impossible d'ajouter le lien entre le lot et le dossier d'instruction.", DEBUG_MODE);
2450     return false;
2451     }
2452     }
2453    
2454     // Récupération des données techniques du nouveau lots
2455     if($this->ajoutDonneesTechniquesLots(
2456     $id,
2457     $db,
2458     $val,
2459     $DEBUG,
2460     $rowLot['lot'],
2461     $lot->valF['lot']) === false) {
2462     $this -> addToMessage(
2463     _("Erreur lors de l'enregistrement de la demande.")." ".
2464     _("Contactez votre administrateur.")
2465     );
2466     $this->correct = false;
2467     $this->f->addToLog(
2468     "lienLotDossierInstruction() : ERROR ajoutDonneesTechniquesLots",
2469     DEBUG_MODE
2470     );
2471     return false;
2472     }
2473    
2474     }
2475    
2476     //
2477     return true;
2478     }
2479    
2480    
2481     /**
2482     * Méthode permettant d'ajouter les données techniques d'un lot.
2483     *
2484     * @param integer $id identifiant de la demande
2485     * @param database &$db handler de la base de donnée
2486     * @param array $val tableau de valeurs postées via le formulaire
2487     * @param boolean $DEBUG debug
2488     * @param integer $lotInit identifiant de lot initial
2489     * @param integer $lotDest identifiant du lot qui va recevoir les données
2490     *
2491     * @return boolean false si erreur
2492     */
2493     function ajoutDonneesTechniquesLots($id, &$db, $val, $DEBUG, $lotInit, $lotDest) {
2494     // Requete permettant de recupérer les données techniques du lot passé
2495     // en paramètre ($lotInit)
2496     $sql_get_dt = "
2497     SELECT donnees_techniques
2498     FROM ".DB_PREFIXE."donnees_techniques
2499     WHERE lot=".$lotInit;
2500     $id_dt = $this->f->db->getOne($sql_get_dt);
2501     // Si des données techniques sont liées au lots on les "copie" et
2502     // on les lies au lot passé en paramètre (lotDest)
2503     if(isset($id_dt) and !empty($id_dt)) {
2504     $this->f->addToLog(
2505     "ajoutDonneesTechniquesLots() : db->getone(\"".$sql_get_dt."\");",
2506     VERBOSE_MODE
2507     );
2508     if ($this->f->isDatabaseError($id_dt, true)){
2509     $this->f->addToLog(
2510     "ajoutDonneesTechniquesLots() : ERROR",
2511     DEBUG_MODE
2512     );
2513     return false;
2514     }
2515 softime 7996 $donnees_techniques = $this->f->get_inst__om_dbform(array(
2516     "obj" => "donnees_techniques",
2517     "idx" => $id_dt,
2518     ));
2519 mbroquet 3730
2520     // Récupération des données dans le tableau des valeurs à insérer
2521     foreach($donnees_techniques->champs as $value) {
2522     $val[$value] = $donnees_techniques->getVal($value);
2523     }
2524     // Modification du lien vers le nouveau lot
2525     $val["lot"] = $lotDest;
2526     // Identifiant du cerfa
2527     $val['cerfa'] = $this->getIdCerfa();
2528     // Ajout des données techniques
2529     if($donnees_techniques->ajouter($val, $db, $DEBUG) === false) {
2530     $this->f->addToLog(__METHOD__."() : ERROR - Impossible d'ajouter les données techniques du lot.", DEBUG_MODE);
2531     return false;
2532     }
2533     }
2534    
2535     //
2536     return true;
2537     }
2538    
2539     /**
2540     * Gestion des liens entre la demande et les demandeurs recemment ajoutés
2541     **/
2542     function insertLinkDemandeDemandeur($db, $DEBUG) {
2543    
2544     //
2545 softime 6565 $types_demandeur = array(
2546     "petitionnaire_principal",
2547     "delegataire",
2548     "petitionnaire",
2549     "plaignant_principal",
2550     "plaignant",
2551     "contrevenant_principal",
2552     "contrevenant",
2553     "requerant_principal",
2554     "requerant",
2555     "avocat_principal",
2556     "avocat",
2557 softime 7067 "bailleur_principal",
2558     "bailleur",
2559 softime 6565 );
2560     foreach ($types_demandeur as $type) {
2561     // Comparaison des autres demandeurs
2562     if(isset($this->postedIdDemandeur[$type]) === true) {
2563     // Suppression des liens non valides
2564     foreach ($this->valIdDemandeur[$type] as $demandeur) {
2565     // Demandeur
2566     if(!in_array($demandeur, $this->postedIdDemandeur[$type])) {
2567     if ($this->deleteLinkDemandeDemandeur($demandeur, $db, $DEBUG) == false) {
2568     //
2569     return false;
2570     }
2571 mbroquet 3730 }
2572 softime 6565
2573 mbroquet 3730 }
2574 softime 6565 // Ajout des nouveaux liens
2575     foreach ($this->postedIdDemandeur[$type] as $demandeur) {
2576     if(!in_array($demandeur, $this->valIdDemandeur[$type])) {
2577     $principal = false;
2578     if(strpos($type, '_principal') !== false) {
2579     $principal = true;
2580     }
2581     if ($this->addLinkDemandeDemandeur($demandeur, $principal, $db, $DEBUG) == false) {
2582     //
2583     return false;
2584     }
2585 mbroquet 3730 }
2586     }
2587     }
2588     }
2589    
2590     //
2591     return true;
2592     }
2593    
2594    
2595     /**
2596     * Fonction permettant d'ajouter un lien
2597     * entre la table demande et demandeur
2598     **/
2599     function addLinkDemandeDemandeur($id, $principal, $db, $DEBUG) {
2600 softime 7996 $lienAjout = $this->f->get_inst__om_dbform(array(
2601     "obj" => "lien_demande_demandeur",
2602     "idx" => "]",
2603     ));
2604 mbroquet 3730 $lien = array('lien_demande_demandeur' => "",
2605     'petitionnaire_principal' => (($principal)?"t":"f"),
2606     'demande' => $this->valF['demande'],
2607     'demandeur' => $id);
2608     if ($lienAjout->ajouter($lien, $db, $DEBUG) === false) {
2609     $this->f->addToLog(__METHOD__."() : ERROR - Impossible d'ajouter le lien entre la demande et le demandeur.", DEBUG_MODE);
2610     return false;
2611     }
2612    
2613     //
2614     return true;
2615     }
2616    
2617     /**
2618     * Fonction permettant de supprimer un lien
2619     * entre la table demande et demandeur
2620     **/
2621     function deleteLinkDemandeDemandeur($id, $db, $DEBUG) {
2622     // Suppression
2623     $sql = "DELETE FROM ".DB_PREFIXE."lien_demande_demandeur ".
2624     "WHERE demande=".$this->valF['demande'].
2625     " AND demandeur=".$id;
2626     // Execution de la requete de suppression de l'objet
2627     $res = $db->query($sql);
2628     // Logger
2629     $this->f->addToLog("deleteLinkDemandeDemandeur(): db->query(\"".$sql."\");", VERBOSE_MODE);
2630     if ($this->f->isDatabaseError($res, true)){
2631     return false;
2632     }
2633    
2634     //
2635     return true;
2636     }
2637    
2638     /*
2639     * Teste si le lien entre une demande et un demandeur existe
2640     * */
2641     function isLinkDemandeDemandeurExist($idDemandeur) {
2642     $sql = "SELECT count(*)
2643     FROM ".DB_PREFIXE."lien_demande_demandeur
2644     WHERE demande = ".$this->valF['demande'].
2645     "AND demandeur = ".$idDemandeur;
2646     $count = $this->f->db->getOne($sql);
2647     $this->f->addToLog("isLinkDemandeDemandeurExist() : db->getone(\"".$sql."\");", VERBOSE_MODE);
2648     $this->f->isDatabaseError($count);
2649     if ($count === 0) {
2650     $this->f->addToLog("isLinkDemandeDemandeurExist() : db->getone(\"".$sql."\"); 0 values", VERBOSE_MODE);
2651     return false;
2652     } else {
2653     return true;
2654     }
2655    
2656     }
2657    
2658     /**
2659     * Methode de recupération des valeurs postées
2660     **/
2661     function getPostedValues() {
2662     // Récupération des demandeurs dans POST
2663 softime 6565 $types_demandeur = array(
2664     "petitionnaire_principal",
2665     "delegataire",
2666     "petitionnaire",
2667     "plaignant_principal",
2668     "plaignant",
2669     "contrevenant_principal",
2670     "contrevenant",
2671     "requerant_principal",
2672     "requerant",
2673     "avocat_principal",
2674     "avocat",
2675 softime 7067 "bailleur_principal",
2676     "bailleur",
2677 softime 6565 );
2678     foreach ($types_demandeur as $type) {
2679     if($this->f->get_submitted_post_value($type) !== null AND
2680     $this->f->get_submitted_post_value($type) != '') {
2681     $this->postedIdDemandeur[$type] = $this->f->get_submitted_post_value($type);
2682 mbroquet 3730 }
2683     }
2684     }
2685    
2686     /**
2687     * Méthode permettant de récupérer les id des demandeurs liés à la table
2688     * liée passée en paramètre
2689     *
2690     * @param string $from Table liée : "demande", "dossier", dossier_autorisation"
2691     * @param string $id Identifiant (clé primaire de la table liée en question)
2692     */
2693     function listeDemandeur($from, $id) {
2694     // Récupération des demandeurs de la base
2695     $sql = "SELECT demandeur.demandeur,
2696     demandeur.type_demandeur,
2697     lien_".$from."_demandeur.petitionnaire_principal
2698     FROM ".DB_PREFIXE."lien_".$from."_demandeur
2699     INNER JOIN ".DB_PREFIXE."demandeur
2700     ON demandeur.demandeur=lien_".$from."_demandeur.demandeur
2701     WHERE ".$from." = '".$id."'";
2702     $res = $this->f->db->query($sql);
2703     $this->f->addToLog("listeDemandeur(): db->query(\"".$sql."\")", VERBOSE_MODE);
2704     $this->f->isDatabaseError($res);
2705     // Stockage du résultat dans un tableau
2706     while ($row=& $res->fetchRow(DB_FETCHMODE_ASSOC)){
2707 softime 6565 $demandeur_type = $row['type_demandeur'];
2708     if ($row['petitionnaire_principal'] == 't'){
2709     $demandeur_type .= "_principal";
2710 mbroquet 3730 }
2711 softime 6565 $this->valIdDemandeur[$demandeur_type][] = $row['demandeur'];
2712 mbroquet 3730 }
2713     }
2714    
2715    
2716     /**
2717     * Surcharge du bouton retour afin de retourner sur la recherche de dossiers
2718     * d'instruction existant
2719     */
2720     function retour($premier = 0, $recherche = "", $tricol = "") {
2721    
2722     echo "\n<a class=\"retour\" ";
2723     echo "href=\"";
2724     //
2725     if($this->getParameter("idx_dossier") != "") {
2726 softime 7996 echo OM_ROUTE_TAB;
2727     echo "&obj=recherche_dossier";
2728 mbroquet 3730
2729     } else {
2730     if($this->getParameter("retour")=="form" AND !($this->getParameter("validation")>0 AND $this->getParameter("maj")==2 AND $this->correct)) {
2731 softime 7996 echo OM_ROUTE_FORM;
2732 mbroquet 3730 } else {
2733 softime 7996 echo OM_ROUTE_TAB;
2734 mbroquet 3730 }
2735 softime 7996 echo "&obj=".$this->get_absolute_class_name();
2736 mbroquet 3730 if($this->getParameter("retour")=="form") {
2737     echo "&amp;idx=".$this->getParameter("idx");
2738     echo "&amp;action=3";
2739     }
2740     }
2741     echo "&amp;premier=".$this->getParameter("premier");
2742     echo "&amp;tricol=".$this->getParameter("tricol");
2743     echo "&amp;advs_id=".$this->getParameter("advs_id");
2744     echo "&amp;valide=".$this->getParameter("valide");
2745     //
2746     echo "\"";
2747     echo ">";
2748     //
2749     echo _("Retour");
2750     //
2751     echo "</a>\n";
2752    
2753     }
2754    
2755    
2756     /**
2757     * Cette méthode permet d'afficher des informations spécifiques dans le
2758     * formulaire de l'objet
2759     *
2760     * @param integer $maj Mode de mise à jour
2761     */
2762     function formSpecificContent($maj) {
2763 softime 6565 // Tableau des demandeurs selon le contexte
2764     $listeDemandeur = $this->valIdDemandeur;
2765 mbroquet 3730 /**
2766     * Gestion du bloc des demandeurs
2767     */
2768     // Si le mode est (modification ou suppression ou consultation) ET que
2769     // le formulaire n'est pas correct (c'est-à-dire que le formulaire est
2770     // actif)
2771 softime 6565 if ($this->correct !== true AND
2772 softime 7996 $this->getParameter('validation') == 0 AND
2773     $this->getParameter("maj") != 0) {
2774 mbroquet 3730 // Alors on récupère les demandeurs dans la table lien pour
2775 softime 6565 // affectation des résultats dans $this->valIdDemandeur
2776 mbroquet 3730 $this->listeDemandeur("demande", $this->val[array_search('demande', $this->champs)]);
2777 softime 6565 $listeDemandeur = $this->valIdDemandeur;
2778 mbroquet 3730 }
2779    
2780 softime 6565 // Récupération des valeurs postées
2781 softime 7996 if ($this->getParameter('validation') != 0) {
2782 softime 6565 $listeDemandeur = $this->postedIdDemandeur;
2783     }
2784    
2785 mbroquet 3730 // Si le mode est (ajout ou modification) ET que le formulaire n'est pas
2786     // correct (c'est-à-dire que le formulaire est actif)
2787 softime 6565 if ($this->getParameter("maj") < 2 AND $this->correct !== true) {
2788 mbroquet 3730 // Alors on positionne le marqueur linkable a true qui permet
2789     // d'afficher ou non les actions de gestion des demandeurs
2790     $linkable = true;
2791     } else {
2792     // Sinon on positionne le marqueur linkable a false qui permet
2793     // d'afficher ou non les actions de gestion des demandeurs
2794     $linkable = false;
2795     }
2796    
2797     // Affichage des demandeurs et des actions
2798     // Conteneur de la listes des demandeurs
2799     echo "<div id=\"liste_demandeur\" class=\"demande_hidden_bloc col_12\">";
2800     echo "<fieldset class=\"cadre ui-corner-all ui-widget-content\">";
2801     echo " <legend class=\"ui-corner-all ui-widget-content ui-state-active\">"
2802 softime 6565 ._("Demandeurs")."</legend>";
2803    
2804 mbroquet 3730 // Affichage du bloc pétitionnaire principal / délégataire
2805     // L'ID DU DIV SUIVANT EST NECESSAIRE AU BON FONCTIONNEMENT DU JS
2806     echo "<div id=\"petitionnaire_principal_delegataire\">";
2807 softime 6565 // Affichage de la synthèse du pétitionnaire principal
2808     $this->displaySyntheseDemandeur($listeDemandeur, "petitionnaire_principal");
2809 mbroquet 3730 // L'ID DU DIV ET DE L'INPUT SUIVANT EST NECESSAIRE AU BON FONCTIONNEMENT DU JS
2810     echo "<div id=\"delegataire\">";
2811 softime 6565 // Affichage de la synthèse du délégataire
2812     $this->displaySyntheseDemandeur($listeDemandeur, "delegataire");
2813 mbroquet 3730 echo "</div>";
2814     echo "<div class=\"both\"></div>";
2815     echo "</div>";
2816     // Bloc des pétitionnaires secondaires
2817     // L'ID DU DIV SUIVANT EST NECESSAIRE AU BON FONCTIONNEMENT DU JS
2818     echo "<div id=\"listePetitionnaires\">";
2819 softime 6565 $this->displaySyntheseDemandeur($listeDemandeur, "petitionnaire");
2820 mbroquet 3730 echo "</div>";
2821 softime 7067
2822     // Affichage du bloc pétitionnaire principal / délégataire / bailleur
2823     // L'ID DU DIV SUIVANT EST NECESSAIRE AU BON FONCTIONNEMENT DU JS
2824     echo "<div id=\"petitionnaire_principal_delegataire_bailleur\">";
2825     // Doit être utilisé avec la div petitionnaire_principal_delegataire
2826     echo "<div id=\"listeBailleurs\" class=\"col_12\">";
2827     // L'ID DU DIV SUIVANT EST NECESSAIRE AU BON FONCTIONNEMENT DU JS
2828     echo "<div id=\"bailleur_principal\">";
2829     // Affichage de la synthèse
2830     $this->displaySyntheseDemandeur($listeDemandeur, "bailleur_principal");
2831     echo "</div>";
2832     echo "<div id=\"listeAutresBailleurs\">";
2833     $this->displaySyntheseDemandeur($listeDemandeur, "bailleur");
2834     echo "</div>";
2835     echo "</div>";
2836     echo "</div>";
2837 softime 6565
2838     echo "<div id=\"plaignant_contrevenant\">";
2839     // Affichage du bloc contrevenant
2840     // L'ID DU DIV SUIVANT EST NECESSAIRE AU BON FONCTIONNEMENT DU JS
2841     echo "<div id=\"listeContrevenants\" class=\"col_12\">";
2842     // L'ID DU DIV SUIVANT EST NECESSAIRE AU BON FONCTIONNEMENT DU JS
2843     echo "<div id=\"contrevenant_principal\">";
2844     // Affichage de la synthèse
2845     $this->displaySyntheseDemandeur($listeDemandeur, "contrevenant_principal");
2846     echo "</div>";
2847     echo "<div id=\"listeAutresContrevenants\">";
2848     // Affichage de la synthèse
2849     $this->displaySyntheseDemandeur($listeDemandeur, "contrevenant");
2850     echo "</div>";
2851     echo "</div>";
2852     // Affichage du bloc plaignant
2853     // L'ID DU DIV SUIVANT EST NECESSAIRE AU BON FONCTIONNEMENT DU JS
2854     echo "<div id=\"listePlaignants\" class=\"col_12\">";
2855     // L'ID DU DIV SUIVANT EST NECESSAIRE AU BON FONCTIONNEMENT DU JS
2856     echo "<div id=\"plaignant_principal\">";
2857     // Affichage de la synthèse
2858     $this->displaySyntheseDemandeur($listeDemandeur, "plaignant_principal");
2859     echo "</div>";
2860     echo "<div id=\"listeAutresPlaignants\">";
2861     $this->displaySyntheseDemandeur($listeDemandeur, "plaignant");
2862     echo "</div>";
2863     echo "</div>";
2864     echo "</div>";
2865     echo "<div id=\"requerant_avocat\">";
2866     // Affichage du bloc requérant
2867     // L'ID DU DIV SUIVANT EST NECESSAIRE AU BON FONCTIONNEMENT DU JS
2868     echo "<div id=\"listeRequerants\" class=\"col_12\">";
2869     // L'ID DU DIV SUIVANT EST NECESSAIRE AU BON FONCTIONNEMENT DU JS
2870     echo "<div id=\"requerant_principal\">";
2871     // Affichage de la synthèse
2872     $this->displaySyntheseDemandeur($listeDemandeur, "requerant_principal");
2873     echo "</div>";
2874     echo "<div id=\"listeAutresRequerants\">";
2875     $this->displaySyntheseDemandeur($listeDemandeur, "requerant");
2876     echo "</div>";
2877     echo "</div>";
2878     // Affichage du bloc avocat
2879     // L'ID DU DIV SUIVANT EST NECESSAIRE AU BON FONCTIONNEMENT DU JS
2880     echo "<div id=\"listeAvocat\" class=\"col_12\">";
2881     // L'ID DU DIV SUIVANT EST NECESSAIRE AU BON FONCTIONNEMENT DU JS
2882     echo "<div id=\"avocat_principal\">";
2883     $this->displaySyntheseDemandeur($listeDemandeur, "avocat_principal");
2884     echo "</div>";
2885     echo "<div id=\"listeAutresAvocats\">";
2886     $this->displaySyntheseDemandeur($listeDemandeur, "avocat");
2887     echo "</div>";
2888     echo "</div>";
2889     echo "</div>";
2890 mbroquet 3730 echo "</fieldset>";
2891     // Champ flag permettant de récupérer la valeur de l'option sig pour
2892     // l'utiliser en javascript, notamment lors du chargement de l'interface
2893     // pour les références cadastrales
2894     // XXX Si un widget pour les références cadastrales existait, il n'y
2895     // aurait pas besoin de faire cela
2896     echo "<input id='option_sig' type='hidden' value='".$this->f->getParameter("option_sig")."' name='option_sig'>";
2897     echo "</div>";
2898     }
2899 softime 6565
2900     function displaySyntheseDemandeur($listeDemandeur, $type) {
2901     // Si le mode est (ajout ou modification) ET que le formulaire n'est pas
2902     // correct (c'est-à-dire que le formulaire est actif)
2903 softime 7366 if ($this->getParameter("maj") < 2 AND $this->correct !== true) {
2904 softime 6565 // Alors on positionne le marqueur linkable a true qui permet
2905     // d'afficher ou non les actions de gestion des demandeurs
2906     $linkable = true;
2907     } else {
2908     // Sinon on positionne le marqueur linkable a false qui permet
2909     // d'afficher ou non les actions de gestion des demandeurs
2910     $linkable = false;
2911     }
2912     // Récupération du type de demandeur pour l'affichage
2913     switch ($type) {
2914     case 'petitionnaire_principal':
2915     $legend = _("Petitionnaire principal");
2916     break;
2917 mbroquet 3730
2918 softime 6565 case 'delegataire':
2919     $legend = _("Autre correspondant");
2920     break;
2921    
2922     case 'petitionnaire':
2923     $legend = _("Petitionnaire");
2924     break;
2925    
2926     case 'contrevenant_principal':
2927     $legend = _("Contrevenant principal");
2928     break;
2929    
2930     case 'contrevenant':
2931     $legend = _("Autre contrevenant");
2932     break;
2933    
2934     case 'plaignant_principal':
2935     $legend = _("Plaignant principal");
2936     break;
2937    
2938     case 'plaignant':
2939     $legend = _("Autre plaignant");
2940     break;
2941    
2942     case 'requerant_principal':
2943     $legend = _("Requérant principal");
2944     break;
2945    
2946     case 'requerant':
2947     $legend = _("Autre requérant");
2948     break;
2949    
2950     case 'avocat_principal':
2951     $legend = _("Avocat principal");
2952     break;
2953    
2954     case 'avocat':
2955     $legend = _("Autre avocat");
2956     break;
2957 softime 7067
2958     case 'bailleur_principal':
2959     $legend = _("Bailleur principal");
2960     break;
2961    
2962     case 'bailleur':
2963     $legend = _("Autre bailleur");
2964     break;
2965 softime 6565 }
2966     foreach ($listeDemandeur[$type] as $demandeur_id) {
2967     $obj = str_replace('_principal', '', $type);
2968 softime 7996 $demandeur = $this->f->get_inst__om_dbform(array(
2969     "obj" => $obj,
2970     "idx" => $demandeur_id,
2971     ));
2972 softime 6565 $demandeur -> afficherSynthese($type, $linkable);
2973     $demandeur -> __destruct();
2974     }
2975     // Si en édition de formulaire
2976     if ($this->getParameter("maj") < 2 AND $this->correct !== true) {
2977     // Bouton d'ajout du avocat
2978     // L'ID DE L'INPUT SUIVANT EST NECESSAIRE AU BON FONCTIONNEMENT DU JS
2979     echo "<span id=\"add_".$type."\"
2980     class=\"om-form-button add-16\">".
2981     $legend.
2982     "</span>";
2983     }
2984     }
2985    
2986 mbroquet 3730 // {{{
2987    
2988     // getter
2989     function getValIdDemandeur() {
2990     return $this->valIdDemandeur;
2991     }
2992     // setter
2993     function setValIdDemandeur($valIdDemandeur) {
2994     $this->valIdDemandeur = $valIdDemandeur;
2995     }
2996    
2997     //Supression du lien entre la demandeur et le(s) demandeur(s)
2998 softime 6929 function triggersupprimer($id, &$db = null, $val = array(), $DEBUG = null) {
2999 mbroquet 3730
3000     //Création de la requête
3001     $sql = "DELETE FROM
3002     ".DB_PREFIXE."lien_demande_demandeur
3003     WHERE
3004     demande = $id";
3005    
3006     $res = $this->f->db->query($sql);
3007     $this->f->addToLog("triggerSupprimer() : db->query(\"".$sql."\")");
3008     if ($this->f->isDatabaseError($res, true)) {
3009     return false;
3010     }
3011    
3012     //
3013     return true;
3014     }
3015    
3016     // }}}
3017    
3018     /**
3019     * Récupère le champ "qualification" du type de la demande
3020     * @param integer $demande_type Identifiant du type de la demande
3021     * @return boolean
3022     */
3023     function get_qualification($demande_type) {
3024    
3025     // Initialise le résultat
3026     $qualification = "";
3027    
3028     // Si la condition existe
3029     if (is_numeric($demande_type)) {
3030    
3031     // Requête SQL
3032     $sql = "SELECT qualification
3033     FROM ".DB_PREFIXE."demande_type
3034     WHERE demande_type = $demande_type";
3035     $qualification = $this->db->getOne($sql);
3036     $this->f->addToLog("get_qualification() : db->getOne(\"".$sql."\")",
3037     VERBOSE_MODE);
3038     $this->f->isDatabaseError($qualification);
3039     }
3040    
3041     // Retourne le résultat
3042     return $qualification;
3043     }
3044    
3045 softime 8329 /**
3046     * Récupère le champ "regeneration_cle_citoyen" du type de la demande.
3047     *
3048     * @param integer $demande_type Identifiant du type de la demande.
3049     *
3050     * @return boolean
3051     */
3052     function get_demande_type_regeneration_cle_citoyen($demande_type) {
3053     // Initialise le résultat
3054     $regeneration_cle_citoyen = false;
3055    
3056     // Récupère le champ depuis la demande type
3057     $inst_demande_type = $this->f->get_inst__om_dbform(array(
3058     "obj" => "demande_type",
3059     "idx" => $demande_type,
3060     ));
3061     if ($inst_demande_type->getVal('regeneration_cle_citoyen') === 't') {
3062     $regeneration_cle_citoyen = true;
3063     }
3064    
3065     // Retourne le résultat
3066     return $regeneration_cle_citoyen;
3067     }
3068    
3069 mbroquet 3730 /**
3070     * Récupère les champs archive_* d'une instruction
3071     * @param string $dossier L'identifiant du dossier d'instruction
3072     */
3073     public function getArchiveInstruction($dossierID){
3074    
3075     //On récupère les données du dernier DI accordé
3076     $sql = "SELECT dossier.delai, dossier.accord_tacite, dossier.etat,
3077     dossier.avis_decision,
3078     to_char(dossier.date_complet, 'DD/MM/YYYY') as date_complet,
3079 nmeucci 3873 to_char(dossier.date_depot, 'DD/MM/YYYY') as date_depot,
3080 mbroquet 3730 to_char(dossier.date_dernier_depot, 'DD/MM/YYYY') as date_dernier_depot,
3081     to_char(dossier.date_rejet, 'DD/MM/YYYY') as date_rejet,
3082     to_char(dossier.date_limite, 'DD/MM/YYYY') as date_limite,
3083     to_char(dossier.date_notification_delai, 'DD/MM/YYYY') as date_notification_delai,
3084     to_char(dossier.date_decision, 'DD/MM/YYYY') as date_decision,
3085     to_char(dossier.date_validite, 'DD/MM/YYYY') as date_validite,
3086     to_char(dossier.date_achevement, 'DD/MM/YYYY') as date_achevement,
3087     to_char(dossier.date_chantier, 'DD/MM/YYYY') as date_chantier,
3088     to_char(dossier.date_conformite, 'DD/MM/YYYY') as date_conformite,
3089     dossier.incompletude,
3090     dossier.evenement_suivant_tacite, dossier.evenement_suivant_tacite_incompletude,
3091     dossier.etat_pendant_incompletude,
3092     to_char(dossier.date_limite_incompletude, 'DD/MM/YYYY') as date_limite_incompletude,
3093     dossier.delai_incompletude, dossier.autorite_competente, dossier.duree_validite
3094 softime 6565 ,dossier.dossier, dossier.incomplet_notifie,
3095     to_char(dossier.date_cloture_instruction, 'DD/MM/YYYY') as date_cloture_instruction,
3096     to_char(dossier.date_premiere_visite, 'DD/MM/YYYY') as date_premiere_visite,
3097     to_char(dossier.date_derniere_visite, 'DD/MM/YYYY') as date_derniere_visite,
3098     to_char(dossier.date_contradictoire, 'DD/MM/YYYY') as date_contradictoire,
3099     to_char(dossier.date_retour_contradictoire, 'DD/MM/YYYY') as date_retour_contradictoire,
3100     to_char(dossier.date_ait, 'DD/MM/YYYY') as date_ait,
3101 softime 8593 to_char(dossier.date_transmission_parquet, 'DD/MM/YYYY') as date_transmission_parquet,
3102     dossier.dossier_instruction_type as dossier_instruction_type
3103 mbroquet 3730 FROM ".DB_PREFIXE."dossier
3104     LEFT JOIN ".DB_PREFIXE."avis_decision
3105     ON dossier.avis_decision = avis_decision.avis_decision
3106     WHERE dossier.avis_decision IS NOT NULL AND avis_decision.typeavis = 'F'
3107     AND dossier.dossier_autorisation = (
3108     SELECT dossier_autorisation.dossier_autorisation
3109     FROM ".DB_PREFIXE."dossier_autorisation
3110     LEFT JOIN ".DB_PREFIXE."dossier
3111     ON dossier_autorisation.dossier_autorisation = dossier.dossier_autorisation
3112     WHERE dossier = '".$dossierID."')
3113     ORDER BY dossier.version DESC";
3114    
3115     $res = $this->db->query($sql);
3116     $this->addToLog("updateArchiveInstruction(): db->query(\"".$sql."\");", VERBOSE_MODE);
3117     if ($this->f->isDatabaseError($res, true)) {
3118     return false;
3119     }
3120    
3121     //Un des dosssiers d'instruction a été accordé, on récupère ses données
3122     if ( $res->numrows() != 0 ){
3123    
3124     $row=& $res->fetchRow(DB_FETCHMODE_ASSOC);
3125 softime 7996 $instruction = $this->f->get_inst__om_dbform(array(
3126     "obj" => "instruction",
3127     "idx" => "]",
3128     ));
3129 mbroquet 3730
3130     $instruction->setParameter("maj", 1);
3131     $instruction->updateArchiveData($row);
3132     return $instruction->valF;
3133     }
3134     //Sinon, on prend les données du P0, si ce n'est pas un P0
3135     else {
3136     $sql = "SELECT dossier.delai, dossier.accord_tacite, dossier.etat,
3137     dossier.avis_decision, dossier.date_complet, dossier.date_dernier_depot,
3138     dossier.date_rejet, dossier.date_limite, dossier.date_notification_delai,
3139     dossier.date_decision, dossier.date_validite, dossier.date_achevement,
3140     dossier.date_chantier, dossier.date_conformite, dossier.incompletude,
3141     dossier.evenement_suivant_tacite, dossier.evenement_suivant_tacite_incompletude,
3142     dossier.etat_pendant_incompletude, dossier.date_limite_incompletude,
3143     dossier.delai_incompletude, dossier.autorite_competente, dossier.duree_validite,
3144 softime 6565 dossier.dossier, dossier.incomplet_notifie, dossier.date_depot,
3145     dossier.date_cloture_instruction, dossier.date_premiere_visite,
3146     dossier.date_derniere_visite, dossier.date_contradictoire,
3147     dossier.date_retour_contradictoire, dossier.date_ait,
3148 softime 8593 dossier.date_transmission_parquet,dossier.dossier_instruction_type
3149 mbroquet 3730 FROM ".DB_PREFIXE."dossier
3150     LEFT JOIN ".DB_PREFIXE."dossier_instruction_type
3151     ON dossier.dossier_instruction_type = dossier_instruction_type.dossier_instruction_type
3152     WHERE dossier.dossier_autorisation = (
3153     SELECT dossier_autorisation.dossier_autorisation
3154     FROM ".DB_PREFIXE."dossier_autorisation
3155     LEFT JOIN ".DB_PREFIXE."dossier
3156     ON dossier_autorisation.dossier_autorisation = dossier.dossier_autorisation
3157     WHERE dossier = '".$dossierID."')
3158     AND dossier_instruction_type.code = 'P'
3159     ORDER BY dossier.version DESC";
3160     $res = $this->db->query($sql);
3161     $this->addToLog("updateArchiveInstruction(): db->query(\"".$sql."\");", VERBOSE_MODE);
3162     if ($this->f->isDatabaseError($res, true)) {
3163     return false;
3164     }
3165    
3166     //On est pas dans le cas d'un dépôt d'un P0
3167     if ( $res->numrows() != 0 ){
3168     $row=& $res->fetchRow(DB_FETCHMODE_ASSOC);
3169 softime 7996 $instruction = $this->f->get_inst__om_dbform(array(
3170     "obj" => "instruction",
3171     "idx" => "]",
3172     ));
3173 mbroquet 3730 $instruction->setParameter("maj", 1);
3174     $instruction->updateArchiveData($row);
3175     return $instruction->valF;
3176     }
3177     }
3178     }
3179    
3180     /**
3181     * Cette methode permet d'afficher le bouton de validation du formulaire
3182     *
3183     * @param integer $maj Mode de mise a jour
3184     * @return void
3185     */
3186     function bouton($maj) {
3187    
3188     if (!$this->correct
3189     && $this->checkActionAvailability() == true) {
3190     //
3191     switch($maj) {
3192     case 0 :
3193     $bouton = _("Ajouter");
3194     break;
3195     case 1 :
3196     $bouton = _("Modifier");
3197     break;
3198     case 2 :
3199     $bouton = _("Supprimer");
3200     break;
3201     default :
3202     // Actions specifiques
3203     if ($this->get_action_param($maj, "button") != null) {
3204     //
3205     $bouton = $this->get_action_param($maj, "button");
3206     } else {
3207     //
3208     $bouton = _("Valider");
3209     }
3210     break;
3211     }
3212     //
3213     $params = array(
3214     "value" => $bouton,
3215     "name" => "submit",
3216     "onclick"=>"return getDataFieldReferenceCadastrale();",
3217     );
3218     //
3219     $this->f->layout->display_form_button($params);
3220     }
3221    
3222     }
3223    
3224     /**
3225     * Récupère l'instance de la classe taxe_amenagement.
3226     *
3227     * @param integer $om_collectivite La collectivité
3228     *
3229     * @return object
3230     */
3231     function get_inst_taxe_amenagement_by_om_collectivite($om_collectivite) {
3232     //
3233 softime 6929 if ($this->inst_taxe_amenagement === null) {
3234 mbroquet 3730 //
3235     $taxe_amenagement = $this->get_taxe_amenagement_by_om_collectivite($om_collectivite);
3236 softime 6929
3237     // Si aucun paramétrage de taxe trouvé et que la collectivité
3238     // est mono
3239     if ($taxe_amenagement === null
3240     && $this->f->isCollectiviteMono($om_collectivite) === true) {
3241     // Récupère la collectivité multi
3242     $om_collectivite_multi = $this->f->get_idx_collectivite_multi();
3243     //
3244     $taxe_amenagement = $this->get_taxe_amenagement_by_om_collectivite($om_collectivite_multi);
3245     }
3246    
3247 mbroquet 3730 //
3248 softime 6929 if ($taxe_amenagement === null) {
3249     //
3250     return null;
3251     }
3252    
3253     //
3254 softime 7996 $this->inst_taxe_amenagement = $this->f->get_inst__om_dbform(array(
3255     "obj" => "taxe_amenagement",
3256     "idx" => $taxe_amenagement,
3257     ));
3258 mbroquet 3730 }
3259     //
3260     return $this->inst_taxe_amenagement;
3261     }
3262    
3263     /**
3264     * Récupère l'identifiant de la taxe d'aménagement par rapport à la collectivité.
3265     *
3266     * @param integer $om_collectivite La collectivité
3267     *
3268     * @return integer
3269     */
3270     function get_taxe_amenagement_by_om_collectivite($om_collectivite) {
3271     //
3272 softime 6929 $taxe_amenagement = null;
3273 mbroquet 3730
3274 softime 6929 // Si la collectivité n'est pas renseigné
3275     if ($om_collectivite !== '' && $om_collectivite !== null) {
3276    
3277     // SQL
3278     $sql = "SELECT taxe_amenagement
3279     FROM ".DB_PREFIXE."taxe_amenagement
3280     WHERE om_collectivite = ".intval($om_collectivite);
3281     $taxe_amenagement = $this->f->db->getOne($sql);
3282     $this->addToLog(__METHOD__."(): db->getone(\"".$sql."\")", VERBOSE_MODE);
3283     $this->f->isDatabaseError($taxe_amenagement);
3284     }
3285    
3286 mbroquet 3730 //
3287 softime 6929 return $taxe_amenagement;
3288 mbroquet 3730 }
3289    
3290    
3291     /**
3292 softime 6929 * Récupère l'instance du cerfa par le type détaillé du DA.
3293     *
3294     * @param integer $datd Identifiant du type détaillé du DA.
3295     *
3296     * @return object
3297     */
3298     protected function get_inst_cerfa_by_datd($datd = null) {
3299     //
3300     if ($this->inst_cerfa === null) {
3301     //
3302     $inst_datd = $this->get_inst_common("dossier_autorisation_type_detaille", $datd);
3303     //
3304     $cerfa = $inst_datd->getVal('cerfa');
3305     //
3306     if ($cerfa !== '' && $cerfa !== null) {
3307     //
3308 softime 7996 $this->inst_cerfa = $this->f->get_inst__om_dbform(array(
3309     "obj" => "cerfa",
3310     "idx" => $cerfa,
3311     ));
3312 softime 6929 }
3313     }
3314    
3315     //
3316     return $this->inst_cerfa;
3317     }
3318    
3319    
3320     /**
3321 mbroquet 3730 * Récupère l'instance du dossier d'autorisation.
3322     *
3323     * @param string $dossier_autorisation Identifiant du dossier d'autorisation.
3324     *
3325     * @return object
3326     */
3327 fmichon 4708 function get_inst_dossier_autorisation($dossier_autorisation = null) {
3328 mbroquet 3730 //
3329     return $this->get_inst_common("dossier_autorisation", $dossier_autorisation);
3330     }
3331    
3332 nhaye 5254 }
3333 mbroquet 3730
3334 softime 7996

Properties

Name Value
svn:keywords "Id"

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26