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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2453 - (hide annotations)
Fri Nov 8 19:13:11 2013 UTC (11 years, 2 months ago) by softime
File size: 34202 byte(s)
Gestion du paramètrage des événements avant AR et des événements AR :
FAIT :
      → ajout du champ retour de type booléen
      → filtre sur les select retour ar et retour signature pour ne récupérer que les événement où retour = true
      → filtre sur suivant tacite où retour = false
      → fonction javascript pour cacher le fieldset "événements liés" et mettre en static les champs :
         * délai
         * décision tacite (actuellement libellé "accord tacite")
         * avis
         * restriction
         * délai de notification
      → fonction js qui fait l'inverse
      → Ajout de vérification dans verifier de la classe evenement
         ⋅ que l'événement choisi en retour ar ne soit pas déjà choisi en retour ar ou retour signature dans un autre evn
         ⋅ idem pour evn choisi retour signature
         ⋅ qu'un même événement ne soit pas choisi dans retour ar et retour signature en même temps sur le même formulaire
      → Création d'un widget checkboxhiddenstatic pour le mode modifier où le champ retour ne doit pas être modifié
      → Modification de app/workflow.php pour afficher [RETOUR] à côtés des événements "retour"

   À FAIRE :
      → Résoudre problème dans la fonction copyParametersToEvenementLink() de la classe événement : Dans l'événement retour qui est modifié, les champs etats_depuis_lequel_l_evenement_est_disponible et dossier_instruction_type sont supprimé. La solution rapide et radicale serait d'utiliser un autoExecute à la place du ->modifier().

Test fonctionnel OK

