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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2110 - (hide annotations)
Tue Jul 23 17:14:24 2013 UTC (11 years, 6 months ago) by nhaye
File size: 58174 byte(s)
* Amélioration de la remontées des informations du dernier dossier d'instruction accepté au dossier d'autorisation lié
* Modification de la structure de la base : La table cerfa n'est plus liée aux dossier_instruction_type mais aux dossier_autorisation_type_detaille
* Lors d'une demande sur dossier existant récupération des données techniques en cours de validité de la même façon qu'on récupère les valeurs du dossier créé, idem pour les données des lots.

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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26