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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2112 - (hide annotations)
Wed Jul 24 17:08:32 2013 UTC (11 years, 6 months ago) by softime
File size: 59981 byte(s)
Ajout du champ dossier_libelle pour la table dossier
Ajout du champ dossier_autorisation_libelle pour la table dossier_autorisation
Génération OM
Modification des formulaires, messages, tableaux et fil d'Ariane pour affiché le numéro de dossier formaté
Traduction des nouveaux champs
Correction des tests utilisant les numéro de dossier
MàJ HISTORY.txt

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 softime 2112
605     /**
606     * Retourne le libellé du dossier d'autorisation
607     * @param string $dossier_autorisation Identifiant du dossier d'autorisation
608     * @return string Libellé dossier d'autorisation
609     */
610     function get_dossier_autorisation_libelle($dossier_autorisation) {
611    
612     $dossier_autorisation_libelle = "";
613    
614     // Requête SQL
615     $sql = "SELECT
616     dossier_autorisation_libelle
617     FROM
618     ".DB_PREFIXE."dossier_autorisation
619     WHERE
620     dossier_autorisation = '$dossier_autorisation'";
621    
622     $dossier_autorisation_libelle = $this->db->getOne($sql);
623     $this->addToLog("get_dossier_autorisation_libelle(): db->getOne(\"".$sql."\")", VERBOSE_MODE);
624     database::isError($dossier_autorisation_libelle);
625    
626     // Retourne le résultat
627     return $dossier_autorisation_libelle;
628     }
629    
630     /**
631     * Retourne le libellé du dossier d'autorisation
632     * @param string $dossier_autorisation Identifiant du dossier d'autorisation
633     * @return string Libellé dossier d'autorisation
634     */
635     function get_dossier_libelle($dossier) {
636    
637     $dossier_libelle = "";
638    
639     // Requête SQL
640     $sql = "SELECT
641     dossier_libelle
642     FROM
643     ".DB_PREFIXE."dossier
644     WHERE
645     dossier = '$dossier'";
646    
647     $dossier_libelle = $this->db->getOne($sql);
648     $this->addToLog("get_dossier_libelle(): db->getOne(\"".$sql."\")", VERBOSE_MODE);
649     database::isError($dossier_libelle);
650    
651     // Retourne le résultat
652     return $dossier_libelle;
653     }
654 fmichon 1005
655 nhaye 920 /**
656     * Ajout des dossiers
657     **/
658     function triggerAjouter($id, &$db, $val, $DEBUG){
659 softime 2071
660 nhaye 920 include '../sql/pgsql/demande.form.inc.php';
661 softime 2071
662 nhaye 907 if($this->valF["demande_type"] != NULL) {
663     $res = $db->query(str_replace('<idx>', $this->valF['demande_type'], $sql_demande_type_details_by_id));
664 vpihour 1777 $this->f->addToLog("triggerAjouter() : db->query(\"".str_replace('<idx>', $this->valF['demande_type'], $sql_demande_type_details_by_id)."\")", VERBOSE_MODE);
665     if ( database::isError($res)){
666     die();
667     }
668 nhaye 1808 // Attribut permettant de définir si un dossier a été créé
669     $this->ajoutDI = FALSE;
670 nhaye 920 $dossier_type = $res->fetchRow(DB_FETCHMODE_ASSOC);
671 nhaye 907 // Création du dossier_autorisation
672 nhaye 1054 if($this->valF['dossier_autorisation'] == "") {
673 nhaye 920 $this->ajoutDossierAutorisation($id, $db, $val, $DEBUG);
674 softime 2112 $this -> addToMessage(_("Creation du dossier d'autorisation no").$this->get_dossier_autorisation_libelle($this->valF['dossier_autorisation']));
675 nhaye 2110 //Ajout des données techniques au dossier d'autorisation
676     $this->ajoutDonneesTechniquesDA($id, $db, $val, $DEBUG);
677 nhaye 907 }
678 nhaye 1808 // Enregistrement du numéro dossier existant (il sera écrasé si un DI est créé)
679     if ($this->getParameter("idx_dossier") != "") {
680     $this->valF['dossier_instruction'] = $this->getParameter("idx_dossier");
681     }
682 nhaye 920 // Création du dossier d'instruction
683     if($dossier_type['dossier_instruction_type'] != NULL) {
684 fmichon 1005 $this->ajoutDossierInstruction($id, $db, $val, $DEBUG, $dossier_type['dossier_instruction_type']);
685 softime 2112 $this -> addToMessage(_("Creation du dossier d'instruction no").$this->get_dossier_libelle($this->valF['dossier_instruction']));
686 nhaye 1808 // Attribut permettant de définir si un dossier a été créé.
687     $this->ajoutDI = TRUE;
688 vpihour 1374
689     //Ajout des données techniques au dossier d'instruction
690 nhaye 2110 $this->ajoutDonneesTechniquesDI($id, $db, $val, $DEBUG);
691 nhaye 907 }
692 softime 2071
693     // Si le dossier_instruction existe
694     if (isset($this->valF['dossier_instruction']) && $this->valF['dossier_instruction'] !== "" ) {
695     // Récupère les informations nécessaire pour créer le répertoire de numérisation
696     $getInfosForFoldername = $this->getInfosForFoldername($this->valF['dossier_instruction']);
697     // Création du répertoire pour la numérisation
698     if ($this->createFolder($getInfosForFoldername['dossier_autorisation'], $getInfosForFoldername['code'], $getInfosForFoldername['version']) === false) {
699     $this->correct = false;
700     // efface les messages précédents
701     $this->msg = '';
702     // affiche l'erreur pour l'utilisateur et dans le log
703 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."));
704 softime 2071 // arrête le traitement entier
705     return false;
706     }
707     }
708 vpihour 930
709     /*Création du lien de téléchargement de récépissé de demande*/
710     if ( $this->valF['demande_type'] != "" && is_numeric($this->valF['demande_type'])
711     && isset($this->valF['dossier_instruction']) && $this->valF['dossier_instruction'] !== "" ){
712    
713     /*Récupérer l'événement lié à ce type de demande*/
714 fmichon 1005 $evenement = $this->getEvenement($this->valF['demande_type']);
715    
716 vpihour 930 /*Récupération de la lettre type de l'événement*/
717 fmichon 1005 $lettretype = $this->getLettreType($evenement);
718 vpihour 930
719     /*Création d'une nouvelle instruction avec cet événement*/
720     /*Données*/
721     $valInstr['instruction']=NULL;
722    
723     $valInstr['destinataire']=$this->valF['dossier_instruction'];
724     $valInstr['dossier']=$this->valF['dossier_instruction'];
725    
726 vpihour 1127 $valInstr['date_evenement']=date("d/m/Y");
727 fmichon 1005 $valInstr['evenement']=$evenement;
728     $valInstr['lettretype']=$lettretype;
729 vpihour 930 $valInstr['complement']="";
730     $valInstr['complement2']="";
731    
732     $valInstr['action']="initialisation";
733     $valInstr['delai']="2";
734     $valInstr['etat']="notifier";
735     $valInstr['accord_tacite']="Oui";
736     $valInstr['delai_notification']="1";
737     $valInstr['archive_delai']="0";
738     $valInstr['archive_date_complet']=NULL;
739 nhaye 1571 $valInstr['archive_date_dernier_depot']=NULL;
740 vpihour 930 $valInstr['archive_date_rejet']=NULL;
741     $valInstr['archive_date_limite']=NULL;
742     $valInstr['archive_date_notification_delai']=NULL;
743     $valInstr['archive_accord_tacite']="Non";
744     $valInstr['archive_etat']="initialiser";
745     $valInstr['archive_date_decision']=NULL;
746     $valInstr['archive_avis']="";
747     $valInstr['archive_date_validite']=NULL;
748     $valInstr['archive_date_achevement']=NULL;
749     $valInstr['archive_date_chantier']=NULL;
750     $valInstr['archive_date_conformite']=NULL;
751 nhaye 1722 $valInstr['archive_incompletude']=NULL;
752     $valInstr['archive_evenement_suivant_tacite']="";
753     $valInstr['archive_evenement_suivant_tacite_incompletude']=NULL;
754     $valInstr['archive_etat_pendant_incompletude']=NULL;
755     $valInstr['archive_date_limite_incompletude']=NULL;
756     $valInstr['archive_delai_incompletude']=NULL;
757 nhaye 2100 $valInstr['archive_autorite_competente']=NULL;
758 vpihour 930 $valInstr['complement3']="";
759     $valInstr['complement4']="";
760     $valInstr['complement5']="";
761     $valInstr['complement6']="";
762     $valInstr['complement7']="";
763     $valInstr['complement8']="";
764     $valInstr['complement9']="";
765     $valInstr['complement10']="";
766     $valInstr['complement11']="";
767     $valInstr['complement12']="";
768     $valInstr['complement13']="";
769     $valInstr['complement14']="";
770     $valInstr['complement15']="";
771     $valInstr['avis_decision']=NULL;
772 vpihour 1136 $valInstr['date_finalisation_courrier']=NULL;
773     $valInstr['date_envoi_signature']=NULL;
774     $valInstr['date_retour_signature']=NULL;
775     $valInstr['date_envoi_rar']=NULL;
776     $valInstr['date_retour_rar']=NULL;
777     $valInstr['date_envoi_controle_legalite']=NULL;
778     $valInstr['date_retour_controle_legalite']=NULL;
779 nhaye 1246 $valInstr['signataire_arrete']=NULL;
780 vpihour 1307 $valInstr['numero_arrete']=NULL;
781 vpihour 1789 $valInstr['code_barres']=NULL;
782 vpihour 1927 $valInstr['om_fichier_instruction']=NULL;
783     $valInstr['om_final_instruction']=NULL;
784 vpihour 2032 $valInstr['document_numerise']=NULL;
785 nhaye 2101 $valInstr['autorite_competente']=NULL;
786 vpihour 930
787     /*Fichier requis*/
788     require_once '../obj/instruction.class.php';
789    
790     /*Création d'un nouveau dossier*/
791     $instruction = new instruction("]",$db,$DEBUG);
792     $instruction->valF = "";
793     $instruction->ajouter($valInstr, $db, $DEBUG);
794 vpihour 1058
795 vpihour 1966 //Finalisation du document
796     $_GET['obj']='instruction';
797     $_GET['idx']=$instruction->valF[$instruction->clePrimaire];
798     $instruction = new instruction($_GET['idx'],$db,$DEBUG);
799 vpihour 1986 $res = $instruction->finaliser('', 1, '', '');
800 vpihour 1966
801 vpihour 1058 /*Si la création a réussie*/
802 vpihour 930 if ( $instruction->valF['instruction'] != "" ){
803    
804 vpihour 1058 /*Affichage du récépissé de la demande*/
805 fmichon 1005 $this->valF['instruction_recepisse'] = $instruction->valF['instruction'];
806 vpihour 930 $this -> addToMessage("<br/><a
807     class='lien'
808 vpihour 1966 href='"
809     .((isset($res['pdf'])&&$instruction->valF['om_final_instruction'])?$res['pdf']:
810     "../pdf/pdflettretype.php?obj=".$lettretype."&amp;idx=".$instruction->valF['instruction'])."'
811 vpihour 1084 target='_blank'>
812 vpihour 930 <span
813     class=\"om-icon om-icon-16 om-icon-fix pdf-16\"
814     title=\""._("Telecharger le recepisse de la demande")."\">".
815     _("Telecharger le recepisse de la demande").
816     "</span>
817     &nbsp;&nbsp;&nbsp;&nbsp;".
818     _("Telecharger le recepisse de la demande")."
819 vpihour 1093 </a><br/>");
820 vpihour 930 }
821 vpihour 1058 /*Sinon affiche un message d'erreur*/
822 vpihour 930 else {
823    
824 fmichon 1012 $this -> addToMessage(_("Une erreur s'est produite lors de la creation du recepisse"));
825 vpihour 930 }
826     }
827 fmichon 1005
828     /*Ajout de l'arrondissement à partir du code postal*/
829     if ( !is_null($this->valF["terrain_adresse_code_postal"]) && is_numeric($this->valF["terrain_adresse_code_postal"]) ){
830    
831     $this->valF["arrondissement"] = $this->getArrondissement($this->valF["terrain_adresse_code_postal"]);
832     }
833 nhaye 907 }
834     }
835    
836     /**
837 nhaye 828 * Ajout des délégataires et pétitionnaires
838 nhaye 807 **/
839 nhaye 828 function triggerAjouterApres($id, &$db, $val, $DEBUG){
840 softime 2071
841 nhaye 828 $this->insertLinkDemandeDemandeur($db, $DEBUG);
842 fmichon 1005
843 nhaye 920 // Ajout des lliens entre dossier_autorisation et demandeur
844 vpihour 2038 if(!empty($this->valF['dossier_autorisation'])) {
845 nhaye 920 $this->ajoutLiensDossierAutorisation($id, $db, $val, $DEBUG);
846     }
847     // Ajout des lliens entre dossier et demandeur
848 nhaye 1808 if($this->ajoutDI === TRUE) {
849 nhaye 920 $this->ajoutLiensDossierInstruction($id, $db, $val, $DEBUG);
850     }
851 nhaye 1246
852 nhaye 2110 // Duplication des lots (et leurs données techniques) et
853     // liaison au nouveau dossier_d'instruction
854 nhaye 1246 if(!empty($this->valF['dossier_autorisation']) AND $val['dossier_autorisation'] != "" ) {
855     $this->lienLotDossierInstruction($id, $db, $val, $DEBUG);
856     }
857 nhaye 828 }
858 vpihour 1058
859     /*Ajout du lien demande / demandeur(s)*/
860 nhaye 828 function triggerModifierApres($id, &$db, $val, $DEBUG){
861 nhaye 1039 $this->listeDemandeur("demande",$this->val[array_search('demande', $this->champs)]);
862 nhaye 828 $this->insertLinkDemandeDemandeur($db, $DEBUG);
863 nhaye 838 $this->valIdDemandeur=$this->postedIdDemandeur;
864 nhaye 828
865     }
866    
867     /**
868 nhaye 1246 * Gestion des liens entre les lots du DA et le nouveau dossier
869     **/
870     function lienLotDossierInstruction($id, $db, $val, $DEBUG) {
871     require_once ("../obj/lot.class.php");
872     $lot = new lot("]", $db, $DEBUG);
873     require_once ("../obj/lien_lot_demandeur.class.php");
874     $lld = new lien_lot_demandeur("]", $db, $DEBUG);
875    
876    
877     $sqlLots = "SELECT * FROM ".DB_PREFIXE."lot
878     WHERE dossier_autorisation = '".$this->valF['dossier_autorisation']."'";
879     $resLot = $db -> query($sqlLots);
880     $this->f->addToLog("db->query(\"".$sqlLots."\");", VERBOSE_MODE);
881     $this->f->isDatabaseError($resLot);
882     while ($rowLot=& $resLot->fetchRow(DB_FETCHMODE_ASSOC)){
883     // Insertion du nouveau lot
884     $valLot['lot'] = "";
885     $valLot['libelle'] = $rowLot['libelle'];
886     $valLot['dossier_autorisation'] = NULL;
887 nhaye 2082 $valLot['dossier'] = $this->valF['dossier_instruction'];
888 nhaye 1246 $lot -> ajouter($valLot, $db, $DEBUG);
889 nhaye 1247
890 nhaye 1246 //Insertion des liens entre dossier et les lots
891     $sqlDemandeurs = "SELECT * FROM ".DB_PREFIXE."lien_lot_demandeur
892     WHERE lot = ".$rowLot['lot'];
893     $res = $db -> query($sqlDemandeurs);
894 vpihour 1777 $this->f->addToLog("lienLotDossierInstruction() : db->query(\"".$sqlDemandeurs."\");", VERBOSE_MODE);
895     if ( database::isError($res)){
896     die();
897     }
898 nhaye 1246
899     while ($row=& $res->fetchRow(DB_FETCHMODE_ASSOC)){
900     $valLld["lien_lot_demandeur"] = "";
901     $valLld["lot"]=$lot->valF['lot'];
902     $valLld["demandeur"] = $row['demandeur'];
903     $valLld["petitionnaire_principal"] = $row['petitionnaire_principal'];
904     $lld->ajouter($valLld, $db, $DEBUG);
905     }
906 nhaye 2110
907     // Récupération des données techniques du nouveau lots
908     $this->ajoutDonneesTechniquesLots($id, $db, $val, $DEBUG, $rowLot['lot'], $lot->valF['lot']);
909    
910 nhaye 1246 }
911     }
912    
913 nhaye 2110
914 nhaye 1246 /**
915 nhaye 2110 * Méthode permettant d'ajouter les données techniques aux lots
916     */
917     function ajoutDonneesTechniquesLots($id, &$db, $val, $DEBUG, $lotInit, $lotDest){
918     // Requete permettant de recupérer les données techniques du lot passé en paramètre ($lotInit)
919     $sql_get_dt = "SELECT donnees_techniques FROM ".DB_PREFIXE."donnees_techniques WHERE lot=".$lotInit;
920     $id_dt = $this->f->db->getOne($sql_get_dt);
921     // Si des données techniques sont liées au lots on les "copie" et on les lies au lot passé en paramètre (lotDest)
922     if(isset($id_dt) AND !empty($id_dt)) {
923     $this->f->addToLog("ajoutDonneesTechniquesLots() : db->getone(\"".$sql_get_dt."\");", VERBOSE_MODE);
924     if ( database::isError($id_dt)){
925     // Appel de la methode de recuperation des erreurs
926     $this->erreur_db($id_dt->getDebugInfo(), $id_dt->getMessage(), '');
927     return false;
928     }
929     require_once '../obj/donnees_techniques.class.php';
930     $donnees_techniques = new donnees_techniques($id_dt,$db,$DEBUG);
931    
932     // Récupération des données dans le tableau des valeurs à insérer
933     foreach($donnees_techniques->champs as $value) {
934     $val[$value] = $donnees_techniques->getVal($value);
935     }
936     // Modification du lien vers le nouveau lot
937     $val["lot"] = $lotDest;
938     // Ajout des données techniques
939     $donnees_techniques->ajouter($val, $db, $DEBUG);
940     }
941     }
942    
943     /**
944 vpihour 1058 * Gestion des liens entre la demande et les demandeurs recemment ajoutés
945 nhaye 828 **/
946     function insertLinkDemandeDemandeur($db, $DEBUG) {
947     //
948     require_once "../obj/lien_demande_demandeur.class.php";
949 nhaye 838 // Comparaison de l'id petitionnaire principal
950     if(isset($this->postedIdDemandeur['petitionnaire_principal']) AND
951     !empty($this->postedIdDemandeur['petitionnaire_principal']) AND
952     $this->valIdDemandeur['petitionnaire_principal'] !=
953     $this->postedIdDemandeur['petitionnaire_principal']) {
954     // Ajout du nouveau lien
955     $this->addLinkDemandeDemandeur($this->postedIdDemandeur['petitionnaire_principal'], true, $db, $DEBUG);
956     if(!empty($this->valIdDemandeur['petitionnaire_principal'])) {
957     $this->deleteLinkDemandeDemandeur($this->valIdDemandeur['petitionnaire_principal'], $db, $DEBUG);
958 nhaye 807 }
959 nhaye 828 }
960 nhaye 838
961     // Comparaison du delegataire
962     if(isset($this->postedIdDemandeur['delegataire']) AND
963     !empty($this->postedIdDemandeur['delegataire']) AND
964     $this->valIdDemandeur['delegataire'] !=
965     $this->postedIdDemandeur['delegataire']) {
966     // Ajout du nouveau lien
967     $this->addLinkDemandeDemandeur($this->postedIdDemandeur['delegataire'], false, $db, $DEBUG);
968     if(!empty($this->valIdDemandeur['delegataire'])) {
969     $this->deleteLinkDemandeDemandeur($this->valIdDemandeur['delegataire'], $db, $DEBUG);
970     }
971     }
972    
973     // Comparaison des different petitionnaires
974     if(isset($this->postedIdDemandeur['petitionnaire'])) {
975     // Suppression des liens non valides
976     foreach ($this->valIdDemandeur['petitionnaire'] as $petitionnaire) {
977     if(!in_array($petitionnaire, $this->postedIdDemandeur['petitionnaire'])) {
978     $this->deleteLinkDemandeDemandeur($petitionnaire, $db, $DEBUG);
979     }
980     }
981     // Ajout des nouveaux liens
982     foreach ($this->postedIdDemandeur['petitionnaire'] as $petitionnaire) {
983     if(!in_array($petitionnaire, $this->valIdDemandeur['petitionnaire'])) {
984     $this->addLinkDemandeDemandeur($petitionnaire, false, $db, $DEBUG);
985     }
986     }
987     }
988     }
989    
990    
991     /**
992     * Fonction permettant d'ajouter un lien
993     * entre la table demande et demandeur
994     **/
995     function addLinkDemandeDemandeur($id, $principal, $db, $DEBUG) {
996     $lienAjout = new lien_demande_demandeur(
997     "]",
998     $db,
999     $DEBUG);
1000     $lien = array('lien_demande_demandeur' => "",
1001     'petitionnaire_principal' => (($principal)?"t":"f"),
1002     'demande' => $this->valF['demande'],
1003     'demandeur' => $id);
1004     $lienAjout->ajouter($lien, $db, $DEBUG);
1005     $lienAjout->__destruct();
1006     }
1007    
1008     /**
1009     * Fonction permettant de supprimer un lien
1010     * entre la table demande et demandeur
1011     **/
1012     function deleteLinkDemandeDemandeur($id, $db, $DEBUG) {
1013     // Suppression
1014     $sql = "DELETE FROM ".DB_PREFIXE."lien_demande_demandeur ".
1015     "WHERE demande=".$this->valF['demande'].
1016     " AND demandeur=".$id;
1017     // Execution de la requete de suppression de l'objet
1018     $res = $db->query($sql);
1019     // Logger
1020 vpihour 1777 $this->f->addToLog("deleteLinkDemandeDemandeur(): db->query(\"".$sql."\");", VERBOSE_MODE);
1021     if ( database::isError($res)){
1022     die();
1023     }
1024 nhaye 838
1025     }
1026    
1027 vpihour 1058 /*
1028     * Teste si le lien entre une demande et un demandeur existe
1029     * */
1030 nhaye 838 function isLinkDemandeDemandeurExist($idDemandeur) {
1031     $sql = "SELECT count(*)
1032     FROM ".DB_PREFIXE."lien_demande_demandeur
1033     WHERE demande = ".$this->valF['demande'].
1034     "AND demandeur = ".$idDemandeur;
1035     $count = $this->f->db->getOne($sql);
1036 vpihour 1777 $this->f->addToLog("isLinkDemandeDemandeurExist() : db->getone(\"".$sql."\");", VERBOSE_MODE);
1037     if ( database::isError($count)){
1038     die();
1039     }
1040 nhaye 838 if ($count === 0) {
1041     return false;
1042 nhaye 828 } else {
1043 nhaye 838 return true;
1044 nhaye 828 }
1045 nhaye 838
1046 nhaye 828 }
1047    
1048     /**
1049     * Methode de recupération des valeurs postées
1050     **/
1051     function getPostedValues() {
1052     // Récupération des demandeurs dans POST
1053     if (isset($_POST['petitionnaire_principal']) OR
1054     isset($_POST['delegataire']) OR
1055     isset($_POST['petitionnaire'])) {
1056     if( isset($_POST['petitionnaire_principal']) AND
1057     !empty($_POST['petitionnaire_principal'])) {
1058 nhaye 838 $this->postedIdDemandeur['petitionnaire_principal'] = $_POST['petitionnaire_principal'];
1059 nhaye 807 }
1060 nhaye 828 if( isset($_POST['delegataire']) AND
1061     !empty($_POST['delegataire'])) {
1062 nhaye 838 $this->postedIdDemandeur['delegataire'] = $_POST['delegataire'];
1063 nhaye 828 }
1064     if( isset($_POST['petitionnaire']) AND
1065     !empty($_POST['petitionnaire'])) {
1066 nhaye 838 $this->postedIdDemandeur['petitionnaire'] = $_POST['petitionnaire'];
1067 nhaye 828 }
1068 nhaye 807 }
1069 vpihour 676 }
1070 fmichon 1713
1071 nhaye 828 /**
1072 fmichon 1713 * Méthode permettant de récupérer les id des demandeurs liés à la table
1073     * liée passée en paramètre
1074     *
1075     * @param string $from Table liée : "demande", "dossier", dossier_autorisation"
1076     * @param string $id Identifiant (clé primaire de la table liée en question)
1077     */
1078 nhaye 1039 function listeDemandeur($from, $id) {
1079 nhaye 828 // Récupération des demandeurs de la base
1080 fmichon 1723 $sql = "SELECT demandeur.demandeur,
1081     demandeur.type_demandeur,
1082     lien_".$from."_demandeur.petitionnaire_principal
1083     FROM ".DB_PREFIXE."lien_".$from."_demandeur
1084     INNER JOIN ".DB_PREFIXE."demandeur
1085     ON demandeur.demandeur=lien_".$from."_demandeur.demandeur
1086     WHERE ".$from." = '".$id."'";
1087     $res = $this->f->db->query($sql);
1088     $this->f->addToLog("listeDemandeur(): db->query(\"".$sql."\")", VERBOSE_MODE);
1089 vpihour 1777 if ( database::isError($res)){
1090     die();
1091     }
1092 fmichon 1723 // Stockage du résultat dans un tableau
1093     while ($row=& $res->fetchRow(DB_FETCHMODE_ASSOC)){
1094     if ($row['petitionnaire_principal'] == 't' AND
1095     $row['type_demandeur']=="petitionnaire") {
1096     $this->valIdDemandeur['petitionnaire_principal']=$row['demandeur'];
1097     } elseif ($row['petitionnaire_principal'] == 'f' AND
1098     $row['type_demandeur']=="petitionnaire"){
1099     $this->valIdDemandeur['petitionnaire'][]=$row['demandeur'];
1100     } elseif ($row['type_demandeur']=="delegataire"){
1101     $this->valIdDemandeur['delegataire']=$row['demandeur'];
1102 nhaye 828 }
1103     }
1104     }
1105 nhaye 807
1106 nhaye 1037
1107 nhaye 807 /**
1108 nhaye 1037 * Surcharge du bouton retour afin de retourner sur la recherche de dossiers
1109     * d'instruction existant
1110     */
1111     function retour($premier = 0, $recherche = "", $tricol = "") {
1112    
1113     echo "\n<a class=\"retour\" ";
1114     echo "href=\"";
1115     //
1116     if($this->getParameter("idx_dossier") != "") {
1117     echo "tab.php?";
1118     echo "obj=recherche_dossier";
1119    
1120     } else {
1121     if($this->getParameter("retour")=="form" AND !($this->getParameter("validation")>0 AND $this->getParameter("maj")==2 AND $this->correct)) {
1122     echo "form.php?";
1123     } else {
1124     echo "tab.php?";
1125     }
1126     echo "obj=".get_class($this);
1127     if($this->getParameter("retour")=="form") {
1128     echo "&amp;idx=".$this->getParameter("idx");
1129 softime 2093 echo "&amp;idz=".$this->getParameter("idz");
1130 nhaye 1037 echo "&amp;action=3";
1131     }
1132     }
1133     echo "&amp;premier=".$this->getParameter("premier");
1134     echo "&amp;tricol=".$this->getParameter("tricol");
1135     echo "&amp;recherche=".$this->getParameter("recherche");
1136     echo "&amp;selectioncol=".$this->getParameter("selectioncol");
1137     echo "&amp;advs_id=".$this->getParameter("advs_id");
1138     echo "&amp;valide=".$this->getParameter("valide");
1139     //
1140     echo "\"";
1141     echo ">";
1142     //
1143     echo _("Retour");
1144     //
1145     echo "</a>\n";
1146    
1147     }
1148    
1149    
1150     /**
1151 fmichon 1723 * Cette méthode permet d'afficher des informations spécifiques dans le
1152     * formulaire de l'objet
1153     *
1154     * @param integer $maj Mode de mise à jour
1155 nhaye 807 */
1156     function formSpecificContent($maj) {
1157 fmichon 1723
1158     /**
1159     * Gestion du bloc des demandeurs
1160     */
1161     // Si le mode est (modification ou suppression ou consultation) ET que
1162     // le formulaire n'est pas correct (c'est-à-dire que le formulaire est
1163     // actif)
1164     if (!$this->correct AND $maj != 0) {
1165     // Alors on récupère les demandeurs dans la table lien pour
1166     // affectation des résultats dans this->valIdDemandeur
1167 nhaye 1039 $this->listeDemandeur("demande", $this->val[array_search('demande', $this->champs)]);
1168 nhaye 838 }
1169 fmichon 1723
1170     // Si le mode est (ajout ou modification) ET que le formulaire n'est pas
1171     // correct (c'est-à-dire que le formulaire est actif)
1172     if ($maj < 2 AND !$this->correct) {
1173     // Alors on positionne le marqueur linkable a true qui permet
1174     // d'afficher ou non les actions de gestion des demandeurs
1175 nhaye 838 $linkable = true;
1176     } else {
1177 fmichon 1723 // Sinon on positionne le marqueur linkable a false qui permet
1178     // d'afficher ou non les actions de gestion des demandeurs
1179 nhaye 838 $linkable = false;
1180     }
1181 nhaye 1020
1182 fmichon 1723 // Affichage des demandeurs et des actions
1183 nhaye 807 // Conteneur de la listes des demandeurs
1184 nhaye 1097 echo "<div id=\"liste_demandeur\" class=\"demande_hidden_bloc col_12\">";
1185 nhaye 807 echo "<fieldset class=\"cadre ui-corner-all ui-widget-content\">";
1186     echo " <legend class=\"ui-corner-all ui-widget-content ui-state-active\">"
1187     ._("Petitionnaire")."</legend>";
1188     // Si des demandeurs sont liés à la demande
1189 nhaye 828 require_once "../obj/petitionnaire.class.php";
1190     require_once "../obj/delegataire.class.php";
1191 nhaye 1097 // Affichage du bloc pétitionnaire principal / délégataire
1192     // L'ID DU DIV SUIVANT EST NECESSAIRE AU BON FONCTIONNEMENT DU JS
1193 nhaye 1672 echo "<div id=\"petitionnaire_principal_delegataire\">";
1194 nhaye 1097 // Affichage de la synthèse
1195     if (isset ($this->valIdDemandeur["petitionnaire_principal"]) AND
1196     !empty($this->valIdDemandeur["petitionnaire_principal"])) {
1197     $demandeur = new petitionnaire(
1198     $this->valIdDemandeur["petitionnaire_principal"],
1199     $this->f->db,false);
1200     $demandeur -> afficherSynthese("petitionnaire_principal", $linkable);
1201     $demandeur -> __destruct();
1202     } elseif ( isset ($this->postedIdDemandeur["petitionnaire_principal"]) AND
1203     !empty($this->postedIdDemandeur["petitionnaire_principal"]) ) {
1204     $demandeur = new petitionnaire(
1205     $this->postedIdDemandeur["petitionnaire_principal"],
1206     $this->f->db,false);
1207     $demandeur -> afficherSynthese("petitionnaire_principal", $linkable);
1208     $demandeur -> __destruct();
1209     }
1210     // Si en édition de formulaire
1211     if($maj < 2) {
1212     // Bouton d'ajout du pétitionnaire principal
1213     // L'ID DE L'INPUT SUIVANT EST NECESSAIRE AU BON FONCTIONNEMENT DU JS
1214     echo "<span id=\"add_petitionnaire_principal\"
1215     class=\"om-form-button add-16\">".
1216     _("Saisir le petitionnaire principal").
1217     "</span>";
1218     }
1219     // Bouton d'ajout du delegataire
1220     // L'ID DU DIV ET DE L'INPUT SUIVANT EST NECESSAIRE AU BON FONCTIONNEMENT DU JS
1221     echo "<div id=\"delegataire\">";
1222     // Affichage de la synthèse
1223     if (isset ($this->valIdDemandeur["delegataire"]) AND
1224     !empty($this->valIdDemandeur["delegataire"])) {
1225     $demandeur = new delegataire($this->valIdDemandeur["delegataire"],
1226     $this->f->db,false);
1227     $demandeur -> afficherSynthese("delegataire", $linkable);
1228     $demandeur -> __destruct();
1229     } elseif ( isset ($this->postedIdDemandeur["delegataire"]) AND
1230     !empty($this->postedIdDemandeur["delegataire"]) ) {
1231 nhaye 807
1232 nhaye 1097 $demandeur = new delegataire($this->postedIdDemandeur["delegataire"],
1233     $this->f->db,false);
1234     $demandeur -> afficherSynthese("delegataire", $linkable);
1235     $demandeur -> __destruct();
1236     }
1237     if($maj < 2) {
1238     echo "<span id=\"add_delegataire\"
1239 vpihour 1075 class=\"om-form-button add-16\">".
1240 nhaye 1097 _("Saisir le delegataire").
1241 vpihour 1051 "</span>";
1242 nhaye 1097 }
1243     echo "</div>";
1244 nhaye 1118 echo "<div class=\"both\"></div>";
1245 nhaye 1097 echo "</div>";
1246     // Bloc des pétitionnaires secondaires
1247     // L'ID DU DIV SUIVANT EST NECESSAIRE AU BON FONCTIONNEMENT DU JS
1248 nhaye 1672 echo "<div id=\"listePetitionnaires\">";
1249 fmichon 1005
1250 nhaye 1097 // Affichage de la synthèse
1251     if (isset ($this->valIdDemandeur["petitionnaire"]) AND
1252     !empty($this->valIdDemandeur["petitionnaire"])) {
1253    
1254     foreach ($this->valIdDemandeur["petitionnaire"] as $petitionnaire) {
1255     $demandeur = new petitionnaire($petitionnaire,
1256     $this->f->db,false);
1257     $demandeur -> afficherSynthese("petitionnaire", $linkable);
1258 nhaye 1065 $demandeur -> __destruct();
1259     }
1260    
1261 nhaye 1097 } elseif ( isset ($this->postedIdDemandeur["petitionnaire"]) AND
1262     !empty($this->postedIdDemandeur["petitionnaire"]) ) {
1263     foreach ($this->postedIdDemandeur["petitionnaire"] as $petitionnaire) {
1264     $demandeur = new petitionnaire($petitionnaire,
1265     $this->f->db,false);
1266     $demandeur -> afficherSynthese("petitionnaire", $linkable);
1267     $demandeur -> __destruct();
1268 nhaye 828 }
1269 nhaye 1097 }
1270     if ($maj < 2) {
1271     // L'ID DE L'INPUT SUIVANT EST NECESSAIRE AU BON FONCTIONNEMENT DU JS
1272     echo "<span id=\"add_petitionnaire\"
1273     class=\"om-form-button add-16\">".
1274     _("Ajouter un petitionnaire")
1275     ."</span>";
1276     }
1277     echo "</div>";
1278 nhaye 807 echo "</fieldset>";
1279     echo "</div>";
1280     }
1281    
1282 nhaye 1097 // {{{
1283    
1284     // getter
1285     function getValIdDemandeur() {
1286     return $this->valIdDemandeur;
1287     }
1288     // setter
1289     function setValIdDemandeur($valIdDemandeur) {
1290     $this->valIdDemandeur = $valIdDemandeur;
1291     }
1292 vpihour 1106
1293     //Supression du lien entre la demandeur et le(s) demandeur(s)
1294     function triggerSupprimer($id, &$db, $val, $DEBUG){
1295    
1296     //Création de la requête
1297     $sql = "DELETE FROM
1298     ".DB_PREFIXE."lien_demande_demandeur
1299     WHERE
1300     demande = $id";
1301    
1302     $res = $this->f->db->query($sql);
1303 vpihour 1777 $this->f->addToLog("triggerSupprimer() : db->query(\"".$sql."\")");
1304     if ( database::isError($res)){
1305     die();
1306     }
1307 vpihour 1106 }
1308    
1309 nhaye 1097 // }}}
1310 softime 2071
1311    
1312     /**
1313     * Cette fonction permet de récupérer les informations nécessaires
1314     * à la génération du nom du répertoire
1315     * @param string $dossier Identifiant du dossier
1316     * @return array Tableau des résultats
1317     */
1318     private function getInfosForFoldername($dossier) {
1319    
1320     //Requête SQL
1321     $sql = "SELECT dossier.dossier_autorisation, dossier_instruction_type.code, dossier.version
1322     FROM ".DB_PREFIXE."dossier
1323     LEFT JOIN ".DB_PREFIXE."dossier_instruction_type
1324     ON dossier_instruction_type.dossier_instruction_type = dossier.dossier_instruction_type
1325     WHERE dossier.dossier = '".$dossier."'";
1326     $res = $this->f->db->query($sql);
1327     $this->addToLog("getInfosForFoldername() : db->query(".$sql.")", VERBOSE_MODE);
1328     database::isError($res);
1329    
1330     // tableau des résultats
1331     $row = $res->fetchRow(DB_FETCHMODE_ASSOC);
1332    
1333     // retourne le tableau des résultats
1334     return $row;
1335     }
1336    
1337     /**
1338     * Cette fonction permet la création du répertoire dans le dossier de numérisation
1339     * @param string $dossier_autorisation Identifiant dossier d'autorisation
1340     * @param string $code Type du dossier d'instruction
1341     * @param int $version Numéro de version du dossier
1342     * @return boolean Vrai ou Faux
1343     */
1344     private function createFolder($dossier_autorisation, $code, $version) {
1345    
1346     // génération du nom du répertoire
1347     $foldername = $dossier_autorisation.".".$code.$version;
1348    
1349     // création du répertoire dans le dossier de numérisation
1350 softime 2072 if (isset($this->f->config["path_scan"])) {
1351     $dir = $this->f->config["path_scan"]."Todo/";
1352     // vérifie que le répêrtoire des "à traiter" existe
1353     // et qu'un répertoire du dossier n'existe pas déjà
1354     if (is_dir($dir) && !file_exists($dir.$foldername)) {
1355     mkdir($dir.$foldername, 0777);
1356     // si la création a réussi
1357     $this->addToLog("createFolder() : Success", VERBOSE_MODE);
1358     return true;
1359     }
1360 softime 2071 }
1361    
1362     // en cas d'échec
1363     $this->addToLog("createFolder() : Failure", VERBOSE_MODE);
1364     return false;
1365     }
1366    
1367 vpihour 632 }// fin classe
1368 fmichon 1005 ?>

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26