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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 3388 - (hide annotations)
Fri Apr 3 14:11:27 2015 UTC (9 years, 10 months ago) by nmeucci
File size: 102376 byte(s)
Correction test suite gestion incomplétude

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 nmeucci 3388 '<span id="new_da">'.
1157 nhaye 2976 $this->get_dossier_autorisation_libelle(
1158     $this->valF['dossier_autorisation']
1159 nmeucci 3388 ).'</span>'
1160 nhaye 2976 );
1161 nhaye 2110 //Ajout des données techniques au dossier d'autorisation
1162 nhaye 2976 if($this->ajoutDonneesTechniquesDA($id, $db, $val, $DEBUG) === false) {
1163     $this -> addToMessage(
1164     _("Erreur lors de l'enregistrement de la demande.")." ".
1165     _("Contactez votre administrateur.")
1166     );
1167     $this->correct = false;
1168     return false;
1169     }
1170 nhaye 2977 } else {
1171     $sqlIdDTDA = "SELECT donnees_techniques
1172     FROM ".DB_PREFIXE."donnees_techniques
1173     WHERE dossier_autorisation='".
1174     $this->valF['dossier_autorisation']."'";
1175     $idDTDA = $this->db->getOne($sqlIdDTDA);
1176     $this->addToLog(
1177     "triggerAjouter(): db->getOne(\"".$sqlIdDTDA."\")",
1178     VERBOSE_MODE
1179     );
1180 softime 3274 if ($this->f->isDatabaseError($idDTDA, true)) {
1181     return false;
1182     }
1183 vpihour 3005
1184     $this->DTDA = null;
1185 vpihour 3088 if ($idDTDA!=="" && is_numeric($idDTDA)){
1186 vpihour 3005 require_once '../obj/donnees_techniques.class.php';
1187     $this->DTDA = new donnees_techniques(
1188     $idDTDA,
1189     $db,
1190     $DEBUG
1191     );
1192     $this->DTDA->setValFFromVal();
1193     }
1194 nhaye 907 }
1195 nhaye 2976 // Enregistrement du numéro dossier existant
1196     // (il sera écrasé si un DI est créé)
1197 nhaye 1808 if ($this->getParameter("idx_dossier") != "") {
1198     $this->valF['dossier_instruction'] = $this->getParameter("idx_dossier");
1199     }
1200 nhaye 920 // Création du dossier d'instruction
1201 nhaye 2976 if($dossier_type['dossier_instruction_type'] != null) {
1202     if($this->ajoutDossierInstruction(
1203     $id,
1204     $db,
1205     $val,
1206     $DEBUG,
1207     $dossier_type['dossier_instruction_type']
1208     ) === false ) {
1209     $this -> addToMessage(
1210     _("Erreur lors de l'enregistrement de la demande.")." ".
1211     _("Contactez votre administrateur.")
1212     );
1213     $this->correct = false;
1214     return false;
1215     }
1216     $this -> addToMessage(
1217 nmeucci 3388 _("Creation du dossier d'instruction no").'<span id="new_di">'.
1218     $this->get_dossier_libelle($this->valF['dossier_instruction']).'</span>'
1219 nhaye 2976 );
1220 nhaye 1808 // Attribut permettant de définir si un dossier a été créé.
1221 nhaye 2976 $this->ajoutDI = true;
1222 nhaye 907 }
1223 softime 2071
1224     // Si le dossier_instruction existe
1225     if (isset($this->valF['dossier_instruction']) && $this->valF['dossier_instruction'] !== "" ) {
1226 softime 2369
1227 softime 2071 // Récupère les informations nécessaire pour créer le répertoire de numérisation
1228     $getInfosForFoldername = $this->getInfosForFoldername($this->valF['dossier_instruction']);
1229 softime 2369
1230 softime 2071 // Création du répertoire pour la numérisation
1231 softime 2369 $createFolder = $this->createFolder($getInfosForFoldername['dossier_autorisation'], $getInfosForFoldername['code'], $getInfosForFoldername['version']);
1232    
1233     // Si la création a échouée
1234     if ($createFolder === false) {
1235    
1236     // Annule la validation
1237 softime 2071 $this->correct = false;
1238     // arrête le traitement entier
1239 softime 3274 $this->f->addToLog(__METHOD__."() : ERROR - Création du répertoire impossible.", DEBUG_MODE);
1240 softime 2071 return false;
1241 softime 2369
1242     //
1243     } else {
1244    
1245     //
1246     $this->addToLog("createFolder() : Success", VERBOSE_MODE);
1247 softime 2071 }
1248     }
1249 fmichon 1005
1250     /*Ajout de l'arrondissement à partir du code postal*/
1251     if ( !is_null($this->valF["terrain_adresse_code_postal"]) && is_numeric($this->valF["terrain_adresse_code_postal"]) ){
1252    
1253     $this->valF["arrondissement"] = $this->getArrondissement($this->valF["terrain_adresse_code_postal"]);
1254     }
1255 nhaye 907 }
1256 softime 3274
1257     //
1258     return true;
1259 nhaye 907 }
1260    
1261     /**
1262 nhaye 828 * Ajout des délégataires et pétitionnaires
1263 nhaye 807 **/
1264 nhaye 828 function triggerAjouterApres($id, &$db, $val, $DEBUG){
1265 softime 2071
1266 softime 3274 if ($this->insertLinkDemandeDemandeur($db, $DEBUG) == false) {
1267     return false;
1268     }
1269 fmichon 1005
1270 nhaye 920 // Ajout des lliens entre dossier_autorisation et demandeur
1271 vpihour 2038 if(!empty($this->valF['dossier_autorisation'])) {
1272 softime 3274 if ($this->ajoutLiensDossierAutorisation($id, $db, $val, $DEBUG) == false) {
1273     return false;
1274     }
1275 nhaye 920 }
1276     // Ajout des lliens entre dossier et demandeur
1277 nhaye 1808 if($this->ajoutDI === TRUE) {
1278 softime 3274 if ($this->ajoutLiensDossierInstruction($id, $db, $val, $DEBUG) == false) {
1279     return false;
1280     }
1281 nhaye 920 }
1282 nhaye 1246
1283 nhaye 2110 // Duplication des lots (et leurs données techniques) et
1284     // liaison au nouveau dossier_d'instruction
1285 nhaye 1246 if(!empty($this->valF['dossier_autorisation']) AND $val['dossier_autorisation'] != "" ) {
1286     $this->lienLotDossierInstruction($id, $db, $val, $DEBUG);
1287     }
1288 nmeucci 2889
1289     /*Création du lien de téléchargement de récépissé de demande*/
1290     if ( $this->valF['demande_type'] != "" && is_numeric($this->valF['demande_type'])
1291     && isset($this->valF['dossier_instruction']) && $this->valF['dossier_instruction'] !== "" ){
1292    
1293     /*Récupérer l'événement lié à ce type de demande*/
1294     $evenement = $this->getEvenement($this->valF['demande_type']);
1295    
1296     /*Récupération de la lettre type de l'événement*/
1297     $lettretype = $this->f->getLettreType($evenement);
1298    
1299     /*Création d'une nouvelle instruction avec cet événement*/
1300     /*Données*/
1301     $valInstr['instruction']=NULL;
1302    
1303     $valInstr['destinataire']=$this->valF['dossier_instruction'];
1304     $valInstr['dossier']=$this->valF['dossier_instruction'];
1305     // Récupère la date de la demande
1306     $valInstr['date_evenement']=$this->dateDBToForm($this->valF['date_demande']);
1307     $valInstr['evenement']=$evenement;
1308     $valInstr['lettretype']=$lettretype;
1309     $valInstr['complement_om_html']="";
1310     $valInstr['complement2_om_html']="";
1311    
1312     $valInstr['action']="initialisation";
1313     $valInstr['delai']="2";
1314     $valInstr['etat']="notifier";
1315     $valInstr['accord_tacite']="Oui";
1316     $valInstr['delai_notification']="1";
1317     $valInstr['archive_delai']="0";
1318     $valInstr['archive_date_complet']=NULL;
1319     $valInstr['archive_date_dernier_depot']=NULL;
1320     $valInstr['archive_date_rejet']=NULL;
1321     $valInstr['archive_date_limite']=NULL;
1322     $valInstr['archive_date_notification_delai']=NULL;
1323     $valInstr['archive_accord_tacite']="Non";
1324     $valInstr['archive_etat']="initialiser";
1325     $valInstr['archive_date_decision']=NULL;
1326     $valInstr['archive_avis']="";
1327     $valInstr['archive_date_validite']=NULL;
1328     $valInstr['archive_date_achevement']=NULL;
1329     $valInstr['archive_date_chantier']=NULL;
1330     $valInstr['archive_date_conformite']=NULL;
1331     $valInstr['archive_incompletude']=NULL;
1332 nhaye 3059 $valInstr['archive_incomplet_notifie']=NULL;
1333 nmeucci 2889 $valInstr['archive_evenement_suivant_tacite']="";
1334     $valInstr['archive_evenement_suivant_tacite_incompletude']=NULL;
1335     $valInstr['archive_etat_pendant_incompletude']=NULL;
1336     $valInstr['archive_date_limite_incompletude']=NULL;
1337     $valInstr['archive_delai_incompletude']=NULL;
1338     $valInstr['archive_autorite_competente']=NULL;
1339     $valInstr['complement3_om_html']="";
1340     $valInstr['complement4_om_html']="";
1341     $valInstr['complement5_om_html']="";
1342     $valInstr['complement6_om_html']="";
1343     $valInstr['complement7_om_html']="";
1344     $valInstr['complement8_om_html']="";
1345     $valInstr['complement9_om_html']="";
1346     $valInstr['complement10_om_html']="";
1347     $valInstr['complement11_om_html']="";
1348     $valInstr['complement12_om_html']="";
1349     $valInstr['complement13_om_html']="";
1350     $valInstr['complement14_om_html']="";
1351     $valInstr['complement15_om_html']="";
1352     $valInstr['avis_decision']=NULL;
1353     $valInstr['date_finalisation_courrier']=NULL;
1354     $valInstr['date_envoi_signature']=NULL;
1355     $valInstr['date_retour_signature']=NULL;
1356     $valInstr['date_envoi_rar']=NULL;
1357     $valInstr['date_retour_rar']=NULL;
1358     $valInstr['date_envoi_controle_legalite']=NULL;
1359     $valInstr['date_retour_controle_legalite']=NULL;
1360     $valInstr['signataire_arrete']=NULL;
1361     $valInstr['numero_arrete']=NULL;
1362     $valInstr['code_barres']=NULL;
1363     $valInstr['om_fichier_instruction']=NULL;
1364     $valInstr['om_final_instruction']=NULL;
1365     $valInstr['document_numerise']=NULL;
1366     $valInstr['autorite_competente']=NULL;
1367     $valInstr['duree_validite_parametrage']="0";
1368     $valInstr['duree_validite']="0";
1369    
1370     //Récupération des champs archive si cette demande a créée un dossier
1371     //d'instruction mais pas un P0
1372     if (!is_null($this->valF['dossier_instruction']) &&
1373     $this->valF['dossier_instruction'] !== "" ){
1374    
1375     //Requête
1376     $sql = "SELECT dossier_instruction_type.code
1377     FROM ".DB_PREFIXE."demande_type
1378     LEFT JOIN ".DB_PREFIXE."dossier_instruction_type
1379     ON demande_type.dossier_instruction_type = dossier_instruction_type.dossier_instruction_type
1380     WHERE demande_type.demande_type = ".$this->valF['demande_type'];
1381     $res = $db->getOne($sql);
1382     $this->addToLog("triggerajouter(): db->getOne(\"".$sql."\");", VERBOSE_MODE);
1383 softime 3274 if ($this->f->isDatabaseError($res, true)) {
1384     return false;
1385 nmeucci 2889 }
1386    
1387     //On vérifie que ce n'est pas un P0
1388     if ( strcmp($res, "P") !== 0 ){
1389    
1390     $res = $this->getArchiveInstruction($this->valF['dossier_instruction']);
1391 softime 3274
1392     if ($res == false) {
1393     return false;
1394     }
1395 nmeucci 2889
1396     if (isset($res['archive_delai'])) {
1397     $valInstr['archive_delai']=$res["archive_delai"];
1398     }
1399     if (isset($res['archive_date_complet'])) {
1400     $valInstr['archive_date_complet']=$res["archive_date_complet"];
1401     }
1402     if (isset($res['archive_date_dernier_depot'])) {
1403     $valInstr['archive_date_dernier_depot']=$res["archive_date_dernier_depot"];
1404     }
1405     if (isset($res['archive_date_rejet'])) {
1406     $valInstr['archive_date_rejet']=$res["archive_date_rejet"];
1407     }
1408     if (isset($res['archive_date_limite'])) {
1409     $valInstr['archive_date_limite']=$res["archive_date_limite"];
1410     }
1411     if (isset($res['archive_date_notification_delai'])) {
1412     $valInstr['archive_date_notification_delai']=$res["archive_date_notification_delai"];
1413     }
1414     if (isset($res['archive_accord_tacite'])) {
1415     $valInstr['archive_accord_tacite']=$res["archive_accord_tacite"];
1416     }
1417     if (isset($res['archive_etat'])) {
1418     $valInstr['archive_etat']=$res["archive_etat"];
1419     }
1420     if (isset($res['archive_date_decision'])) {
1421     $valInstr['archive_date_decision']=$res["archive_date_decision"];
1422     }
1423     if (isset($res['archive_avis'])) {
1424     $valInstr['archive_avis']=$res["archive_avis"];
1425     }
1426     if (isset($res['archive_date_validite'])) {
1427     $valInstr['archive_date_validite']=$res["archive_date_validite"];
1428     }
1429     if (isset($res['archive_date_achevement'])) {
1430     $valInstr['archive_date_achevement']=$res["archive_date_achevement"];
1431     }
1432     if (isset($res['archive_date_chantier'])) {
1433     $valInstr['archive_date_chantier']=$res["archive_date_chantier"];
1434     }
1435     if (isset($res['archive_date_conformite'])) {
1436     $valInstr['archive_date_conformite']=$res["archive_date_conformite"];
1437     }
1438     if (isset($res['archive_incompletude'])) {
1439     $valInstr['archive_incompletude']=$res["archive_incompletude"];
1440     }
1441 nhaye 3059 if (isset($res['archive_incomplet_notifie'])) {
1442     $valInstr['archive_incomplet_notifie']=$res["archive_incomplet_notifie"];
1443     }
1444 nmeucci 2889 if (isset($res['archive_evenement_suivant_tacite'])) {
1445     $valInstr['archive_evenement_suivant_tacite']=$res["archive_evenement_suivant_tacite"];
1446     }
1447     if (isset($res['archive_evenement_suivant_tacite_incompletude'])) {
1448     $valInstr['archive_evenement_suivant_tacite_incompletude']=$res["archive_evenement_suivant_tacite_incompletude"];
1449     }
1450     if (isset($res['archive_etat_pendant_incompletude'])) {
1451     $valInstr['archive_etat_pendant_incompletude']=$res["archive_etat_pendant_incompletude"];
1452     }
1453     if (isset($res['archive_date_limite_incompletude'])) {
1454     $valInstr['archive_date_limite_incompletude']=$res["archive_date_limite_incompletude"];
1455     }
1456     if (isset($res['archive_delai_incompletude'])) {
1457     $valInstr['archive_delai_incompletude']=$res["archive_delai_incompletude"];
1458     }
1459     if (isset($res['archive_autorite_competente'])) {
1460     $valInstr['archive_autorite_competente']=$res["archive_autorite_competente"];
1461     }
1462     }
1463     }
1464    
1465     /*Fichier requis*/
1466     require_once '../obj/instruction.class.php';
1467    
1468     /*Création d'un nouveau dossier*/
1469     $instruction = new instruction("]",$db,$DEBUG);
1470     $instruction->valF = "";
1471 softime 3274 if ($instruction->ajouter($valInstr, $db, $DEBUG) === false) {
1472     $this->f->addToLog(__METHOD__."() : ERROR - Impossible d'ajouter l'instruction.", DEBUG_MODE);
1473     return false;
1474     }
1475 nmeucci 2889
1476     //Finalisation du document
1477     $_GET['obj']='instruction';
1478     $_GET['idx']=$instruction->valF[$instruction->clePrimaire];
1479     $instruction_final = new instruction($_GET['idx'],$db,$DEBUG);
1480     if($instruction_final->getVal('lettretype') != "") {
1481     $res = $instruction_final->finaliser('', 1, '', '');
1482     }
1483    
1484     /*Si la création de l'instruction a réussie*/
1485     if ( $instruction->valF['instruction'] != "" ){
1486 softime 3054
1487     // Mise à jour de la demande
1488     $this->valF['instruction_recepisse'] = $instruction->valF['instruction'];
1489     $this->valF['date_demande'] = $this->dateDBToForm($this->valF['date_demande']);
1490     $demande_instance = new demande($this->valF['demande'], $db, $DEBUG);
1491     $demande_instance->modifier($this->valF, $db, $DEBUG);
1492 nmeucci 2889
1493     /*Affichage du récépissé de la demande*/
1494 softime 3356 $href = ( isset($res['pdf']) && $instruction->valF['om_final_instruction']) ? $res['pdf'] : "../scr/form.php?obj=demande&action=100&idx=".$this->valF['demande'];
1495 nmeucci 2889 $this -> addToMessage("<br/><a
1496     class='lien'
1497 softime 3356 href='".$href."'
1498 nmeucci 2889 target='_blank'>
1499     <span
1500     class=\"om-icon om-icon-16 om-icon-fix pdf-16\"
1501     title=\""._("Telecharger le recepisse de la demande")."\">".
1502     _("Telecharger le recepisse de la demande").
1503     "</span>
1504     &nbsp;&nbsp;&nbsp;&nbsp;".
1505     _("Telecharger le recepisse de la demande")."
1506     </a><br/>");
1507     }
1508     /*Sinon affiche un message d'erreur*/
1509     else {
1510    
1511     $this -> addToMessage(_("Une erreur s'est produite lors de la creation du recepisse"));
1512     }
1513     }
1514 softime 3274
1515     //
1516     return true;
1517 nhaye 828 }
1518 vpihour 1058
1519     /*Ajout du lien demande / demandeur(s)*/
1520 nhaye 828 function triggerModifierApres($id, &$db, $val, $DEBUG){
1521 nhaye 1039 $this->listeDemandeur("demande",$this->val[array_search('demande', $this->champs)]);
1522 softime 3274 if ($this->insertLinkDemandeDemandeur($db, $DEBUG) == false) {
1523     return false;
1524     }
1525 nhaye 838 $this->valIdDemandeur=$this->postedIdDemandeur;
1526 nhaye 828
1527 softime 3274 //
1528     return true;
1529 nhaye 828 }
1530    
1531     /**
1532 nhaye 1246 * Gestion des liens entre les lots du DA et le nouveau dossier
1533     **/
1534     function lienLotDossierInstruction($id, $db, $val, $DEBUG) {
1535     require_once ("../obj/lot.class.php");
1536     $lot = new lot("]", $db, $DEBUG);
1537     require_once ("../obj/lien_lot_demandeur.class.php");
1538     $lld = new lien_lot_demandeur("]", $db, $DEBUG);
1539    
1540    
1541     $sqlLots = "SELECT * FROM ".DB_PREFIXE."lot
1542     WHERE dossier_autorisation = '".$this->valF['dossier_autorisation']."'";
1543     $resLot = $db -> query($sqlLots);
1544     $this->f->addToLog("db->query(\"".$sqlLots."\");", VERBOSE_MODE);
1545     $this->f->isDatabaseError($resLot);
1546     while ($rowLot=& $resLot->fetchRow(DB_FETCHMODE_ASSOC)){
1547     // Insertion du nouveau lot
1548     $valLot['lot'] = "";
1549     $valLot['libelle'] = $rowLot['libelle'];
1550 nhaye 2976 $valLot['dossier_autorisation'] = null;
1551 nhaye 2082 $valLot['dossier'] = $this->valF['dossier_instruction'];
1552 nhaye 1246 $lot -> ajouter($valLot, $db, $DEBUG);
1553 nhaye 1247
1554 nhaye 1246 //Insertion des liens entre dossier et les lots
1555     $sqlDemandeurs = "SELECT * FROM ".DB_PREFIXE."lien_lot_demandeur
1556     WHERE lot = ".$rowLot['lot'];
1557     $res = $db -> query($sqlDemandeurs);
1558 nhaye 2976 $this->f->addToLog(
1559     "lienLotDossierInstruction() : db->query(\"".$sqlDemandeurs."\");",
1560     VERBOSE_MODE
1561     );
1562 softime 3274 if ($this->f->isDatabaseError($res, true)) {
1563     return false;
1564 vpihour 1777 }
1565 nhaye 1246
1566     while ($row=& $res->fetchRow(DB_FETCHMODE_ASSOC)){
1567     $valLld["lien_lot_demandeur"] = "";
1568     $valLld["lot"]=$lot->valF['lot'];
1569     $valLld["demandeur"] = $row['demandeur'];
1570     $valLld["petitionnaire_principal"] = $row['petitionnaire_principal'];
1571 softime 3274 if ($lld->ajouter($valLld, $db, $DEBUG) === false) {
1572     $this->f->addToLog(__METHOD__."() : ERROR - Impossible d'ajouter le lien entre le lot et le dossier d'instruction.", DEBUG_MODE);
1573     return false;
1574     }
1575 nhaye 1246 }
1576 nhaye 2110
1577     // Récupération des données techniques du nouveau lots
1578 nhaye 2976 if($this->ajoutDonneesTechniquesLots(
1579     $id,
1580     $db,
1581     $val,
1582     $DEBUG,
1583     $rowLot['lot'],
1584     $lot->valF['lot']) === false) {
1585     $this -> addToMessage(
1586     _("Erreur lors de l'enregistrement de la demande.")." ".
1587     _("Contactez votre administrateur.")
1588     );
1589     $this->correct = false;
1590     return false;
1591     }
1592 nhaye 2110
1593 nhaye 1246 }
1594 softime 3274
1595     //
1596     return true;
1597 nhaye 1246 }
1598    
1599 nhaye 2110
1600 nhaye 1246 /**
1601 nhaye 2976 * Méthode permettant d'ajouter les données techniques d'un lot.
1602     *
1603     * @param integer $id identifiant de la demande
1604     * @param database &$db handler de la base de donnée
1605     * @param array $val tableau de valeurs postées via le formulaire
1606     * @param boolean $DEBUG debug
1607     * @param integer $lotInit identifiant de lot initial
1608     * @param integer $lotDest identifiant du lot qui va recevoir les données
1609     *
1610     * @return boolean false si erreur
1611 nhaye 2110 */
1612 nhaye 2976 function ajoutDonneesTechniquesLots($id, &$db, $val, $DEBUG, $lotInit, $lotDest) {
1613     // Requete permettant de recupérer les données techniques du lot passé
1614     // en paramètre ($lotInit)
1615     $sql_get_dt = "
1616     SELECT donnees_techniques
1617     FROM ".DB_PREFIXE."donnees_techniques
1618     WHERE lot=".$lotInit;
1619 nhaye 2110 $id_dt = $this->f->db->getOne($sql_get_dt);
1620 nhaye 2976 // Si des données techniques sont liées au lots on les "copie" et
1621     // on les lies au lot passé en paramètre (lotDest)
1622     if(isset($id_dt) and !empty($id_dt)) {
1623     $this->f->addToLog(
1624     "ajoutDonneesTechniquesLots() : db->getone(\"".$sql_get_dt."\");",
1625     VERBOSE_MODE
1626     );
1627 softime 3274 if ($this->f->isDatabaseError($id_dt, true)){
1628 nhaye 2110 return false;
1629     }
1630     require_once '../obj/donnees_techniques.class.php';
1631 nhaye 2976 $donnees_techniques = new donnees_techniques($id_dt, $db, $DEBUG);
1632 nhaye 2110
1633     // Récupération des données dans le tableau des valeurs à insérer
1634     foreach($donnees_techniques->champs as $value) {
1635     $val[$value] = $donnees_techniques->getVal($value);
1636     }
1637     // Modification du lien vers le nouveau lot
1638     $val["lot"] = $lotDest;
1639 nhaye 2976 // Identifiant du cerfa
1640     $val['cerfa'] = $this->getIdCerfa();
1641 nhaye 2110 // Ajout des données techniques
1642 nhaye 2976 if($donnees_techniques->ajouter($val, $db, $DEBUG) === false) {
1643 softime 3274 $this->f->addToLog(__METHOD__."() : ERROR - Impossible d'ajouter les données techniques du lot.", DEBUG_MODE);
1644 nhaye 2976 return false;
1645     }
1646 nhaye 2110 }
1647 softime 3274
1648     //
1649     return true;
1650 nhaye 2110 }
1651    
1652     /**
1653 vpihour 1058 * Gestion des liens entre la demande et les demandeurs recemment ajoutés
1654 nhaye 828 **/
1655     function insertLinkDemandeDemandeur($db, $DEBUG) {
1656 softime 3274
1657 nhaye 828 //
1658     require_once "../obj/lien_demande_demandeur.class.php";
1659 nhaye 838 // Comparaison de l'id petitionnaire principal
1660     if(isset($this->postedIdDemandeur['petitionnaire_principal']) AND
1661     !empty($this->postedIdDemandeur['petitionnaire_principal']) AND
1662     $this->valIdDemandeur['petitionnaire_principal'] !=
1663     $this->postedIdDemandeur['petitionnaire_principal']) {
1664     // Ajout du nouveau lien
1665 softime 3274 if ($this->addLinkDemandeDemandeur($this->postedIdDemandeur['petitionnaire_principal'], true, $db, $DEBUG) == false) {
1666     //
1667     return false;
1668     }
1669 nhaye 838 if(!empty($this->valIdDemandeur['petitionnaire_principal'])) {
1670 softime 3274 if ($this->deleteLinkDemandeDemandeur($this->valIdDemandeur['petitionnaire_principal'], $db, $DEBUG) == false) {
1671     //
1672     return false;
1673     }
1674 nhaye 807 }
1675 nhaye 828 }
1676 nhaye 838
1677     // Comparaison du delegataire
1678     if(isset($this->postedIdDemandeur['delegataire']) AND
1679     !empty($this->postedIdDemandeur['delegataire']) AND
1680     $this->valIdDemandeur['delegataire'] !=
1681     $this->postedIdDemandeur['delegataire']) {
1682     // Ajout du nouveau lien
1683 softime 3274 if ($this->addLinkDemandeDemandeur($this->postedIdDemandeur['delegataire'], false, $db, $DEBUG) == false) {
1684     //
1685     return false;
1686     }
1687 nhaye 838 if(!empty($this->valIdDemandeur['delegataire'])) {
1688 softime 3274 if ($this->deleteLinkDemandeDemandeur($this->valIdDemandeur['delegataire'], $db, $DEBUG) == false) {
1689     //
1690     return false;
1691     }
1692 nhaye 838 }
1693     }
1694    
1695     // Comparaison des different petitionnaires
1696     if(isset($this->postedIdDemandeur['petitionnaire'])) {
1697     // Suppression des liens non valides
1698     foreach ($this->valIdDemandeur['petitionnaire'] as $petitionnaire) {
1699     if(!in_array($petitionnaire, $this->postedIdDemandeur['petitionnaire'])) {
1700 softime 3274 if ($this->deleteLinkDemandeDemandeur($petitionnaire, $db, $DEBUG) == false) {
1701     //
1702     return false;
1703     }
1704 nhaye 838 }
1705     }
1706     // Ajout des nouveaux liens
1707     foreach ($this->postedIdDemandeur['petitionnaire'] as $petitionnaire) {
1708     if(!in_array($petitionnaire, $this->valIdDemandeur['petitionnaire'])) {
1709 softime 3274 if ($this->addLinkDemandeDemandeur($petitionnaire, false, $db, $DEBUG) == false) {
1710     //
1711     return false;
1712     }
1713 nhaye 838 }
1714     }
1715     }
1716 softime 3274
1717     //
1718     return true;
1719 nhaye 838 }
1720    
1721    
1722     /**
1723     * Fonction permettant d'ajouter un lien
1724     * entre la table demande et demandeur
1725     **/
1726     function addLinkDemandeDemandeur($id, $principal, $db, $DEBUG) {
1727     $lienAjout = new lien_demande_demandeur(
1728     "]",
1729     $db,
1730     $DEBUG);
1731     $lien = array('lien_demande_demandeur' => "",
1732     'petitionnaire_principal' => (($principal)?"t":"f"),
1733     'demande' => $this->valF['demande'],
1734     'demandeur' => $id);
1735 softime 3274 if ($lienAjout->ajouter($lien, $db, $DEBUG) === false) {
1736     $this->f->addToLog(__METHOD__."() : ERROR - Impossible d'ajouter le lien entre la demande et le demandeur.", DEBUG_MODE);
1737     return false;
1738     }
1739    
1740     //
1741     return true;
1742 nhaye 838 }
1743    
1744     /**
1745     * Fonction permettant de supprimer un lien
1746     * entre la table demande et demandeur
1747     **/
1748     function deleteLinkDemandeDemandeur($id, $db, $DEBUG) {
1749     // Suppression
1750     $sql = "DELETE FROM ".DB_PREFIXE."lien_demande_demandeur ".
1751     "WHERE demande=".$this->valF['demande'].
1752     " AND demandeur=".$id;
1753     // Execution de la requete de suppression de l'objet
1754     $res = $db->query($sql);
1755     // Logger
1756 vpihour 1777 $this->f->addToLog("deleteLinkDemandeDemandeur(): db->query(\"".$sql."\");", VERBOSE_MODE);
1757 softime 3274 if ($this->f->isDatabaseError($res, true)){
1758     return false;
1759 vpihour 1777 }
1760 nhaye 838
1761 softime 3274 //
1762     return true;
1763 nhaye 838 }
1764    
1765 vpihour 1058 /*
1766     * Teste si le lien entre une demande et un demandeur existe
1767     * */
1768 nhaye 838 function isLinkDemandeDemandeurExist($idDemandeur) {
1769     $sql = "SELECT count(*)
1770     FROM ".DB_PREFIXE."lien_demande_demandeur
1771     WHERE demande = ".$this->valF['demande'].
1772     "AND demandeur = ".$idDemandeur;
1773     $count = $this->f->db->getOne($sql);
1774 vpihour 1777 $this->f->addToLog("isLinkDemandeDemandeurExist() : db->getone(\"".$sql."\");", VERBOSE_MODE);
1775 softime 3274 $this->f->isDatabaseError($count);
1776 nhaye 838 if ($count === 0) {
1777     return false;
1778 nhaye 828 } else {
1779 nhaye 838 return true;
1780 nhaye 828 }
1781 nhaye 838
1782 nhaye 828 }
1783    
1784     /**
1785     * Methode de recupération des valeurs postées
1786     **/
1787     function getPostedValues() {
1788     // Récupération des demandeurs dans POST
1789 nmeucci 3239 if ($this->f->get_submitted_post_value('petitionnaire_principal') !== null OR
1790     $this->f->get_submitted_post_value('delegataire') !== null OR
1791     $this->f->get_submitted_post_value('petitionnaire') !== null) {
1792     if ($this->f->get_submitted_post_value('petitionnaire_principal') !== null AND
1793     $this->f->get_submitted_post_value('petitionnaire_principal') != '') {
1794     $this->postedIdDemandeur['petitionnaire_principal'] = $this->f->get_submitted_post_value('petitionnaire_principal');
1795 nhaye 807 }
1796 nmeucci 3239 if ($this->f->get_submitted_post_value('delegataire') !== null AND
1797     $this->f->get_submitted_post_value('delegataire') != '') {
1798     $this->postedIdDemandeur['delegataire'] = $this->f->get_submitted_post_value('delegataire');
1799 nhaye 828 }
1800 nmeucci 3239 if ($this->f->get_submitted_post_value('petitionnaire') !== null AND
1801     $this->f->get_submitted_post_value('petitionnaire') != '') {
1802     $this->postedIdDemandeur['petitionnaire'] = $this->f->get_submitted_post_value('petitionnaire');
1803 nhaye 828 }
1804 nhaye 807 }
1805 vpihour 676 }
1806 fmichon 1713
1807 nhaye 828 /**
1808 fmichon 1713 * Méthode permettant de récupérer les id des demandeurs liés à la table
1809     * liée passée en paramètre
1810     *
1811     * @param string $from Table liée : "demande", "dossier", dossier_autorisation"
1812     * @param string $id Identifiant (clé primaire de la table liée en question)
1813     */
1814 nhaye 1039 function listeDemandeur($from, $id) {
1815 nhaye 828 // Récupération des demandeurs de la base
1816 fmichon 1723 $sql = "SELECT demandeur.demandeur,
1817     demandeur.type_demandeur,
1818     lien_".$from."_demandeur.petitionnaire_principal
1819     FROM ".DB_PREFIXE."lien_".$from."_demandeur
1820     INNER JOIN ".DB_PREFIXE."demandeur
1821     ON demandeur.demandeur=lien_".$from."_demandeur.demandeur
1822     WHERE ".$from." = '".$id."'";
1823     $res = $this->f->db->query($sql);
1824     $this->f->addToLog("listeDemandeur(): db->query(\"".$sql."\")", VERBOSE_MODE);
1825 softime 3274 $this->f->isDatabaseError($res);
1826 fmichon 1723 // Stockage du résultat dans un tableau
1827     while ($row=& $res->fetchRow(DB_FETCHMODE_ASSOC)){
1828     if ($row['petitionnaire_principal'] == 't' AND
1829     $row['type_demandeur']=="petitionnaire") {
1830     $this->valIdDemandeur['petitionnaire_principal']=$row['demandeur'];
1831     } elseif ($row['petitionnaire_principal'] == 'f' AND
1832     $row['type_demandeur']=="petitionnaire"){
1833     $this->valIdDemandeur['petitionnaire'][]=$row['demandeur'];
1834     } elseif ($row['type_demandeur']=="delegataire"){
1835     $this->valIdDemandeur['delegataire']=$row['demandeur'];
1836 nhaye 828 }
1837     }
1838     }
1839 nhaye 807
1840 nhaye 1037
1841 nhaye 807 /**
1842 nhaye 1037 * Surcharge du bouton retour afin de retourner sur la recherche de dossiers
1843     * d'instruction existant
1844     */
1845     function retour($premier = 0, $recherche = "", $tricol = "") {
1846    
1847     echo "\n<a class=\"retour\" ";
1848     echo "href=\"";
1849     //
1850     if($this->getParameter("idx_dossier") != "") {
1851     echo "tab.php?";
1852     echo "obj=recherche_dossier";
1853    
1854     } else {
1855     if($this->getParameter("retour")=="form" AND !($this->getParameter("validation")>0 AND $this->getParameter("maj")==2 AND $this->correct)) {
1856     echo "form.php?";
1857     } else {
1858     echo "tab.php?";
1859     }
1860     echo "obj=".get_class($this);
1861     if($this->getParameter("retour")=="form") {
1862     echo "&amp;idx=".$this->getParameter("idx");
1863 softime 2093 echo "&amp;idz=".$this->getParameter("idz");
1864 nhaye 1037 echo "&amp;action=3";
1865     }
1866     }
1867     echo "&amp;premier=".$this->getParameter("premier");
1868     echo "&amp;tricol=".$this->getParameter("tricol");
1869     echo "&amp;recherche=".$this->getParameter("recherche");
1870     echo "&amp;selectioncol=".$this->getParameter("selectioncol");
1871     echo "&amp;advs_id=".$this->getParameter("advs_id");
1872     echo "&amp;valide=".$this->getParameter("valide");
1873     //
1874     echo "\"";
1875     echo ">";
1876     //
1877     echo _("Retour");
1878     //
1879     echo "</a>\n";
1880    
1881     }
1882    
1883    
1884     /**
1885 fmichon 1723 * Cette méthode permet d'afficher des informations spécifiques dans le
1886     * formulaire de l'objet
1887     *
1888     * @param integer $maj Mode de mise à jour
1889 nhaye 807 */
1890     function formSpecificContent($maj) {
1891 fmichon 1723
1892     /**
1893     * Gestion du bloc des demandeurs
1894     */
1895     // Si le mode est (modification ou suppression ou consultation) ET que
1896     // le formulaire n'est pas correct (c'est-à-dire que le formulaire est
1897     // actif)
1898     if (!$this->correct AND $maj != 0) {
1899     // Alors on récupère les demandeurs dans la table lien pour
1900     // affectation des résultats dans this->valIdDemandeur
1901 nhaye 1039 $this->listeDemandeur("demande", $this->val[array_search('demande', $this->champs)]);
1902 nhaye 838 }
1903 fmichon 1723
1904     // Si le mode est (ajout ou modification) ET que le formulaire n'est pas
1905     // correct (c'est-à-dire que le formulaire est actif)
1906     if ($maj < 2 AND !$this->correct) {
1907     // Alors on positionne le marqueur linkable a true qui permet
1908     // d'afficher ou non les actions de gestion des demandeurs
1909 nhaye 838 $linkable = true;
1910     } else {
1911 fmichon 1723 // Sinon on positionne le marqueur linkable a false qui permet
1912     // d'afficher ou non les actions de gestion des demandeurs
1913 nhaye 838 $linkable = false;
1914     }
1915 nhaye 1020
1916 fmichon 1723 // Affichage des demandeurs et des actions
1917 nhaye 807 // Conteneur de la listes des demandeurs
1918 nhaye 1097 echo "<div id=\"liste_demandeur\" class=\"demande_hidden_bloc col_12\">";
1919 nhaye 807 echo "<fieldset class=\"cadre ui-corner-all ui-widget-content\">";
1920     echo " <legend class=\"ui-corner-all ui-widget-content ui-state-active\">"
1921     ._("Petitionnaire")."</legend>";
1922     // Si des demandeurs sont liés à la demande
1923 nhaye 828 require_once "../obj/petitionnaire.class.php";
1924     require_once "../obj/delegataire.class.php";
1925 nhaye 1097 // Affichage du bloc pétitionnaire principal / délégataire
1926     // L'ID DU DIV SUIVANT EST NECESSAIRE AU BON FONCTIONNEMENT DU JS
1927 nhaye 1672 echo "<div id=\"petitionnaire_principal_delegataire\">";
1928 nhaye 1097 // Affichage de la synthèse
1929     if (isset ($this->valIdDemandeur["petitionnaire_principal"]) AND
1930     !empty($this->valIdDemandeur["petitionnaire_principal"])) {
1931     $demandeur = new petitionnaire(
1932     $this->valIdDemandeur["petitionnaire_principal"],
1933     $this->f->db,false);
1934     $demandeur -> afficherSynthese("petitionnaire_principal", $linkable);
1935     $demandeur -> __destruct();
1936     } elseif ( isset ($this->postedIdDemandeur["petitionnaire_principal"]) AND
1937     !empty($this->postedIdDemandeur["petitionnaire_principal"]) ) {
1938     $demandeur = new petitionnaire(
1939     $this->postedIdDemandeur["petitionnaire_principal"],
1940     $this->f->db,false);
1941     $demandeur -> afficherSynthese("petitionnaire_principal", $linkable);
1942     $demandeur -> __destruct();
1943     }
1944     // Si en édition de formulaire
1945     if($maj < 2) {
1946     // Bouton d'ajout du pétitionnaire principal
1947     // L'ID DE L'INPUT SUIVANT EST NECESSAIRE AU BON FONCTIONNEMENT DU JS
1948     echo "<span id=\"add_petitionnaire_principal\"
1949     class=\"om-form-button add-16\">".
1950     _("Saisir le petitionnaire principal").
1951     "</span>";
1952     }
1953     // Bouton d'ajout du delegataire
1954     // L'ID DU DIV ET DE L'INPUT SUIVANT EST NECESSAIRE AU BON FONCTIONNEMENT DU JS
1955     echo "<div id=\"delegataire\">";
1956     // Affichage de la synthèse
1957     if (isset ($this->valIdDemandeur["delegataire"]) AND
1958     !empty($this->valIdDemandeur["delegataire"])) {
1959     $demandeur = new delegataire($this->valIdDemandeur["delegataire"],
1960     $this->f->db,false);
1961     $demandeur -> afficherSynthese("delegataire", $linkable);
1962     $demandeur -> __destruct();
1963     } elseif ( isset ($this->postedIdDemandeur["delegataire"]) AND
1964     !empty($this->postedIdDemandeur["delegataire"]) ) {
1965 nhaye 807
1966 nhaye 1097 $demandeur = new delegataire($this->postedIdDemandeur["delegataire"],
1967     $this->f->db,false);
1968     $demandeur -> afficherSynthese("delegataire", $linkable);
1969     $demandeur -> __destruct();
1970     }
1971     if($maj < 2) {
1972     echo "<span id=\"add_delegataire\"
1973 vpihour 1075 class=\"om-form-button add-16\">".
1974 nmeucci 2846 _("Saisir un autre correspondant").
1975 vpihour 1051 "</span>";
1976 nhaye 1097 }
1977     echo "</div>";
1978 nhaye 1118 echo "<div class=\"both\"></div>";
1979 nhaye 1097 echo "</div>";
1980     // Bloc des pétitionnaires secondaires
1981     // L'ID DU DIV SUIVANT EST NECESSAIRE AU BON FONCTIONNEMENT DU JS
1982 nhaye 1672 echo "<div id=\"listePetitionnaires\">";
1983 fmichon 1005
1984 nhaye 1097 // Affichage de la synthèse
1985     if (isset ($this->valIdDemandeur["petitionnaire"]) AND
1986     !empty($this->valIdDemandeur["petitionnaire"])) {
1987    
1988     foreach ($this->valIdDemandeur["petitionnaire"] as $petitionnaire) {
1989     $demandeur = new petitionnaire($petitionnaire,
1990     $this->f->db,false);
1991     $demandeur -> afficherSynthese("petitionnaire", $linkable);
1992 nhaye 1065 $demandeur -> __destruct();
1993     }
1994    
1995 nhaye 1097 } elseif ( isset ($this->postedIdDemandeur["petitionnaire"]) AND
1996     !empty($this->postedIdDemandeur["petitionnaire"]) ) {
1997     foreach ($this->postedIdDemandeur["petitionnaire"] as $petitionnaire) {
1998     $demandeur = new petitionnaire($petitionnaire,
1999     $this->f->db,false);
2000     $demandeur -> afficherSynthese("petitionnaire", $linkable);
2001     $demandeur -> __destruct();
2002 nhaye 828 }
2003 nhaye 1097 }
2004     if ($maj < 2) {
2005     // L'ID DE L'INPUT SUIVANT EST NECESSAIRE AU BON FONCTIONNEMENT DU JS
2006     echo "<span id=\"add_petitionnaire\"
2007     class=\"om-form-button add-16\">".
2008     _("Ajouter un petitionnaire")
2009     ."</span>";
2010     }
2011     echo "</div>";
2012 nhaye 807 echo "</fieldset>";
2013 softime 2313 // Champ flag permettant de récupérer la valeur de l'option sig pour
2014     // l'utiliser en javascript, notamment lors du chargement de l'interface
2015     // pour les références cadastrales
2016     // XXX Si un widget pour les références cadastrales existait, il n'y
2017     // aurait pas besoin de faire cela
2018     echo "<input id='option_sig' type='hidden' value='".$this->f->getParameter("option_sig")."' name='option_sig'>";
2019 vpihour 2364 echo "</div>";
2020 nhaye 807 }
2021    
2022 nhaye 1097 // {{{
2023    
2024     // getter
2025     function getValIdDemandeur() {
2026     return $this->valIdDemandeur;
2027     }
2028     // setter
2029     function setValIdDemandeur($valIdDemandeur) {
2030     $this->valIdDemandeur = $valIdDemandeur;
2031     }
2032 vpihour 1106
2033     //Supression du lien entre la demandeur et le(s) demandeur(s)
2034     function triggerSupprimer($id, &$db, $val, $DEBUG){
2035    
2036     //Création de la requête
2037     $sql = "DELETE FROM
2038     ".DB_PREFIXE."lien_demande_demandeur
2039     WHERE
2040     demande = $id";
2041    
2042     $res = $this->f->db->query($sql);
2043 vpihour 1777 $this->f->addToLog("triggerSupprimer() : db->query(\"".$sql."\")");
2044 softime 3274 if ($this->f->isDatabaseError($res, true)) {
2045     return false;
2046 vpihour 1777 }
2047 softime 3274
2048     //
2049     return true;
2050 vpihour 1106 }
2051    
2052 nhaye 1097 // }}}
2053 softime 2071
2054    
2055     /**
2056     * Cette fonction permet de récupérer les informations nécessaires
2057     * à la génération du nom du répertoire
2058     * @param string $dossier Identifiant du dossier
2059     * @return array Tableau des résultats
2060     */
2061     private function getInfosForFoldername($dossier) {
2062    
2063     //Requête SQL
2064 softime 2204 $sql = "SELECT dossier.dossier_autorisation, dossier_instruction_type.code, dossier.version
2065 softime 2071 FROM ".DB_PREFIXE."dossier
2066     LEFT JOIN ".DB_PREFIXE."dossier_instruction_type
2067     ON dossier_instruction_type.dossier_instruction_type = dossier.dossier_instruction_type
2068     WHERE dossier.dossier = '".$dossier."'";
2069     $res = $this->f->db->query($sql);
2070     $this->addToLog("getInfosForFoldername() : db->query(".$sql.")", VERBOSE_MODE);
2071     database::isError($res);
2072    
2073     // tableau des résultats
2074     $row = $res->fetchRow(DB_FETCHMODE_ASSOC);
2075 vpihour 2119
2076     //Formatage du numéro de version
2077 vpihour 2131 require_once '../obj/dossier.class.php';
2078     $dossier = new dossier($dossier,$this->db,DEBUG);
2079 softime 2204 $row['version'] = $dossier->getNumeroVersionDossierInstructionType($dossier->getVal('dossier_autorisation'), $dossier->getVal('dossier_instruction_type'), $row['version'], false);
2080 vpihour 2119
2081 softime 2071 // retourne le tableau des résultats
2082     return $row;
2083     }
2084    
2085     /**
2086     * Cette fonction permet la création du répertoire dans le dossier de numérisation
2087     * @param string $dossier_autorisation Identifiant dossier d'autorisation
2088     * @param string $code Type du dossier d'instruction
2089     * @param int $version Numéro de version du dossier
2090     * @return boolean Vrai ou Faux
2091     */
2092     private function createFolder($dossier_autorisation, $code, $version) {
2093    
2094 softime 2369 // Nom du répertoire
2095 softime 2071 $foldername = $dossier_autorisation.".".$code.$version;
2096    
2097 softime 2369 // Vérifie le paramètrage du répertoire de numérisation
2098 softime 2072 if (isset($this->f->config["path_scan"])) {
2099 softime 2369
2100     // Vérifie que le répertoire existe
2101     if (is_dir($this->f->config["path_scan"])) {
2102    
2103     // Répertoire des "à traiter"
2104     $dir = $this->f->config["path_scan"]."Todo/";
2105    
2106     // Si le répertore existe déjà le répertoire n'est pas crée
2107     if (file_exists($dir.$foldername)) {
2108    
2109     //
2110     return true;
2111     }
2112    
2113     // Vérifie que le répêrtoire des "à traiter" existe
2114     if (is_dir($dir)) {
2115    
2116     // Création du répertoire
2117     mkdir($dir.$foldername, 0777);
2118     //
2119     return true;
2120     }
2121    
2122     // Message d'erreur
2123     $this->msg = "";
2124     $this->addToErrors ('', _("Le repertoire Todo n'existe pas.") . " " . _("Veuillez contacter votre administrateur."), "createFolder() : Faillure");
2125     //
2126     return false;
2127    
2128 softime 2072 }
2129 softime 2369
2130     // Message d'erreur
2131     $this->msg = "";
2132     $this->addToErrors ('', _("Le repertoire de numerisation configure n'existe pas.") . " " . _("Veuillez contacter votre administrateur."), "createFolder() : Faillure");
2133     //
2134     return false;
2135    
2136 softime 2071 }
2137    
2138 softime 2369 // Message d'erreur
2139     $this->msg = "";
2140     $this->addToErrors ('', _("Le repertoire de numerisation n'a pas ete configure.") . " " . _("Veuillez contacter votre administrateur."), "createFolder() : Faillure");
2141     //
2142 softime 2071 return false;
2143     }
2144    
2145 softime 2363 /**
2146     * Récupère le champ "qualification" du type de la demande
2147     * @param integer $demande_type Identifiant du type de la demande
2148     * @return boolean
2149     */
2150     function get_qualification($demande_type) {
2151    
2152     // Initialise le résultat
2153     $qualification = "";
2154    
2155     // Si la condition existe
2156 softime 2365 if (is_numeric($demande_type)) {
2157 softime 2363
2158     // Requête SQL
2159     $sql = "SELECT qualification
2160     FROM ".DB_PREFIXE."demande_type
2161     WHERE demande_type = $demande_type";
2162     $qualification = $this->db->getOne($sql);
2163 softime 2365 $this->f->addToLog("get_qualification() : db->getOne(\"".$sql."\")",
2164     VERBOSE_MODE);
2165 softime 2363 $this->f->isDatabaseError($qualification);
2166     }
2167    
2168     // Retourne le résultat
2169     return $qualification;
2170     }
2171    
2172 vpihour 2643 /**
2173     * Récupère les champs archive_* d'une instruction
2174     * @param string $dossier L'identifiant du dossier d'instruction
2175     */
2176     public function getArchiveInstruction($dossierID){
2177    
2178     //On récupère les données du dernier DI accordé
2179     $sql = "SELECT dossier.delai, dossier.accord_tacite, dossier.etat,
2180     dossier.avis_decision,
2181     to_char(dossier.date_complet, 'DD/MM/YYYY') as date_complet,
2182     to_char(dossier.date_dernier_depot, 'DD/MM/YYYY') as date_dernier_depot,
2183     to_char(dossier.date_rejet, 'DD/MM/YYYY') as date_rejet,
2184     to_char(dossier.date_limite, 'DD/MM/YYYY') as date_limite,
2185     to_char(dossier.date_notification_delai, 'DD/MM/YYYY') as date_notification_delai,
2186     to_char(dossier.date_decision, 'DD/MM/YYYY') as date_decision,
2187     to_char(dossier.date_validite, 'DD/MM/YYYY') as date_validite,
2188     to_char(dossier.date_achevement, 'DD/MM/YYYY') as date_achevement,
2189     to_char(dossier.date_chantier, 'DD/MM/YYYY') as date_chantier,
2190     to_char(dossier.date_conformite, 'DD/MM/YYYY') as date_conformite,
2191     dossier.incompletude,
2192     dossier.evenement_suivant_tacite, dossier.evenement_suivant_tacite_incompletude,
2193     dossier.etat_pendant_incompletude,
2194     to_char(dossier.date_limite_incompletude, 'DD/MM/YYYY') as date_limite_incompletude,
2195     dossier.delai_incompletude, dossier.autorite_competente, dossier.duree_validite
2196 nhaye 3059 ,dossier.dossier, dossier.incomplet_notifie
2197 vpihour 2643 FROM ".DB_PREFIXE."dossier
2198     LEFT JOIN ".DB_PREFIXE."avis_decision
2199     ON dossier.avis_decision = avis_decision.avis_decision
2200     WHERE dossier.avis_decision IS NOT NULL AND avis_decision.typeavis = 'F'
2201     AND dossier.dossier_autorisation = (
2202     SELECT dossier_autorisation.dossier_autorisation
2203     FROM ".DB_PREFIXE."dossier_autorisation
2204     LEFT JOIN ".DB_PREFIXE."dossier
2205     ON dossier_autorisation.dossier_autorisation = dossier.dossier_autorisation
2206     WHERE dossier = '".$dossierID."')
2207     ORDER BY dossier.version DESC";
2208    
2209     $res = $this->db->query($sql);
2210     $this->addToLog("updateArchiveInstruction(): db->query(\"".$sql."\");", VERBOSE_MODE);
2211 softime 3274 if ($this->f->isDatabaseError($res, true)) {
2212     return false;
2213 vpihour 2643 }
2214    
2215     //Un des dosssiers d'instruction a été accordé, on récupère ses données
2216     if ( $res->numrows() != 0 ){
2217    
2218     $row=& $res->fetchRow(DB_FETCHMODE_ASSOC);
2219     require_once "../obj/instruction.class.php";
2220     $instruction = new instruction("]",$this->db,DEBUG);
2221    
2222     $instruction->setParameter("maj", 1);
2223     $instruction->updateArchiveData($row);
2224     return $instruction->valF;
2225     }
2226     //Sinon, on prend les données du P0, si ce n'est pas un P0
2227     else {
2228     $sql = "SELECT dossier.delai, dossier.accord_tacite, dossier.etat,
2229     dossier.avis_decision, dossier.date_complet, dossier.date_dernier_depot,
2230     dossier.date_rejet, dossier.date_limite, dossier.date_notification_delai,
2231     dossier.date_decision, dossier.date_validite, dossier.date_achevement,
2232     dossier.date_chantier, dossier.date_conformite, dossier.incompletude,
2233     dossier.evenement_suivant_tacite, dossier.evenement_suivant_tacite_incompletude,
2234     dossier.etat_pendant_incompletude, dossier.date_limite_incompletude,
2235 nhaye 3059 dossier.delai_incompletude, dossier.autorite_competente, dossier.duree_validite,
2236     dossier.dossier, dossier.incomplet_notifie
2237 vpihour 2643 FROM ".DB_PREFIXE."dossier
2238     LEFT JOIN ".DB_PREFIXE."dossier_instruction_type
2239     ON dossier.dossier_instruction_type = dossier_instruction_type.dossier_instruction_type
2240     WHERE dossier.dossier_autorisation = (
2241     SELECT dossier_autorisation.dossier_autorisation
2242     FROM ".DB_PREFIXE."dossier_autorisation
2243     LEFT JOIN ".DB_PREFIXE."dossier
2244     ON dossier_autorisation.dossier_autorisation = dossier.dossier_autorisation
2245 softime 2653 WHERE dossier = '".$dossierID."')
2246 vpihour 2643 AND dossier_instruction_type.code = 'P'
2247     ORDER BY dossier.version DESC";
2248     $res = $this->db->query($sql);
2249     $this->addToLog("updateArchiveInstruction(): db->query(\"".$sql."\");", VERBOSE_MODE);
2250 softime 3274 if ($this->f->isDatabaseError($res, true)) {
2251     return false;
2252 vpihour 2643 }
2253    
2254     //On est pas dans le cas d'un dépôt d'un P0
2255     if ( $res->numrows() != 0 ){
2256     $row=& $res->fetchRow(DB_FETCHMODE_ASSOC);
2257 softime 2653 require_once "../obj/instruction.class.php";
2258 vpihour 2643 $instruction = new instruction("]",$this->db,DEBUG);
2259     $instruction->setParameter("maj", 1);
2260     $instruction->updateArchiveData($row);
2261     return $instruction->valF;
2262     }
2263     }
2264     }
2265 vpihour 3346
2266     /**
2267     * Cette methode permet d'afficher le bouton de validation du formulaire
2268     *
2269     * @param integer $maj Mode de mise a jour
2270     * @return void
2271     */
2272     function bouton($maj) {
2273    
2274     if (!$this->correct
2275     && $this->checkActionAvailability() == true) {
2276     //
2277     switch($maj) {
2278     case 0 :
2279     $bouton = _("Ajouter");
2280     break;
2281     case 1 :
2282     $bouton = _("Modifier");
2283     break;
2284     case 2 :
2285     $bouton = _("Supprimer");
2286     break;
2287     default :
2288     // Actions specifiques
2289     if ($this->get_action_param($maj, "button") != null) {
2290     //
2291     $bouton = $this->get_action_param($maj, "button");
2292     } else {
2293     //
2294     $bouton = _("Valider");
2295     }
2296     break;
2297     }
2298     //
2299     $params = array(
2300     "value" => $bouton,
2301     "name" => "submit",
2302     "onclick"=>"return getDataFieldReferenceCadastrale();",
2303     );
2304     //
2305     $this->f->layout->display_form_button($params);
2306     }
2307    
2308     }
2309 vpihour 632 }// fin classe
2310 fmichon 1005 ?>

Properties

Name Value
svn:keywords Id

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26