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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2025 - (hide annotations)
Wed Jun 19 16:22:46 2013 UTC (11 years, 7 months ago) by softime
File size: 93738 byte(s)
Métadonnées renommées ainsi que les fonctions associées + modification des métadonnées pour un document arrêté + modification des métadonnées du fichier test dans trs/

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     * - function moisdate : pour ajouter des mois a une date
16     * [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 1945 // Tableau contenant une partie des métadonnées arrêtés
37     var $metadonneesArrete;
38 fraynaud 3
39 nhaye 1928 var $metadata = array(
40 nhaye 1938 "om_fichier_instruction" => array(
41 nhaye 1928 "dossier" => "getDossier",
42 softime 2016 "dossier_version" => "getDossierVersion",
43 softime 2025 "numDemandeAutor" => "getNumDemandeAutor",
44     "anneemoisDemandeAutor" => "getAnneemoisDemandeAutor",
45     "typeInstruction" => "getTypeInstruction",
46     "statutAutorisation" => "getStatutAutorisation",
47     "typeAutorisation" => "getTypeAutorisation",
48     "dateEvenementDocument" => "getDateEvenementDocument",
49 softime 2016 "groupeInstruction" => 'getGroupeInstruction',
50 softime 2025 "title" => 'getTitle',
51 nhaye 1928 ),
52 nhaye 1945 "document_arrete" => array(
53     "numArrete" => "getNumArrete",
54 softime 2025 "ReglementaireArrete" => "getReglementaireArrete",
55     "NotificationArrete" => "getNotificationArrete",
56     "dateNotificationArrete" => "getDateNotificationArrete",
57     "controleLegalite" => "getControleLegalite",
58     "dateSignature" => "getDateSignature",
59 nhaye 1945 "nomSignataire" => "getNomSignataire",
60     "qualiteSignataire" => "getQualiteSignataire",
61     "ap_numRue" => "getAp_numRue",
62     "ap_nomDeLaVoie" => "getAp_nomDeLaVoie",
63     "ap_codePostal" => "getAp_codePostal",
64     "ap_ville" => "getAp_ville",
65 softime 2025 "activite" => "getActivite",
66     "dateControleLegalite" => "getDateControleLegalite",
67     "permanentArrete" => "getPermanentArrete",
68 nhaye 1945 ),
69 nhaye 1928 );
70    
71 nhaye 1945
72 fmichon 1540 function instruction($id, &$db, $debug) {
73     $this->constructeur($id, $db, $debug);
74     }
75 fraynaud 20
76 fmichon 944 // {{{ Gestion de la confidentialité des données spécifiques
77    
78     /**
79     * Surcharge pour gérer les actions disponibles dans le portlet
80     */
81     function checkAccessibility() {
82     //
83     parent::checkAccessibility();
84 fmichon 1540 // Si l'utilisateur est un intructeur qui ne correspond pas à la
85 fmichon 944 // division du dossier
86     if ($this->f->isUserInstructeur()
87     && isset($this->f->om_utilisateur["division"])
88     && $this->f->om_utilisateur["division"] != $this->getDivisionFromDossier()) {
89     //
90     $this->actions_sup = array();
91     $this->setParameter("actions", array());
92     }
93     // Si une action 'lu' est présente et que le champ lu est à true
94     // on supprime l'action
95     if (isset($this->actions_sup["lu"])
96     && isset($this->val[array_search("lu", $this->champs)])
97     && $this->val[array_search("lu", $this->champs)]== "t") {
98     unset($this->actions_sup["lu"]);
99     }
100 vpihour 1899
101     //Si le document est déjà finalisé, on affiche uniquement le lien de
102     //dé-finalisation
103 vpihour 1931 $om_final_instruction = $this->getVal("om_final_instruction");
104 vpihour 1899 if ( isset($this->actions_sup["finalisation"]) &&
105 vpihour 1931 $om_final_instruction== "t" ){
106 vpihour 1921
107 vpihour 1986 //On cache les liens d'action
108     $this->parameters["actions"]["modifier"] = NULL;
109     $this->parameters["actions"]["supprimer"] = NULL;
110 vpihour 1921 //On cache le lien de finalisation et on affiche le bon lien pour l'édition
111 vpihour 1986 $this->actions_sup["finalisation"] = NULL;
112 vpihour 1921 $this->actions_sup["pdfetat"]["lien"] = "../spg/file.php?id=";
113     $this->actions_sup["pdfetat"]["id"] =
114 vpihour 1927 "&amp;obj=instruction&amp;champ=om_fichier_instruction";
115 vpihour 1899 }
116     //Si le document n'est pas finalisé, on affiche uniquement le lien de
117     //finalisation
118     if ( isset($this->actions_sup["definalisation"]) &&
119 vpihour 1931 $om_final_instruction!= "t" ){
120 vpihour 1921
121     //On cache le lien de finalisation et on affiche le bon lien pour l'édition
122 vpihour 1986 $this->actions_sup["definalisation"] = NULL;
123 vpihour 1921 $this->actions_sup["pdfetat"]["lien"] = "../app/pdf_instruction.php?idx=";
124     $this->actions_sup["pdfetat"]["id"] = "";
125 vpihour 1899 }
126 vpihour 1978
127     $idxformulaire = $this->getParameter("idxformulaire");
128     $retourformulaire = $this->getParameter("retourformulaire");
129     //Si le dossier d'instruction auquel est rattachée l'instruction est cloturé,
130     //on affiche pas les liens du portlet
131     if ( $idxformulaire != '' &&
132     (
133     $retourformulaire == 'dossier' ||
134     $retourformulaire == 'dossier_instruction' ||
135     $retourformulaire == 'dossier_instruction_mes_encours' ||
136     $retourformulaire == 'dossier_instruction_tous_encours' ||
137     $retourformulaire == 'dossier_instruction_mes_clotures' ||
138     $retourformulaire == 'dossier_instruction_tous_clotures'
139     )){
140    
141     //On récuppère le statut du dossier d'instruction
142 softime 2025 $statut = $this->getStatutAutorisationDossier($idxformulaire);
143 vpihour 1978 if ( $this->f->isUserInstructeur() && $statut == "cloture" ){
144    
145     //On cache le lien de modification
146     $this->parameters["actions"]["modifier"] = NULL;
147     $this->actions_sup["finalisation"] = NULL;
148     $this->actions_sup["definalisation"] = NULL;
149     }
150     }
151 fmichon 944 }
152    
153     /**
154     * Cette methode est à surcharger elle permet de tester dans chaque classe
155     * des droits des droits spécifiques en fonction des données
156     */
157     function canAccess() {
158     // Si l'utilisateur est un intructeur qui ne correspond pas à la
159     // division du dossier
160     if ($this->f->isUserInstructeur()
161     && $this->f->om_utilisateur["division"] != $this->getDivisionFromDossier()
162     && $this->getParameter("maj") != 3) {
163     //
164 fmichon 1908 $this->addToLog("canAccess(): utilisateur instructeur sur un dossier d'une autre division", EXTRA_VERBOSE_MODE);
165 fmichon 944 return false;
166     }
167 vpihour 1978
168     $retourformulaire = $this->getParameter("retourformulaire");
169     // Si l'utilisateur est un instructeur et que le dossier est cloturé
170     if ( $this->f->isUserInstructeur() &&
171 softime 2025 $this->getStatutAutorisationDossier($this->getParameter("idxformulaire")) == "cloture" &&
172 vpihour 1978 (
173     $retourformulaire == 'dossier' ||
174     $retourformulaire == 'dossier_instruction' ||
175     $retourformulaire == 'dossier_instruction_mes_encours' ||
176     $retourformulaire == 'dossier_instruction_tous_encours' ||
177     $retourformulaire == 'dossier_instruction_mes_clotures' ||
178     $retourformulaire == 'dossier_instruction_tous_clotures'
179     )
180     && $this->getParameter("maj") != 3 && $this->getParameter("maj") != 0 ) {
181    
182     return false;
183     }
184 fmichon 944 //
185     return true;
186     }
187    
188     /**
189 fmichon 1908 * Cette variable permet de stocker le résultat de la méthode
190     * getDivisionFromDossier() afin de ne pas effectuer le recalcul à chacun de
191     * ces appels.
192     * @var string Code de la division du dossier en cours
193 fmichon 944 */
194 fmichon 1908 var $_division_from_dossier = NULL;
195    
196     /**
197     * Cette méthode permet de récupérer le code de division correspondant
198     * au dossier sur lequel on se trouve.
199     *
200     * @return string Code de la division du dossier en cours
201     */
202 fmichon 944 function getDivisionFromDossier() {
203 fmichon 1908
204     // Cette méthode peut être appelée plusieurs fois lors d'une requête.
205     // Pour éviter de refaire le traitement de recherche de la division
206     // alors on vérifie si nous ne l'avons pas déjà calculé.
207     if ($this->_division_from_dossier != NULL) {
208     // Logger
209     $this->addToLog("getDivisionFromDossier(): retour de la valeur déjà calculée - '".$this->_division_from_dossier."'", EXTRA_VERBOSE_MODE);
210     // On retourne la valeur déjà calculée
211     return $this->_division_from_dossier;
212 fmichon 944 }
213 fmichon 1908
214     // Par défaut, on définit la valeur du dossier à NULL
215     $dossier = NULL;
216     // Test sur le mode et le contexte du formulaire
217     if ($this->getParameter("maj") == 0
218     && ($this->getParameter("retourformulaire") == "dossier"
219     || $this->getParameter("retourformulaire") == "dossier_instruction"
220     || $this->getParameter("retourformulaire") == "dossier_instruction_mes_encours"
221     || $this->getParameter("retourformulaire") == "dossier_instruction_tous_encours"
222     || $this->getParameter("retourformulaire") == "dossier_instruction_mes_clotures"
223     || $this->getParameter("retourformulaire") == "dossier_instruction_tous_clotures")) {
224     // Si on se trouve en mode AJOUT (seul mode où l'enregistrement
225     // n'existe pas en base de données) ET que nous nous trouvons
226     // dans le contexte d'un dossier d'instruction alors on récupère
227     // le numéro de dossier depuis le paramètre 'idxformulaire'
228     $dossier = $this->getParameter("idxformulaire");
229     } else {
230     // Sinon on récupère le numéro de dossier dans le champs dossier de
231     // l'enregistrement (en base de données)
232     $dossier = $this->getVal("dossier");
233     }
234    
235     // On appelle la méthode de la classe utils qui renvoi le code de la
236     // division d'un dossier, on la stocke pour ne pas refaire le calcul au
237     // prochain appel de cette méthode
238     $this->_division_from_dossier = $this->f->getDivisionFromDossier($dossier);
239     // Logger
240     $this->addToLog("getDivisionFromDossier(): retour de la valeur nouvellement calculée - '".$this->_division_from_dossier."'", EXTRA_VERBOSE_MODE);
241     // On retourne la valeur retournée
242     return $this->_division_from_dossier;
243    
244 fmichon 944 }
245    
246 nhaye 1643 /**
247     * Cette méthode permet de récupérer le dossier d'autorisation d'un dossier
248     */
249 softime 2025 function getNumDemandeAutorFromDossier($id) {
250 nhaye 1643 //
251     if (!isset($id)) {
252     return NULL;
253     }
254     //
255     $sql = "select dossier_autorisation from ".DB_PREFIXE."dossier ";
256     $sql .= " where dossier='".$id."'";
257     //
258     $dossier_autorisation = $this->db->getOne($sql);
259 softime 2025 $this->addToLog("getNumDemandeAutorFromDossier(): db->getone(\"".$sql."\")", VERBOSE_MODE);
260 nhaye 1643 database::isError($dossier_autorisation);
261     //
262     return $dossier_autorisation;
263     }
264    
265 fmichon 944 // }}}
266    
267 fmichon 1540 function setType(&$form, $maj) {
268     //
269     parent::setType($form, $maj);
270     // On cache tous les champs
271     // XXX
272 fraynaud 20 $form->setType('complement3', 'hidden');
273     $form->setType('bible3', 'hidden');
274     $form->setType('complement4', 'hidden');
275     $form->setType('bible4', 'hidden');
276     $form->setType('complement5', 'hidden');
277     $form->setType('bible5', 'hidden');
278     $form->setType('complement6', 'hidden');
279     $form->setType('bible6', 'hidden');
280     $form->setType('complement7', 'hidden');
281     $form->setType('bible7', 'hidden');
282     $form->setType('complement8', 'hidden');
283     $form->setType('bible8', 'hidden');
284     $form->setType('complement9', 'hidden');
285     $form->setType('bible9', 'hidden');
286     $form->setType('complement10', 'hidden');
287     $form->setType('bible10', 'hidden');
288     $form->setType('complement11', 'hidden');
289     $form->setType('bible11', 'hidden');
290     $form->setType('complement12', 'hidden');
291     $form->setType('bible12', 'hidden');
292     $form->setType('complement13', 'hidden');
293     $form->setType('bible13', 'hidden');
294     $form->setType('complement14', 'hidden');
295     $form->setType('bible14', 'hidden');
296     $form->setType('complement15', 'hidden');
297     $form->setType('bible15', 'hidden');
298 fmichon 1540 //
299 fraynaud 20 $form->setType('delai', 'hidden');
300     $form->setType('etat', 'hidden');
301     $form->setType('accord_tacite', 'hidden');
302     $form->setType('action', 'hidden');
303     $form->setType('delai_notification', 'hidden');
304 vpihour 489 $form->setType('avis_decision', 'hidden');
305 fmichon 1540 //
306 fraynaud 20 $form->setType('archive_delai', 'hidden');
307     $form->setType('archive_etat', 'hidden');
308     $form->setType('archive_accord_tacite', 'hidden');
309     $form->setType('archive_avis', 'hidden');
310     $form->setType('archive_date_complet', 'hidden');
311 nhaye 1571 $form->setType('archive_date_dernier_depot', 'hidden');
312 fraynaud 20 $form->setType('archive_date_rejet', 'hidden');
313     $form->setType('archive_date_limite', 'hidden');
314     $form->setType('archive_date_notification_delai', 'hidden');
315     $form->setType('archive_date_decision', 'hidden');
316     $form->setType('archive_date_validite', 'hidden');
317     $form->setType('archive_date_achevement', 'hidden');
318     $form->setType('archive_date_conformite', 'hidden');
319 nhaye 428 $form->setType('archive_date_chantier', 'hidden');
320 fmichon 1540 //
321 vpihour 1307 $form->setType('numero_arrete', 'hidden');
322 vpihour 1784 //
323     $form->setType('code_barres', 'hidden');
324 fmichon 1540
325     //
326 nhaye 1717 $form->setType('archive_incompletude','hidden');
327     $form->setType('archive_evenement_suivant_tacite','hidden');
328     $form->setType('archive_evenement_suivant_tacite_incompletude','hidden');
329     $form->setType('archive_etat_pendant_incompletude','hidden');
330     $form->setType('archive_date_limite_incompletude','hidden');
331     $form->setType('archive_delai_incompletude','hidden');
332 fmichon 1540 if ($maj < 2) { //ajouter et modifier
333     $form->setType('destinataire', 'hidden');
334     $form->setType('lettretype', 'hiddenstatic');
335     $form->setType('complement', 'textarea');
336     $form->setType('complement2', 'textarea');
337     $form->setType('bible_auto', 'httpclick');
338     $form->setType('bible', 'httpclick');
339     $form->setType('bible2', 'httpclick');
340     $form->setType('dossier', 'hidden');
341     $form->setType('libelle', 'hiddenstatic');
342     $form->setType('signataire_arrete','select');
343 nhaye 1564 $form->setType('date_envoi_signature','datedisabled');
344     $form->setType('date_retour_signature','datedisabled');
345     $form->setType('date_envoi_rar','datedisabled');
346     $form->setType('date_retour_rar','datedisabled');
347     $form->setType('date_envoi_controle_legalite','datedisabled');
348     $form->setType('date_retour_controle_legalite','datedisabled');
349 vpihour 1966 $form->setType('date_finalisation_courrier','datedisabled');
350 fmichon 1540 if($maj==0){ // add
351     $form->setType('instruction', 'hiddenstatic');
352     $form->setType('evenement', 'select');
353     $form->setType('date_evenement', 'date2');
354     }else{ // modify
355     $form->setType('instruction', 'hiddenstatic');
356     $form->setType('evenement', 'selecthiddenstatic');
357     //$form->setType('date_evenement', 'hiddenstaticdate');
358     $form->setType('date_evenement', 'date2');
359     // necessaire pour calcul de date en modification
360     //$form->setType('delai', 'hiddenstatic');
361     }
362     } elseif($maj==2){
363     $form->setType('dossier', 'hidden');
364     $form->setType('bible_auto', 'hidden');
365     $form->setType('bible', 'hidden');
366     $form->setType('bible2', 'hidden');
367     }else {
368     $form->setType('destinataire', 'hidden');
369     $form->setType('dossier', 'hidden');
370     $form->setType('bible_auto', 'hidden');
371     $form->setType('bible', 'hidden');
372     $form->setType('bible2', 'hidden');
373     }
374 vpihour 1899
375     //Cache les champs pour la finalisation
376     $form->setType('om_fichier_instruction', 'hidden');
377     $form->setType('om_final_instruction', 'hidden');
378 nhaye 1945 // Cache le document arrêté
379     $form->setType('document_arrete', 'hidden');
380 fraynaud 20 }
381 fmichon 1540
382     function setSelect(&$form, $maj,&$db,$debug) {
383     /**
384     * On ne surcharge pas la méthode parent car une requête sur la table
385     * dossier est mauvaise pour les performances, car la requête qui
386     * concerne evenement est plus complexe que celle générée et car les
387     * champs action, avis_decision et etat ne sont pas utilisés comme des
388     * select
389     */
390 atreal 312 if(file_exists ("../sql/".$db->phptype."/".$this->table.".form.inc.php"))
391     include ("../sql/".$db->phptype."/".$this->table.".form.inc.php");
392 fmichon 1540 elseif(file_exists ("../sql/".$db->phptype."/".$this->table.".form.inc"))
393     include ("../sql/".$db->phptype."/".$this->table.".form.inc");
394 nhaye 428
395 fmichon 1540 //// action
396     //$this->init_select($form, $db, $maj, $debug, "action",
397     // $sql_action, $sql_action_by_id, false);
398 vpihour 1227
399 fmichon 1540 //// avis_decision
400     //$this->init_select($form, $db, $maj, $debug, "avis_decision",
401     // $sql_avis_decision, $sql_avis_decision_by_id, false);
402 nhaye 1140
403 fmichon 1540 //// dossier
404     //$this->init_select($form, $db, $maj, $debug, "dossier",
405     // $sql_dossier, $sql_dossier_by_id, false);
406 nhaye 428
407 fmichon 1540 //// etat
408     //$this->init_select($form, $db, $maj, $debug, "etat",
409     // $sql_etat, $sql_etat_by_id, false);
410    
411     //// evenement
412     //$this->init_select($form, $db, $maj, $debug, "evenement",
413     // $sql_evenement, $sql_evenement_by_id, false);
414    
415     // signataire_arrete
416     $this->init_select($form, $db, $maj, $debug, "signataire_arrete",
417     $sql_signataire_arrete, $sql_signataire_arrete_by_id, true);
418    
419     /**
420     * Gestion du filtre sur les événements de workflow disponibles
421     * On récupère ici en fonction de l'état du dossier d'instruction en
422     * cours et du type du dossier d'instruction en cours la liste
423     * événements disponibles.
424     */
425     if ($maj == 0) {
426     // Récupération des événements par une jointure entre la table dossier
427     // et la table transition et la table evenement et la table
428     // lien_dossier_instruction_type_evenement en fonction de l'identifiant
429     // du dossier d'instruction en cours
430     $sql = "SELECT
431     evenement.evenement,
432     (evenement.libelle||' ['||evenement.action||']') as lib
433     FROM ".DB_PREFIXE."dossier
434     INNER JOIN ".DB_PREFIXE."lien_dossier_instruction_type_evenement
435     ON dossier.dossier_instruction_type=lien_dossier_instruction_type_evenement.dossier_instruction_type
436     INNER JOIN ".DB_PREFIXE."evenement
437     ON evenement.evenement=lien_dossier_instruction_type_evenement.evenement
438     INNER JOIN ".DB_PREFIXE."transition
439     ON evenement.evenement = transition.evenement
440     AND dossier.etat=transition.etat
441     WHERE dossier.dossier='".$this->idxformulaire."'
442     ORDER BY evenement.action";
443     $res = $db->query($sql);
444     $this->addToLog("setSelect(): db->query(\"".$sql."\");", VERBOSE_MODE);
445     if (database::isError($res)) {
446     die($res->getMessage());
447 fraynaud 20 }
448 fmichon 1540 // Remplissage du tableau du select
449     $contenu = array(
450     0 => array("",),
451     1 => array(_('choisir')." "._('evenement'),)
452     );
453     while ($row=& $res->fetchRow()) {
454     $contenu[0][] = $row[0];
455     $contenu[1][] = $row[1];
456     }
457     $form->setSelect("evenement", $contenu);
458     } else {
459     $sql = "SELECT
460     (evenement.libelle||' ['||evenement.action||']') as lib
461     FROM ".DB_PREFIXE."evenement
462     WHERE evenement.evenement=".$this->getVal("evenement")."";
463     $res = $db->getone($sql);
464     $this->addToLog("setSelect(): db->getone(\"".$sql."\");", VERBOSE_MODE);
465     if (database::isError($res)) {
466     die($res->getMessage());
467     }
468     //
469     $contenu = array(
470     0 => array($this->getVal("evenement"),),
471     1 => array($res,)
472     );
473     $form->setSelect("evenement", $contenu);
474 fraynaud 20 }
475 fmichon 1540
476     /**
477     * Gesion des liens vers la bible
478     */
479     // lien bible_auto
480     $contenu = array(_("automatique"));
481 nhaye 428 $form->setSelect("bible_auto",$contenu);
482     // lien bible1
483 fmichon 1540 $contenu = array(_("bible"));
484 nhaye 428 $form->setSelect("bible",$contenu);
485     // lien bible2
486 fmichon 1540 $contenu = array(_("bible"));
487 nhaye 428 $form->setSelect("bible2",$contenu);
488 fmichon 1540 }
489 fraynaud 20
490 fmichon 1540 function cleSecondaire($id, &$db, $val, $DEBUG) {
491     //
492     parent::cleSecondaire($id, $db, $val, $DEBUG);
493 vpihour 2000
494     // Aucune clé secondaire n'a été trouvée, l'instruction peut être supprimée
495     if ( $this->correct !== false ){
496    
497     /**
498     * Vérification que l'élément supprimé est le dernier pour pouvoir
499     * remodifier les données de manière itérative.
500     */
501     // Initialisation
502     $dernierevenement = "";
503     // Récupération du dernier élément de la table d'instruction qui
504     // concerne le dossier en cours
505     $sql = "SELECT max(instruction)
506     FROM ".DB_PREFIXE."instruction
507     WHERE dossier ='".$this->idxformulaire."'";
508     $dernierevenement = $db->getOne($sql);
509     $this->addToLog("setSelect(): db->getone(\"".$sql."\");", VERBOSE_MODE);
510     if (database::isError($dernierevenement)) {
511     die($dernierevenement->getMessage());
512     }
513     // Si on se trouve effectivement sur le dernier evenement d'instruction
514     if ($dernierevenement == $id) {
515     // Alors on valide la suppression
516     $this->correct = true;
517     $this->addToMessage(_('Destruction_chronologique'));
518     } else {
519     // Alors on annule la suppression
520     $this->correct = false;
521     $this->addToMessage(_("Seul le dernier evenement d'instruction peut etre supprime."));
522     }
523 fmichon 1540 }
524     }
525    
526 nhaye 1564 // Vérification de la non modification des dates de suivi
527     function updateDate($champ) {
528     if($this->valF[$champ] != "") {
529     if($this->getVal($champ) != "" AND $this->getVal($champ) != $this->valF[$champ]) {
530     $this->correct = false;
531     $this->addToMessage(_("Les dates de suivis ne peuvent etre modifiees"));
532     }
533     }
534     }
535    
536 fmichon 1540 // Sélectionne le signataire_arrete par défaut
537     function setVal(&$form,$maj,$validation){
538    
539     // Ajout
540     if($maj == 0) {
541    
542     // Création de la requête
543     $sql = "SELECT signataire_arrete
544     FROM ".DB_PREFIXE."signataire_arrete
545     WHERE defaut IS TRUE";
546    
547     // Exécution de la requête
548 vpihour 1777 $res = $this->f->db->query($sql);
549 fmichon 1540 $this->f->addToLog("deleteAllLienDossierInstructionTypeEvenementEvenement(): db->query(\"".$sql."\");", VERBOSE_MODE);
550 vpihour 1777 if ( database::isError($res)){
551     die();
552     }
553 fmichon 1540
554     $row = $res->fetchrow(DB_FETCHMODE_ASSOC);
555    
556     if ( isset($row['signataire_arrete']) && is_numeric($row['signataire_arrete'])){
557    
558     $form->setVal("signataire_arrete",$row['signataire_arrete']);
559     }
560     }
561     }
562    
563     /*Met des valeurs par défaut dans certains des sous-formulaire*/
564     function setValsousformulaire(&$form,$maj,$validation,$idxformulaire,$retourformulaire,$typeformulaire){
565     if ($validation==0 and $maj<2) {
566     if ($maj == 0){
567     $form->setVal("destinataire", $idxformulaire);
568     $form->setVal("dossier", $idxformulaire);
569     $form->setVal("date_evenement", date('Y-m-d'));
570     }
571     $form->setVal("bible_auto","bible_auto()");
572     $form->setVal("bible","bible()");
573     $form->setVal("bible2","bible2()");
574     }
575     $this->retourformulaire=$retourformulaire;
576     $this->idxformulaire=$idxformulaire;
577     }
578    
579    
580 nhaye 1439 function setLayout(&$form, $maj){
581     if ( $maj < 2 OR $maj == 3 ) {
582     /*Champ sur lequel s'ouvre le bloc 1 */
583     $form->setBloc('evenement','D',"","col_12");
584 fraynaud 20
585 nhaye 1439 $form->setFieldset('evenement','D',_('Evenement'));
586     $form->setFieldset('lettretype','F','');
587    
588     $form->setBloc('lettretype','F');
589    
590     $form->setBloc('date_finalisation_courrier','D',"","col_12");
591    
592     $form->setFieldset('date_finalisation_courrier','D',_('Dates'));
593     $form->setBloc('date_finalisation_courrier','D',"","col_6");
594     $form->setBloc('date_envoi_controle_legalite','F');
595    
596     $form->setBloc('signataire_arrete','D',"","col_6");
597     $form->setBloc('date_retour_controle_legalite','F');
598     $form->setFieldset('date_retour_controle_legalite','F','');
599    
600     $form->setBloc('date_retour_controle_legalite','F');
601    
602     $form->setBloc('complement','D',"","col_12");
603     $form->setFieldset('complement','D',_('Complement'));
604     $form->setFieldset('bible','F','');
605     $form->setBloc('bible','F');
606    
607     $form->setBloc('complement2','D',"","col_12");
608     $form->setFieldset('complement2','D',_('Complement 2'));
609     $form->setFieldset('bible2','F','');
610     $form->setBloc('bible2','F');
611     }
612 fraynaud 20 }
613    
614 fmichon 1540 function setLib(&$form, $maj) {
615     //
616     parent::setLib($form, $maj);
617     //
618     $form->setLib('bible_auto', "");
619     $form->setLib('bible', "");
620     $form->setLib('bible2', "");
621 fraynaud 20 }
622    
623 fmichon 1540 function triggerajouter($id, &$db, $val, $DEBUG) {
624     /**
625     * Le code suivant permet de récupérer des valeurs des tables evenement
626     * et dossier pour les stocker dans l'instruction :
627     * DEPUIS L'EVENEMENT
628     * - action
629     * - delai
630     * - accord_tacite
631     * - etat
632     * - avis_decision
633     * - delai_notification
634     * - lettretype
635     * DEPUIS LE DOSSIER D'INSTRUCTION
636     * - archive_delai
637     * - archive_accord_tacite
638     * - archive_etat
639     * - archive_avis
640     * - date_complet
641     * - date_rejet
642     * - date_limite
643     * - date_notification_delai
644     * - date_decision
645     * - date_validite
646     * - date_achevement
647     * - date_chantier
648     * - date_conformite
649     * Il permet également de stocker la date_depot du dossier d'instruction
650     * dans l'attribut $this->archive_date_depot de la classe.
651     */
652     // Récupération de tous les paramètres de l'événement sélectionné
653     $sql = "SELECT * FROM ".DB_PREFIXE."evenement
654     WHERE evenement=".$this->valF['evenement'];
655 fraynaud 20 $res = $db->query($sql);
656 fmichon 1540 $this->addToLog("triggerajouter(): db->query(\"".$sql."\");", VERBOSE_MODE);
657     if (database::isError($res)) {
658     die($res->getMessage());
659     }
660     while ($row=& $res->fetchRow(DB_FETCHMODE_ASSOC)) {
661     // Récupération de l'identifiant de l'action
662     // si une action est paramétrée dans l'événement
663     $this->valF['action'] = NULL;
664     if (isset($row['action']) and !empty($row['action'])) {
665 nhaye 460 $this->valF['action']=$row['action'];
666     }
667 fmichon 1540 // Récupération de la valeur du délai
668     $this->valF['delai'] = $row['delai'];
669     // Récupération de l'identifiant de l'état
670     // si un état est paramétré dans l'événement
671     $this->valF['etat']=NULL;
672     if (isset($row['etat']) and !empty($row['etat'])) {
673 nhaye 460 $this->valF['etat']=$row['etat'];
674     }
675 fmichon 1540 // Récupération de la valeur d'accord tacite
676 fraynaud 20 $this->valF['accord_tacite']=$row['accord_tacite'];
677 fmichon 1540 // Récupération de la valeur du délai de notification
678 fraynaud 20 $this->valF['delai_notification']=$row['delai_notification'];
679 fmichon 1540 // Récupération de l'identifiant de l'avis
680     // si un avis est paramétré dans l'événement
681     $this->valF['avis_decision'] = NULL;
682 vpihour 489 if(isset($row['avis_decision']) and !empty($row['avis_decision'])) {
683     $this->valF['avis_decision']=$row['avis_decision'];
684 fmichon 1540 }
685     // Récupération de la valeur de la lettre type
686     // Sinon on lui affecte lavaleur par défaut standard
687     if ($row['lettretype'] != "") {
688     $this->valF['lettretype']=$row['lettretype'];
689 nhaye 460 } else {
690 fmichon 1540 $this->valF['lettretype'] = "standard"; // XXX
691 nhaye 460 }
692 fraynaud 20 }
693 fmichon 1540 // Récupération de toutes les valeurs du dossier d'instruction en cours
694     $sql = "SELECT * FROM ".DB_PREFIXE."dossier
695     WHERE dossier='".$this->valF['dossier']."'";
696 fraynaud 20 $res = $db->query($sql);
697 fmichon 1540 $this->addToLog("triggerajouter(): db->query(\"".$sql."\");", VERBOSE_MODE);
698     if (database::isError($res)) {
699 fraynaud 20 die($res->getMessage());
700 fmichon 1540 }
701     while ($row=& $res->fetchRow(DB_FETCHMODE_ASSOC)) {
702     // XXX On stocke la date de dépôt actuelle du dossier d'instruction
703     // dans un attribut de la classe
704 fraynaud 20 $this->archive_date_depot = $row['date_depot'];
705 fmichon 1540 // Récupération de la valeur actuelle du délai, de l'accord tacite,
706     // de l'état et de l'avis du dossier d'instruction
707 fraynaud 20 $this->valF['archive_delai']=$row['delai'];
708     $this->valF['archive_accord_tacite']=$row['accord_tacite'];
709     $this->valF['archive_etat']=$row['etat'];
710 vpihour 489 $this->valF['archive_avis']=$row['avis_decision'];
711 fmichon 1540 // Récupération de la valeur actuelle des 9 dates du dossier
712     // d'instruction
713     if ($row['date_complet'] != '') {
714     $this->valF['archive_date_complet']=$row['date_complet'];
715     }
716 nhaye 1571 if ($row['date_dernier_depot'] != '') {
717     $this->valF['archive_date_dernier_depot']=$row['date_dernier_depot'];
718     }
719 fmichon 1540 if ($row['date_rejet']!='') {
720     $this->valF['archive_date_rejet']= $row['date_rejet'];
721     }
722     if ($row['date_limite']!='') {
723     $this->valF['archive_date_limite']= $row['date_limite'];
724     }
725     if ($row['date_notification_delai']!='') {
726     $this->valF['archive_date_notification_delai']= $row['date_notification_delai'];
727     }
728     if ($row['date_decision']!='') {
729     $this->valF['archive_date_decision']= $row['date_decision'];
730     }
731     if ($row['date_validite']!='') {
732     $this->valF['archive_date_validite']= $row['date_validite'];
733     }
734     if ($row['date_achevement']!='') {
735     $this->valF['archive_date_achevement']= $row['date_achevement'];
736     }
737     if ($row['date_chantier']!='') {
738     $this->valF['archive_date_chantier']= $row['date_chantier'];
739     }
740     if ($row['date_conformite']!='') {
741     $this->valF['archive_date_conformite']= $row['date_conformite'];
742     }
743 nhaye 1724 if ($row['incompletude']!='') {
744     $this->valF['archive_incompletude']= $row['incompletude'];
745     }
746     if ($row['evenement_suivant_tacite']!='') {
747     $this->valF['archive_evenement_suivant_tacite']= $row['evenement_suivant_tacite'];
748     }
749     if ($row['evenement_suivant_tacite_incompletude']!='') {
750     $this->valF['archive_evenement_suivant_tacite_incompletude']= $row['evenement_suivant_tacite_incompletude'];
751     }
752     if ($row['etat_pendant_incompletude']!='') {
753     $this->valF['archive_etat_pendant_incompletude']= $row['etat_pendant_incompletude'];
754     }
755     if ($row['date_limite_incompletude']!='') {
756     $this->valF['archive_date_limite_incompletude']= $row['date_limite_incompletude'];
757     }
758     if ($row['delai_incompletude']!='') {
759     $this->valF['archive_delai_incompletude']= $row['delai_incompletude'];
760     }
761 fraynaud 20 }
762 vpihour 1784
763     // Identifiant du type de courrier
764     $idTypeCourrier = '11';
765     $idCourrier = str_pad($this->valF["instruction"], 10, "0", STR_PAD_LEFT);
766     // Code barres
767     $this->valF["code_barres"] = $idTypeCourrier . $idCourrier;
768 fraynaud 20 }
769    
770 vpihour 1137 // Test si une restriction est valide
771     // return boolean
772     function restrictionIsValid($restriction){
773    
774     /* Met des espace avant et après les opérateurs puis transforme la chaine en
775     * un tableau */
776     $tabRestriction = str_replace(">="," >= ",
777     str_replace("<="," <= ",
778     str_replace("-"," - ",
779     str_replace("+"," + ",$restriction))));
780     $tabRestriction = explode( " ", $tabRestriction);
781    
782     //Variables de résultat
783     $res = array();
784     $i = 0;
785     $comp = "";
786    
787    
788     //Test que le tableau n'est pas vide
789     if ( count($tabRestriction) > 0 ){
790    
791     $res[0] = $this->getRestrictionValue($tabRestriction[0]);
792    
793     //Calcul des variables
794     for ( $j = 1 ; $j < count($tabRestriction) ; $j += 2 ) {
795    
796     //Variable de comparaison
797     if ( strcmp( ">=", $tabRestriction[$j] ) == 0 ||
798     strcmp( "<=", $tabRestriction[$j]) ==0 ){
799    
800     $comp = $tabRestriction[$j];
801     $res[++$i] = $this->getRestrictionValue($tabRestriction[$j+1]);
802     }
803     // Fait l'addition
804     elseif ( strcmp( "+", $tabRestriction[$j]) == 0 ){
805    
806     $res[$i] = $this->moisdate( $res[$i], $this->getRestrictionValue($tabRestriction[$j+1]) );
807     }
808     }
809     }
810    
811     // Effectue le test
812     if ( strcmp($comp, ">=") == 0 ){
813    
814     if ( $res[0] >= $res[1] || $res[0] == "" ){
815    
816     return true;
817     }
818     else {
819    
820     return false;
821     }
822     }
823     elseif ( strcmp($comp, "<=") == 0 ){
824    
825     if ( $res[0] <= $res[1] || $res[1] == "" ){
826    
827     return true;
828     }
829     else {
830    
831     return false;
832     }
833     }
834    
835     return true;
836     }
837    
838     //Retourne la valeur de valF si $restrictionValue n'est pas un chiffre, le chiffre sinon
839     function getRestrictionValue($restrictionValue){
840    
841     return ( is_numeric($restrictionValue) ) ?
842     $restrictionValue :
843     $this->valF[$restrictionValue];
844     }
845    
846 fraynaud 123 function regle($regle){
847     $temp = explode ("+",$regle);
848 atreal 208 //echo '|'.$regle;
849 fraynaud 124 // cas rejet
850 fraynaud 129 if($regle=="null") // 1 dimension -> null
851 fraynaud 124 return null;
852     if(sizeof($temp)==1) // 1 dimension
853     if($temp[0]=="archive_date_depot") // initialisation avec le depot
854 fraynaud 123 return $this->$regle;
855 fraynaud 124 else // cas general
856 fraynaud 123 return $this->valF[$regle];
857 fraynaud 124 if(sizeof($temp)==2){ // 2 dimensions
858     if($temp[0]=="archive_date_depot") //initialisation avec le depot
859 fraynaud 123 if(is_numeric($temp[1]))
860     return $this->moisdate($this->$temp[0], $temp[1]);
861     else
862     return $this->moisdate($this->$temp[0], $this->valF[$temp[1]]);
863 fraynaud 124 if($temp[0]=="archive_delai") // majoration de delai
864     return $this->valF[$temp[0]]+$this->valF[$temp[1]];
865     // cas general 2 dimensions
866 fraynaud 123 if(is_numeric($temp[1]))
867     return $this->moisdate($this->valF[$temp[0]], $temp[1]);
868     else
869     return $this->moisdate($this->valF[$temp[0]], $this->valF[$temp[1]]);
870     }
871 fraynaud 124 if(sizeof($temp)==3){ // 3 dimensions
872     // cas date de validite de sursis
873     if(is_numeric($temp[1]))
874     $temp1 = $this->moisdate($this->valF[$temp[0]], $temp[1]);
875     else
876     $temp1 = $this->moisdate($this->valF[$temp[0]], $this->valF[$temp[1]]);
877     if(is_numeric($temp[2]))
878     return $this->moisdate($temp1, $temp[2]);
879     else
880     return $this->moisdate($temp1, $this->valF[$temp[2]]);
881     }
882 fraynaud 123 }
883    
884    
885 fmichon 1540
886 fraynaud 20 function triggerajouterapres($id,&$db,$val,$DEBUG) {
887 fmichon 1540 /**
888     * Mise à jour des valeurs du dossier en fonction des valeurs calculées
889     * par l'action
890     */
891 nhaye 1724 $this->getValEvenement();
892 fmichon 1540 // Initialisation
893     $valF = "";
894 nhaye 1741 // état de complétude actuel du dossier
895     $incompletude = $this->dossierIncomplet();
896    
897     if($incompletude === FALSE) {
898     // Si l'événement d'instruction est de type incompletude
899     if($this->valEvenement['type'] == "incompletude") {
900     // On marque le dossier en incomplétude pour application des actions
901     $incompletude = TRUE;
902     // Set du flag incomplétude de la table dossier
903     $valF['incompletude'] = TRUE;
904     // Enregistrement de l'état dans la variable provisoire
905     $valF['etat_pendant_incompletude'] = $this->valF['archive_etat'];
906     }
907     } else {
908     // Si l'evenement d'instruction est de type retour ou contient une
909     // decision, on sort d'incomplétude
910     if($this->valEvenement['type'] == "retour" OR
911     $this->valEvenement['avis_decision'] != NULL) {
912     // On enlève la marque d'incomplétude pour application des actions
913     $incompletude = FALSE;
914     // On enlève le flag d'incomplétude sur l'enregistrement de la table dossier
915     $valF['incompletude'] = FALSE;
916     // Restauration de l'état depuis l'état provisoire
917     $valF['etat'] = $this->valF['archive_etat_pendant_incompletude'];
918     // On vide la variable provisoire ainsi que le délai de complétude
919     // et la date limite de complétude
920     $valF['etat_pendant_incompletude'] = NULL;
921     $valF['delai_incompletude'] = NULL;
922     $valF['date_limite_incompletude'] = NULL;
923     }
924     }
925 fmichon 1540 // Récupération des paramètres de l'action
926     $sql = "SELECT * FROM ".DB_PREFIXE."action
927     WHERE action='".$this->valF['action']."'";
928     $res = $db->query($sql);
929     $this->addToLog("triggerajouterapres(): db->query(\"".$sql."\");", VERBOSE_MODE);
930     if (database::isError($res)) {
931     die($res->getMessage());
932     }
933     while ($row=& $res->fetchRow(DB_FETCHMODE_ASSOC)) {
934 nhaye 1724
935 fmichon 1540 // pour chacune des regles, on applique la regle
936     if($row['regle_delai']!=''){
937     $valF['delai'] = $this->regle($row['regle_delai']);
938     }
939     if($row['regle_accord_tacite']!=''){
940     $valF['accord_tacite'] = $this->regle($row['regle_accord_tacite']);
941     }
942     if($row['regle_avis']!=''){
943     $valF['avis_decision'] = $this->regle($row['regle_avis']);
944     }
945     if($row['regle_date_limite']!=''){
946     $valF['date_limite']= $this->regle($row['regle_date_limite']);
947     }
948     if($row['regle_date_complet']!=''){
949     $valF['date_complet']= $this->regle($row['regle_date_complet']);
950     }
951 nhaye 1571 if($row['regle_date_dernier_depot']!=''){
952     $valF['date_dernier_depot']= $this->regle($row['regle_date_dernier_depot']);
953     }
954 fmichon 1540 if($row['regle_date_notification_delai']!=''){
955     $valF['date_notification_delai']= $this->regle($row['regle_date_notification_delai']);
956     }
957     if($row['regle_date_decision']!=''){
958     $valF['date_decision']= $this->regle($row['regle_date_decision']);
959     }
960     if($row['regle_date_rejet']!=''){
961     $valF['date_rejet']= $this->regle($row['regle_date_rejet']);
962     }
963     if($row['regle_date_validite']!=''){
964     $valF['date_validite']= $this->regle($row['regle_date_validite']);
965     }
966     if($row['regle_date_chantier']!=''){
967     $valF['date_chantier']= $this->regle($row['regle_date_chantier']);
968     }
969     if($row['regle_date_achevement']!=''){
970     $valF['date_achevement']= $this->regle($row['regle_date_achevement']);
971     }
972     if($row['regle_date_conformite']!=''){
973     $valF['date_conformite']= $this->regle($row['regle_date_conformite']);
974     }
975 nhaye 1731 if($row['regle_date_limite_incompletude']!=''){
976     $valF['date_limite_incompletude']= $this->regle($row['regle_date_limite_incompletude']);
977     }
978     if($row['regle_delai_incompletude']!=''){
979     $valF['delai_incompletude']= $this->regle($row['regle_delai_incompletude']);
980     }
981 nhaye 1741 if($row['regle_etat']!=''){
982     // Si on est dans le cas général ou qu'on est en incomplétude et
983     // qu'on a un événement de type incomplétude alors : on stocke
984     // l'état dans la variable courante
985     if ($incompletude == FALSE OR $this->valEvenement['type'] == "incompletude") {
986     $valF['etat'] = $this->regle($row['regle_etat']);
987     } else {
988     $valF['etat_pendant_incompletude'] = $this->regle($row['regle_etat']);
989     }
990     }
991    
992     if($this->valEvenement['evenement_suivant_tacite'] != '') {
993     // Si on est pas en incomplétude on stocke l'événement tacite
994     //de l'événement dans la variable courante
995     if ($incompletude == FALSE) {
996     $valF['evenement_suivant_tacite'] = $this->valEvenement['evenement_suivant_tacite'];
997     } else {
998     $valF['evenement_suivant_tacite_incompletude'] = $this->valEvenement['evenement_suivant_tacite'];
999     }
1000     }
1001 fmichon 1540 }
1002     // Si des valeurs ont été calculées alors on met à jour l'enregistrement
1003     if ($valF != "") {
1004     // On met à jour le dossier
1005     $cle = " dossier='".$this->valF['dossier']."'";
1006     $res1 = $db->autoExecute(DB_PREFIXE.'dossier', $valF, DB_AUTOQUERY_UPDATE, $cle);
1007     $this->addToLog("triggerajouterapres(): db->autoexecute(\"".DB_PREFIXE."dossier\", ".print_r($valF, true).", DB_AUTOQUERY_UPDATE, \"".$cle."\");", VERBOSE_MODE);
1008     if (database::isError($res1)) {
1009 fraynaud 20 die($res->getMessage());
1010 fmichon 1540 }
1011     // Affichage d'informations à l'utilisateur
1012     $this->addToMessage(_('enregistrement')." ".$this->valF['dossier']." "._('table')." dossier [".$db->affectedRows()." "._('enregistrement')." "._('mis_a_jour')."]");
1013 fraynaud 20 }
1014 fmichon 1540
1015     /**
1016     * REFERENTIEL ERP
1017     */
1018 fmichon 1005 // verification si envoi vers ERP est active
1019     if ($this->f->getParameter('option_erp') != "") {
1020     // la nature du dossier
1021     $nature_dossier = substr($this->idxformulaire,0,2);
1022 fmichon 1540 //
1023     $sql = "SELECT erp
1024     FROM ".DB_PREFIXE."dossier
1025     WHERE dossier='".$this->valF['dossier']."'";
1026     $dossier_erp = $this->db->getone($sql);
1027     $this->addToLog("triggerajouterapres(): db->getone(\"".$sql."\");", VERBOSE_MODE);
1028     if (database::isError($res)) {
1029     die($res->getMessage());
1030     }
1031     //
1032     $sql = "SELECT libelle
1033     FROM ".DB_PREFIXE."evenement
1034     WHERE evenement='".$this->valF['evenement']."'";
1035     $evenement_libelle = $this->db->getone($sql);
1036     $this->addToLog("triggerajouterapres(): db->getone(\"".$sql."\");", VERBOSE_MODE);
1037     if (database::isError($res)) {
1038     die($res->getMessage());
1039     }
1040     //
1041 fmichon 1005 if ($dossier_erp == 't') {
1042     // envoi du message en cas d'un PC qui est ERP et sur lequel un evenement
1043     // d'acceptation etait fait
1044     if ($nature_dossier ==
1045     $this->f->getParameter('erp_evenement_accepter_dossier_PC')
1046     && $this->valF['evenement'] ==
1047     $this->f->getParameter('erp_evenement_accepter_sans_reserve')) {
1048     $msgenque = new MessageEnqueuer();
1049     $msgenque->setDossierInstructionIdentifier($this->valF['dossier']);
1050     $msgenque->setDecision($evenement_libelle);
1051     $msgenque->enqueueMessage($msgenque::$ERP_ARRETE_PC_EFFECTUE);
1052     }
1053     if ($this->valF['evenement'] ==
1054     $this->f->getParameter('erp_evenement_refuser_dossier')) {
1055     $msgenque = new MessageEnqueuer();
1056     $msgenque->setDossierInstructionIdentifier($this->valF['dossier']);
1057     $msgenque->enqueueMessage($msgenque::$ERP_DECISION_CONFORMITE_EFFECTUE);
1058     }
1059 mlimic 936 }
1060 fmichon 1005 } // fin de if ($this->f->getParameter('option_erp') != "")
1061 nhaye 1643
1062     // Mise à jour des données du dossier d'autorisation
1063     require_once "../obj/dossier_autorisation.class.php";
1064 softime 2025 $da = new dossier_autorisation($this->getNumDemandeAutorFromDossier($this->valF['dossier']), $this->db, DEBUG);
1065 nhaye 1643 $da->majDossierAutorisation();
1066 fmichon 1540 }
1067 nhaye 1945 function triggermodifier($id,&$db,$val,$DEBUG) {
1068     // Ajout de l'arrêté dans la GED
1069 nhaye 1946 if ($this->valF['numero_arrete'] != $this->getVal('numero_arrete')
1070     AND $this->valF["om_fichier_instruction"] != "") {
1071     $file = $this->f->storage->get($this->valF["om_fichier_instruction"]);
1072     if(isset($file) and $file != null) {
1073     // Récupération des métadonnées calculées après validation
1074     $spe_metadata = $this->getMetadata("document_arrete");
1075     $pdf_output = $file["file_content"];
1076     //Métadonnées du document
1077     $metadata = array(
1078     'filename' => 'instruction_'.$this->valF[$this->clePrimaire].'.pdf',
1079     'mimetype' => 'application/pdf',
1080     'size' => strlen($pdf_output)
1081     );
1082     $metadata = array_merge($metadata, $spe_metadata);
1083    
1084     //Si le document a déjà été finalisé
1085     //on met à jour le document mais pas son uid
1086     if ( $this->getVal("document_arrete") != '' ){
1087     $uid = $this->f->storage->update(
1088     $this->getVal("document_arrete"), $pdf_output, $metadata);
1089     }
1090     //Sinon, on joute le document et on récupère son uid
1091     else {
1092     //Stockage du PDF
1093     $uid = $this->f->storage->create($pdf_output, $metadata);
1094     }
1095     if($uid != OP_FAILURE) {
1096     $this->valF["document_arrete"] = $uid;
1097     }
1098     }
1099 nhaye 1945
1100     }
1101     }
1102 fraynaud 129 function triggermodifierapres($id,&$db,$val,$DEBUG) {
1103 fmichon 1540 /**
1104     * L'objectif ici est d'effectuer les recalculs de date dans le dossier
1105     * si la date de l'evenement est modifiee
1106     */
1107     // Initialisation
1108     $valF = "";
1109     // Récupération de l'action correspondante à l'événement
1110     $sql = "SELECT action
1111     FROM ".DB_PREFIXE."evenement
1112     WHERE evenement=".$this->valF['evenement'];
1113 fraynaud 129 $action = $db->getOne($sql);
1114 fmichon 1540 $this->addToLog("triggermodifierapres(): db->getone(\"".$sql."\");", VERBOSE_MODE);
1115     if (database::isError($action)) {
1116     die($action->getMessage());
1117     }
1118 nhaye 1564
1119     // Récupération de tous les paramètres de l'événement sélectionné
1120     $sql = "SELECT * FROM ".DB_PREFIXE."evenement
1121     WHERE evenement=".$this->valF['evenement'];
1122     $res = $db->query($sql);
1123     $this->addToLog("triggerajouter(): db->query(\"".$sql."\");", VERBOSE_MODE);
1124     if (database::isError($res)) {
1125     die($res->getMessage());
1126     }
1127     while ($row=& $res->fetchRow(DB_FETCHMODE_ASSOC)) {
1128 nhaye 1657 // Si la date de retour signature est éditée on vérifie si il existe un événement automatique
1129 vpihour 1823 if ($this->getVal('date_retour_signature') == "" AND
1130     $this->valF['date_retour_signature'] != "" AND
1131     $row['evenement_retour_signature'] != "") {
1132 nhaye 1564 $new_instruction = new instruction("]", $db, $DEBUG);
1133 nhaye 1657 // Création d'un tableau avec la liste des champs de l'instruction
1134 nhaye 1564 foreach($new_instruction->champs as $champ) {
1135     $valNewInstr[$champ] = "";
1136     }
1137 nhaye 1657 // Définition des valeurs de la nouvelle instruction
1138 nhaye 1564 $valNewInstr["evenement"] = $row['evenement_retour_signature'];
1139     $valNewInstr["destinataire"] = $this->valF['destinataire'];
1140     $valNewInstr["dossier"] = $this->valF['dossier'];
1141     $valNewInstr["date_evenement"] = date("d/m/Y");
1142     $new_instruction->ajouter($valNewInstr,$db, $DEBUG);
1143     }
1144 nhaye 1657 // Si la date de retour AR est éditée on vérifie si il existe un événement automatique
1145 vpihour 1823 if ($this->getVal('date_retour_rar') == "" AND
1146     $this->valF['date_retour_rar'] != "" AND
1147     $row['evenement_retour_ar'] != "" ) {
1148 nhaye 1657 $new_instruction = new instruction("]", $db, $DEBUG);
1149     // Création d'un tableau avec la liste des champs de l'instruction
1150     foreach($new_instruction->champs as $champ) {
1151     $valNewInstr[$champ] = "";
1152     }
1153     // Définition des valeurs de la nouvelle instruction
1154     $valNewInstr["evenement"] = $row['evenement_retour_ar'];
1155     $valNewInstr["destinataire"] = $this->valF['destinataire'];
1156     $valNewInstr["dossier"] = $this->valF['dossier'];
1157     $valNewInstr["date_evenement"] = date("d/m/Y");
1158     $new_instruction->ajouter($valNewInstr,$db, $DEBUG);
1159     }
1160 nhaye 1564 }
1161    
1162 fmichon 1540 // Récupération des paramètres de l'action
1163     $sql = "SELECT * FROM ".DB_PREFIXE."action
1164     WHERE action='".$action."'";
1165 fraynaud 129 $res = $db->query($sql);
1166 fmichon 1540 $this->addToLog("triggermodifierapres(): db->query(\"".$sql."\");", VERBOSE_MODE);
1167     if (database::isError($res)) {
1168     die($res->getMessage());
1169     }
1170 fraynaud 129 while ($row=& $res->fetchRow(DB_FETCHMODE_ASSOC)){
1171     // application des regles sur le courrier + delai
1172 vpihour 1127 if(preg_match("/date_evenement/",$row['regle_date_limite'])){
1173 fraynaud 129 $valF['date_limite']= $this->regle($row['regle_date_limite']);
1174     }
1175 vpihour 1127 if(preg_match("/date_evenement/",$row['regle_date_complet'])){
1176 fraynaud 129 $valF['date_complet']= $this->regle($row['regle_date_complet']);
1177     }
1178 nhaye 1571 if(preg_match("/date_evenement/",$row['regle_date_dernier_depot'])){
1179     $valF['date_dernier_depot']= $this->regle($row['regle_date_dernier_depot']);
1180     }
1181 vpihour 1127 if(preg_match("/date_evenement/",$row['regle_date_notification_delai'])){
1182 fraynaud 129 $valF['date_notification_delai']= $this->regle($row['regle_date_notification_delai']);
1183     }
1184 vpihour 1127 if(preg_match("/date_evenement/",$row['regle_date_decision'])){
1185 fraynaud 129 $valF['date_decision']= $this->regle($row['regle_date_decision']);
1186     }
1187 vpihour 1127 if(preg_match("/date_evenement/",$row['regle_date_rejet'])){
1188 fraynaud 129 $valF['date_rejet']= $this->regle($row['regle_date_rejet']);
1189     }
1190 vpihour 1127 if(preg_match("/date_evenement/",$row['regle_date_validite'])){
1191 fraynaud 129 $valF['date_validite']= $this->regle($row['regle_date_validite']);
1192     }
1193 vpihour 1127 if(preg_match("/date_evenement/",$row['regle_date_chantier'])){
1194 fraynaud 129 $valF['date_chantier']= $this->regle($row['regle_date_chantier']);
1195     }
1196 vpihour 1127 if(preg_match("/date_evenement/",$row['regle_date_achevement'])){
1197 fraynaud 129 $valF['date_achevement']= $this->regle($row['regle_date_achevement']);
1198     }
1199 vpihour 1127 if(preg_match("/date_evenement/",$row['regle_date_conformite'])){
1200 fraynaud 129 $valF['date_conformite']= $this->regle($row['regle_date_conformite']);
1201     }
1202 fmichon 1540 }
1203     // Si des valeurs ont été calculées alors on met à jour l'enregistrement
1204     if ($valF != "") {
1205     // On met à jour le dossier
1206     $cle = " dossier='".$this->valF['dossier']."'";
1207     $res1 = $db->autoExecute(DB_PREFIXE.'dossier', $valF, DB_AUTOQUERY_UPDATE, $cle);
1208     $this->addToLog("triggerajouterapres(): db->autoexecute(\"".DB_PREFIXE."dossier\", ".print_r($valF, true).", DB_AUTOQUERY_UPDATE, \"".$cle."\");", VERBOSE_MODE);
1209     if (database::isError($res1)) {
1210 fraynaud 129 die($res->getMessage());
1211 fmichon 1540 }
1212     // Affichage d'informations à l'utilisateur
1213     $this->addToMessage(_('enregistrement')." ".$this->valF['dossier']." "._('table')." dossier [".$db->affectedRows()." "._('enregistrement')." "._('mis_a_jour')."]");
1214 fraynaud 129 }
1215 nhaye 1299
1216 fmichon 1540 /**
1217     * REFERENTIEL ARRETE
1218     */
1219     if ($this->f->getParameter('option_referentiel_arrete') != "") {
1220     if ($this->valF['date_retour_signature'] != $this->getVal('date_retour_signature')) {
1221     $msgenque = new MessageEnqueuer();
1222     $sqlArrete = "SELECT instruction.signataire_arrete as \"ws_DA_In_Signataire\",
1223     signataire_arrete.nom as \"ws_DA_In_Sign_Nom\",
1224     signataire_arrete.prenom as \"ws_DA_In_Sign_Prenom\",
1225     signataire_arrete.qualite as \"ws_DA_In_Sign_Qualite\",
1226     instruction.date_evenement as \"ws_DA_In_Dte_Redac\",
1227     '' as \"ws_DA_In_lieu_Redac\",
1228     instruction.dossier as \"ws_DA_In_N_Doss_DAS\",
1229     '' as \"ws_DA_In_Sigle\",
1230     instruction.etat as \"ws_DA_In_Decision\",
1231     dossier.date_depot as \"ws_DA_In_Dte_Depot_Dem\",
1232     dossier.terrain_numero as \"ws_DA_In_N_Voie\",
1233     '' as \"ws_DA_In_Type_Voie\",
1234     dossier.complement as \"ws_DA_In_Adresse1\",
1235     dossier.terrain_adresse_lieu_dit as \"ws_DA_In_Adresse2\",
1236     dossier.terrain_adresse_code_postal as \"ws_DA_In_CP\",
1237     dossier.terrain_adresse_localite as \"ws_DA_In_Ville\",
1238     dossier.terrain_references_cadastrales as \"ws_DA_In_Nb_Parcelle\",
1239     '' as \"ws_DA_In_Detail_Parcelle\",
1240     CONCAT(donnees_techniques.am_projet_desc,' ',donnees_techniques.co_projet_desc) as \"ws_DA_In_Nature_Trvx\",
1241     '' as \"ws_DA_In_Destination_Trvx\",
1242     dossier_autorisation_type_detaille.code as \"ws_DA_In_Type_Dos_Autoris\",
1243     COALESCE(particulier_nom,personne_morale_raison_sociale) as \"ws_DA_In_Nom_Petition\",
1244     COALESCE(particulier_prenom, personne_morale_denomination) as \"ws_DA_In_Prenom_Petition\",
1245     '' as \"ws_DA_In_Piece_GED\",
1246     instruction.date_retour_signature as \"ws_DA_In_Dte_Signature\"
1247     FROM ".DB_PREFIXE."instruction
1248     LEFT JOIN ".DB_PREFIXE."signataire_arrete ON
1249     instruction.signataire_arrete = signataire_arrete.signataire_arrete
1250     LEFT JOIN ".DB_PREFIXE."dossier ON
1251     instruction.dossier = dossier.dossier
1252     LEFT JOIN ".DB_PREFIXE."lien_dossier_demandeur ON
1253     lien_dossier_demandeur.dossier = dossier.dossier
1254     LEFT JOIN ".DB_PREFIXE."demandeur ON
1255     lien_dossier_demandeur.demandeur = demandeur.demandeur
1256     LEFT JOIN ".DB_PREFIXE."dossier_instruction_type ON
1257     dossier.dossier_instruction_type = dossier_instruction_type.dossier_instruction_type
1258     LEFT JOIN ".DB_PREFIXE."dossier_autorisation_type_detaille ON
1259     dossier_instruction_type.dossier_autorisation_type_detaille =
1260     dossier_autorisation_type_detaille.dossier_autorisation_type_detaille
1261     LEFT JOIN ".DB_PREFIXE."donnees_techniques ON
1262     donnees_techniques.dossier_instruction = dossier.dossier
1263     WHERE instruction.instruction = ".$this->valF['instruction'];
1264     $resArrete = $this->db->query($sqlArrete);
1265     $this->f->addToLog("triggerModifierApres(): db->query(\"".$sqlArrete."\");", VERBOSE_MODE);
1266 vpihour 1777 if ( database::isError($resArrete)){
1267     die();
1268     }
1269 fmichon 1540
1270     $rowArrete = $resArrete->fetchRow(DB_FETCHMODE_ASSOC);
1271     $msgenque->setArreteInfo($rowArrete);
1272     $msgenque->enqueueMessage($msgenque::$ARRETE_ENVOI);
1273     }
1274 nhaye 1299 }
1275 nhaye 1643
1276     // Mise à jour des données du dossier d'autorisation
1277     require_once "../obj/dossier_autorisation.class.php";
1278 softime 2025 $da = new dossier_autorisation($this->getNumDemandeAutorFromDossier($this->valF['dossier']), $this->db, DEBUG);
1279 nhaye 1643 $da->majDossierAutorisation();
1280 fraynaud 129 }
1281    
1282 nhaye 1945 /**
1283     * Méthode de récupération des métadonnées arrêtés dans la base de données,
1284     * les données sont stockés dans l'attribut $this->metadonneesArrete
1285     */
1286     function getArreteMetadata() {
1287     $sqlArrete = "SELECT signataire_arrete.nom as \"nomsignataire\",
1288     signataire_arrete.qualite as \"qualitesignataire\",
1289     instruction.date_evenement as \"datesignaturearrete\",
1290     instruction.etat as \"decisionarrete\",
1291     dossier.terrain_adresse_voie_numero as \"ap_numrue\",
1292     dossier.complement as \"ap_nomdelavoie\",
1293     dossier.terrain_adresse_code_postal as \"ap_codepostal\",
1294     dossier.terrain_adresse_localite as \"ap_ville\"
1295     FROM ".DB_PREFIXE."instruction
1296     LEFT JOIN ".DB_PREFIXE."signataire_arrete ON
1297     instruction.signataire_arrete = signataire_arrete.signataire_arrete
1298     LEFT JOIN ".DB_PREFIXE."dossier ON
1299     instruction.dossier = dossier.dossier
1300     LEFT JOIN ".DB_PREFIXE."donnees_techniques ON
1301     donnees_techniques.dossier_instruction = dossier.dossier
1302     WHERE instruction.instruction = ".$this->valF['instruction'];
1303     $resArrete = $this->db->query($sqlArrete);
1304     $this->f->addToLog("triggerModifierApres(): db->query(\"".$sqlArrete."\");", VERBOSE_MODE);
1305     if ( database::isError($resArrete)){
1306     die();
1307     }
1308    
1309     $this->metadonneesArrete = $resArrete->fetchRow(DB_FETCHMODE_ASSOC);
1310     }
1311    
1312 nhaye 1952 // {{{
1313 nhaye 1945 // Méthodes de récupération des métadonnées arrêté
1314 nhaye 1952 /**
1315     * @return string Retourne le numéro d'arrêté
1316     */
1317 nhaye 1945 function getNumArrete() {
1318     return $this->valF['numero_arrete'];
1319     }
1320 nhaye 1952 /**
1321     * @return chaîne vide
1322     */
1323 softime 2025 function getReglementaireArrete() {
1324 nhaye 1945 return "";
1325     }
1326 nhaye 1952 /**
1327     * @return boolean de notification au pétitionnaire
1328     */
1329 softime 2025 function getNotificationArrete() {
1330 nhaye 1945 if( isset($this->valF["date_retour_rar"]) ) {
1331     return true;
1332     } else {
1333     return false;
1334     }
1335     }
1336 nhaye 1952 /**
1337     * @return date de notification au pétitionnaire
1338     */
1339 softime 2025 function getDateNotificationArrete() {
1340 nhaye 1945 return date("d/m/Y", strtotime($this->valF["date_retour_rar"]));
1341     }
1342 nhaye 1952 /**
1343     * @return boolean check si le document est passé au contrôle de légalité
1344     */
1345 softime 2025 function getControleLegalite() {
1346 nhaye 1945 if( isset($this->valF["date_retour_controle_legalite"]) ) {
1347     return true;
1348     } else {
1349     return false;
1350     }
1351     }
1352 nhaye 1952 /**
1353     * @return date de signature de l'arrêté
1354     */
1355 softime 2025 function getDateSignature() {
1356 nhaye 1945 return date("d/m/Y", strtotime($this->valF['date_retour_signature']));
1357     }
1358 nhaye 1952 /**
1359     * @return string nom du signataire
1360     */
1361 nhaye 1945 function getNomSignataire() {
1362     if (empty($this->metadonneesArrete)) {
1363     $this->getArreteMetadata();
1364     }
1365     return $this->metadonneesArrete["nomsignataire"];
1366     }
1367 nhaye 1952 /**
1368     * @return string qualité du signataire
1369     */
1370 nhaye 1945 function getQualiteSignataire() {
1371     if (empty($this->metadonneesArrete)) {
1372     $this->getArreteMetadata();
1373     }
1374     return $this->metadonneesArrete["qualitesignataire"];
1375     }
1376 nhaye 1952 /**
1377     * @return string numéro du terrain
1378     */
1379 nhaye 1945 function getAp_numRue() {
1380     if (empty($this->metadonneesArrete)) {
1381     $this->getArreteMetadata();
1382     }
1383     return $this->metadonneesArrete["ap_numrue"];
1384     }
1385 nhaye 1952 /**
1386     * @return string nom de la rue du terrain
1387     */
1388 nhaye 1945 function getAp_nomDeLaVoie() {
1389     if (empty($this->metadonneesArrete)) {
1390     $this->getArreteMetadata();
1391     }
1392     return $this->metadonneesArrete["ap_nomdelavoie"];
1393     }
1394 nhaye 1952 /**
1395     * @return string code postal du terrain
1396     */
1397 nhaye 1945 function getAp_codePostal() {
1398     if (empty($this->metadonneesArrete)) {
1399     $this->getArreteMetadata();
1400     }
1401     return $this->metadonneesArrete["ap_codepostal"];
1402     }
1403 nhaye 1952 /**
1404     * @return string ville du terrain
1405     */
1406 nhaye 1945 function getAp_ville() {
1407     if (empty($this->metadonneesArrete)) {
1408     $this->getArreteMetadata();
1409     }
1410     return $this->metadonneesArrete["ap_ville"];
1411     }
1412 softime 2025 /**
1413     * @return string activité
1414     */
1415     function getActivite() {
1416     return "Droit du sol";
1417     }
1418     /**
1419     * @return string vide
1420     */
1421     function getDateControleLegalite() {
1422     return "";
1423     }
1424     /**
1425     * @return string vide
1426     */
1427     function getPermanentArrete() {
1428     return "";
1429     }
1430 nhaye 1945
1431     // Fin des méthodes de récupération des métadonnées
1432 nhaye 1952 // }}}
1433 nhaye 1945
1434 fraynaud 20 function triggersupprimer($id,&$db,$val,$DEBUG) {
1435 fmichon 1540 /**
1436     * L'objectif ici est de repositionner les valeurs récupérées en
1437     * archive dans le dossier d'instruction avant de supprimer l'événement
1438     * d'instruction
1439     */
1440 fmichon 1618 // Mise à jour des 4 valeurs modifiées par l'action
1441     $valF['delai'] = $val['archive_delai'];
1442     $valF['accord_tacite'] = $val['archive_accord_tacite'];
1443     $valF['etat'] = $val['archive_etat'];
1444     if ($val['archive_avis'] != '') {
1445     $valF['avis_decision'] = $val['archive_avis'];
1446     } else {
1447     $valF['avis_decision'] = NULL;
1448     }
1449     // Mise à jour des 10 dates avec la valeur présente dans le formulaire
1450     // de suppression. Si la valeur de la date est vide alors on fixe
1451     // à la valeur NULL
1452     //
1453     if ($val['archive_date_complet'] != '') {
1454     $valF['date_complet'] = $val['archive_date_complet'];
1455     } else {
1456     $valF['date_complet'] = NULL;
1457     }
1458     if ($val['archive_date_dernier_depot'] != '') {
1459     $valF['date_dernier_depot'] = $val['archive_date_dernier_depot'];
1460     } else {
1461     $valF['date_dernier_depot'] = NULL;
1462     }
1463     if ($val['archive_date_rejet'] != '') {
1464     $valF['date_rejet'] = $val['archive_date_rejet'];
1465     } else {
1466     $valF['date_rejet'] = NULL;
1467     }
1468     if ($val['archive_date_limite'] != '') {
1469     $valF['date_limite'] = $val['archive_date_limite'];
1470     } else {
1471     $valF['date_limite'] = NULL;
1472     }
1473     if ($val['archive_date_notification_delai'] != '') {
1474     $valF['date_notification_delai'] = $val['archive_date_notification_delai'];
1475     } else {
1476     $valF['date_notification_delai'] = NULL;
1477     }
1478     if ($val['archive_date_decision'] != '') {
1479     $valF['date_decision'] = $val['archive_date_decision'];
1480     } else {
1481     $valF['date_decision'] = NULL;
1482     }
1483     if ($val['archive_date_validite'] != '') {
1484     $valF['date_validite'] = $val['archive_date_validite'];
1485     } else {
1486     $valF['date_validite'] = NULL;
1487     }
1488     if ($val['archive_date_achevement'] != '') {
1489     $valF['date_achevement'] = $val['archive_date_achevement'];
1490     } else {
1491     $valF['date_achevement'] = NULL;
1492     }
1493     if ($val['archive_date_chantier'] != '') {
1494     $valF['date_chantier'] = $val['archive_date_chantier'];
1495     } else {
1496     $valF['date_chantier'] = NULL;
1497     }
1498     if ($val['archive_date_conformite'] != '') {
1499     $valF['date_conformite'] = $val['archive_date_conformite'];
1500     } else {
1501     $valF['date_conformite'] = NULL;
1502     }
1503 nhaye 1724 if ($val['archive_incompletude'] != '') {
1504     $valF['incompletude'] = $val['archive_incompletude'];
1505     } else {
1506     $valF['incompletude'] = NULL;
1507     }
1508     if ($val['archive_evenement_suivant_tacite'] != '') {
1509     $valF['evenement_suivant_tacite'] = $val['archive_evenement_suivant_tacite'];
1510     } else {
1511     $valF['evenement_suivant_tacite'] = NULL;
1512     }
1513     if ($val['archive_evenement_suivant_tacite_incompletude'] != '') {
1514     $valF['evenement_suivant_tacite_incompletude'] = $val['archive_evenement_suivant_tacite_incompletude'];
1515     } else {
1516     $valF['evenement_suivant_tacite_incompletude'] = NULL;
1517     }
1518     if ($val['archive_etat_pendant_incompletude'] != '') {
1519     $valF['etat_pendant_incompletude'] = $val['archive_etat_pendant_incompletude'];
1520     } else {
1521     $valF['etat_pendant_incompletude'] = NULL;
1522     }
1523     if ($val['archive_date_limite_incompletude'] != '') {
1524     $valF['date_limite_incompletude'] = $val['archive_date_limite_incompletude'];
1525     } else {
1526     $valF['date_limite_incompletude'] = NULL;
1527     }
1528     if ($val['archive_delai_incompletude'] != '') {
1529     $valF['delai_incompletude'] = $val['archive_delai_incompletude'];
1530     } else {
1531     $valF['delai_incompletude'] = NULL;
1532     }
1533 fmichon 1540 // On met à jour le dossier
1534     $cle = " dossier='".$val['dossier']."'";
1535 fmichon 1618 $res = $db->autoExecute(DB_PREFIXE.'dossier', $valF, DB_AUTOQUERY_UPDATE, $cle);
1536 nhaye 1571 $this->addToLog("triggersupprimer(): db->autoexecute(\"".DB_PREFIXE."dossier\", ".print_r($valF, true).", DB_AUTOQUERY_UPDATE, \"".$cle."\");", VERBOSE_MODE);
1537 fmichon 1618 if (database::isError($res)) {
1538 fraynaud 20 die($res->getMessage());
1539     }
1540 fmichon 1540 // Affichage d'informations à l'utilisateur
1541 nhaye 1571 $this->addToMessage(_("Suppression de l'instruction")." [".$db->affectedRows()." "._('enregistrement')." "._('mis_a_jour')."]");
1542 nhaye 1643
1543 vpihour 2000 // Mise à jour de la demande si un récépissé d'instruction correspond à l'instruction à supprimer
1544 fraynaud 20 }
1545 fmichon 1540
1546 nhaye 1643 function triggersupprimerapres($id,&$db,$val,$DEBUG) {
1547    
1548     // Mise à jour des données du dossier d'autorisation
1549     require_once "../obj/dossier_autorisation.class.php";
1550 softime 2025 $da = new dossier_autorisation($this->getNumDemandeAutorFromDossier($val["dossier"]), $this->db, DEBUG);
1551 nhaye 1643 $da->majDossierAutorisation();
1552     }
1553    
1554 fraynaud 20 // =============================================
1555     // calcul de date avec ajout de mois (delais)
1556     // [add months (delay) and calculation final date]
1557     // LIMITE DE LA FONCTION si delai >24 MOIS
1558     // [limit : delay < 24 month]
1559     // =============================================
1560     function moisdate($date,$delaimois) {
1561     $temp = explode("-" , $date);
1562     $jour = (int) $temp[2];
1563     $mois = (int) $temp[1];
1564     $annee = (int) $temp[0];
1565     // calcul si delai superieur à 12 (limite 24) [delay > 24 month]
1566     if($delaimois>=12){
1567     $delaimois=$delaimois-12;
1568     $annee=$annee+1;
1569     }
1570     if($delaimois>=12){
1571     $delaimois=$delaimois-12;
1572     $annee=$annee+1;
1573     }
1574     // mois
1575     $mois=$mois+$delaimois;
1576     // calcul mois annee [calculation number of years if > 12 month]
1577     // nb de mois > à 12
1578     if ($mois>12){
1579     $mois=$mois-12;
1580     $annee=$annee+1;
1581     }
1582     // Calcul du nombre de jours dans le mois sélectionné [calculation number of days]
1583     switch($mois) {
1584     case "2":
1585     if ($annee % 4 == 0 && $annee % 100 != 0 || $annee % 400 == 0)
1586     $jourmax = 29;
1587     else
1588     $jourmax = 28;
1589     break;
1590     case "4":
1591     case "6":
1592     case "9":
1593     case "11":
1594     $jourmax = 30;
1595     break;
1596     default:
1597     $jourmax = 31;
1598     }
1599     if ($jour > $jourmax)
1600     $jour = $jourmax;
1601     //$dateretour=$annee."-".$mois."-".$jour;
1602     return $annee."-".$mois."-".$jour ;
1603     }
1604    
1605 vpihour 1137 // Vérifie la restriction sur l'événement
1606     function verifier($val = array(), &$db, $DEBUG){
1607 nhaye 1186 parent::verifier($val, $db, $DEBUG);
1608 vpihour 1784
1609     if ( isset($val['evenement']) && is_numeric($val['evenement'])){
1610 vpihour 1137 //Récupère la restriction
1611 vpihour 1784 $sql= "SELECT
1612     restriction
1613     FROM
1614     ".DB_PREFIXE."evenement
1615     WHERE
1616     evenement =".$val['evenement'];
1617    
1618     $res = $db->query($sql);
1619     $this->addToLog("verifier(): db->query(\"".$sql."\");", VERBOSE_MODE);
1620     if (database::isError($res)) {
1621     die($res->getMessage());
1622     }
1623     $row=& $res->fetchRow(DB_FETCHMODE_ASSOC);
1624    
1625     //Test qu'une restriction est présente
1626     if ( isset($row['restriction']) && $row['restriction'] != "" ){
1627 vpihour 1137
1628 vpihour 1784 //Test si la restriction est valide
1629     if ( !$this->restrictionIsValid($row['restriction']) ){
1630    
1631     $this->correct=false;
1632     $this->addToMessage(_("Restriction non valide"));
1633     }
1634     else {
1635    
1636     $this->correct = true;
1637     }
1638 vpihour 1137 }
1639     }
1640 vpihour 1921
1641 nhaye 1564 $this->updateDate("date_envoi_signature");
1642     $this->updateDate("date_retour_signature");
1643     $this->updateDate("date_envoi_rar");
1644     $this->updateDate("date_retour_rar");
1645     $this->updateDate("date_envoi_controle_legalite");
1646     $this->updateDate("date_retour_controle_legalite");
1647 vpihour 1137 }
1648 vpihour 1284
1649 nhaye 1724 /**
1650     * Méthode permettant de récupérer toutes les valeurs de l'événement
1651     * sélectionné après validation du formulaire d'instruction
1652     *
1653     * @return array() veleurs de l'événement lié
1654     */
1655    
1656     private function getValEvenement() {
1657     if(!empty($this->valEvenement)) {
1658     return $this->valEvenement;
1659     } else {
1660     $sql = "SELECT * FROM ".DB_PREFIXE."evenement
1661     WHERE evenement=".$this->valF['evenement'];
1662     $res = $this->db->query($sql);
1663     $this->addToLog("getValEvenement(): db->query(\"".$sql."\");", VERBOSE_MODE);
1664     if (database::isError($res)) {
1665     die($res->getMessage());
1666     }
1667     $this->valEvenement = $res->fetchRow(DB_FETCHMODE_ASSOC);
1668     return $this->valEvenement;
1669     }
1670     }
1671    
1672     /**
1673     * Méthode permettant de savoir si le dossier lié à l'instruction à le flag
1674     * incompletude à true après validation du formulaire d'instruction
1675     *
1676     * @return boolean
1677     */
1678     private function dossierIncomplet() {
1679     $sql = "SELECT incompletude FROM ".DB_PREFIXE."dossier
1680     WHERE dossier='".$this->valF['dossier']."'";
1681     $incompletude = $this->db->getOne($sql);
1682     $this->addToLog("dossierIncomplet(): db->query(\"".$sql."\");", VERBOSE_MODE);
1683     if (database::isError($incompletude)) {
1684     die($incompletude->getMessage());
1685     }
1686     if ($incompletude == 't') {
1687     return true;
1688     } else {
1689     return false;
1690     }
1691     }
1692 vpihour 1921
1693     /**
1694 nhaye 1949 * Finalisation des documents.
1695     * @param string $champ champ du fichier à finaliser
1696     * @param booleen $status permet de définir si on finalise ou définalise
1697     * @param string $sousform permet de savoir si se trouve dans un sousformulaire (passé au javascript)
1698 vpihour 1921 */
1699 vpihour 1986 function finaliser( $champ = '', $status, $sousform, $retourformulaire){
1700 nhaye 1724
1701 vpihour 1921 //Si on finalise le document
1702     if ( $status == 1 ){
1703    
1704     //Génération du PDF
1705     $_GET['output'] = "string";
1706     $f = $this->f;
1707     include '../app/pdf_instruction.php';
1708    
1709     //Métadonnées du document
1710     $metadata = array(
1711 vpihour 1927 'filename' => 'instruction_'.$idx.'.pdf',
1712 vpihour 1921 'mimetype' => 'application/pdf',
1713     'size' => strlen($pdf_output)
1714     );
1715    
1716 nhaye 1928 // Récupération des métadonnées calculées après validation
1717 nhaye 1938 $spe_metadata = $this->getMetadata("om_fichier_instruction");
1718 nhaye 1928
1719     $metadata = array_merge($metadata, $spe_metadata);
1720 vpihour 1921 //Si le document a déjà été finalisé
1721     //on met à jour le document mais pas son uid
1722 vpihour 1927 if ( $this->getVal("om_fichier_instruction") != '' ){
1723     $uid = $this->f->storage->update(
1724     $this->getVal("om_fichier_instruction"), $pdf_output, $metadata);
1725 vpihour 1921 }
1726     //Sinon, on joute le document et on récupère son uid
1727     else {
1728     //Stockage du PDF
1729     $uid = $this->f->storage->create($pdf_output, $metadata);
1730     }
1731     }
1732     else {
1733     //Récupération de l'uid du document finalisé
1734 vpihour 1927 $uid = $this->getVal("om_fichier_instruction");
1735 vpihour 1921
1736     //On dé-finalise avant de finaliser
1737     if ( $uid == '' ){
1738     return -1;
1739     }
1740     }
1741    
1742     //Mise à jour des données
1743     if ( $uid != '' ){
1744     // Logger
1745 vpihour 1927 $this->addToLog("finaliser() - begin", EXTRA_VERBOSE_MODE);
1746 vpihour 1921 // Recuperation de la valeur de la cle primaire de l'objet
1747 vpihour 1927 if($this->getVal($this->clePrimaire) != '')
1748     $id = $this->getVal($this->clePrimaire);
1749 vpihour 1921 else
1750     $id=$this->id;
1751 vpihour 1986
1752     $actions = array();
1753 vpihour 1921 //Tableau contenant le lien vers le PDF et lien du portlet pour la mise
1754     //à jour de l'interface
1755     if ( $status == 0 ){
1756     $lien = '../app/pdf_instruction.php?idx='.$id;
1757 vpihour 1986
1758     //Ajout des actions
1759     //Si l'utilisateur a le droit de modifier l'objet
1760     if ( $this->f->isAccredited('instruction') ||
1761     $this->f->isAccredited('instruction_modifier') ){
1762    
1763     $actions["modifier"] = ($sousform!='')?
1764     '<li><a href="#" onclick="ajaxIt(\'instruction\',
1765     \'../scr/sousform.php?obj=instruction&amp;action=1&amp;idx='.
1766     $this->getVal($this->clePrimaire).
1767     '&amp;premiersf=0&amp;trisf=&amp;retourformulaire='.$retourformulaire.'&amp;idxformulaire='.
1768     $this->getVal("dossier").
1769     '&amp;retour=form\');">
1770     <span class="om-prev-icon om-icon-16 edit-16" title="'.
1771     _('Modifier').'">'.
1772     _('Modifier').
1773     '</span></a></li>':
1774     '<li>
1775     <a href="form.php?obj=instruction&amp;action=1'.'&amp;idx='.
1776     $this->getVal($this->clePrimaire).
1777     '&amp;premier=&amp;advs_id=&amp;recherche=&amp;tricol=&amp;selectioncol=&amp;valide=&amp;retour=form">
1778     <span class="om-prev-icon om-icon-16 edit-16" title="'.
1779     _('Modifier').'">'.
1780     _('Modifier').
1781     '</span></a></li>';
1782     }
1783 softime 1994 //Si l'utilisateur a le droit de supprimer l'objet
1784 vpihour 1986 if ( $this->f->isAccredited('instruction') ||
1785     $this->f->isAccredited('instruction_supprimer') ){
1786    
1787     $actions["supprimer"] = ($sousform!='')?
1788     '<li><a href="#" onclick="ajaxIt(\'instruction\',
1789     \'../scr/sousform.php?obj=instruction&amp;action=2&amp;idx='.
1790     $this->getVal($this->clePrimaire).
1791     '&amp;premiersf=0&amp;trisf=&amp;retourformulaire='.$retourformulaire.'&amp;idxformulaire='.
1792     $this->getVal("dossier").
1793     '&amp;retour=form\');">
1794     <span class="om-prev-icon om-icon-16 delete-16" title="'.
1795     _('Supprimer').'">'.
1796     _('Supprimer').
1797     '</span></a></li>':
1798     '<li>
1799     <a href="form.php?obj=instruction&amp;action=1'.'&amp;idx='.
1800     $this->getVal($this->clePrimaire).
1801     '&amp;premier=&amp;advs_id=&amp;recherche=&amp;tricol=&amp;selectioncol=&amp;valide=&amp;retour=form">
1802     <span class="om-prev-icon om-icon-16 delete-16" title="'.
1803     _('Supprimer').'">'.
1804     _('Supprimer').
1805     '</span></a></li>';
1806     }
1807 vpihour 1921 }
1808     else {
1809     $lien = '../spg/file.php?obj=instruction&'.
1810     'champ=om_fichier_instruction&id='.$id;
1811     }
1812    
1813     $retour = array(
1814     "portlet"=> "<a href=\"#\" onclick=\"finalizeDocument(".
1815     $id.", 'instruction', '".$sousform."', ".(($status==0)?1:0).")\">
1816 vpihour 1986 <span class=\"om-prev-icon om-icon-16 om-icon-fix "
1817 vpihour 1921 .(($status==1)?"de":"")."finalise\" title=\"".
1818     (($status==1)?_("Reprendre la redaction du document"):_("Finaliser le document"))."\">".
1819     (($status==1)?_("Reprendre la redaction du document"):_("Finaliser le document"))."</span>
1820     </a>",
1821 vpihour 1986 "pdf" => $lien,
1822     "actions" => $actions
1823 vpihour 1921 );
1824    
1825     foreach ( $this->champs as $key=>$value )
1826     $val[$value] = $this->val[$key];
1827     $val['date_evenement']=$this->dateDBToForm($val['date_evenement']);
1828     $val['archive_date_complet']=$this->dateDBToForm($val['archive_date_complet']);
1829     $val['archive_date_rejet']=$this->dateDBToForm($val['archive_date_rejet']);
1830     $val['archive_date_limite']=$this->dateDBToForm($val['archive_date_limite']);
1831     $val['archive_date_notification_delai']=$this->dateDBToForm($val['archive_date_notification_delai']);
1832     $val['archive_date_decision']=$this->dateDBToForm($val['archive_date_decision']);
1833     $val['archive_date_validite']=$this->dateDBToForm($val['archive_date_validite']);
1834     $val['archive_date_achevement']=$this->dateDBToForm($val['archive_date_achevement']);
1835     $val['archive_date_chantier']=$this->dateDBToForm($val['archive_date_chantier']);
1836     $val['archive_date_conformite']=$this->dateDBToForm($val['archive_date_conformite']);
1837     $val['archive_date_dernier_depot']=$this->dateDBToForm($val['archive_date_dernier_depot']);
1838     $val['archive_date_limite_incompletude']=$this->dateDBToForm($val['archive_date_limite_incompletude']);
1839     $val['date_finalisation_courrier']=$this->dateDBToForm($val['date_finalisation_courrier']);
1840     $val['date_envoi_signature']=$this->dateDBToForm($val['date_envoi_signature']);
1841     $val['date_retour_signature']=$this->dateDBToForm($val['date_retour_signature']);
1842     $val['date_envoi_rar']=$this->dateDBToForm($val['date_envoi_rar']);
1843     $val['date_retour_rar']=$this->dateDBToForm($val['date_retour_rar']);
1844     $val['date_envoi_controle_legalite']=$this->dateDBToForm($val['date_envoi_controle_legalite']);
1845     $val['date_retour_controle_legalite']=$this->dateDBToForm($val['date_retour_controle_legalite']);
1846    
1847     $this->setvalF($val);
1848    
1849     // Verification de la validite des donnees
1850     $this->verifier($this->val, $this->db, DEBUG);
1851     // Verification du verrou
1852     $this->testverrou();
1853     // Si les verifications precedentes sont correctes, on procede a
1854     // la modification, sinon on ne fait rien et on retourne une erreur
1855     if ($this->correct) {
1856     // Execution du trigger 'before' specifique au MODE 'update'
1857     $this->triggermodifier( $id, $this->db, $this->val, DEBUG);
1858     $valF = array(
1859     "om_final_instruction"=> ($status==1)?TRUE:FALSE,
1860 vpihour 1966 "om_fichier_instruction"=>$uid,
1861     "date_finalisation_courrier"=>date('Y-m-d'));
1862 vpihour 1921 // Execution de la requête de modification des donnees de l'attribut
1863     // valF de l'objet dans l'attribut table de l'objet
1864     $res = $this->db->autoExecute(DB_PREFIXE.$this->table, $valF,
1865     DB_AUTOQUERY_UPDATE, $this->getCle($id));
1866 vpihour 1927 $this->addToLog("finaliser() : db->autoExecute(\"".DB_PREFIXE.$this->table."\", ".print_r($valF, true).", DB_AUTOQUERY_UPDATE, \"".$this->getCle($id)."\")", VERBOSE_MODE);
1867 vpihour 1921 // Si une erreur survient
1868     if (database::isError($res)) {
1869     // Appel de la methode de recuperation des erreurs
1870     $this->erreur_db($res->getDebugInfo(), $res->getMessage(), '');
1871     } else {
1872     // Log
1873     $this->addToLog(_("Requete executee"), VERBOSE_MODE);
1874     // Log
1875     $message = _("Enregistrement")."&nbsp;".$id."&nbsp;";
1876     $message .= _("de la table")."&nbsp;\"".$this->table."\"&nbsp;";
1877     $message .= "[&nbsp;".$this->db->affectedRows()."&nbsp;";
1878     $message .= _("enregistrement(s) mis a jour")."&nbsp;]";
1879     $this->addToLog($message, VERBOSE_MODE);
1880     // Mise en place du verrou pour ne pas finaliser plusieurs fois
1881     // le meme document
1882     $this->verrouille();
1883     // Execution du trigger 'after' specifique au MODE 'update'
1884     //$this->triggermodifierapres($id, $this->db, $val, DEBUG);
1885    
1886     return $retour;
1887     }
1888     } else {
1889     // Message d'echec (saut d'une ligne supplementaire avant le
1890     // message pour qu'il soit mis en evidence)
1891     $this->addToLog("Finalisation non enregistree");
1892     return -1;
1893     }
1894     }
1895     // Si le document n'a pas été stocké
1896     else{
1897     return -1;
1898     }
1899     }
1900 vpihour 1927
1901     /**
1902 nhaye 1928 * Récupération du numéro de dossier d'instruction à ajouter aux métadonnées
1903 nhaye 1949 * @return string numéro de dossier d'instruction
1904 nhaye 1928 */
1905     protected function getDossier() {
1906     if(empty($this->specificMetadata)) {
1907     $this->getSpecificMetadata();
1908     }
1909     return $this->specificMetadata->dossier;
1910     }
1911     /**
1912 softime 2016 * Récupération la version du dossier d'instruction à ajouter aux métadonnées
1913     * @return int Version
1914     */
1915     protected function getDossierVersion() {
1916     if(empty($this->specificMetadata)) {
1917     $this->getSpecificMetadata();
1918     }
1919     return $this->specificMetadata->version;
1920     }
1921     /**
1922 nhaye 1928 * Récupération du numéro de dossier d'autorisation à ajouter aux métadonnées
1923 nhaye 1949 * @return string numéro de dossier d'autorisation
1924 nhaye 1928 */
1925 softime 2025 protected function getNumDemandeAutor() {
1926 nhaye 1928 if(empty($this->specificMetadata)) {
1927     $this->getSpecificMetadata();
1928     }
1929     return $this->specificMetadata->dossier_autorisation;
1930     }
1931     /**
1932     * Récupération de la date de demande initiale du dossier à ajouter aux métadonnées
1933 nhaye 1949 * @return date de la demande initiale
1934 nhaye 1928 */
1935 softime 2025 protected function getAnneemoisDemandeAutor() {
1936 nhaye 1928 if(empty($this->specificMetadata)) {
1937     $this->getSpecificMetadata();
1938     }
1939     return $this->specificMetadata->date_demande_initiale;
1940     }
1941     /**
1942     * Récupération du type de dossier d'instruction à ajouter aux métadonnées
1943 nhaye 1949 * @return string type du dossier d'instruction
1944 nhaye 1928 */
1945 softime 2025 protected function getTypeInstruction() {
1946 nhaye 1928 if(empty($this->specificMetadata)) {
1947     $this->getSpecificMetadata();
1948     }
1949     return $this->specificMetadata->dossier_instruction_type;
1950     }
1951     /**
1952     * Récupération du statut du dossier d'autorisation à ajouter aux métadonnées
1953 nhaye 1949 * @return string avis
1954 nhaye 1928 */
1955 softime 2025 protected function getStatutAutorisation() {
1956 nhaye 1928 if(empty($this->specificMetadata)) {
1957     $this->getSpecificMetadata();
1958     }
1959     return $this->specificMetadata->statut;
1960     }
1961     /**
1962     * Récupération du type de dossier d'autorisation à ajouter aux métadonnées
1963 nhaye 1949 * @return string type du dossier d'autorisation
1964 nhaye 1928 */
1965 softime 2025 protected function getTypeAutorisation() {
1966 nhaye 1928 if(empty($this->specificMetadata)) {
1967     $this->getSpecificMetadata();
1968     }
1969     return $this->specificMetadata->dossier_autorisation_type;
1970     }
1971     /**
1972     * Récupération de la date d'ajout de document à ajouter aux métadonnées
1973 nhaye 1949 * @return date de l'évènement
1974 nhaye 1928 */
1975 softime 2025 protected function getDateEvenementDocument() {
1976 nhaye 1928 return date("d/m/Y");
1977     }
1978     /**
1979     * Récupération du groupe d'instruction à ajouter aux métadonnées
1980     * @return string Groupe d'instruction
1981     */
1982     protected function getGroupeInstruction() {
1983     if(empty($this->specificMetadata)) {
1984     $this->getSpecificMetadata();
1985     }
1986     return $this->specificMetadata->groupe_instruction;
1987     }
1988 softime 2002 /**
1989     * Récupération du libellé du type du document à ajouter aux métadonnées
1990     * @return string Groupe d'instruction
1991     */
1992 softime 2025 protected function getTitle() {
1993 nhaye 1928
1994 softime 2002 // Récupère le champ événement
1995     if (isset($this->valF["evenement"]) AND $this->valF["evenement"] != "") {
1996     $evenement = $this->valF["evenement"];
1997     } else {
1998     $evenement = $this->getVal("evenement");
1999     }
2000    
2001     // Requête sql
2002     $sql = "SELECT libelle FROM ".DB_PREFIXE."evenement
2003     WHERE evenement=".$evenement;
2004     $evenement_libelle = $this->db->getOne($sql);
2005 softime 2025 $this->addToLog("getTitle(): db->getOne(\"".$sql."\");", VERBOSE_MODE);
2006 softime 2002 if (database::isError($evenement_libelle)) {
2007     die();
2008     }
2009    
2010     // Retourne le libelle de l'événement
2011     return $evenement_libelle;
2012     }
2013    
2014 nhaye 1928 /**
2015     * Cette méthode permet de stocker en attribut toutes les métadonnées
2016     * nécessaire à l'ajout d'un document.
2017     */
2018     public function getSpecificMetadata() {
2019     if (isset($this->valF["dossier"]) AND $this->valF["dossier"] != "") {
2020     $dossier = $this->valF["dossier"];
2021     } else {
2022     $dossier = $this->getVal("dossier");
2023     }
2024     //Requête pour récupérer les informations essentiels sur le dossier d'instruction
2025     $sql = "SELECT dossier.dossier as dossier,
2026     dossier_autorisation.dossier_autorisation as dossier_autorisation,
2027     to_char(dossier.date_demande, 'YYYY/MM') as date_demande_initiale,
2028 softime 2016 dossier.version as version,
2029 nhaye 1928 dossier_instruction_type.code as dossier_instruction_type,
2030     etat_dossier_autorisation.libelle as statut,
2031     dossier_autorisation_type.code as dossier_autorisation_type,
2032     groupe.code as groupe_instruction
2033     FROM ".DB_PREFIXE."dossier
2034     LEFT JOIN ".DB_PREFIXE."dossier_instruction_type
2035     ON dossier.dossier_instruction_type = dossier_instruction_type.dossier_instruction_type
2036     LEFT JOIN ".DB_PREFIXE."dossier_autorisation
2037     ON dossier.dossier_autorisation = dossier_autorisation.dossier_autorisation
2038     LEFT JOIN ".DB_PREFIXE."etat_dossier_autorisation
2039     ON dossier_autorisation.etat_dossier_autorisation = etat_dossier_autorisation.etat_dossier_autorisation
2040     LEFT JOIN ".DB_PREFIXE."dossier_autorisation_type_detaille
2041     ON dossier_autorisation.dossier_autorisation_type_detaille = dossier_autorisation_type_detaille.dossier_autorisation_type_detaille
2042     LEFT JOIN ".DB_PREFIXE."dossier_autorisation_type
2043     ON dossier_autorisation_type_detaille.dossier_autorisation_type = dossier_autorisation_type.dossier_autorisation_type
2044     LEFT JOIN ".DB_PREFIXE."groupe
2045     ON dossier_autorisation_type.groupe = groupe.groupe
2046     WHERE dossier.dossier = '".$dossier."'";
2047     $res = $this->db->query($sql);
2048     $this->f->addToLog("obj/document_numerise.class.php : db->query(".$sql.")", VERBOSE_MODE);
2049     if ( database::isError($res)){
2050     die();
2051     }
2052    
2053     //Le résultat est récupéré dans un objet
2054     $row =& $res->fetchRow(DB_FETCHMODE_OBJECT);
2055    
2056     //Si il y a un résultat
2057     if ($row !== null) {
2058    
2059     //Alors on créé l'objet dossier_instruction
2060     $this->specificMetadata = $row;
2061    
2062     }
2063     }
2064 vpihour 1978
2065     /**
2066     * Retourne le statut du dossier d'instruction
2067     * @param string $idx Identifiant du dossier d'instruction
2068     * @return string Le statut du dossier d'instruction
2069     */
2070 softime 2025 function getStatutAutorisationDossier($idx){
2071 vpihour 1978
2072     $statut = '';
2073    
2074     //Si l'identifiant du dossier d'instruction fourni est correct
2075     if ( $idx != '' ){
2076    
2077     //On récupère le statut de l'état du dossier à partir de l'identifiant du
2078     //dossier
2079     $sql = "SELECT etat.statut
2080     FROM ".DB_PREFIXE."dossier
2081     LEFT JOIN
2082     ".DB_PREFIXE."etat
2083     ON
2084     dossier.etat = etat.etat
2085     WHERE dossier ='".$idx."'";
2086     $statut = $this->db->getOne($sql);
2087 softime 2025 $this->f->addToLog("getStatutAutorisationDossier() : db->getOne(\"".$sql."\")", VERBOSE_MODE);
2088 vpihour 1978 if ( database::isError($statut)){
2089     die();
2090     }
2091     }
2092     return $statut;
2093     }
2094 fraynaud 3 }// fin classe
2095 atreal 208 ?>

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26