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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 3411 - (hide annotations)
Wed Apr 15 13:06:40 2015 UTC (9 years, 9 months ago) by softime
File size: 121854 byte(s)
* Passage en nouvelle version des actions de la classe instruction.
1 fraynaud 3 <?php
2 fmichon 1540 /**
3     *
4     *
5     * specific :
6     * - cle secondaire
7     * destruction autorisée que pour le dernier evenement
8     * [delete the last event ]
9     * - variable globale [global variables]
10     * var $archive_date_depot;
11     * var $retourformulaire;
12     * var $idxformulaire;
13     * - modification des données dans dossier trigger avant
14     * [modify dossier data with trigger function]
15 softime 2771 * - function mois_date : pour ajouter des mois a une date
16 fmichon 1540 * [add months (delay) and calculation final date]
17     * - voir script_lang.js : bible ...
18     *
19     * @package openfoncier
20     * @version SVN : $Id$
21     */
22 fraynaud 3
23 fmichon 1540 //
24     require_once "../gen/obj/instruction.class.php";
25    
26     //
27     require_once "../services/outgoing/messageenqueuer.php";
28    
29     //
30 fraynaud 3 class instruction extends instruction_gen {
31    
32 fraynaud 20 var $archive_date_depot; // specific
33     var $retourformulaire; // specific
34     var $idxformulaire; // specific
35 nhaye 1724 var $valEvenement;
36 nhaye 2905 var $restriction_valid = null;
37 nhaye 1945 // Tableau contenant une partie des métadonnées arrêtés
38     var $metadonneesArrete;
39 fraynaud 3
40 nhaye 1928 var $metadata = array(
41 nhaye 1938 "om_fichier_instruction" => array(
42 nhaye 1928 "dossier" => "getDossier",
43 softime 2016 "dossier_version" => "getDossierVersion",
44 softime 2025 "numDemandeAutor" => "getNumDemandeAutor",
45     "anneemoisDemandeAutor" => "getAnneemoisDemandeAutor",
46     "typeInstruction" => "getTypeInstruction",
47     "statutAutorisation" => "getStatutAutorisation",
48     "typeAutorisation" => "getTypeAutorisation",
49     "dateEvenementDocument" => "getDateEvenementDocument",
50 softime 2016 "groupeInstruction" => 'getGroupeInstruction',
51 softime 2025 "title" => 'getTitle',
52 nhaye 1928 ),
53 vpihour 3025 "arrete" => array(
54     "numArrete" => "getNumArrete",
55     "ReglementaireArrete" => "getReglementaireArrete",
56     "NotificationArrete" => "getNotificationArrete",
57     "dateNotificationArrete" => "getDateNotificationArrete",
58     "controleLegalite" => "getControleLegalite",
59     "dateSignature" => "getDateSignature",
60     "nomSignataire" => "getNomSignataire",
61     "qualiteSignataire" => "getQualiteSignataire",
62     "ap_numRue" => "getAp_numRue",
63     "ap_nomDeLaVoie" => "getAp_nomDeLaVoie",
64     "ap_codePostal" => "getAp_codePostal",
65     "ap_ville" => "getAp_ville",
66     "activite" => "getActivite",
67     "dateControleLegalite" => "getDateControleLegalite",
68     ),
69 nhaye 1928 );
70 softime 3411 /** @var boolean Les nouvelles actions sont activées sur cet objet */
71     var $activate_class_action;
72 nhaye 1928
73 nhaye 2561 function __construct($id, &$db, $debug) {
74 softime 3411 //On active les nouvelles actions
75     $this->activate_class_action = true;
76 fmichon 1540 $this->constructeur($id, $db, $debug);
77     }
78 fraynaud 20
79 fmichon 944 // {{{ Gestion de la confidentialité des données spécifiques
80 softime 3411
81 fmichon 944 /**
82 softime 3411 * Définition des actions disponibles sur la classe.
83     *
84     * @return void
85 fmichon 944 */
86 softime 3411 function init_class_actions() {
87 nhaye 2815
88 softime 3411 parent::init_class_actions();
89    
90     // ACTION - 000 - ajouter
91     // Modifie la condition d'affichage du bouton ajouter
92     $this->class_actions[0]["condition"] = "is_addable_editable_and_deletable";
93    
94     // ACTION - 001 - modifier
95     // Modifie la condition et le libellé du bouton modifier
96     $this->class_actions[1]["condition"] = "is_addable_editable_and_deletable";
97     $this->class_actions[1]["portlet"]["libelle"] = _("Modifier");
98 vpihour 1978
99 softime 3411 // ACTION - 002 - supprimer
100     // Modifie la condition et le libellé du bouton supprimer
101     $this->class_actions[2]["condition"] = "is_addable_editable_and_deletable";
102     $this->class_actions[2]["portlet"]["libelle"] = _("Supprimer");
103 vpihour 1978
104 softime 3411 // ACTION - 100 - finaliser
105     // Finalise l'enregistrement
106     $this->class_actions[100] = array(
107     "identifier" => "finaliser",
108     "portlet" => array(
109     "type" => "action-direct",
110     "libelle" => _("Finaliser le document"),
111     "order" => 110,
112     "class" => "finalise",
113     ),
114     "view" => "formulaire",
115     "method" => "finalize",
116     "button" => "finaliser",
117     "permission_suffix" => "finaliser",
118     "condition" => "is_finalizable",
119     );
120 fmichon 944
121 softime 3411 // ACTION - 110 - definaliser
122     // Finalise l'enregistrement
123     $this->class_actions[110] = array(
124     "identifier" => "definaliser",
125     "portlet" => array(
126     "type" => "action-direct",
127     "libelle" => _("Reprendre la redaction du document"),
128     "order" => 110,
129     "class" => "definalise",
130     ),
131     "view" => "formulaire",
132     "method" => "unfinalize",
133     "button" => "definaliser",
134     "permission_suffix" => "definaliser",
135     "condition" => "is_unfinalizable",
136     );
137 vpihour 1978
138 softime 3411 // ACTION - 120 - edition
139     // Affiche l'édition
140     $this->class_actions[120] = array(
141     "identifier" => "edition",
142     "portlet" => array(
143     "type" => "action-blank",
144     "libelle" => _("Edition"),
145     "order" => 100,
146     "class" => "pdf-16",
147     ),
148     "view" => "view_edition",
149     "condition" => "has_an_edition",
150     "permission_suffix" => "om_fichier_instruction_telecharger",
151     );
152 fmichon 944 }
153    
154     /**
155 fmichon 1908 * Cette variable permet de stocker le résultat de la méthode
156     * getDivisionFromDossier() afin de ne pas effectuer le recalcul à chacun de
157     * ces appels.
158     * @var string Code de la division du dossier en cours
159 fmichon 944 */
160 fmichon 1908 var $_division_from_dossier = NULL;
161    
162     /**
163     * Cette méthode permet de récupérer le code de division correspondant
164     * au dossier sur lequel on se trouve.
165     *
166     * @return string Code de la division du dossier en cours
167     */
168 fmichon 944 function getDivisionFromDossier() {
169 fmichon 1908
170     // Cette méthode peut être appelée plusieurs fois lors d'une requête.
171     // Pour éviter de refaire le traitement de recherche de la division
172     // alors on vérifie si nous ne l'avons pas déjà calculé.
173     if ($this->_division_from_dossier != NULL) {
174     // Logger
175     $this->addToLog("getDivisionFromDossier(): retour de la valeur déjà calculée - '".$this->_division_from_dossier."'", EXTRA_VERBOSE_MODE);
176     // On retourne la valeur déjà calculée
177     return $this->_division_from_dossier;
178 fmichon 944 }
179 fmichon 1908
180     // Par défaut, on définit la valeur du dossier à NULL
181     $dossier = NULL;
182     // Test sur le mode et le contexte du formulaire
183     if ($this->getParameter("maj") == 0
184     && ($this->getParameter("retourformulaire") == "dossier"
185     || $this->getParameter("retourformulaire") == "dossier_instruction"
186     || $this->getParameter("retourformulaire") == "dossier_instruction_mes_encours"
187     || $this->getParameter("retourformulaire") == "dossier_instruction_tous_encours"
188     || $this->getParameter("retourformulaire") == "dossier_instruction_mes_clotures"
189     || $this->getParameter("retourformulaire") == "dossier_instruction_tous_clotures")) {
190     // Si on se trouve en mode AJOUT (seul mode où l'enregistrement
191     // n'existe pas en base de données) ET que nous nous trouvons
192     // dans le contexte d'un dossier d'instruction alors on récupère
193     // le numéro de dossier depuis le paramètre 'idxformulaire'
194     $dossier = $this->getParameter("idxformulaire");
195     } else {
196     // Sinon on récupère le numéro de dossier dans le champs dossier de
197     // l'enregistrement (en base de données)
198     $dossier = $this->getVal("dossier");
199     }
200    
201     // On appelle la méthode de la classe utils qui renvoi le code de la
202     // division d'un dossier, on la stocke pour ne pas refaire le calcul au
203     // prochain appel de cette méthode
204     $this->_division_from_dossier = $this->f->getDivisionFromDossier($dossier);
205     // Logger
206     $this->addToLog("getDivisionFromDossier(): retour de la valeur nouvellement calculée - '".$this->_division_from_dossier."'", EXTRA_VERBOSE_MODE);
207     // On retourne la valeur retournée
208     return $this->_division_from_dossier;
209    
210 fmichon 944 }
211    
212 nhaye 1643 /**
213     * Cette méthode permet de récupérer le dossier d'autorisation d'un dossier
214     */
215 softime 2025 function getNumDemandeAutorFromDossier($id) {
216 nhaye 1643 //
217     if (!isset($id)) {
218     return NULL;
219     }
220     //
221     $sql = "select dossier_autorisation from ".DB_PREFIXE."dossier ";
222     $sql .= " where dossier='".$id."'";
223     //
224     $dossier_autorisation = $this->db->getOne($sql);
225 softime 2025 $this->addToLog("getNumDemandeAutorFromDossier(): db->getone(\"".$sql."\")", VERBOSE_MODE);
226 nhaye 1643 database::isError($dossier_autorisation);
227     //
228     return $dossier_autorisation;
229     }
230    
231 fmichon 944 // }}}
232    
233 fmichon 1540 function setType(&$form, $maj) {
234     //
235     parent::setType($form, $maj);
236     // On cache tous les champs
237     // XXX
238 nhaye 2644 $form->setType('complement5_om_html', 'hidden');
239 fraynaud 20 $form->setType('bible5', 'hidden');
240 nhaye 2644 $form->setType('complement6_om_html', 'hidden');
241 fraynaud 20 $form->setType('bible6', 'hidden');
242 nhaye 2644 $form->setType('complement7_om_html', 'hidden');
243 fraynaud 20 $form->setType('bible7', 'hidden');
244 nhaye 2644 $form->setType('complement8_om_html', 'hidden');
245 fraynaud 20 $form->setType('bible8', 'hidden');
246 nhaye 2644 $form->setType('complement9_om_html', 'hidden');
247 fraynaud 20 $form->setType('bible9', 'hidden');
248 nhaye 2644 $form->setType('complement10_om_html', 'hidden');
249 fraynaud 20 $form->setType('bible10', 'hidden');
250 nhaye 2644 $form->setType('complement11_om_html', 'hidden');
251 fraynaud 20 $form->setType('bible11', 'hidden');
252 nhaye 2644 $form->setType('complement12_om_html', 'hidden');
253 fraynaud 20 $form->setType('bible12', 'hidden');
254 nhaye 2644 $form->setType('complement13_om_html', 'hidden');
255 fraynaud 20 $form->setType('bible13', 'hidden');
256 nhaye 2644 $form->setType('complement14_om_html', 'hidden');
257 fraynaud 20 $form->setType('bible14', 'hidden');
258 nhaye 2644 $form->setType('complement15_om_html', 'hidden');
259 fraynaud 20 $form->setType('bible15', 'hidden');
260 fmichon 1540 //
261 fraynaud 20 $form->setType('delai', 'hidden');
262     $form->setType('etat', 'hidden');
263     $form->setType('accord_tacite', 'hidden');
264     $form->setType('action', 'hidden');
265     $form->setType('delai_notification', 'hidden');
266 vpihour 489 $form->setType('avis_decision', 'hidden');
267 nhaye 2099 $form->setType('autorite_competente', 'hidden');
268 fmichon 1540 //
269 fraynaud 20 $form->setType('archive_delai', 'hidden');
270     $form->setType('archive_etat', 'hidden');
271     $form->setType('archive_accord_tacite', 'hidden');
272     $form->setType('archive_avis', 'hidden');
273 nmeucci 2838 $form->setType('archive_date_complet', 'hiddendate');
274     $form->setType('archive_date_dernier_depot', 'hiddendate');
275     $form->setType('archive_date_rejet', 'hiddendate');
276     $form->setType('archive_date_limite', 'hiddendate');
277     $form->setType('archive_date_notification_delai', 'hiddendate');
278     $form->setType('archive_date_decision', 'hiddendate');
279     $form->setType('archive_date_validite', 'hiddendate');
280     $form->setType('archive_date_achevement', 'hiddendate');
281     $form->setType('archive_date_conformite', 'hiddendate');
282     $form->setType('archive_date_chantier', 'hiddendate');
283 nhaye 2099 $form->setType('archive_autorite_competente','hidden');
284 fmichon 1540 //
285 vpihour 1307 $form->setType('numero_arrete', 'hidden');
286 vpihour 1784 //
287     $form->setType('code_barres', 'hidden');
288 fmichon 1540
289     //
290 nhaye 1717 $form->setType('archive_incompletude','hidden');
291 nhaye 3059 $form->setType('archive_incomplet_notifie','hidden');
292 nhaye 1717 $form->setType('archive_evenement_suivant_tacite','hidden');
293     $form->setType('archive_evenement_suivant_tacite_incompletude','hidden');
294     $form->setType('archive_etat_pendant_incompletude','hidden');
295 nmeucci 2857 $form->setType('archive_date_limite_incompletude','hiddendate');
296 nhaye 1717 $form->setType('archive_delai_incompletude','hidden');
297 softime 2142
298     //
299     $form->setType('duree_validite','hidden');
300     $form->setType('duree_validite_parametrage','hidden');
301 fmichon 1540 if ($maj < 2) { //ajouter et modifier
302     $form->setType('destinataire', 'hidden');
303     $form->setType('lettretype', 'hiddenstatic');
304 nhaye 2644 $form->setType('complement_om_html', 'html');
305     $form->setType('complement2_om_html', 'html');
306 vpihour 3373 $form->setType('complement3_om_html', 'html');
307     $form->setType('complement4_om_html', 'html');
308 fmichon 1540 $form->setType('bible_auto', 'httpclick');
309     $form->setType('bible', 'httpclick');
310     $form->setType('bible2', 'httpclick');
311 vpihour 3373 $form->setType('bible3', 'httpclick');
312     $form->setType('bible4', 'httpclick');
313 fmichon 1540 $form->setType('dossier', 'hidden');
314     $form->setType('libelle', 'hiddenstatic');
315     $form->setType('signataire_arrete','select');
316 nhaye 1564 $form->setType('date_envoi_signature','datedisabled');
317     $form->setType('date_retour_signature','datedisabled');
318     $form->setType('date_envoi_rar','datedisabled');
319     $form->setType('date_retour_rar','datedisabled');
320     $form->setType('date_envoi_controle_legalite','datedisabled');
321     $form->setType('date_retour_controle_legalite','datedisabled');
322 vpihour 1966 $form->setType('date_finalisation_courrier','datedisabled');
323 softime 2049
324 nmeucci 2805
325 softime 2049
326 fmichon 1540 if($maj==0){ // add
327 nmeucci 2805 $form->setType('instruction', 'hidden');
328     $form->setType('lettretype', 'hidden');
329 fmichon 1540 $form->setType('evenement', 'select');
330     $form->setType('date_evenement', 'date2');
331     }else{ // modify
332     $form->setType('instruction', 'hiddenstatic');
333     $form->setType('evenement', 'selecthiddenstatic');
334     //$form->setType('date_evenement', 'hiddenstaticdate');
335     $form->setType('date_evenement', 'date2');
336     // necessaire pour calcul de date en modification
337     //$form->setType('delai', 'hiddenstatic');
338 nmeucci 2944 // les administrateurs technique et fonctionnel peuvent
339     // modifier tous les champs de date
340     if ($this->f->isAccredited("instruction_modification_dates")) {
341     $form->setType('date_envoi_signature', 'date');
342     $form->setType('date_retour_signature', 'date');
343     $form->setType('date_envoi_rar', 'date');
344     $form->setType('date_retour_rar', 'date');
345     $form->setType('date_envoi_controle_legalite', 'date');
346     $form->setType('date_retour_controle_legalite', 'date');
347     $form->setType('date_finalisation_courrier', 'date');
348 nmeucci 2805 }
349 fmichon 1540 }
350     } elseif($maj==2){
351     $form->setType('dossier', 'hidden');
352     $form->setType('bible_auto', 'hidden');
353     $form->setType('bible', 'hidden');
354     $form->setType('bible2', 'hidden');
355 vpihour 3373 $form->setType('bible3', 'hidden');
356     $form->setType('bible4', 'hidden');
357 fmichon 1540 }else {
358     $form->setType('destinataire', 'hidden');
359     $form->setType('dossier', 'hidden');
360     $form->setType('bible_auto', 'hidden');
361     $form->setType('bible', 'hidden');
362     $form->setType('bible2', 'hidden');
363 vpihour 3373 $form->setType('bible3', 'hidden');
364     $form->setType('bible4', 'hidden');
365 fmichon 1540 }
366 vpihour 1899
367     //Cache les champs pour la finalisation
368     $form->setType('om_fichier_instruction', 'hidden');
369     $form->setType('om_final_instruction', 'hidden');
370 nhaye 1945 // Cache le document arrêté
371 softime 2030 $form->setType('document_numerise', 'hidden');
372 vpihour 2069
373     //Masquer les champs date_envoi_controle_legalite et
374 vpihour 3158 //date_retour_controle_legalite si ce n'est pas un arrêté et si ce n'est
375     //pas un utilisateur ayant le droit spécifique
376     if ( !is_numeric($this->getVal("avis_decision"))&&
377     !$this->f->isAccredited("instruction_modification_dates")){
378 vpihour 2069
379 nmeucci 2838 $form->setType("date_envoi_controle_legalite", "hiddendate");
380     $form->setType("date_retour_controle_legalite", "hiddendate");
381 vpihour 2069 }
382 softime 3411
383     // Pour les actions finalize et unfinalize
384     if($maj == 100 || $maj == 110) {
385     //
386     foreach ($this->champs as $value) {
387     // Cache tous les champs
388     $form->setType($value, 'hidden');
389     }
390     }
391 fraynaud 20 }
392 fmichon 1540
393     function setSelect(&$form, $maj,&$db,$debug) {
394     /**
395     * On ne surcharge pas la méthode parent car une requête sur la table
396     * dossier est mauvaise pour les performances, car la requête qui
397     * concerne evenement est plus complexe que celle générée et car les
398     * champs action, avis_decision et etat ne sont pas utilisés comme des
399     * select
400     */
401 fmichon 3172 if(file_exists ("../sql/".OM_DB_PHPTYPE."/".$this->table.".form.inc.php"))
402     include ("../sql/".OM_DB_PHPTYPE."/".$this->table.".form.inc.php");
403     elseif(file_exists ("../sql/".OM_DB_PHPTYPE."/".$this->table.".form.inc"))
404     include ("../sql/".OM_DB_PHPTYPE."/".$this->table.".form.inc");
405 nhaye 428
406 fmichon 1540 //// action
407     //$this->init_select($form, $db, $maj, $debug, "action",
408     // $sql_action, $sql_action_by_id, false);
409 vpihour 1227
410 fmichon 1540 //// avis_decision
411     //$this->init_select($form, $db, $maj, $debug, "avis_decision",
412     // $sql_avis_decision, $sql_avis_decision_by_id, false);
413 nhaye 1140
414 fmichon 1540 //// dossier
415     //$this->init_select($form, $db, $maj, $debug, "dossier",
416     // $sql_dossier, $sql_dossier_by_id, false);
417 nhaye 428
418 fmichon 1540 //// etat
419     //$this->init_select($form, $db, $maj, $debug, "etat",
420     // $sql_etat, $sql_etat_by_id, false);
421    
422     //// evenement
423     //$this->init_select($form, $db, $maj, $debug, "evenement",
424     // $sql_evenement, $sql_evenement_by_id, false);
425    
426     // signataire_arrete
427     $this->init_select($form, $db, $maj, $debug, "signataire_arrete",
428     $sql_signataire_arrete, $sql_signataire_arrete_by_id, true);
429    
430     /**
431     * Gestion du filtre sur les événements de workflow disponibles
432     * On récupère ici en fonction de l'état du dossier d'instruction en
433     * cours et du type du dossier d'instruction en cours la liste
434     * événements disponibles.
435     */
436     if ($maj == 0) {
437     // Récupération des événements par une jointure entre la table dossier
438     // et la table transition et la table evenement et la table
439     // lien_dossier_instruction_type_evenement en fonction de l'identifiant
440     // du dossier d'instruction en cours
441     $sql = "SELECT
442     evenement.evenement,
443 nmeucci 2853 evenement.libelle as lib
444 fmichon 1540 FROM ".DB_PREFIXE."dossier
445     INNER JOIN ".DB_PREFIXE."lien_dossier_instruction_type_evenement
446     ON dossier.dossier_instruction_type=lien_dossier_instruction_type_evenement.dossier_instruction_type
447     INNER JOIN ".DB_PREFIXE."evenement
448     ON evenement.evenement=lien_dossier_instruction_type_evenement.evenement
449     INNER JOIN ".DB_PREFIXE."transition
450     ON evenement.evenement = transition.evenement
451     AND dossier.etat=transition.etat
452     WHERE dossier.dossier='".$this->idxformulaire."'
453 vpihour 2614 ORDER BY evenement.libelle, evenement.action";
454 fmichon 1540 $res = $db->query($sql);
455     $this->addToLog("setSelect(): db->query(\"".$sql."\");", VERBOSE_MODE);
456     if (database::isError($res)) {
457     die($res->getMessage());
458 fraynaud 20 }
459 fmichon 1540 // Remplissage du tableau du select
460     $contenu = array(
461     0 => array("",),
462     1 => array(_('choisir')." "._('evenement'),)
463     );
464     while ($row=& $res->fetchRow()) {
465     $contenu[0][] = $row[0];
466     $contenu[1][] = $row[1];
467     }
468     $form->setSelect("evenement", $contenu);
469     } else {
470     $sql = "SELECT
471 nmeucci 2853 evenement.libelle as lib
472 fmichon 1540 FROM ".DB_PREFIXE."evenement
473     WHERE evenement.evenement=".$this->getVal("evenement")."";
474     $res = $db->getone($sql);
475     $this->addToLog("setSelect(): db->getone(\"".$sql."\");", VERBOSE_MODE);
476     if (database::isError($res)) {
477     die($res->getMessage());
478     }
479     //
480     $contenu = array(
481     0 => array($this->getVal("evenement"),),
482     1 => array($res,)
483     );
484     $form->setSelect("evenement", $contenu);
485 fraynaud 20 }
486 fmichon 1540
487     /**
488     * Gesion des liens vers la bible
489     */
490     // lien bible_auto
491     $contenu = array(_("automatique"));
492 nhaye 428 $form->setSelect("bible_auto",$contenu);
493     // lien bible1
494 fmichon 1540 $contenu = array(_("bible"));
495 nhaye 428 $form->setSelect("bible",$contenu);
496     // lien bible2
497 fmichon 1540 $contenu = array(_("bible"));
498 nhaye 428 $form->setSelect("bible2",$contenu);
499 vpihour 3373 // lien bible3
500     $contenu = array(_("bible"));
501     $form->setSelect("bible3",$contenu);
502     // lien bible4
503     $contenu = array(_("bible"));
504     $form->setSelect("bible4",$contenu);
505 fmichon 1540 }
506 fraynaud 20
507 fmichon 1540 function cleSecondaire($id, &$db, $val, $DEBUG) {
508     //
509     parent::cleSecondaire($id, $db, $val, $DEBUG);
510 vpihour 2000
511 vpihour 2606 $id = $this->getVal($this->clePrimaire);
512 vpihour 2604
513 vpihour 2603
514 softime 2633 //Requête de vérification que cet événement d'instruction n'est pas lié
515 vpihour 2606 //à la création d'un dossier d'instruction
516     $sql = "SELECT demande_type.dossier_instruction_type
517     FROM ".DB_PREFIXE."demande_type
518     LEFT JOIN ".DB_PREFIXE."demande
519     ON demande.demande_type = demande_type.demande_type
520     WHERE demande.instruction_recepisse = ".$id;
521     $res = $this->db->getOne($sql);
522     $this->addToLog("cleSecondaire(): db->getone(\"".$sql."\");", VERBOSE_MODE);
523     if (database::isError($res)) {
524     die($res->getMessage());
525     }
526    
527     // Aucune clé secondaire n'a été trouvée ou c'est un événement sans
528     //création de dossier d'instruction, l'événement d'instruction peut être
529     //supprimé
530 vpihour 2603 if ( $this->correct !== false || $res == null || $res == ""){
531 vpihour 2606
532 softime 2633 // Requête de vérification que cet événement d'instruction est lié
533     // à une demande
534     $sql = "SELECT demande
535     FROM ".DB_PREFIXE."demande
536     WHERE instruction_recepisse = ".$id;
537     $res = $this->db->getOne($sql);
538     $this->addToLog("cleSecondaire(): db->getone(\"".$sql."\");", VERBOSE_MODE);
539     if (database::isError($res)) {
540     die($res->getMessage());
541     }
542    
543 vpihour 2606 //Si c'est un événement d'instruction lié à une demande
544 softime 2633 if ($res != null || $res != ""){
545 vpihour 2603
546 vpihour 2606 require_once "../obj/demande.class.php";
547     $demande = new demande($res, $this->db, DEBUG);
548    
549     //On met à jour la demande en supprimant la liaison vers
550     //l'événement d'instruction
551     $demande->setParameter("maj", 1);
552     $valF = array();
553     foreach($demande->champs as $identifiant => $champ) {
554     $valF[$champ] = $demande->val[$identifiant];
555     }
556     $valF['date_demande']=$demande->dateDBToForm($valF['date_demande']);
557     $valF['instruction_recepisse']=NULL;
558     $ret = $demande->modifier($valF, $this->db, DEBUG);
559 vpihour 2603 }
560    
561 vpihour 2000 /**
562     * Vérification que l'élément supprimé est le dernier pour pouvoir
563     * remodifier les données de manière itérative.
564     */
565     // Initialisation
566     $dernierevenement = "";
567     // Récupération du dernier élément de la table d'instruction qui
568     // concerne le dossier en cours
569     $sql = "SELECT max(instruction)
570     FROM ".DB_PREFIXE."instruction
571     WHERE dossier ='".$this->idxformulaire."'";
572     $dernierevenement = $db->getOne($sql);
573     $this->addToLog("setSelect(): db->getone(\"".$sql."\");", VERBOSE_MODE);
574     if (database::isError($dernierevenement)) {
575     die($dernierevenement->getMessage());
576     }
577     // Si on se trouve effectivement sur le dernier evenement d'instruction
578     if ($dernierevenement == $id) {
579     // Alors on valide la suppression
580     $this->correct = true;
581     $this->addToMessage(_('Destruction_chronologique'));
582     } else {
583     // Alors on annule la suppression
584     $this->correct = false;
585     $this->addToMessage(_("Seul le dernier evenement d'instruction peut etre supprime."));
586     }
587 fmichon 1540 }
588     }
589    
590 nhaye 2412 /**
591     * Vérification de la possibilité ou non de modifier des dates de suivi
592     * @param string $champ champ date à vérifier
593     */
594 nhaye 1564 function updateDate($champ) {
595 nhaye 2412
596 softime 2562 //Si le retourformulaire est "dossier_instruction"
597     if ($this->retourformulaire == "dossier_instruction") {
598    
599     // Vérification de la possibilité de modifier les dates si déjà éditées
600     if($this->valF[$champ] != "" AND !$this->f->user_is_admin) {
601     // si l'utilisateur n'est pas un admin
602     if($this->getVal($champ) != "" AND $this->getVal($champ) != $this->valF[$champ]) {
603     $this->correct = false;
604     $this->addToMessage(_("Les dates de suivis ne peuvent etre modifiees"));
605     }
606 nhaye 1564 }
607     }
608 softime 2562
609     //
610 nhaye 2412 return true;
611 nhaye 1564 }
612    
613 fmichon 1540 // Sélectionne le signataire_arrete par défaut
614     function setVal(&$form,$maj,$validation){
615    
616     // Ajout
617     if($maj == 0) {
618    
619     // Création de la requête
620     $sql = "SELECT signataire_arrete
621     FROM ".DB_PREFIXE."signataire_arrete
622     WHERE defaut IS TRUE";
623    
624     // Exécution de la requête
625 vpihour 1777 $res = $this->f->db->query($sql);
626 vpihour 2456 $this->f->addToLog("setVal(): db->query(\"".$sql."\");", VERBOSE_MODE);
627 vpihour 1777 if ( database::isError($res)){
628     die();
629     }
630 fmichon 1540
631     $row = $res->fetchrow(DB_FETCHMODE_ASSOC);
632    
633     if ( isset($row['signataire_arrete']) && is_numeric($row['signataire_arrete'])){
634    
635     $form->setVal("signataire_arrete",$row['signataire_arrete']);
636     }
637     }
638     }
639    
640     /*Met des valeurs par défaut dans certains des sous-formulaire*/
641     function setValsousformulaire(&$form,$maj,$validation,$idxformulaire,$retourformulaire,$typeformulaire){
642     if ($validation==0 and $maj<2) {
643     if ($maj == 0){
644     $form->setVal("destinataire", $idxformulaire);
645     $form->setVal("dossier", $idxformulaire);
646     $form->setVal("date_evenement", date('Y-m-d'));
647     }
648     $form->setVal("bible_auto","bible_auto()");
649 vpihour 3373 $form->setVal("bible","bible(1)");
650     $form->setVal("bible2","bible(2)");
651     $form->setVal("bible3","bible(3)");
652     $form->setVal("bible4","bible(4)");
653 fmichon 1540 }
654     $this->retourformulaire=$retourformulaire;
655     $this->idxformulaire=$idxformulaire;
656     }
657    
658    
659 nhaye 1439 function setLayout(&$form, $maj){
660     if ( $maj < 2 OR $maj == 3 ) {
661     /*Champ sur lequel s'ouvre le bloc 1 */
662     $form->setBloc('evenement','D',"","col_12");
663 fraynaud 20
664 vpihour 3373 $form->setFieldset('evenement','D',_('Evenement'));
665     $form->setFieldset('lettretype','F','');
666 nhaye 1439
667     $form->setBloc('lettretype','F');
668    
669     $form->setBloc('date_finalisation_courrier','D',"","col_12");
670    
671 vpihour 3373 $form->setFieldset('date_finalisation_courrier','D',_('Dates'));
672     $form->setBloc('date_finalisation_courrier','D',"","col_6");
673     $form->setBloc('date_envoi_controle_legalite','F');
674 nhaye 1439
675 vpihour 3373 $form->setBloc('signataire_arrete','D',"","col_6");
676     $form->setBloc('date_retour_controle_legalite','F');
677     $form->setFieldset('date_retour_controle_legalite','F','');
678 nhaye 1439
679     $form->setBloc('date_retour_controle_legalite','F');
680    
681 nhaye 2644 $form->setBloc('complement_om_html','D',"","col_12");
682 vpihour 3373 $form->setFieldset('complement_om_html','D',_('Complement'));
683     $form->setFieldset('bible','F','');
684 nhaye 1439 $form->setBloc('bible','F');
685    
686 nhaye 2644 $form->setBloc('complement2_om_html','D',"","col_12");
687 vpihour 3373 $form->setFieldset('complement2_om_html','D',_('Complement 2'));
688     $form->setFieldset('bible2','F','');
689 nhaye 1439 $form->setBloc('bible2','F');
690 vpihour 3373
691     $form->setBloc('complement3_om_html','D',"","col_12");
692     $form->setFieldset('complement3_om_html','D',_('Complement 3'));
693     $form->setFieldset('bible3','F','');
694     $form->setBloc('bible3','F');
695    
696     $form->setBloc('complement4_om_html','D',"","col_12");
697     $form->setFieldset('complement4_om_html','D',_('Complement 4'));
698     $form->setFieldset('bible4','F','');
699     $form->setBloc('bible4','F');
700 nhaye 1439 }
701 fraynaud 20 }
702    
703 fmichon 1540 function setLib(&$form, $maj) {
704     //
705     parent::setLib($form, $maj);
706     //
707     $form->setLib('bible_auto', "");
708     $form->setLib('bible', "");
709     $form->setLib('bible2', "");
710 vpihour 3373 $form->setLib('bible3', "");
711     $form->setLib('bible4', "");
712 fraynaud 20 }
713    
714 fmichon 1540 function triggerajouter($id, &$db, $val, $DEBUG) {
715     /**
716     * Le code suivant permet de récupérer des valeurs des tables evenement
717     * et dossier pour les stocker dans l'instruction :
718     * DEPUIS L'EVENEMENT
719     * - action
720     * - delai
721     * - accord_tacite
722     * - etat
723     * - avis_decision
724     * - delai_notification
725     * - lettretype
726 nhaye 2099 * - autorite_competente
727 fmichon 1540 * DEPUIS LE DOSSIER D'INSTRUCTION
728     * - archive_delai
729     * - archive_accord_tacite
730     * - archive_etat
731     * - archive_avis
732     * - date_complet
733     * - date_rejet
734     * - date_limite
735     * - date_notification_delai
736     * - date_decision
737     * - date_validite
738     * - date_achevement
739     * - date_chantier
740     * - date_conformite
741 nhaye 2099 * - avis_decision
742 fmichon 1540 * Il permet également de stocker la date_depot du dossier d'instruction
743     * dans l'attribut $this->archive_date_depot de la classe.
744     */
745     // Récupération de tous les paramètres de l'événement sélectionné
746     $sql = "SELECT * FROM ".DB_PREFIXE."evenement
747     WHERE evenement=".$this->valF['evenement'];
748 fraynaud 20 $res = $db->query($sql);
749 fmichon 1540 $this->addToLog("triggerajouter(): db->query(\"".$sql."\");", VERBOSE_MODE);
750     if (database::isError($res)) {
751     die($res->getMessage());
752     }
753     while ($row=& $res->fetchRow(DB_FETCHMODE_ASSOC)) {
754     // Récupération de l'identifiant de l'action
755     // si une action est paramétrée dans l'événement
756     $this->valF['action'] = NULL;
757     if (isset($row['action']) and !empty($row['action'])) {
758 nhaye 460 $this->valF['action']=$row['action'];
759     }
760 fmichon 1540 // Récupération de la valeur du délai
761     $this->valF['delai'] = $row['delai'];
762     // Récupération de l'identifiant de l'état
763     // si un état est paramétré dans l'événement
764     $this->valF['etat']=NULL;
765     if (isset($row['etat']) and !empty($row['etat'])) {
766 nhaye 460 $this->valF['etat']=$row['etat'];
767     }
768 fmichon 1540 // Récupération de la valeur d'accord tacite
769 fraynaud 20 $this->valF['accord_tacite']=$row['accord_tacite'];
770 fmichon 1540 // Récupération de la valeur du délai de notification
771 fraynaud 20 $this->valF['delai_notification']=$row['delai_notification'];
772 fmichon 1540 // Récupération de l'identifiant de l'avis
773     // si un avis est paramétré dans l'événement
774     $this->valF['avis_decision'] = NULL;
775 vpihour 489 if(isset($row['avis_decision']) and !empty($row['avis_decision'])) {
776     $this->valF['avis_decision']=$row['avis_decision'];
777 fmichon 1540 }
778 nhaye 2099 // Récupération de la valeur de l'autorité compétente
779     // si l'autorité compétente est paramétré dans l'événement
780     $this->valF['autorite_competente'] = NULL;
781     if(isset($row['autorite_competente']) and !empty($row['autorite_competente'])) {
782     $this->valF['autorite_competente']=$row['autorite_competente'];
783     }
784 fmichon 1540 // Récupération de la valeur de la lettre type
785 nhaye 2815 $this->valF['lettretype']=$row['lettretype'];
786 fraynaud 20 }
787 fmichon 1540 // Récupération de toutes les valeurs du dossier d'instruction en cours
788     $sql = "SELECT * FROM ".DB_PREFIXE."dossier
789     WHERE dossier='".$this->valF['dossier']."'";
790 fraynaud 20 $res = $db->query($sql);
791 fmichon 1540 $this->addToLog("triggerajouter(): db->query(\"".$sql."\");", VERBOSE_MODE);
792     if (database::isError($res)) {
793 fraynaud 20 die($res->getMessage());
794 fmichon 1540 }
795 vpihour 2643 $row=& $res->fetchRow(DB_FETCHMODE_ASSOC);
796     $this->updateArchiveData($row);
797     $this->archive_date_depot = $row['date_depot'];
798    
799 softime 2142 // Récupération de la duree de validite du dossier d'autorisation
800     $sql = "SELECT duree_validite_parametrage
801     FROM ".DB_PREFIXE."dossier_autorisation_type_detaille
802     LEFT JOIN ".DB_PREFIXE."dossier_autorisation
803     ON dossier_autorisation.dossier_autorisation_type_detaille = dossier_autorisation_type_detaille.dossier_autorisation_type_detaille
804     LEFT JOIN ".DB_PREFIXE."dossier
805     ON dossier.dossier_autorisation = dossier_autorisation.dossier_autorisation
806     WHERE dossier.dossier='".$this->valF['dossier']."'";
807     $duree_validite_parametrage = $db->getOne($sql);
808     $this->addToLog("triggerajouter(): db->getOne(\"".$sql."\");", VERBOSE_MODE);
809     database::isError($duree_validite_parametrage);
810     if ($duree_validite_parametrage != '') {
811     $this->valF['duree_validite_parametrage']= $duree_validite_parametrage;
812     }
813 vpihour 1784
814     // Identifiant du type de courrier
815     $idTypeCourrier = '11';
816     $idCourrier = str_pad($this->valF["instruction"], 10, "0", STR_PAD_LEFT);
817     // Code barres
818     $this->valF["code_barres"] = $idTypeCourrier . $idCourrier;
819 fraynaud 20 }
820    
821 vpihour 1137 // Test si une restriction est valide
822     // return boolean
823     function restrictionIsValid($restriction){
824 nhaye 2905 if($this->restriction_valid != null) {
825     return $this->restriction_valid;
826     }
827 nhaye 3050 if(empty($restriction)) {
828     $this->restriction_valid = true;
829     return $this->restriction_valid;
830     }
831 softime 2305 // Liste des opérateurs possible
832     $operateurs = array(">=", "<=", "+", "-");
833     // Liste des opérateurs avec espace
834     $operateurs_blank = array(" >= ", " <= ", " + ", " - ");
835    
836     // Supprime tous les espaces de la chaîne de caractère
837     $restriction = str_replace(' ', '', $restriction);
838 vpihour 1137
839 softime 2305 // Met des espace avant et après les opérateurs puis transforme la
840     // chaine en un tableau
841     $tabRestriction = str_replace($operateurs, $operateurs_blank,
842     $restriction);
843     $tabRestriction = explode(" ", $tabRestriction);
844    
845     // Tableau comprenant les résultat
846 vpihour 1137 $res = array();
847 softime 2305 // Compteur pour les résultat
848     // commence à 1 car le 0 doit rester inchangé tout au long du traitement
849     $j = 1;
850     // Comparateur du calcul
851     $comparateur = '';
852     // Booléen retourné
853     $res_bool = true;
854    
855 softime 2692 // S'il y a un comparateur
856     if (in_array(">=", $tabRestriction)
857     || in_array("<=", $tabRestriction)) {
858 softime 2305
859 softime 2692 // Si le tableau n'est pas vide
860     if (count($tabRestriction) > 0) {
861    
862     // Boucle dans le tableau pour récupérer seulement les valeurs
863     foreach ($tabRestriction as $key => $value) {
864    
865     //
866     if (!in_array($value, $operateurs)) {
867     if ($this->getRestrictionValue($value) != false) {
868     $res[] = $this->getRestrictionValue($value);
869     } else {
870     // Message d'erreur
871     $error_message = sprintf(_("Le champ %s de l'instruction %s est vide"), "<span class='bold'>".$value."</span>", "<span class='bold'>".$this->valF["instruction"]."</span>");
872     $this->addToMessage($error_message);
873     // Arrête le traitement
874     return false;
875     }
876 softime 2305 }
877 vpihour 1137 }
878 softime 2305
879 softime 2692 // Boucle dans le tableau
880     // commence à 1 car le 0 doit rester inchangé tout au long du
881     // traitement
882     for ($i = 1; $i<count($tabRestriction); $i++) {
883    
884     // Récupère le comparateur
885     if ($tabRestriction[$i] === ">="
886     || $tabRestriction[$i] === "<=") {
887     $comparateur = $tabRestriction[$i];
888     }
889 softime 2305
890 softime 2692 // Si l'opérateur qui suit est un "+"
891     if ($tabRestriction[$i] === "+") {
892 softime 2771 $dateDep = $res[$j];
893 softime 2692 unset($res[$j]);$j++;
894     $duree = $res[$j];
895     unset($res[$j]);
896 softime 2771 $res[$j] = $this->f->mois_date($dateDep, $duree, "+");
897 softime 2692 }
898 softime 2305
899 softime 2692 // Si l'opérateur qui suit est un "-"
900     if ($tabRestriction[$i] === "-") {
901 softime 2771 $dateDep = $res[$j];
902 softime 2692 unset($res[$j]);$j++;
903     $duree = $res[$j];
904     unset($res[$j]);
905 softime 2771 $res[$j] = $this->f->mois_date($dateDep, $duree, "-");
906 softime 2692 }
907 softime 2305 }
908 softime 2692
909 vpihour 1137 }
910    
911 softime 2692 // Si les tableau des résultats n'est pas vide
912     if (count($res) > 0) {
913 softime 2305 //
914 softime 2692 $res_bool = false;
915     // Effectue le test
916     if ($comparateur === ">=") {
917     //
918     if (strtotime($res[0]) >= strtotime($res[$j])) {
919     $res_bool = true;
920     }
921 softime 2305 }
922 softime 2692 if ($comparateur === "<=") {
923 vpihour 1137
924 softime 2692 if (strtotime($res[0]) <= strtotime($res[$j])) {
925     $res_bool = true;
926     }
927 softime 2305 }
928 vpihour 1137 }
929 softime 2692 // Sinon une erreur s'affiche
930     } else {
931    
932     // Message d'erreur
933 nhaye 3050 $error_message = _("Mauvais parametrage de la restriction.")." ".
934     _("Contactez votre administrateur");
935 softime 2692 $this->addToMessage($error_message);
936     // Arrête le traitement
937     return false;
938 vpihour 1137 }
939    
940 softime 2305 return $res_bool;
941    
942 vpihour 1137 }
943 softime 2373
944     /**
945 nhaye 2905 * Permet de définir si l'événement passé en paramètre est un événement retour.
946     * @param integer $evenement événement à tester
947     *
948     * @return boolean retourne true si événement retour sinon false
949     */
950     function is_evenement_retour($evenement) {
951     if(empty($evenement) || !is_numeric($evenement)) {
952     return "";
953     }
954     $sql = "SELECT retour
955     FROM ".DB_PREFIXE."evenement
956     WHERE evenement = ".$evenement;
957     $retour = $this->db->getOne($sql);
958     $this->addToLog("verifier(): db->query(\"".$sql."\");", VERBOSE_MODE);
959     if (database::isError($retour)) {
960     die($retour->getMessage());
961     }
962     if ($retour == 't') {
963     return true;
964     } else {
965     return false;
966     }
967     }
968    
969     /**
970     * Retourne le champ restriction de l'événement passé en paramètre.
971     *
972     * @param integer $evenement id de l'événement sur lequel récupérer la restriction
973     *
974     * @return string contenu du champ restriction
975     */
976     function get_restriction($evenement) {
977     if(empty($evenement) || !is_numeric($evenement)) {
978     return "";
979     }
980     //Récupère la restriction
981     $sql= "SELECT
982     restriction
983     FROM
984     ".DB_PREFIXE."evenement
985     WHERE
986     evenement =".$evenement;
987    
988     $restriction = $this->db->getOne($sql);
989     $this->addToLog("verifier(): db->query(\"".$sql."\");", VERBOSE_MODE);
990     if (database::isError($restriction)) {
991     die($restriction->getMessage());
992     }
993     return $restriction;
994     }
995    
996     /**
997 vpihour 2792 * Récupère la valeur du champ dans la restriction
998     * @param string $restrictionValue Nom du champ
999     * @return mixed Valeur du champ
1000     */
1001     function getRestrictionValue($restrictionValue){
1002    
1003     // Initialisation de la valeur de retour
1004     $return = false;
1005    
1006     // Récupére les valeurs du dossier
1007     $value_dossier = $this->get_dossier_actual();
1008    
1009     //
1010     if (is_numeric($restrictionValue)) {
1011     $return = $restrictionValue;
1012     }elseif (isset($value_dossier[$restrictionValue])) {
1013     $return = $value_dossier[$restrictionValue];
1014     }elseif (isset($this->valF[$restrictionValue])) {
1015     $return = $this->valF[$restrictionValue];
1016     }
1017    
1018     // Retourne la valeur du champ
1019     return $return;
1020     }
1021    
1022     /**
1023 softime 2787 * Calcul des règle d'action.
1024     * @param string $rule Règle d'action
1025     * @param string $rule_name Nom de la règle
1026     * @param string $type Type de la règle
1027     *
1028     * @return mixed Résultat de la règle
1029 softime 2373 */
1030 softime 2787 function regle($rule, $rule_name, $type = null) {
1031 softime 2305
1032 softime 2787 // Supprime tous les espaces de la chaîne de caractère
1033     $rule = str_replace(' ', '', $rule);
1034     // Coupe la chaîne au niveau de l'opérateur
1035     $operands = explode ("+", $rule);
1036     // Nombre d'opérande
1037     $nb_operands = count($operands);
1038 softime 2305
1039 softime 2787 // Règle à null
1040     if ($rule == "null") {
1041     return null;
1042     }
1043 softime 2373
1044 softime 2787 // Si c'est une règle spécifique
1045     if ($rule_name == "regle_autorite_competente"
1046     || $rule_name == "regle_etat"
1047     || $rule_name == "regle_accord_tacite"
1048     || $rule_name == "regle_avis") {
1049     //
1050     return $this->valF[$rule];
1051 softime 2305 }
1052    
1053 softime 2787 // Tableau des champs de type date
1054     $rule_type_date = array(
1055     "regle_date_limite",
1056     "regle_date_notification_delai",
1057     "regle_date_complet",
1058     "regle_date_validite",
1059     "regle_date_decision",
1060     "regle_date_chantier",
1061     "regle_date_achevement",
1062     "regle_date_conformite",
1063     "regle_date_rejet",
1064     "regle_date_dernier_depot",
1065     "regle_date_limite_incompletude",
1066     );
1067     // Tableau des champs de type numérique
1068     $rule_type_numeric = array(
1069     "regle_delai",
1070     "regle_delai_incompletude",
1071     );
1072    
1073     // Définit le type du champ
1074     if (in_array($rule_name, $rule_type_date) == true) {
1075     $type = "date";
1076 fraynaud 123 }
1077 softime 2787 if (in_array($rule_name, $rule_type_numeric) == true) {
1078     $type = "numeric";
1079 fraynaud 124 }
1080 softime 2787
1081     // Initialisation des variables
1082     $key_date = 0;
1083     $total_numeric = 0;
1084    
1085     // Pour chaque opérande
1086     foreach ($operands as $key => $operand) {
1087    
1088     // Si c'est une règle de type date
1089     if ($type == 'date') {
1090     // Vérifie si au moins une des opérandes est une date
1091     if (!is_numeric($operand)
1092     && isset($this->valF[$operand])
1093     && $this->f->check_date($this->valF[$operand]) == true) {
1094     // Récupère la position de la date
1095     $key_date = $key;
1096     }
1097     // Les autres opérandes doivent être que des numériques
1098     if (is_numeric($operand) == true) {
1099     // Ajoute l'opérande au total
1100     $total_numeric += $operand;
1101     }
1102     if (!is_numeric($operand)
1103     && isset($this->valF[$operand])
1104     && is_numeric($this->valF[$operand]) == true) {
1105     // Ajoute l'opérande au total
1106     $total_numeric += $this->valF[$operand];
1107     }
1108     }
1109    
1110     // Si c'est une règle de type numérique
1111     if ($type == 'numeric') {
1112     // Les opérandes doivent être que des numériques
1113     if (is_numeric($operand) == true) {
1114     // Ajoute l'opérande au total
1115     $total_numeric += $operand;
1116     }
1117     if (!is_numeric($operand)
1118     && isset($this->valF[$operand])
1119     && is_numeric($this->valF[$operand]) == true) {
1120     // Ajoute l'opérande au total
1121     $total_numeric += $this->valF[$operand];
1122     }
1123     }
1124     }
1125    
1126     // Résultat pour une règle de type date
1127     if ($type == 'date') {
1128     // Retourne le calcul de la date
1129     return $this->f->mois_date($this->valF[$operands[$key_date]],
1130     $total_numeric, "+");
1131     }
1132    
1133     // Résultat pour une règle de type numérique
1134     if ($type == 'numeric') {
1135     // Retourne le calcul
1136     return $total_numeric;
1137     }
1138    
1139 fraynaud 123 }
1140 fmichon 1540
1141 fraynaud 20 function triggerajouterapres($id,&$db,$val,$DEBUG) {
1142 fmichon 1540 /**
1143     * Mise à jour des valeurs du dossier en fonction des valeurs calculées
1144     * par l'action
1145     */
1146 nhaye 1724 $this->getValEvenement();
1147 fmichon 1540 // Initialisation
1148     $valF = "";
1149 nhaye 1741 // état de complétude actuel du dossier
1150     $incompletude = $this->dossierIncomplet();
1151    
1152     if($incompletude === FALSE) {
1153     // Si l'événement d'instruction est de type incompletude
1154     if($this->valEvenement['type'] == "incompletude") {
1155     // On marque le dossier en incomplétude pour application des actions
1156     $incompletude = TRUE;
1157     // Set du flag incomplétude de la table dossier
1158     $valF['incompletude'] = TRUE;
1159     // Enregistrement de l'état dans la variable provisoire
1160     $valF['etat_pendant_incompletude'] = $this->valF['archive_etat'];
1161     }
1162     } else {
1163     // Si l'evenement d'instruction est de type retour ou contient une
1164     // decision, on sort d'incomplétude
1165     if($this->valEvenement['type'] == "retour" OR
1166     $this->valEvenement['avis_decision'] != NULL) {
1167     // On enlève la marque d'incomplétude pour application des actions
1168     $incompletude = FALSE;
1169     // On enlève le flag d'incomplétude sur l'enregistrement de la table dossier
1170     $valF['incompletude'] = FALSE;
1171 nhaye 3059 $valF['incomplet_notifie'] = FALSE;
1172 nhaye 1741 // Restauration de l'état depuis l'état provisoire
1173     $valF['etat'] = $this->valF['archive_etat_pendant_incompletude'];
1174     // On vide la variable provisoire ainsi que le délai de complétude
1175     // et la date limite de complétude
1176     $valF['etat_pendant_incompletude'] = NULL;
1177     $valF['delai_incompletude'] = NULL;
1178     $valF['date_limite_incompletude'] = NULL;
1179 nhaye 3045 $valF['evenement_suivant_tacite_incompletude'] = NULL;
1180 nhaye 1741 }
1181     }
1182 fmichon 1540 // Récupération des paramètres de l'action
1183     $sql = "SELECT * FROM ".DB_PREFIXE."action
1184     WHERE action='".$this->valF['action']."'";
1185     $res = $db->query($sql);
1186     $this->addToLog("triggerajouterapres(): db->query(\"".$sql."\");", VERBOSE_MODE);
1187     if (database::isError($res)) {
1188     die($res->getMessage());
1189     }
1190     while ($row=& $res->fetchRow(DB_FETCHMODE_ASSOC)) {
1191 nhaye 1724
1192 fmichon 1540 // pour chacune des regles, on applique la regle
1193     if($row['regle_delai']!=''){
1194 softime 2787 $valF['delai'] = $this->regle($row['regle_delai'], 'regle_delai');
1195 fmichon 1540 }
1196     if($row['regle_accord_tacite']!=''){
1197 softime 2787 $valF['accord_tacite'] = $this->regle($row['regle_accord_tacite'], 'regle_accord_tacite');
1198 fmichon 1540 }
1199     if($row['regle_avis']!=''){
1200 softime 2787 $valF['avis_decision'] = $this->regle($row['regle_avis'], 'regle_avis');
1201 fmichon 1540 }
1202     if($row['regle_date_limite']!=''){
1203 softime 2787 $valF['date_limite']= $this->regle($row['regle_date_limite'], 'regle_date_limite');
1204 fmichon 1540 }
1205     if($row['regle_date_complet']!=''){
1206 softime 2787 $valF['date_complet']= $this->regle($row['regle_date_complet'], 'regle_date_complet');
1207 fmichon 1540 }
1208 nhaye 1571 if($row['regle_date_dernier_depot']!=''){
1209 softime 2787 $valF['date_dernier_depot']= $this->regle($row['regle_date_dernier_depot'], 'regle_date_dernier_depot');
1210 nhaye 1571 }
1211 fmichon 1540 if($row['regle_date_notification_delai']!=''){
1212 softime 2787 $valF['date_notification_delai']= $this->regle($row['regle_date_notification_delai'], 'regle_date_notification_delai');
1213 fmichon 1540 }
1214     if($row['regle_date_decision']!=''){
1215 softime 2787 $valF['date_decision']= $this->regle($row['regle_date_decision'], 'regle_date_decision');
1216 fmichon 1540 }
1217     if($row['regle_date_rejet']!=''){
1218 softime 2787 $valF['date_rejet']= $this->regle($row['regle_date_rejet'], 'regle_date_rejet');
1219 fmichon 1540 }
1220     if($row['regle_date_validite']!=''){
1221 softime 2787 $valF['date_validite']= $this->regle($row['regle_date_validite'], 'regle_date_validite');
1222 fmichon 1540 }
1223     if($row['regle_date_chantier']!=''){
1224 softime 2787 $valF['date_chantier']= $this->regle($row['regle_date_chantier'], 'regle_date_chantier');
1225 fmichon 1540 }
1226     if($row['regle_date_achevement']!=''){
1227 softime 2787 $valF['date_achevement']= $this->regle($row['regle_date_achevement'], 'regle_date_achevement');
1228 fmichon 1540 }
1229     if($row['regle_date_conformite']!=''){
1230 softime 2787 $valF['date_conformite']= $this->regle($row['regle_date_conformite'], 'regle_date_conformite');
1231 fmichon 1540 }
1232 nhaye 1731 if($row['regle_date_limite_incompletude']!=''){
1233 softime 2787 $valF['date_limite_incompletude']= $this->regle($row['regle_date_limite_incompletude'], 'regle_date_limite_incompletude');
1234 nhaye 1731 }
1235     if($row['regle_delai_incompletude']!=''){
1236 softime 2787 $valF['delai_incompletude']= $this->regle($row['regle_delai_incompletude'], 'regle_delai_incompletude');
1237 nhaye 1731 }
1238 nhaye 2099 if($row['regle_autorite_competente']!=''){
1239 softime 2787 $valF['autorite_competente']= $this->regle($row['regle_autorite_competente'], 'regle_autorite_competente');
1240 nhaye 2099 }
1241 nhaye 1741 if($row['regle_etat']!=''){
1242     // Si on est dans le cas général ou qu'on est en incomplétude et
1243     // qu'on a un événement de type incomplétude alors : on stocke
1244     // l'état dans la variable courante
1245     if ($incompletude == FALSE OR $this->valEvenement['type'] == "incompletude") {
1246 softime 2787 $valF['etat'] = $this->regle($row['regle_etat'], 'regle_etat');
1247 nhaye 1741 } else {
1248 softime 2787 $valF['etat_pendant_incompletude'] = $this->regle($row['regle_etat'], 'regle_etat');
1249 nhaye 1741 }
1250     }
1251 fmichon 1540 }
1252 nhaye 3045 if($this->valEvenement['evenement_suivant_tacite'] != '') {
1253 softime 3411 // Si on est pas en incomplétude on stocke l'événement tacite
1254     //de l'événement dans la variable courante
1255    
1256     if ($incompletude == FALSE OR $this->valEvenement['type'] != "incompletude") {
1257     $valF['evenement_suivant_tacite'] = $this->valEvenement['evenement_suivant_tacite'];
1258     } else {
1259     $valF['evenement_suivant_tacite_incompletude'] = $this->valEvenement['evenement_suivant_tacite'];
1260     }
1261 nhaye 3045 }
1262 fmichon 1540 // Si des valeurs ont été calculées alors on met à jour l'enregistrement
1263     if ($valF != "") {
1264     // On met à jour le dossier
1265     $cle = " dossier='".$this->valF['dossier']."'";
1266     $res1 = $db->autoExecute(DB_PREFIXE.'dossier', $valF, DB_AUTOQUERY_UPDATE, $cle);
1267     $this->addToLog("triggerajouterapres(): db->autoexecute(\"".DB_PREFIXE."dossier\", ".print_r($valF, true).", DB_AUTOQUERY_UPDATE, \"".$cle."\");", VERBOSE_MODE);
1268     if (database::isError($res1)) {
1269 fraynaud 20 die($res->getMessage());
1270 fmichon 1540 }
1271     // Affichage d'informations à l'utilisateur
1272     $this->addToMessage(_('enregistrement')." ".$this->valF['dossier']." "._('table')." dossier [".$db->affectedRows()." "._('enregistrement')." "._('mis_a_jour')."]");
1273 fraynaud 20 }
1274 fmichon 1540
1275     /**
1276     * REFERENTIEL ERP
1277     */
1278 fmichon 1005 // verification si envoi vers ERP est active
1279 vpihour 3126 if ($this->f->getParameter('option_erp') === 'true') {
1280 fmichon 1005 // la nature du dossier
1281     $nature_dossier = substr($this->idxformulaire,0,2);
1282 fmichon 1540 //
1283     $sql = "SELECT erp
1284     FROM ".DB_PREFIXE."dossier
1285     WHERE dossier='".$this->valF['dossier']."'";
1286     $dossier_erp = $this->db->getone($sql);
1287     $this->addToLog("triggerajouterapres(): db->getone(\"".$sql."\");", VERBOSE_MODE);
1288     if (database::isError($res)) {
1289     die($res->getMessage());
1290     }
1291     //
1292     $sql = "SELECT libelle
1293     FROM ".DB_PREFIXE."evenement
1294     WHERE evenement='".$this->valF['evenement']."'";
1295     $evenement_libelle = $this->db->getone($sql);
1296     $this->addToLog("triggerajouterapres(): db->getone(\"".$sql."\");", VERBOSE_MODE);
1297     if (database::isError($res)) {
1298     die($res->getMessage());
1299     }
1300     //
1301 fmichon 1005 if ($dossier_erp == 't') {
1302     // envoi du message en cas d'un PC qui est ERP et sur lequel un evenement
1303     // d'acceptation etait fait
1304     if ($nature_dossier ==
1305     $this->f->getParameter('erp_evenement_accepter_dossier_PC')
1306     && $this->valF['evenement'] ==
1307     $this->f->getParameter('erp_evenement_accepter_sans_reserve')) {
1308     $msgenque = new MessageEnqueuer();
1309     $msgenque->setDossierInstructionIdentifier($this->valF['dossier']);
1310     $msgenque->setDecision($evenement_libelle);
1311 vpihour 2842 $return = $msgenque->enqueueMessage($msgenque::$ERP_ARRETE_PC_EFFECTUE);
1312     //Si une erreur s'est produite on arrête le traitement et on
1313     //retourne une erreur
1314     if ($return !== 0){
1315    
1316     $this->addToMessage(_("Une erreur s'est produite lors de ".
1317     "l'envoi du message au referentiel ERP. Merci de ".
1318     "contacter votre administrateur"));
1319     //On ne valide pas le formulaire
1320 vpihour 2877 $this->addToMessage("<br/>"._("SAISIE NON ENREGISTREE")."<br/>");
1321     $this->correct = false;
1322     return false;
1323 vpihour 2842 }
1324     else {
1325     $this->addToMessage(_("Le message a ete transmis au ".
1326     "referentiel ERP."));
1327     }
1328 fmichon 1005 }
1329     if ($this->valF['evenement'] ==
1330     $this->f->getParameter('erp_evenement_refuser_dossier')) {
1331     $msgenque = new MessageEnqueuer();
1332     $msgenque->setDossierInstructionIdentifier($this->valF['dossier']);
1333 vpihour 2842 $return = $msgenque->enqueueMessage($msgenque::$ERP_DECISION_CONFORMITE_EFFECTUE);
1334     //Si une erreur s'est produite on arrête le traitement et on
1335     //retourne une erreur
1336     if ($return !== 0){
1337    
1338     $this->addToMessage(_("Une erreur s'est produite lors de ".
1339     "l'envoi du message au referentiel ERP. Merci de ".
1340     "contacter votre administrateur"));
1341     //On ne valide pas le formulaire
1342 vpihour 2877 $this->addToMessage("<br/>"._("SAISIE NON ENREGISTREE")."<br/>");
1343     $this->correct = false;
1344     return false;
1345 vpihour 2842 }
1346     else {
1347     $this->addToMessage(_("Le message a ete transmis au ".
1348     "referentiel ERP."));
1349     }
1350 fmichon 1005 }
1351 mlimic 936 }
1352 vpihour 3126 } // fin de if ($this->f->getParameter('option_erp') === 'true')
1353 nhaye 1643
1354     // Mise à jour des données du dossier d'autorisation
1355     require_once "../obj/dossier_autorisation.class.php";
1356 softime 2025 $da = new dossier_autorisation($this->getNumDemandeAutorFromDossier($this->valF['dossier']), $this->db, DEBUG);
1357 nhaye 2806 if($da->majDossierAutorisation() === false) {
1358 nhaye 2824 $this->addToMessage(_("Erreur lors de la mise a jour des donnees du dossier d'autorisation. Contactez votre administrateur."));
1359 nhaye 2806 $this->correct = false;
1360     return false;
1361     }
1362 fmichon 1540 }
1363 softime 2030
1364 fraynaud 129 function triggermodifierapres($id,&$db,$val,$DEBUG) {
1365 fmichon 1540 /**
1366     * L'objectif ici est d'effectuer les recalculs de date dans le dossier
1367     * si la date de l'evenement est modifiee
1368     */
1369     // Initialisation
1370     $valF = "";
1371 nhaye 2561 // Initialisation du type d'événement
1372     $type_evmt = "";
1373 fmichon 1540 // Récupération de l'action correspondante à l'événement
1374     $sql = "SELECT action
1375     FROM ".DB_PREFIXE."evenement
1376     WHERE evenement=".$this->valF['evenement'];
1377 fraynaud 129 $action = $db->getOne($sql);
1378 fmichon 1540 $this->addToLog("triggermodifierapres(): db->getone(\"".$sql."\");", VERBOSE_MODE);
1379     if (database::isError($action)) {
1380     die($action->getMessage());
1381     }
1382 nhaye 1564
1383 fmichon 1540 // Récupération des paramètres de l'action
1384     $sql = "SELECT * FROM ".DB_PREFIXE."action
1385     WHERE action='".$action."'";
1386 fraynaud 129 $res = $db->query($sql);
1387 fmichon 1540 $this->addToLog("triggermodifierapres(): db->query(\"".$sql."\");", VERBOSE_MODE);
1388     if (database::isError($res)) {
1389     die($res->getMessage());
1390     }
1391 fraynaud 129 while ($row=& $res->fetchRow(DB_FETCHMODE_ASSOC)){
1392     // application des regles sur le courrier + delai
1393 vpihour 1127 if(preg_match("/date_evenement/",$row['regle_date_limite'])){
1394 softime 2787 $valF['date_limite']= $this->regle($row['regle_date_limite'], 'regle_date_limite');
1395 fraynaud 129 }
1396 vpihour 1127 if(preg_match("/date_evenement/",$row['regle_date_complet'])){
1397 softime 2787 $valF['date_complet']= $this->regle($row['regle_date_complet'], 'regle_date_complet');
1398 fraynaud 129 }
1399 nhaye 1571 if(preg_match("/date_evenement/",$row['regle_date_dernier_depot'])){
1400 softime 2787 $valF['date_dernier_depot']= $this->regle($row['regle_date_dernier_depot'], 'regle_date_dernier_depot');
1401 nhaye 1571 }
1402 vpihour 1127 if(preg_match("/date_evenement/",$row['regle_date_notification_delai'])){
1403 softime 2787 $valF['date_notification_delai']= $this->regle($row['regle_date_notification_delai'], 'regle_date_notification_delai');
1404 fraynaud 129 }
1405 vpihour 1127 if(preg_match("/date_evenement/",$row['regle_date_decision'])){
1406 softime 2787 $valF['date_decision']= $this->regle($row['regle_date_decision'], 'regle_date_decision');
1407 fraynaud 129 }
1408 vpihour 1127 if(preg_match("/date_evenement/",$row['regle_date_rejet'])){
1409 softime 2787 $valF['date_rejet']= $this->regle($row['regle_date_rejet'], 'regle_date_rejet');
1410 fraynaud 129 }
1411 vpihour 1127 if(preg_match("/date_evenement/",$row['regle_date_validite'])){
1412 softime 2787 $valF['date_validite']= $this->regle($row['regle_date_validite'], 'regle_date_validite');
1413 fraynaud 129 }
1414 vpihour 1127 if(preg_match("/date_evenement/",$row['regle_date_chantier'])){
1415 softime 2787 $valF['date_chantier']= $this->regle($row['regle_date_chantier'], 'regle_date_chantier');
1416 fraynaud 129 }
1417 vpihour 1127 if(preg_match("/date_evenement/",$row['regle_date_achevement'])){
1418 softime 2787 $valF['date_achevement']= $this->regle($row['regle_date_achevement'], 'regle_date_achevement');
1419 fraynaud 129 }
1420 vpihour 1127 if(preg_match("/date_evenement/",$row['regle_date_conformite'])){
1421 softime 2787 $valF['date_conformite']= $this->regle($row['regle_date_conformite'], 'regle_date_conformite');
1422 fraynaud 129 }
1423 fmichon 1540 }
1424     // Si des valeurs ont été calculées alors on met à jour l'enregistrement
1425     if ($valF != "") {
1426     // On met à jour le dossier
1427     $cle = " dossier='".$this->valF['dossier']."'";
1428     $res1 = $db->autoExecute(DB_PREFIXE.'dossier', $valF, DB_AUTOQUERY_UPDATE, $cle);
1429 softime 2562 $this->addToLog("triggermodifierapres(): db->autoexecute(\"".DB_PREFIXE."dossier\", ".print_r($valF, true).", DB_AUTOQUERY_UPDATE, \"".$cle."\");", VERBOSE_MODE);
1430 fmichon 1540 if (database::isError($res1)) {
1431 fraynaud 129 die($res->getMessage());
1432 fmichon 1540 }
1433     // Affichage d'informations à l'utilisateur
1434     $this->addToMessage(_('enregistrement')." ".$this->valF['dossier']." "._('table')." dossier [".$db->affectedRows()." "._('enregistrement')." "._('mis_a_jour')."]");
1435 fraynaud 129 }
1436 nhaye 1299
1437 nhaye 2905 $restriction = $this->get_restriction($val['evenement']);
1438 vpihour 2920 $this->restriction_valid = $this->restrictionIsValid($restriction);
1439 nhaye 2905
1440 vpihour 2920 if($restriction == "" || $this->restriction_valid ){
1441 nhaye 2905 // Récupération de tous les paramètres de l'événement sélectionné
1442     $sql = "SELECT * FROM ".DB_PREFIXE."evenement
1443     WHERE evenement=".$this->valF['evenement'];
1444     $res = $db->query($sql);
1445     $this->addToLog("triggermodifierapres(): db->query(\"".$sql."\");", VERBOSE_MODE);
1446     if (database::isError($res)) {
1447     die($res->getMessage());
1448 softime 2562 }
1449 nhaye 2905 while ($row=& $res->fetchRow(DB_FETCHMODE_ASSOC)) {
1450     // Si la date de retour signature est éditée on vérifie si il existe un événement automatique
1451     if ($this->getVal('date_retour_signature') == "" AND
1452     $this->valF['date_retour_signature'] != "" AND
1453     $row['evenement_retour_signature'] != "") {
1454     $new_instruction = new instruction("]", $db, $DEBUG);
1455     // Création d'un tableau avec la liste des champs de l'instruction
1456     foreach($new_instruction->champs as $champ) {
1457     $valNewInstr[$champ] = "";
1458     }
1459     // Définition des valeurs de la nouvelle instruction
1460     $valNewInstr["evenement"] = $row['evenement_retour_signature'];
1461     $valNewInstr["destinataire"] = $this->valF['destinataire'];
1462     $valNewInstr["dossier"] = $this->valF['dossier'];
1463     $valNewInstr["date_evenement"] = $this->f->formatDate($this->valF['date_retour_signature']);
1464     $valNewInstr["date_envoi_signature"] = $this->f->formatDate($this->valF['date_envoi_signature']);
1465     $valNewInstr["date_retour_signature"] = $this->f->formatDate($this->valF['date_retour_signature']);
1466     $valNewInstr["date_envoi_rar"] = $this->f->formatDate($this->valF['date_envoi_rar']);
1467     $valNewInstr["date_retour_rar"] = $this->f->formatDate($this->valF['date_retour_rar']);
1468     $valNewInstr["date_envoi_controle_legalite"] = $this->f->formatDate($this->valF['date_envoi_controle_legalite']);
1469     $valNewInstr["date_retour_controle_legalite"] = $this->f->formatDate($this->valF['date_retour_controle_legalite']);
1470     $retour = $new_instruction->ajouter($valNewInstr,$db, $DEBUG);
1471    
1472 vpihour 2920 //Si une erreur s'est produite et qu'il s'agit d'un problème
1473     //de restriction
1474     if ($retour == false && !$new_instruction->restriction_valid){
1475     $this->msg .= $new_instruction->msg;
1476     $this->addToLog("triggermodifierapres() : evenement retour ".
1477     "instruction ".$this->valF[$this->clePrimaire]." : ".
1478     $new_instruction->msg);
1479     }
1480     //Si une erreur s'est produite après le test de la restriction
1481     elseif ($retour == false && $new_instruction->restriction_valid){
1482 nhaye 2905 $this->correct = false ;
1483     $this->msg .= $new_instruction->msg;
1484     return false;
1485     }
1486 softime 2562 }
1487 nhaye 2905 // Si la date de retour AR est éditée on vérifie si il existe un événement automatique
1488     if ($this->getVal('date_retour_rar') == "" AND
1489 nhaye 3061 $this->valF['date_retour_rar'] != "") {
1490    
1491     if($row['evenement_retour_ar'] != "") {
1492     $new_instruction = new instruction("]", $db, $DEBUG);
1493     // Création d'un tableau avec la liste des champs de l'instruction
1494     foreach($new_instruction->champs as $champ) {
1495     $valNewInstr[$champ] = "";
1496     }
1497     // Définition des valeurs de la nouvelle instruction
1498     $valNewInstr["evenement"] = $row['evenement_retour_ar'];
1499     $valNewInstr["destinataire"] = $this->valF['destinataire'];
1500     $valNewInstr["dossier"] = $this->valF['dossier'];
1501     $valNewInstr["date_evenement"] = $this->f->formatDate($this->valF['date_retour_rar']);
1502     $valNewInstr["date_envoi_signature"] = $this->f->formatDate($this->valF['date_envoi_signature']);
1503     $valNewInstr["date_retour_signature"] = $this->f->formatDate($this->valF['date_retour_signature']);
1504     $valNewInstr["date_envoi_rar"] = $this->f->formatDate($this->valF['date_envoi_rar']);
1505     $valNewInstr["date_retour_rar"] = $this->f->formatDate($this->valF['date_retour_rar']);
1506     $valNewInstr["date_envoi_controle_legalite"] = $this->f->formatDate($this->valF['date_envoi_controle_legalite']);
1507     $valNewInstr["date_retour_controle_legalite"] = $this->f->formatDate($this->valF['date_retour_controle_legalite']);
1508     $retour = $new_instruction->ajouter($valNewInstr,$db, $DEBUG);
1509    
1510 softime 3411 //Si une erreur s'est produite et qu'il s'agit d'un problème
1511 nhaye 3061 //de restriction
1512     if ($retour == false && !$new_instruction->restriction_valid){
1513     $this->msg .= $new_instruction->msg;
1514     $this->addToLog("triggermodifierapres() : evenement retour ".
1515     "instruction ".$this->valF[$this->clePrimaire]." : ".
1516     $new_instruction->msg);
1517     }
1518     //Si une erreur s'est produite après le test de la restriction
1519     elseif ($retour == false && $new_instruction->restriction_valid){
1520     $this->correct = false ;
1521     $this->msg .= $new_instruction->msg;
1522     return false;
1523     }
1524 nhaye 2905 }
1525 vpihour 3113 // Mise à jour du flag incomplet_notifie dans dossier si la
1526     // date limite d'instruction n'est pas dépassée
1527     if($row['type']=='incompletude' &&
1528 vpihour 3140 ($this->valF['archive_date_notification_delai'] >= $this->valF['date_retour_rar'] ||
1529     $this->valF['archive_date_notification_delai'] == "")) {
1530 nhaye 3059 $valFIncomp['incomplet_notifie'] = true;
1531     $cle = " dossier='".$val['dossier']."'";
1532 nhaye 3061 $resIncomp = $db->autoExecute(
1533 nhaye 3059 DB_PREFIXE.'dossier',
1534 nhaye 3061 $valFIncomp,
1535 nhaye 3059 DB_AUTOQUERY_UPDATE,
1536     $cle
1537     );
1538     $this->addToLog(
1539     "triggersupprimer(): db->autoexecute(\"".
1540 nhaye 3061 DB_PREFIXE."dossier\", ".print_r($valFIncomp, true).
1541 nhaye 3059 ", DB_AUTOQUERY_UPDATE, \"".$cle."\");",
1542     VERBOSE_MODE
1543     );
1544 nhaye 3061 if (database::isError($resIncomp)) {
1545     die($resIncomp->getMessage());
1546 nhaye 3059 }
1547     }
1548 vpihour 2829 }
1549 softime 2562 }
1550     }
1551    
1552 vpihour 2877 //Récupération du type de l'événement
1553     $sql = "SELECT type
1554     FROM ".DB_PREFIXE."evenement
1555     WHERE evenement=".$this->valF['evenement'];
1556     $type_evmt = $db->getOne($sql);
1557     $this->addToLog("triggermodifierapres(): db->getone(\"".$sql."\");", VERBOSE_MODE);
1558     if (database::isError($type_evmt)) {
1559     die($type_evmt->getMessage());
1560     }
1561    
1562 fmichon 1540 /**
1563     * REFERENTIEL ARRETE
1564     */
1565 nhaye 2561 // Si l'option référentiel arrêté est activé et l'événement est de type
1566     // arrêté
1567 vpihour 2877
1568 vpihour 3126 if ($this->f->getParameter('option_referentiel_arrete') === 'true' AND
1569 nhaye 2561 $type_evmt == "arrete") {
1570 fmichon 1540 if ($this->valF['date_retour_signature'] != $this->getVal('date_retour_signature')) {
1571     $msgenque = new MessageEnqueuer();
1572     $sqlArrete = "SELECT instruction.signataire_arrete as \"ws_DA_In_Signataire\",
1573     signataire_arrete.nom as \"ws_DA_In_Sign_Nom\",
1574     signataire_arrete.prenom as \"ws_DA_In_Sign_Prenom\",
1575     signataire_arrete.qualite as \"ws_DA_In_Sign_Qualite\",
1576     instruction.date_evenement as \"ws_DA_In_Dte_Redac\",
1577     '' as \"ws_DA_In_lieu_Redac\",
1578     instruction.dossier as \"ws_DA_In_N_Doss_DAS\",
1579     '' as \"ws_DA_In_Sigle\",
1580     instruction.etat as \"ws_DA_In_Decision\",
1581     dossier.date_depot as \"ws_DA_In_Dte_Depot_Dem\",
1582 nhaye 2561 dossier.terrain_adresse_voie_numero as \"ws_DA_In_N_Voie\",
1583 fmichon 1540 '' as \"ws_DA_In_Type_Voie\",
1584 softime 2061 dossier.terrain_adresse_voie as \"ws_DA_In_Adresse1\",
1585 fmichon 1540 dossier.terrain_adresse_lieu_dit as \"ws_DA_In_Adresse2\",
1586     dossier.terrain_adresse_code_postal as \"ws_DA_In_CP\",
1587     dossier.terrain_adresse_localite as \"ws_DA_In_Ville\",
1588     dossier.terrain_references_cadastrales as \"ws_DA_In_Nb_Parcelle\",
1589     '' as \"ws_DA_In_Detail_Parcelle\",
1590     CONCAT(donnees_techniques.am_projet_desc,' ',donnees_techniques.co_projet_desc) as \"ws_DA_In_Nature_Trvx\",
1591     '' as \"ws_DA_In_Destination_Trvx\",
1592     dossier_autorisation_type_detaille.code as \"ws_DA_In_Type_Dos_Autoris\",
1593     COALESCE(particulier_nom,personne_morale_raison_sociale) as \"ws_DA_In_Nom_Petition\",
1594     COALESCE(particulier_prenom, personne_morale_denomination) as \"ws_DA_In_Prenom_Petition\",
1595     '' as \"ws_DA_In_Piece_GED\",
1596     instruction.date_retour_signature as \"ws_DA_In_Dte_Signature\"
1597     FROM ".DB_PREFIXE."instruction
1598     LEFT JOIN ".DB_PREFIXE."signataire_arrete ON
1599     instruction.signataire_arrete = signataire_arrete.signataire_arrete
1600     LEFT JOIN ".DB_PREFIXE."dossier ON
1601     instruction.dossier = dossier.dossier
1602     LEFT JOIN ".DB_PREFIXE."lien_dossier_demandeur ON
1603     lien_dossier_demandeur.dossier = dossier.dossier
1604     LEFT JOIN ".DB_PREFIXE."demandeur ON
1605     lien_dossier_demandeur.demandeur = demandeur.demandeur
1606     LEFT JOIN ".DB_PREFIXE."dossier_instruction_type ON
1607     dossier.dossier_instruction_type = dossier_instruction_type.dossier_instruction_type
1608     LEFT JOIN ".DB_PREFIXE."dossier_autorisation_type_detaille ON
1609     dossier_instruction_type.dossier_autorisation_type_detaille =
1610     dossier_autorisation_type_detaille.dossier_autorisation_type_detaille
1611     LEFT JOIN ".DB_PREFIXE."donnees_techniques ON
1612     donnees_techniques.dossier_instruction = dossier.dossier
1613     WHERE instruction.instruction = ".$this->valF['instruction'];
1614     $resArrete = $this->db->query($sqlArrete);
1615 softime 2562 $this->f->addToLog("triggermodifierapres(): db->query(\"".$sqlArrete."\");", VERBOSE_MODE);
1616 vpihour 1777 if ( database::isError($resArrete)){
1617     die();
1618     }
1619 fmichon 1540
1620     $rowArrete = $resArrete->fetchRow(DB_FETCHMODE_ASSOC);
1621     $msgenque->setArreteInfo($rowArrete);
1622 vpihour 2842 $return = $msgenque->enqueueMessage($msgenque::$ARRETE_ENVOI);
1623     //Si une erreur s'est produite on arrête le traitement et on
1624     //retourne une erreur
1625     if ($return !== 0){
1626    
1627 vpihour 2877 //On supprime les messages précédents
1628     $this->msg = '';
1629 vpihour 2842 $this->addToMessage(_("Une erreur s'est produite lors de ".
1630     "l'envoi du message au referentiel arrêté. Merci de ".
1631 vpihour 2877 "contacter votre administrateur."));
1632 vpihour 2842 //On ne valide pas le formulaire
1633 vpihour 2877 $this->addToMessage("<br/>"._("SAISIE NON ENREGISTREE")."<br/>");
1634     $this->correct = false;
1635     return false;
1636 vpihour 2842 }
1637     else {
1638     $this->addToMessage(_("Le message a ete transmis au ".
1639     "referentiel arrêté."));
1640     }
1641 fmichon 1540 }
1642 nhaye 1299 }
1643 nhaye 1643
1644     // Mise à jour des données du dossier d'autorisation
1645     require_once "../obj/dossier_autorisation.class.php";
1646 softime 2025 $da = new dossier_autorisation($this->getNumDemandeAutorFromDossier($this->valF['dossier']), $this->db, DEBUG);
1647 nhaye 2806 if($da->majDossierAutorisation() === false) {
1648 nhaye 2824 $this->addToMessage(_("Erreur lors de la mise a jour des donnees du dossier d'autorisation. Contactez votre administrateur."));
1649 nhaye 2806 $this->correct = false;
1650     return false;
1651     }
1652 fraynaud 129 }
1653    
1654 fraynaud 20 function triggersupprimer($id,&$db,$val,$DEBUG) {
1655 fmichon 1540 /**
1656     * L'objectif ici est de repositionner les valeurs récupérées en
1657     * archive dans le dossier d'instruction avant de supprimer l'événement
1658     * d'instruction
1659     */
1660 vpihour 2603
1661     // Mise à jour des 4 valeurs modifiées par l'action
1662     $valF['delai'] = $val['archive_delai'];
1663     $valF['accord_tacite'] = $val['archive_accord_tacite'];
1664     $valF['etat'] = $val['archive_etat'];
1665     if ($val['archive_avis'] != '') {
1666     $valF['avis_decision'] = $val['archive_avis'];
1667     } else {
1668     $valF['avis_decision'] = NULL;
1669     }
1670     // Mise à jour des 10 dates avec la valeur présente dans le formulaire
1671     // de suppression. Si la valeur de la date est vide alors on fixe
1672     // à la valeur NULL
1673     //
1674     if ($val['archive_date_complet'] != '') {
1675     $valF['date_complet'] = $val['archive_date_complet'];
1676     } else {
1677     $valF['date_complet'] = NULL;
1678     }
1679     if ($val['archive_date_dernier_depot'] != '') {
1680     $valF['date_dernier_depot'] = $val['archive_date_dernier_depot'];
1681     } else {
1682     $valF['date_dernier_depot'] = NULL;
1683     }
1684     if ($val['archive_date_rejet'] != '') {
1685     $valF['date_rejet'] = $val['archive_date_rejet'];
1686     } else {
1687     $valF['date_rejet'] = NULL;
1688     }
1689     if ($val['archive_date_limite'] != '') {
1690     $valF['date_limite'] = $val['archive_date_limite'];
1691     } else {
1692     $valF['date_limite'] = NULL;
1693     }
1694     if ($val['archive_date_notification_delai'] != '') {
1695     $valF['date_notification_delai'] = $val['archive_date_notification_delai'];
1696     } else {
1697     $valF['date_notification_delai'] = NULL;
1698     }
1699     if ($val['archive_date_decision'] != '') {
1700     $valF['date_decision'] = $val['archive_date_decision'];
1701     } else {
1702     $valF['date_decision'] = NULL;
1703     }
1704     if ($val['archive_date_validite'] != '') {
1705     $valF['date_validite'] = $val['archive_date_validite'];
1706     } else {
1707     $valF['date_validite'] = NULL;
1708     }
1709     if ($val['archive_date_achevement'] != '') {
1710     $valF['date_achevement'] = $val['archive_date_achevement'];
1711     } else {
1712     $valF['date_achevement'] = NULL;
1713     }
1714     if ($val['archive_date_chantier'] != '') {
1715     $valF['date_chantier'] = $val['archive_date_chantier'];
1716     } else {
1717     $valF['date_chantier'] = NULL;
1718     }
1719     if ($val['archive_date_conformite'] != '') {
1720     $valF['date_conformite'] = $val['archive_date_conformite'];
1721     } else {
1722     $valF['date_conformite'] = NULL;
1723     }
1724     if ($val['archive_incompletude'] != '') {
1725     $valF['incompletude'] = $val['archive_incompletude'];
1726     } else {
1727     $valF['incompletude'] = NULL;
1728     }
1729 nhaye 3059 if ($val['archive_incomplet_notifie'] != '') {
1730     $valF['incomplet_notifie'] = $val['archive_incomplet_notifie'];
1731     } else {
1732     $valF['incomplet_notifie'] = NULL;
1733     }
1734 vpihour 2603 if ($val['archive_evenement_suivant_tacite'] != '') {
1735     $valF['evenement_suivant_tacite'] = $val['archive_evenement_suivant_tacite'];
1736     } else {
1737     $valF['evenement_suivant_tacite'] = NULL;
1738     }
1739     if ($val['archive_evenement_suivant_tacite_incompletude'] != '') {
1740     $valF['evenement_suivant_tacite_incompletude'] = $val['archive_evenement_suivant_tacite_incompletude'];
1741     } else {
1742     $valF['evenement_suivant_tacite_incompletude'] = NULL;
1743     }
1744     if ($val['archive_etat_pendant_incompletude'] != '') {
1745     $valF['etat_pendant_incompletude'] = $val['archive_etat_pendant_incompletude'];
1746     } else {
1747     $valF['etat_pendant_incompletude'] = NULL;
1748     }
1749     if ($val['archive_date_limite_incompletude'] != '') {
1750     $valF['date_limite_incompletude'] = $val['archive_date_limite_incompletude'];
1751     } else {
1752     $valF['date_limite_incompletude'] = NULL;
1753     }
1754     if ($val['archive_delai_incompletude'] != '') {
1755     $valF['delai_incompletude'] = $val['archive_delai_incompletude'];
1756     } else {
1757     $valF['delai_incompletude'] = NULL;
1758     }
1759     if ($val['archive_autorite_competente'] != '') {
1760     $valF['autorite_competente'] = $val['archive_autorite_competente'];
1761     } else {
1762     $valF['autorite_competente'] = NULL;
1763     }
1764     // On met à jour le dossier
1765     $cle = " dossier='".$val['dossier']."'";
1766     $res = $db->autoExecute(DB_PREFIXE.'dossier', $valF, DB_AUTOQUERY_UPDATE, $cle);
1767     $this->addToLog("triggersupprimer(): db->autoexecute(\"".DB_PREFIXE."dossier\", ".print_r($valF, true).", DB_AUTOQUERY_UPDATE, \"".$cle."\");", VERBOSE_MODE);
1768     if (database::isError($res)) {
1769     die($res->getMessage());
1770     }
1771     // Affichage d'informations à l'utilisateur
1772     $this->addToMessage(_("Suppression de l'instruction")." [".$db->affectedRows()." "._('enregistrement')." "._('mis_a_jour')."]");
1773    
1774     // Mise à jour de la demande si un récépissé d'instruction correspond à l'instruction à supprimer
1775 fraynaud 20 }
1776 fmichon 1540
1777 nhaye 1643 function triggersupprimerapres($id,&$db,$val,$DEBUG) {
1778    
1779     // Mise à jour des données du dossier d'autorisation
1780     require_once "../obj/dossier_autorisation.class.php";
1781 softime 2025 $da = new dossier_autorisation($this->getNumDemandeAutorFromDossier($val["dossier"]), $this->db, DEBUG);
1782 nhaye 2806 if($da->majDossierAutorisation() === false) {
1783 nhaye 2824 $this->addToMessage(_("Erreur lors de la mise a jour des donnees du dossier d'autorisation. Contactez votre administrateur."));
1784 nhaye 2806 $this->correct = false;
1785     return false;
1786     }
1787 nhaye 1643 }
1788    
1789 vpihour 1137 // Vérifie la restriction sur l'événement
1790     function verifier($val = array(), &$db, $DEBUG){
1791 nhaye 1186 parent::verifier($val, $db, $DEBUG);
1792 vpihour 1784
1793     if ( isset($val['evenement']) && is_numeric($val['evenement'])){
1794 nhaye 2905 $restriction = $this->get_restriction($val['evenement']);
1795 vpihour 1784
1796     //Test qu'une restriction est présente
1797 nhaye 2905 if ($restriction != "" ){
1798 vpihour 1137
1799 vpihour 1784 //Test si la restriction est valide
1800 vpihour 2920 $this->restriction_valid = $this->restrictionIsValid($restriction);
1801     if ( !$this->restriction_valid ){
1802 vpihour 1784
1803     $this->addToMessage(_("Restriction non valide"));
1804 vpihour 2920 $this->correct = false;
1805     return false;
1806 vpihour 1784 }
1807 softime 2305
1808     // Liste des opérateurs possible
1809     $operateurs = array(">=", "<=", "+", "-");
1810    
1811     // Supprime tous les espaces de la chaîne de caractère
1812     $restriction = str_replace(' ', '', $restriction);
1813    
1814     // Met des espace avant et après les opérateurs puis transforme la
1815     // chaine en un tableau
1816     $tabRestriction = str_replace($operateurs, " ", $restriction);
1817     // Tableau des champ
1818     $tabRestriction = explode(" ", $tabRestriction);
1819     // Supprime les numériques du tableau
1820     foreach ($tabRestriction as $key => $value) {
1821     if (is_numeric($value)) {
1822     unset($tabRestriction[$key]);
1823     }
1824     }
1825    
1826     // Vérifie les champs utilisés pour la restriction
1827     $check_field_exist = $this->f->check_field_exist($tabRestriction, 'instruction');
1828     if ($check_field_exist !== true) {
1829    
1830     // Liste des champs en erreur
1831     $string_error_fields = implode(", ", $check_field_exist);
1832    
1833     // Message d'erreur
1834     $error_message = _("Le champ %s n'est pas utilisable pour le champ %s");
1835     if (count($check_field_exist) > 1) {
1836     $error_message = _("Les champs %s ne sont pas utilisable pour le champ %s");
1837     }
1838    
1839     // Affiche l'erreur
1840     $this->correct=false;
1841     $this->addToMessage(sprintf($error_message, $string_error_fields, _("restriction")));
1842     $this->addToMessage(_("Veuillez contacter votre administrateur."));
1843     }
1844 vpihour 1137 }
1845 softime 2305
1846 vpihour 1137 }
1847 nhaye 2412 if(!$this->updateDate("date_envoi_signature")) {
1848     return false;
1849     }
1850     if(!$this->updateDate("date_retour_signature")) {
1851     return false;
1852     }
1853     if(!$this->updateDate("date_envoi_rar")) {
1854     return false;
1855     }
1856     if(!$this->updateDate("date_retour_rar")) {
1857     return false;
1858     }
1859     if(!$this->updateDate("date_envoi_controle_legalite")) {
1860     return false;
1861     }
1862     if(!$this->updateDate("date_retour_controle_legalite")) {
1863     return false;
1864     }
1865 vpihour 1921
1866 vpihour 1137 }
1867 vpihour 1284
1868 nhaye 1724 /**
1869     * Méthode permettant de récupérer toutes les valeurs de l'événement
1870     * sélectionné après validation du formulaire d'instruction
1871     *
1872     * @return array() veleurs de l'événement lié
1873     */
1874    
1875     private function getValEvenement() {
1876     if(!empty($this->valEvenement)) {
1877     return $this->valEvenement;
1878     } else {
1879     $sql = "SELECT * FROM ".DB_PREFIXE."evenement
1880     WHERE evenement=".$this->valF['evenement'];
1881     $res = $this->db->query($sql);
1882     $this->addToLog("getValEvenement(): db->query(\"".$sql."\");", VERBOSE_MODE);
1883     if (database::isError($res)) {
1884     die($res->getMessage());
1885     }
1886     $this->valEvenement = $res->fetchRow(DB_FETCHMODE_ASSOC);
1887     return $this->valEvenement;
1888     }
1889     }
1890    
1891     /**
1892     * Méthode permettant de savoir si le dossier lié à l'instruction à le flag
1893     * incompletude à true après validation du formulaire d'instruction
1894     *
1895     * @return boolean
1896     */
1897     private function dossierIncomplet() {
1898     $sql = "SELECT incompletude FROM ".DB_PREFIXE."dossier
1899     WHERE dossier='".$this->valF['dossier']."'";
1900     $incompletude = $this->db->getOne($sql);
1901     $this->addToLog("dossierIncomplet(): db->query(\"".$sql."\");", VERBOSE_MODE);
1902     if (database::isError($incompletude)) {
1903     die($incompletude->getMessage());
1904     }
1905     if ($incompletude == 't') {
1906     return true;
1907     } else {
1908     return false;
1909     }
1910     }
1911 vpihour 1921
1912     /**
1913 nhaye 1949 * Finalisation des documents.
1914     * @param string $champ champ du fichier à finaliser
1915     * @param booleen $status permet de définir si on finalise ou définalise
1916     * @param string $sousform permet de savoir si se trouve dans un sousformulaire (passé au javascript)
1917 vpihour 1921 */
1918 softime 3411 function manage_finalizing($mode = null, $val = array()) {
1919    
1920     // Si le mode n'existe pas on retourne false
1921     if ($mode != "finalize" && $mode != "unfinalize") {
1922     return false;
1923     }
1924    
1925 vpihour 3027 // Recuperation de la valeur de la cle primaire de l'objet
1926 softime 3411 $id = $this->getVal($this->clePrimaire);
1927    
1928     // Si on finalise le document
1929     if ($mode == "finalize"){
1930    
1931     // Génération du PDF
1932     $result = $this->compute_pdf_output('lettretype', $this->getVal('lettretype'));
1933     $pdf_output = $result['pdf_output'];
1934 vpihour 1921
1935     //Métadonnées du document
1936     $metadata = array(
1937 softime 3411 'filename' => 'instruction_'.$id.'.pdf',
1938 vpihour 1921 'mimetype' => 'application/pdf',
1939     'size' => strlen($pdf_output)
1940     );
1941    
1942 nhaye 1928 // Récupération des métadonnées calculées après validation
1943 nhaye 1938 $spe_metadata = $this->getMetadata("om_fichier_instruction");
1944 nhaye 1928
1945 vpihour 3025 //On vérifie si l'instruction à finaliser a un événement de type arrete
1946     $sql = "SELECT type
1947     FROM ".DB_PREFIXE."evenement
1948     WHERE evenement = ".$this->getVal("evenement");
1949     $typeEvenement = $this->db->getOne($sql);
1950 softime 3411 $this->addToLog(__METHOD__."(): db->getOne(\"".$sql."\");", VERBOSE_MODE);
1951     if (database::isError($typeEvenement, true)) {
1952 vpihour 3025 die();
1953     }
1954    
1955     //Initialisation de la variable
1956     $arrete_metadata = array();
1957     // Si l'événement est de type arrete, on ajoute les métadonnées spécifiques
1958     if ( $typeEvenement === 'arrete' ){
1959     $arrete_metadata = $this->getMetadata("arrete");
1960     }
1961    
1962     $metadata = array_merge($metadata, $spe_metadata, $arrete_metadata);
1963 softime 3411
1964     // Si le document a déjà été finalisé
1965     // met à jour le document mais pas son uid
1966     if ($this->getVal("om_fichier_instruction") != ''){
1967    
1968     // Met à jour le document
1969 vpihour 1927 $uid = $this->f->storage->update(
1970     $this->getVal("om_fichier_instruction"), $pdf_output, $metadata);
1971 vpihour 1921 }
1972 softime 3411 //Sinon, ajoute le document et récupère son uid
1973 vpihour 1921 else {
1974 softime 3411
1975 vpihour 1921 //Stockage du PDF
1976     $uid = $this->f->storage->create($pdf_output, $metadata);
1977     }
1978     }
1979 softime 3411
1980     // Si on finalise le document
1981     if ($mode == "unfinalize") {
1982    
1983     // Récupération de l'uid du document finalisé
1984 vpihour 1927 $uid = $this->getVal("om_fichier_instruction");
1985 vpihour 1921 }
1986    
1987 softime 3411 //
1988     if ($uid == '' || $uid == 'OP_FAILURE' ) {
1989     // Stop le traitement
1990     return false;
1991    
1992     // Message d'echec (saut d'une ligne supplementaire avant le
1993     // message pour qu'il soit mis en evidence)
1994     $this->addToLog(
1995     _("Finalisation non enregistree")." - ".
1996     _("id instruction")." = ".$id." - ".
1997     _("uid fichier")." = ".$uid
1998 vpihour 1921 );
1999 softime 3411 }
2000 vpihour 1921
2001 softime 3411 // Logger
2002     $this->addToLog(__METHOD__."() - begin", EXTRA_VERBOSE_MODE);
2003 vpihour 1921
2004 softime 3411 //
2005     foreach ($this->champs as $key => $champ) {
2006     //
2007     $val[$champ] = $this->val[$key];
2008     }
2009 vpihour 1921
2010 softime 3411 //
2011     $val['date_evenement']=$this->dateDBToForm($val['date_evenement']);
2012     $val['archive_date_complet']=$this->dateDBToForm($val['archive_date_complet']);
2013     $val['archive_date_rejet']=$this->dateDBToForm($val['archive_date_rejet']);
2014     $val['archive_date_limite']=$this->dateDBToForm($val['archive_date_limite']);
2015     $val['archive_date_notification_delai']=$this->dateDBToForm($val['archive_date_notification_delai']);
2016     $val['archive_date_decision']=$this->dateDBToForm($val['archive_date_decision']);
2017     $val['archive_date_validite']=$this->dateDBToForm($val['archive_date_validite']);
2018     $val['archive_date_achevement']=$this->dateDBToForm($val['archive_date_achevement']);
2019     $val['archive_date_chantier']=$this->dateDBToForm($val['archive_date_chantier']);
2020     $val['archive_date_conformite']=$this->dateDBToForm($val['archive_date_conformite']);
2021     $val['archive_date_dernier_depot']=$this->dateDBToForm($val['archive_date_dernier_depot']);
2022     $val['archive_date_limite_incompletude']=$this->dateDBToForm($val['archive_date_limite_incompletude']);
2023     $val['date_finalisation_courrier']=$this->dateDBToForm($val['date_finalisation_courrier']);
2024     $val['date_envoi_signature']=$this->dateDBToForm($val['date_envoi_signature']);
2025     $val['date_retour_signature']=$this->dateDBToForm($val['date_retour_signature']);
2026     $val['date_envoi_rar']=$this->dateDBToForm($val['date_envoi_rar']);
2027     $val['date_retour_rar']=$this->dateDBToForm($val['date_retour_rar']);
2028     $val['date_envoi_controle_legalite']=$this->dateDBToForm($val['date_envoi_controle_legalite']);
2029     $val['date_retour_controle_legalite']=$this->dateDBToForm($val['date_retour_controle_legalite']);
2030    
2031     $this->setvalF($val);
2032    
2033     // Verification de la validite des donnees
2034     $this->verifier($this->val, $this->db, DEBUG);
2035     // Verification du verrou
2036     $this->testverrou();
2037     // Si les verifications precedentes sont correctes, on procede a
2038     // la modification, sinon on ne fait rien et on retourne une erreur
2039     if ($this->correct) {
2040     // Execution du trigger 'before' specifique au MODE 'update'
2041     $this->triggermodifier($id, $this->db, $this->val, DEBUG);
2042    
2043     //
2044     $valF = array(
2045     "om_fichier_instruction" => $uid,
2046     "date_finalisation_courrier" => date('Y-m-d')
2047     );
2048     //
2049     if($mode=="finalize") {
2050     $valF["om_final_instruction"] = 't';
2051 vpihour 1921 } else {
2052 softime 3411 $valF["om_final_instruction"] = 'f';
2053 vpihour 1921 }
2054 softime 3411
2055     // Execution de la requête de modification des donnees de l'attribut
2056     // valF de l'objet dans l'attribut table de l'objet
2057     $res = $this->db->autoExecute(DB_PREFIXE.$this->table, $valF,
2058     DB_AUTOQUERY_UPDATE, $this->getCle($id));
2059     $this->addToLog(__METHOD__."() : db->autoExecute(\"".DB_PREFIXE.$this->table."\", ".print_r($valF, true).", DB_AUTOQUERY_UPDATE, \"".$this->getCle($id)."\")", VERBOSE_MODE);
2060     // Si une erreur survient
2061     if (database::isError($res, true)) {
2062     // Appel de la methode de recuperation des erreurs
2063     $this->erreur_db($res->getDebugInfo(), $res->getMessage(), '');
2064     } else {
2065     // Log
2066     $this->addToLog(_("Requete executee"), VERBOSE_MODE);
2067     // Log
2068     $message = _("Enregistrement")."&nbsp;".$id."&nbsp;";
2069     $message .= _("de la table")."&nbsp;\"".$this->table."\"&nbsp;";
2070     $message .= "[&nbsp;".$this->db->affectedRows()."&nbsp;";
2071     $message .= _("enregistrement(s) mis a jour")."&nbsp;]";
2072     $this->addToLog($message, VERBOSE_MODE);
2073     // Mise en place du verrou pour ne pas finaliser plusieurs fois
2074     // le meme document
2075     $this->verrouille();
2076     // Execution du trigger 'after' specifique au MODE 'update'
2077     //$this->triggermodifierapres($id, $this->db, $val, DEBUG);
2078    
2079     if($mode == "finalize") {
2080     $etat = _('finalisation');
2081     } else {
2082     $etat = _('definalisation');
2083     }
2084     $this->msg = "";
2085     $this->addToMessage(sprintf(_("La %s du document s'est effectuee avec succes."), $etat));
2086    
2087     return true;
2088     }
2089     } else {
2090     // Message d'echec (saut d'une ligne supplementaire avant le
2091     // message pour qu'il soit mis en evidence)
2092 nhaye 3021 $this->addToLog(
2093     _("Finalisation non enregistree")." - ".
2094     _("id instruction")." = ".$id." - ".
2095     _("uid fichier")." = ".$uid
2096     );
2097 softime 3411 return false;
2098 vpihour 1921 }
2099     }
2100 vpihour 1927
2101     /**
2102 nhaye 1928 * Récupération du numéro de dossier d'instruction à ajouter aux métadonnées
2103 nhaye 1949 * @return string numéro de dossier d'instruction
2104 nhaye 1928 */
2105     protected function getDossier() {
2106     if(empty($this->specificMetadata)) {
2107     $this->getSpecificMetadata();
2108     }
2109     return $this->specificMetadata->dossier;
2110     }
2111     /**
2112 softime 2016 * Récupération la version du dossier d'instruction à ajouter aux métadonnées
2113     * @return int Version
2114     */
2115     protected function getDossierVersion() {
2116     if(empty($this->specificMetadata)) {
2117     $this->getSpecificMetadata();
2118     }
2119     return $this->specificMetadata->version;
2120     }
2121     /**
2122 nhaye 1928 * Récupération du numéro de dossier d'autorisation à ajouter aux métadonnées
2123 nhaye 1949 * @return string numéro de dossier d'autorisation
2124 nhaye 1928 */
2125 softime 2025 protected function getNumDemandeAutor() {
2126 nhaye 1928 if(empty($this->specificMetadata)) {
2127     $this->getSpecificMetadata();
2128     }
2129     return $this->specificMetadata->dossier_autorisation;
2130     }
2131     /**
2132     * Récupération de la date de demande initiale du dossier à ajouter aux métadonnées
2133 nhaye 1949 * @return date de la demande initiale
2134 nhaye 1928 */
2135 softime 2025 protected function getAnneemoisDemandeAutor() {
2136 nhaye 1928 if(empty($this->specificMetadata)) {
2137     $this->getSpecificMetadata();
2138     }
2139     return $this->specificMetadata->date_demande_initiale;
2140     }
2141     /**
2142     * Récupération du type de dossier d'instruction à ajouter aux métadonnées
2143 nhaye 1949 * @return string type du dossier d'instruction
2144 nhaye 1928 */
2145 softime 2025 protected function getTypeInstruction() {
2146 nhaye 1928 if(empty($this->specificMetadata)) {
2147     $this->getSpecificMetadata();
2148     }
2149     return $this->specificMetadata->dossier_instruction_type;
2150     }
2151     /**
2152     * Récupération du statut du dossier d'autorisation à ajouter aux métadonnées
2153 nhaye 1949 * @return string avis
2154 nhaye 1928 */
2155 softime 2025 protected function getStatutAutorisation() {
2156 nhaye 1928 if(empty($this->specificMetadata)) {
2157     $this->getSpecificMetadata();
2158     }
2159     return $this->specificMetadata->statut;
2160     }
2161     /**
2162     * Récupération du type de dossier d'autorisation à ajouter aux métadonnées
2163 nhaye 1949 * @return string type du dossier d'autorisation
2164 nhaye 1928 */
2165 softime 2025 protected function getTypeAutorisation() {
2166 nhaye 1928 if(empty($this->specificMetadata)) {
2167     $this->getSpecificMetadata();
2168     }
2169     return $this->specificMetadata->dossier_autorisation_type;
2170     }
2171     /**
2172     * Récupération de la date d'ajout de document à ajouter aux métadonnées
2173 nhaye 1949 * @return date de l'évènement
2174 nhaye 1928 */
2175 softime 2025 protected function getDateEvenementDocument() {
2176 softime 2046 return date("Y-m-d");
2177 nhaye 1928 }
2178     /**
2179     * Récupération du groupe d'instruction à ajouter aux métadonnées
2180     * @return string Groupe d'instruction
2181     */
2182     protected function getGroupeInstruction() {
2183     if(empty($this->specificMetadata)) {
2184     $this->getSpecificMetadata();
2185     }
2186     return $this->specificMetadata->groupe_instruction;
2187     }
2188 softime 2002 /**
2189     * Récupération du libellé du type du document à ajouter aux métadonnées
2190     * @return string Groupe d'instruction
2191     */
2192 softime 2025 protected function getTitle() {
2193 nhaye 1928
2194 softime 2002 // Récupère le champ événement
2195     if (isset($this->valF["evenement"]) AND $this->valF["evenement"] != "") {
2196     $evenement = $this->valF["evenement"];
2197     } else {
2198     $evenement = $this->getVal("evenement");
2199     }
2200    
2201     // Requête sql
2202     $sql = "SELECT libelle FROM ".DB_PREFIXE."evenement
2203     WHERE evenement=".$evenement;
2204     $evenement_libelle = $this->db->getOne($sql);
2205 softime 2025 $this->addToLog("getTitle(): db->getOne(\"".$sql."\");", VERBOSE_MODE);
2206 softime 2002 if (database::isError($evenement_libelle)) {
2207     die();
2208     }
2209    
2210     // Retourne le libelle de l'événement
2211     return $evenement_libelle;
2212     }
2213    
2214 nhaye 1928 /**
2215     * Cette méthode permet de stocker en attribut toutes les métadonnées
2216     * nécessaire à l'ajout d'un document.
2217     */
2218     public function getSpecificMetadata() {
2219     if (isset($this->valF["dossier"]) AND $this->valF["dossier"] != "") {
2220     $dossier = $this->valF["dossier"];
2221     } else {
2222     $dossier = $this->getVal("dossier");
2223     }
2224     //Requête pour récupérer les informations essentiels sur le dossier d'instruction
2225     $sql = "SELECT dossier.dossier as dossier,
2226     dossier_autorisation.dossier_autorisation as dossier_autorisation,
2227     to_char(dossier.date_demande, 'YYYY/MM') as date_demande_initiale,
2228     dossier_instruction_type.code as dossier_instruction_type,
2229     etat_dossier_autorisation.libelle as statut,
2230     dossier_autorisation_type.code as dossier_autorisation_type,
2231     groupe.code as groupe_instruction
2232     FROM ".DB_PREFIXE."dossier
2233     LEFT JOIN ".DB_PREFIXE."dossier_instruction_type
2234     ON dossier.dossier_instruction_type = dossier_instruction_type.dossier_instruction_type
2235     LEFT JOIN ".DB_PREFIXE."dossier_autorisation
2236     ON dossier.dossier_autorisation = dossier_autorisation.dossier_autorisation
2237     LEFT JOIN ".DB_PREFIXE."etat_dossier_autorisation
2238     ON dossier_autorisation.etat_dossier_autorisation = etat_dossier_autorisation.etat_dossier_autorisation
2239     LEFT JOIN ".DB_PREFIXE."dossier_autorisation_type_detaille
2240     ON dossier_autorisation.dossier_autorisation_type_detaille = dossier_autorisation_type_detaille.dossier_autorisation_type_detaille
2241     LEFT JOIN ".DB_PREFIXE."dossier_autorisation_type
2242     ON dossier_autorisation_type_detaille.dossier_autorisation_type = dossier_autorisation_type.dossier_autorisation_type
2243     LEFT JOIN ".DB_PREFIXE."groupe
2244     ON dossier_autorisation_type.groupe = groupe.groupe
2245     WHERE dossier.dossier = '".$dossier."'";
2246     $res = $this->db->query($sql);
2247 softime 2030 $this->f->addToLog("getSpecificMetadata() : db->query(".$sql.")", VERBOSE_MODE);
2248 nhaye 1928 if ( database::isError($res)){
2249     die();
2250     }
2251    
2252     //Le résultat est récupéré dans un objet
2253     $row =& $res->fetchRow(DB_FETCHMODE_OBJECT);
2254    
2255     //Si il y a un résultat
2256     if ($row !== null) {
2257 vpihour 2119
2258     //Génération du numéro de version
2259     $sql = "SELECT
2260     count(*)
2261     FROM
2262     ".DB_PREFIXE."dossier
2263     LEFT JOIN
2264     ".DB_PREFIXE."dossier_autorisation
2265     ON
2266     dossier_autorisation.dossier_autorisation = dossier.dossier_autorisation
2267     LEFT JOIN
2268     ".DB_PREFIXE."dossier_instruction_type
2269     ON
2270     dossier_instruction_type.dossier_instruction_type = dossier.dossier_instruction_type
2271     WHERE
2272 vpihour 2124 dossier_autorisation.dossier_autorisation = '".$row->dossier_autorisation."'
2273 vpihour 2119 AND
2274 vpihour 2124 dossier_instruction_type.code = '".$row->dossier_instruction_type."'";
2275     $row->version = $this->db->getOne($sql);
2276 vpihour 2119 $this->f->addToLog("getSpecificMetadata(): db->getOne(\"".$sql."\")", VERBOSE_MODE);
2277 vpihour 2124 if ( database::isError($row->version)){
2278     $this->f->addToError("", $row->version, $row->version);
2279 vpihour 2119 return false;
2280     }
2281    
2282     //Formatage du numéro de version
2283 vpihour 2124 $row->version = str_pad($row->version, 2, "0", STR_PAD_LEFT);
2284 nhaye 1928
2285     //Alors on créé l'objet dossier_instruction
2286     $this->specificMetadata = $row;
2287    
2288     }
2289     }
2290 vpihour 1978
2291     /**
2292     * Retourne le statut du dossier d'instruction
2293     * @param string $idx Identifiant du dossier d'instruction
2294     * @return string Le statut du dossier d'instruction
2295     */
2296 softime 2025 function getStatutAutorisationDossier($idx){
2297 vpihour 1978
2298     $statut = '';
2299    
2300     //Si l'identifiant du dossier d'instruction fourni est correct
2301     if ( $idx != '' ){
2302    
2303     //On récupère le statut de l'état du dossier à partir de l'identifiant du
2304     //dossier
2305     $sql = "SELECT etat.statut
2306     FROM ".DB_PREFIXE."dossier
2307     LEFT JOIN
2308     ".DB_PREFIXE."etat
2309     ON
2310     dossier.etat = etat.etat
2311     WHERE dossier ='".$idx."'";
2312     $statut = $this->db->getOne($sql);
2313 softime 2025 $this->f->addToLog("getStatutAutorisationDossier() : db->getOne(\"".$sql."\")", VERBOSE_MODE);
2314 vpihour 1978 if ( database::isError($statut)){
2315     die();
2316     }
2317     }
2318     return $statut;
2319     }
2320 softime 2373
2321     /**
2322     * Récupère les données du dossier
2323     * @return array
2324     */
2325     function get_dossier_actual() {
2326    
2327     // Initialisation de la valeur de retour
2328     $return = array();
2329    
2330     // Récupération de toutes les valeurs du dossier d'instruction en cours
2331     $sql = "SELECT * FROM ".DB_PREFIXE."dossier
2332     WHERE dossier='".$this->valF['dossier']."'";
2333     $res = $this->db->query($sql);
2334     $this->addToLog("get_dossier_actual(): db->query(\"".$sql."\");", VERBOSE_MODE);
2335     $this->f->isDatabaseError($res);
2336    
2337     //
2338     while ($row=& $res->fetchRow(DB_FETCHMODE_ASSOC)) {
2339    
2340     // Récupération de la valeur actuelle du délai, de l'accord tacite,
2341     // de l'état et de l'avis du dossier d'instruction
2342     $return['archive_delai']=$row['delai'];
2343     $return['archive_accord_tacite']=$row['accord_tacite'];
2344     $return['archive_etat']=$row['etat'];
2345     $return['archive_avis']=$row['avis_decision'];
2346     // Récupération de la valeur actuelle des 9 dates du dossier
2347     // d'instruction
2348     $return['archive_date_complet']=$row['date_complet'];
2349     $return['archive_date_dernier_depot']=$row['date_dernier_depot'];
2350     $return['archive_date_rejet']= $row['date_rejet'];
2351     $return['archive_date_limite']= $row['date_limite'];
2352     $return['archive_date_notification_delai']= $row['date_notification_delai'];
2353     $return['archive_date_decision']= $row['date_decision'];
2354     $return['archive_date_validite']= $row['date_validite'];
2355     $return['archive_date_achevement']= $row['date_achevement'];
2356     $return['archive_date_chantier']= $row['date_chantier'];
2357 nhaye 3059 $return['archive_date_conformite']= $row['date_conformite'];
2358     $return['archive_incompletude']= $row['incompletude'];
2359     $return['archive_incomplet_notifie']= $row['incomplet_notifie'];
2360     $return['archive_evenement_suivant_tacite']= $row['evenement_suivant_tacite'];
2361     $return['archive_evenement_suivant_tacite_incompletude']= $row['evenement_suivant_tacite_incompletude'];
2362     $return['archive_etat_pendant_incompletude']= $row['etat_pendant_incompletude'];
2363     $return['archive_date_limite_incompletude']= $row['date_limite_incompletude'];
2364     $return['archive_delai_incompletude']= $row['delai_incompletude'];
2365     $return['archive_autorite_competente']= $row['autorite_competente'];
2366     $return['duree_validite']= $row['duree_validite'];
2367 softime 2373 }
2368    
2369     // Retour de la fonction
2370     return $return;
2371    
2372     }
2373    
2374 softime 2613 /**
2375     * Permet de vérifier qu'un événement est verrouillable
2376     * @param integer $idx Identifiant de l'instruction
2377     * @return boolean
2378     */
2379     function checkEvenementNonVerrouillable($idx) {
2380    
2381     // Initialisation du résultat
2382     $non_verrouillable = false;
2383    
2384     // Si la condition n'est pas vide
2385     if ($idx != "") {
2386    
2387     // Requête SQL
2388     $sql = "SELECT evenement.non_verrouillable
2389     FROM ".DB_PREFIXE."evenement
2390     LEFT JOIN ".DB_PREFIXE."instruction
2391     ON instruction.evenement = evenement.evenement
2392     WHERE instruction.instruction = $idx";
2393     $this->f->addToLog("checkEvenementNonVerrouillable() : db->getOne(\"".$sql."\")", VERBOSE_MODE);
2394     $res = $this->db->getOne($sql);
2395     $this->f->isDatabaseError($res);
2396    
2397     // Si le retour de la requête est true
2398     if ($res == 't') {
2399     //
2400     $non_verrouillable = true;
2401     }
2402     }
2403    
2404     // Retourne résultat
2405     return $non_verrouillable;
2406     }
2407 vpihour 2643
2408     /**
2409     * Mise à jour des champs archive_*
2410     * @param mixed $row La ligne de données
2411     */
2412     public function updateArchiveData($row){
2413    
2414     // Récupération de la valeur actuelle du délai, de l'accord tacite,
2415     // de l'état et de l'avis du dossier d'instruction
2416     $this->valF['archive_delai']=$row['delai'];
2417     $this->valF['archive_accord_tacite']=$row['accord_tacite'];
2418     $this->valF['archive_etat']=$row['etat'];
2419     $this->valF['archive_avis']=$row['avis_decision'];
2420     // Récupération de la valeur actuelle des 9 dates du dossier
2421     // d'instruction
2422     if ($row['date_complet'] != '') {
2423     $this->valF['archive_date_complet']=$row['date_complet'];
2424     }
2425     if ($row['date_dernier_depot'] != '') {
2426     $this->valF['archive_date_dernier_depot']=$row['date_dernier_depot'];
2427     }
2428     if ($row['date_rejet']!='') {
2429     $this->valF['archive_date_rejet']= $row['date_rejet'];
2430     }
2431     if ($row['date_limite']!='') {
2432     $this->valF['archive_date_limite']= $row['date_limite'];
2433     }
2434     if ($row['date_notification_delai']!='') {
2435     $this->valF['archive_date_notification_delai']= $row['date_notification_delai'];
2436     }
2437     if ($row['date_decision']!='') {
2438     $this->valF['archive_date_decision']= $row['date_decision'];
2439     }
2440     if ($row['date_validite']!='') {
2441     $this->valF['archive_date_validite']= $row['date_validite'];
2442     }
2443     if ($row['date_achevement']!='') {
2444     $this->valF['archive_date_achevement']= $row['date_achevement'];
2445     }
2446     if ($row['date_chantier']!='') {
2447     $this->valF['archive_date_chantier']= $row['date_chantier'];
2448     }
2449     if ($row['date_conformite']!='') {
2450     $this->valF['archive_date_conformite']= $row['date_conformite'];
2451     }
2452     if ($row['incompletude']!='') {
2453     $this->valF['archive_incompletude']= $row['incompletude'];
2454     }
2455 nhaye 3059 if ($row['incomplet_notifie']!='') {
2456     $this->valF['archive_incomplet_notifie']= $row['incomplet_notifie'];
2457     }
2458 vpihour 2643 if ($row['evenement_suivant_tacite']!='') {
2459     $this->valF['archive_evenement_suivant_tacite']= $row['evenement_suivant_tacite'];
2460     }
2461     if ($row['evenement_suivant_tacite_incompletude']!='') {
2462     $this->valF['archive_evenement_suivant_tacite_incompletude']= $row['evenement_suivant_tacite_incompletude'];
2463     }
2464     if ($row['etat_pendant_incompletude']!='') {
2465     $this->valF['archive_etat_pendant_incompletude']= $row['etat_pendant_incompletude'];
2466     }
2467     if ($row['date_limite_incompletude']!='') {
2468     $this->valF['archive_date_limite_incompletude']= $row['date_limite_incompletude'];
2469     }
2470     if ($row['delai_incompletude']!='') {
2471     $this->valF['archive_delai_incompletude']= $row['delai_incompletude'];
2472     }
2473     if ($row['autorite_competente']!='') {
2474     $this->valF['archive_autorite_competente']= $row['autorite_competente'];
2475     }
2476     if ($row['duree_validite']!='') {
2477     $this->valF['duree_validite']= $row['duree_validite'];
2478     }
2479     }
2480 vpihour 3025
2481     // {{{
2482     // Méthodes de récupération des métadonnées arrêté
2483     /**
2484     * @return string Retourne le numéro d'arrêté
2485     */
2486     function getNumArrete() {
2487     return $this->getVal("numero_arrete");
2488     }
2489     /**
2490     * @return chaîne vide
2491     */
2492     function getReglementaireArrete() {
2493     return 'true';
2494     }
2495     /**
2496     * @return boolean de notification au pétitionnaire
2497     */
2498     function getNotificationArrete() {
2499     return 'true';
2500     }
2501     /**
2502     * @return date de notification au pétitionnaire
2503     */
2504     function getDateNotificationArrete() {
2505     if (empty($this->metadonneesArrete)) {
2506     $this->getArreteMetadata();
2507     }
2508     return $this->metadonneesArrete["datenotification"];
2509     }
2510     /**
2511     * @return boolean check si le document est passé au contrôle de légalité
2512     */
2513     function getControleLegalite() {
2514     return 'true';
2515     }
2516     /**
2517     * @return date de signature de l'arrêté
2518     */
2519     function getDateSignature() {
2520     if (empty($this->metadonneesArrete)) {
2521     $this->getArreteMetadata();
2522     }
2523     return $this->metadonneesArrete["datesignaturearrete"];
2524     }
2525     /**
2526     * @return string nom du signataire
2527     */
2528     function getNomSignataire() {
2529     if (empty($this->metadonneesArrete)) {
2530     $this->getArreteMetadata();
2531     }
2532     return $this->metadonneesArrete["nomsignataire"];
2533     }
2534     /**
2535     * @return string qualité du signataire
2536     */
2537     function getQualiteSignataire() {
2538     if (empty($this->metadonneesArrete)) {
2539     $this->getArreteMetadata();
2540     }
2541     return $this->metadonneesArrete["qualitesignataire"];
2542     }
2543     /**
2544     * @return string numéro du terrain
2545     */
2546     function getAp_numRue() {
2547     if (empty($this->metadonneesArrete)) {
2548     $this->getArreteMetadata();
2549     }
2550     return $this->metadonneesArrete["ap_numrue"];
2551     }
2552     /**
2553     * @return string nom de la rue du terrain
2554     */
2555     function getAp_nomDeLaVoie() {
2556     if (empty($this->metadonneesArrete)) {
2557     $this->getArreteMetadata();
2558     }
2559     return $this->metadonneesArrete["ap_nomdelavoie"];
2560     }
2561     /**
2562     * @return string code postal du terrain
2563     */
2564     function getAp_codePostal() {
2565     if (empty($this->metadonneesArrete)) {
2566     $this->getArreteMetadata();
2567     }
2568     return $this->metadonneesArrete["ap_codepostal"];
2569     }
2570     /**
2571     * @return string ville du terrain
2572     */
2573     function getAp_ville() {
2574     if (empty($this->metadonneesArrete)) {
2575     $this->getArreteMetadata();
2576     }
2577     return $this->metadonneesArrete["ap_ville"];
2578     }
2579     /**
2580     * @return string activité
2581     */
2582     function getActivite() {
2583     return "Droit du sol";
2584     }
2585     /**
2586     * @return string date du retour de controle légalité
2587     */
2588     function getDateControleLegalite() {
2589     if (empty($this->metadonneesArrete)) {
2590     $this->getArreteMetadata();
2591     }
2592     return $this->metadonneesArrete["datecontrolelegalite"];
2593     }
2594    
2595     // Fin des méthodes de récupération des métadonnées
2596     // }}}
2597    
2598     /**
2599     * Méthode de récupération des métadonnées arrêtés dans la base de données,
2600     * les données sont stockés dans l'attribut $this->metadonneesArrete
2601     */
2602     function getArreteMetadata() {
2603    
2604     //Récupération de la dernière instruction dont l'événement est de type 'arrete'
2605     $this->metadonneesArrete = array("nomsignataire"=>"", "qualitesignataire"=>"",
2606     "decisionarrete"=>"", "datenotification"=>"", "datesignaturearrete"=>"",
2607     "datecontrolelegalite"=>"", "ap_numrue"=>"", "ap_nomdelavoie"=>"",
2608     "ap_codepostal"=>"", "ap_ville"=>"");
2609    
2610     $sqlArrete = "SELECT signataire_arrete.nom as \"nomsignataire\",
2611     signataire_arrete.qualite as \"qualitesignataire\",
2612     instruction.etat as \"decisionarrete\",
2613     instruction.date_retour_rar as \"datenotification\",
2614     instruction.date_retour_signature as \"datesignaturearrete\",
2615     instruction.date_retour_controle_legalite as \"datecontrolelegalite\",
2616     dossier.terrain_adresse_voie_numero as \"ap_numrue\",
2617     dossier.terrain_adresse_voie as \"ap_nomdelavoie\",
2618     dossier.terrain_adresse_code_postal as \"ap_codepostal\",
2619     dossier.terrain_adresse_localite as \"ap_ville\"
2620     FROM ".DB_PREFIXE."instruction
2621     LEFT JOIN ".DB_PREFIXE."signataire_arrete ON
2622     instruction.signataire_arrete = signataire_arrete.signataire_arrete
2623     LEFT JOIN ".DB_PREFIXE."dossier ON
2624     instruction.dossier = dossier.dossier
2625     LEFT JOIN ".DB_PREFIXE."donnees_techniques ON
2626     donnees_techniques.dossier_instruction = dossier.dossier
2627     WHERE instruction.instruction = ".$this->getVal("instruction");
2628     $resArrete = $this->db->query($sqlArrete);
2629     $this->f->addToLog("getArreteMetadata(): db->query(\"".$sqlArrete."\");", VERBOSE_MODE);
2630     if ( database::isError($resArrete)){
2631     die();
2632     }
2633    
2634     $this->metadonneesArrete = $resArrete->fetchRow(DB_FETCHMODE_ASSOC);
2635     }
2636    
2637 softime 3411 /**
2638     * CONDITION - has_an_edition.
2639     *
2640     * Condition pour afficher le bouton de visualisation de l'édition.
2641     *
2642     * @return boolean
2643     */
2644     function has_an_edition() {
2645     // Récupère la valeur du champ lettretype
2646     $lettretype = $this->getVal("lettretype");
2647     // Si le champ est vide
2648     if (empty($lettretype)) {
2649     //
2650     return false;
2651     }
2652    
2653     //
2654     return true;
2655     }
2656    
2657     /**
2658     * CONDITION - is_addable_editable_and_deletable.
2659     *
2660     * Condition pour afficher les boutons modifier et supprimer.
2661     *
2662     * @return boolean
2663     */
2664     function is_addable_editable_and_deletable() {
2665     //
2666     $dossier = ($this->getParameter("maj")==0)?$this->getParameter("idxformulaire"):$this->getVal("dossier");
2667     //
2668     if($this->f->isUserInstructeur()
2669     && isset($this->f->om_utilisateur["division"])
2670     && $this->f->om_utilisateur["division"] != $this->getDivisionFromDossier()){
2671     return false;
2672     }
2673     //
2674     if (($this->f->isUserInstructeur()||$this->f->isUserQualificateur())
2675     && $this->f->getStatutDossier($dossier) == "cloture"
2676     && $this->checkEvenementNonVerrouillable($this->getVal("instruction")) === false){
2677     return false;
2678     }
2679     // Récupère la valeur du champ finalisé
2680     $om_final_instruction = $this->getVal('om_final_instruction');
2681     //
2682     if ($om_final_instruction == 't') {
2683     return false;
2684     }
2685     return true;
2686     }
2687    
2688     /**
2689     * CONDITION - is_finalizable.
2690     *
2691     * Condition pour afficher le bouton.
2692     *
2693     * @return boolean
2694     */
2695     function is_finalizable() {
2696    
2697     // Récupère la valeur du champ finalisé
2698     $om_final_instruction = $this->getVal('om_final_instruction');
2699     // Récupère la valeur du champ lettretype
2700     $lettretype = $this->getVal('lettretype');
2701    
2702     // Si le rapport n'est pas finalisé
2703     if ((empty($om_final_instruction) || $om_final_instruction == 'f')
2704     && $lettretype != "") {
2705     //
2706     return true;
2707     }
2708    
2709     //
2710     return false;
2711     }
2712    
2713     /**
2714     * CONDITION - is_unfinalizable.
2715     *
2716     * Condition pour afficher le bouton.
2717     *
2718     * @return boolean
2719     */
2720     function is_unfinalizable(){
2721    
2722     // Récupère la valeur du champ finalisé
2723     $om_final_instruction = $this->getVal('om_final_instruction');
2724    
2725     // Si le rapport n'est pas finalisé
2726     if ($om_final_instruction == 't') {
2727     //
2728     return true;
2729     }
2730    
2731     //
2732     return false;
2733     }
2734    
2735     /**
2736     * TREATMENT - finalize.
2737     *
2738     * Permet de finaliser un enregistrement.
2739     *
2740     * @param array $val valeurs soumises par le formulaire
2741     *
2742     * @return boolean
2743     */
2744     function finalize($val = array()) {
2745    
2746     //
2747     return $this->manage_finalizing("finalize", $val);
2748     }
2749    
2750     /**
2751     * TREATMENT - unfinalize.
2752     *
2753     * Permet de définaliser un enregistrement.
2754     *
2755     * @param array $val valeurs soumises par le formulaire
2756     *
2757     * @return boolean
2758     */
2759     function unfinalize($val = array()) {
2760    
2761     //
2762     return $this->manage_finalizing("unfinalize", $val);
2763     }
2764    
2765     /**
2766     * VIEW - view_edition
2767     *
2768     * Edite l'édition de l'instruction ou affiche celle contenue dans le stockage.
2769     *
2770     * @return null Si l'action est incorrecte
2771     */
2772     function view_edition() {
2773    
2774     // Si l'instruction est finalisée
2775     if($this->getVal("om_final_instruction") == 't'
2776     && $this->getVal("om_final_instruction") != null) {
2777    
2778     // Ouvre le document
2779     $lien = '../spg/file.php?obj='.$this->table.'&'.
2780     'champ=om_fichier_instruction&id='.$this->getVal($this->clePrimaire);
2781     //
2782     header("Location: ".$lien);
2783     } else {
2784    
2785     // Génération du PDF
2786     $result = $this->compute_pdf_output('lettretype', $this->getVal("lettretype"));
2787     // Affichage du PDF
2788     $this->expose_pdf_output(
2789     $result['pdf_output'],
2790     $result['filename']
2791     );
2792     }
2793     }
2794 fraynaud 3 }// fin classe
2795 atreal 208 ?>

Properties

Name Value
svn:keywords Id

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26