1 fraynaud 3 <?php
2 fmichon 1540 /**
3 fmichon 1549 * Ce fichier contient la déclaration de la classe "evenement".
4 fmichon 1540 *
5     * @package openfoncier
6     * @version SVN : $Id$
7     */
8 fraynaud 3
9 fmichon 1540 //
10     require_once "../gen/obj/evenement.class.php";
11    
12 fmichon 1549 /**
13     *
14     *
15     */
16 fraynaud 3 class evenement extends evenement_gen {
17    
18 fmichon 1540 function evenement($id, &$db, $debug) {
19     $this->constructeur($id, $db, $debug);
20     }
21 fraynaud 3
22 fmichon 1540 function setType(&$form, $maj) {
23     //
24     parent::setType($form, $maj);
25     // MODE AJOUTER et MODE MODIFIER
26     if ($maj == 0 || $maj == 1) {
27     //
28 fraynaud 7 $form->setType('accord_tacite', 'select');
29     $form->setType('delai_notification', 'select');
30     $form->setType('delai', 'select');
31     $form->setType('lettretype', 'select');
32 nhaye 433 $form->setType('consultation', 'checkbox');
33 vpihour 1133 $form->setType('dossier_instruction_type','select_multiple');
34 fmichon 1503 $form->setType('type','select');
35 fmichon 1540 $form->setType('etats_depuis_lequel_l_evenement_est_disponible','select_multiple');
36 fraynaud 7 }
37 fmichon 1540 // MODE SUPPRIMER et MODE CONSULTER
38     if ($maj == 2 || $maj == 3) {
39     //
40 vpihour 1133 $form->setType('dossier_instruction_type','select_multiple_static');
41 fmichon 1540 $form->setType('etats_depuis_lequel_l_evenement_est_disponible','select_multiple_static');
42     }
43 softime 2453
44     // Mode modifier
45     if ($maj == 1) {
46     // Champ non modifiable pour éviter un déréglement du paramètrage
47     // des événements
48     $form->setType('retour', 'checkboxhiddenstatic');
49     }
50    
51     // Cache les champs en fonction de la valeur de 'retour'
52     if ($this->getVal("retour") == 't') {
53    
54     // Cache le fieldset "Événements liés"
55     $form->setType('evenement_suivant_tacite', 'hidden');
56     $form->setType('evenement_retour_ar', 'hidden');
57     $form->setType('evenement_retour_signature', 'hidden');
58    
59     // En mode Ajouter et Modifier
60     if ($maj < 2) {
61     $form->setType('restriction', 'hiddenstatic');
62     $form->setType('delai', 'hiddenstatic');
63     $form->setType('accord_tacite', 'hiddenstatic');
64     $form->setType('delai_notification', 'hiddenstatic');
65     $form->setType('avis_decision', 'hiddenstatic');
66     }
67     }
68 fraynaud 7 }
69 atreal 312
70 fmichon 1540 function setSelect(&$form, $maj, $db, $debug) {
71     //
72     parent::setSelect($form, $maj, $db, $debug);
73     //
74     if(file_exists ("../sql/".$db->phptype."/".$this->table.".form.inc.php")) {
75     include ("../sql/".$db->phptype."/".$this->table.".form.inc.php");
76     }
77     //
78 atreal 312 if($maj<2){
79     // lettretype
80 vpihour 1133
81 atreal 312 $contenu=array();
82     $res = $db->query($sql_om_lettretype);
83     if (database::isError($res))
84     die($res->getMessage().$sql_om_lettretype);
85     else{
86     if ($debug == 1)
87     echo " la requete ".$sql_om_lettretype." est executee<br>";
88     $contenu[0][0]='';
89     $contenu[1][0]=_('choisir')."&nbsp;"._('lettretype');
90     $k=1;
91     while ($row=& $res->fetchRow()){
92     $contenu[0][$k]=$row[0];
93     $contenu[1][$k]=$row[1];
94     $k++;
95     }
96     $form->setSelect('lettretype',$contenu);
97     }// fin error db
98 fraynaud 7 }
99     // accord_tacite
100     $contenu=array();
101     $contenu[0]=array('Non','Oui');
102     $contenu[1]=array($this->lang('Non'),$this->lang('Oui'));
103     $form->setSelect("accord_tacite",$contenu);
104     // delai_notification
105     $contenu=array();
106     $contenu[0]=array('0','1');
107     $contenu[1]=array('sans','1 '.$this->lang("mois"));
108     $form->setSelect("delai_notification",$contenu);
109     // delai
110     $contenu=array();
111     $contenu[0]=array('0','1','2','3','4','5','6','7','8','9','10','11','12','18','24');
112     $contenu[1]=array('sans',
113     '1 '._("mois"),
114     '2 '._("mois"),
115     '3 '._("mois"),
116     '4 '._("mois"),
117     '5 '._("mois"),
118     '6 '._("mois"),
119     '7 '._("mois"),
120     '8 '._("mois"),
121     '9 '._("mois"),
122     '10 '._("mois"),
123     '11 '._("mois"),
124     '12 '._("mois"),
125     '18 '._("mois"),
126     '24 '._("mois")
127 atreal 312 );
128 fraynaud 7 $form->setSelect("delai",$contenu);
129 fmichon 1503
130     // type de l'événement
131     $contenu=array();
132 nhaye 2316 $contenu[0]=array(
133     '',
134     'arrete',
135     'incompletude',
136     'majoration_delai',
137     'retour');
138     $contenu[1]=array(
139     _('choisir type'),
140     _('arrete'),
141     _('incompletude'),
142     _('majoration_delai'),
143     _('retour de pieces')
144     );
145 fmichon 1503 $form->setSelect("type",$contenu);
146    
147 vpihour 1133 // dossier_instruction_type
148     $this->init_select($form, $db, $maj, $debug, "dossier_instruction_type",
149 fmichon 1540 $sql_dossier_instruction_type, $sql_dossier_instruction_type_by_id, false, true);
150     // dossier_instruction_type
151     $this->init_select($form, $db, $maj, $debug, "etats_depuis_lequel_l_evenement_est_disponible",
152     $sql_etats_depuis_lequel_l_evenement_est_disponible, $sql_etats_depuis_lequel_l_evenement_est_disponible_by_id, false, true);
153 softime 2453
154     // evenement_retour_ar filtre seulement les evenements dont le booléen
155     // retour est à true
156     $this->init_select($form, $db, $maj, $debug, "evenement_retour_ar",
157     $sql_evenement_retour_ar, $sql_evenement_retour_ar_by_id, false);
158    
159     // evenement_retour_signature filtre seulement les evenements dont le
160     // booléen retour est à true
161     $this->init_select($form, $db, $maj, $debug, "evenement_retour_signature",
162     $sql_evenement_retour_signature, $sql_evenement_retour_signature_by_id, false);
163    
164     // evenement_suivant_tacite filtre seulement les evenements dont le
165     // booléen retour est à false
166     $this->init_select($form, $db, $maj, $debug, "evenement_suivant_tacite",
167     $sql_evenement_suivant_tacite, $sql_evenement_suivant_tacite_by_id, false);
168    
169 fraynaud 7 }
170 fmichon 1540
171 vpihour 1133 function setTaille(&$form, $maj) {
172 fmichon 1540 //
173 vpihour 1133 parent::setTaille($form, $maj);
174 fmichon 1540 //
175     $form->setTaille("dossier_instruction_type", 10);
176     $form->setTaille("etats_depuis_lequel_l_evenement_est_disponible", 10);
177 vpihour 1133 }
178 fmichon 1540
179 vpihour 1133 function setMax(&$form, $maj) {
180 fmichon 1540 //
181 vpihour 1133 parent::setMax($form, $maj);
182 fmichon 1540 //
183 vpihour 1133 $form->setMax("dossier_instruction_type", 5);
184 fmichon 1540 $form->setMax("etats_depuis_lequel_l_evenement_est_disponible", 5);
185 vpihour 1133 }
186 fraynaud 7
187 fmichon 1540 function setLib(&$form, $maj) {
188     //
189     parent::setLib($form, $maj);
190     //
191     $form->setLib("dossier_instruction_type", _("type(s) de DI concerne(s)"));
192     $form->setLib("etats_depuis_lequel_l_evenement_est_disponible", _("etat(s) source(s)"));
193 softime 2453 // Change le libellé de retour pour pas qu'il soit confondus avec le
194     // bouton
195     $form->setLib("retour", _("retour_evenement"));
196     // En ajout et en modification
197     if ($maj < 2) {
198     $form->setLib("retour", _("retour_evenement (parametrage non modifiable)"));
199     }
200    
201     // Message d'aide à l'utilisateur concernant les événements liés
202     $message_help = _("Les champs suivants seront copies vers l'evenement choisi :");
203     $champs_copy = _('delai') . ", " . _('accord_tacite') . ", " . _('delai_notification') . ", " . _('avis_decision') . ", " . _('restriction');
204     $form->setLib("evenement_retour_ar", _('evenement_retour_ar') . "<br> (" . $message_help . " " . $champs_copy . ")");
205     $form->setLib("evenement_retour_signature", _('evenement_retour_signature') . "<br> (" . $message_help . " " . $champs_copy . ")");
206 fmichon 1540 }
207    
208 fmichon 1543 function setLayout(&$form, $maj) {
209     //
210     parent::setLayout($form, $maj);
211     //
212     $form->setFieldset("evenement", "D", _("Evenement"));
213 softime 2453 $form->setFieldset("retour", "F");
214 fmichon 1543 //
215     $form->setFieldset("etats_depuis_lequel_l_evenement_est_disponible", "D", _("Filtre de selection"));
216 nhaye 1581 $form->setBloc("etats_depuis_lequel_l_evenement_est_disponible", "D", _("Filtres pour la possibilite de selection a l'ajout d'un evenement d'instruction"));
217 fmichon 1544 $form->setBloc("dossier_instruction_type", "F");
218 nhaye 1581 $form->setBloc("restriction", "DF", _("Filtre supplementaire a l'enregistrement de l'evenement d'instruction"));
219 fmichon 1544 $form->setFieldset("restriction", "F");
220 fmichon 1543 //
221     $form->setFieldset("action", "D", _("Action"));
222     $form->setBloc("action", "DF");
223     $form->setBloc("etat", "D", _("Parametres de l'action"));
224 softime 2453 $form->setBloc("autorite_competente", "F");
225     $form->setFieldset("autorite_competente", "F");
226 fmichon 1543 //
227     $form->setFieldset("lettretype", "D", _("Edition"));
228     $form->setFieldset("consultation", "F");
229 softime 2453 //
230     $form->setFieldset("evenement_suivant_tacite", "D", _("Evenements lies"), "evenements_lies");
231     $form->setFieldset("evenement_retour_signature", "F");
232 fmichon 1543 }
233    
234 vpihour 1133 //Ajoute autant de lien_dossier_instruction_type_evenement que de dossier_instruction_type
235     function triggerajouterapres($id,&$db,$val,$DEBUG) {
236 fmichon 1540 //
237 vpihour 1133 parent::triggerajouterapres($id,$db,$val,$DEBUG);
238 atreal 312
239 fmichon 1540 /**
240     * LIEN ETAT
241     */
242     // Récupération des données du select multiple
243     $etats_depuis_lequel_l_evenement_est_disponible = $this->getPostedValues('etats_depuis_lequel_l_evenement_est_disponible');
244     // Ne traite les données que s'il y en a et qu'elles sont correctes
245     if (is_array($etats_depuis_lequel_l_evenement_est_disponible)
246     && count($etats_depuis_lequel_l_evenement_est_disponible) > 0 ){
247     // Initialisation
248     $nb_liens_etat = 0;
249     // Boucle sur la liste des états sélectionnés
250     foreach ($etats_depuis_lequel_l_evenement_est_disponible as $value) {
251     // Test si la valeur par défaut est sélectionnée
252     if ($value != "") {
253     //
254     $donnees = array(
255     'evenement' => $this->valF['evenement'],
256     'etat' => $value
257     );
258     // On ajoute l'enregistrement
259     $this->ajouter_lien_etat_evenement($donnees);
260     // On compte le nombre d'éléments ajoutés
261     $nb_liens_etat++;
262     }
263     }
264     // Message de confirmation
265     if ($nb_liens_etat > 0) {
266     if ($nb_liens_etat == 1 ){
267     $this->addToMessage(_("Creation de ").$nb_liens_etat._(" nouvelle liaison realisee avec succes."));
268     } else{
269     $this->addToMessage(_("Creation de ").$nb_liens_etat._(" nouvelles liaisons realisees avec succes."));
270     }
271     }
272     }
273    
274     /**
275     * LIEN DI TYPE
276     */
277 vpihour 1133 //Récupère les données du select multiple
278     $dossier_instruction_type = $this->getPostedValues('dossier_instruction_type');
279     //Ne traite les données que s'il y en a et qu'elles sont correctes
280     if ( is_array($dossier_instruction_type) && count($dossier_instruction_type) > 0 ){
281    
282     $nb_tr = 0;
283 vpihour 1134 /* Va créer autant de lien_dossier_instruction_type_evenement
284     * que de dossier_instruction_type choisis */
285 vpihour 1133 foreach( $dossier_instruction_type as $value ){
286    
287     //Test si la valeur par défaut est sélectionnée
288     if ( $value != "" ) {
289    
290     //Données
291     $donnees = array(
292     'evenement' => $this->valF['evenement'],
293     'dossier_instruction_type' => $value
294     );
295    
296 vpihour 1134 //Ajoute un nouveau lien_dossier_instruction_type_evenement
297     $this->addLienDossierInstructionType($donnees, $db, $DEBUG);
298 vpihour 1133
299     $nb_tr++;
300     }
301     }
302    
303     //Message de confirmation de création de(s) lien_dossier_instruction_type_evenement(s).
304     if ( $nb_tr > 0 ){
305    
306     if ( $nb_tr == 1 ){
307    
308 vpihour 1173 $this->addToMessage(_("Creation de ").$nb_tr._(" nouvelle liaison
309 vpihour 1135 realisee avec succes."));
310 vpihour 1133 }
311     else{
312    
313 vpihour 1173 $this->addToMessage(_("Creation de ").$nb_tr._(" nouvelles liaisions
314 vpihour 1135 realisee avec succes."));
315 vpihour 1133 }
316     }
317     }
318 softime 2453
319     // Copie les paramètres vers l'événement lié
320     $this->copyParametersToEvenementLink($db, $DEBUG);
321 vpihour 1133
322     }
323    
324     //Fonction générique permettant de récupérer les données d'un champ postées
325     function getPostedValues($champ) {
326    
327     // Récupération des demandeurs dans POST
328     if (isset($_POST[$champ]) ) {
329    
330     return $_POST[$champ];
331     }
332     }
333    
334     //Modification des liens
335     function triggerModifierApres($id, &$db, $val, $DEBUG){
336 fmichon 1540 //
337 vpihour 1133 parent::triggerModifierApres($id, $db, $val, $DEBUG);
338 fmichon 1540
339     /**
340     * LIEN ETAT
341     */
342     // Suppression de tous les liens de la table transition (table lien
343     // entre etat et evenement)
344     $this->supprimer_liens_etat_evenement($this->valF['evenement']);
345     // Récupération des données du select multiple
346     $etats_depuis_lequel_l_evenement_est_disponible = $this->getPostedValues('etats_depuis_lequel_l_evenement_est_disponible');
347     // Ne traite les données que s'il y en a et qu'elles sont correctes
348     if (is_array($etats_depuis_lequel_l_evenement_est_disponible)
349     && count($etats_depuis_lequel_l_evenement_est_disponible) > 0 ){
350     // Initialisation
351     $nb_liens_etat = 0;
352     // Boucle sur la liste des états sélectionnés
353     foreach ($etats_depuis_lequel_l_evenement_est_disponible as $value) {
354     // Test si la valeur par défaut est sélectionnée
355     if ($value != "") {
356     //
357     $donnees = array(
358     'evenement' => $this->valF['evenement'],
359     'etat' => $value
360     );
361     // On ajoute l'enregistrement
362     $this->ajouter_lien_etat_evenement($donnees);
363     // On compte le nombre d'éléments ajoutés
364     $nb_liens_etat++;
365     }
366     }
367     // Message de confirmation
368     if ($nb_liens_etat > 0) {
369     $this->addToMessage(_("Mise a jour des liaisons realisee avec succes."));
370     }
371     }
372    
373     /**
374     * LIEN DI TYPE
375     */
376 vpihour 1133 //Supprime toutes les liaisions liées à l'événement
377     $this->deleteAllLienDossierInstructionTypeEvenementEvenement($this->valF['evenement'], $db, $DEBUG);
378    
379     //Récupère les données du select multiple
380     $dossier_instruction_type = $this->getPostedValues('dossier_instruction_type');
381    
382     //Ne traite les données que s'il y en a et qu'elles sont correctes
383     if ( is_array($dossier_instruction_type) && count($dossier_instruction_type) > 0 ){
384    
385     $nb_tr = 0;
386     //Va créer autant de lien_dossier_instruction_type_evenement que de dossier_instruction_type choisis
387     foreach( $dossier_instruction_type as $value ){
388    
389     //Test si la valeur par défaut est sélectionnée
390     if ( $value != "" ) {
391    
392     //Données
393     $donnees = array(
394     'evenement' => $this->valF['evenement'],
395     'dossier_instruction_type' => $value
396     );
397    
398 vpihour 1134 //Ajoute un nouveau lien_dossier_instruction_type_evenement
399     $this->addLienDossierInstructionType($donnees, $db, $DEBUG);
400 vpihour 1133
401     $nb_tr++;
402     }
403     }
404    
405 vpihour 1134 //Message de confirmation de création de(s) lien_dossier_instruction_type_evenement.
406 vpihour 1133 if ( $nb_tr > 0 ){
407    
408 fmichon 1159 $this->addToMessage(_("Mise a jour des liaisons realisee avec succes."));
409 vpihour 1133 }
410     }
411 softime 2453
412     // Copie les paramètres vers l'événement lié
413     $this->copyParametersToEvenementLink($db, $DEBUG);
414 vpihour 1133 }
415    
416 fmichon 1540 /**
417     * Ajout d'un lien dans la table transition (table lien entre etat et
418     * evenement)
419     */
420     function ajouter_lien_etat_evenement($data) {
421     //
422     require_once '../obj/transition.class.php';
423     $lien_etat_evenement = new transition("]", $this->db, false);
424     // ???
425     $lien_etat_evenement->valF = "";
426     $val['transition'] = NULL;
427     //
428     if (is_array($data)) {
429     foreach ($data as $key => $value) {
430     $val[$key]=$value;
431     }
432     }
433     //
434     $lien_etat_evenement->ajouter($val, $this->db, false);
435     }
436    
437     /**
438     * Suppression de tous les liens de la table transition (table lien entre
439     * etat etevenement)
440     */
441     function supprimer_liens_etat_evenement($id) {
442     // Suppression de tous les enregistrements correspondants à l'id de
443     // l'événement
444     $sql = "DELETE
445     FROM ".DB_PREFIXE."transition
446     WHERE evenement=".$id;
447     $res = $this->db->query($sql);
448     $this->f->addToLog("supprimer_liens_etat_evenement(): db->query(\"".$sql."\");", VERBOSE_MODE);
449 vpihour 1777 if ( database::isError($res)){
450     die();
451     }
452 fmichon 1540 }
453    
454 vpihour 1133 //Ajoute un nouveau lien_dossier_instruction_type_evenement
455     // $data array de données
456 vpihour 1134 function addLienDossierInstructionType($data, $db, $DEBUG){
457 vpihour 1133
458     require_once '../obj/lien_dossier_instruction_type_evenement.class.php';
459    
460     $lien_dossier_instruction_type_evenement = new lien_dossier_instruction_type_evenement("]",$db,$DEBUG);
461     $lien_dossier_instruction_type_evenement->valF = "";
462    
463     //Données
464     $vallien_dossier_instruction_type_evenement['lien_dossier_instruction_type_evenement']=NULL;
465    
466     if ( is_array($data) ){
467    
468     foreach ($data as $key => $value) {
469    
470     $vallien_dossier_instruction_type_evenement[$key]=$value;
471     }
472     }
473    
474     $lien_dossier_instruction_type_evenement->ajouter($vallien_dossier_instruction_type_evenement, $db, $DEBUG);
475     }
476    
477     //Supprime toutes les lien_dossier_instruction_type_evenement liées à un événement
478     function deleteAllLienDossierInstructionTypeEvenementEvenement($id, $db, $DEBUG){
479    
480     //Création de la requête
481     $sql = "DELETE FROM
482     ".DB_PREFIXE."lien_dossier_instruction_type_evenement
483     WHERE
484     evenement = $id";
485    
486     //Exécution de la requête
487     $res = $db->query($sql);
488    
489     //Ajout au log
490     $this->f->addToLog("deleteAllLienDossierInstructionTypeEvenementEvenement(): db->query(\"".$sql."\");", VERBOSE_MODE);
491 vpihour 1777 if ( database::isError($res)){
492     die();
493     }
494 vpihour 1133 }
495    
496     function triggersupprimer($id, &$db, $val, $DEBUG){
497 fmichon 1540 // Suppression de tous les liens de la table transition (table lien
498     // entre etat et evenement)
499     $this->supprimer_liens_etat_evenement($id);
500 vpihour 1134 //Supprime toutes les lien_dossier_instruction_type_evenement liées à l'evenement
501 vpihour 1133 $this->deleteAllLienDossierInstructionTypeEvenementEvenement($id, $db, $DEBUG);
502     }
503    
504     /* Surcharge de la fonction cleSecondaire pour qu'elle ne vérifie pas le lien avec
505 fmichon 1540 * lien_dossier_instruction_type_evenement qui sera supprimé juste après ni avec la table transition*/
506 vpihour 1133 function cleSecondaire($id, &$db = NULL, $val = array(), $DEBUG = false) {
507    
508     // Verification de la cle secondaire : bible
509     $this->rechercheTable($db, "bible", "evenement", $id);
510     // Verification de la cle secondaire : demande_type
511     $this->rechercheTable($db, "demande_type", "evenement", $id);
512     // Verification de la cle secondaire : evenement
513     $this->rechercheTable($db, "evenement", "evenement_retour_ar", $id);
514     // Verification de la cle secondaire : evenement
515     $this->rechercheTable($db, "evenement", "evenement_suivant_tacite", $id);
516     // Verification de la cle secondaire : instruction
517     $this->rechercheTable($db, "instruction", "evenement", $id);
518 fmichon 1540 //// Verification de la cle secondaire : transition
519     //$this->rechercheTable($db, "transition", "evenement", $id);
520 vpihour 1133 }
521    
522 vpihour 1134 //Affichage des dossier_instruction_type anciennement liés
523 vpihour 1133 function setVal(&$form, $maj, $validation, &$db) {
524    
525     parent::setVal($form, $maj, $validation, $db);
526    
527     if($maj == 2 && $validation == 1 ) {
528     $form->setVal("dossier_instruction_type",$this->val[count($this->val)-1]);
529     }
530     }
531    
532 softime 2305 function verifier($val = array(), &$db, $DEBUG){
533     parent::verifier($val, $db, $DEBUG);
534    
535     //Test qu'une restriction est présente
536     if (isset($this->valF['restriction']) && $this->valF['restriction'] != ""){
537    
538     $restriction = $this->valF['restriction'];
539    
540     // Liste des opérateurs possible
541     $operateurs = array(">=", "<=", "+", "-");
542    
543     // Supprime tous les espaces de la chaîne de caractère
544     $restriction = str_replace(' ', '', $restriction);
545    
546     // Met des espace avant et après les opérateurs puis transforme la
547     // chaine en un tableau
548     $tabRestriction = str_replace($operateurs, " ", $restriction);
549     // Tableau des champ
550     $tabRestriction = explode(" ", $tabRestriction);
551     // Supprime les numériques du tableau
552     foreach ($tabRestriction as $key => $value) {
553     if (is_numeric($value)) {
554     unset($tabRestriction[$key]);
555     }
556     }
557    
558     // Vérifie les champs utilisés pour la restriction
559     $check_field_exist = $this->f->check_field_exist($tabRestriction,
560     'instruction');
561     if ($check_field_exist !== true) {
562    
563     // Liste des champs en erreur
564     $string_error_fields = implode(", ", $check_field_exist);
565    
566     // Message d'erreur
567     $error_message = _("Le champ %s n'est pas utilisable pour le champ %s");
568     if (count($check_field_exist) > 1) {
569     $error_message = _("Les champs %s ne sont pas utilisable pour le champ %s");
570     }
571    
572     // Affiche l'erreur
573     $this->correct=false;
574     $this->addToMessage(sprintf($error_message, $string_error_fields, _("restriction")));
575     }
576     }
577 softime 2453
578     // Identifiant de l'évenement en cours
579     $evenement_main = "";
580     // Si pas en mode "Ajouter"
581     if ($this->getParameter("maj") != 0) {
582     $evenement_main = $this->valF['evenement'];
583     }
584    
585     //
586     $error_retour = false;
587    
588     // Si le même événement retour est sélectionné pour le retour ar et le
589     // retour signature
590     if (isset($this->valF['evenement_retour_ar'])
591     && $this->valF['evenement_retour_ar'] != ""
592     && isset($this->valF['evenement_retour_signature'])
593     && $this->valF['evenement_retour_signature'] != "") {
594    
595     //
596     if ($this->valF['evenement_retour_ar'] == $this->valF['evenement_retour_signature']) {
597    
598     // Récupère l'événement
599     $evenement_retour = $this->valF['evenement_retour_ar'];
600    
601     // Récupère le libelle de l'événement
602     $evenement_retour_libelle = $this->getEvenementLibelle($evenement_retour);
603    
604     // Message d'erreur
605     $error_message = _("L'evenement \"%s\" ne peut pas etre utilise en tant qu'evenement d'accuse de reception et evenement de retour de signature.");
606    
607     // Le formulaire n'est pas validé
608     $this->correct=false;
609     $this->addToMessage(sprintf($error_message, $evenement_retour_libelle));
610     $error_retour = true;
611     }
612     }
613    
614     // Si l'erreur concernant la double utilisation d'une événement retour
615     // sur le même formulaire n'est pas activé
616     if ($error_retour === false) {
617    
618     // Vérifie que l'événement "evenement_retour_signature" n'est pas
619     // utilisé en evenement retour
620     $this->checkEvenementRetour('evenement_retour_signature', $evenement_main);
621     // Vérifie que l'événement n'est pas déjà utilisé en tant que
622     // "evenement_retour_ar"
623     $this->checkEvenementRetour('evenement_retour_ar', $evenement_main);
624     }
625    
626     // Si c'est un événement retour
627     if (isset($this->valF['retour'])
628     && $this->valF['retour'] === true) {
629    
630     // Supprime les valeurs des champs
631     unset($this->valF['evenement_suivant_tacite']);
632     unset($this->valF['evenement_retour_ar']);
633     unset($this->valF['evenement_retour_signature']);
634     }
635 softime 2305 }
636    
637 softime 2453 /**
638     * Vérifie que l'événement $champ n'est pas déjà utilisé en événement
639     * 'evenement_retour_ar' et 'evenement_retour_signature'
640     * @param string $champ Champ à tester
641     * @param integer $evenement_main Identifiant de l'événement en cours
642     */
643     function checkEvenementRetour($champ, $evenement_main) {
644    
645     // Si un l'évenement est renseigné
646     if (isset($this->valF[$champ])
647     && $this->valF[$champ] != "") {
648    
649     // Récupère l'événement
650     $evenement_retour = $this->valF[$champ];
651    
652     // Récupère le libelle de l'événement
653     $evenement_libelle = $this->getEvenementLibelle($evenement_retour);
654    
655     // Si l'événement est utilisé en tant que "evenement_retour_ar"
656     if ($this->checkEvenementIsUse($evenement_retour, 'evenement_retour_ar', $evenement_main)) {
657    
658     // Message d'erreur
659     $error_message = _("L'evenement \"%s\" est deja utilise en tant qu'evenement d'accuse de reception.");
660    
661     // Le formulaire n'est pas validé
662     $this->correct=false;
663     $this->addToMessage(sprintf($error_message, $evenement_libelle));
664     }
665    
666     // Si l'événement est utilisé en tant que
667     // "evenement_retour_signature"
668     if ($this->checkEvenementIsUse($evenement_retour, 'evenement_retour_signature', $evenement_main)) {
669    
670     // Message d'erreur
671     $error_message = _("L'evenement \"%s\" est deja utilise en tant qu'evenement de retour de signature.");
672    
673     // Le formulaire n'est pas validé
674     $this->correct=false;
675     $this->addToMessage(sprintf($error_message, $evenement_libelle));
676     }
677     }
678    
679     }
680    
681     /**
682     * Vérifie si l'événement est déjà utilisé dans un autre champ
683     * @param integer $evenement Identifiant de l'événement
684     * @return boolean
685     */
686     function checkEvenementIsUse($evenement_link, $champ, $evenement_main) {
687    
688     // Initialisation du retour de la fonction
689     $return = false;
690    
691     // Si les paramètres ne sont pas vide
692     if ($evenement_link != "" && $champ != "") {
693    
694     // Requête SQL
695     $sql = "SELECT evenement
696     FROM ".DB_PREFIXE."evenement
697     WHERE $champ = $evenement_link";
698    
699     // Si l'événement principal est déjà crée
700     if ($evenement_main != "") {
701     // Il ne faut pas que l'événement principal soit pris en compte
702     $sql .= " AND evenement != $evenement_main";
703     }
704    
705     $this->f->addToLog("checkEvenementIsUse() : db->query(\"".$sql."\")", VERBOSE_MODE);
706     $res = $this->db->query($sql);
707     $this->f->isDatabaseError($res);
708    
709     // Si il y a un résultat à la requête
710     if ($res->numrows() > 0) {
711    
712     // Change la valeur de retour
713     $return = true;
714     }
715     }
716    
717     // Retourne le résultat de la fonction
718     return $return;
719    
720     }
721    
722     /**
723     * Récupère le libellé de l'evénement passé en paramètre
724     * @param integer $evenement Identifiant de l'événement
725     * @return string Libellé de l'événement
726     */
727     function getEvenementLibelle($evenement) {
728    
729     // Initialisation du résultat
730     $libelle = '';
731    
732     // Si la condition n'est pas vide
733     if ($evenement != "") {
734    
735     // Requête SQL
736     $sql = "SELECT libelle
737     FROM ".DB_PREFIXE."evenement
738     WHERE evenement = $evenement";
739     $this->f->addToLog("getEvenementLibelle() : db->getOne(\"".$sql."\")", VERBOSE_MODE);
740     $libelle = $this->db->getOne($sql);
741     $this->f->isDatabaseError($libelle);
742     }
743    
744     // Retourne résultat
745     return $libelle;
746     }
747    
748     /**
749     * Copie les paramétres de l'événement principal vers l'évévenement lié
750     * @param object $db [description]
751     * @param mixed $DEBUG [description]
752     */
753     function copyParametersToEvenementLink($db, $DEBUG) {
754    
755     // Si un évenement retour de signature est renseigné
756     if (isset($this->valF['evenement_retour_signature'])
757     && $this->valF['evenement_retour_signature'] != "") {
758    
759     // Instanciation de la classe evenement
760     $evenement_retour_signature = new evenement($this->valF['evenement_retour_signature'], $db, $DEBUG);
761     $evenement_retour_signature->setParameter("maj",1);
762    
763     // Valeurs de l'enregistrement
764     $value_evenement_retour_signature = array();
765     foreach($evenement_retour_signature->champs as $key => $champ) {
766     //
767     $value_evenement_retour_signature[$champ] = $evenement_retour_signature->val[$key];
768     }
769    
770     // Valeurs à modifier
771     $value_evenement_retour_signature['delai'] = $this->valF['delai'];
772     $value_evenement_retour_signature['accord_tacite'] = $this->valF['accord_tacite'];
773     $value_evenement_retour_signature['delai_notification'] = $this->valF['delai_notification'];
774     $value_evenement_retour_signature['avis_decision'] = $this->valF['avis_decision'];
775     $value_evenement_retour_signature['restriction'] = $this->valF['restriction'];
776    
777     // Récupère le libelle de l'événement
778     $evenement_retour_signature_libelle = $this->getEvenementLibelle($value_evenement_retour_signature['evenement']);
779    
780     // Message de validation
781     $valid_message = _("Mise a jour de l'evenement lie \"%s\" realisee avec succes.");
782    
783     // Modifie l'événement lié pour qu'il ait les mêmes paramètres
784     // que l'événement principal
785     if ($evenement_retour_signature->modifier($value_evenement_retour_signature, $db, $DEBUG)) {
786    
787     //
788     $this->addToMessage(sprintf($valid_message, $evenement_retour_signature_libelle));
789     }
790    
791     }
792    
793     // Si un évenement retour d'accusé de réception est renseigné
794     if (isset($this->valF['evenement_retour_ar'])
795     && $this->valF['evenement_retour_ar'] != "") {
796    
797     // Instanciation de la classe evenement
798     $evenement_retour_ar = new evenement($this->valF['evenement_retour_ar'], $db, $DEBUG);
799     $evenement_retour_ar->setParameter("maj",1);
800    
801     // Valeurs de l'enregistrment
802     $value_evenement_retour_ar = array();
803     foreach($evenement_retour_ar->champs as $key => $champ) {
804     //
805     $value_evenement_retour_ar[$champ] = $evenement_retour_ar->val[$key];
806     }
807    
808     // Valeurs à modifier
809     $value_evenement_retour_ar['delai'] = $this->valF['delai'];
810     $value_evenement_retour_ar['accord_tacite'] = $this->valF['accord_tacite'];
811     $value_evenement_retour_ar['delai_notification'] = $this->valF['delai_notification'];
812     $value_evenement_retour_ar['avis_decision'] = $this->valF['avis_decision'];
813     $value_evenement_retour_ar['restriction'] = $this->valF['restriction'];
814    
815     // Récupère le libelle de l'événement
816     $evenement_retour_ar_libelle = $this->getEvenementLibelle($value_evenement_retour_ar['evenement']);
817    
818     // Message de validation
819     $valid_message = _("Mise a jour de l'evenement lie \"%s\" realisee avec succes.");
820     // Modifie l'événement lié pour qu'il ait les mêmes paramètres
821     // que l'événement principal
822     if ($evenement_retour_ar->modifier($value_evenement_retour_ar, $db, $DEBUG)) {
823    
824     //
825     $this->addToMessage(sprintf($valid_message, $evenement_retour_ar_libelle));
826     }
827    
828     }
829     }
830    
831     function setOnchange(&$form, $maj) {
832     parent::setOnchange($form, $maj);
833    
834     //
835     $form->setOnchange('retour','retourOnchangeEvenement(this)');
836     }
837    
838 fmichon 1549 }
839    
840     ?>

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26