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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 3356 - (hide annotations)
Thu Mar 26 14:26:34 2015 UTC (9 years, 10 months ago) by softime
File size: 102293 byte(s)
* Amélioration - Ajout de la gestion des nouvelles actions pour la classe demande.
1 vpihour 632 <?php
2     //$Id$
3     //gen openMairie le 08/11/2012 14:00
4    
5     require_once ("../gen/obj/demande.class.php");
6    
7     class demande extends demande_gen {
8    
9 nhaye 838 var $valIdDemandeur = array("petitionnaire_principal" => "",
10     "delegataire" => "",
11     "petitionnaire" => array());
12     var $postedIdDemandeur = array("petitionnaire_principal" => "",
13     "delegataire" => "",
14     "petitionnaire" => array());
15 nhaye 807
16 nhaye 1333 var $autreDossierEnCour;
17    
18 nhaye 2976 var $cerfa = null;
19    
20 softime 3356 /** @var boolean Les nouvelles actions sont activées sur cet objet */
21     var $activate_class_action;
22    
23 vpihour 632 function demande($id,&$db,$debug) {
24 softime 3356 //On active les nouvelles actions
25     $this->activate_class_action = true;
26 vpihour 632 $this->constructeur($id,$db,$debug);
27     }// fin constructeur
28 fmichon 1005
29 softime 3356 /**
30     * Définition des actions disponibles sur la classe.
31     *
32     * @return void
33     */
34     function init_class_actions() {
35    
36     // On récupère les actions génériques définies dans la méthode
37     // d'initialisation de la classe parente
38     parent::init_class_actions();
39    
40     // ACTION - 100 - pdfetat
41     // Permet de visualiser le récépissé de la demande
42     $this->class_actions[100] = array(
43     "identifier" => "pdfetat",
44     "portlet" => array(
45     "type" => "action-blank",
46     "libelle" => _("Editer le recepisse PDF"),
47     "order" => 100,
48     "class" => "pdf-16",
49     ),
50     "view" => "view_pdfetat",
51     "permission_suffix" => "consulter",
52     );
53    
54     // ACTION - 110 - affichage_reglementaire_registre
55     // Affiche un formulaire pour visualiser le registre réglementaire
56     $this->class_actions[110] = array(
57     "identifier" => "affichage_reglementaire_registre",
58     "view" => "view_reglementaire_registre",
59     "permission_suffix" => "consulter",
60     );
61    
62     // ACTION - 120 - affichage_reglementaire_attestation
63     // Affiche un formulaire pour visualiser l'attestation réglementaire
64     $this->class_actions[120] = array(
65     "identifier" => "affichage_reglementaire_attestation",
66     "view" => "view_reglementaire_attestation",
67     "permission_suffix" => "consulter",
68     );
69     }
70    
71     /**
72     * VIEW - view_pdfetat
73     *
74     * Génère un récépissé PDF de la demande.
75     *
76     * @return void
77     */
78     function view_pdfetat() {
79     // Identifiant de la demande
80     $idx = $this->getVal($this->clePrimaire);
81    
82     // Requête qui récupère le type de lettre type
83     $sql = " SELECT instruction.instruction, instruction.lettretype ";
84     $sql .= " FROM ".DB_PREFIXE."demande ";
85     $sql .= " LEFT JOIN ".DB_PREFIXE."instruction ";
86     $sql .= " ON demande.instruction_recepisse=instruction.instruction ";
87     $sql .= " WHERE demande.demande=".intval($idx);
88     $res = $this->f->db->query($sql);
89     $this->f->addToLog(__METHOD__.": db->query(\"".$sql."\")", VERBOSE_MODE);
90     $this->f->isDatabaseError($res);
91     $row = $res->fetchrow(DB_FETCHMODE_ASSOC);
92    
93     // Si la requête nous retourne un résultat
94     if (isset($row["instruction"])
95     && !empty($row["instruction"])
96     && isset($row["lettretype"])
97     && !empty($row["lettretype"])) {
98     // Redirection vers le script d'édition pdf avec les bons paramètres
99     header("Location: ../pdf/pdflettretype.php?idx=".$row["instruction"]."&obj=".$row["lettretype"]);
100     exit();
101     } else {
102     // On indique à l'utilisateur que le récépissé n'existe pas
103     $this->f->displayMessage("error", _("Le recepisse demande n'existe pas."));
104     }
105     }
106    
107     /**
108     * VIEW - view_reglementaire_registre
109     *
110     * Affiche un formulaire pour génèrer le registre d'affichage réglementaire.
111     *
112     * @return void
113     */
114     function view_reglementaire_registre() {
115    
116     // Vérification de l'accessibilité sur l'élément
117     $this->checkAccessibility();
118    
119     /**
120     * Gestion des erreurs : vérification du paramétrage
121     */
122     $erreur = false;
123     // Récupération de l'événement correspondant à l'instruction à insérer pour chaque dossier du registre
124     $aff_obli = $this->f->getParameter('id_affichage_obligatoire');
125     // Si le paramétrage est vide ou pas numérique
126     if ($aff_obli == "" or !is_numeric($aff_obli)) {
127     $erreur = true;
128     } else {
129     // Vérification de l'existance de l'événement
130     $sql_verif = "SELECT count(*) FROM ".DB_PREFIXE."evenement WHERE evenement = ".$aff_obli;
131     $res_verif = $this->f->db->getOne($sql_verif);
132     $this->f->addToLog(__METHOD__.": db->getOne(\"".$sql_verif."\");", VERBOSE_MODE);
133     $this->f->isDatabaseError($res_verif);
134     // Si pas de correspondance d'événement dans la base
135     if ($res_verif === '0') {
136     $erreur = true;
137     }
138     }
139     // Affichage d'un message si en erreur
140     if ($erreur == true) {
141     // Affichage de l'erreur et arrêt du script
142     $this->f->displayMessage("error", _("Erreur de parametrage. Contactez votre administrateur."));
143     die();
144     }
145    
146     // Si un affichage réglementaire des dossiers est demandé (appel en ajax)
147     if ($this->f->get_submitted_get_value('update') !== null) {
148     // Désactivation des logs car appel en ajax
149     $this->f->disableLog();
150     // Récupération de la liste des dossiers d'instruction dont l'état est
151     // "encours" et le groupe est 'ADS'. Une jointure avec la table instruction
152     // permet de savoir si le dossier a déjà été affiché ou non en récupérant
153     // l'id de l'événement qui représente l'attestion de l'affichage
154     // réglementaire dans le paramétrage.
155     $sql = "SELECT dossier.dossier, instruction.instruction
156     FROM
157     ".DB_PREFIXE."dossier
158     LEFT JOIN ".DB_PREFIXE."instruction
159     ON dossier.dossier=instruction.dossier
160     AND instruction.evenement=".$aff_obli."
161     LEFT JOIN ".DB_PREFIXE."dossier_autorisation
162     ON dossier.dossier_autorisation =
163     dossier_autorisation.dossier_autorisation
164     LEFT JOIN ".DB_PREFIXE."dossier_autorisation_type_detaille
165     ON dossier_autorisation.dossier_autorisation_type_detaille =
166     dossier_autorisation_type_detaille.dossier_autorisation_type_detaille
167     LEFT JOIN ".DB_PREFIXE."dossier_autorisation_type
168     ON dossier_autorisation_type_detaille.dossier_autorisation_type =
169     dossier_autorisation_type.dossier_autorisation_type
170     LEFT JOIN ".DB_PREFIXE."groupe
171     ON dossier_autorisation_type.groupe = groupe.groupe
172     LEFT JOIN ".DB_PREFIXE."dossier_instruction_type
173     ON dossier.dossier_instruction_type=dossier_instruction_type.dossier_instruction_type
174     WHERE
175     (select
176     e.statut
177     from
178     ".DB_PREFIXE."etat e
179     where
180     e.etat = dossier.etat
181     ) = 'encours'
182     AND groupe.code = 'ADS'
183     AND LOWER(dossier_instruction_type.code) IN ('p','m','t')
184     ";
185     $res = $this->f->db->query($sql);
186     $this->f->addToLog(__METHOD__.": db->query(\"".$sql."\");", VERBOSE_MODE);
187     $this->f->isDatabaseError($res);
188     // Boucle sur les dossiers
189     while ($row =& $res->fetchRow(DB_FETCHMODE_ASSOC)) {
190     // Si aucune instruction n'a d'événement de type "affichage_obligatoire"
191     // on créé une nouvelle instruction avec cet événement.
192     if ($row["instruction"] == "") {
193     // Instanciation d'instruction pour ajout
194     require_once '../obj/instruction.class.php';
195     $instr = new instruction(']', $this->f->db, DEBUG);
196     // Création d'un tableau avec la liste des champs de l'instruction
197     foreach($instr->champs as $champ) {
198     $valF[$champ] = "";
199     }
200     $valF["destinataire"] = $row['dossier'];
201     $valF["date_evenement"] = date("d/m/Y");
202     $valF["evenement"] = $aff_obli;
203     $valF["dossier"] = $row['dossier'];
204    
205     // Définition des valeurs de la nouvelle instruction
206     $instr->valF = array();
207     // Insertion dans la base
208     $res_ajout = $instr->ajouter($valF, $this->f->db, DEBUG);
209     $this->f->addToLog(__METHOD__.": db->autoexecute(\"".DB_PREFIXE."instruction\", ".print_r($valF, true).", DB_AUTOQUERY_INSERT);", VERBOSE_MODE);
210     $this->f->isDatabaseError($res_ajout);
211    
212     //Finalisation du document
213     $_GET['obj']='instruction';
214     $_GET['idx']=$instr->valF[$instr->clePrimaire];
215     $instr = new instruction($_GET['idx'],$this->f->db,DEBUG);
216     $instr->finaliser('', 1, '', '');
217     }
218     }
219     } else { // Sinon affichage standard
220     // Affichage de la description de l'écran
221     $this->f->displayDescription(_("Cet ecran permet d'imprimer le registre d'affichage ".
222     "reglementaire des dossiers d'instruction en cours. ".
223     "La validation de ce traitement ajoute sur chacun des ".
224     "dossiers d'instruction concernes la possibilite ".
225     "d'imprimer une attestation d'affichage."));
226     // Ouverture du formulaire
227     echo "\t<form";
228     echo " method=\"post\"";
229     echo " id=\"affichage_reglementaire_registre_form\"";
230     echo " action=\"#\"";
231     echo ">\n";
232     //
233     echo "<div id=\"msg\"></div>";
234     // Affichage du bouton
235     echo "\t<div class=\"formControls\">\n";
236     $this->f->layout->display_form_button(array("value" => _("Valider"), "onclick" => "affichage_reglementaire_registre(this); return false;", ));
237     echo "\t</div>\n";
238     // Fermeture du fomulaire
239     echo "\t</form>\n";
240     }
241     }
242    
243     /**
244     * VIEW - view_reglementaire_attestation
245     *
246     * Affiche un formulaire pour génèrer l'attestation d'affichage
247     * réglementaire.
248     *
249     * @return void
250     */
251     function view_reglementaire_attestation() {
252    
253     // Vérification de l'accessibilité sur l'élément
254     $this->checkAccessibility();
255    
256     /**
257     * Gestion des erreurs : vérification du paramétrage
258     */
259     $erreur = false;
260     // Récupération de l'événement correspondant à l'instruction à insérer pour chaque dossier du registre
261     $aff_obli = $this->f->getParameter('id_affichage_obligatoire');
262     // Si le paramétrage est vide ou pas numérique
263     if ($aff_obli == "" or !is_numeric($aff_obli)) {
264     $erreur = true;
265     } else {
266     // Vérification de l'existance de l'événement
267     $sql_verif = "SELECT count(*) FROM ".DB_PREFIXE."evenement WHERE evenement = ".$aff_obli;
268     $res_verif = $this->f->db->getOne($sql_verif);
269     $this->f->addToLog(__METHOD__.": db->getOne(\"".$sql_verif."\");", VERBOSE_MODE);
270     $this->f->isDatabaseError($res_verif);
271     // Si pas de correspondance d'événement dans la base
272     if ($res_verif === '0') {
273     $erreur = true;
274     }
275     }
276     // Affichage d'un message si en erreur
277     if ($erreur == true) {
278     // Affichage de l'erreur et arrêt du script
279     $this->f->displayMessage("error", _("Erreur de parametrage. Contactez votre administrateur."));
280     die();
281     }
282    
283     /**
284     * Validation du formulaire
285     */
286     // Si le formulaire a été validé
287     if ($this->f->get_submitted_post_value("dossier") !== null) {
288     // Si une valeur a été saisie dans le champs dossier
289     if ($this->f->get_submitted_post_value("dossier") != "") {
290     // Récupération des informations sur le dossier et l'étape d'instruction
291     $sql = "SELECT
292     dossier.dossier, instruction.instruction, instruction.lettretype,
293     instruction.om_final_instruction, instruction.om_fichier_instruction
294     FROM
295     ".DB_PREFIXE."dossier
296     LEFT JOIN ".DB_PREFIXE."instruction
297     ON dossier.dossier=instruction.dossier
298     AND instruction.evenement=".$this->f->getParameter('id_affichage_obligatoire')."
299     WHERE
300     LOWER(dossier.dossier)='".strtolower(htmlspecialchars($this->f->get_submitted_post_value("dossier")))."' ";
301     $res = $this->f->db->query($sql);
302     $this->f->addToLog(__METHOD__.": db->query(\"".$sql."\");", VERBOSE_MODE);
303     $this->f->isDatabaseError($res);
304     $row =& $res->fetchRow(DB_FETCHMODE_ASSOC);
305     // Si il y a un dossier et une étape d'instrcution correspondante à
306     // l'événement affichage obligatoire
307     if ($res->numrows() != 0 && $row["instruction"] != "") {
308     $message_class = "valid";
309     $message = _("Cliquez sur le lien ci-dessous pour telecharger votre attestation d'affichage");
310     $message .= " : <br/><br/>";
311     $message .= "<a class='om-prev-icon pdf-16'";
312     $message .= " title=\""._("Attestation d'affichage")."\"";
313     //Affichage du lien vers le document stocké
314     if (isset($row['om_fichier_instruction']) &&
315     isset($row['om_final_instruction']) &&
316     $row['om_fichier_instruction']!='' &&
317     $row['om_final_instruction'] == 't' ){
318    
319     $message .= " href='../spg/file.php?obj=instruction&amp;"
320     ."champ=om_fichier_instruction&amp;id=".$row['instruction']."'";
321     }
322     //Sinon affichage du lien généré à la volée
323     else{
324     $message .= " href='../pdf/pdflettretype.php?obj=".$row['lettretype']."&amp;idx=".$row['instruction']."'";
325     }
326     $message .= " target='_blank'>";
327     $message .= _("Attestation d'affichage");
328     $message .= "</a>";
329     } elseif ($res->numrows() != 0 && $row["instruction"] == "") {
330     // Si aucune instruction avec l'événement affichage obligatoire n'a
331     // été trouvée
332     $message_class = "error";
333     $message = _("Ce dossier n'a jamais ete affiche.");
334     } else {
335     // Si aucun dossier n'est trouvé
336     $message_class = "error";
337     $message = _("Ce dossier n'existe pas.");
338     }
339     } else {
340     // Si aucune valeur n'a été saisie dans le champs dossier
341     $message_class = "error";
342     $message = _("Veuiller saisir un No de dossier.");
343     }
344     }
345    
346     /**
347     * Affichage des messages et du formulaire
348     */
349     // Affichage de la description de l'écran
350     $this->f->displayDescription(_("Cet ecran permet d'imprimer l'attestation d'affichage ".
351     "reglementaire d'un dossier d'instruction. Il suffit de ".
352     "saisir le numero du dossier d'instruction puis de ".
353     "valider pour obtenir le lien de telechargement de ".
354     "l'attestation permettant de l'imprimer."));
355     // Affichage du message de validation ou d'erreur
356     if (isset($message) && isset($message_class) && $message != "") {
357     $this->f->displayMessage($message_class, $message);
358     }
359     // Inclusion de la classe de gestion des formulaires
360     require_once "../obj/om_formulaire.class.php";
361     // Ouverture du formulaire
362     echo "\t<form";
363     echo " method=\"post\"";
364     echo " id=\"affichage_reglementaire_attestation_form\"";
365     echo " action=\"\"";
366     echo ">\n";
367     // Paramétrage des champs du formulaire
368     $champs = array("dossier");
369     // Création d'un nouvel objet de type formulaire
370     $form = new formulaire(NULL, 0, 0, $champs);
371     // Paramétrage des champs du formulaire
372     $form->setLib("dossier", _("No de dossier"));
373     $form->setType("dossier", "text");
374     $form->setTaille("dossier", 25);
375     $form->setMax("dossier", 25);
376     // Affichage du formulaire
377     $form->entete();
378     $form->afficher($champs, 0, false, false);
379     $form->enpied();
380     // Affichage du bouton
381     echo "\t<div class=\"formControls\">\n";
382     $this->f->layout->display_form_button(array("value" => _("Valider")));
383     echo "\t</div>\n";
384     // Fermeture du fomulaire
385     echo "\t</form>\n";
386     }
387    
388 fmichon 1005 function setValF($val) {
389     parent::setValF($val);
390     // Récupération des id demandeurs postés
391     $this->getPostedValues();
392 nhaye 1020 //$this->valIdDemandeur=$this->postedIdDemandeur;
393 fmichon 1005 }
394    
395     /**
396     * Méthode permettant de récupérer les valeurs du dossier d'autorisation
397 vpihour 1058 * correspondant à la nouvelle demande
398 fmichon 1005 */
399 nhaye 1039 function getValFromDossier($dossier_autorisation) {
400 fmichon 1005 include "../sql/pgsql/demande.form.inc.php";
401     $sql=str_replace("<idx>",$this->getParameter("idx_dossier"),
402 nhaye 1053 $sql_infos_dossier);
403 fmichon 1005 $res = $this->db->query($sql);
404 vpihour 1777 $this->f->addToLog("getValFromDossier(): db->query(\"".$sql."\")", VERBOSE_MODE);
405 softime 3274 $this->f->isDatabaseError($res);
406 fmichon 1005 $row = & $res->fetchRow(DB_FETCHMODE_ASSOC);
407     return $row;
408     }
409 vpihour 651
410 vpihour 799 /*
411     * La date du jour par défaut dans le champs date_demande
412     * Put the date of the day by default into the field date_demande
413     */
414 vpihour 635 function setVal(&$form, $maj, $validation, &$db) {
415     if($maj == 0) {
416 fmichon 1005 $form->setVal("date_demande",date('d/m/Y'));
417    
418     // Récupération des valeurs du dossier d'autorisation correspondant
419     if($this->getParameter("idx_dossier") != "") {
420 nhaye 1039 $val_autorisation = $this->getValFromDossier(
421 fmichon 1005 $this->getParameter("idx_dossier"));
422     foreach($val_autorisation as $champ => $value) {
423     $form->setVal($champ,$value);
424     }
425     }
426 vpihour 635 }
427     }
428 nhaye 1404 function getDataSubmit() {
429    
430     $datasubmit = parent::getDataSubmit();
431     if($this->getParameter("idx_dossier") != "") {
432     $datasubmit .= "&idx_dossier=".$this->getParameter("idx_dossier");
433     }
434     return $datasubmit;
435     }
436 vpihour 635
437 nhaye 838 /**
438     * Méthode de verification du contenu
439     */
440     function verifier($val, &$db, $DEBUG) {
441     parent::verifier($val, $db, $DEBUG);
442 vpihour 2606
443 nhaye 838 if(!isset($this->postedIdDemandeur["petitionnaire_principal"]) OR
444 vpihour 2606 empty($this->postedIdDemandeur["petitionnaire_principal"]) AND
445     !is_null($this->form)) {
446 nhaye 838 $this->correct = false;
447 fmichon 1725 $this->addToMessage(_("La saisie d'un petitionnaire principal est obligatoire."));
448 nhaye 838 }
449     }
450 nhaye 1333
451     /**
452     * Configuration des select
453     */
454     function setSelect(&$form, $maj,&$db,$debug) {
455    
456 fmichon 3172 if(file_exists ("../sql/".OM_DB_PHPTYPE."/".$this->table.".form.inc.php"))
457     include ("../sql/".OM_DB_PHPTYPE."/".$this->table.".form.inc.php");
458     elseif(file_exists ("../sql/".OM_DB_PHPTYPE."/".$this->table.".form.inc"))
459     include ("../sql/".OM_DB_PHPTYPE."/".$this->table.".form.inc");
460 softime 2503
461 softime 3054 // Méthode de récupération des valeurs du select "demande_type"
462     if ($maj < 2
463 nmeucci 3239 && (($this->f->get_submitted_get_value('obj') !== null && $this->f->get_submitted_get_value('obj') != "demande")
464     OR ($this->f->get_submitted_get_value('obj') === null))) {
465 softime 3054 // demande_type
466 nhaye 3039 $form->setSelect('demande_type', $this->loadSelectDemandeType($form, $maj, $db, $debug, "dossier_autorisation_type_detaille"));
467     } else {
468     // demande_type
469     $this->init_select($form, $db, $maj, $debug, "demande_type",
470     $sql_demande_type, $sql_demande_type_by_id, false);
471     }
472 atreal 2730 // arrondissement
473     $this->init_select($form, $db, $maj, $debug, "arrondissement",
474     $sql_arrondissement, $sql_arrondissement_by_id, false);
475    
476     // dossier_autorisation_type_detaille
477     $this->init_select($form, $db, $maj, $debug, "dossier_autorisation_type_detaille",
478     $sql_dossier_autorisation_type_detaille, $sql_dossier_autorisation_type_detaille_by_id, false);
479    
480 softime 2503 }
481 nhaye 1333
482 softime 2503 /**
483     * Charge le select du champ type de demande
484     * @param object $form Formulaire
485     * @param int $maj Mode d'insertion
486     * @param object $db Database
487     * @param bool $debug Debug active ou pas
488     * @param string $champ champ activant le filtre
489     * @return array Contenu du select
490     */
491     function loadSelectDemandeType(&$form, $maj, &$db, $debug, $champ) {
492 nhaye 1333
493 softime 2503 //
494 fmichon 3172 if(file_exists ("../sql/".OM_DB_PHPTYPE."/".$this->table.".form.inc.php"))
495     include ("../sql/".OM_DB_PHPTYPE."/".$this->table.".form.inc.php");
496     elseif(file_exists ("../sql/".OM_DB_PHPTYPE."/".$this->table.".form.inc"))
497     include ("../sql/".OM_DB_PHPTYPE."/".$this->table.".form.inc");
498 nhaye 1333
499 softime 2503 // Contenu de la liste à choix
500     $contenu=array();
501     $contenu[0][0]='';
502     $contenu[1][0]=_('choisir')."&nbsp;"._("demande_type");
503 nhaye 1857
504 softime 2503 //Récupère l'id du type de dossier d'autorisation détaillé
505     $id_dossier_autorisation_type_detaille = "";
506 nmeucci 3239 if ($this->f->get_submitted_post_value($champ) !== null) {
507     $id_dossier_autorisation_type_detaille = $this->f->get_submitted_post_value($champ);
508 softime 2503 } elseif($this->getParameter($champ) != "") {
509     $id_dossier_autorisation_type_detaille = $this->getParameter($champ);
510     } elseif(isset($form->val[$champ])) {
511     $id_dossier_autorisation_type_detaille = $form->val[$champ];
512     }
513 nhaye 1580
514 softime 2503 // Récupération de paramètre pour le rechargement ajax du select
515     $idx_dossier = $this->getParameter("idx_dossier");
516 softime 1997
517 softime 2503 // Récupère l'id de la nature de la demande
518     $id_demande_nature = "1";
519     if (isset($idx_dossier) AND $idx_dossier != "") {
520     $id_demande_nature = '2';
521     }
522 nhaye 1333
523 softime 2503 // Ajout de condition pour la requête
524     $ajout_condition_requête = "";
525     if ($id_demande_nature == '2') {
526 vpihour 3015
527     //On récupère le dossier d'autorisation
528     $sql = "SELECT dossier_autorisation
529     FROM ".DB_PREFIXE."dossier
530     WHERE dossier = '".$idx_dossier."'";
531     $dossier_autorisation = $this->db->getOne($sql);
532    
533     $this->f->addToLog(
534     "loadSelectDemandeType() : db->getone(\"".$sql."\");",
535     VERBOSE_MODE
536     );
537 softime 3274 $this->f->isDatabaseError($dossier_autorisation);
538 vpihour 3015
539     //On récupère l'état du dernier dossier d'instruction
540     $sql = "SELECT etat
541     FROM ".DB_PREFIXE."dossier
542     WHERE dossier_autorisation = '".$dossier_autorisation."' AND
543     version = (SELECT max(version) FROM ".DB_PREFIXE."dossier
544     WHERE dossier_autorisation = '".$dossier_autorisation."' )";
545     $etatDernierDi = $this->db->getOne($sql);
546     $this->f->addToLog(
547     "loadSelectDemandeType() : db->getone(\"".$sql."\");",
548     VERBOSE_MODE
549     );
550 softime 3274 $this->f->isDatabaseError($etatDernierDi);
551 vpihour 3015
552     $ajout_condition_requête = " AND etat.etat = '".$etatDernierDi."'";
553 softime 2503 }
554 nhaye 1333
555 softime 2503 //
556     if ($id_dossier_autorisation_type_detaille != "") {
557     //Si l'id du type de dossier d'autorisation détaillé est renseigné
558     $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);
559     // Ajoute une condition sur la nature de la demande
560     $sql_demande_type_by_dossier_autorisation_type_detaille = str_replace('<idx_demande_nature>', $id_demande_nature, $sql_demande_type_by_dossier_autorisation_type_detaille);
561     // Permet d'ajouter une condition
562     $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);
563     $res = $this->db->query($sql_demande_type_by_dossier_autorisation_type_detaille);
564     $this->addToLog("db->query(\"".$sql_demande_type_by_dossier_autorisation_type_detaille."\");", VERBOSE_MODE);
565     $this->f->isDatabaseError($res);
566     //Les résultats de la requête sont stocké dans le tableau contenu
567 softime 1997 $k=1;
568 softime 2503 while ($row=& $res->fetchRow()){
569     $contenu[0][$k]=$row[0];
570     $contenu[1][$k]=$row[1];
571 softime 1997 $k++;
572 softime 2503 }
573     }
574 softime 1997
575 softime 2503 // Retourne le contenu de la liste
576     return $contenu;
577 nhaye 1333 }
578 softime 2503
579 vpihour 799 /*
580     * Ajout du fielset
581     * Add fieldset
582     */
583 vpihour 635 function setLayout(&$form, $maj){
584     if ( $maj < 2 OR $maj == 3 ) {
585    
586 vpihour 1058 /*Champ sur lequel s'ouvre le bloc 1 */
587 nhaye 807 $form->setBloc('dossier_autorisation_type_detaille','D',"","dossier_type col_8");
588 vpihour 1058
589 nhaye 807 $form->setFieldset('dossier_autorisation_type_detaille','D'
590     ,_('Type de dossier/demande'));
591     $form->setFieldset('demande_type','F','');
592    
593     $form->setBloc('demande_type','F');
594 vpihour 1058 /*Fin bloc 1*/
595 softime 3006
596     // Affichage de l'état du dossier d'instruction
597     $form->setBloc('etat','D',"","col_4 demande_etat_hidden_bloc");
598     $form->setFieldset('etat','D',_('etat du dossier_instruction'));
599     $form->setFieldset('etat','F','');
600     $form->setBloc('etat','F');
601 nhaye 807
602 vpihour 1058 /*Champ sur lequel s'ouvre le bloc 2 */
603 nhaye 807 $form->setBloc('date_demande','D',"","col_4 demande_hidden_bloc");
604     $form->setFieldset('date_demande','D',_('Date de la demande'));
605     $form->setFieldset('date_demande','F','');
606 vpihour 635 $form->setBloc('date_demande','F');
607 vpihour 1058 /*Fin bloc 2*/
608 vpihour 635
609 vpihour 1058 /*Champ sur lequel s'ouvre le bloc 3 */
610 nhaye 807 $form->setBloc('terrain_references_cadastrales','D',"",
611     "localisation col_12 demande_hidden_bloc");
612 vpihour 693 $form->setFieldset('terrain_references_cadastrales','D',_('Localisation du terrain'));
613     $form->setFieldset('terrain_superficie','F','');
614 vpihour 635 $form->setBloc('terrain_superficie','F');
615 vpihour 1058 /*Fin bloc 4*/
616 vpihour 676
617 vpihour 635 }
618     }
619 vpihour 641
620 vpihour 799 /*
621     * Ajoute des actions sur les deux premiers select
622     * Add actions on the two first select
623     */
624 vpihour 641 function setOnchange(&$form,$maj){
625     parent::setOnchange($form,$maj);
626 softime 1997
627 vpihour 641 $form->setOnchange("dossier_autorisation_type_detaille","changeDemandeType();");
628     $form->setOnchange("demande_type","showFormsDemande();");
629     }
630 nhaye 1442
631     function setLib(&$form,$maj) {
632     parent::setLib($form,$maj);
633     //libelle des champs
634    
635 softime 2061 $form->setLib('terrain_adresse_voie',_('terrain_adresse'));
636 nhaye 1442 }
637 vpihour 799 /*
638     * Cache le champ terrain_references_cadastrales
639     * Hide the fiels terrain_references_cadastrales
640     */
641 vpihour 651 function setType(&$form,$maj) {
642     parent::setType($form,$maj);
643    
644 vpihour 689 $form->setType('dossier_instruction', 'hidden');
645     $form->setType('dossier_autorisation', 'hidden');
646 fmichon 1005
647     $form->setType('instruction_recepisse', 'hidden');
648     $form->setType('arrondissement', 'hidden');
649    
650 softime 3006 $form->setType('etat', 'hidden');
651    
652 fmichon 1005 // Si il s'agit d'une demande sur dossier existant on desactive tous les champs
653     // sauf demande_type
654 nhaye 1100 if(($maj == 0 AND $this-> getParameter("idx_dossier"))) {
655 nhaye 1053 $form->setType('dossier_autorisation_type_detaille', 'selecthiddenstatic');
656 softime 3006 $form->setType('etat', 'hiddenstatic');
657 nhaye 1676 $form->setType('terrain_references_cadastrales', 'hiddenstatic');
658 nhaye 1053 $form->setType('terrain_adresse_voie_numero', 'hiddenstatic');
659 softime 2061 $form->setType('terrain_adresse_voie', 'hiddenstatic');
660 nhaye 1053 $form->setType('terrain_adresse_lieu_dit', 'hiddenstatic');
661     $form->setType('terrain_adresse_localite', 'hiddenstatic');
662     $form->setType('terrain_adresse_code_postal', 'hiddenstatic');
663     $form->setType('terrain_adresse_bp', 'hiddenstatic');
664     $form->setType('terrain_adresse_cedex', 'hiddenstatic');
665     $form->setType('terrain_superficie', 'hiddenstatic');
666 fmichon 1005 }
667 nhaye 1100 if($maj == 1) {
668     $form->setType('dossier_autorisation_type_detaille', 'selecthiddenstatic');
669 nhaye 1095 $form->setType('demande_type', 'selecthiddenstatic');
670     }
671 nhaye 1100 if($maj == 3) {
672 nhaye 1101 $form->setType('terrain_references_cadastrales', 'referencescadastralesstatic');
673 nhaye 1100 }
674    
675 vpihour 651 }
676 vpihour 676
677 nhaye 807 /**
678 nhaye 2976 * Permet de recupérer l'identifiant du cerfa du DATD séléctionné
679     * par l'utilisateur.
680     *
681     * @return integer identifiant du cerfa
682 nhaye 920 */
683 nhaye 2976 function getIdCerfa() {
684     if($this->cerfa != null) {
685     return $this->cerfa;
686     }
687     // Récupération du cerfa pour le type d'instruction sélectionnée et valide
688     $sql = "SELECT
689     dossier_autorisation_type_detaille.cerfa
690     FROM
691     ".DB_PREFIXE."dossier_autorisation_type_detaille
692     JOIN
693     ".DB_PREFIXE."cerfa
694     ON
695     dossier_autorisation_type_detaille.cerfa = cerfa.cerfa
696     WHERE
697     now()<=om_validite_fin
698     AND now()>=om_validite_debut
699     AND dossier_autorisation_type_detaille=".
700     $this->valF['dossier_autorisation_type_detaille'];
701     $this->cerfa = $this->db->getOne($sql);
702     $this->f->addToLog(
703     "ajoutDossierInstruction() : db->getone(\"".$sql."\");",
704     VERBOSE_MODE
705     );
706 softime 3274 $this->f->isDatabaseError($this->cerfa);
707 nhaye 2976 return $this->cerfa;
708     }
709    
710    
711     /**
712     * Méthode permettant d'ajouter un dossier d'autorisation.
713     *
714     * @param integer $id identifiant de la demande
715     * @param database &$db handler de la base de donnée
716     * @param array $val tableau de valeurs postées via le formulaire
717     * @param boolean $DEBUG debug
718     *
719     * @return boolean false si erreur
720     */
721     function ajoutDossierAutorisation($id, &$db, $val, $DEBUG) {
722 nhaye 920 require_once '../obj/dossier_autorisation.class.php';
723 nhaye 2976 $dossier_autorisation = new dossier_autorisation("]", $db, $DEBUG);
724     $id_etat_initial_da =
725     $this->f->getParameter('id_etat_initial_dossier_autorisation');
726 nhaye 1619
727 nhaye 2976 // Vérification de l'existance d'un état initial des DA dans la table
728     // om_parametre afin d'éviter d'eventuelle erreur de base de données
729 nhaye 1606 if(isset($id_etat_initial_da)) {
730     $sql = "SELECT count(*) FROM ".DB_PREFIXE."etat_dossier_autorisation
731     WHERE etat_dossier_autorisation = ".$id_etat_initial_da;
732     $count = $this->db->getOne($sql);
733 nhaye 2976 $this->f->addToLog(
734     "ajoutDossierAutorisation() : db->getOne(\"".$sql."\")",
735     VERBOSE_MODE
736     );
737 softime 3274 if ($this->f->isDatabaseError($count, true)){
738 nhaye 2976 return false;
739 vpihour 1777 }
740 nhaye 1606 if($count != 1) {
741 softime 3274 $this->f->addToLog(__METHOD__."() : ERROR - Plusieurs états de dossier d'autorisation ont cet identifiant.", DEBUG_MODE);
742 nhaye 2976 return false;
743 nhaye 1606 } else {
744 nhaye 1619 // La méthode ajouter prend en paramètre un tableau associatif
745     // contenant toutes les champs de la classe instanciée,
746 nhaye 2976 // d'où l'initialisation du tableau en bouclant sur la liste des
747     // champs du DA
748 nhaye 1606 foreach($dossier_autorisation->champs as $value) {
749 nhaye 2976 $valAuto[$value] = null;
750 nhaye 1606 }
751 nhaye 1619 // Définition des valeurs à insérer
752 nhaye 1606 $valAuto['dossier_autorisation']="";
753 nhaye 2976 $valAuto['exercice']=null;
754 softime 2986 $valAuto['insee']= $this->f->getParameter("insee");
755 vpihour 3095 $valAuto['arrondissement']=
756     $this->getArrondissement($this->valF['terrain_adresse_code_postal']);
757 nhaye 2976 $valAuto['etat_dossier_autorisation']=
758     $this->f->getParameter('id_etat_initial_dossier_autorisation');
759     $valAuto['erp_numero_batiment']=null;
760     $valAuto['erp_ouvert']=null;
761     $valAuto['erp_arrete_decision']=null;
762     $valAuto['dossier_autorisation_type_detaille']=
763     $this->valF['dossier_autorisation_type_detaille'];
764     $valAuto['depot_initial']=
765     $this->dateDBToForm($this->valF['date_demande']);
766     $valAuto['terrain_references_cadastrales']=
767     $this->valF['terrain_references_cadastrales'];
768     $valAuto['terrain_adresse_voie_numero']=
769     $this->valF['terrain_adresse_voie_numero'];
770 softime 2061 $valAuto['terrain_adresse_voie']=$this->valF['terrain_adresse_voie'];
771 nhaye 2976 $valAuto['terrain_adresse_lieu_dit']=
772     $this->valF['terrain_adresse_lieu_dit'];
773     $valAuto['terrain_adresse_localite']=
774     $this->valF['terrain_adresse_localite'];
775     $valAuto['terrain_adresse_code_postal']=
776     $this->valF['terrain_adresse_code_postal'];
777 nhaye 1606 $valAuto['terrain_adresse_bp']=$this->valF['terrain_adresse_bp'];
778     $valAuto['terrain_adresse_cedex']=$this->valF['terrain_adresse_cedex'];
779     $valAuto['terrain_superficie']=$this->valF['terrain_superficie'];
780     $valAuto['numero_version']=-1;
781     // Ajout du dossier dans la base
782 nhaye 2976 if($dossier_autorisation->ajouter($valAuto, $db, $DEBUG) === false) {
783 softime 3274 $this->f->addToLog(__METHOD__."() : ERROR - Impossible d'ajouter le dossier d'autorisation.", DEBUG_MODE);
784 nhaye 2976 return false;
785     }
786 nhaye 1606 // Liaison du dossier ajouter à la demande
787 nhaye 2976 $this->valF['dossier_autorisation'] =
788     $dossier_autorisation->valF['dossier_autorisation'];
789 nhaye 1606 }
790     } else {
791 softime 3274 $this->f->addToLog(__METHOD__."() : ERROR - Le paramétre id_etat_initial_dossier_autorisation n'existe pas.", DEBUG_MODE);
792 nhaye 2976 return false;
793 nhaye 920 }
794 softime 3274
795     //
796     return true;
797 nhaye 920 }
798    
799     /**
800 nhaye 2976 * Méthode permettant d'ajouter un dossier d'instruction.
801     *
802     * @param integer $id identifiant de la demande
803     * @param database &$db handler de la base de donnée
804     * @param array $val tableau de valeurs postées via
805     * le formulaire
806     * @param boolean $DEBUG debug
807     * @param integer $dossier_instruction_type identifiant du DI type
808     *
809     * @return boolean false si erreur
810 nhaye 920 */
811 nhaye 2976 function ajoutDossierInstruction($id, &$db, $val, $DEBUG, $dossier_instruction_type) {
812 nhaye 920 require_once '../obj/dossier.class.php';
813 nhaye 2976 $dossier = new dossier("]", $db, $DEBUG);
814 nhaye 920 foreach($dossier->champs as $value) {
815 nhaye 2976 $valInstr[$value] = null;
816 nhaye 920 }
817     require_once '../obj/dossier_autorisation_type_detaille.class.php';
818     $datd = new dossier_autorisation_type_detaille(
819 nhaye 2976 $this->valF['dossier_autorisation_type_detaille'],
820     $db,
821     $DEBUG
822     );
823 fmichon 1005
824     /*Ajout de la variable dossier_instruction_type à l'objet dossier pour le
825     * versionning
826     */
827     $dossier->setDossierInstructionType($dossier_instruction_type);
828    
829 nhaye 920 // Définition des valeurs à entrée dans la table
830 nhaye 1186 $valInstr['dossier_instruction_type']=$dossier_instruction_type;
831 nhaye 920 $valInstr['date_depot']=$this->dateDBToForm($this->valF['date_demande']);
832 nhaye 1571 $valInstr['date_dernier_depot']=$this->dateDBToForm($this->valF['date_demande']);
833 nhaye 1037 $valInstr['date_demande']=$this->dateDBToForm($this->valF['date_demande']);
834 nhaye 920 $valInstr['depot_initial']=$this->dateDBToForm($this->valF['date_demande']);
835 vpihour 3320 $annee = DateTime::createFromFormat("Y-m-d", $this->valF['date_demande']);
836     $valInstr['annee']=$annee->format("y");
837 nhaye 2976 $valInstr['terrain_references_cadastrales']=
838     $this->valF['terrain_references_cadastrales'];
839     $valInstr['terrain_adresse_voie_numero']=
840     $this->valF['terrain_adresse_voie_numero'];
841 softime 2061 $valInstr['terrain_adresse_voie']=$this->valF['terrain_adresse_voie'];
842 nhaye 920 $valInstr['terrain_adresse_lieu_dit']=$this->valF['terrain_adresse_lieu_dit'];
843     $valInstr['terrain_adresse_localite']=$this->valF['terrain_adresse_localite'];
844 nhaye 2976 $valInstr['terrain_adresse_code_postal']=
845     $this->valF['terrain_adresse_code_postal'];
846 nhaye 920 $valInstr['terrain_adresse_bp']=$this->valF['terrain_adresse_bp'];
847     $valInstr['terrain_adresse_cedex']=$this->valF['terrain_adresse_cedex'];
848     $valInstr['terrain_superficie']=$this->valF['terrain_superficie'];
849     $valInstr['description']="";
850 fmichon 927 $valInstr['dossier_autorisation']=$this->valF['dossier_autorisation'];
851 nhaye 1262
852 vpihour 1273 /*
853     * Gestion de la qualification
854     * */
855 softime 2363 // Initialise le champ à false
856     $valInstr['a_qualifier'] = false;
857    
858     // Récupère l'information depuis le type de la demande
859     $qualification = $this->get_qualification($val['demande_type']);
860    
861     // Si le dossier doit être à qualifier
862     if ($qualification === 't') {
863     // Met le champ à true
864     $valInstr['a_qualifier'] = true;
865 vpihour 1273 }
866    
867 nhaye 2976 if($dossier->ajouter($valInstr, $db, $DEBUG) === false) {
868 softime 3274 $this->f->addToLog(__METHOD__."() : ERROR - Impossible d'ajouter le dossier d'instruction.", DEBUG_MODE);
869 nhaye 2976 return false;
870 vpihour 1777 }
871 vpihour 2302
872     //Affichage de message à l'utilisateur concernant un problème lors de
873 vpihour 2303 //l'affectation de l'instructeur au dossier d'instruction
874 vpihour 2302 if ($dossier->valF['dossier_autorisation'] === '' &&
875 nhaye 2976 $dossier->valF['instructeur'] === null){
876     $this->addToMessage(
877     _("Aucun instructeur compatible avec ce dossier, contactez votre administrateur afin d'en assigner un a ce dossier.")
878     );
879 vpihour 2302 }
880 nhaye 2976 elseif ( $dossier->valF['instructeur'] === null ){
881 vpihour 2302 if ($this->f->isAccredited("dossier_modifier_instructeur")) {
882 nhaye 2976 $this->addToMessage("<br/> ".
883     _("Pensez a assigner un instructeur a ce dossier.")
884     );
885 vpihour 2302 } else {
886 nhaye 2976 $this->addToMessage(
887     _("Aucun instructeur compatible avec ce dossier, contactez votre administrateur afin d'en assigner un a ce dossier.")
888     );
889 vpihour 2302 }
890     }
891    
892 nhaye 920 // Liaison du dossier ajouter à la demande
893     $this->valF['dossier_instruction'] = $dossier->valF['dossier'];
894 softime 3274
895     //
896     return true;
897 nhaye 920 }
898    
899     /**
900 nhaye 2976 * Méthode permettant d'ajouter les données techniques d'un DA.
901     *
902     * @param integer $id identifiant de la demande
903     * @param database &$db handler de la base de donnée
904     * @param array $val tableau de valeurs postées via le formulaire
905     * @param boolean $DEBUG debug
906     *
907     * @return boolean false si erreur
908 vpihour 1374 */
909 nhaye 2976 function ajoutDonneesTechniquesDA($id, &$db, $val, $DEBUG) {
910 vpihour 1374
911     require_once '../obj/donnees_techniques.class.php';
912 nhaye 2976 $this->DTDA = new donnees_techniques("]", $db, $DEBUG);
913 vpihour 1374
914 nhaye 2976 // Champs tous à NULL car seul le champ concernant le dossier
915     // d'autorisation sera rempli
916     foreach($this->DTDA->champs as $value) {
917 vpihour 3277 $valF[$value] = null;
918 vpihour 1374 }
919     // Ajout du numéro de dossier d'instruction
920 vpihour 3277 $valF['dossier_autorisation']=$this->valF['dossier_autorisation'];
921 nhaye 2976 // Identifiant du cerfa
922 vpihour 3277 $valF['cerfa'] = $this->getIdCerfa();
923 vpihour 3005 //On vérifie que ce type détaille de dossier d'autorisation a un CERFA
924 vpihour 3277 if ( $valF['cerfa'] !== "" && is_numeric($valF['cerfa'])){
925 vpihour 3005 // Ajout des données techniques
926 vpihour 3277 if($this->DTDA->ajouter($valF, $db, $DEBUG) === false) {
927 softime 3274 $this->f->addToLog(__METHOD__."() : ERROR - Impossible d'ajouter les données techniques du dossier d'autorisation.", DEBUG_MODE);
928 vpihour 3005 return false;
929     }
930 nhaye 2976 }
931 vpihour 3005 else {
932     //On indique que le dossier d'autorisation n'a pas de données techniques
933     $this->DTDA = null;
934     //Aucun CERFA n'est paramétré pour ce type détaillé de dossier d'autorisation
935 softime 3274 $this->f->addToLog(__METHOD__."() : ERROR - Aucun CERFA paramétré.", DEBUG_MODE);
936 vpihour 3005 return -1;
937     }
938 softime 3274
939     //
940     return true;
941 vpihour 1374 }
942    
943     /**
944 vpihour 2038 * Ajout des liens demandeurs / dossier d'autorisation s'ils n'y sont pas déjà
945 nhaye 907 **/
946 nhaye 920 function ajoutLiensDossierAutorisation($id, &$db, $val, $DEBUG) {
947     // Création des liens entre le dossier autorisation et les demandeurs
948 nhaye 907 include '../sql/pgsql/demande.form.inc.php';
949 nhaye 920 require_once '../obj/lien_dossier_autorisation_demandeur.class.php';
950     $ldad = new lien_dossier_autorisation_demandeur("]",$db,$DEBUG);
951     // Recupération des demandeurs liés à la demande
952 vpihour 2038 $sql = str_replace("<demande>",$this->valF['demande'],$sql_lien_demande_demandeur.
953     " AND lien_demande_demandeur.demandeur NOT IN (
954     SELECT lien_dossier_autorisation_demandeur.demandeur
955     FROM ".DB_PREFIXE."lien_dossier_autorisation_demandeur
956     WHERE lien_dossier_autorisation_demandeur.dossier_autorisation =
957     '".$this->valF['dossier_autorisation']."'
958     )");
959 nhaye 920 $res = $db->query($sql);
960 vpihour 1777 $this->f->addToLog("ajoutLiensDossierAutorisation() : db->query(\"".$sql."\");", VERBOSE_MODE);
961 softime 3274 if ($this->f->isDatabaseError($res, true)) {
962     return false;
963 vpihour 1777 }
964 nhaye 920 while($row = &$res->fetchRow(DB_FETCHMODE_ASSOC)) {
965     $row['lien_dossier_autorisation_demandeur'] = NULL;
966     $row['dossier_autorisation'] = $this->valF['dossier_autorisation'];
967 softime 3274 if ($ldad->ajouter($row, $db, $DEBUG) === false) {
968     $this->f->addToLog(__METHOD__."() : ERROR - Impossible d'ajouter le lien entre le demandeurs et le dossier d'autorisation.", DEBUG_MODE);
969     return false;
970     }
971 nhaye 920 }
972 softime 3274
973     //
974     return true;
975 nhaye 920 }
976    
977     /**
978     * Ajout des liens demandeurs / dossier d'autorisation
979     **/
980     function ajoutLiensDossierInstruction($id, &$db, $val, $DEBUG) {
981     // Création des liens entre le dossier instruction et les demandeurs
982     include '../sql/pgsql/demande.form.inc.php';
983     require_once '../obj/lien_dossier_demandeur.class.php';
984     $ldd = new lien_dossier_demandeur("]",$db,$DEBUG);
985     // Recupération des demandeurs liés à la demande
986     $sql = str_replace("<demande>",$this->valF['demande'],$sql_lien_demande_demandeur);
987     $res = $db->query($sql);
988 vpihour 1777 $this->f->addToLog("ajoutLiensDossierInstruction() : db->query(\"".$sql."\");", VERBOSE_MODE);
989 softime 3274 if ($this->f->isDatabaseError($res, true)) {
990     return false;
991 vpihour 1777 }
992 nhaye 920 while($row = &$res->fetchRow(DB_FETCHMODE_ASSOC)) {
993     $row['lien_dossier_demandeur'] = NULL;
994     $row['dossier'] = $this->valF['dossier_instruction'];
995 softime 3274 if ($ldd->ajouter($row, $db, $DEBUG) === false) {
996     $this->f->addToLog(__METHOD__."() : ERROR - Impossible d'ajouter le lien entre le demandeurs et le dossier d'instruction.", DEBUG_MODE);
997     return false;
998     }
999 nhaye 920 }
1000 softime 3274
1001     //
1002     return true;
1003 nhaye 920 }
1004    
1005 fmichon 1005 /*
1006     * Récupère l'identifiant d'un arrondissement à partir d'un code postal
1007     */
1008     function getArrondissement($terrain_adresse_code_postal){
1009    
1010     $arrondissement = NULL;
1011    
1012     $sql = "SELECT
1013     arrondissement
1014     FROM
1015     ".DB_PREFIXE."arrondissement
1016     WHERE
1017     code_postal = '$terrain_adresse_code_postal' ";
1018     $this->addToLog("demande.class.php : ".$sql." execute <br>", EXTRA_VERBOSE_MODE);
1019    
1020     $res = $this->db->query($sql);
1021 vpihour 1777 $this->f->addToLog("getArrondissement() : db->query(\"".$sql."\")", VERBOSE_MODE);
1022 softime 3274 $this->f->isDatabaseError($res);
1023 fmichon 1005
1024     if( $res->numrows() > 0 ) {
1025    
1026     $row=& $res->fetchRow(DB_FETCHMODE_ASSOC);
1027     $arrondissement = $row['arrondissement'];
1028     }
1029    
1030     return $arrondissement;
1031     }
1032    
1033     /*
1034     * Récupère l'évènement lié à un type de demande
1035     */
1036     function getEvenement($demande_type){
1037    
1038 nhaye 2977 $evenement = null;
1039 fmichon 1005
1040     $sql =
1041     "SELECT
1042     evenement
1043     FROM
1044     ".DB_PREFIXE."demande_type
1045     WHERE
1046     demande_type = $demande_type";
1047    
1048     $res = $this->db->query($sql);
1049 vpihour 1777 $this->f->addToLog("getEvenement() : db->query(\"".$sql."\")", VERBOSE_MODE);
1050 softime 3274 $this->f->isDatabaseError($res);
1051 fmichon 1005
1052     if ( $res->numrows() > 0 ){
1053    
1054     $row=& $res->fetchRow(DB_FETCHMODE_ASSOC);
1055     $evenement = $row['evenement'];
1056     }
1057    
1058     return $evenement;
1059     }
1060    
1061 vpihour 2450
1062 softime 2112
1063     /**
1064     * Retourne le libellé du dossier d'autorisation
1065     * @param string $dossier_autorisation Identifiant du dossier d'autorisation
1066     * @return string Libellé dossier d'autorisation
1067     */
1068     function get_dossier_autorisation_libelle($dossier_autorisation) {
1069    
1070     $dossier_autorisation_libelle = "";
1071    
1072     // Requête SQL
1073     $sql = "SELECT
1074     dossier_autorisation_libelle
1075     FROM
1076     ".DB_PREFIXE."dossier_autorisation
1077     WHERE
1078     dossier_autorisation = '$dossier_autorisation'";
1079    
1080     $dossier_autorisation_libelle = $this->db->getOne($sql);
1081     $this->addToLog("get_dossier_autorisation_libelle(): db->getOne(\"".$sql."\")", VERBOSE_MODE);
1082 softime 3274 $this->f->isDatabaseError($dossier_autorisation_libelle);
1083 softime 2112
1084     // Retourne le résultat
1085     return $dossier_autorisation_libelle;
1086     }
1087    
1088     /**
1089 nhaye 2977 * Retourne le libellé du dossier d'autorisation.
1090     * @param string $dossier Identifiant du dossier d'autorisation
1091     *
1092 softime 2112 * @return string Libellé dossier d'autorisation
1093     */
1094     function get_dossier_libelle($dossier) {
1095    
1096     $dossier_libelle = "";
1097    
1098     // Requête SQL
1099     $sql = "SELECT
1100     dossier_libelle
1101     FROM
1102     ".DB_PREFIXE."dossier
1103     WHERE
1104     dossier = '$dossier'";
1105    
1106 nhaye 2977 $dossier_libelle = $this->db->getOne($sql);
1107 softime 2112 $this->addToLog("get_dossier_libelle(): db->getOne(\"".$sql."\")", VERBOSE_MODE);
1108 softime 3274 $this->f->isDatabaseError($dossier_libelle);
1109 softime 2112
1110     // Retourne le résultat
1111     return $dossier_libelle;
1112     }
1113 fmichon 1005
1114 nhaye 920 /**
1115     * Ajout des dossiers
1116     **/
1117     function triggerAjouter($id, &$db, $val, $DEBUG){
1118 softime 2071
1119 nhaye 920 include '../sql/pgsql/demande.form.inc.php';
1120 softime 2071
1121 nhaye 2976 if($this->valF["demande_type"] != null) {
1122     $res = $db->query(
1123     str_replace(
1124     '<idx>',
1125     $this->valF['demande_type'],
1126     $sql_demande_type_details_by_id
1127     )
1128     );
1129     $this->f->addToLog(
1130     "triggerAjouter() : db->query(\"".
1131     str_replace(
1132     '<idx>',
1133     $this->valF['demande_type'],
1134     $sql_demande_type_details_by_id
1135     )."\")",
1136     VERBOSE_MODE
1137     );
1138 softime 3274 if ($this->f->isDatabaseError($res, true)) {
1139     return false;
1140 vpihour 1777 }
1141 nhaye 1808 // Attribut permettant de définir si un dossier a été créé
1142 nhaye 2976 $this->ajoutDI = false;
1143 nhaye 920 $dossier_type = $res->fetchRow(DB_FETCHMODE_ASSOC);
1144 nhaye 907 // Création du dossier_autorisation
1145 nhaye 1054 if($this->valF['dossier_autorisation'] == "") {
1146 nhaye 2976 if($this->ajoutDossierAutorisation($id, $db, $val, $DEBUG) === false) {
1147     $this -> addToMessage(
1148     _("Erreur lors de l'enregistrement de la demande.")." ".
1149     _("Contactez votre administrateur.")
1150     );
1151     $this->correct = false;
1152     return false;
1153     }
1154     $this -> addToMessage(
1155     _("Creation du dossier d'autorisation no").
1156     $this->get_dossier_autorisation_libelle(
1157     $this->valF['dossier_autorisation']
1158     )
1159     );
1160 nhaye 2110 //Ajout des données techniques au dossier d'autorisation
1161 nhaye 2976 if($this->ajoutDonneesTechniquesDA($id, $db, $val, $DEBUG) === false) {
1162     $this -> addToMessage(
1163     _("Erreur lors de l'enregistrement de la demande.")." ".
1164     _("Contactez votre administrateur.")
1165     );
1166     $this->correct = false;
1167     return false;
1168     }
1169 nhaye 2977 } else {
1170     $sqlIdDTDA = "SELECT donnees_techniques
1171     FROM ".DB_PREFIXE."donnees_techniques
1172     WHERE dossier_autorisation='".
1173     $this->valF['dossier_autorisation']."'";
1174     $idDTDA = $this->db->getOne($sqlIdDTDA);
1175     $this->addToLog(
1176     "triggerAjouter(): db->getOne(\"".$sqlIdDTDA."\")",
1177     VERBOSE_MODE
1178     );
1179 softime 3274 if ($this->f->isDatabaseError($idDTDA, true)) {
1180     return false;
1181     }
1182 vpihour 3005
1183     $this->DTDA = null;
1184 vpihour 3088 if ($idDTDA!=="" && is_numeric($idDTDA)){
1185 vpihour 3005 require_once '../obj/donnees_techniques.class.php';
1186     $this->DTDA = new donnees_techniques(
1187     $idDTDA,
1188     $db,
1189     $DEBUG
1190     );
1191     $this->DTDA->setValFFromVal();
1192     }
1193 nhaye 907 }
1194 nhaye 2976 // Enregistrement du numéro dossier existant
1195     // (il sera écrasé si un DI est créé)
1196 nhaye 1808 if ($this->getParameter("idx_dossier") != "") {
1197     $this->valF['dossier_instruction'] = $this->getParameter("idx_dossier");
1198     }
1199 nhaye 920 // Création du dossier d'instruction
1200 nhaye 2976 if($dossier_type['dossier_instruction_type'] != null) {
1201     if($this->ajoutDossierInstruction(
1202     $id,
1203     $db,
1204     $val,
1205     $DEBUG,
1206     $dossier_type['dossier_instruction_type']
1207     ) === false ) {
1208     $this -> addToMessage(
1209     _("Erreur lors de l'enregistrement de la demande.")." ".
1210     _("Contactez votre administrateur.")
1211     );
1212     $this->correct = false;
1213     return false;
1214     }
1215     $this -> addToMessage(
1216     _("Creation du dossier d'instruction no").
1217     $this->get_dossier_libelle($this->valF['dossier_instruction'])
1218     );
1219 nhaye 1808 // Attribut permettant de définir si un dossier a été créé.
1220 nhaye 2976 $this->ajoutDI = true;
1221 nhaye 907 }
1222 softime 2071
1223     // Si le dossier_instruction existe
1224     if (isset($this->valF['dossier_instruction']) && $this->valF['dossier_instruction'] !== "" ) {
1225 softime 2369
1226 softime 2071 // Récupère les informations nécessaire pour créer le répertoire de numérisation
1227     $getInfosForFoldername = $this->getInfosForFoldername($this->valF['dossier_instruction']);
1228 softime 2369
1229 softime 2071 // Création du répertoire pour la numérisation
1230 softime 2369 $createFolder = $this->createFolder($getInfosForFoldername['dossier_autorisation'], $getInfosForFoldername['code'], $getInfosForFoldername['version']);
1231    
1232     // Si la création a échouée
1233     if ($createFolder === false) {
1234    
1235     // Annule la validation
1236 softime 2071 $this->correct = false;
1237     // arrête le traitement entier
1238 softime 3274 $this->f->addToLog(__METHOD__."() : ERROR - Création du répertoire impossible.", DEBUG_MODE);
1239 softime 2071 return false;
1240 softime 2369
1241     //
1242     } else {
1243    
1244     //
1245     $this->addToLog("createFolder() : Success", VERBOSE_MODE);
1246 softime 2071 }
1247     }
1248 fmichon 1005
1249     /*Ajout de l'arrondissement à partir du code postal*/
1250     if ( !is_null($this->valF["terrain_adresse_code_postal"]) && is_numeric($this->valF["terrain_adresse_code_postal"]) ){
1251    
1252     $this->valF["arrondissement"] = $this->getArrondissement($this->valF["terrain_adresse_code_postal"]);
1253     }
1254 nhaye 907 }
1255 softime 3274
1256     //
1257     return true;
1258 nhaye 907 }
1259    
1260     /**
1261 nhaye 828 * Ajout des délégataires et pétitionnaires
1262 nhaye 807 **/
1263 nhaye 828 function triggerAjouterApres($id, &$db, $val, $DEBUG){
1264 softime 2071
1265 softime 3274 if ($this->insertLinkDemandeDemandeur($db, $DEBUG) == false) {
1266     return false;
1267     }
1268 fmichon 1005
1269 nhaye 920 // Ajout des lliens entre dossier_autorisation et demandeur
1270 vpihour 2038 if(!empty($this->valF['dossier_autorisation'])) {
1271 softime 3274 if ($this->ajoutLiensDossierAutorisation($id, $db, $val, $DEBUG) == false) {
1272     return false;
1273     }
1274 nhaye 920 }
1275     // Ajout des lliens entre dossier et demandeur
1276 nhaye 1808 if($this->ajoutDI === TRUE) {
1277 softime 3274 if ($this->ajoutLiensDossierInstruction($id, $db, $val, $DEBUG) == false) {
1278     return false;
1279     }
1280 nhaye 920 }
1281 nhaye 1246
1282 nhaye 2110 // Duplication des lots (et leurs données techniques) et
1283     // liaison au nouveau dossier_d'instruction
1284 nhaye 1246 if(!empty($this->valF['dossier_autorisation']) AND $val['dossier_autorisation'] != "" ) {
1285     $this->lienLotDossierInstruction($id, $db, $val, $DEBUG);
1286     }
1287 nmeucci 2889
1288     /*Création du lien de téléchargement de récépissé de demande*/
1289     if ( $this->valF['demande_type'] != "" && is_numeric($this->valF['demande_type'])
1290     && isset($this->valF['dossier_instruction']) && $this->valF['dossier_instruction'] !== "" ){
1291    
1292     /*Récupérer l'événement lié à ce type de demande*/
1293     $evenement = $this->getEvenement($this->valF['demande_type']);
1294    
1295     /*Récupération de la lettre type de l'événement*/
1296     $lettretype = $this->f->getLettreType($evenement);
1297    
1298     /*Création d'une nouvelle instruction avec cet événement*/
1299     /*Données*/
1300     $valInstr['instruction']=NULL;
1301    
1302     $valInstr['destinataire']=$this->valF['dossier_instruction'];
1303     $valInstr['dossier']=$this->valF['dossier_instruction'];
1304     // Récupère la date de la demande
1305     $valInstr['date_evenement']=$this->dateDBToForm($this->valF['date_demande']);
1306     $valInstr['evenement']=$evenement;
1307     $valInstr['lettretype']=$lettretype;
1308     $valInstr['complement_om_html']="";
1309     $valInstr['complement2_om_html']="";
1310    
1311     $valInstr['action']="initialisation";
1312     $valInstr['delai']="2";
1313     $valInstr['etat']="notifier";
1314     $valInstr['accord_tacite']="Oui";
1315     $valInstr['delai_notification']="1";
1316     $valInstr['archive_delai']="0";
1317     $valInstr['archive_date_complet']=NULL;
1318     $valInstr['archive_date_dernier_depot']=NULL;
1319     $valInstr['archive_date_rejet']=NULL;
1320     $valInstr['archive_date_limite']=NULL;
1321     $valInstr['archive_date_notification_delai']=NULL;
1322     $valInstr['archive_accord_tacite']="Non";
1323     $valInstr['archive_etat']="initialiser";
1324     $valInstr['archive_date_decision']=NULL;
1325     $valInstr['archive_avis']="";
1326     $valInstr['archive_date_validite']=NULL;
1327     $valInstr['archive_date_achevement']=NULL;
1328     $valInstr['archive_date_chantier']=NULL;
1329     $valInstr['archive_date_conformite']=NULL;
1330     $valInstr['archive_incompletude']=NULL;
1331 nhaye 3059 $valInstr['archive_incomplet_notifie']=NULL;
1332 nmeucci 2889 $valInstr['archive_evenement_suivant_tacite']="";
1333     $valInstr['archive_evenement_suivant_tacite_incompletude']=NULL;
1334     $valInstr['archive_etat_pendant_incompletude']=NULL;
1335     $valInstr['archive_date_limite_incompletude']=NULL;
1336     $valInstr['archive_delai_incompletude']=NULL;
1337     $valInstr['archive_autorite_competente']=NULL;
1338     $valInstr['complement3_om_html']="";
1339     $valInstr['complement4_om_html']="";
1340     $valInstr['complement5_om_html']="";
1341     $valInstr['complement6_om_html']="";
1342     $valInstr['complement7_om_html']="";
1343     $valInstr['complement8_om_html']="";
1344     $valInstr['complement9_om_html']="";
1345     $valInstr['complement10_om_html']="";
1346     $valInstr['complement11_om_html']="";
1347     $valInstr['complement12_om_html']="";
1348     $valInstr['complement13_om_html']="";
1349     $valInstr['complement14_om_html']="";
1350     $valInstr['complement15_om_html']="";
1351     $valInstr['avis_decision']=NULL;
1352     $valInstr['date_finalisation_courrier']=NULL;
1353     $valInstr['date_envoi_signature']=NULL;
1354     $valInstr['date_retour_signature']=NULL;
1355     $valInstr['date_envoi_rar']=NULL;
1356     $valInstr['date_retour_rar']=NULL;
1357     $valInstr['date_envoi_controle_legalite']=NULL;
1358     $valInstr['date_retour_controle_legalite']=NULL;
1359     $valInstr['signataire_arrete']=NULL;
1360     $valInstr['numero_arrete']=NULL;
1361     $valInstr['code_barres']=NULL;
1362     $valInstr['om_fichier_instruction']=NULL;
1363     $valInstr['om_final_instruction']=NULL;
1364     $valInstr['document_numerise']=NULL;
1365     $valInstr['autorite_competente']=NULL;
1366     $valInstr['duree_validite_parametrage']="0";
1367     $valInstr['duree_validite']="0";
1368    
1369     //Récupération des champs archive si cette demande a créée un dossier
1370     //d'instruction mais pas un P0
1371     if (!is_null($this->valF['dossier_instruction']) &&
1372     $this->valF['dossier_instruction'] !== "" ){
1373    
1374     //Requête
1375     $sql = "SELECT dossier_instruction_type.code
1376     FROM ".DB_PREFIXE."demande_type
1377     LEFT JOIN ".DB_PREFIXE."dossier_instruction_type
1378     ON demande_type.dossier_instruction_type = dossier_instruction_type.dossier_instruction_type
1379     WHERE demande_type.demande_type = ".$this->valF['demande_type'];
1380     $res = $db->getOne($sql);
1381     $this->addToLog("triggerajouter(): db->getOne(\"".$sql."\");", VERBOSE_MODE);
1382 softime 3274 if ($this->f->isDatabaseError($res, true)) {
1383     return false;
1384 nmeucci 2889 }
1385    
1386     //On vérifie que ce n'est pas un P0
1387     if ( strcmp($res, "P") !== 0 ){
1388    
1389     $res = $this->getArchiveInstruction($this->valF['dossier_instruction']);
1390 softime 3274
1391     if ($res == false) {
1392     return false;
1393     }
1394 nmeucci 2889
1395     if (isset($res['archive_delai'])) {
1396     $valInstr['archive_delai']=$res["archive_delai"];
1397     }
1398     if (isset($res['archive_date_complet'])) {
1399     $valInstr['archive_date_complet']=$res["archive_date_complet"];
1400     }
1401     if (isset($res['archive_date_dernier_depot'])) {
1402     $valInstr['archive_date_dernier_depot']=$res["archive_date_dernier_depot"];
1403     }
1404     if (isset($res['archive_date_rejet'])) {
1405     $valInstr['archive_date_rejet']=$res["archive_date_rejet"];
1406     }
1407     if (isset($res['archive_date_limite'])) {
1408     $valInstr['archive_date_limite']=$res["archive_date_limite"];
1409     }
1410     if (isset($res['archive_date_notification_delai'])) {
1411     $valInstr['archive_date_notification_delai']=$res["archive_date_notification_delai"];
1412     }
1413     if (isset($res['archive_accord_tacite'])) {
1414     $valInstr['archive_accord_tacite']=$res["archive_accord_tacite"];
1415     }
1416     if (isset($res['archive_etat'])) {
1417     $valInstr['archive_etat']=$res["archive_etat"];
1418     }
1419     if (isset($res['archive_date_decision'])) {
1420     $valInstr['archive_date_decision']=$res["archive_date_decision"];
1421     }
1422     if (isset($res['archive_avis'])) {
1423     $valInstr['archive_avis']=$res["archive_avis"];
1424     }
1425     if (isset($res['archive_date_validite'])) {
1426     $valInstr['archive_date_validite']=$res["archive_date_validite"];
1427     }
1428     if (isset($res['archive_date_achevement'])) {
1429     $valInstr['archive_date_achevement']=$res["archive_date_achevement"];
1430     }
1431     if (isset($res['archive_date_chantier'])) {
1432     $valInstr['archive_date_chantier']=$res["archive_date_chantier"];
1433     }
1434     if (isset($res['archive_date_conformite'])) {
1435     $valInstr['archive_date_conformite']=$res["archive_date_conformite"];
1436     }
1437     if (isset($res['archive_incompletude'])) {
1438     $valInstr['archive_incompletude']=$res["archive_incompletude"];
1439     }
1440 nhaye 3059 if (isset($res['archive_incomplet_notifie'])) {
1441     $valInstr['archive_incomplet_notifie']=$res["archive_incomplet_notifie"];
1442     }
1443 nmeucci 2889 if (isset($res['archive_evenement_suivant_tacite'])) {
1444     $valInstr['archive_evenement_suivant_tacite']=$res["archive_evenement_suivant_tacite"];
1445     }
1446     if (isset($res['archive_evenement_suivant_tacite_incompletude'])) {
1447     $valInstr['archive_evenement_suivant_tacite_incompletude']=$res["archive_evenement_suivant_tacite_incompletude"];
1448     }
1449     if (isset($res['archive_etat_pendant_incompletude'])) {
1450     $valInstr['archive_etat_pendant_incompletude']=$res["archive_etat_pendant_incompletude"];
1451     }
1452     if (isset($res['archive_date_limite_incompletude'])) {
1453     $valInstr['archive_date_limite_incompletude']=$res["archive_date_limite_incompletude"];
1454     }
1455     if (isset($res['archive_delai_incompletude'])) {
1456     $valInstr['archive_delai_incompletude']=$res["archive_delai_incompletude"];
1457     }
1458     if (isset($res['archive_autorite_competente'])) {
1459     $valInstr['archive_autorite_competente']=$res["archive_autorite_competente"];
1460     }
1461     }
1462     }
1463    
1464     /*Fichier requis*/
1465     require_once '../obj/instruction.class.php';
1466    
1467     /*Création d'un nouveau dossier*/
1468     $instruction = new instruction("]",$db,$DEBUG);
1469     $instruction->valF = "";
1470 softime 3274 if ($instruction->ajouter($valInstr, $db, $DEBUG) === false) {
1471     $this->f->addToLog(__METHOD__."() : ERROR - Impossible d'ajouter l'instruction.", DEBUG_MODE);
1472     return false;
1473     }
1474 nmeucci 2889
1475     //Finalisation du document
1476     $_GET['obj']='instruction';
1477     $_GET['idx']=$instruction->valF[$instruction->clePrimaire];
1478     $instruction_final = new instruction($_GET['idx'],$db,$DEBUG);
1479     if($instruction_final->getVal('lettretype') != "") {
1480     $res = $instruction_final->finaliser('', 1, '', '');
1481     }
1482    
1483     /*Si la création de l'instruction a réussie*/
1484     if ( $instruction->valF['instruction'] != "" ){
1485 softime 3054
1486     // Mise à jour de la demande
1487     $this->valF['instruction_recepisse'] = $instruction->valF['instruction'];
1488     $this->valF['date_demande'] = $this->dateDBToForm($this->valF['date_demande']);
1489     $demande_instance = new demande($this->valF['demande'], $db, $DEBUG);
1490     $demande_instance->modifier($this->valF, $db, $DEBUG);
1491 nmeucci 2889
1492     /*Affichage du récépissé de la demande*/
1493 softime 3356 $href = ( isset($res['pdf']) && $instruction->valF['om_final_instruction']) ? $res['pdf'] : "../scr/form.php?obj=demande&action=100&idx=".$this->valF['demande'];
1494 nmeucci 2889 $this -> addToMessage("<br/><a
1495     class='lien'
1496 softime 3356 href='".$href."'
1497 nmeucci 2889 target='_blank'>
1498     <span
1499     class=\"om-icon om-icon-16 om-icon-fix pdf-16\"
1500     title=\""._("Telecharger le recepisse de la demande")."\">".
1501     _("Telecharger le recepisse de la demande").
1502     "</span>
1503     &nbsp;&nbsp;&nbsp;&nbsp;".
1504     _("Telecharger le recepisse de la demande")."
1505     </a><br/>");
1506     }
1507     /*Sinon affiche un message d'erreur*/
1508     else {
1509    
1510     $this -> addToMessage(_("Une erreur s'est produite lors de la creation du recepisse"));
1511     }
1512     }
1513 softime 3274
1514     //
1515     return true;
1516 nhaye 828 }
1517 vpihour 1058
1518     /*Ajout du lien demande / demandeur(s)*/
1519 nhaye 828 function triggerModifierApres($id, &$db, $val, $DEBUG){
1520 nhaye 1039 $this->listeDemandeur("demande",$this->val[array_search('demande', $this->champs)]);
1521 softime 3274 if ($this->insertLinkDemandeDemandeur($db, $DEBUG) == false) {
1522     return false;
1523     }
1524 nhaye 838 $this->valIdDemandeur=$this->postedIdDemandeur;
1525 nhaye 828
1526 softime 3274 //
1527     return true;
1528 nhaye 828 }
1529    
1530     /**
1531 nhaye 1246 * Gestion des liens entre les lots du DA et le nouveau dossier
1532     **/
1533     function lienLotDossierInstruction($id, $db, $val, $DEBUG) {
1534     require_once ("../obj/lot.class.php");
1535     $lot = new lot("]", $db, $DEBUG);
1536     require_once ("../obj/lien_lot_demandeur.class.php");
1537     $lld = new lien_lot_demandeur("]", $db, $DEBUG);
1538    
1539    
1540     $sqlLots = "SELECT * FROM ".DB_PREFIXE."lot
1541     WHERE dossier_autorisation = '".$this->valF['dossier_autorisation']."'";
1542     $resLot = $db -> query($sqlLots);
1543     $this->f->addToLog("db->query(\"".$sqlLots."\");", VERBOSE_MODE);
1544     $this->f->isDatabaseError($resLot);
1545     while ($rowLot=& $resLot->fetchRow(DB_FETCHMODE_ASSOC)){
1546     // Insertion du nouveau lot
1547     $valLot['lot'] = "";
1548     $valLot['libelle'] = $rowLot['libelle'];
1549 nhaye 2976 $valLot['dossier_autorisation'] = null;
1550 nhaye 2082 $valLot['dossier'] = $this->valF['dossier_instruction'];
1551 nhaye 1246 $lot -> ajouter($valLot, $db, $DEBUG);
1552 nhaye 1247
1553 nhaye 1246 //Insertion des liens entre dossier et les lots
1554     $sqlDemandeurs = "SELECT * FROM ".DB_PREFIXE."lien_lot_demandeur
1555     WHERE lot = ".$rowLot['lot'];
1556     $res = $db -> query($sqlDemandeurs);
1557 nhaye 2976 $this->f->addToLog(
1558     "lienLotDossierInstruction() : db->query(\"".$sqlDemandeurs."\");",
1559     VERBOSE_MODE
1560     );
1561 softime 3274 if ($this->f->isDatabaseError($res, true)) {
1562     return false;
1563 vpihour 1777 }
1564 nhaye 1246
1565     while ($row=& $res->fetchRow(DB_FETCHMODE_ASSOC)){
1566     $valLld["lien_lot_demandeur"] = "";
1567     $valLld["lot"]=$lot->valF['lot'];
1568     $valLld["demandeur"] = $row['demandeur'];
1569     $valLld["petitionnaire_principal"] = $row['petitionnaire_principal'];
1570 softime 3274 if ($lld->ajouter($valLld, $db, $DEBUG) === false) {
1571     $this->f->addToLog(__METHOD__."() : ERROR - Impossible d'ajouter le lien entre le lot et le dossier d'instruction.", DEBUG_MODE);
1572     return false;
1573     }
1574 nhaye 1246 }
1575 nhaye 2110
1576     // Récupération des données techniques du nouveau lots
1577 nhaye 2976 if($this->ajoutDonneesTechniquesLots(
1578     $id,
1579     $db,
1580     $val,
1581     $DEBUG,
1582     $rowLot['lot'],
1583     $lot->valF['lot']) === false) {
1584     $this -> addToMessage(
1585     _("Erreur lors de l'enregistrement de la demande.")." ".
1586     _("Contactez votre administrateur.")
1587     );
1588     $this->correct = false;
1589     return false;
1590     }
1591 nhaye 2110
1592 nhaye 1246 }
1593 softime 3274
1594     //
1595     return true;
1596 nhaye 1246 }
1597    
1598 nhaye 2110
1599 nhaye 1246 /**
1600 nhaye 2976 * Méthode permettant d'ajouter les données techniques d'un lot.
1601     *
1602     * @param integer $id identifiant de la demande
1603     * @param database &$db handler de la base de donnée
1604     * @param array $val tableau de valeurs postées via le formulaire
1605     * @param boolean $DEBUG debug
1606     * @param integer $lotInit identifiant de lot initial
1607     * @param integer $lotDest identifiant du lot qui va recevoir les données
1608     *
1609     * @return boolean false si erreur
1610 nhaye 2110 */
1611 nhaye 2976 function ajoutDonneesTechniquesLots($id, &$db, $val, $DEBUG, $lotInit, $lotDest) {
1612     // Requete permettant de recupérer les données techniques du lot passé
1613     // en paramètre ($lotInit)
1614     $sql_get_dt = "
1615     SELECT donnees_techniques
1616     FROM ".DB_PREFIXE."donnees_techniques
1617     WHERE lot=".$lotInit;
1618 nhaye 2110 $id_dt = $this->f->db->getOne($sql_get_dt);
1619 nhaye 2976 // Si des données techniques sont liées au lots on les "copie" et
1620     // on les lies au lot passé en paramètre (lotDest)
1621     if(isset($id_dt) and !empty($id_dt)) {
1622     $this->f->addToLog(
1623     "ajoutDonneesTechniquesLots() : db->getone(\"".$sql_get_dt."\");",
1624     VERBOSE_MODE
1625     );
1626 softime 3274 if ($this->f->isDatabaseError($id_dt, true)){
1627 nhaye 2110 return false;
1628     }
1629     require_once '../obj/donnees_techniques.class.php';
1630 nhaye 2976 $donnees_techniques = new donnees_techniques($id_dt, $db, $DEBUG);
1631 nhaye 2110
1632     // Récupération des données dans le tableau des valeurs à insérer
1633     foreach($donnees_techniques->champs as $value) {
1634     $val[$value] = $donnees_techniques->getVal($value);
1635     }
1636     // Modification du lien vers le nouveau lot
1637     $val["lot"] = $lotDest;
1638 nhaye 2976 // Identifiant du cerfa
1639     $val['cerfa'] = $this->getIdCerfa();
1640 nhaye 2110 // Ajout des données techniques
1641 nhaye 2976 if($donnees_techniques->ajouter($val, $db, $DEBUG) === false) {
1642 softime 3274 $this->f->addToLog(__METHOD__."() : ERROR - Impossible d'ajouter les données techniques du lot.", DEBUG_MODE);
1643 nhaye 2976 return false;
1644     }
1645 nhaye 2110 }
1646 softime 3274
1647     //
1648     return true;
1649 nhaye 2110 }
1650    
1651     /**
1652 vpihour 1058 * Gestion des liens entre la demande et les demandeurs recemment ajoutés
1653 nhaye 828 **/
1654     function insertLinkDemandeDemandeur($db, $DEBUG) {
1655 softime 3274
1656 nhaye 828 //
1657     require_once "../obj/lien_demande_demandeur.class.php";
1658 nhaye 838 // Comparaison de l'id petitionnaire principal
1659     if(isset($this->postedIdDemandeur['petitionnaire_principal']) AND
1660     !empty($this->postedIdDemandeur['petitionnaire_principal']) AND
1661     $this->valIdDemandeur['petitionnaire_principal'] !=
1662     $this->postedIdDemandeur['petitionnaire_principal']) {
1663     // Ajout du nouveau lien
1664 softime 3274 if ($this->addLinkDemandeDemandeur($this->postedIdDemandeur['petitionnaire_principal'], true, $db, $DEBUG) == false) {
1665     //
1666     return false;
1667     }
1668 nhaye 838 if(!empty($this->valIdDemandeur['petitionnaire_principal'])) {
1669 softime 3274 if ($this->deleteLinkDemandeDemandeur($this->valIdDemandeur['petitionnaire_principal'], $db, $DEBUG) == false) {
1670     //
1671     return false;
1672     }
1673 nhaye 807 }
1674 nhaye 828 }
1675 nhaye 838
1676     // Comparaison du delegataire
1677     if(isset($this->postedIdDemandeur['delegataire']) AND
1678     !empty($this->postedIdDemandeur['delegataire']) AND
1679     $this->valIdDemandeur['delegataire'] !=
1680     $this->postedIdDemandeur['delegataire']) {
1681     // Ajout du nouveau lien
1682 softime 3274 if ($this->addLinkDemandeDemandeur($this->postedIdDemandeur['delegataire'], false, $db, $DEBUG) == false) {
1683     //
1684     return false;
1685     }
1686 nhaye 838 if(!empty($this->valIdDemandeur['delegataire'])) {
1687 softime 3274 if ($this->deleteLinkDemandeDemandeur($this->valIdDemandeur['delegataire'], $db, $DEBUG) == false) {
1688     //
1689     return false;
1690     }
1691 nhaye 838 }
1692     }
1693    
1694     // Comparaison des different petitionnaires
1695     if(isset($this->postedIdDemandeur['petitionnaire'])) {
1696     // Suppression des liens non valides
1697     foreach ($this->valIdDemandeur['petitionnaire'] as $petitionnaire) {
1698     if(!in_array($petitionnaire, $this->postedIdDemandeur['petitionnaire'])) {
1699 softime 3274 if ($this->deleteLinkDemandeDemandeur($petitionnaire, $db, $DEBUG) == false) {
1700     //
1701     return false;
1702     }
1703 nhaye 838 }
1704     }
1705     // Ajout des nouveaux liens
1706     foreach ($this->postedIdDemandeur['petitionnaire'] as $petitionnaire) {
1707     if(!in_array($petitionnaire, $this->valIdDemandeur['petitionnaire'])) {
1708 softime 3274 if ($this->addLinkDemandeDemandeur($petitionnaire, false, $db, $DEBUG) == false) {
1709     //
1710     return false;
1711     }
1712 nhaye 838 }
1713     }
1714     }
1715 softime 3274
1716     //
1717     return true;
1718 nhaye 838 }
1719    
1720    
1721     /**
1722     * Fonction permettant d'ajouter un lien
1723     * entre la table demande et demandeur
1724     **/
1725     function addLinkDemandeDemandeur($id, $principal, $db, $DEBUG) {
1726     $lienAjout = new lien_demande_demandeur(
1727     "]",
1728     $db,
1729     $DEBUG);
1730     $lien = array('lien_demande_demandeur' => "",
1731     'petitionnaire_principal' => (($principal)?"t":"f"),
1732     'demande' => $this->valF['demande'],
1733     'demandeur' => $id);
1734 softime 3274 if ($lienAjout->ajouter($lien, $db, $DEBUG) === false) {
1735     $this->f->addToLog(__METHOD__."() : ERROR - Impossible d'ajouter le lien entre la demande et le demandeur.", DEBUG_MODE);
1736     return false;
1737     }
1738    
1739     //
1740     return true;
1741 nhaye 838 }
1742    
1743     /**
1744     * Fonction permettant de supprimer un lien
1745     * entre la table demande et demandeur
1746     **/
1747     function deleteLinkDemandeDemandeur($id, $db, $DEBUG) {
1748     // Suppression
1749     $sql = "DELETE FROM ".DB_PREFIXE."lien_demande_demandeur ".
1750     "WHERE demande=".$this->valF['demande'].
1751     " AND demandeur=".$id;
1752     // Execution de la requete de suppression de l'objet
1753     $res = $db->query($sql);
1754     // Logger
1755 vpihour 1777 $this->f->addToLog("deleteLinkDemandeDemandeur(): db->query(\"".$sql."\");", VERBOSE_MODE);
1756 softime 3274 if ($this->f->isDatabaseError($res, true)){
1757     return false;
1758 vpihour 1777 }
1759 nhaye 838
1760 softime 3274 //
1761     return true;
1762 nhaye 838 }
1763    
1764 vpihour 1058 /*
1765     * Teste si le lien entre une demande et un demandeur existe
1766     * */
1767 nhaye 838 function isLinkDemandeDemandeurExist($idDemandeur) {
1768     $sql = "SELECT count(*)
1769     FROM ".DB_PREFIXE."lien_demande_demandeur
1770     WHERE demande = ".$this->valF['demande'].
1771     "AND demandeur = ".$idDemandeur;
1772     $count = $this->f->db->getOne($sql);
1773 vpihour 1777 $this->f->addToLog("isLinkDemandeDemandeurExist() : db->getone(\"".$sql."\");", VERBOSE_MODE);
1774 softime 3274 $this->f->isDatabaseError($count);
1775 nhaye 838 if ($count === 0) {
1776     return false;
1777 nhaye 828 } else {
1778 nhaye 838 return true;
1779 nhaye 828 }
1780 nhaye 838
1781 nhaye 828 }
1782    
1783     /**
1784     * Methode de recupération des valeurs postées
1785     **/
1786     function getPostedValues() {
1787     // Récupération des demandeurs dans POST
1788 nmeucci 3239 if ($this->f->get_submitted_post_value('petitionnaire_principal') !== null OR
1789     $this->f->get_submitted_post_value('delegataire') !== null OR
1790     $this->f->get_submitted_post_value('petitionnaire') !== null) {
1791     if ($this->f->get_submitted_post_value('petitionnaire_principal') !== null AND
1792     $this->f->get_submitted_post_value('petitionnaire_principal') != '') {
1793     $this->postedIdDemandeur['petitionnaire_principal'] = $this->f->get_submitted_post_value('petitionnaire_principal');
1794 nhaye 807 }
1795 nmeucci 3239 if ($this->f->get_submitted_post_value('delegataire') !== null AND
1796     $this->f->get_submitted_post_value('delegataire') != '') {
1797     $this->postedIdDemandeur['delegataire'] = $this->f->get_submitted_post_value('delegataire');
1798 nhaye 828 }
1799 nmeucci 3239 if ($this->f->get_submitted_post_value('petitionnaire') !== null AND
1800     $this->f->get_submitted_post_value('petitionnaire') != '') {
1801     $this->postedIdDemandeur['petitionnaire'] = $this->f->get_submitted_post_value('petitionnaire');
1802 nhaye 828 }
1803 nhaye 807 }
1804 vpihour 676 }
1805 fmichon 1713
1806 nhaye 828 /**
1807 fmichon 1713 * Méthode permettant de récupérer les id des demandeurs liés à la table
1808     * liée passée en paramètre
1809     *
1810     * @param string $from Table liée : "demande", "dossier", dossier_autorisation"
1811     * @param string $id Identifiant (clé primaire de la table liée en question)
1812     */
1813 nhaye 1039 function listeDemandeur($from, $id) {
1814 nhaye 828 // Récupération des demandeurs de la base
1815 fmichon 1723 $sql = "SELECT demandeur.demandeur,
1816     demandeur.type_demandeur,
1817     lien_".$from."_demandeur.petitionnaire_principal
1818     FROM ".DB_PREFIXE."lien_".$from."_demandeur
1819     INNER JOIN ".DB_PREFIXE."demandeur
1820     ON demandeur.demandeur=lien_".$from."_demandeur.demandeur
1821     WHERE ".$from." = '".$id."'";
1822     $res = $this->f->db->query($sql);
1823     $this->f->addToLog("listeDemandeur(): db->query(\"".$sql."\")", VERBOSE_MODE);
1824 softime 3274 $this->f->isDatabaseError($res);
1825 fmichon 1723 // Stockage du résultat dans un tableau
1826     while ($row=& $res->fetchRow(DB_FETCHMODE_ASSOC)){
1827     if ($row['petitionnaire_principal'] == 't' AND
1828     $row['type_demandeur']=="petitionnaire") {
1829     $this->valIdDemandeur['petitionnaire_principal']=$row['demandeur'];
1830     } elseif ($row['petitionnaire_principal'] == 'f' AND
1831     $row['type_demandeur']=="petitionnaire"){
1832     $this->valIdDemandeur['petitionnaire'][]=$row['demandeur'];
1833     } elseif ($row['type_demandeur']=="delegataire"){
1834     $this->valIdDemandeur['delegataire']=$row['demandeur'];
1835 nhaye 828 }
1836     }
1837     }
1838 nhaye 807
1839 nhaye 1037
1840 nhaye 807 /**
1841 nhaye 1037 * Surcharge du bouton retour afin de retourner sur la recherche de dossiers
1842     * d'instruction existant
1843     */
1844     function retour($premier = 0, $recherche = "", $tricol = "") {
1845    
1846     echo "\n<a class=\"retour\" ";
1847     echo "href=\"";
1848     //
1849     if($this->getParameter("idx_dossier") != "") {
1850     echo "tab.php?";
1851     echo "obj=recherche_dossier";
1852    
1853     } else {
1854     if($this->getParameter("retour")=="form" AND !($this->getParameter("validation")>0 AND $this->getParameter("maj")==2 AND $this->correct)) {
1855     echo "form.php?";
1856     } else {
1857     echo "tab.php?";
1858     }
1859     echo "obj=".get_class($this);
1860     if($this->getParameter("retour")=="form") {
1861     echo "&amp;idx=".$this->getParameter("idx");
1862 softime 2093 echo "&amp;idz=".$this->getParameter("idz");
1863 nhaye 1037 echo "&amp;action=3";
1864     }
1865     }
1866     echo "&amp;premier=".$this->getParameter("premier");
1867     echo "&amp;tricol=".$this->getParameter("tricol");
1868     echo "&amp;recherche=".$this->getParameter("recherche");
1869     echo "&amp;selectioncol=".$this->getParameter("selectioncol");
1870     echo "&amp;advs_id=".$this->getParameter("advs_id");
1871     echo "&amp;valide=".$this->getParameter("valide");
1872     //
1873     echo "\"";
1874     echo ">";
1875     //
1876     echo _("Retour");
1877     //
1878     echo "</a>\n";
1879    
1880     }
1881    
1882    
1883     /**
1884 fmichon 1723 * Cette méthode permet d'afficher des informations spécifiques dans le
1885     * formulaire de l'objet
1886     *
1887     * @param integer $maj Mode de mise à jour
1888 nhaye 807 */
1889     function formSpecificContent($maj) {
1890 fmichon 1723
1891     /**
1892     * Gestion du bloc des demandeurs
1893     */
1894     // Si le mode est (modification ou suppression ou consultation) ET que
1895     // le formulaire n'est pas correct (c'est-à-dire que le formulaire est
1896     // actif)
1897     if (!$this->correct AND $maj != 0) {
1898     // Alors on récupère les demandeurs dans la table lien pour
1899     // affectation des résultats dans this->valIdDemandeur
1900 nhaye 1039 $this->listeDemandeur("demande", $this->val[array_search('demande', $this->champs)]);
1901 nhaye 838 }
1902 fmichon 1723
1903     // Si le mode est (ajout ou modification) ET que le formulaire n'est pas
1904     // correct (c'est-à-dire que le formulaire est actif)
1905     if ($maj < 2 AND !$this->correct) {
1906     // Alors on positionne le marqueur linkable a true qui permet
1907     // d'afficher ou non les actions de gestion des demandeurs
1908 nhaye 838 $linkable = true;
1909     } else {
1910 fmichon 1723 // Sinon on positionne le marqueur linkable a false qui permet
1911     // d'afficher ou non les actions de gestion des demandeurs
1912 nhaye 838 $linkable = false;
1913     }
1914 nhaye 1020
1915 fmichon 1723 // Affichage des demandeurs et des actions
1916 nhaye 807 // Conteneur de la listes des demandeurs
1917 nhaye 1097 echo "<div id=\"liste_demandeur\" class=\"demande_hidden_bloc col_12\">";
1918 nhaye 807 echo "<fieldset class=\"cadre ui-corner-all ui-widget-content\">";
1919     echo " <legend class=\"ui-corner-all ui-widget-content ui-state-active\">"
1920     ._("Petitionnaire")."</legend>";
1921     // Si des demandeurs sont liés à la demande
1922 nhaye 828 require_once "../obj/petitionnaire.class.php";
1923     require_once "../obj/delegataire.class.php";
1924 nhaye 1097 // Affichage du bloc pétitionnaire principal / délégataire
1925     // L'ID DU DIV SUIVANT EST NECESSAIRE AU BON FONCTIONNEMENT DU JS
1926 nhaye 1672 echo "<div id=\"petitionnaire_principal_delegataire\">";
1927 nhaye 1097 // Affichage de la synthèse
1928     if (isset ($this->valIdDemandeur["petitionnaire_principal"]) AND
1929     !empty($this->valIdDemandeur["petitionnaire_principal"])) {
1930     $demandeur = new petitionnaire(
1931     $this->valIdDemandeur["petitionnaire_principal"],
1932     $this->f->db,false);
1933     $demandeur -> afficherSynthese("petitionnaire_principal", $linkable);
1934     $demandeur -> __destruct();
1935     } elseif ( isset ($this->postedIdDemandeur["petitionnaire_principal"]) AND
1936     !empty($this->postedIdDemandeur["petitionnaire_principal"]) ) {
1937     $demandeur = new petitionnaire(
1938     $this->postedIdDemandeur["petitionnaire_principal"],
1939     $this->f->db,false);
1940     $demandeur -> afficherSynthese("petitionnaire_principal", $linkable);
1941     $demandeur -> __destruct();
1942     }
1943     // Si en édition de formulaire
1944     if($maj < 2) {
1945     // Bouton d'ajout du pétitionnaire principal
1946     // L'ID DE L'INPUT SUIVANT EST NECESSAIRE AU BON FONCTIONNEMENT DU JS
1947     echo "<span id=\"add_petitionnaire_principal\"
1948     class=\"om-form-button add-16\">".
1949     _("Saisir le petitionnaire principal").
1950     "</span>";
1951     }
1952     // Bouton d'ajout du delegataire
1953     // L'ID DU DIV ET DE L'INPUT SUIVANT EST NECESSAIRE AU BON FONCTIONNEMENT DU JS
1954     echo "<div id=\"delegataire\">";
1955     // Affichage de la synthèse
1956     if (isset ($this->valIdDemandeur["delegataire"]) AND
1957     !empty($this->valIdDemandeur["delegataire"])) {
1958     $demandeur = new delegataire($this->valIdDemandeur["delegataire"],
1959     $this->f->db,false);
1960     $demandeur -> afficherSynthese("delegataire", $linkable);
1961     $demandeur -> __destruct();
1962     } elseif ( isset ($this->postedIdDemandeur["delegataire"]) AND
1963     !empty($this->postedIdDemandeur["delegataire"]) ) {
1964 nhaye 807
1965 nhaye 1097 $demandeur = new delegataire($this->postedIdDemandeur["delegataire"],
1966     $this->f->db,false);
1967     $demandeur -> afficherSynthese("delegataire", $linkable);
1968     $demandeur -> __destruct();
1969     }
1970     if($maj < 2) {
1971     echo "<span id=\"add_delegataire\"
1972 vpihour 1075 class=\"om-form-button add-16\">".
1973 nmeucci 2846 _("Saisir un autre correspondant").
1974 vpihour 1051 "</span>";
1975 nhaye 1097 }
1976     echo "</div>";
1977 nhaye 1118 echo "<div class=\"both\"></div>";
1978 nhaye 1097 echo "</div>";
1979     // Bloc des pétitionnaires secondaires
1980     // L'ID DU DIV SUIVANT EST NECESSAIRE AU BON FONCTIONNEMENT DU JS
1981 nhaye 1672 echo "<div id=\"listePetitionnaires\">";
1982 fmichon 1005
1983 nhaye 1097 // Affichage de la synthèse
1984     if (isset ($this->valIdDemandeur["petitionnaire"]) AND
1985     !empty($this->valIdDemandeur["petitionnaire"])) {
1986    
1987     foreach ($this->valIdDemandeur["petitionnaire"] as $petitionnaire) {
1988     $demandeur = new petitionnaire($petitionnaire,
1989     $this->f->db,false);
1990     $demandeur -> afficherSynthese("petitionnaire", $linkable);
1991 nhaye 1065 $demandeur -> __destruct();
1992     }
1993    
1994 nhaye 1097 } elseif ( isset ($this->postedIdDemandeur["petitionnaire"]) AND
1995     !empty($this->postedIdDemandeur["petitionnaire"]) ) {
1996     foreach ($this->postedIdDemandeur["petitionnaire"] as $petitionnaire) {
1997     $demandeur = new petitionnaire($petitionnaire,
1998     $this->f->db,false);
1999     $demandeur -> afficherSynthese("petitionnaire", $linkable);
2000     $demandeur -> __destruct();
2001 nhaye 828 }
2002 nhaye 1097 }
2003     if ($maj < 2) {
2004     // L'ID DE L'INPUT SUIVANT EST NECESSAIRE AU BON FONCTIONNEMENT DU JS
2005     echo "<span id=\"add_petitionnaire\"
2006     class=\"om-form-button add-16\">".
2007     _("Ajouter un petitionnaire")
2008     ."</span>";
2009     }
2010     echo "</div>";
2011 nhaye 807 echo "</fieldset>";
2012 softime 2313 // Champ flag permettant de récupérer la valeur de l'option sig pour
2013     // l'utiliser en javascript, notamment lors du chargement de l'interface
2014     // pour les références cadastrales
2015     // XXX Si un widget pour les références cadastrales existait, il n'y
2016     // aurait pas besoin de faire cela
2017     echo "<input id='option_sig' type='hidden' value='".$this->f->getParameter("option_sig")."' name='option_sig'>";
2018 vpihour 2364 echo "</div>";
2019 nhaye 807 }
2020    
2021 nhaye 1097 // {{{
2022    
2023     // getter
2024     function getValIdDemandeur() {
2025     return $this->valIdDemandeur;
2026     }
2027     // setter
2028     function setValIdDemandeur($valIdDemandeur) {
2029     $this->valIdDemandeur = $valIdDemandeur;
2030     }
2031 vpihour 1106
2032     //Supression du lien entre la demandeur et le(s) demandeur(s)
2033     function triggerSupprimer($id, &$db, $val, $DEBUG){
2034    
2035     //Création de la requête
2036     $sql = "DELETE FROM
2037     ".DB_PREFIXE."lien_demande_demandeur
2038     WHERE
2039     demande = $id";
2040    
2041     $res = $this->f->db->query($sql);
2042 vpihour 1777 $this->f->addToLog("triggerSupprimer() : db->query(\"".$sql."\")");
2043 softime 3274 if ($this->f->isDatabaseError($res, true)) {
2044     return false;
2045 vpihour 1777 }
2046 softime 3274
2047     //
2048     return true;
2049 vpihour 1106 }
2050    
2051 nhaye 1097 // }}}
2052 softime 2071
2053    
2054     /**
2055     * Cette fonction permet de récupérer les informations nécessaires
2056     * à la génération du nom du répertoire
2057     * @param string $dossier Identifiant du dossier
2058     * @return array Tableau des résultats
2059     */
2060     private function getInfosForFoldername($dossier) {
2061    
2062     //Requête SQL
2063 softime 2204 $sql = "SELECT dossier.dossier_autorisation, dossier_instruction_type.code, dossier.version
2064 softime 2071 FROM ".DB_PREFIXE."dossier
2065     LEFT JOIN ".DB_PREFIXE."dossier_instruction_type
2066     ON dossier_instruction_type.dossier_instruction_type = dossier.dossier_instruction_type
2067     WHERE dossier.dossier = '".$dossier."'";
2068     $res = $this->f->db->query($sql);
2069     $this->addToLog("getInfosForFoldername() : db->query(".$sql.")", VERBOSE_MODE);
2070     database::isError($res);
2071    
2072     // tableau des résultats
2073     $row = $res->fetchRow(DB_FETCHMODE_ASSOC);
2074 vpihour 2119
2075     //Formatage du numéro de version
2076 vpihour 2131 require_once '../obj/dossier.class.php';
2077     $dossier = new dossier($dossier,$this->db,DEBUG);
2078 softime 2204 $row['version'] = $dossier->getNumeroVersionDossierInstructionType($dossier->getVal('dossier_autorisation'), $dossier->getVal('dossier_instruction_type'), $row['version'], false);
2079 vpihour 2119
2080 softime 2071 // retourne le tableau des résultats
2081     return $row;
2082     }
2083    
2084     /**
2085     * Cette fonction permet la création du répertoire dans le dossier de numérisation
2086     * @param string $dossier_autorisation Identifiant dossier d'autorisation
2087     * @param string $code Type du dossier d'instruction
2088     * @param int $version Numéro de version du dossier
2089     * @return boolean Vrai ou Faux
2090     */
2091     private function createFolder($dossier_autorisation, $code, $version) {
2092    
2093 softime 2369 // Nom du répertoire
2094 softime 2071 $foldername = $dossier_autorisation.".".$code.$version;
2095    
2096 softime 2369 // Vérifie le paramètrage du répertoire de numérisation
2097 softime 2072 if (isset($this->f->config["path_scan"])) {
2098 softime 2369
2099     // Vérifie que le répertoire existe
2100     if (is_dir($this->f->config["path_scan"])) {
2101    
2102     // Répertoire des "à traiter"
2103     $dir = $this->f->config["path_scan"]."Todo/";
2104    
2105     // Si le répertore existe déjà le répertoire n'est pas crée
2106     if (file_exists($dir.$foldername)) {
2107    
2108     //
2109     return true;
2110     }
2111    
2112     // Vérifie que le répêrtoire des "à traiter" existe
2113     if (is_dir($dir)) {
2114    
2115     // Création du répertoire
2116     mkdir($dir.$foldername, 0777);
2117     //
2118     return true;
2119     }
2120    
2121     // Message d'erreur
2122     $this->msg = "";
2123     $this->addToErrors ('', _("Le repertoire Todo n'existe pas.") . " " . _("Veuillez contacter votre administrateur."), "createFolder() : Faillure");
2124     //
2125     return false;
2126    
2127 softime 2072 }
2128 softime 2369
2129     // Message d'erreur
2130     $this->msg = "";
2131     $this->addToErrors ('', _("Le repertoire de numerisation configure n'existe pas.") . " " . _("Veuillez contacter votre administrateur."), "createFolder() : Faillure");
2132     //
2133     return false;
2134    
2135 softime 2071 }
2136    
2137 softime 2369 // Message d'erreur
2138     $this->msg = "";
2139     $this->addToErrors ('', _("Le repertoire de numerisation n'a pas ete configure.") . " " . _("Veuillez contacter votre administrateur."), "createFolder() : Faillure");
2140     //
2141 softime 2071 return false;
2142     }
2143    
2144 softime 2363 /**
2145     * Récupère le champ "qualification" du type de la demande
2146     * @param integer $demande_type Identifiant du type de la demande
2147     * @return boolean
2148     */
2149     function get_qualification($demande_type) {
2150    
2151     // Initialise le résultat
2152     $qualification = "";
2153    
2154     // Si la condition existe
2155 softime 2365 if (is_numeric($demande_type)) {
2156 softime 2363
2157     // Requête SQL
2158     $sql = "SELECT qualification
2159     FROM ".DB_PREFIXE."demande_type
2160     WHERE demande_type = $demande_type";
2161     $qualification = $this->db->getOne($sql);
2162 softime 2365 $this->f->addToLog("get_qualification() : db->getOne(\"".$sql."\")",
2163     VERBOSE_MODE);
2164 softime 2363 $this->f->isDatabaseError($qualification);
2165     }
2166    
2167     // Retourne le résultat
2168     return $qualification;
2169     }
2170    
2171 vpihour 2643 /**
2172     * Récupère les champs archive_* d'une instruction
2173     * @param string $dossier L'identifiant du dossier d'instruction
2174     */
2175     public function getArchiveInstruction($dossierID){
2176    
2177     //On récupère les données du dernier DI accordé
2178     $sql = "SELECT dossier.delai, dossier.accord_tacite, dossier.etat,
2179     dossier.avis_decision,
2180     to_char(dossier.date_complet, 'DD/MM/YYYY') as date_complet,
2181     to_char(dossier.date_dernier_depot, 'DD/MM/YYYY') as date_dernier_depot,
2182     to_char(dossier.date_rejet, 'DD/MM/YYYY') as date_rejet,
2183     to_char(dossier.date_limite, 'DD/MM/YYYY') as date_limite,
2184     to_char(dossier.date_notification_delai, 'DD/MM/YYYY') as date_notification_delai,
2185     to_char(dossier.date_decision, 'DD/MM/YYYY') as date_decision,
2186     to_char(dossier.date_validite, 'DD/MM/YYYY') as date_validite,
2187     to_char(dossier.date_achevement, 'DD/MM/YYYY') as date_achevement,
2188     to_char(dossier.date_chantier, 'DD/MM/YYYY') as date_chantier,
2189     to_char(dossier.date_conformite, 'DD/MM/YYYY') as date_conformite,
2190     dossier.incompletude,
2191     dossier.evenement_suivant_tacite, dossier.evenement_suivant_tacite_incompletude,
2192     dossier.etat_pendant_incompletude,
2193     to_char(dossier.date_limite_incompletude, 'DD/MM/YYYY') as date_limite_incompletude,
2194     dossier.delai_incompletude, dossier.autorite_competente, dossier.duree_validite
2195 nhaye 3059 ,dossier.dossier, dossier.incomplet_notifie
2196 vpihour 2643 FROM ".DB_PREFIXE."dossier
2197     LEFT JOIN ".DB_PREFIXE."avis_decision
2198     ON dossier.avis_decision = avis_decision.avis_decision
2199     WHERE dossier.avis_decision IS NOT NULL AND avis_decision.typeavis = 'F'
2200     AND dossier.dossier_autorisation = (
2201     SELECT dossier_autorisation.dossier_autorisation
2202     FROM ".DB_PREFIXE."dossier_autorisation
2203     LEFT JOIN ".DB_PREFIXE."dossier
2204     ON dossier_autorisation.dossier_autorisation = dossier.dossier_autorisation
2205     WHERE dossier = '".$dossierID."')
2206     ORDER BY dossier.version DESC";
2207    
2208     $res = $this->db->query($sql);
2209     $this->addToLog("updateArchiveInstruction(): db->query(\"".$sql."\");", VERBOSE_MODE);
2210 softime 3274 if ($this->f->isDatabaseError($res, true)) {
2211     return false;
2212 vpihour 2643 }
2213    
2214     //Un des dosssiers d'instruction a été accordé, on récupère ses données
2215     if ( $res->numrows() != 0 ){
2216    
2217     $row=& $res->fetchRow(DB_FETCHMODE_ASSOC);
2218     require_once "../obj/instruction.class.php";
2219     $instruction = new instruction("]",$this->db,DEBUG);
2220    
2221     $instruction->setParameter("maj", 1);
2222     $instruction->updateArchiveData($row);
2223     return $instruction->valF;
2224     }
2225     //Sinon, on prend les données du P0, si ce n'est pas un P0
2226     else {
2227     $sql = "SELECT dossier.delai, dossier.accord_tacite, dossier.etat,
2228     dossier.avis_decision, dossier.date_complet, dossier.date_dernier_depot,
2229     dossier.date_rejet, dossier.date_limite, dossier.date_notification_delai,
2230     dossier.date_decision, dossier.date_validite, dossier.date_achevement,
2231     dossier.date_chantier, dossier.date_conformite, dossier.incompletude,
2232     dossier.evenement_suivant_tacite, dossier.evenement_suivant_tacite_incompletude,
2233     dossier.etat_pendant_incompletude, dossier.date_limite_incompletude,
2234 nhaye 3059 dossier.delai_incompletude, dossier.autorite_competente, dossier.duree_validite,
2235     dossier.dossier, dossier.incomplet_notifie
2236 vpihour 2643 FROM ".DB_PREFIXE."dossier
2237     LEFT JOIN ".DB_PREFIXE."dossier_instruction_type
2238     ON dossier.dossier_instruction_type = dossier_instruction_type.dossier_instruction_type
2239     WHERE dossier.dossier_autorisation = (
2240     SELECT dossier_autorisation.dossier_autorisation
2241     FROM ".DB_PREFIXE."dossier_autorisation
2242     LEFT JOIN ".DB_PREFIXE."dossier
2243     ON dossier_autorisation.dossier_autorisation = dossier.dossier_autorisation
2244 softime 2653 WHERE dossier = '".$dossierID."')
2245 vpihour 2643 AND dossier_instruction_type.code = 'P'
2246     ORDER BY dossier.version DESC";
2247     $res = $this->db->query($sql);
2248     $this->addToLog("updateArchiveInstruction(): db->query(\"".$sql."\");", VERBOSE_MODE);
2249 softime 3274 if ($this->f->isDatabaseError($res, true)) {
2250     return false;
2251 vpihour 2643 }
2252    
2253     //On est pas dans le cas d'un dépôt d'un P0
2254     if ( $res->numrows() != 0 ){
2255     $row=& $res->fetchRow(DB_FETCHMODE_ASSOC);
2256 softime 2653 require_once "../obj/instruction.class.php";
2257 vpihour 2643 $instruction = new instruction("]",$this->db,DEBUG);
2258     $instruction->setParameter("maj", 1);
2259     $instruction->updateArchiveData($row);
2260     return $instruction->valF;
2261     }
2262     }
2263     }
2264 vpihour 3346
2265     /**
2266     * Cette methode permet d'afficher le bouton de validation du formulaire
2267     *
2268     * @param integer $maj Mode de mise a jour
2269     * @return void
2270     */
2271     function bouton($maj) {
2272    
2273     if (!$this->correct
2274     && $this->checkActionAvailability() == true) {
2275     //
2276     switch($maj) {
2277     case 0 :
2278     $bouton = _("Ajouter");
2279     break;
2280     case 1 :
2281     $bouton = _("Modifier");
2282     break;
2283     case 2 :
2284     $bouton = _("Supprimer");
2285     break;
2286     default :
2287     // Actions specifiques
2288     if ($this->get_action_param($maj, "button") != null) {
2289     //
2290     $bouton = $this->get_action_param($maj, "button");
2291     } else {
2292     //
2293     $bouton = _("Valider");
2294     }
2295     break;
2296     }
2297     //
2298     $params = array(
2299     "value" => $bouton,
2300     "name" => "submit",
2301     "onclick"=>"return getDataFieldReferenceCadastrale();",
2302     );
2303     //
2304     $this->f->layout->display_form_button($params);
2305     }
2306    
2307     }
2308 vpihour 632 }// fin classe
2309 fmichon 1005 ?>

Properties

Name Value
svn:keywords Id

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26