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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 19592 - (show annotations)
Wed Jan 22 18:04:27 2025 UTC (4 days, 11 hours ago) by softime
File size: 58483 byte(s)
merge: fusion de la branche d'intégration v6.10.0-develop dans le trunk

1 <?php
2 /**
3 * DBFORM - 'evenement' - Surcharge gen.
4 *
5 * Ce script permet de définir la classe 'evenement'.
6 *
7 * @package openads
8 * @version SVN : $Id$
9 */
10
11 require_once "../gen/obj/evenement.class.php";
12
13 class evenement extends evenement_gen {
14
15 /**
16 * Liaison NaN
17 *
18 * Tableau contenant les objets qui représente les liaisons.
19 */
20 var $liaisons_nan = array(
21 "evenement_type_habilitation_tiers_consulte" => array(
22 "table_l" => "evenement_type_habilitation_tiers_consulte",
23 "table_f" => "type_habilitation_tiers_consulte",
24 "field" => "type_habilitation_tiers_consulte",
25 )
26 );
27
28 /**
29 * Surcharge pour activer les 'modules' sur cet objet
30 */
31 /*function __construct($id, &$dnu1 = null, $dnu2 = null) {
32 $this->disable_modules = false;
33 parent::__construct($id, $dnu1, $dnu2);
34 }*/
35
36 /**
37 * Définition des actions disponibles sur la classe.
38 *
39 * @return void
40 */
41 public function init_class_actions() {
42
43 parent::init_class_actions();
44
45 // ACTION - 000 - ajouter
46 // Modifie la condition d'affichage du bouton ajouter
47 $this->class_actions[0]["condition"] = "is_addable_editable_and_deletable";
48
49 // ACTION - 001 - modifier
50 // Modifie la condition et le libellé du bouton modifier
51 $this->class_actions[1]["condition"] = "is_addable_editable_and_deletable";
52
53 // ACTION - 002 - supprimer
54 // Modifie la condition et le libellé du bouton supprimer
55 $this->class_actions[2]["condition"] = "is_addable_editable_and_deletable";
56 }
57
58 /**
59 *
60 */
61 function setValF($val = array()) {
62 parent::setValF($val);
63 $this->valF['delai'] = $this->f->formatage_regles($this->valF['delai']);
64 $this->valF['delai_notification'] = $this->f->formatage_regles($this->valF['delai_notification']);
65 }
66
67 /**
68 * Clause select pour la requête de sélection des données de l'enregistrement.
69 *
70 * @return array
71 */
72 function get_var_sql_forminc__champs() {
73 return array(
74 "evenement.evenement",
75 "evenement.libelle",
76 "evenement.type",
77 "evenement.commentaire",
78 "evenement.non_verrouillable",
79 "evenement.non_modifiable",
80 "evenement.non_supprimable",
81 "evenement.signataire_obligatoire",
82 "evenement.notification",
83 "evenement.notification_service",
84 "evenement.notification_tiers",
85 "evenement.tiers_destinataire",
86 "array_to_string(array_agg(distinct(type_habilitation_tiers_consulte) ORDER BY type_habilitation_tiers_consulte), ';') as type_habilitation_tiers_consulte",
87 "evenement.envoi_cl_platau",
88 "evenement.retour",
89 "array_to_string(array_agg(distinct(transition.etat) ORDER BY transition.etat), ';') as etats_depuis_lequel_l_evenement_est_disponible",
90 "array_to_string(array_agg(distinct(dossier_instruction_type) ORDER BY dossier_instruction_type), ';') as dossier_instruction_type",
91 "evenement.restriction",
92 "evenement.action",
93 "evenement.etat",
94 "evenement.delai",
95 "evenement.accord_tacite",
96 "evenement.delai_notification",
97 "evenement.avis_decision",
98 "evenement.autorite_competente",
99 "evenement.pec_metier",
100 "evenement.lettretype",
101 "evenement.consultation",
102 "evenement.phase",
103 "evenement.finaliser_automatiquement",
104 "evenement.document_type",
105 "evenement.evenement_suivant_tacite",
106 "evenement.evenement_retour_ar",
107 "evenement.evenement_retour_signature",
108 );
109 }
110
111 /**
112 * Clause from pour la requête de sélection des données de l'enregistrement.
113 *
114 * @return string
115 */
116 function get_var_sql_forminc__tableSelect() {
117 return sprintf(
118 '%1$s%2$s
119 LEFT JOIN %1$s evenement_type_habilitation_tiers_consulte
120 ON evenement.evenement = evenement_type_habilitation_tiers_consulte.evenement
121 LEFT JOIN %1$slien_dossier_instruction_type_evenement
122 ON lien_dossier_instruction_type_evenement.evenement=evenement.evenement
123 LEFT JOIN %1$stransition
124 ON transition.evenement=evenement.evenement',
125 DB_PREFIXE,
126 $this->table
127 );
128 }
129
130 /**
131 *
132 * @return string
133 */
134 function get_var_sql_forminc__sql_type_habilitation_tiers_consulte() {
135 return sprintf(
136 'SELECT
137 type_habilitation_tiers_consulte.type_habilitation_tiers_consulte,
138 type_habilitation_tiers_consulte.libelle
139 FROM
140 %stype_habilitation_tiers_consulte
141 WHERE
142 (
143 (
144 type_habilitation_tiers_consulte.om_validite_debut IS NULL
145 AND (
146 type_habilitation_tiers_consulte.om_validite_fin IS NULL
147 OR type_habilitation_tiers_consulte.om_validite_fin > CURRENT_DATE
148 )
149 )
150 OR (
151 type_habilitation_tiers_consulte.om_validite_debut <= CURRENT_DATE
152 AND (
153 type_habilitation_tiers_consulte.om_validite_fin IS NULL
154 OR type_habilitation_tiers_consulte.om_validite_fin > CURRENT_DATE
155 )
156 )
157 )
158 ORDER BY
159 type_habilitation_tiers_consulte.libelle ASC',
160 DB_PREFIXE
161 );
162 }
163
164 /**
165 *
166 * @return string
167 */
168 function get_var_sql_forminc__sql_type_habilitation_tiers_consulte_by_id() {
169 return sprintf(
170 'SELECT
171 type_habilitation_tiers_consulte.type_habilitation_tiers_consulte,
172 type_habilitation_tiers_consulte.libelle
173 FROM
174 %stype_habilitation_tiers_consulte
175 WHERE
176 type_habilitation_tiers_consulte IN (<idx>)',
177 DB_PREFIXE
178 );
179 }
180
181 /**
182 * Clause where pour la requête de sélection des données de l'enregistrement.
183 *
184 * @return string
185 */
186 function get_var_sql_forminc__selection() {
187 return " GROUP BY evenement.evenement, evenement.libelle ";
188 }
189
190 /**
191 * CONDITION - is_addable_editable_and_deletable.
192 *
193 * Condition pour l'affichage de l'action d'ajout, de modification et de
194 * suppression.
195 *
196 * @return boolean
197 */
198 public function is_addable_editable_and_deletable() {
199
200 // Si evenement est ouvert en sous-formulaire
201 if ($this->getParameter("retourformulaire") !== null) {
202
203 //
204 return false;
205 }
206
207 //
208 return true;
209 }
210
211
212 function setType(&$form, $maj) {
213 $optionNotif = $this->f->is_option_enabled('option_module_acteur');
214 $form->setType('type_habilitation_tiers_consulte','hidden');
215 //
216 parent::setType($form, $maj);
217 // MODE AJOUTER et MODE MODIFIER
218 if ($maj == 0 || $maj == 1) {
219 //
220 $form->setType('accord_tacite', 'select');
221 $form->setType('delai_notification', 'text');
222 $form->setType('delai', 'text');
223 $form->setType('lettretype', 'select');
224 $form->setType('consultation', 'checkbox');
225 $form->setType('dossier_instruction_type','select_multiple');
226 $form->setType('type','select');
227 $form->setType('etats_depuis_lequel_l_evenement_est_disponible','select_multiple');
228 $form->setType('notification','select');
229 $form->setType('notification_tiers','select');
230 $form->setType('tiers_destinataire','select');
231 if ($optionNotif === true) {
232 $form->setType('type_habilitation_tiers_consulte','select_multiple');
233 }
234 }
235 // MODE SUPPRIMER et MODE CONSULTER
236 if ($maj == 2 || $maj == 3) {
237 //
238 $form->setType('dossier_instruction_type','select_multiple_static');
239 $form->setType('etats_depuis_lequel_l_evenement_est_disponible','select_multiple_static');
240 $form->setType('notification','selecthiddenstatic');
241 if ($optionNotif === true) {
242 $form->setType('type_habilitation_tiers_consulte','select_multiple_static');
243 }
244 $form->setType('notification_tiers','selectstatic');
245 $form->setType('tiers_destinataire','selectstatic');
246 }
247
248 // Mode modifier
249 if ($maj == 1) {
250 // Champ non modifiable pour éviter un déréglement du paramètrage
251 // des événements
252 $form->setType('retour', 'checkboxhiddenstatic');
253 }
254
255 // Cache les champs en fonction de la valeur de 'retour'
256 if ($this->getVal("retour") == 't') {
257
258 // Cache les champs "evenement_retour_ar" et
259 // "evenement_retour_signature"
260 $form->setType('evenement_retour_ar', 'hidden');
261 $form->setType('evenement_retour_signature', 'hidden');
262
263 // En mode Ajouter et Modifier
264 if ($maj < 2) {
265 $form->setType('restriction', 'hiddenstatic');
266 $form->setType('delai', 'hiddenstatic');
267 $form->setType('accord_tacite', 'hiddenstatic');
268 $form->setType('delai_notification', 'hiddenstatic');
269 $form->setType('avis_decision', 'hiddenstatic');
270 }
271 }
272 }
273
274 /**
275 *
276 * @return string
277 */
278 function get_var_sql_forminc__sql_dossier_instruction_type() {
279 return "SELECT
280 dossier_instruction_type.dossier_instruction_type,
281 CONCAT(dossier_autorisation_type_detaille.code,' - ',dossier_instruction_type.code,' - ',dossier_instruction_type.libelle) as lib
282 FROM ".DB_PREFIXE."dossier_instruction_type
283 LEFT JOIN ".DB_PREFIXE."dossier_autorisation_type_detaille
284 ON dossier_instruction_type.dossier_autorisation_type_detaille=dossier_autorisation_type_detaille.dossier_autorisation_type_detaille
285 ORDER BY dossier_autorisation_type_detaille.code";
286 }
287
288 /**
289 *
290 * @return string
291 */
292 function get_var_sql_forminc__sql_dossier_instruction_type_by_id() {
293 return "SELECT
294 dossier_instruction_type.dossier_instruction_type,
295 CONCAT(dossier_autorisation_type_detaille.code,' - ',dossier_instruction_type.code,' - ',dossier_instruction_type.libelle) as lib
296 FROM ".DB_PREFIXE."dossier_instruction_type
297 LEFT JOIN ".DB_PREFIXE."dossier_autorisation_type_detaille
298 ON dossier_instruction_type.dossier_autorisation_type_detaille=dossier_autorisation_type_detaille.dossier_autorisation_type_detaille
299 WHERE dossier_instruction_type IN (<idx>)
300 ORDER BY dossier_autorisation_type_detaille.code";
301 }
302
303 /**
304 *
305 * @return string
306 */
307 function get_var_sql_forminc__sql_etats_depuis_lequel_l_evenement_est_disponible() {
308 return "SELECT etat.etat, etat.libelle as lib FROM ".DB_PREFIXE."etat ORDER BY lib";
309 }
310
311 /**
312 *
313 * @return string
314 */
315 function get_var_sql_forminc__sql_etats_depuis_lequel_l_evenement_est_disponible_by_id() {
316 return "SELECT etat.etat, etat.libelle as lib FROM ".DB_PREFIXE."etat WHERE etat.etat IN (<idx>) ORDER BY lib";
317 }
318
319 /**
320 *
321 * @return string
322 */
323 function get_var_sql_forminc__sql_evenement_retour_ar() {
324 return "SELECT evenement.evenement, evenement.libelle FROM ".DB_PREFIXE."evenement WHERE evenement.retour = 't' ORDER BY evenement.libelle ASC";
325 }
326
327 /**
328 *
329 * @return string
330 */
331 function get_var_sql_forminc__sql_evenement_retour_signature() {
332 return "SELECT evenement.evenement, evenement.libelle FROM ".DB_PREFIXE."evenement WHERE evenement.retour = 't' ORDER BY evenement.libelle ASC";
333 }
334
335 /**
336 *
337 * @return string
338 */
339 function get_var_sql_forminc__sql_evenement_suivant_tacite() {
340 return "SELECT evenement.evenement, evenement.libelle FROM ".DB_PREFIXE."evenement WHERE evenement.retour = 'f' ORDER BY evenement.libelle ASC";
341 }
342
343 /**
344 *
345 * @return string
346 */
347 function get_var_sql_forminc__sql_om_lettretype() {
348 return sprintf(
349 'SELECT
350 id,
351 (id||\' \'||libelle) AS lib
352 FROM
353 %1$som_lettretype
354 ORDER BY
355 lib',
356 DB_PREFIXE
357 );
358 }
359
360 /**
361 * SETTER_FORM - setSelect.
362 *
363 * @return void
364 */
365 function setSelect(&$form, $maj, &$dnu1 = null, $dnu2 = null) {
366 parent::setSelect($form, $maj);
367 //
368 if ($maj < 2) {
369 // lettretype
370 $contenu = array();
371 $qres = $this->f->get_all_results_from_db_query(
372 $this->get_var_sql_forminc__sql("om_lettretype"),
373 array(
374 'origin' => __METHOD__
375 )
376 );
377
378 $contenu[0][0]='';
379 $contenu[1][0]= sprintf('%s %s', __('choisir'), __('lettretype'));
380 $k = 1;
381 foreach($qres['result'] as $row) {
382 $contenu[0][$k] = $row['id'];
383 $contenu[1][$k] = $row['lib'];
384 $k++;
385 }
386 $form->setSelect('lettretype', $contenu);
387 }
388 // accord_tacite
389 $contenu=array();
390 $contenu[0]=array('Non','Oui');
391 $contenu[1]=array(__('Non'), __('Oui'));
392 $form->setSelect("accord_tacite",$contenu);
393
394 // choix possible de notification_tiers
395 $contenu = array(
396 0 => array(
397 '',
398 'notification_manuelle'
399 ),
400 1 => array(
401 __("Aucune"),
402 __("Notification manuelle")
403 )
404 );
405 // Si l'option de notificaton automatique des tiers est active ajout d'un choix sup
406 if ($this->f->is_option_enabled('option_module_acteur') === true) {
407 $contenu[0][] = 'notification_automatique';
408 $contenu[1][] = __("Notification automatique");
409 }
410 $form->setSelect("notification_tiers", $contenu);
411
412 // choix possible de tiers_destinataire
413 $contenu = array(
414 0 => array(
415 'aucun',
416 'acteur',
417 'acteur_service_consultant',
418 ),
419 1 => array(
420 __("Aucun"),
421 __("Acteur"),
422 __("Acteur avec service consultant")
423 )
424 );
425 $form->setSelect("tiers_destinataire", $contenu);
426
427 // type de l'événement
428 $contenu=array();
429 $contenu[0]=array(
430 '',
431 'arrete',
432 'incompletude',
433 'majoration_delai',
434 'retour',
435 'changement_decision',
436 'affichage',
437 'ait',
438 'annul_contradictoire'
439 );
440 $contenu[1]=array(
441 __('choisir type'),
442 __('arrete'),
443 __('incompletude'),
444 __('majoration_delai'),
445 __('retour de pieces'),
446 __('changement de decision'),
447 __('affichage'),
448 __('arrêté interruptif des travaux'),
449 __('annulation de contradictoire'),
450 );
451 $form->setSelect("type",$contenu);
452 // dossier_instruction_type
453 $this->init_select(
454 $form,
455 $this->f->db,
456 $maj,
457 null,
458 "dossier_instruction_type",
459 $this->get_var_sql_forminc__sql("dossier_instruction_type"),
460 $this->get_var_sql_forminc__sql("dossier_instruction_type_by_id"),
461 false,
462 true
463 );
464 // etats_depuis_lequel_l_evenement_est_disponible
465 $this->init_select(
466 $form,
467 $this->f->db,
468 $maj,
469 null,
470 "etats_depuis_lequel_l_evenement_est_disponible",
471 $this->get_var_sql_forminc__sql("etats_depuis_lequel_l_evenement_est_disponible"),
472 $this->get_var_sql_forminc__sql("etats_depuis_lequel_l_evenement_est_disponible_by_id"),
473 false,
474 true
475 );
476 // evenement_retour_ar
477 $this->init_select(
478 $form,
479 $this->f->db,
480 $maj,
481 null,
482 "evenement_retour_ar",
483 $this->get_var_sql_forminc__sql("evenement_retour_ar"),
484 $this->get_var_sql_forminc__sql("evenement_retour_ar_by_id"),
485 false,
486 false,
487 __("l'événement lors de la notification du pétitionnaire")
488 );
489
490
491 // Initialisation du selecteur multiple type_habilitation_tiers_consulte
492 $this->init_select(
493 $form,
494 $this->f->db,
495 $maj,
496 null,
497 "type_habilitation_tiers_consulte",
498 $this->get_var_sql_forminc__sql("type_habilitation_tiers_consulte"),
499 $this->get_var_sql_forminc__sql("type_habilitation_tiers_consulte_by_id"),
500 false,
501 true
502 );
503
504 // notification
505 $contenu = array();
506 $contenu[0] = array(
507 '',
508 'notification_automatique',
509 'notification_manuelle',
510 'notification_auto_signature_requise',
511 'notification_manuelle_signature_requise',
512 'notification_manuelle_annexe',
513 'notification_manuelle_annexe_signature_requise'
514 );
515 $contenu[1] = array(
516 __('Pas de notification'),
517 __('Notification automatique'),
518 __('Notification manuelle'),
519 __('Notification automatique avec signature requise'),
520 __('Notification manuelle avec signature requise'),
521 __('Notification manuelle avec annexe'),
522 __('Notification manuelle avec annexe et avec signature requise')
523 );
524 $form->setSelect('notification', $contenu);
525 }
526
527 function setTaille(&$form, $maj) {
528 //
529 parent::setTaille($form, $maj);
530 //
531 $form->setTaille("dossier_instruction_type", 10);
532 $form->setTaille("etats_depuis_lequel_l_evenement_est_disponible", 10);
533 }
534
535 function setMax(&$form, $maj) {
536 //
537 parent::setMax($form, $maj);
538 //
539 $form->setMax("dossier_instruction_type", 5);
540 $form->setMax("etats_depuis_lequel_l_evenement_est_disponible", 5);
541 }
542
543 function setLib(&$form, $maj) {
544 //
545 parent::setLib($form, $maj);
546 //
547 $form->setLib("dossier_instruction_type", __("type(s) de DI concerne(s)"));
548 $form->setLib("etats_depuis_lequel_l_evenement_est_disponible", __("etat(s) source(s)"));
549 $form->setLib('notification_service', __('Notification des services'));
550 $form->setLib('notification_tiers', __('Notification des tiers'));
551 $form->setLib('tiers_destinataire', __('Tiers Destinataire'));
552 $form->setLib("type_habilitation_tiers_consulte", __("type(s) d'habilitation des tiers consultés à notifier"));
553 // Change le libellé de retour pour pas qu'il soit confondus avec le
554 // bouton
555 $form->setLib("retour", __("retour_evenement"));
556 // En ajout et en modification
557 if ($maj < 2) {
558 $form->setLib("retour", __("retour_evenement (parametrage non modifiable)"));
559 }
560
561 // Message d'aide à l'utilisateur concernant les événements liés
562 $message_help = __("Les champs suivants seront copies vers l'evenement choisi :");
563 $champs_copy = __('delai') . ", " . __('accord_tacite') . ", " . __('delai_notification') . ", " . __('avis_decision') . ", " . __('restriction');
564 $form->setLib("evenement_retour_ar", __('Événement lors de la notification du correspondant') . "<br> (" . $message_help . " " . $champs_copy . ")");
565 $form->setLib("evenement_retour_signature", __('evenement_retour_signature') . "<br> (" . $message_help . " " . $champs_copy . ")");
566
567 $form->setLib("commentaire", __("Commentaire"));
568 $form->setLib("non_modifiable", __("Non modifiable"));
569 $form->setLib("non_supprimable", __("Non supprimable"));
570 $form->setLib("signataire_obligatoire", __("Signataire obligatoire"));
571 $form->setLib("document_type", __("Type de documents"));
572 }
573
574 function setLayout(&$form, $maj) {
575 //
576 parent::setLayout($form, $maj);
577 //
578 $form->setFieldset("evenement", "D", __("Evenement"));
579 $form->setFieldset("retour", "F");
580 //
581 $form->setFieldset("etats_depuis_lequel_l_evenement_est_disponible", "D", __("Filtre de selection"));
582 $form->setBloc("etats_depuis_lequel_l_evenement_est_disponible", "D", __("Filtres pour la possibilite de selection a l'ajout d'un evenement d'instruction"));
583 $form->setBloc("dossier_instruction_type", "F");
584 $form->setBloc("restriction", "DF", __("Filtre supplementaire a l'enregistrement de l'evenement d'instruction"));
585 $form->setFieldset("restriction", "F");
586 //
587 $form->setFieldset("action", "D", __("Action"));
588 $form->setBloc("action", "DF");
589 $form->setBloc("etat", "D", __("Parametres de l'action"));
590 $form->setBloc("pec_metier", "F");
591 $form->setFieldset("pec_metier", "F");
592 //
593 $form->setFieldset("lettretype", "D", __("Edition"));
594 $form->setFieldset("document_type", "F");
595 //
596 $form->setFieldset("evenement_suivant_tacite", "D", __("Evenements lies"), "evenements_lies");
597 $form->setFieldset("evenement_retour_signature", "F");
598 }
599
600 function set_form_specificity(&$form, $maj) {
601 parent::set_form_specificity($form, $maj);
602 // Pour les notification non automatique ajoute une classe permettant de masquer le champs
603 // type_habilitation_tiers_consulte.
604 if ($this->getParameter("validation") > 0) {
605 $postvar = $this->getParameter("postvar");
606 $notification_tiers = isset($postvar['notification_tiers']) ? $postvar['notification_tiers'] : null;
607 } elseif (isset($this->val['notification_tiers'])) {
608 $notification_tiers = $this->val['notification_tiers'];
609 } else {
610 $notification_tiers = $this->getVal('notification_tiers');
611 }
612 if (empty($notification_tiers) || $notification_tiers !== 'notification_automatique') {
613 $form->classes_specifiques['type_habilitation_tiers_consulte'] = 'ui-tabs-hide';
614 }
615 }
616
617 /**
618 * TRIGGER - triggerajouterapres.
619 *
620 * - ...
621 * - Ajoute autant de lien_dossier_instruction_type_evenement que de dossier_instruction_type
622 * - ...
623 *
624 * @return boolean
625 */
626 function triggerajouterapres($id, &$dnu1 = null, $val = array(), $dnu2 = null) {
627 $this->addToLog(__METHOD__."(): start", EXTRA_VERBOSE_MODE);
628 parent::triggerajouterapres($id, $dnu1, $val);
629
630 /**
631 * LIEN ETAT
632 */
633 // Récupération des données du select multiple
634 $etats_depuis_lequel_l_evenement_est_disponible = $this->getEvenementLinks(
635 'etats_depuis_lequel_l_evenement_est_disponible',
636 'transition',
637 'etat'
638 );
639 // Ne traite les données que s'il y en a et qu'elles sont correctes
640 if (is_array($etats_depuis_lequel_l_evenement_est_disponible)
641 && count($etats_depuis_lequel_l_evenement_est_disponible) > 0) {
642 // Initialisation
643 $nb_liens_etat = 0;
644 // Boucle sur la liste des états sélectionnés
645 foreach ($etats_depuis_lequel_l_evenement_est_disponible as $value) {
646 // Test si la valeur par défaut est sélectionnée
647 if ($value != "") {
648 //
649 $data = array(
650 'evenement' => $this->valF['evenement'],
651 'etat' => $value
652 );
653 // On ajoute l'enregistrement
654 $this->addEvenementLinks($data, 'transition');
655 // On compte le nombre d'éléments ajoutés
656 $nb_liens_etat++;
657 }
658 }
659 // Message de confirmation
660 if ($nb_liens_etat > 0) {
661 if ($nb_liens_etat == 1) {
662 $this->addToMessage(__("Creation de ").$nb_liens_etat.__(" nouvelle liaison realisee avec succes."));
663 } else {
664 $this->addToMessage(__("Creation de ").$nb_liens_etat.__(" nouvelles liaisons realisees avec succes."));
665 }
666 }
667 }
668
669 /**
670 * LIEN DI TYPE
671 */
672 // Récupère les données du select multiple
673 $dossier_instruction_type = $this->getEvenementLinks(
674 'dossier_instruction_type',
675 'lien_dossier_instruction_type_evenement',
676 'dossier_instruction_type'
677 );
678 // Ne traite les données que s'il y en a et qu'elles sont correctes
679 if (is_array($dossier_instruction_type) && count($dossier_instruction_type) > 0) {
680 $nb_tr = 0;
681 // Va créer autant de lien_dossier_instruction_type_evenement
682 // que de dossier_instruction_type choisis
683 foreach ($dossier_instruction_type as $value) {
684 // Test si la valeur par défaut est sélectionnée
685 if ($value != "") {
686 //Données
687 $data = array(
688 'evenement' => $this->valF['evenement'],
689 'dossier_instruction_type' => $value
690 );
691 // Ajoute un nouveau lien_dossier_instruction_type_evenement
692 $this->addEvenementLinks($data, 'lien_dossier_instruction_type_evenement');
693 $nb_tr++;
694 }
695 }
696 // Message de confirmation de création de(s) lien_dossier_instruction_type_evenement(s).
697 if ($nb_tr > 0) {
698 if ($nb_tr == 1) {
699 $this->addToMessage(__("Creation de ").$nb_tr.__(" nouvelle liaison
700 realisee avec succes."));
701 } else {
702 $this->addToMessage(__("Creation de ").$nb_tr.__(" nouvelles liaisions
703 realisee avec succes."));
704 }
705 }
706 }
707
708 // Liaison NaN
709 foreach ($this->liaisons_nan as $liaison_nan) {
710 // Si le champ possède une valeur
711 if (isset($val[$liaison_nan["field"]]) === true) {
712 // Ajout des liaisons table Nan
713 $nb_liens = $this->ajouter_liaisons_table_nan(
714 $liaison_nan["table_l"],
715 $liaison_nan["table_f"],
716 $liaison_nan["field"],
717 $val[$liaison_nan["field"]]
718 );
719
720 // Message de confirmation
721 if ($nb_liens > 0) {
722 if ($nb_liens == 1) {
723 $this->addToMessage(sprintf(
724 __("Création d'une nouvelle liaison réalisee avec succès."))
725 );
726 } else {
727 $this->addToMessage(sprintf(
728 __("Création de %s nouvelles liaisons réalisée avec succès."),
729 $nb_liens)
730 );
731 }
732 }
733 }
734 }
735
736 // Copie les paramètres vers l'événement lié
737 $this->copyParametersToEvenementLink();
738 }
739
740 /**
741 * Récupère les liens de la variable POST ou de la base de données selon le
742 * contexte
743 *
744 * @param $champ Le champ POST à récupérer
745 * @return mixed Les liens
746 */
747 function getEvenementLinks($champ, $table, $champLie){
748
749 $liens = array();
750
751 // Si on est dans le contexte d'un formulaire
752 if ( isset($this->form) && !is_null($this)){
753 // On récupère les données post
754 if ($this->f->get_submitted_post_value($champ) !== null) {
755
756 return $this->f->get_submitted_post_value($champ);
757 }
758 }
759 //Si on n'est pas dans le contexte d'un formulaire
760 else {
761
762 $qres = $this->f->get_all_results_from_db_query(
763 sprintf(
764 'SELECT
765 %2$s
766 FROM
767 %1$s%3$s
768 WHERE
769 evenement = %4$d',
770 DB_PREFIXE,
771 $this->f->db->escapeSimple($champLie),
772 $this->f->db->escapeSimple($table),
773 intval($this->valF['evenement'])
774 ),
775 array(
776 'origin' => __METHOD__,
777 'force_result' => true
778 )
779 );
780 if ($qres['code'] !== 'OK') {
781 // Appel de la methode de recuperation des erreurs
782 $this->erreur_db($qres['message'], $qres['message'], 'evenement');
783 }
784
785 foreach($qres['result'] as $row) {
786
787 $liens[] = $row[$champLie];
788 }
789 }
790
791 return $liens;
792 }
793
794 /**
795 * TRIGGER - triggermodifierapres.
796 *
797 * @return boolean
798 */
799 function triggermodifierapres($id, &$dnu1 = null, $val = array(), $dnu2 = null) {
800 $this->addToLog(__METHOD__."(): start", EXTRA_VERBOSE_MODE);
801 parent::triggermodifierapres($id, $dnu1, $val);
802
803 /**
804 * LIEN ETAT
805 */
806 // On récupère les liens selon le contexte : POST ou base de données
807 $etats_depuis_lequel_l_evenement_est_disponible = $this->getEvenementLinks(
808 'etats_depuis_lequel_l_evenement_est_disponible',
809 'transition',
810 'etat'
811 );
812
813 // Suppression de tous les liens de la table transition (table lien
814 // entre etat et evenement)
815 $this->deleteEvenementLinks($this->valF['evenement'], 'transition');
816 // Ne traite les données que s'il y en a et qu'elles sont correctes
817 if (is_array($etats_depuis_lequel_l_evenement_est_disponible)
818 && count($etats_depuis_lequel_l_evenement_est_disponible) > 0) {
819 // Initialisation
820 $nb_liens_etat = 0;
821 // Boucle sur la liste des états sélectionnés
822 foreach ($etats_depuis_lequel_l_evenement_est_disponible as $value) {
823 // Test si la valeur par défaut est sélectionnée
824 if ($value != "") {
825 //
826 $data = array(
827 'evenement' => $this->valF['evenement'],
828 'etat' => $value
829 );
830 // On ajoute l'enregistrement
831 $this->addEvenementLinks($data, 'transition');
832 // On compte le nombre d'éléments ajoutés
833 $nb_liens_etat++;
834 }
835 }
836 // Message de confirmation
837 if ($nb_liens_etat > 0) {
838 $this->addToMessage(__("Mise a jour des liaisons realisee avec succes."));
839 }
840 }
841
842 /**
843 * LIEN DI TYPE
844 */
845 // On récupère les liens selon le contexte : POST ou base de données
846 $dossier_instruction_type = $this->getEvenementLinks(
847 'dossier_instruction_type',
848 'lien_dossier_instruction_type_evenement',
849 'dossier_instruction_type'
850 );
851 // Supprime toutes les liaisions liées à l'événement
852 $this->deleteEvenementLinks($this->valF['evenement'], 'lien_dossier_instruction_type_evenement');
853 // Ne traite les données que s'il y en a et qu'elles sont correctes
854 if (is_array($dossier_instruction_type) && count($dossier_instruction_type) > 0) {
855 $nb_tr = 0;
856 // Va créer autant de lien_dossier_instruction_type_evenement que de dossier_instruction_type choisis
857 foreach ($dossier_instruction_type as $value) {
858 // Test si la valeur par défaut est sélectionnée
859 if ($value != "") {
860 //Données
861 $data = array(
862 'evenement' => $this->valF['evenement'],
863 'dossier_instruction_type' => $value
864 );
865 //Ajoute un nouveau lien_dossier_instruction_type_evenement
866 $this->addEvenementLinks($data, 'lien_dossier_instruction_type_evenement');
867 $nb_tr++;
868 }
869 }
870 //Message de confirmation de création de(s) lien_dossier_instruction_type_evenement.
871 if ($nb_tr > 0) {
872 $this->addToMessage(__("Mise a jour des liaisons realisee avec succes."));
873 }
874 }
875
876
877 // Liaison NaN
878 foreach ($this->liaisons_nan as $liaison_nan) {
879
880 // Liaisons NaN
881 foreach ($this->liaisons_nan as $liaison_nan) {
882 // Suppression des liaisons table NaN
883 $this->supprimer_liaisons_table_nan($liaison_nan["table_l"]);
884 }
885
886 // Si le champ possède une valeur
887 if (isset($val[$liaison_nan["field"]]) === true) {
888 // Ajout des liaisons table Nan
889 $nb_liens = $this->ajouter_liaisons_table_nan(
890 $liaison_nan["table_l"],
891 $liaison_nan["table_f"],
892 $liaison_nan["field"],
893 $val[$liaison_nan["field"]]
894 );
895 // Message de confirmation
896 if ($nb_liens > 0) {
897 if ($nb_liens == 1) {
898 $this->addToMessage(sprintf(
899 __("Création d'une nouvelle liaison réalisee avec succès."))
900 );
901 } else {
902 $this->addToMessage(sprintf(
903 __("Création de %s nouvelles liaisons réalisée avec succès."),
904 $nb_liens)
905 );
906 }
907 }
908 }
909 }
910 // Copie les paramètres vers l'événement lié
911 $this->copyParametersToEvenementLink();
912 }
913
914 /**
915 * Ajout d'un lien dans la table passée en paramètre
916 * @param $data Les données à ajouter
917 * @param $table La table à populer
918 */
919 function addEvenementLinks($data, $table){
920 $linksEvenement = $this->f->get_inst__om_dbform(array(
921 "obj" => $table,
922 "idx" => "]",
923 ));
924
925 $linksEvenement->valF = array();
926 $val[$table] = NULL;
927 //
928 if (is_array($data)) {
929 foreach ($data as $key => $value) {
930 $val[$key]=$value;
931 }
932 }
933 //
934 $linksEvenement->ajouter($val);
935 }
936
937 /**
938 * Suppression des liens de la table passé en paramètre
939 * @param $id L'identifiant de l'événement
940 * @param $table La table à vider
941 */
942 function deleteEvenementLinks($id, $table){
943
944 // Suppression de tous les enregistrements correspondants à l'id de
945 // l'événement
946 $sql = "DELETE
947 FROM ".DB_PREFIXE.$table."
948 WHERE evenement = ".$id;
949 $res = $this->f->db->query($sql);
950 $this->addToLog(
951 __METHOD__."(): db->query(\"".$sql."\");",
952 VERBOSE_MODE
953 );
954 if ($this->f->isDatabaseError($res, true) !== false) {
955 // Appel de la methode de recuperation des erreurs
956 $this->erreur_db($res->getDebugInfo(), $res->getMessage(), 'evenement');
957 }
958 }
959
960 /**
961 * TRIGGER - triggersupprimer.
962 *
963 * @return boolean
964 */
965 function triggersupprimer($id, &$dnu1 = null, $val = array(), $dnu2 = null) {
966 $this->addToLog(__METHOD__."(): start", EXTRA_VERBOSE_MODE);
967 // Suppression de tous les liens de la table transition (table lien
968 // entre etat et evenement)
969 $this->deleteEvenementLinks($this->getVal('evenement'), 'transition');
970 //Supprime toutes les lien_dossier_instruction_type_evenement liées à l'evenement
971 $this->deleteEvenementLinks($this->getVal('evenement'), 'lien_dossier_instruction_type_evenement');
972
973 // Liaisons NaN
974 foreach ($this->liaisons_nan as $liaison_nan) {
975 // Suppression des liaisons table NaN
976 $this->supprimer_liaisons_table_nan($liaison_nan["table_l"]);
977 }
978 }
979
980 /**
981 * TRIGGER - triggersupprimerapres.
982 *
983 * @return boolean
984 */
985 function triggersupprimerapres($id, &$dnu1 = null, $val = array(), $dnu2 = null) {
986 $this->addToLog(__METHOD__."(): start", EXTRA_VERBOSE_MODE);
987 }
988
989 /* Surcharge de la fonction cleSecondaire pour qu'elle ne vérifie pas le lien avec
990 * lien_dossier_instruction_type_evenement qui sera supprimé juste après ni avec la table transition*/
991 function cleSecondaire($id, &$dnu1 = null, $val = array(), $dnu2 = null) {
992
993 // Verification de la cle secondaire : bible
994 $this->rechercheTable($dnu1, "bible", "evenement", $id);
995 // Verification de la cle secondaire : demande_type
996 $this->rechercheTable($dnu1, "demande_type", "evenement", $id);
997 // Verification de la cle secondaire : evenement
998 $this->rechercheTable($dnu1, "evenement", "evenement_retour_ar", $id);
999 // Verification de la cle secondaire : evenement
1000 $this->rechercheTable($dnu1, "evenement", "evenement_suivant_tacite", $id);
1001 // Verification de la cle secondaire : instruction
1002 $this->rechercheTable($dnu1, "instruction", "evenement", $id);
1003 //// Verification de la cle secondaire : transition
1004 //$this->rechercheTable($dnu1, "transition", "evenement", $id);
1005 }
1006
1007 /**
1008 * SETTER_FORM - setVal (setVal).
1009 *
1010 * @return void
1011 */
1012 function setVal(&$form, $maj, $validation, &$dnu1 = null, $dnu2 = null) {
1013 parent::setVal($form, $maj, $validation);
1014 //
1015 if ($maj == 2 && $validation == 1) {
1016 //Affichage des dossier_instruction_type anciennement liés
1017 $form->setVal("dossier_instruction_type", $this->val[count($this->val)-1]);
1018 }
1019 }
1020
1021 /**
1022 * @return void
1023 */
1024 function verifier($val = array(), &$dnu1 = null, $dnu2 = null) {
1025 parent::verifier($val);
1026 //Test qu'une restriction est présente
1027 if (isset($this->valF['restriction']) && $this->valF['restriction'] != ""){
1028
1029 $restriction = $this->valF['restriction'];
1030
1031 // Liste des opérateurs possible
1032 $operateurs = array(">=", "<=", "+", "-", "&&", "||", "==", "!=");
1033
1034 // Supprime tous les espaces de la chaîne de caractère
1035 $restriction = str_replace(' ', '', $restriction);
1036
1037 // Met des espace avant et après les opérateurs puis transforme la
1038 // chaine en un tableau
1039 $tabRestriction = str_replace($operateurs, " ", $restriction);
1040 // Tableau des champ
1041 $tabRestriction = explode(" ", $tabRestriction);
1042 // Supprime les numériques du tableau
1043 foreach ($tabRestriction as $key => $value) {
1044 if (is_numeric($value)) {
1045 unset($tabRestriction[$key]);
1046 }
1047 }
1048
1049 // Vérifie les champs utilisés pour la restriction
1050 $check_field_exist = $this->f->check_field_exist($tabRestriction,
1051 'instruction');
1052 if ($check_field_exist !== true) {
1053
1054 // Liste des champs en erreur
1055 $string_error_fields = implode(", ", $check_field_exist);
1056
1057 // Message d'erreur
1058 $error_message = __("Le champ %s n'est pas utilisable pour le champ %s");
1059 if (count($check_field_exist) > 1) {
1060 $error_message = __("Les champs %s ne sont pas utilisable pour le champ %s");
1061 }
1062
1063 // Affiche l'erreur
1064 $this->correct=false;
1065 $this->addToMessage(sprintf($error_message, $string_error_fields, __("restriction")));
1066 }
1067 }
1068
1069 // Identifiant de l'évenement en cours
1070 $evenement_main = "";
1071 // Si pas en mode "Ajouter"
1072 if ($this->getParameter("maj") != 0) {
1073 $evenement_main = $this->valF['evenement'];
1074 }
1075
1076 //
1077 $error_retour = false;
1078
1079 // Si le même événement retour est sélectionné pour le retour ar et le
1080 // retour signature
1081 if (isset($this->valF['evenement_retour_ar'])
1082 && $this->valF['evenement_retour_ar'] != ""
1083 && isset($this->valF['evenement_retour_signature'])
1084 && $this->valF['evenement_retour_signature'] != "") {
1085
1086 //
1087 if ($this->valF['evenement_retour_ar'] == $this->valF['evenement_retour_signature']) {
1088
1089 // Récupère l'événement
1090 $evenement_retour = $this->valF['evenement_retour_ar'];
1091
1092 // Récupère le libelle de l'événement
1093 $evenement_retour_libelle = $this->getEvenementLibelle($evenement_retour);
1094
1095 // Message d'erreur
1096 $error_message = __("L'evenement \"%s\" ne peut pas etre utilise en tant qu'evenement d'accuse de reception et evenement de retour de signature.");
1097
1098 // Le formulaire n'est pas validé
1099 $this->correct=false;
1100 $this->addToMessage(sprintf($error_message, $evenement_retour_libelle));
1101 $error_retour = true;
1102 }
1103 }
1104
1105 // Si l'erreur concernant la double utilisation d'une événement retour
1106 // sur le même formulaire n'est pas activé
1107 if ($error_retour === false) {
1108
1109 // Vérifie que l'événement "evenement_retour_signature" n'est pas
1110 // utilisé en evenement retour
1111 $this->checkEvenementRetour('evenement_retour_signature', $evenement_main);
1112 // Vérifie que l'événement n'est pas déjà utilisé en tant que
1113 // "evenement_retour_ar"
1114 $this->checkEvenementRetour('evenement_retour_ar', $evenement_main);
1115 }
1116
1117 // Si c'est un événement retour
1118 if (isset($this->valF['retour'])
1119 && $this->valF['retour'] === true) {
1120
1121 // Supprime les valeurs des champs
1122 unset($this->valF['evenement_retour_ar']);
1123 unset($this->valF['evenement_retour_signature']);
1124 }
1125
1126 if (isset($this->valF['lettretype']) &&
1127 $this->valF['lettretype'] != '' &&
1128 isset($this->valF['non_modifiable']) &&
1129 $this->valF['non_modifiable'] == 'Oui')
1130 {
1131 // Message d'erreur
1132 $error_message = __("L'evenement ne peut pas avoir une lettre type et être non modifiable");
1133
1134 // Le formulaire n'est pas validé
1135 $this->correct=false;
1136 $this->addToMessage($error_message);
1137 }
1138
1139 /* Tester le format des Paramètres de l'action champs Delai et Delai notification */
1140 if (isset($this->valF['delai'])
1141 && $this->valF['delai'] != ""){
1142 $this->rule_is_valid($this->valF['delai'],'delai');
1143 }
1144 if (isset($this->valF['delai_notification'])
1145 && $this->valF['delai_notification'] != ""){
1146 $this->rule_is_valid($this->valF['delai_notification'],'delai_notification');
1147 }
1148 }
1149
1150 /**
1151 * Vérifie la validité d'une règle d'action.
1152 *
1153 * @param string $rule Règle d'action.
1154 * @param string $rule_name Nom de la règle.
1155 */
1156 function rule_is_valid($rule, $rule_name) {
1157
1158 $date_rules = array(
1159 "delai",
1160 "delai_notification"
1161 );
1162
1163 // Gestion du NULL
1164 $is_null_result = $this->f->rule_null_is_valid($rule, $rule_name);
1165 if (is_array($is_null_result) === true ){
1166 if ( $is_null_result[0] === false ){
1167 // Affiche l'erreur
1168 $this->correct=$is_null_result[0];
1169 $this->addToMessage($is_null_result[1]);
1170 }
1171 return null;
1172 }
1173
1174 // Supprime tous les espaces de la chaîne de caractère
1175 $rule = str_replace(' ', '', $rule);
1176 // Coupe la chaîne au niveau de l'opérateur
1177 $operands = explode('+', $rule);
1178 // Nombre d'opérande
1179 $nb_operands = count($operands);
1180
1181 // Pour chaque opérande
1182 foreach ($operands as $key => $operand) {
1183 // si on as une chaine +xmois ou +xjour(s) pour une regle de type date
1184 if (in_array($rule_name, $date_rules, true) === true) {
1185 $is_date_result = $this->f->rule_date_is_valid($operand, $rule_name);
1186 if ( is_array($is_date_result) === true ){
1187 if ( $is_date_result[0] === false ){
1188 // Affiche l'erreur
1189 $this->correct=$is_date_result[0];
1190 $this->addToMessage($is_date_result[1]);
1191 return null;
1192 }
1193 // Supprime l'opérande
1194 unset($operands[$key]);
1195 }
1196 }
1197 }
1198
1199 if (count($operands) !== 0){
1200 // Message d'erreur
1201 $error_msg = sprintf(
1202 __("Le champ %s n'est pas correctement formater."),
1203 '<b>'.__($rule_name).'</b>'
1204 );
1205 foreach ($operands as $key => $operand) {
1206 $error_msg .= sprintf("<br>%s<br>", sprintf(__("La valeur '%s' n'est pas valide."), $operand));
1207 }
1208 // Affiche l'erreur
1209 $this->correct = false;
1210 $this->addToMessage(
1211 $error_msg
1212 );
1213 }
1214
1215 }
1216
1217 /**
1218 * Vérifie que l'événement $champ n'est pas déjà utilisé en événement
1219 * 'evenement_retour_ar' et 'evenement_retour_signature'
1220 * @param string $champ Champ à tester
1221 * @param integer $evenement_main Identifiant de l'événement en cours
1222 */
1223 function checkEvenementRetour($champ, $evenement_main) {
1224
1225 // Si un l'évenement est renseigné
1226 if (isset($this->valF[$champ])
1227 && $this->valF[$champ] != "") {
1228
1229 // Récupère l'événement
1230 $evenement_retour = $this->valF[$champ];
1231
1232 // Récupère le libelle de l'événement
1233 $evenement_libelle = $this->getEvenementLibelle($evenement_retour);
1234
1235 // Si l'événement est utilisé en tant que "evenement_retour_ar"
1236 if ($this->checkEvenementIsUse($evenement_retour, 'evenement_retour_ar', $evenement_main)) {
1237
1238 // Message d'erreur
1239 $error_message = __("L'evenement \"%s\" est deja utilise en tant qu'evenement d'accuse de reception.");
1240
1241 // Le formulaire n'est pas validé
1242 $this->correct=false;
1243 $this->addToMessage(sprintf($error_message, $evenement_libelle));
1244 }
1245
1246 // Si l'événement est utilisé en tant que
1247 // "evenement_retour_signature"
1248 if ($this->checkEvenementIsUse($evenement_retour, 'evenement_retour_signature', $evenement_main)) {
1249
1250 // Message d'erreur
1251 $error_message = __("L'evenement \"%s\" est deja utilise en tant qu'evenement de retour de signature.");
1252
1253 // Le formulaire n'est pas validé
1254 $this->correct=false;
1255 $this->addToMessage(sprintf($error_message, $evenement_libelle));
1256 }
1257 }
1258
1259 }
1260
1261 /**
1262 * Vérifie si l'événement est déjà utilisé dans un autre champ
1263 * @param integer $evenement Identifiant de l'événement
1264 * @return boolean
1265 */
1266 function checkEvenementIsUse($evenement_link, $champ, $evenement_main) {
1267
1268 // Initialisation du retour de la fonction
1269 $return = false;
1270
1271 // Si les paramètres ne sont pas vide
1272 if ($evenement_link != "" && $champ != "") {
1273
1274 $qres = $this->f->get_all_results_from_db_query(
1275 sprintf(
1276 'SELECT
1277 evenement
1278 FROM
1279 %1$sevenement
1280 WHERE
1281 %2$s = %3$s
1282 %4$s',
1283 DB_PREFIXE,
1284 $this->f->db->escapeSimple($champ),
1285 $this->f->db->escapeSimple($evenement_link),
1286 // Si l'événement principal est déjà créé,
1287 // il ne faut pas que l'événement principal soit pris en compte
1288 $evenement_main != "" ?
1289 sprintf(" AND evenement != %d", intval($evenement_main)) :
1290 ''
1291 ),
1292 array(
1293 'origin' => __METHOD__
1294 )
1295 );
1296 // Si il y a un résultat à la requête
1297 if ($qres['row_count'] > 0) {
1298
1299 // Change la valeur de retour
1300 $return = true;
1301 }
1302 }
1303
1304 // Retourne le résultat de la fonction
1305 return $return;
1306
1307 }
1308
1309 /**
1310 * Récupère le libellé de l'evénement passé en paramètre
1311 * @param integer $evenement Identifiant de l'événement
1312 * @return string Libellé de l'événement
1313 */
1314 function getEvenementLibelle($evenement) {
1315 $inst_evenement = $this->f->get_inst__om_dbform(array(
1316 "obj" => "evenement",
1317 "idx" => $evenement,
1318 ));
1319 return $inst_evenement->getVal("libelle");
1320 }
1321
1322 /**
1323 * Copie les paramétres de l'événement principal vers l'évévenement lié
1324 */
1325 function copyParametersToEvenementLink() {
1326 // Si un évenement retour de signature est renseigné
1327 if (isset($this->valF['evenement_retour_signature'])
1328 && $this->valF['evenement_retour_signature'] != "") {
1329
1330 // Instanciation de la classe evenement
1331 $evenement_retour_signature = $this->f->get_inst__om_dbform(array(
1332 "obj" => "evenement",
1333 "idx" => $this->valF['evenement_retour_signature'],
1334 ));
1335 $evenement_retour_signature->setParameter("maj",1);
1336
1337 // Valeurs de l'enregistrement
1338 $value_evenement_retour_signature = array();
1339 foreach($evenement_retour_signature->champs as $key => $champ) {
1340 //
1341 $value_evenement_retour_signature[$champ] = $evenement_retour_signature->val[$key];
1342 }
1343
1344 // Valeurs à modifier
1345 $value_evenement_retour_signature['delai'] = $this->valF['delai'];
1346 $value_evenement_retour_signature['accord_tacite'] = $this->valF['accord_tacite'];
1347 $value_evenement_retour_signature['delai_notification'] = $this->valF['delai_notification'];
1348 $value_evenement_retour_signature['avis_decision'] = $this->valF['avis_decision'];
1349 $value_evenement_retour_signature['restriction'] = $this->valF['restriction'];
1350
1351 // Récupère le libelle de l'événement
1352 $evenement_retour_signature_libelle = $this->getEvenementLibelle($value_evenement_retour_signature['evenement']);
1353
1354 // Message de validation
1355 $valid_message = __("Mise a jour de l'evenement lie \"%s\" realisee avec succes.");
1356
1357 // Modifie l'événement lié pour qu'il ait les mêmes paramètres
1358 // que l'événement principal
1359 if ($evenement_retour_signature->modifier($value_evenement_retour_signature)) {
1360
1361 //
1362 $this->addToMessage(sprintf($valid_message, $evenement_retour_signature_libelle));
1363 }
1364
1365 }
1366
1367 // Si un évenement retour d'accusé de réception est renseigné
1368 if (isset($this->valF['evenement_retour_ar'])
1369 && $this->valF['evenement_retour_ar'] != "") {
1370
1371 // Instanciation de la classe evenement
1372 $evenement_retour_ar = $this->f->get_inst__om_dbform(array(
1373 "obj" => "evenement",
1374 "idx" => $this->valF['evenement_retour_ar'],
1375 ));
1376 $evenement_retour_ar->setParameter("maj",1);
1377
1378 // Valeurs de l'enregistrment
1379 $value_evenement_retour_ar = array();
1380 foreach($evenement_retour_ar->champs as $key => $champ) {
1381 //
1382 $value_evenement_retour_ar[$champ] = $evenement_retour_ar->val[$key];
1383 }
1384
1385 // Valeurs à modifier
1386 $value_evenement_retour_ar['delai'] = $this->valF['delai'];
1387 $value_evenement_retour_ar['accord_tacite'] = $this->valF['accord_tacite'];
1388 $value_evenement_retour_ar['delai_notification'] = $this->valF['delai_notification'];
1389 $value_evenement_retour_ar['avis_decision'] = $this->valF['avis_decision'];
1390 $value_evenement_retour_ar['restriction'] = $this->valF['restriction'];
1391
1392 // Récupère le libelle de l'événement
1393 $evenement_retour_ar_libelle = $this->getEvenementLibelle($value_evenement_retour_ar['evenement']);
1394
1395 // Message de validation
1396 $valid_message = __("Mise a jour de l'evenement lie \"%s\" realisee avec succes.");
1397 // Modifie l'événement lié pour qu'il ait les mêmes paramètres
1398 // que l'événement principal
1399 if ($evenement_retour_ar->modifier($value_evenement_retour_ar)) {
1400
1401 //
1402 $this->addToMessage(sprintf($valid_message, $evenement_retour_ar_libelle));
1403 }
1404
1405 }
1406 }
1407
1408 function setOnchange(&$form, $maj) {
1409 parent::setOnchange($form, $maj);
1410
1411 //
1412 $form->setOnchange('retour','retourOnchangeEvenement(this)');
1413
1414 // Alterne l'affichage du champs type_habilitation_tiers_consulte selon la valeur de la notification
1415 $form->setOnchange(
1416 'notification_tiers',
1417 'alternate_display(
1418 this.value === \'notification_automatique\',
1419 [\'type_habilitation_tiers_consulte\'],
1420 [\'\']
1421 )'
1422 );
1423 }
1424
1425 /**
1426 * Fonction appelée lors de la copie d'un enregistrement
1427 * @param array $valCopy Liste des valeurs de l'enregistrement
1428 * @param string $objsf Liste des objets associés
1429 * @param mixed $DEBUG Type du DEBUG
1430 * @return array Liste des valeurs après traitement
1431 */
1432 function update_for_copy($valCopy, $objsf, $DEBUG) {
1433
1434 // Libellé du duplicata
1435 $libelle = __("Copie de %s du %s");
1436 $valCopy['libelle'] = sprintf($libelle, $valCopy['libelle'], date('d/m/Y H:i:s'));
1437 // Tronque le libellé si celui est trop long
1438 $valCopy['libelle'] = mb_substr($valCopy['libelle'], 0, 70, "UTF8");
1439
1440 // Message à retourner
1441 $valCopy['message'] = "";
1442
1443 // S'il y a un événement retour_ar sur l'événement copié
1444 if ($valCopy['evenement_retour_ar'] != '') {
1445 // Copie l'événement retour_ar
1446 $copie = $this->f->copier($valCopy['evenement_retour_ar'], 'evenement', $objsf);
1447 $evenement_retour_ar = $copie['evenement_'.$valCopy['evenement_retour_ar']];
1448 $valCopy['message'] .= $copie['message'];
1449 $valCopy['message_type'] = $copie['message_type'];
1450 $valCopy['evenement_retour_ar'] = $evenement_retour_ar;
1451 }
1452
1453 // S'il y a un événement evenement_retour_signature sur l'événement copié
1454 if ($valCopy['evenement_retour_signature'] != '') {
1455 // Copie l'événement retour_signature
1456 $copie = $this->f->copier($valCopy['evenement_retour_signature'], 'evenement', $objsf);
1457 $evenement_retour_signature = $copie['evenement_'.$valCopy['evenement_retour_signature']];
1458 $valCopy['message'] .= $copie['message'];
1459 $valCopy['message_type'] = $copie['message_type'];
1460 $valCopy['evenement_retour_signature'] = $evenement_retour_signature;
1461 }
1462
1463 // Retourne les valeurs
1464 return $valCopy;
1465 }
1466
1467 /**
1468 * Méthode permettant de savoir si un signataire est obligatoire
1469 * ou pas pour l'évenement.
1470 *
1471 * @return boolean
1472 */
1473 public function is_signataire_obligatoire() {
1474 return $this->get_boolean_from_pgsql_value($this->getVal('signataire_obligatoire'));
1475 }
1476
1477
1478 /**
1479 * Récupère, à l'aide d'une requête, la liste des types d'habilitation notifiable
1480 * pour l'événement.
1481 *
1482 * @return array liste des types d'habilitation notifiable
1483 */
1484 public function get_types_habilitation_notifiable() {
1485 $rst = $this->f->get_all_results_from_db_query(
1486 sprintf(
1487 'SELECT
1488 type_habilitation_tiers_consulte
1489 FROM
1490 %1$sevenement_type_habilitation_tiers_consulte
1491 WHERE
1492 evenement = %2$s',
1493 DB_PREFIXE,
1494 intval($this->getVal($this->clePrimaire))
1495 ),
1496 array(
1497 "origin" => __METHOD__
1498 )
1499 );
1500 // renvoi les valeurs de la colonne des 'type_habilitation_tiers_consulte'
1501 return array_column($rst['result'], 'type_habilitation_tiers_consulte');
1502 }
1503
1504 /**
1505 * Surcharge pour ne pas récupérer les modules liés à l'évènement courant (ceux-ci sont utilisés par les instructions)
1506 */
1507 public function get_modules() {
1508 return $this->get_modules_for($this->table);
1509 }
1510 }

Properties

Name Value
svn:keywords "Id"

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26