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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2503 - (hide annotations)
Fri Nov 22 14:50:55 2013 UTC (11 years, 2 months ago) by softime
File size: 62639 byte(s)
Correction du filtrage du champ demande_type du formulaire demande lors de l'ajout d'une nouvelle demande.
Suppression d'une fonction js qui n'est désormais plus necessaire.
MàJ HISTORY.

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 vpihour 632 function demande($id,&$db,$debug) {
19     $this->constructeur($id,$db,$debug);
20     }// fin constructeur
21 fmichon 1005
22     function setValF($val) {
23     parent::setValF($val);
24     // Récupération des id demandeurs postés
25     $this->getPostedValues();
26 nhaye 1020 //$this->valIdDemandeur=$this->postedIdDemandeur;
27 fmichon 1005 }
28    
29     /**
30     * Méthode permettant de récupérer les valeurs du dossier d'autorisation
31 vpihour 1058 * correspondant à la nouvelle demande
32 fmichon 1005 */
33 nhaye 1039 function getValFromDossier($dossier_autorisation) {
34 fmichon 1005 include "../sql/pgsql/demande.form.inc.php";
35     $sql=str_replace("<idx>",$this->getParameter("idx_dossier"),
36 nhaye 1053 $sql_infos_dossier);
37 fmichon 1005 $res = $this->db->query($sql);
38 vpihour 1777 $this->f->addToLog("getValFromDossier(): db->query(\"".$sql."\")", VERBOSE_MODE);
39     if ( database::isError($res)){
40     die();
41     }
42 fmichon 1005 $row = & $res->fetchRow(DB_FETCHMODE_ASSOC);
43     return $row;
44     }
45 vpihour 651
46 vpihour 799 /*
47     * La date du jour par défaut dans le champs date_demande
48     * Put the date of the day by default into the field date_demande
49     */
50 vpihour 635 function setVal(&$form, $maj, $validation, &$db) {
51     if($maj == 0) {
52 fmichon 1005 $form->setVal("date_demande",date('d/m/Y'));
53    
54     // Récupération des valeurs du dossier d'autorisation correspondant
55     if($this->getParameter("idx_dossier") != "") {
56 nhaye 1039 $val_autorisation = $this->getValFromDossier(
57 fmichon 1005 $this->getParameter("idx_dossier"));
58     foreach($val_autorisation as $champ => $value) {
59     $form->setVal($champ,$value);
60     }
61     }
62 vpihour 635 }
63     }
64 nhaye 1404 function getDataSubmit() {
65    
66     $datasubmit = parent::getDataSubmit();
67     if($this->getParameter("idx_dossier") != "") {
68     $datasubmit .= "&idx_dossier=".$this->getParameter("idx_dossier");
69     }
70     return $datasubmit;
71     }
72 vpihour 635
73 nhaye 838 /**
74     * Méthode de verification du contenu
75     */
76     function verifier($val, &$db, $DEBUG) {
77     parent::verifier($val, $db, $DEBUG);
78     if(!isset($this->postedIdDemandeur["petitionnaire_principal"]) OR
79     empty($this->postedIdDemandeur["petitionnaire_principal"])) {
80     $this->correct = false;
81 fmichon 1725 $this->addToMessage(_("La saisie d'un petitionnaire principal est obligatoire."));
82 nhaye 838 }
83     }
84 nhaye 1333
85     /**
86     * Configuration des select
87     */
88     function setSelect(&$form, $maj,&$db,$debug) {
89     parent::setSelect($form, $maj,$db,$debug);
90    
91     if(file_exists ("../sql/".$db->phptype."/".$this->table.".form.inc.php"))
92     include ("../sql/".$db->phptype."/".$this->table.".form.inc.php");
93     elseif(file_exists ("../sql/".$db->phptype."/".$this->table.".form.inc"))
94     include ("../sql/".$db->phptype."/".$this->table.".form.inc");
95 softime 2503
96     //
97     $form->setSelect('demande_type', $this->loadSelectDemandeType($form, $maj, $db, $debug, "dossier_autorisation_type_detaille"));
98    
99     }
100 nhaye 1333
101 softime 2503 /**
102     * Charge le select du champ type de demande
103     * @param object $form Formulaire
104     * @param int $maj Mode d'insertion
105     * @param object $db Database
106     * @param bool $debug Debug active ou pas
107     * @param string $champ champ activant le filtre
108     * @return array Contenu du select
109     */
110     function loadSelectDemandeType(&$form, $maj, &$db, $debug, $champ) {
111 nhaye 1333
112 softime 2503 //
113     if(file_exists ("../sql/".$db->phptype."/".$this->table.".form.inc.php"))
114     include ("../sql/".$db->phptype."/".$this->table.".form.inc.php");
115     elseif(file_exists ("../sql/".$db->phptype."/".$this->table.".form.inc"))
116     include ("../sql/".$db->phptype."/".$this->table.".form.inc");
117 nhaye 1333
118 softime 2503 // Contenu de la liste à choix
119     $contenu=array();
120     $contenu[0][0]='';
121     $contenu[1][0]=_('choisir')."&nbsp;"._("demande_type");
122 nhaye 1857
123 softime 2503 //Récupère l'id du type de dossier d'autorisation détaillé
124     $id_dossier_autorisation_type_detaille = "";
125     if (isset($_POST[$champ])) {
126     $id_dossier_autorisation_type_detaille = $_POST[$champ];
127     } elseif($this->getParameter($champ) != "") {
128     $id_dossier_autorisation_type_detaille = $this->getParameter($champ);
129     } elseif(isset($form->val[$champ])) {
130     $id_dossier_autorisation_type_detaille = $form->val[$champ];
131     }
132 nhaye 1580
133 softime 2503 // Récupération de paramètre pour le rechargement ajax du select
134     $idx_dossier = $this->getParameter("idx_dossier");
135 softime 1997
136 softime 2503 // Récupère l'id de la nature de la demande
137     $id_demande_nature = "1";
138     if (isset($idx_dossier) AND $idx_dossier != "") {
139     $id_demande_nature = '2';
140     }
141 nhaye 1333
142 softime 2503 // Ajout de condition pour la requête
143     $ajout_condition_requête = "";
144     if ($id_demande_nature == '2') {
145     $ajout_condition_requête = " AND dossier.dossier = '".$idx_dossier."'";
146     }
147 nhaye 1333
148 softime 2503 //
149     if ($id_dossier_autorisation_type_detaille != "") {
150     //Si l'id du type de dossier d'autorisation détaillé est renseigné
151     $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);
152     // Ajoute une condition sur la nature de la demande
153     $sql_demande_type_by_dossier_autorisation_type_detaille = str_replace('<idx_demande_nature>', $id_demande_nature, $sql_demande_type_by_dossier_autorisation_type_detaille);
154     // Permet d'ajouter une condition
155     $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);
156     $res = $this->db->query($sql_demande_type_by_dossier_autorisation_type_detaille);
157     $this->addToLog("db->query(\"".$sql_demande_type_by_dossier_autorisation_type_detaille."\");", VERBOSE_MODE);
158     $this->f->isDatabaseError($res);
159     //Les résultats de la requête sont stocké dans le tableau contenu
160 softime 1997 $k=1;
161 softime 2503 while ($row=& $res->fetchRow()){
162     $contenu[0][$k]=$row[0];
163     $contenu[1][$k]=$row[1];
164 softime 1997 $k++;
165 softime 2503 }
166     }
167 softime 1997
168 softime 2503 // Retourne le contenu de la liste
169     return $contenu;
170 nhaye 1333 }
171 softime 2503
172 vpihour 799 /*
173     * Ajout du fielset
174     * Add fieldset
175     */
176 vpihour 635 function setLayout(&$form, $maj){
177     if ( $maj < 2 OR $maj == 3 ) {
178    
179 vpihour 1058 /*Champ sur lequel s'ouvre le bloc 1 */
180 nhaye 807 $form->setBloc('dossier_autorisation_type_detaille','D',"","dossier_type col_8");
181 vpihour 1058
182 nhaye 807 $form->setFieldset('dossier_autorisation_type_detaille','D'
183     ,_('Type de dossier/demande'));
184     $form->setFieldset('demande_type','F','');
185    
186     $form->setBloc('demande_type','F');
187 vpihour 1058 /*Fin bloc 1*/
188 nhaye 807
189 vpihour 1058 /*Champ sur lequel s'ouvre le bloc 2 */
190 nhaye 807 $form->setBloc('date_demande','D',"","col_4 demande_hidden_bloc");
191     $form->setFieldset('date_demande','D',_('Date de la demande'));
192     $form->setFieldset('date_demande','F','');
193 vpihour 635 $form->setBloc('date_demande','F');
194 vpihour 1058 /*Fin bloc 2*/
195 vpihour 635
196 vpihour 1058 /*Champ sur lequel s'ouvre le bloc 3 */
197 nhaye 807 $form->setBloc('terrain_references_cadastrales','D',"",
198     "localisation col_12 demande_hidden_bloc");
199 vpihour 693 $form->setFieldset('terrain_references_cadastrales','D',_('Localisation du terrain'));
200     $form->setFieldset('terrain_superficie','F','');
201 vpihour 635 $form->setBloc('terrain_superficie','F');
202 vpihour 1058 /*Fin bloc 4*/
203 vpihour 676
204 vpihour 635 }
205     }
206 vpihour 641
207 vpihour 799 /*
208     * Ajoute des actions sur les deux premiers select
209     * Add actions on the two first select
210     */
211 vpihour 641 function setOnchange(&$form,$maj){
212     parent::setOnchange($form,$maj);
213 softime 1997
214 vpihour 641 $form->setOnchange("dossier_autorisation_type_detaille","changeDemandeType();");
215     $form->setOnchange("demande_type","showFormsDemande();");
216     }
217 nhaye 1442
218     function setLib(&$form,$maj) {
219     parent::setLib($form,$maj);
220     //libelle des champs
221    
222 softime 2061 $form->setLib('terrain_adresse_voie',_('terrain_adresse'));
223 nhaye 1442 }
224 vpihour 799 /*
225     * Cache le champ terrain_references_cadastrales
226     * Hide the fiels terrain_references_cadastrales
227     */
228 vpihour 651 function setType(&$form,$maj) {
229     parent::setType($form,$maj);
230    
231 vpihour 689 $form->setType('dossier_instruction', 'hidden');
232     $form->setType('dossier_autorisation', 'hidden');
233 fmichon 1005
234     $form->setType('instruction_recepisse', 'hidden');
235     $form->setType('arrondissement', 'hidden');
236    
237     // Si il s'agit d'une demande sur dossier existant on desactive tous les champs
238     // sauf demande_type
239 nhaye 1100 if(($maj == 0 AND $this-> getParameter("idx_dossier"))) {
240 nhaye 1053 $form->setType('dossier_autorisation_type_detaille', 'selecthiddenstatic');
241 nhaye 1676 $form->setType('terrain_references_cadastrales', 'hiddenstatic');
242 nhaye 1053 $form->setType('terrain_adresse_voie_numero', 'hiddenstatic');
243 softime 2061 $form->setType('terrain_adresse_voie', 'hiddenstatic');
244 nhaye 1053 $form->setType('terrain_adresse_lieu_dit', 'hiddenstatic');
245     $form->setType('terrain_adresse_localite', 'hiddenstatic');
246     $form->setType('terrain_adresse_code_postal', 'hiddenstatic');
247     $form->setType('terrain_adresse_bp', 'hiddenstatic');
248     $form->setType('terrain_adresse_cedex', 'hiddenstatic');
249     $form->setType('terrain_superficie', 'hiddenstatic');
250 fmichon 1005 }
251 nhaye 1100 if($maj == 1) {
252     $form->setType('dossier_autorisation_type_detaille', 'selecthiddenstatic');
253 nhaye 1095 $form->setType('demande_type', 'selecthiddenstatic');
254     }
255 nhaye 1100 if($maj == 3) {
256 nhaye 1101 $form->setType('terrain_references_cadastrales', 'referencescadastralesstatic');
257 nhaye 1100 }
258    
259 vpihour 651 }
260 vpihour 676
261 nhaye 807 /**
262 nhaye 920 * Méthode permettant d'ajouter un dossier d'autorisation
263     */
264     function ajoutDossierAutorisation($id, &$db, $val, $DEBUG){
265     require_once '../obj/dossier_autorisation.class.php';
266     $dossier_autorisation = new dossier_autorisation("]",$db,$DEBUG);
267 vpihour 2337 $id_etat_initial_da = $this->f->getParameter('id_etat_initial_dossier_autorisation');
268 nhaye 1606 $error = false;
269 nhaye 1619
270     // Vérification de l'existance d'un état initial des DA dans la table om_parametre
271     // afin d'éviter d'eventuelle erreur de base de données
272 nhaye 1606 if(isset($id_etat_initial_da)) {
273     $sql = "SELECT count(*) FROM ".DB_PREFIXE."etat_dossier_autorisation
274     WHERE etat_dossier_autorisation = ".$id_etat_initial_da;
275     $count = $this->db->getOne($sql);
276 vpihour 1777 $this->f->addToLog("ajoutDossierAutorisation() : db->getOne(\"".$sql."\")", VERBOSE_MODE);
277     if ( database::isError($count)){
278     die();
279     }
280 nhaye 1606 if($count != 1) {
281     $error = true;
282     } else {
283 nhaye 1619 // La méthode ajouter prend en paramètre un tableau associatif
284     // contenant toutes les champs de la classe instanciée,
285     // d'où l'initialisation du tableau en bouclant sur la liste des champs du DA
286 nhaye 1606 foreach($dossier_autorisation->champs as $value) {
287     $valAuto[$value] = NULL;
288     }
289 nhaye 1619 // Définition des valeurs à insérer
290 nhaye 1606 $valAuto['dossier_autorisation']="";
291     $valAuto['exercice']=NULL;
292     $valAuto['insee']=NULL;
293     $valAuto['arrondissement']=NULL;
294 vpihour 2337 $valAuto['etat_dossier_autorisation']=$this->f->getParameter('id_etat_initial_dossier_autorisation');
295 nhaye 1606 $valAuto['erp_numero_batiment']=NULL;
296     $valAuto['erp_ouvert']=NULL;
297     $valAuto['erp_arrete_decision']=NULL;
298     $valAuto['dossier_autorisation_type_detaille']=$this->valF['dossier_autorisation_type_detaille'];
299     $valAuto['depot_initial']=$this->dateDBToForm($this->valF['date_demande']);
300     $valAuto['terrain_references_cadastrales']=$this->valF['terrain_references_cadastrales'];
301     $valAuto['terrain_adresse_voie_numero']=$this->valF['terrain_adresse_voie_numero'];
302 softime 2061 $valAuto['terrain_adresse_voie']=$this->valF['terrain_adresse_voie'];
303 nhaye 1606 $valAuto['terrain_adresse_lieu_dit']=$this->valF['terrain_adresse_lieu_dit'];
304     $valAuto['terrain_adresse_localite']=$this->valF['terrain_adresse_localite'];
305     $valAuto['terrain_adresse_code_postal']=$this->valF['terrain_adresse_code_postal'];
306     $valAuto['terrain_adresse_bp']=$this->valF['terrain_adresse_bp'];
307     $valAuto['terrain_adresse_cedex']=$this->valF['terrain_adresse_cedex'];
308     $valAuto['terrain_superficie']=$this->valF['terrain_superficie'];
309     $valAuto['numero_version']=-1;
310     // Ajout du dossier dans la base
311     $dossier_autorisation->ajouter($valAuto, $db, $DEBUG);
312     // Liaison du dossier ajouter à la demande
313     $this->valF['dossier_autorisation'] = $dossier_autorisation->valF['dossier_autorisation'];
314     }
315     } else {
316     $error = true;
317 nhaye 920 }
318 nhaye 1606 // Affichage de l'erreur et stop de l'affichage
319     if( $error ) {
320     echo "</div>";
321     $class = "error";
322     $message = _("Erreur de parametrage. Contactez votre administrateur.");
323     $this->f->displayMessage($class, $message);
324     die();
325     }
326    
327 nhaye 920 }
328    
329     /**
330     * Méthode permettant d'ajouter un dossier d'instruction
331     */
332 fmichon 1005 function ajoutDossierInstruction($id, &$db, $val, $DEBUG, $dossier_instruction_type){
333 nhaye 920 require_once '../obj/dossier.class.php';
334     $dossier = new dossier("]",$db,$DEBUG);
335     foreach($dossier->champs as $value) {
336     $valInstr[$value] = NULL;
337     }
338     require_once '../obj/dossier_autorisation_type_detaille.class.php';
339     $datd = new dossier_autorisation_type_detaille(
340     $this->valF['dossier_autorisation_type_detaille'],$db,$DEBUG);
341 fmichon 1005
342     /*Ajout de la variable dossier_instruction_type à l'objet dossier pour le
343     * versionning
344     */
345     $dossier->setDossierInstructionType($dossier_instruction_type);
346    
347 nhaye 920 // Définition des valeurs à entrée dans la table
348 nhaye 1186 $valInstr['dossier_instruction_type']=$dossier_instruction_type;
349 nhaye 920 $valInstr['date_depot']=$this->dateDBToForm($this->valF['date_demande']);
350 nhaye 1571 $valInstr['date_dernier_depot']=$this->dateDBToForm($this->valF['date_demande']);
351 nhaye 1037 $valInstr['date_demande']=$this->dateDBToForm($this->valF['date_demande']);
352 nhaye 920 $valInstr['depot_initial']=$this->dateDBToForm($this->valF['date_demande']);
353     $valInstr['terrain_references_cadastrales']=$this->valF['terrain_references_cadastrales'];
354     $valInstr['terrain_adresse_voie_numero']=$this->valF['terrain_adresse_voie_numero'];
355 softime 2061 $valInstr['terrain_adresse_voie']=$this->valF['terrain_adresse_voie'];
356 nhaye 920 $valInstr['terrain_adresse_lieu_dit']=$this->valF['terrain_adresse_lieu_dit'];
357     $valInstr['terrain_adresse_localite']=$this->valF['terrain_adresse_localite'];
358     $valInstr['terrain_adresse_code_postal']=$this->valF['terrain_adresse_code_postal'];
359     $valInstr['terrain_adresse_bp']=$this->valF['terrain_adresse_bp'];
360     $valInstr['terrain_adresse_cedex']=$this->valF['terrain_adresse_cedex'];
361     $valInstr['terrain_superficie']=$this->valF['terrain_superficie'];
362     $valInstr['description']="";
363 fmichon 927 $valInstr['dossier_autorisation']=$this->valF['dossier_autorisation'];
364 nhaye 1262
365 vpihour 1273 /*
366     * Gestion de la qualification
367     * */
368 softime 2363 // Initialise le champ à false
369     $valInstr['a_qualifier'] = false;
370    
371     // Récupère l'information depuis le type de la demande
372     $qualification = $this->get_qualification($val['demande_type']);
373    
374     // Si le dossier doit être à qualifier
375     if ($qualification === 't') {
376     // Met le champ à true
377     $valInstr['a_qualifier'] = true;
378 vpihour 1273 }
379    
380 nhaye 1262 // Récupération du cerfa pour le type d'instruction sélectionnée et valide
381 vpihour 1273 $sql = "SELECT
382 nhaye 2110 dossier_autorisation_type_detaille.cerfa
383 vpihour 1273 FROM
384 nhaye 2110 ".DB_PREFIXE."dossier_autorisation_type_detaille
385 vpihour 1273 JOIN
386     ".DB_PREFIXE."cerfa
387     ON
388 nhaye 2110 dossier_autorisation_type_detaille.cerfa = cerfa.cerfa
389 vpihour 1273 WHERE
390     now()<=om_validite_fin
391     AND now()>=om_validite_debut
392 nhaye 2110 AND dossier_autorisation_type_detaille=".$this->valF['dossier_autorisation_type_detaille'];
393 nhaye 1262 $valInstr['cerfa'] = $db->getOne($sql);
394 vpihour 1777 $this->f->addToLog("ajoutDossierInstruction() : db->getone(\"".$sql."\");", VERBOSE_MODE);
395     if ( database::isError($valInstr['cerfa'])){
396     die();
397     }
398 nhaye 920 $dossier->ajouter($valInstr, $db, $DEBUG);
399 vpihour 2302
400     //Affichage de message à l'utilisateur concernant un problème lors de
401 vpihour 2303 //l'affectation de l'instructeur au dossier d'instruction
402 vpihour 2302 if ($dossier->valF['dossier_autorisation'] === '' &&
403     $dossier->valF['instructeur'] === NULL){
404     $this->addToMessage(_("Aucun instructeur compatible avec ce dossier, contactez votre administrateur afin d'en assigner un a ce dossier."));
405     }
406     elseif ( $dossier->valF['instructeur'] === NULL ){
407     if ($this->f->isAccredited("dossier_modifier_instructeur")) {
408     $this->addToMessage("<br/> "._("Pensez a assigner un instructeur a ce dossier."));
409     } else {
410     $this->addToMessage(_("Aucun instructeur compatible avec ce dossier, contactez votre administrateur afin d'en assigner un a ce dossier."));
411     }
412     }
413    
414 nhaye 920 // Liaison du dossier ajouter à la demande
415     $this->valF['dossier_instruction'] = $dossier->valF['dossier'];
416     }
417    
418     /**
419 nhaye 2110 * Méthode permettant d'ajouter les données techniques au dossier d'autorisation
420 vpihour 1374 */
421 nhaye 2110 function ajoutDonneesTechniquesDA($id, &$db, $val, $DEBUG){
422 vpihour 1374
423     require_once '../obj/donnees_techniques.class.php';
424     $donnees_techniques = new donnees_techniques("]",$db,$DEBUG);
425    
426 nhaye 2110 // Champs tous à NULL car seul le champ concernant le dossier d'autorisation sera rempli
427 vpihour 1374 foreach($donnees_techniques->champs as $value) {
428     $val[$value] = NULL;
429     }
430    
431     // Ajout du numéro de dossier d'instruction
432 nhaye 2110 $val['dossier_autorisation']=$this->valF['dossier_autorisation'];
433 vpihour 1374
434     // Ajout des données techniques
435     $donnees_techniques->ajouter($val, $db, $DEBUG);
436     }
437    
438     /**
439 nhaye 2110 * Méthode permettant d'ajouter les données techniques au dossier d'autorisation
440     */
441     function ajoutDonneesTechniquesDI($id, &$db, $val, $DEBUG){
442    
443     // Requête permettant de récupérer le dernier enregistrement en base des données techniques
444     // liées au dossier d'autorisationdu dossier d'instruction en cours de création
445     $sql_dt_from_da = "SELECT donnees_techniques
446     FROM ".DB_PREFIXE."donnees_techniques
447     WHERE dossier_autorisation = '".$this->valF['dossier_autorisation']."'
448     ORDER BY donnees_techniques DESC";
449     // Récupération de l'id
450     $id_da = $this->db->getOne($sql_dt_from_da);
451     if ( database::isError($id_da)){
452     // affiche l'erreur pour l'utilisateur et dans le log
453     $this->addToErrors("",
454     _("Erreur lors de la recuperation des donnees techniques en cours de validite"),
455     _("Erreur lors de la recuperation des donnees techniques en cours de validite"));
456     return false;
457     }
458     require_once '../obj/donnees_techniques.class.php';
459     $donnees_techniques = new donnees_techniques($id_da,$db,$DEBUG);
460    
461     // Récupération des données du DA
462     foreach($donnees_techniques->champs as $value) {
463     $val[$value] = $donnees_techniques->getVal($value);
464     }
465    
466     // Ajout du numéro de dossier d'instruction
467     $val['dossier_instruction'] = $this->valF['dossier_instruction'];
468     // Suppression du numéro de dossier d'autorisation
469     $val['dossier_autorisation'] = NULL;
470    
471     // Ajout des données techniques
472     $donnees_techniques->ajouter($val, $db, $DEBUG);
473     }
474    
475     /**
476 vpihour 2038 * Ajout des liens demandeurs / dossier d'autorisation s'ils n'y sont pas déjà
477 nhaye 907 **/
478 nhaye 920 function ajoutLiensDossierAutorisation($id, &$db, $val, $DEBUG) {
479     // Création des liens entre le dossier autorisation et les demandeurs
480 nhaye 907 include '../sql/pgsql/demande.form.inc.php';
481 nhaye 920 require_once '../obj/lien_dossier_autorisation_demandeur.class.php';
482     $ldad = new lien_dossier_autorisation_demandeur("]",$db,$DEBUG);
483     // Recupération des demandeurs liés à la demande
484 vpihour 2038 $sql = str_replace("<demande>",$this->valF['demande'],$sql_lien_demande_demandeur.
485     " AND lien_demande_demandeur.demandeur NOT IN (
486     SELECT lien_dossier_autorisation_demandeur.demandeur
487     FROM ".DB_PREFIXE."lien_dossier_autorisation_demandeur
488     WHERE lien_dossier_autorisation_demandeur.dossier_autorisation =
489     '".$this->valF['dossier_autorisation']."'
490     )");
491 nhaye 920 $res = $db->query($sql);
492 vpihour 1777 $this->f->addToLog("ajoutLiensDossierAutorisation() : db->query(\"".$sql."\");", VERBOSE_MODE);
493     if ( database::isError($res)){
494     die();
495     }
496 nhaye 920 while($row = &$res->fetchRow(DB_FETCHMODE_ASSOC)) {
497     $row['lien_dossier_autorisation_demandeur'] = NULL;
498     $row['dossier_autorisation'] = $this->valF['dossier_autorisation'];
499     $ldad->ajouter($row, $db, $DEBUG);
500     }
501     }
502    
503     /**
504     * Ajout des liens demandeurs / dossier d'autorisation
505     **/
506     function ajoutLiensDossierInstruction($id, &$db, $val, $DEBUG) {
507     // Création des liens entre le dossier instruction et les demandeurs
508     include '../sql/pgsql/demande.form.inc.php';
509     require_once '../obj/lien_dossier_demandeur.class.php';
510     $ldd = new lien_dossier_demandeur("]",$db,$DEBUG);
511     // Recupération des demandeurs liés à la demande
512     $sql = str_replace("<demande>",$this->valF['demande'],$sql_lien_demande_demandeur);
513     $res = $db->query($sql);
514 vpihour 1777 $this->f->addToLog("ajoutLiensDossierInstruction() : db->query(\"".$sql."\");", VERBOSE_MODE);
515     if ( database::isError($res)){
516     die();
517     }
518 nhaye 920 while($row = &$res->fetchRow(DB_FETCHMODE_ASSOC)) {
519     $row['lien_dossier_demandeur'] = NULL;
520     $row['dossier'] = $this->valF['dossier_instruction'];
521     $ldd->ajouter($row, $db, $DEBUG);
522     }
523     }
524    
525 fmichon 1005 /*
526     * Récupère l'identifiant d'un arrondissement à partir d'un code postal
527     */
528     function getArrondissement($terrain_adresse_code_postal){
529    
530     $arrondissement = NULL;
531    
532     $sql = "SELECT
533     arrondissement
534     FROM
535     ".DB_PREFIXE."arrondissement
536     WHERE
537     code_postal = '$terrain_adresse_code_postal' ";
538     $this->addToLog("demande.class.php : ".$sql." execute <br>", EXTRA_VERBOSE_MODE);
539    
540     $res = $this->db->query($sql);
541 vpihour 1777 $this->f->addToLog("getArrondissement() : db->query(\"".$sql."\")", VERBOSE_MODE);
542     if ( database::isError($res)){
543     die();
544     }
545 fmichon 1005
546     if( $res->numrows() > 0 ) {
547    
548     $row=& $res->fetchRow(DB_FETCHMODE_ASSOC);
549     $arrondissement = $row['arrondissement'];
550     }
551    
552     return $arrondissement;
553     }
554    
555     /*
556     * Récupère l'évènement lié à un type de demande
557     */
558     function getEvenement($demande_type){
559    
560     $evenement = NULL;
561    
562     $sql =
563     "SELECT
564     evenement
565     FROM
566     ".DB_PREFIXE."demande_type
567     WHERE
568     demande_type = $demande_type";
569    
570     $res = $this->db->query($sql);
571 vpihour 1777 $this->f->addToLog("getEvenement() : db->query(\"".$sql."\")", VERBOSE_MODE);
572     if ( database::isError($res)){
573     die();
574     }
575 fmichon 1005
576     if ( $res->numrows() > 0 ){
577    
578     $row=& $res->fetchRow(DB_FETCHMODE_ASSOC);
579     $evenement = $row['evenement'];
580     }
581    
582     return $evenement;
583     }
584    
585 vpihour 2450
586 softime 2112
587     /**
588     * Retourne le libellé du dossier d'autorisation
589     * @param string $dossier_autorisation Identifiant du dossier d'autorisation
590     * @return string Libellé dossier d'autorisation
591     */
592     function get_dossier_autorisation_libelle($dossier_autorisation) {
593    
594     $dossier_autorisation_libelle = "";
595    
596     // Requête SQL
597     $sql = "SELECT
598     dossier_autorisation_libelle
599     FROM
600     ".DB_PREFIXE."dossier_autorisation
601     WHERE
602     dossier_autorisation = '$dossier_autorisation'";
603    
604     $dossier_autorisation_libelle = $this->db->getOne($sql);
605     $this->addToLog("get_dossier_autorisation_libelle(): db->getOne(\"".$sql."\")", VERBOSE_MODE);
606     database::isError($dossier_autorisation_libelle);
607    
608     // Retourne le résultat
609     return $dossier_autorisation_libelle;
610     }
611    
612     /**
613     * Retourne le libellé du dossier d'autorisation
614     * @param string $dossier_autorisation Identifiant du dossier d'autorisation
615     * @return string Libellé dossier d'autorisation
616     */
617     function get_dossier_libelle($dossier) {
618    
619     $dossier_libelle = "";
620    
621     // Requête SQL
622     $sql = "SELECT
623     dossier_libelle
624     FROM
625     ".DB_PREFIXE."dossier
626     WHERE
627     dossier = '$dossier'";
628    
629     $dossier_libelle = $this->db->getOne($sql);
630     $this->addToLog("get_dossier_libelle(): db->getOne(\"".$sql."\")", VERBOSE_MODE);
631     database::isError($dossier_libelle);
632    
633     // Retourne le résultat
634     return $dossier_libelle;
635     }
636 fmichon 1005
637 nhaye 920 /**
638     * Ajout des dossiers
639     **/
640     function triggerAjouter($id, &$db, $val, $DEBUG){
641 softime 2071
642 nhaye 920 include '../sql/pgsql/demande.form.inc.php';
643 softime 2071
644 nhaye 907 if($this->valF["demande_type"] != NULL) {
645     $res = $db->query(str_replace('<idx>', $this->valF['demande_type'], $sql_demande_type_details_by_id));
646 vpihour 1777 $this->f->addToLog("triggerAjouter() : db->query(\"".str_replace('<idx>', $this->valF['demande_type'], $sql_demande_type_details_by_id)."\")", VERBOSE_MODE);
647     if ( database::isError($res)){
648     die();
649     }
650 nhaye 1808 // Attribut permettant de définir si un dossier a été créé
651     $this->ajoutDI = FALSE;
652 nhaye 920 $dossier_type = $res->fetchRow(DB_FETCHMODE_ASSOC);
653 nhaye 907 // Création du dossier_autorisation
654 nhaye 1054 if($this->valF['dossier_autorisation'] == "") {
655 nhaye 920 $this->ajoutDossierAutorisation($id, $db, $val, $DEBUG);
656 softime 2112 $this -> addToMessage(_("Creation du dossier d'autorisation no").$this->get_dossier_autorisation_libelle($this->valF['dossier_autorisation']));
657 nhaye 2110 //Ajout des données techniques au dossier d'autorisation
658     $this->ajoutDonneesTechniquesDA($id, $db, $val, $DEBUG);
659 nhaye 907 }
660 nhaye 1808 // Enregistrement du numéro dossier existant (il sera écrasé si un DI est créé)
661     if ($this->getParameter("idx_dossier") != "") {
662     $this->valF['dossier_instruction'] = $this->getParameter("idx_dossier");
663     }
664 nhaye 920 // Création du dossier d'instruction
665     if($dossier_type['dossier_instruction_type'] != NULL) {
666 fmichon 1005 $this->ajoutDossierInstruction($id, $db, $val, $DEBUG, $dossier_type['dossier_instruction_type']);
667 softime 2112 $this -> addToMessage(_("Creation du dossier d'instruction no").$this->get_dossier_libelle($this->valF['dossier_instruction']));
668 nhaye 1808 // Attribut permettant de définir si un dossier a été créé.
669     $this->ajoutDI = TRUE;
670 vpihour 1374
671     //Ajout des données techniques au dossier d'instruction
672 nhaye 2110 $this->ajoutDonneesTechniquesDI($id, $db, $val, $DEBUG);
673 nhaye 907 }
674 softime 2071
675     // Si le dossier_instruction existe
676     if (isset($this->valF['dossier_instruction']) && $this->valF['dossier_instruction'] !== "" ) {
677 softime 2369
678 softime 2071 // Récupère les informations nécessaire pour créer le répertoire de numérisation
679     $getInfosForFoldername = $this->getInfosForFoldername($this->valF['dossier_instruction']);
680 softime 2369
681 softime 2071 // Création du répertoire pour la numérisation
682 softime 2369 $createFolder = $this->createFolder($getInfosForFoldername['dossier_autorisation'], $getInfosForFoldername['code'], $getInfosForFoldername['version']);
683    
684     // Si la création a échouée
685     if ($createFolder === false) {
686    
687     // Annule la validation
688 softime 2071 $this->correct = false;
689     // arrête le traitement entier
690     return false;
691 softime 2369
692     //
693     } else {
694    
695     //
696     $this->addToLog("createFolder() : Success", VERBOSE_MODE);
697 softime 2071 }
698     }
699 vpihour 930
700     /*Création du lien de téléchargement de récépissé de demande*/
701     if ( $this->valF['demande_type'] != "" && is_numeric($this->valF['demande_type'])
702     && isset($this->valF['dossier_instruction']) && $this->valF['dossier_instruction'] !== "" ){
703    
704     /*Récupérer l'événement lié à ce type de demande*/
705 fmichon 1005 $evenement = $this->getEvenement($this->valF['demande_type']);
706    
707 vpihour 930 /*Récupération de la lettre type de l'événement*/
708 vpihour 2450 $lettretype = $this->f->getLettreType($evenement);
709 vpihour 930
710     /*Création d'une nouvelle instruction avec cet événement*/
711     /*Données*/
712     $valInstr['instruction']=NULL;
713    
714     $valInstr['destinataire']=$this->valF['dossier_instruction'];
715     $valInstr['dossier']=$this->valF['dossier_instruction'];
716    
717 vpihour 1127 $valInstr['date_evenement']=date("d/m/Y");
718 fmichon 1005 $valInstr['evenement']=$evenement;
719     $valInstr['lettretype']=$lettretype;
720 vpihour 930 $valInstr['complement']="";
721     $valInstr['complement2']="";
722    
723     $valInstr['action']="initialisation";
724     $valInstr['delai']="2";
725     $valInstr['etat']="notifier";
726     $valInstr['accord_tacite']="Oui";
727     $valInstr['delai_notification']="1";
728     $valInstr['archive_delai']="0";
729     $valInstr['archive_date_complet']=NULL;
730 nhaye 1571 $valInstr['archive_date_dernier_depot']=NULL;
731 vpihour 930 $valInstr['archive_date_rejet']=NULL;
732     $valInstr['archive_date_limite']=NULL;
733     $valInstr['archive_date_notification_delai']=NULL;
734     $valInstr['archive_accord_tacite']="Non";
735     $valInstr['archive_etat']="initialiser";
736     $valInstr['archive_date_decision']=NULL;
737     $valInstr['archive_avis']="";
738     $valInstr['archive_date_validite']=NULL;
739     $valInstr['archive_date_achevement']=NULL;
740     $valInstr['archive_date_chantier']=NULL;
741     $valInstr['archive_date_conformite']=NULL;
742 nhaye 1722 $valInstr['archive_incompletude']=NULL;
743     $valInstr['archive_evenement_suivant_tacite']="";
744     $valInstr['archive_evenement_suivant_tacite_incompletude']=NULL;
745     $valInstr['archive_etat_pendant_incompletude']=NULL;
746     $valInstr['archive_date_limite_incompletude']=NULL;
747     $valInstr['archive_delai_incompletude']=NULL;
748 nhaye 2100 $valInstr['archive_autorite_competente']=NULL;
749 vpihour 930 $valInstr['complement3']="";
750     $valInstr['complement4']="";
751     $valInstr['complement5']="";
752     $valInstr['complement6']="";
753     $valInstr['complement7']="";
754     $valInstr['complement8']="";
755     $valInstr['complement9']="";
756     $valInstr['complement10']="";
757     $valInstr['complement11']="";
758     $valInstr['complement12']="";
759     $valInstr['complement13']="";
760     $valInstr['complement14']="";
761     $valInstr['complement15']="";
762     $valInstr['avis_decision']=NULL;
763 vpihour 1136 $valInstr['date_finalisation_courrier']=NULL;
764     $valInstr['date_envoi_signature']=NULL;
765     $valInstr['date_retour_signature']=NULL;
766     $valInstr['date_envoi_rar']=NULL;
767     $valInstr['date_retour_rar']=NULL;
768     $valInstr['date_envoi_controle_legalite']=NULL;
769     $valInstr['date_retour_controle_legalite']=NULL;
770 nhaye 1246 $valInstr['signataire_arrete']=NULL;
771 vpihour 1307 $valInstr['numero_arrete']=NULL;
772 vpihour 1789 $valInstr['code_barres']=NULL;
773 vpihour 1927 $valInstr['om_fichier_instruction']=NULL;
774     $valInstr['om_final_instruction']=NULL;
775 vpihour 2032 $valInstr['document_numerise']=NULL;
776 nhaye 2101 $valInstr['autorite_competente']=NULL;
777 softime 2142 $valInstr['duree_validite_parametrage']="0";
778     $valInstr['duree_validite']="0";
779 vpihour 930
780     /*Fichier requis*/
781     require_once '../obj/instruction.class.php';
782    
783     /*Création d'un nouveau dossier*/
784     $instruction = new instruction("]",$db,$DEBUG);
785     $instruction->valF = "";
786     $instruction->ajouter($valInstr, $db, $DEBUG);
787 vpihour 1058
788 vpihour 1966 //Finalisation du document
789     $_GET['obj']='instruction';
790     $_GET['idx']=$instruction->valF[$instruction->clePrimaire];
791     $instruction = new instruction($_GET['idx'],$db,$DEBUG);
792 vpihour 1986 $res = $instruction->finaliser('', 1, '', '');
793 vpihour 1966
794 vpihour 1058 /*Si la création a réussie*/
795 vpihour 930 if ( $instruction->valF['instruction'] != "" ){
796    
797 vpihour 1058 /*Affichage du récépissé de la demande*/
798 fmichon 1005 $this->valF['instruction_recepisse'] = $instruction->valF['instruction'];
799 vpihour 930 $this -> addToMessage("<br/><a
800     class='lien'
801 vpihour 1966 href='"
802     .((isset($res['pdf'])&&$instruction->valF['om_final_instruction'])?$res['pdf']:
803     "../pdf/pdflettretype.php?obj=".$lettretype."&amp;idx=".$instruction->valF['instruction'])."'
804 vpihour 1084 target='_blank'>
805 vpihour 930 <span
806     class=\"om-icon om-icon-16 om-icon-fix pdf-16\"
807     title=\""._("Telecharger le recepisse de la demande")."\">".
808     _("Telecharger le recepisse de la demande").
809     "</span>
810     &nbsp;&nbsp;&nbsp;&nbsp;".
811     _("Telecharger le recepisse de la demande")."
812 vpihour 1093 </a><br/>");
813 vpihour 930 }
814 vpihour 1058 /*Sinon affiche un message d'erreur*/
815 vpihour 930 else {
816    
817 fmichon 1012 $this -> addToMessage(_("Une erreur s'est produite lors de la creation du recepisse"));
818 vpihour 930 }
819     }
820 fmichon 1005
821     /*Ajout de l'arrondissement à partir du code postal*/
822     if ( !is_null($this->valF["terrain_adresse_code_postal"]) && is_numeric($this->valF["terrain_adresse_code_postal"]) ){
823    
824     $this->valF["arrondissement"] = $this->getArrondissement($this->valF["terrain_adresse_code_postal"]);
825     }
826 nhaye 907 }
827     }
828    
829     /**
830 nhaye 828 * Ajout des délégataires et pétitionnaires
831 nhaye 807 **/
832 nhaye 828 function triggerAjouterApres($id, &$db, $val, $DEBUG){
833 softime 2071
834 nhaye 828 $this->insertLinkDemandeDemandeur($db, $DEBUG);
835 fmichon 1005
836 nhaye 920 // Ajout des lliens entre dossier_autorisation et demandeur
837 vpihour 2038 if(!empty($this->valF['dossier_autorisation'])) {
838 nhaye 920 $this->ajoutLiensDossierAutorisation($id, $db, $val, $DEBUG);
839     }
840     // Ajout des lliens entre dossier et demandeur
841 nhaye 1808 if($this->ajoutDI === TRUE) {
842 nhaye 920 $this->ajoutLiensDossierInstruction($id, $db, $val, $DEBUG);
843     }
844 nhaye 1246
845 nhaye 2110 // Duplication des lots (et leurs données techniques) et
846     // liaison au nouveau dossier_d'instruction
847 nhaye 1246 if(!empty($this->valF['dossier_autorisation']) AND $val['dossier_autorisation'] != "" ) {
848     $this->lienLotDossierInstruction($id, $db, $val, $DEBUG);
849     }
850 nhaye 828 }
851 vpihour 1058
852     /*Ajout du lien demande / demandeur(s)*/
853 nhaye 828 function triggerModifierApres($id, &$db, $val, $DEBUG){
854 nhaye 1039 $this->listeDemandeur("demande",$this->val[array_search('demande', $this->champs)]);
855 nhaye 828 $this->insertLinkDemandeDemandeur($db, $DEBUG);
856 nhaye 838 $this->valIdDemandeur=$this->postedIdDemandeur;
857 nhaye 828
858     }
859    
860     /**
861 nhaye 1246 * Gestion des liens entre les lots du DA et le nouveau dossier
862     **/
863     function lienLotDossierInstruction($id, $db, $val, $DEBUG) {
864     require_once ("../obj/lot.class.php");
865     $lot = new lot("]", $db, $DEBUG);
866     require_once ("../obj/lien_lot_demandeur.class.php");
867     $lld = new lien_lot_demandeur("]", $db, $DEBUG);
868    
869    
870     $sqlLots = "SELECT * FROM ".DB_PREFIXE."lot
871     WHERE dossier_autorisation = '".$this->valF['dossier_autorisation']."'";
872     $resLot = $db -> query($sqlLots);
873     $this->f->addToLog("db->query(\"".$sqlLots."\");", VERBOSE_MODE);
874     $this->f->isDatabaseError($resLot);
875     while ($rowLot=& $resLot->fetchRow(DB_FETCHMODE_ASSOC)){
876     // Insertion du nouveau lot
877     $valLot['lot'] = "";
878     $valLot['libelle'] = $rowLot['libelle'];
879     $valLot['dossier_autorisation'] = NULL;
880 nhaye 2082 $valLot['dossier'] = $this->valF['dossier_instruction'];
881 nhaye 1246 $lot -> ajouter($valLot, $db, $DEBUG);
882 nhaye 1247
883 nhaye 1246 //Insertion des liens entre dossier et les lots
884     $sqlDemandeurs = "SELECT * FROM ".DB_PREFIXE."lien_lot_demandeur
885     WHERE lot = ".$rowLot['lot'];
886     $res = $db -> query($sqlDemandeurs);
887 vpihour 1777 $this->f->addToLog("lienLotDossierInstruction() : db->query(\"".$sqlDemandeurs."\");", VERBOSE_MODE);
888     if ( database::isError($res)){
889     die();
890     }
891 nhaye 1246
892     while ($row=& $res->fetchRow(DB_FETCHMODE_ASSOC)){
893     $valLld["lien_lot_demandeur"] = "";
894     $valLld["lot"]=$lot->valF['lot'];
895     $valLld["demandeur"] = $row['demandeur'];
896     $valLld["petitionnaire_principal"] = $row['petitionnaire_principal'];
897     $lld->ajouter($valLld, $db, $DEBUG);
898     }
899 nhaye 2110
900     // Récupération des données techniques du nouveau lots
901     $this->ajoutDonneesTechniquesLots($id, $db, $val, $DEBUG, $rowLot['lot'], $lot->valF['lot']);
902    
903 nhaye 1246 }
904     }
905    
906 nhaye 2110
907 nhaye 1246 /**
908 nhaye 2110 * Méthode permettant d'ajouter les données techniques aux lots
909     */
910     function ajoutDonneesTechniquesLots($id, &$db, $val, $DEBUG, $lotInit, $lotDest){
911     // Requete permettant de recupérer les données techniques du lot passé en paramètre ($lotInit)
912     $sql_get_dt = "SELECT donnees_techniques FROM ".DB_PREFIXE."donnees_techniques WHERE lot=".$lotInit;
913     $id_dt = $this->f->db->getOne($sql_get_dt);
914     // Si des données techniques sont liées au lots on les "copie" et on les lies au lot passé en paramètre (lotDest)
915     if(isset($id_dt) AND !empty($id_dt)) {
916     $this->f->addToLog("ajoutDonneesTechniquesLots() : db->getone(\"".$sql_get_dt."\");", VERBOSE_MODE);
917     if ( database::isError($id_dt)){
918     // Appel de la methode de recuperation des erreurs
919     $this->erreur_db($id_dt->getDebugInfo(), $id_dt->getMessage(), '');
920     return false;
921     }
922     require_once '../obj/donnees_techniques.class.php';
923     $donnees_techniques = new donnees_techniques($id_dt,$db,$DEBUG);
924    
925     // Récupération des données dans le tableau des valeurs à insérer
926     foreach($donnees_techniques->champs as $value) {
927     $val[$value] = $donnees_techniques->getVal($value);
928     }
929     // Modification du lien vers le nouveau lot
930     $val["lot"] = $lotDest;
931     // Ajout des données techniques
932     $donnees_techniques->ajouter($val, $db, $DEBUG);
933     }
934     }
935    
936     /**
937 vpihour 1058 * Gestion des liens entre la demande et les demandeurs recemment ajoutés
938 nhaye 828 **/
939     function insertLinkDemandeDemandeur($db, $DEBUG) {
940     //
941     require_once "../obj/lien_demande_demandeur.class.php";
942 nhaye 838 // Comparaison de l'id petitionnaire principal
943     if(isset($this->postedIdDemandeur['petitionnaire_principal']) AND
944     !empty($this->postedIdDemandeur['petitionnaire_principal']) AND
945     $this->valIdDemandeur['petitionnaire_principal'] !=
946     $this->postedIdDemandeur['petitionnaire_principal']) {
947     // Ajout du nouveau lien
948     $this->addLinkDemandeDemandeur($this->postedIdDemandeur['petitionnaire_principal'], true, $db, $DEBUG);
949     if(!empty($this->valIdDemandeur['petitionnaire_principal'])) {
950     $this->deleteLinkDemandeDemandeur($this->valIdDemandeur['petitionnaire_principal'], $db, $DEBUG);
951 nhaye 807 }
952 nhaye 828 }
953 nhaye 838
954     // Comparaison du delegataire
955     if(isset($this->postedIdDemandeur['delegataire']) AND
956     !empty($this->postedIdDemandeur['delegataire']) AND
957     $this->valIdDemandeur['delegataire'] !=
958     $this->postedIdDemandeur['delegataire']) {
959     // Ajout du nouveau lien
960     $this->addLinkDemandeDemandeur($this->postedIdDemandeur['delegataire'], false, $db, $DEBUG);
961     if(!empty($this->valIdDemandeur['delegataire'])) {
962     $this->deleteLinkDemandeDemandeur($this->valIdDemandeur['delegataire'], $db, $DEBUG);
963     }
964     }
965    
966     // Comparaison des different petitionnaires
967     if(isset($this->postedIdDemandeur['petitionnaire'])) {
968     // Suppression des liens non valides
969     foreach ($this->valIdDemandeur['petitionnaire'] as $petitionnaire) {
970     if(!in_array($petitionnaire, $this->postedIdDemandeur['petitionnaire'])) {
971     $this->deleteLinkDemandeDemandeur($petitionnaire, $db, $DEBUG);
972     }
973     }
974     // Ajout des nouveaux liens
975     foreach ($this->postedIdDemandeur['petitionnaire'] as $petitionnaire) {
976     if(!in_array($petitionnaire, $this->valIdDemandeur['petitionnaire'])) {
977     $this->addLinkDemandeDemandeur($petitionnaire, false, $db, $DEBUG);
978     }
979     }
980     }
981     }
982    
983    
984     /**
985     * Fonction permettant d'ajouter un lien
986     * entre la table demande et demandeur
987     **/
988     function addLinkDemandeDemandeur($id, $principal, $db, $DEBUG) {
989     $lienAjout = new lien_demande_demandeur(
990     "]",
991     $db,
992     $DEBUG);
993     $lien = array('lien_demande_demandeur' => "",
994     'petitionnaire_principal' => (($principal)?"t":"f"),
995     'demande' => $this->valF['demande'],
996     'demandeur' => $id);
997     $lienAjout->ajouter($lien, $db, $DEBUG);
998     $lienAjout->__destruct();
999     }
1000    
1001     /**
1002     * Fonction permettant de supprimer un lien
1003     * entre la table demande et demandeur
1004     **/
1005     function deleteLinkDemandeDemandeur($id, $db, $DEBUG) {
1006     // Suppression
1007     $sql = "DELETE FROM ".DB_PREFIXE."lien_demande_demandeur ".
1008     "WHERE demande=".$this->valF['demande'].
1009     " AND demandeur=".$id;
1010     // Execution de la requete de suppression de l'objet
1011     $res = $db->query($sql);
1012     // Logger
1013 vpihour 1777 $this->f->addToLog("deleteLinkDemandeDemandeur(): db->query(\"".$sql."\");", VERBOSE_MODE);
1014     if ( database::isError($res)){
1015     die();
1016     }
1017 nhaye 838
1018     }
1019    
1020 vpihour 1058 /*
1021     * Teste si le lien entre une demande et un demandeur existe
1022     * */
1023 nhaye 838 function isLinkDemandeDemandeurExist($idDemandeur) {
1024     $sql = "SELECT count(*)
1025     FROM ".DB_PREFIXE."lien_demande_demandeur
1026     WHERE demande = ".$this->valF['demande'].
1027     "AND demandeur = ".$idDemandeur;
1028     $count = $this->f->db->getOne($sql);
1029 vpihour 1777 $this->f->addToLog("isLinkDemandeDemandeurExist() : db->getone(\"".$sql."\");", VERBOSE_MODE);
1030     if ( database::isError($count)){
1031     die();
1032     }
1033 nhaye 838 if ($count === 0) {
1034     return false;
1035 nhaye 828 } else {
1036 nhaye 838 return true;
1037 nhaye 828 }
1038 nhaye 838
1039 nhaye 828 }
1040    
1041     /**
1042     * Methode de recupération des valeurs postées
1043     **/
1044     function getPostedValues() {
1045     // Récupération des demandeurs dans POST
1046     if (isset($_POST['petitionnaire_principal']) OR
1047     isset($_POST['delegataire']) OR
1048     isset($_POST['petitionnaire'])) {
1049     if( isset($_POST['petitionnaire_principal']) AND
1050     !empty($_POST['petitionnaire_principal'])) {
1051 nhaye 838 $this->postedIdDemandeur['petitionnaire_principal'] = $_POST['petitionnaire_principal'];
1052 nhaye 807 }
1053 nhaye 828 if( isset($_POST['delegataire']) AND
1054     !empty($_POST['delegataire'])) {
1055 nhaye 838 $this->postedIdDemandeur['delegataire'] = $_POST['delegataire'];
1056 nhaye 828 }
1057     if( isset($_POST['petitionnaire']) AND
1058     !empty($_POST['petitionnaire'])) {
1059 nhaye 838 $this->postedIdDemandeur['petitionnaire'] = $_POST['petitionnaire'];
1060 nhaye 828 }
1061 nhaye 807 }
1062 vpihour 676 }
1063 fmichon 1713
1064 nhaye 828 /**
1065 fmichon 1713 * Méthode permettant de récupérer les id des demandeurs liés à la table
1066     * liée passée en paramètre
1067     *
1068     * @param string $from Table liée : "demande", "dossier", dossier_autorisation"
1069     * @param string $id Identifiant (clé primaire de la table liée en question)
1070     */
1071 nhaye 1039 function listeDemandeur($from, $id) {
1072 nhaye 828 // Récupération des demandeurs de la base
1073 fmichon 1723 $sql = "SELECT demandeur.demandeur,
1074     demandeur.type_demandeur,
1075     lien_".$from."_demandeur.petitionnaire_principal
1076     FROM ".DB_PREFIXE."lien_".$from."_demandeur
1077     INNER JOIN ".DB_PREFIXE."demandeur
1078     ON demandeur.demandeur=lien_".$from."_demandeur.demandeur
1079     WHERE ".$from." = '".$id."'";
1080     $res = $this->f->db->query($sql);
1081     $this->f->addToLog("listeDemandeur(): db->query(\"".$sql."\")", VERBOSE_MODE);
1082 vpihour 1777 if ( database::isError($res)){
1083     die();
1084     }
1085 fmichon 1723 // Stockage du résultat dans un tableau
1086     while ($row=& $res->fetchRow(DB_FETCHMODE_ASSOC)){
1087     if ($row['petitionnaire_principal'] == 't' AND
1088     $row['type_demandeur']=="petitionnaire") {
1089     $this->valIdDemandeur['petitionnaire_principal']=$row['demandeur'];
1090     } elseif ($row['petitionnaire_principal'] == 'f' AND
1091     $row['type_demandeur']=="petitionnaire"){
1092     $this->valIdDemandeur['petitionnaire'][]=$row['demandeur'];
1093     } elseif ($row['type_demandeur']=="delegataire"){
1094     $this->valIdDemandeur['delegataire']=$row['demandeur'];
1095 nhaye 828 }
1096     }
1097     }
1098 nhaye 807
1099 nhaye 1037
1100 nhaye 807 /**
1101 nhaye 1037 * Surcharge du bouton retour afin de retourner sur la recherche de dossiers
1102     * d'instruction existant
1103     */
1104     function retour($premier = 0, $recherche = "", $tricol = "") {
1105    
1106     echo "\n<a class=\"retour\" ";
1107     echo "href=\"";
1108     //
1109     if($this->getParameter("idx_dossier") != "") {
1110     echo "tab.php?";
1111     echo "obj=recherche_dossier";
1112    
1113     } else {
1114     if($this->getParameter("retour")=="form" AND !($this->getParameter("validation")>0 AND $this->getParameter("maj")==2 AND $this->correct)) {
1115     echo "form.php?";
1116     } else {
1117     echo "tab.php?";
1118     }
1119     echo "obj=".get_class($this);
1120     if($this->getParameter("retour")=="form") {
1121     echo "&amp;idx=".$this->getParameter("idx");
1122 softime 2093 echo "&amp;idz=".$this->getParameter("idz");
1123 nhaye 1037 echo "&amp;action=3";
1124     }
1125     }
1126     echo "&amp;premier=".$this->getParameter("premier");
1127     echo "&amp;tricol=".$this->getParameter("tricol");
1128     echo "&amp;recherche=".$this->getParameter("recherche");
1129     echo "&amp;selectioncol=".$this->getParameter("selectioncol");
1130     echo "&amp;advs_id=".$this->getParameter("advs_id");
1131     echo "&amp;valide=".$this->getParameter("valide");
1132     //
1133     echo "\"";
1134     echo ">";
1135     //
1136     echo _("Retour");
1137     //
1138     echo "</a>\n";
1139    
1140     }
1141    
1142    
1143     /**
1144 fmichon 1723 * Cette méthode permet d'afficher des informations spécifiques dans le
1145     * formulaire de l'objet
1146     *
1147     * @param integer $maj Mode de mise à jour
1148 nhaye 807 */
1149     function formSpecificContent($maj) {
1150 fmichon 1723
1151     /**
1152     * Gestion du bloc des demandeurs
1153     */
1154     // Si le mode est (modification ou suppression ou consultation) ET que
1155     // le formulaire n'est pas correct (c'est-à-dire que le formulaire est
1156     // actif)
1157     if (!$this->correct AND $maj != 0) {
1158     // Alors on récupère les demandeurs dans la table lien pour
1159     // affectation des résultats dans this->valIdDemandeur
1160 nhaye 1039 $this->listeDemandeur("demande", $this->val[array_search('demande', $this->champs)]);
1161 nhaye 838 }
1162 fmichon 1723
1163     // Si le mode est (ajout ou modification) ET que le formulaire n'est pas
1164     // correct (c'est-à-dire que le formulaire est actif)
1165     if ($maj < 2 AND !$this->correct) {
1166     // Alors on positionne le marqueur linkable a true qui permet
1167     // d'afficher ou non les actions de gestion des demandeurs
1168 nhaye 838 $linkable = true;
1169     } else {
1170 fmichon 1723 // Sinon on positionne le marqueur linkable a false qui permet
1171     // d'afficher ou non les actions de gestion des demandeurs
1172 nhaye 838 $linkable = false;
1173     }
1174 nhaye 1020
1175 fmichon 1723 // Affichage des demandeurs et des actions
1176 nhaye 807 // Conteneur de la listes des demandeurs
1177 nhaye 1097 echo "<div id=\"liste_demandeur\" class=\"demande_hidden_bloc col_12\">";
1178 nhaye 807 echo "<fieldset class=\"cadre ui-corner-all ui-widget-content\">";
1179     echo " <legend class=\"ui-corner-all ui-widget-content ui-state-active\">"
1180     ._("Petitionnaire")."</legend>";
1181     // Si des demandeurs sont liés à la demande
1182 nhaye 828 require_once "../obj/petitionnaire.class.php";
1183     require_once "../obj/delegataire.class.php";
1184 nhaye 1097 // Affichage du bloc pétitionnaire principal / délégataire
1185     // L'ID DU DIV SUIVANT EST NECESSAIRE AU BON FONCTIONNEMENT DU JS
1186 nhaye 1672 echo "<div id=\"petitionnaire_principal_delegataire\">";
1187 nhaye 1097 // Affichage de la synthèse
1188     if (isset ($this->valIdDemandeur["petitionnaire_principal"]) AND
1189     !empty($this->valIdDemandeur["petitionnaire_principal"])) {
1190     $demandeur = new petitionnaire(
1191     $this->valIdDemandeur["petitionnaire_principal"],
1192     $this->f->db,false);
1193     $demandeur -> afficherSynthese("petitionnaire_principal", $linkable);
1194     $demandeur -> __destruct();
1195     } elseif ( isset ($this->postedIdDemandeur["petitionnaire_principal"]) AND
1196     !empty($this->postedIdDemandeur["petitionnaire_principal"]) ) {
1197     $demandeur = new petitionnaire(
1198     $this->postedIdDemandeur["petitionnaire_principal"],
1199     $this->f->db,false);
1200     $demandeur -> afficherSynthese("petitionnaire_principal", $linkable);
1201     $demandeur -> __destruct();
1202     }
1203     // Si en édition de formulaire
1204     if($maj < 2) {
1205     // Bouton d'ajout du pétitionnaire principal
1206     // L'ID DE L'INPUT SUIVANT EST NECESSAIRE AU BON FONCTIONNEMENT DU JS
1207     echo "<span id=\"add_petitionnaire_principal\"
1208     class=\"om-form-button add-16\">".
1209     _("Saisir le petitionnaire principal").
1210     "</span>";
1211     }
1212     // Bouton d'ajout du delegataire
1213     // L'ID DU DIV ET DE L'INPUT SUIVANT EST NECESSAIRE AU BON FONCTIONNEMENT DU JS
1214     echo "<div id=\"delegataire\">";
1215     // Affichage de la synthèse
1216     if (isset ($this->valIdDemandeur["delegataire"]) AND
1217     !empty($this->valIdDemandeur["delegataire"])) {
1218     $demandeur = new delegataire($this->valIdDemandeur["delegataire"],
1219     $this->f->db,false);
1220     $demandeur -> afficherSynthese("delegataire", $linkable);
1221     $demandeur -> __destruct();
1222     } elseif ( isset ($this->postedIdDemandeur["delegataire"]) AND
1223     !empty($this->postedIdDemandeur["delegataire"]) ) {
1224 nhaye 807
1225 nhaye 1097 $demandeur = new delegataire($this->postedIdDemandeur["delegataire"],
1226     $this->f->db,false);
1227     $demandeur -> afficherSynthese("delegataire", $linkable);
1228     $demandeur -> __destruct();
1229     }
1230     if($maj < 2) {
1231     echo "<span id=\"add_delegataire\"
1232 vpihour 1075 class=\"om-form-button add-16\">".
1233 nhaye 1097 _("Saisir le delegataire").
1234 vpihour 1051 "</span>";
1235 nhaye 1097 }
1236     echo "</div>";
1237 nhaye 1118 echo "<div class=\"both\"></div>";
1238 nhaye 1097 echo "</div>";
1239     // Bloc des pétitionnaires secondaires
1240     // L'ID DU DIV SUIVANT EST NECESSAIRE AU BON FONCTIONNEMENT DU JS
1241 nhaye 1672 echo "<div id=\"listePetitionnaires\">";
1242 fmichon 1005
1243 nhaye 1097 // Affichage de la synthèse
1244     if (isset ($this->valIdDemandeur["petitionnaire"]) AND
1245     !empty($this->valIdDemandeur["petitionnaire"])) {
1246    
1247     foreach ($this->valIdDemandeur["petitionnaire"] as $petitionnaire) {
1248     $demandeur = new petitionnaire($petitionnaire,
1249     $this->f->db,false);
1250     $demandeur -> afficherSynthese("petitionnaire", $linkable);
1251 nhaye 1065 $demandeur -> __destruct();
1252     }
1253    
1254 nhaye 1097 } elseif ( isset ($this->postedIdDemandeur["petitionnaire"]) AND
1255     !empty($this->postedIdDemandeur["petitionnaire"]) ) {
1256     foreach ($this->postedIdDemandeur["petitionnaire"] as $petitionnaire) {
1257     $demandeur = new petitionnaire($petitionnaire,
1258     $this->f->db,false);
1259     $demandeur -> afficherSynthese("petitionnaire", $linkable);
1260     $demandeur -> __destruct();
1261 nhaye 828 }
1262 nhaye 1097 }
1263     if ($maj < 2) {
1264     // L'ID DE L'INPUT SUIVANT EST NECESSAIRE AU BON FONCTIONNEMENT DU JS
1265     echo "<span id=\"add_petitionnaire\"
1266     class=\"om-form-button add-16\">".
1267     _("Ajouter un petitionnaire")
1268     ."</span>";
1269     }
1270     echo "</div>";
1271 nhaye 807 echo "</fieldset>";
1272 softime 2313 // Champ flag permettant de récupérer la valeur de l'option sig pour
1273     // l'utiliser en javascript, notamment lors du chargement de l'interface
1274     // pour les références cadastrales
1275     // XXX Si un widget pour les références cadastrales existait, il n'y
1276     // aurait pas besoin de faire cela
1277     echo "<input id='option_sig' type='hidden' value='".$this->f->getParameter("option_sig")."' name='option_sig'>";
1278 vpihour 2364 echo "</div>";
1279 nhaye 807 }
1280    
1281 nhaye 1097 // {{{
1282    
1283     // getter
1284     function getValIdDemandeur() {
1285     return $this->valIdDemandeur;
1286     }
1287     // setter
1288     function setValIdDemandeur($valIdDemandeur) {
1289     $this->valIdDemandeur = $valIdDemandeur;
1290     }
1291 vpihour 1106
1292     //Supression du lien entre la demandeur et le(s) demandeur(s)
1293     function triggerSupprimer($id, &$db, $val, $DEBUG){
1294    
1295     //Création de la requête
1296     $sql = "DELETE FROM
1297     ".DB_PREFIXE."lien_demande_demandeur
1298     WHERE
1299     demande = $id";
1300    
1301     $res = $this->f->db->query($sql);
1302 vpihour 1777 $this->f->addToLog("triggerSupprimer() : db->query(\"".$sql."\")");
1303     if ( database::isError($res)){
1304     die();
1305     }
1306 vpihour 1106 }
1307    
1308 nhaye 1097 // }}}
1309 softime 2071
1310    
1311     /**
1312     * Cette fonction permet de récupérer les informations nécessaires
1313     * à la génération du nom du répertoire
1314     * @param string $dossier Identifiant du dossier
1315     * @return array Tableau des résultats
1316     */
1317     private function getInfosForFoldername($dossier) {
1318    
1319     //Requête SQL
1320 softime 2204 $sql = "SELECT dossier.dossier_autorisation, dossier_instruction_type.code, dossier.version
1321 softime 2071 FROM ".DB_PREFIXE."dossier
1322     LEFT JOIN ".DB_PREFIXE."dossier_instruction_type
1323     ON dossier_instruction_type.dossier_instruction_type = dossier.dossier_instruction_type
1324     WHERE dossier.dossier = '".$dossier."'";
1325     $res = $this->f->db->query($sql);
1326     $this->addToLog("getInfosForFoldername() : db->query(".$sql.")", VERBOSE_MODE);
1327     database::isError($res);
1328    
1329     // tableau des résultats
1330     $row = $res->fetchRow(DB_FETCHMODE_ASSOC);
1331 vpihour 2119
1332     //Formatage du numéro de version
1333 vpihour 2131 require_once '../obj/dossier.class.php';
1334     $dossier = new dossier($dossier,$this->db,DEBUG);
1335 softime 2204 $row['version'] = $dossier->getNumeroVersionDossierInstructionType($dossier->getVal('dossier_autorisation'), $dossier->getVal('dossier_instruction_type'), $row['version'], false);
1336 vpihour 2119
1337 softime 2071 // retourne le tableau des résultats
1338     return $row;
1339     }
1340    
1341     /**
1342     * Cette fonction permet la création du répertoire dans le dossier de numérisation
1343     * @param string $dossier_autorisation Identifiant dossier d'autorisation
1344     * @param string $code Type du dossier d'instruction
1345     * @param int $version Numéro de version du dossier
1346     * @return boolean Vrai ou Faux
1347     */
1348     private function createFolder($dossier_autorisation, $code, $version) {
1349    
1350 softime 2369 // Nom du répertoire
1351 softime 2071 $foldername = $dossier_autorisation.".".$code.$version;
1352    
1353 softime 2369 // Vérifie le paramètrage du répertoire de numérisation
1354 softime 2072 if (isset($this->f->config["path_scan"])) {
1355 softime 2369
1356     // Vérifie que le répertoire existe
1357     if (is_dir($this->f->config["path_scan"])) {
1358    
1359     // Répertoire des "à traiter"
1360     $dir = $this->f->config["path_scan"]."Todo/";
1361    
1362     // Si le répertore existe déjà le répertoire n'est pas crée
1363     if (file_exists($dir.$foldername)) {
1364    
1365     //
1366     return true;
1367     }
1368    
1369     // Vérifie que le répêrtoire des "à traiter" existe
1370     if (is_dir($dir)) {
1371    
1372     // Création du répertoire
1373     mkdir($dir.$foldername, 0777);
1374     //
1375     return true;
1376     }
1377    
1378     // Message d'erreur
1379     $this->msg = "";
1380     $this->addToErrors ('', _("Le repertoire Todo n'existe pas.") . " " . _("Veuillez contacter votre administrateur."), "createFolder() : Faillure");
1381     //
1382     return false;
1383    
1384 softime 2072 }
1385 softime 2369
1386     // Message d'erreur
1387     $this->msg = "";
1388     $this->addToErrors ('', _("Le repertoire de numerisation configure n'existe pas.") . " " . _("Veuillez contacter votre administrateur."), "createFolder() : Faillure");
1389     //
1390     return false;
1391    
1392 softime 2071 }
1393    
1394 softime 2369 // Message d'erreur
1395     $this->msg = "";
1396     $this->addToErrors ('', _("Le repertoire de numerisation n'a pas ete configure.") . " " . _("Veuillez contacter votre administrateur."), "createFolder() : Faillure");
1397     //
1398 softime 2071 return false;
1399     }
1400    
1401 softime 2363 /**
1402     * Récupère le champ "qualification" du type de la demande
1403     * @param integer $demande_type Identifiant du type de la demande
1404     * @return boolean
1405     */
1406     function get_qualification($demande_type) {
1407    
1408     // Initialise le résultat
1409     $qualification = "";
1410    
1411     // Si la condition existe
1412 softime 2365 if (is_numeric($demande_type)) {
1413 softime 2363
1414     // Requête SQL
1415     $sql = "SELECT qualification
1416     FROM ".DB_PREFIXE."demande_type
1417     WHERE demande_type = $demande_type";
1418     $qualification = $this->db->getOne($sql);
1419 softime 2365 $this->f->addToLog("get_qualification() : db->getOne(\"".$sql."\")",
1420     VERBOSE_MODE);
1421 softime 2363 $this->f->isDatabaseError($qualification);
1422     }
1423    
1424     // Retourne le résultat
1425     return $qualification;
1426     }
1427    
1428 vpihour 632 }// fin classe
1429 fmichon 1005 ?>

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26