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

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

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1618 by fmichon, Thu Apr 4 15:15:59 2013 UTC revision 1946 by nhaye, Wed May 29 14:01:04 2013 UTC
# Line 32  class instruction extends instruction_ge Line 32  class instruction extends instruction_ge
32      var $archive_date_depot; // specific      var $archive_date_depot; // specific
33      var $retourformulaire;   // specific      var $retourformulaire;   // specific
34      var $idxformulaire;      // specific      var $idxformulaire;      // specific
35        var $valEvenement;
36        // Tableau contenant une partie des métadonnées arrêtés
37        var $metadonneesArrete;
38    
39        var $metadata = array(
40            "om_fichier_instruction" => array(
41                "dossier" => "getDossier",
42                "dossier_autorisation" => "getDossierAutorisation",
43                "date_demande_initiale" => "getDateDemandeInitiale",
44                "dossier_instruction_type" => "getDossierInstructionType",
45                "statut" => "getStatut",
46                "dossier_autorisation_type" => "getDossierAutorisationType",
47                "date_creation" => "getDateEvenement",
48                "groupe_instruction" => 'getGroupeInstruction',
49            ),
50            "document_arrete" => array(
51                "numArrete" => "getNumArrete",
52                "specialiteArrete" => "getSpecialiteArrete",
53                "decisionArrete" => "getDecisionArrete",
54                "chketatReglementaire" => "getChketatReglementaire",
55                "chkNotification" => "getChkNotification",
56                "dateNotification" => "getDateNotification",
57                "chkCreationdroit" => "getChkCreationdroit",
58                "chkPublication" => "getChkPublication",
59                "datePublication" => "getDatePublication",
60                "chkControleLegalite" => "getChkControleLegalite",
61                "dateSignatureArrete" => "getDateSignatureArrete",
62                "nomSignataire" => "getNomSignataire",
63                "qualiteSignataire" => "getQualiteSignataire",
64                "chkDelegation" => "getChkDelegation",
65                "ap_numRue" => "getAp_numRue",
66                "ap_nomDeLaVoie" => "getAp_nomDeLaVoie",
67                "ap_codePostal" => "getAp_codePostal",
68                "ap_ville" => "getAp_ville",
69            ),
70        );
71    
72    
73      function instruction($id, &$db, $debug) {      function instruction($id, &$db, $debug) {
74          $this->constructeur($id, $db, $debug);          $this->constructeur($id, $db, $debug);
# Line 61  class instruction extends instruction_ge Line 98  class instruction extends instruction_ge
98              && $this->val[array_search("lu", $this->champs)]== "t") {              && $this->val[array_search("lu", $this->champs)]== "t") {
99              unset($this->actions_sup["lu"]);              unset($this->actions_sup["lu"]);
100          }          }
101                
102            //Si le document est déjà finalisé, on affiche uniquement le lien de
103            //dé-finalisation
104            $om_final_instruction = $this->getVal("om_final_instruction");
105            if ( isset($this->actions_sup["finalisation"]) &&
106                $om_final_instruction== "t" ){
107                    
108                //On cache le lien de finalisation et on affiche le bon lien pour l'édition
109                unset($this->actions_sup["finalisation"]);
110                $this->actions_sup["pdfetat"]["lien"] = "../spg/file.php?id=";
111                $this->actions_sup["pdfetat"]["id"] =
112                    "&obj=instruction&champ=om_fichier_instruction";
113            }
114            //Si le document n'est pas finalisé, on affiche uniquement le lien de
115            //finalisation
116            if ( isset($this->actions_sup["definalisation"]) &&
117                $om_final_instruction!= "t" ){
118                    
119                //On cache le lien de finalisation et on affiche le bon lien pour l'édition
120                unset($this->actions_sup["definalisation"]);
121                $this->actions_sup["pdfetat"]["lien"] = "../app/pdf_instruction.php?idx=";
122                $this->actions_sup["pdfetat"]["id"] = "";
123            }
124      }      }
125    
126      /**      /**
# Line 74  class instruction extends instruction_ge Line 134  class instruction extends instruction_ge
134              && $this->f->om_utilisateur["division"] != $this->getDivisionFromDossier()              && $this->f->om_utilisateur["division"] != $this->getDivisionFromDossier()
135              && $this->getParameter("maj") != 3) {              && $this->getParameter("maj") != 3) {
136              //              //
137                $this->addToLog("canAccess(): utilisateur instructeur sur un dossier d'une autre division", EXTRA_VERBOSE_MODE);
138              return false;              return false;
139          }          }
140          //          //
# Line 81  class instruction extends instruction_ge Line 142  class instruction extends instruction_ge
142      }      }
143    
144      /**      /**
145       * Cette méthode permet de récupérer la division d'un dossier       * Cette variable permet de stocker le résultat de la méthode
146         * getDivisionFromDossier() afin de ne pas effectuer le recalcul à chacun de
147         * ces appels.
148         * @var string Code de la division du dossier en cours
149         */
150        var $_division_from_dossier = NULL;
151    
152        /**
153         * Cette méthode permet de récupérer le code de division correspondant
154         * au dossier sur lequel on se trouve.
155         *
156         * @return string Code de la division du dossier en cours
157       */       */
158      function getDivisionFromDossier() {      function getDivisionFromDossier() {
159    
160            // Cette méthode peut être appelée plusieurs fois lors d'une requête.
161            // Pour éviter de refaire le traitement de recherche de la division
162            // alors on vérifie si nous ne l'avons pas déjà calculé.
163            if ($this->_division_from_dossier != NULL) {
164                // Logger
165                $this->addToLog("getDivisionFromDossier(): retour de la valeur déjà calculée - '".$this->_division_from_dossier."'", EXTRA_VERBOSE_MODE);
166                // On retourne la valeur déjà calculée
167                return $this->_division_from_dossier;
168            }
169    
170            // Par défaut, on définit la valeur du dossier à NULL
171            $dossier = NULL;
172            // Test sur le mode et le contexte du formulaire
173            if ($this->getParameter("maj") == 0
174                && ($this->getParameter("retourformulaire") == "dossier"
175                    || $this->getParameter("retourformulaire") == "dossier_instruction"
176                    || $this->getParameter("retourformulaire") == "dossier_instruction_mes_encours"
177                    || $this->getParameter("retourformulaire") == "dossier_instruction_tous_encours"
178                    || $this->getParameter("retourformulaire") == "dossier_instruction_mes_clotures"
179                    || $this->getParameter("retourformulaire") == "dossier_instruction_tous_clotures")) {
180                // Si on se trouve en mode AJOUT (seul mode où l'enregistrement
181                // n'existe pas en base de données) ET que nous nous trouvons
182                // dans le contexte d'un dossier d'instruction alors on récupère
183                // le numéro de dossier depuis le paramètre 'idxformulaire'
184                $dossier = $this->getParameter("idxformulaire");
185            } else {
186                // Sinon on récupère le numéro de dossier dans le champs dossier de
187                // l'enregistrement (en base de données)
188                $dossier = $this->getVal("dossier");
189            }
190    
191            // On appelle la méthode de la classe utils qui renvoi le code de la
192            // division d'un dossier, on la stocke pour ne pas refaire le calcul au
193            // prochain appel de cette méthode
194            $this->_division_from_dossier = $this->f->getDivisionFromDossier($dossier);
195            // Logger
196            $this->addToLog("getDivisionFromDossier(): retour de la valeur nouvellement calculée - '".$this->_division_from_dossier."'", EXTRA_VERBOSE_MODE);
197            // On retourne la valeur retournée
198            return $this->_division_from_dossier;
199    
200        }
201    
202        /**
203         * Cette méthode permet de récupérer le dossier d'autorisation d'un dossier
204         */
205        function getDossierAutorisationFromDossier($id) {
206          //          //
207          if (!isset($this->val[array_search("dossier", $this->champs)])) {          if (!isset($id)) {
208              return NULL;              return NULL;
209          }          }
210          //          //
211          $sql = "select division from ".DB_PREFIXE."dossier ";          $sql = "select dossier_autorisation from ".DB_PREFIXE."dossier ";
212          $sql .= " where dossier='".$this->val[array_search("dossier", $this->champs)]."'";          $sql .= " where dossier='".$id."'";
213          //          //
214          $division = $this->db->getOne($sql);          $dossier_autorisation = $this->db->getOne($sql);
215          $this->addToLog("getDivisionFromDossier(): db->getone(\"".$sql."\")", VERBOSE_MODE);          $this->addToLog("getDossierAutorisationFromDossier(): db->getone(\"".$sql."\")", VERBOSE_MODE);
216          database::isError($division);          database::isError($dossier_autorisation);
217          //          //
218          return $division;          return $dossier_autorisation;
219      }      }
220    
221      // }}}      // }}}
# Line 156  class instruction extends instruction_ge Line 275  class instruction extends instruction_ge
275          $form->setType('archive_date_chantier', 'hidden');            $form->setType('archive_date_chantier', 'hidden');  
276          //          //
277          $form->setType('numero_arrete', 'hidden');          $form->setType('numero_arrete', 'hidden');
278            //
279            $form->setType('code_barres', 'hidden');
280                    
281          //          //
282            $form->setType('archive_incompletude','hidden');
283            $form->setType('archive_evenement_suivant_tacite','hidden');
284            $form->setType('archive_evenement_suivant_tacite_incompletude','hidden');
285            $form->setType('archive_etat_pendant_incompletude','hidden');
286            $form->setType('archive_date_limite_incompletude','hidden');
287            $form->setType('archive_delai_incompletude','hidden');
288          if ($maj < 2) { //ajouter et modifier          if ($maj < 2) { //ajouter et modifier
289              $form->setType('destinataire', 'hidden');              $form->setType('destinataire', 'hidden');
290              $form->setType('lettretype', 'hiddenstatic');              $form->setType('lettretype', 'hiddenstatic');
# Line 199  class instruction extends instruction_ge Line 326  class instruction extends instruction_ge
326              $form->setType('bible', 'hidden');              $form->setType('bible', 'hidden');
327              $form->setType('bible2', 'hidden');              $form->setType('bible2', 'hidden');
328          }          }
329    
330            //Cache les champs pour la finalisation
331            $form->setType('om_fichier_instruction', 'hidden');
332            $form->setType('om_final_instruction', 'hidden');
333            // Cache le document arrêté
334            $form->setType('document_arrete', 'hidden');
335      }      }
336    
337      function setSelect(&$form, $maj,&$db,$debug) {      function setSelect(&$form, $maj,&$db,$debug) {
# Line 363  class instruction extends instruction_ge Line 496  class instruction extends instruction_ge
496                      WHERE defaut IS TRUE";                      WHERE defaut IS TRUE";
497                            
498              // Exécution de la requête              // Exécution de la requête
             $this->f->addToLog("deleteAllLienDossierInstructionTypeEvenementEvenement(): db->query(\"".$sql."\");", VERBOSE_MODE);  
499              $res = $this->f->db->query($sql);              $res = $this->f->db->query($sql);
500              $this->f->isDatabaseError();              $this->f->addToLog("deleteAllLienDossierInstructionTypeEvenementEvenement(): db->query(\"".$sql."\");", VERBOSE_MODE);
501                if ( database::isError($res)){
502                    die();
503                }
504                    
505              $row = $res->fetchrow(DB_FETCHMODE_ASSOC);              $row = $res->fetchrow(DB_FETCHMODE_ASSOC);
506                            
# Line 556  class instruction extends instruction_ge Line 691  class instruction extends instruction_ge
691              if ($row['date_conformite']!='') {              if ($row['date_conformite']!='') {
692                  $this->valF['archive_date_conformite']= $row['date_conformite'];                    $this->valF['archive_date_conformite']= $row['date_conformite'];  
693              }              }
694                if ($row['incompletude']!='') {
695                    $this->valF['archive_incompletude']= $row['incompletude'];  
696                }
697                if ($row['evenement_suivant_tacite']!='') {
698                    $this->valF['archive_evenement_suivant_tacite']= $row['evenement_suivant_tacite'];  
699                }
700                if ($row['evenement_suivant_tacite_incompletude']!='') {
701                    $this->valF['archive_evenement_suivant_tacite_incompletude']= $row['evenement_suivant_tacite_incompletude'];  
702                }
703                if ($row['etat_pendant_incompletude']!='') {
704                    $this->valF['archive_etat_pendant_incompletude']= $row['etat_pendant_incompletude'];  
705                }
706                if ($row['date_limite_incompletude']!='') {
707                    $this->valF['archive_date_limite_incompletude']= $row['date_limite_incompletude'];  
708                }
709                if ($row['delai_incompletude']!='') {
710                    $this->valF['archive_delai_incompletude']= $row['delai_incompletude'];  
711                }
712          }          }
713    
714            // Identifiant du type de courrier
715            $idTypeCourrier = '11';
716            $idCourrier = str_pad($this->valF["instruction"], 10, "0", STR_PAD_LEFT);
717            // Code barres
718            $this->valF["code_barres"] = $idTypeCourrier . $idCourrier;
719      }      }
720            
721      // Test si une restriction est valide      // Test si une restriction est valide
# Line 680  class instruction extends instruction_ge Line 839  class instruction extends instruction_ge
839           * Mise à jour des valeurs du dossier en fonction des valeurs calculées           * Mise à jour des valeurs du dossier en fonction des valeurs calculées
840           * par l'action           * par l'action
841           */           */
842            $this->getValEvenement();
843          // Initialisation          // Initialisation
844          $valF = "";          $valF = "";
845            // état de complétude actuel du dossier
846            $incompletude =  $this->dossierIncomplet();
847    
848            if($incompletude === FALSE) {
849                // Si l'événement d'instruction est de type incompletude
850                if($this->valEvenement['type'] == "incompletude") {
851                    // On marque le dossier en incomplétude pour application des actions
852                    $incompletude = TRUE;
853                    // Set du flag incomplétude de la table dossier
854                    $valF['incompletude'] = TRUE;
855                    // Enregistrement de l'état dans la variable provisoire
856                    $valF['etat_pendant_incompletude'] = $this->valF['archive_etat'];
857                }
858            } else {
859                // Si l'evenement d'instruction est de type retour ou contient une
860                // decision, on sort d'incomplétude
861                if($this->valEvenement['type'] == "retour" OR
862                   $this->valEvenement['avis_decision'] != NULL) {
863                    // On enlève la marque d'incomplétude pour application des actions
864                    $incompletude = FALSE;
865                    // On enlève le flag d'incomplétude sur l'enregistrement de la table dossier
866                    $valF['incompletude'] = FALSE;
867                     // Restauration de l'état depuis l'état provisoire
868                    $valF['etat'] = $this->valF['archive_etat_pendant_incompletude'];
869                    // On vide la variable provisoire ainsi que le délai de complétude
870                    // et la date limite de complétude
871                    $valF['etat_pendant_incompletude'] = NULL;
872                    $valF['delai_incompletude'] = NULL;
873                    $valF['date_limite_incompletude'] = NULL;
874                }
875            }
876          // Récupération des paramètres de l'action          // Récupération des paramètres de l'action
877          $sql = "SELECT * FROM ".DB_PREFIXE."action          $sql = "SELECT * FROM ".DB_PREFIXE."action
878          WHERE action='".$this->valF['action']."'";          WHERE action='".$this->valF['action']."'";
# Line 691  class instruction extends instruction_ge Line 882  class instruction extends instruction_ge
882              die($res->getMessage());              die($res->getMessage());
883          }          }
884          while ($row=& $res->fetchRow(DB_FETCHMODE_ASSOC)) {          while ($row=& $res->fetchRow(DB_FETCHMODE_ASSOC)) {
885    
886              // pour chacune des regles, on applique la regle              // pour chacune des regles, on applique la regle
             if($row['regle_etat']!=''){  
                 $valF['etat'] = $this->regle($row['regle_etat']);  
             }  
887              if($row['regle_delai']!=''){              if($row['regle_delai']!=''){
888                  $valF['delai'] = $this->regle($row['regle_delai']);                  $valF['delai'] = $this->regle($row['regle_delai']);
889              }              }
# Line 734  class instruction extends instruction_ge Line 923  class instruction extends instruction_ge
923              if($row['regle_date_conformite']!=''){              if($row['regle_date_conformite']!=''){
924                  $valF['date_conformite']= $this->regle($row['regle_date_conformite']);                  $valF['date_conformite']= $this->regle($row['regle_date_conformite']);
925              }              }
926              // Appel des méthode stockées dans le champ methode_trigger              if($row['regle_date_limite_incompletude']!=''){
927              if ($row['methode_trigger'] != "") {                  $valF['date_limite_incompletude']= $this->regle($row['regle_date_limite_incompletude']);
928                  foreach (explode(";", $row['methode_trigger']) as $methode) {              }
929                      if (method_exists($this, $methode)) {              if($row['regle_delai_incompletude']!=''){
930                          $this->$methode();                  $valF['delai_incompletude']= $this->regle($row['regle_delai_incompletude']);
931                      }              }
932                if($row['regle_etat']!=''){
933                    // Si on est dans le cas général ou qu'on est en incomplétude et
934                    // qu'on a un événement de type incomplétude alors : on stocke
935                    // l'état dans la variable courante
936                    if ($incompletude == FALSE OR $this->valEvenement['type'] == "incompletude") {
937                        $valF['etat'] = $this->regle($row['regle_etat']);
938                    } else {
939                        $valF['etat_pendant_incompletude'] = $this->regle($row['regle_etat']);
940                    }
941                }
942    
943                if($this->valEvenement['evenement_suivant_tacite'] != '') {
944                    // Si on est pas en incomplétude on stocke l'événement tacite
945                    //de l'événement dans la variable courante
946                    if ($incompletude == FALSE) {
947                        $valF['evenement_suivant_tacite'] = $this->valEvenement['evenement_suivant_tacite'];
948                    } else {
949                        $valF['evenement_suivant_tacite_incompletude'] = $this->valEvenement['evenement_suivant_tacite'];
950                  }                  }
951              }              }
952          }          }
# Line 802  class instruction extends instruction_ge Line 1009  class instruction extends instruction_ge
1009                  }                  }
1010              }              }
1011          } // fin de if ($this->f->getParameter('option_erp') != "")          } // fin de if ($this->f->getParameter('option_erp') != "")
     }      
