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

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

Parent Directory Parent Directory | Revision Log Revision Log


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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26