1012    
1013            // Mise à jour des données du dossier d'autorisation
1014            require_once "../obj/dossier_autorisation.class.php";
1015            $da = new dossier_autorisation($this->getDossierAutorisationFromDossier($this->valF['dossier']), $this->db, DEBUG);
1016            $da->majDossierAutorisation();
1017            
1018            // Finalisation du document
1019            $this->finaliserAjouter();
1020        }    
1021        function triggermodifier($id,&$db,$val,$DEBUG) {
1022            // Ajout de l'arrêté dans la GED
1023            if ($this->valF['numero_arrete'] != $this->getVal('numero_arrete')
1024                AND $this->valF["om_fichier_instruction"] != "") {
1025                $file = $this->f->storage->get($this->valF["om_fichier_instruction"]);
1026                if(isset($file) and $file != null) {
1027                    // Récupération des métadonnées calculées après validation
1028                    $spe_metadata = $this->getMetadata("document_arrete");
1029                    $pdf_output = $file["file_content"];
1030                    //Métadonnées du document
1031                    $metadata = array(
1032                        'filename' => 'instruction_'.$this->valF[$this->clePrimaire].'.pdf',
1033                        'mimetype' => 'application/pdf',
1034                        'size' => strlen($pdf_output)
1035                    );
1036                    $metadata = array_merge($metadata, $spe_metadata);
1037                    
1038                    //Si le document a déjà été finalisé
1039                    //on met à jour le document mais pas son uid
1040                    if ( $this->getVal("document_arrete") != '' ){
1041                        $uid = $this->f->storage->update(
1042                            $this->getVal("document_arrete"), $pdf_output, $metadata);
1043                    }
1044                    //Sinon, on joute le document et on récupère son uid
1045                    else {
1046                        //Stockage du PDF
1047                        $uid = $this->f->storage->create($pdf_output, $metadata);
1048                    }
1049                    if($uid != OP_FAILURE) {
1050                        $this->valF["document_arrete"] = $uid;
1051                    }
1052                }
1053                
1054            }
1055        }
1056      function triggermodifierapres($id,&$db,$val,$DEBUG) {      function triggermodifierapres($id,&$db,$val,$DEBUG) {
1057          /**          /**
1058           * L'objectif ici est d'effectuer les recalculs de date dans le dossier           * L'objectif ici est d'effectuer les recalculs de date dans le dossier
# Line 830  class instruction extends instruction_ge Line 1079  class instruction extends instruction_ge
1079              die($res->getMessage());              die($res->getMessage());
1080          }          }
1081          while ($row=& $res->fetchRow(DB_FETCHMODE_ASSOC)) {          while ($row=& $res->fetchRow(DB_FETCHMODE_ASSOC)) {
1082              // Ajout d'un événement d'instruction              // Si la date de retour signature est éditée on vérifie si il existe un événement automatique
1083                if ($this->getVal('date_retour_signature') == "" AND
1084              if ($this->getVal('date_retour_signature') == "" AND $this->valF['date_retour_signature'] != "") {                  $this->valF['date_retour_signature'] != "" AND
1085                    $row['evenement_retour_signature'] != "") {
1086                  $new_instruction = new instruction("]", $db, $DEBUG);                  $new_instruction = new instruction("]", $db, $DEBUG);
1087                    // Création d'un tableau avec la liste des champs de l'instruction
1088                  foreach($new_instruction->champs as $champ) {                  foreach($new_instruction->champs as $champ) {
1089                      $valNewInstr[$champ] = "";                      $valNewInstr[$champ] = "";
1090                  }                  }
1091                    // Définition des valeurs de la nouvelle instruction
1092                  $valNewInstr["evenement"] = $row['evenement_retour_signature'];                  $valNewInstr["evenement"] = $row['evenement_retour_signature'];
1093                  $valNewInstr["destinataire"] = $this->valF['destinataire'];                  $valNewInstr["destinataire"] = $this->valF['destinataire'];
1094                  $valNewInstr["dossier"] = $this->valF['dossier'];                  $valNewInstr["dossier"] = $this->valF['dossier'];
1095                  $valNewInstr["date_evenement"] = date("d/m/Y");                  $valNewInstr["date_evenement"] = date("d/m/Y");
1096                  $new_instruction->ajouter($valNewInstr,$db, $DEBUG);                  $new_instruction->ajouter($valNewInstr,$db, $DEBUG);
1097              }              }
1098                // Si la date de retour AR est éditée on vérifie si il existe un événement automatique
1099                if ($this->getVal('date_retour_rar') == "" AND
1100                    $this->valF['date_retour_rar'] != "" AND
1101                    $row['evenement_retour_ar'] != "" ) {
1102                    $new_instruction = new instruction("]", $db, $DEBUG);
1103                    // Création d'un tableau avec la liste des champs de l'instruction
1104                    foreach($new_instruction->champs as $champ) {
1105                        $valNewInstr[$champ] = "";
1106                    }
1107                    // Définition des valeurs de la nouvelle instruction
1108                    $valNewInstr["evenement"] = $row['evenement_retour_ar'];
1109                    $valNewInstr["destinataire"] = $this->valF['destinataire'];
1110                    $valNewInstr["dossier"] = $this->valF['dossier'];
1111                    $valNewInstr["date_evenement"] = date("d/m/Y");
1112                    $new_instruction->ajouter($valNewInstr,$db, $DEBUG);
1113                }
1114          }          }
1115    
1116          // Récupération des paramètres de l'action          // Récupération des paramètres de l'action
# Line 950  class instruction extends instruction_ge Line 1217  class instruction extends instruction_ge
1217                              WHERE instruction.instruction = ".$this->valF['instruction'];                              WHERE instruction.instruction = ".$this->valF['instruction'];
1218                  $resArrete = $this->db->query($sqlArrete);                  $resArrete = $this->db->query($sqlArrete);
1219                  $this->f->addToLog("triggerModifierApres(): db->query(\"".$sqlArrete."\");", VERBOSE_MODE);                  $this->f->addToLog("triggerModifierApres(): db->query(\"".$sqlArrete."\");", VERBOSE_MODE);
1220                  $this->f->isDatabaseError();                  if ( database::isError($resArrete)){
1221                        die();
1222                    }
1223            
1224                  $rowArrete = $resArrete->fetchRow(DB_FETCHMODE_ASSOC);                  $rowArrete = $resArrete->fetchRow(DB_FETCHMODE_ASSOC);
1225                  $msgenque->setArreteInfo($rowArrete);                  $msgenque->setArreteInfo($rowArrete);
1226                  $msgenque->enqueueMessage($msgenque::$ARRETE_ENVOI);                                  $msgenque->enqueueMessage($msgenque::$ARRETE_ENVOI);                
1227              }              }
1228          }          }
1229    
1230            // Mise à jour des données du dossier d'autorisation
1231            require_once "../obj/dossier_autorisation.class.php";
1232            $da = new dossier_autorisation($this->getDossierAutorisationFromDossier($this->valF['dossier']), $this->db, DEBUG);
1233            $da->majDossierAutorisation();
1234      }      }
1235    
1236        /**
1237         * Méthode de récupération des métadonnées arrêtés dans la base de données,
1238         * les données sont stockés dans l'attribut $this->metadonneesArrete
1239         */
1240        function getArreteMetadata() {
1241            $sqlArrete = "SELECT    signataire_arrete.nom as \"nomsignataire\",
1242                                    signataire_arrete.qualite as \"qualitesignataire\",
1243                                    instruction.date_evenement as \"datesignaturearrete\",
1244                                    instruction.etat as \"decisionarrete\",
1245                                    dossier.terrain_adresse_voie_numero as \"ap_numrue\",
1246                                    dossier.complement as \"ap_nomdelavoie\",
1247                                    dossier.terrain_adresse_code_postal as \"ap_codepostal\",
1248                                    dossier.terrain_adresse_localite as \"ap_ville\"
1249                                FROM ".DB_PREFIXE."instruction
1250                                LEFT JOIN ".DB_PREFIXE."signataire_arrete ON
1251                                    instruction.signataire_arrete = signataire_arrete.signataire_arrete
1252                                LEFT JOIN ".DB_PREFIXE."dossier ON
1253                                    instruction.dossier = dossier.dossier
1254                                LEFT JOIN ".DB_PREFIXE."donnees_techniques ON
1255                                        donnees_techniques.dossier_instruction = dossier.dossier
1256                                WHERE instruction.instruction = ".$this->valF['instruction'];
1257            $resArrete = $this->db->query($sqlArrete);
1258            $this->f->addToLog("triggerModifierApres(): db->query(\"".$sqlArrete."\");", VERBOSE_MODE);
1259            if ( database::isError($resArrete)){
1260                die();
1261            }
1262    
1263            $this->metadonneesArrete = $resArrete->fetchRow(DB_FETCHMODE_ASSOC);
1264        }
1265    
1266        // Méthodes de récupération des métadonnées arrêté
1267        function getNumArrete() {
1268            return $this->valF['numero_arrete'];
1269        }
1270        function getSpecialiteArrete() {
1271            return "ADS";
1272        }
1273        function getDecisionArrete() {
1274            if (empty($this->metadonneesArrete)) {
1275                $this->getArreteMetadata();
1276            }
1277            return $this->metadonneesArrete["decisionarrete"];
1278        }
1279        function getChketatReglementaire() {
1280            return "";
1281        }
1282        function getChkNotification() {
1283            if( isset($this->valF["date_retour_rar"]) ) {
1284                return true;
1285            } else {
1286                return false;
1287            }
1288        }
1289        function getDateNotification() {
1290            return date("d/m/Y", strtotime($this->valF["date_retour_rar"]));
1291        }
1292        function getChkCreationdroit() {
1293            return "";
1294        }
1295        function getChkPublication() {
1296            return "";
1297        }
1298        function getDatePublication() {
1299            return "";
1300        }
1301        function getChkControleLegalite() {
1302            if( isset($this->valF["date_retour_controle_legalite"]) ) {
1303                return true;
1304            } else {
1305                return false;
1306            }
1307        }
1308        function getDateSignatureArrete() {
1309            return date("d/m/Y", strtotime($this->valF['date_retour_signature']));
1310        }
1311        function getNomSignataire() {
1312            if (empty($this->metadonneesArrete)) {
1313                $this->getArreteMetadata();
1314            }
1315            return $this->metadonneesArrete["nomsignataire"];
1316        }
1317        function getQualiteSignataire() {
1318            if (empty($this->metadonneesArrete)) {
1319                $this->getArreteMetadata();
1320            }
1321            return $this->metadonneesArrete["qualitesignataire"];
1322        }
1323        function getChkDelegation() {
1324            return "";
1325        }
1326        function getAp_numRue() {
1327            if (empty($this->metadonneesArrete)) {
1328                $this->getArreteMetadata();
1329            }
1330            return $this->metadonneesArrete["ap_numrue"];
1331        }
1332        function getAp_nomDeLaVoie() {
1333            if (empty($this->metadonneesArrete)) {
1334                $this->getArreteMetadata();
1335            }
1336            return $this->metadonneesArrete["ap_nomdelavoie"];
1337        }
1338        function getAp_codePostal() {
1339            if (empty($this->metadonneesArrete)) {
1340                $this->getArreteMetadata();
1341            }
1342            return $this->metadonneesArrete["ap_codepostal"];
1343        }
1344        function getAp_ville() {
1345            if (empty($this->metadonneesArrete)) {
1346                $this->getArreteMetadata();
1347            }
1348            return $this->metadonneesArrete["ap_ville"];
1349        }
1350    
1351        // Fin des méthodes de récupération des métadonnées
1352    
1353      function triggersupprimer($id,&$db,$val,$DEBUG) {      function triggersupprimer($id,&$db,$val,$DEBUG) {
1354          /**          /**
1355           * L'objectif ici est de repositionner les valeurs récupérées en           * L'objectif ici est de repositionner les valeurs récupérées en
# Line 1028  class instruction extends instruction_ge Line 1419  class instruction extends instruction_ge
1419          } else {          } else {
1420              $valF['date_conformite'] = NULL;              $valF['date_conformite'] = NULL;
1421          }          }
1422            if ($val['archive_incompletude'] != '') {
1423                $valF['incompletude'] = $val['archive_incompletude'];
1424            } else {
1425                $valF['incompletude'] = NULL;
1426            }
1427            if ($val['archive_evenement_suivant_tacite'] != '') {
1428                $valF['evenement_suivant_tacite'] = $val['archive_evenement_suivant_tacite'];
1429            } else {
1430                $valF['evenement_suivant_tacite'] = NULL;
1431            }
1432            if ($val['archive_evenement_suivant_tacite_incompletude'] != '') {
1433                $valF['evenement_suivant_tacite_incompletude'] = $val['archive_evenement_suivant_tacite_incompletude'];
1434            } else {
1435                $valF['evenement_suivant_tacite_incompletude'] = NULL;
1436            }
1437            if ($val['archive_etat_pendant_incompletude'] != '') {
1438                $valF['etat_pendant_incompletude'] = $val['archive_etat_pendant_incompletude'];
1439            } else {
1440                $valF['etat_pendant_incompletude'] = NULL;
1441            }
1442            if ($val['archive_date_limite_incompletude'] != '') {
1443                $valF['date_limite_incompletude'] = $val['archive_date_limite_incompletude'];
1444            } else {
1445                $valF['date_limite_incompletude'] = NULL;
1446            }
1447            if ($val['archive_delai_incompletude'] != '') {
1448                $valF['delai_incompletude'] = $val['archive_delai_incompletude'];
1449            } else {
1450                $valF['delai_incompletude'] = NULL;
1451            }
1452          // On met à jour le dossier          // On met à jour le dossier
1453          $cle = " dossier='".$val['dossier']."'";          $cle = " dossier='".$val['dossier']."'";
1454          $res = $db->autoExecute(DB_PREFIXE.'dossier', $valF, DB_AUTOQUERY_UPDATE, $cle);          $res = $db->autoExecute(DB_PREFIXE.'dossier', $valF, DB_AUTOQUERY_UPDATE, $cle);
# Line 1037  class instruction extends instruction_ge Line 1458  class instruction extends instruction_ge
1458          }          }
1459          // Affichage d'informations à l'utilisateur          // Affichage d'informations à l'utilisateur
1460          $this->addToMessage(_("Suppression de l'instruction")." [".$db->affectedRows()." "._('enregistrement')." "._('mis_a_jour')."]");          $this->addToMessage(_("Suppression de l'instruction")." [".$db->affectedRows()." "._('enregistrement')." "._('mis_a_jour')."]");
1461    
1462        }
1463    
1464        function triggersupprimerapres($id,&$db,$val,$DEBUG) {
1465    
1466            // Mise à jour des données du dossier d'autorisation
1467            require_once "../obj/dossier_autorisation.class.php";
1468            $da = new dossier_autorisation($this->getDossierAutorisationFromDossier($val["dossier"]), $this->db, DEBUG);
1469            $da->majDossierAutorisation();
1470      }      }
1471    
1472      // =============================================      // =============================================
# Line 1093  class instruction extends instruction_ge Line 1523  class instruction extends instruction_ge
1523      // Vérifie la restriction sur l'événement      // Vérifie la restriction sur l'événement
1524      function verifier($val = array(), &$db, $DEBUG){      function verifier($val = array(), &$db, $DEBUG){
1525          parent::verifier($val, $db, $DEBUG);          parent::verifier($val, $db, $DEBUG);
         //Récupère la restriction  
         $sql= "SELECT  
                   restriction  
               FROM  
                   ".DB_PREFIXE."evenement  
               WHERE  
                   evenement =".$this->valF['evenement'];  
1526    
1527          $res = $db->query($sql);          if ( isset($val['evenement']) && is_numeric($val['evenement'])){
1528          $this->f->addToLog("verifier(): db->query(\"".$sql."\");", VERBOSE_MODE);          //Récupère la restriction
1529          $this->f->isDatabaseError();              $sql= "SELECT
1530                                  restriction
1531          $row=& $res->fetchRow(DB_FETCHMODE_ASSOC);                    FROM
1532                          ".DB_PREFIXE."evenement
1533          //Test qu'une restriction est présente                    WHERE
1534          if ( isset($row['restriction']) && $row['restriction'] != "" ){                        evenement =".$val['evenement'];
1535                    
1536              //Test si la restriction est valide              $res = $db->query($sql);
1537              if ( !$this->restrictionIsValid($row['restriction']) ){              $this->addToLog("verifier(): db->query(\"".$sql."\");", VERBOSE_MODE);
1538                                if (database::isError($res)) {
1539                  $this->correct=false;                  die($res->getMessage());
1540                  $this->addToMessage(_("Restriction non valide"));              }        
1541              }              $row=& $res->fetchRow(DB_FETCHMODE_ASSOC);
1542              else {      
1543                //Test qu'une restriction est présente
1544                if ( isset($row['restriction']) && $row['restriction'] != "" ){
1545                                    
1546                  $this->correct = true;                  //Test si la restriction est valide
1547                    if ( !$this->restrictionIsValid($row['restriction']) ){
1548                        
1549                        $this->correct=false;
1550                        $this->addToMessage(_("Restriction non valide"));
1551                    }
1552                    else {
1553                        
1554                        $this->correct = true;
1555                    }
1556              }              }
1557          }          }
1558    
# Line 1129  class instruction extends instruction_ge Line 1563  class instruction extends instruction_ge
1563          $this->updateDate("date_envoi_controle_legalite");          $this->updateDate("date_envoi_controle_legalite");
1564          $this->updateDate("date_retour_controle_legalite");          $this->updateDate("date_retour_controle_legalite");
1565      }      }
1566        
1567      /**      /**
1568       * Méthode permettant de mettre à jour l'état d'un DA       * Méthode permettant de récupérer toutes les valeurs de l'événement
1569         * sélectionné après validation du formulaire d'instruction
1570         *
1571         * @return array() veleurs de l'événement lié
1572       */       */
1573      function majEtatDA() {  
1574          if($this->valF['action'] == 'accepter' AND $this->valF['avis_decision'] == 8) {      private function getValEvenement() {
1575              $val['etat_dossier_autorisation']=5;          if(!empty($this->valEvenement)) {
1576          } elseif($this->valF['action'] == 'accepter' AND $this->valF['avis_decision'] == 15) {              return $this->valEvenement;
             $val['etat_dossier_autorisation']=3;  
         } elseif($this->valF['action'] == 'accepter') {  
             $val['etat_dossier_autorisation']=2;  
         } elseif($this->valF['action'] == 'rejeter') {  
             $val['etat_dossier_autorisation']=4;  
         } elseif($this->valF['action'] == 'terminer') {  
             $val['etat_dossier_autorisation']=8;  
         } elseif($this->valF['action'] == 'majorer') {  
             $val['etat_dossier_autorisation']=6;  
1577          } else {          } else {
1578              $val['etat_dossier_autorisation']=7;              $sql = "SELECT * FROM ".DB_PREFIXE."evenement
1579          }                  WHERE evenement=".$this->valF['evenement'];
1580                        $res = $this->db->query($sql);
1581          //Récupération du numéro de dossier d'autorisation lié au dossier d'instruction              $this->addToLog("getValEvenement(): db->query(\"".$sql."\");", VERBOSE_MODE);
1582          $IDdossier_autorisation = $this->getDossierAutorisation($this->valF['dossier']);              if (database::isError($res)) {
1583                          die($res->getMessage());
1584          // Mis à jour de l'état du dossier d'autorisation              }
1585          require_once '../obj/dossier_autorisation.class.php';              $this->valEvenement = $res->fetchRow(DB_FETCHMODE_ASSOC);
1586          $dossier_autorisation = new dossier_autorisation($IDdossier_autorisation,$this->db,DEBUG);              return $this->valEvenement;
           
         $dossier_autorisation->val[array_search("etat_dossier_autorisation", $dossier_autorisation->champs)] = $val['etat_dossier_autorisation'];  
           
         //Récupération des données  
         $valDossierAutorisation = array();  
         for ( $i=0 ; $i<count($dossier_autorisation->champs); $i++){  
               
             $valDossierAutorisation[$dossier_autorisation->champs[$i]]=  
                 $dossier_autorisation->val[$i];  
1587          }          }
1588        }
1589    
1590          $dossier_autorisation->modifier($valDossierAutorisation, $this->db, DEBUG);      /**
1591         * Méthode permettant de savoir si le dossier lié à l'instruction à le flag
1592         * incompletude à true après validation du formulaire d'instruction
1593         *
1594         * @return boolean
1595         */
1596        private function dossierIncomplet() {
1597            $sql = "SELECT incompletude FROM ".DB_PREFIXE."dossier
1598                    WHERE dossier='".$this->valF['dossier']."'";
1599            $incompletude = $this->db->getOne($sql);
1600            $this->addToLog("dossierIncomplet(): db->query(\"".$sql."\");", VERBOSE_MODE);
1601            if (database::isError($incompletude)) {
1602                die($incompletude->getMessage());
1603            }
1604            if ($incompletude == 't') {
1605                return true;
1606            } else {
1607                return false;
1608            }
1609      }      }
1610            
1611     /**      /**
1612      * Méthode permettant de mettre à jour les données d'un DA       * Finalisation des documents.  
1613      */       */
1614      function majDataDA() {      function finaliser( $champ = '', $status, $sousform){
1615            
1616          //Récupération du numéro de dossier d'autorisation lié au dossier d'instruction          //Si on finalise le document
1617          $IDdossier_autorisation = $this->getDossierAutorisation($this->valF['dossier']);          if ( $status == 1 ){
         require_once '../obj/dossier_autorisation.class.php';  
         $dossier_autorisation = new dossier_autorisation($IDdossier_autorisation,$this->db,DEBUG);  
           
         require_once '../obj/dossier.class.php';  
         $dossier = new dossier($this->valF['dossier'],$this->db,DEBUG);  
           
         //Récupération des données  
         $valDossierAutorisation = array();  
         for ( $i=0 ; $i<count($dossier_autorisation->champs); $i++){  
1618                            
1619              if ( array_search($dossier_autorisation->champs[$i], $dossier->champs) ){              //Génération du PDF
1620                                $_GET['output'] = "string";
1621                  $valDossierAutorisation[$dossier_autorisation->champs[$i]]=$dossier->getVal($dossier_autorisation->champs[$i]);              $f = $this->f;
1622                include '../app/pdf_instruction.php';
1623                
1624                //Métadonnées du document
1625                $metadata = array(
1626                    'filename' => 'instruction_'.$idx.'.pdf',
1627                    'mimetype' => 'application/pdf',
1628                    'size' => strlen($pdf_output)
1629                );
1630    
1631                // Récupération des métadonnées calculées après validation
1632                $spe_metadata = $this->getMetadata("om_fichier_instruction");
1633    
1634                $metadata = array_merge($metadata, $spe_metadata);
1635                //Si le document a déjà été finalisé
1636                //on met à jour le document mais pas son uid
1637                if ( $this->getVal("om_fichier_instruction") != '' ){
1638                    $uid = $this->f->storage->update(
1639                        $this->getVal("om_fichier_instruction"), $pdf_output, $metadata);
1640              }              }
1641                //Sinon, on joute le document et on récupère son uid
1642              else {              else {
1643                  $valDossierAutorisation[$dossier_autorisation->champs[$i]]=                  //Stockage du PDF
1644                  $dossier_autorisation->val[$i];                  $uid = $this->f->storage->create($pdf_output, $metadata);
1645                }
1646            }
1647            else {
1648                //Récupération de l'uid du document finalisé
1649                $uid = $this->getVal("om_fichier_instruction");
1650                
1651                //On dé-finalise avant de finaliser
1652                if ( $uid == '' ){
1653                    return -1;
1654              }              }
1655          }          }
1656    
1657          $dossier_autorisation->modifier($valDossierAutorisation, $this->db, DEBUG);          //Mise à jour des données
1658                    if ( $uid != '' ){
1659          // Suppression du liens entre les lots et le DA              // Logger
1660          $valLot['dossier_autorisation'] = NULL;              $this->addToLog("finaliser() - begin", EXTRA_VERBOSE_MODE);
1661          $this->db->autoExecute(DB_PREFIXE."lot", $valLot, DB_AUTOQUERY_UPDATE, "dossier_autorisation='".$IDdossier_autorisation."'");              // Recuperation de la valeur de la cle primaire de l'objet
1662                        if($this->getVal($this->clePrimaire) != '')
1663          // Liaison des lots du DI avec le DA                  $id = $this->getVal($this->clePrimaire);
1664          $sqlLot = "SELECT lot FROM ".DB_PREFIXE."lien_dossier_lot WHERE dossier='".$this->valF['dossier']."'";              else
1665          $res = $this->db->query($sqlLot);                  $id=$this->id;
1666          $this->addToLog($sqlLot);  
1667          $this->f->isDatabaseError();              //Tableau contenant le lien vers le PDF et lien du portlet pour la mise
1668          while($rowLot = $res->fetchRow(DB_FETCHMODE_ASSOC)) {              //à jour de l'interface
1669              $valLot['dossier_autorisation'] = $IDdossier_autorisation;              if ( $status == 0 ){
1670              $this->db->autoExecute(DB_PREFIXE."lot", $valLot, DB_AUTOQUERY_UPDATE, "lot=".$rowLot['lot']);                  $lien = '../app/pdf_instruction.php?idx='.$id;
1671                }
1672                else {
1673                    $lien = '../spg/file.php?obj=instruction&'.
1674                        'champ=om_fichier_instruction&id='.$id;
1675                }
1676    
1677               $retour = array(
1678                    "portlet"=> "<a href=\"#\" onclick=\"finalizeDocument(".
1679                        $id.", 'instruction', '".$sousform."', ".(($status==0)?1:0).")\">
1680                        <span class=\"om-prev-icon om-icon-16 om-icon-fix delete-16 "
1681                        .(($status==1)?"de":"")."finalise\" title=\"".
1682                        (($status==1)?_("Reprendre la redaction du document"):_("Finaliser le document"))."\">".
1683                        (($status==1)?_("Reprendre la redaction du document"):_("Finaliser le document"))."</span>
1684                        </a>",
1685                    "pdf" => $lien
1686                );
1687    
1688                foreach ( $this->champs as $key=>$value )
1689                    $val[$value] = $this->val[$key];
1690                $val['date_evenement']=$this->dateDBToForm($val['date_evenement']);
1691                $val['archive_date_complet']=$this->dateDBToForm($val['archive_date_complet']);
1692                $val['archive_date_rejet']=$this->dateDBToForm($val['archive_date_rejet']);
1693                $val['archive_date_limite']=$this->dateDBToForm($val['archive_date_limite']);
1694                $val['archive_date_notification_delai']=$this->dateDBToForm($val['archive_date_notification_delai']);
1695                $val['archive_date_decision']=$this->dateDBToForm($val['archive_date_decision']);
1696                $val['archive_date_validite']=$this->dateDBToForm($val['archive_date_validite']);
1697                $val['archive_date_achevement']=$this->dateDBToForm($val['archive_date_achevement']);
1698                $val['archive_date_chantier']=$this->dateDBToForm($val['archive_date_chantier']);
1699                $val['archive_date_conformite']=$this->dateDBToForm($val['archive_date_conformite']);
1700                $val['archive_date_dernier_depot']=$this->dateDBToForm($val['archive_date_dernier_depot']);
1701                $val['archive_date_limite_incompletude']=$this->dateDBToForm($val['archive_date_limite_incompletude']);
1702                $val['date_finalisation_courrier']=$this->dateDBToForm($val['date_finalisation_courrier']);
1703                $val['date_envoi_signature']=$this->dateDBToForm($val['date_envoi_signature']);
1704                $val['date_retour_signature']=$this->dateDBToForm($val['date_retour_signature']);
1705                $val['date_envoi_rar']=$this->dateDBToForm($val['date_envoi_rar']);
1706                $val['date_retour_rar']=$this->dateDBToForm($val['date_retour_rar']);
1707                $val['date_envoi_controle_legalite']=$this->dateDBToForm($val['date_envoi_controle_legalite']);
1708                $val['date_retour_controle_legalite']=$this->dateDBToForm($val['date_retour_controle_legalite']);
1709                
1710                $this->setvalF($val);
1711    
1712                // Verification de la validite des donnees
1713                $this->verifier($this->val, $this->db, DEBUG);
1714                // Verification du verrou
1715                $this->testverrou();
1716                // Si les verifications precedentes sont correctes, on procede a
1717                // la modification, sinon on ne fait rien et on retourne une erreur
1718                if ($this->correct) {
1719                    // Execution du trigger 'before' specifique au MODE 'update'
1720                    $this->triggermodifier( $id, $this->db, $this->val, DEBUG);
1721                    $valF = array(
1722                            "om_final_instruction"=> ($status==1)?TRUE:FALSE,
1723                            "om_fichier_instruction"=>$uid);
1724                    // Execution de la requête de modification des donnees de l'attribut
1725                    // valF de l'objet dans l'attribut table de l'objet
1726                    $res = $this->db->autoExecute(DB_PREFIXE.$this->table, $valF,
1727                        DB_AUTOQUERY_UPDATE, $this->getCle($id));
1728                     $this->addToLog("finaliser() : db->autoExecute(\"".DB_PREFIXE.$this->table."\", ".print_r($valF, true).", DB_AUTOQUERY_UPDATE, \"".$this->getCle($id)."\")", VERBOSE_MODE);
1729                    // Si une erreur survient
1730                    if (database::isError($res)) {
1731                        // Appel de la methode de recuperation des erreurs
1732                        $this->erreur_db($res->getDebugInfo(), $res->getMessage(), '');
1733                    } else {
1734                        // Log
1735                        $this->addToLog(_("Requete executee"), VERBOSE_MODE);
1736                        // Log
1737                        $message = _("Enregistrement")."&nbsp;".$id."&nbsp;";
1738                        $message .= _("de la table")."&nbsp;\"".$this->table."\"&nbsp;";
1739                        $message .= "[&nbsp;".$this->db->affectedRows()."&nbsp;";
1740                        $message .= _("enregistrement(s) mis a jour")."&nbsp;]";
1741                        $this->addToLog($message, VERBOSE_MODE);
1742                        // Mise en place du verrou pour ne pas finaliser plusieurs fois
1743                        // le meme document
1744                        $this->verrouille();
1745                        // Execution du trigger 'after' specifique au MODE 'update'
1746                        //$this->triggermodifierapres($id, $this->db, $val, DEBUG);
1747    
1748                        return $retour;
1749                    }
1750                } else {
1751                    // Message d'echec (saut d'une ligne supplementaire avant le
1752                    // message pour qu'il soit mis en evidence)
1753                    $this->addToLog("Finalisation non enregistree");
1754                    return -1;
1755                }
1756            }
1757            // Si le document n'a pas été stocké
1758            else{
1759                return -1;
1760          }          }
1761      }      }
1762        
1763      // Récupération de l'identifiant du dossier d'autorisation lié au dossier d'instruction      /**
1764      function getDossierAutorisation($dossier_instruction){       * Finalisation du document lors de l'ajout d'une instruction
1765         *
1766         */
1767        function finaliserAjouter(){
1768    
1769            //Génération du PDF
1770            $_GET['output'] = "string";
1771            $_GET['obj'] = "instruction";
1772            $_GET['idx'] = $this->valF[$this->clePrimaire];
1773            $f = $this->f;
1774            include '../app/pdf_instruction.php';
1775                    
1776          $sql = "SELECT          //Métadonnées du document
1777                      dossier_autorisation.dossier_autorisation          $metadata = array(
1778                  FROM              'filename' => 'instruction_'.$idx.'.pdf',
1779                      ".DB_PREFIXE."dossier_autorisation              'mimetype' => 'application/pdf',
1780                  LEFT JOIN              'size' => strlen($pdf_output)
1781                      ".DB_PREFIXE."dossier          );
1782                      ON  
1783                          dossier_autorisation.dossier_autorisation = dossier.dossier_autorisation          // Récupération des métadonnées calculées après validation
1784                  WHERE          $spe_metadata = $this->getMetadata("om_fichier_instruction");
1785                      dossier.dossier = '".$dossier_instruction."'";  
1786                  $metadata = array_merge($metadata, $spe_metadata);
1787          $IDdossier_autorisation = $this->db->getOne($sql);  
1788          $this->addToLog("getDossierAutorisation(): db->getone(\"".$sql."\")", VERBOSE_MODE);          //On ajoute le document et on récupère son uid
1789          database::isError($IDdossier_autorisation);          $uid = $this->f->storage->create($pdf_output, $metadata);
1790    
1791            //Mise à jour des données
1792            if ( $uid != '' ){
1793                // Logger
1794                $this->addToLog("finaliserAjouter() - begin", EXTRA_VERBOSE_MODE);
1795    
1796                $valF = array(
1797                        "om_final_instruction"=> TRUE,
1798                        "om_fichier_instruction"=>$uid);
1799    
1800                // Execution de la requête de modification des donnees de l'attribut
1801                // valF de l'objet dans l'attribut table de l'objet
1802                $res = $this->db->autoExecute(DB_PREFIXE.$this->table, $valF,
1803                    DB_AUTOQUERY_UPDATE, $this->getCle($idx));
1804                 $this->addToLog("finaliserAjouter() : db->autoExecute(\"".DB_PREFIXE.$this->table."\", ".print_r($valF, true).", DB_AUTOQUERY_UPDATE, \"".$this->getCle($idx)."\")", VERBOSE_MODE);
1805                // Si une erreur survient
1806                if (database::isError($res)) {
1807                    // Appel de la methode de recuperation des erreurs
1808                    $this->erreur_db($res->getDebugInfo(), $res->getMessage(), '');
1809                } else {
1810                    // Log
1811                    $this->addToLog(_("Requete executee"), VERBOSE_MODE);
1812                    // Log
1813                    $message = _("Enregistrement")."&nbsp;".$idx."&nbsp;";
1814                    $message .= _("de la table")."&nbsp;\"".$this->table."\"&nbsp;";
1815                    $message .= "[&nbsp;".$this->db->affectedRows()."&nbsp;";
1816                    $message .= _("enregistrement(s) mis a jour")."&nbsp;]";
1817                    $this->addToLog($message, VERBOSE_MODE);
1818                }
1819            }
1820        }
1821    
1822        /**
1823         * Récupération du numéro de dossier d'instruction à ajouter aux métadonnées
1824         * @return [type] [description]
1825         */
1826        protected function getDossier() {
1827            if(empty($this->specificMetadata)) {
1828                $this->getSpecificMetadata();
1829            }
1830            return $this->specificMetadata->dossier;
1831        }
1832        /**
1833         * Récupération du numéro de dossier d'autorisation à ajouter aux métadonnées
1834         * @return [type] [description]
1835         */
1836        protected function getDossierAutorisation() {
1837            if(empty($this->specificMetadata)) {
1838                $this->getSpecificMetadata();
1839            }
1840            return $this->specificMetadata->dossier_autorisation;
1841        }
1842        /**
1843         * Récupération de la date de demande initiale du dossier à ajouter aux métadonnées
1844         * @return [type] [description]
1845         */
1846        protected function getDateDemandeInitiale() {
1847            if(empty($this->specificMetadata)) {
1848                $this->getSpecificMetadata();
1849            }
1850            return $this->specificMetadata->date_demande_initiale;
1851        }
1852        /**
1853         * Récupération du type de dossier d'instruction à ajouter aux métadonnées
1854         * @return [type] [description]
1855         */
1856        protected function getDossierInstructionType() {
1857            if(empty($this->specificMetadata)) {
1858                $this->getSpecificMetadata();
1859            }
1860            return $this->specificMetadata->dossier_instruction_type;
1861        }
1862        /**
1863         * Récupération du statut du dossier d'autorisation à ajouter aux métadonnées
1864         * @return [type] [description]
1865         */
1866        protected function getStatut() {
1867            if(empty($this->specificMetadata)) {
1868                $this->getSpecificMetadata();
1869            }
1870            return $this->specificMetadata->statut;
1871        }
1872        /**
1873         * Récupération du type de dossier d'autorisation à ajouter aux métadonnées
1874         * @return [type] [description]
1875         */
1876        protected function getDossierAutorisationType() {
1877            if(empty($this->specificMetadata)) {
1878                $this->getSpecificMetadata();
1879            }
1880            return $this->specificMetadata->dossier_autorisation_type;
1881        }
1882        /**
1883         * Récupération de la date d'ajout de document à ajouter aux métadonnées
1884         * @return [type] [description]
1885         */
1886        protected function getDateEvenement() {
1887            return date("d/m/Y");
1888        }
1889        /**
1890         * Récupération du groupe d'instruction à ajouter aux métadonnées
1891         * @return string Groupe d'instruction
1892         */
1893        protected function getGroupeInstruction() {
1894            if(empty($this->specificMetadata)) {
1895                $this->getSpecificMetadata();
1896            }
1897            return $this->specificMetadata->groupe_instruction;
1898        }
1899    
1900        /**
1901         * Cette méthode permet de stocker en attribut toutes les métadonnées
1902         * nécessaire à l'ajout d'un document.
1903         */
1904        public function getSpecificMetadata() {
1905            if (isset($this->valF["dossier"]) AND $this->valF["dossier"] != "") {
1906                $dossier = $this->valF["dossier"];
1907            } else {
1908                $dossier = $this->getVal("dossier");
1909            }
1910            //Requête pour récupérer les informations essentiels sur le dossier d'instruction
1911            $sql = "SELECT dossier.dossier as dossier,
1912                            dossier_autorisation.dossier_autorisation as dossier_autorisation,
1913                            to_char(dossier.date_demande, 'YYYY/MM') as date_demande_initiale,
1914                            dossier_instruction_type.code as dossier_instruction_type,
1915                            etat_dossier_autorisation.libelle as statut,
1916                            dossier_autorisation_type.code as dossier_autorisation_type,
1917                            groupe.code as groupe_instruction
1918                    FROM ".DB_PREFIXE."dossier
1919                        LEFT JOIN ".DB_PREFIXE."dossier_instruction_type  
1920                            ON dossier.dossier_instruction_type = dossier_instruction_type.dossier_instruction_type
1921                        LEFT JOIN ".DB_PREFIXE."dossier_autorisation
1922                            ON dossier.dossier_autorisation = dossier_autorisation.dossier_autorisation
1923                        LEFT JOIN ".DB_PREFIXE."etat_dossier_autorisation
1924                            ON  dossier_autorisation.etat_dossier_autorisation = etat_dossier_autorisation.etat_dossier_autorisation
1925                        LEFT JOIN ".DB_PREFIXE."dossier_autorisation_type_detaille
1926                            ON dossier_autorisation.dossier_autorisation_type_detaille = dossier_autorisation_type_detaille.dossier_autorisation_type_detaille
1927                        LEFT JOIN ".DB_PREFIXE."dossier_autorisation_type
1928                            ON dossier_autorisation_type_detaille.dossier_autorisation_type = dossier_autorisation_type.dossier_autorisation_type
1929                        LEFT JOIN ".DB_PREFIXE."groupe
1930                            ON dossier_autorisation_type.groupe = groupe.groupe
1931                    WHERE dossier.dossier = '".$dossier."'";
1932            $res = $this->db->query($sql);
1933            $this->f->addToLog("obj/document_numerise.class.php : db->query(".$sql.")", VERBOSE_MODE);
1934            if ( database::isError($res)){
1935                die();
1936            }
1937                    
1938          return $IDdossier_autorisation;          //Le résultat est récupéré dans un objet
1939            $row =& $res->fetchRow(DB_FETCHMODE_OBJECT);
1940    
1941            //Si il y a un résultat
1942            if ($row !== null) {
1943    
1944                //Alors on créé l'objet dossier_instruction
1945                $this->specificMetadata = $row;
1946    
1947            }
1948      }      }
1949  }// fin classe  }// fin classe
1950  ?>  ?>

Legend:
Removed from v.1618  
changed lines
  Added in v.1946

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26