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

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

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

revision 1978 by vpihour, Mon Jun 3 16:53:37 2013 UTC revision 2016 by softime, Tue Jun 18 16:28:47 2013 UTC
# Line 10  class document_numerise extends document Line 10  class document_numerise extends document
10      var $metadata = array(      var $metadata = array(
11          "uid" => array(          "uid" => array(
12              "dossier" => "getDossier",              "dossier" => "getDossier",
13              "dossier_autorisation" => "getDossierAutorisation",              "dossier_version" => "getDossierVersion",
14              "date_demande_initiale" => "getDateDemandeInitiale",              "numDemandeAutor" => "getDossierAutorisation",
15              "dossier_instruction_type" => "getDossierInstructionType",              "anneemoisDemandeAutori" => "getDateDemandeInitiale",
16              "statut" => "getStatut",              "typeInstructionAutorisation" => "getDossierInstructionType",
17              "dossier_autorisation_type" => "getDossierAutorisationType",              "statutAutorisation" => "getStatut",
18              "date_creation" => "getDateEvenement",              "typeAutorisation" => "getDossierAutorisationType",
19                "dateEvenementDocument" => "getDateEvenement",
20              "filename" => "getFilename",              "filename" => "getFilename",
21              "groupe_instruction" => 'getGroupeInstruction',              "groupeInstruction" => 'getGroupeInstruction',
22                "title" => 'getTypeDoc',
23            ),
24            "document_arrete" => array(
25                "numArrete" => "getNumArrete",
26                "specialiteArrete" => "getSpecialiteArrete",
27                "decisionArrete" => "getDecisionArrete",
28                "chketatReglementaire" => "getChketatReglementaire",
29                "chkNotification" => "getChkNotification",
30                "dateNotification" => "getDateNotification",
31                "chkCreationdroit" => "getChkCreationdroit",
32                "chkPublication" => "getChkPublication",
33                "datePublication" => "getDatePublication",
34                "chkControleLegalite" => "getChkControleLegalite",
35                "dateSignatureArrete" => "getDateSignatureArrete",
36                "nomSignataire" => "getNomSignataire",
37                "qualiteSignataire" => "getQualiteSignataire",
38                "chkDelegation" => "getChkDelegation",
39                "ap_numRue" => "getAp_numRue",
40                "ap_nomDeLaVoie" => "getAp_nomDeLaVoie",
41                "ap_codePostal" => "getAp_codePostal",
42                "ap_ville" => "getAp_ville",
43          ),          ),
44      );      );
45    
# Line 127  class document_numerise extends document Line 149  class document_numerise extends document
149    
150          //Génération automatique nom du fichier          //Génération automatique nom du fichier
151          $this->valF['nom_fichier'] = $this->generateFilename($this->valF["date_creation"], $document_numerise_type);          $this->valF['nom_fichier'] = $this->generateFilename($this->valF["date_creation"], $document_numerise_type);
152    
153            // Si c'est un arrêté alors on ajoute les métadonnées pour ce type de document
154            if ($this->get_document_numerise_type_categorie_libelle($val["document_numerise_type"]) == 'Arrêté') {
155    
156              // rassemble les elément des deux tableau
157              $this->metadata['uid'] = array_merge($this->metadata['uid'], $this->metadata['document_arrete']);
158            }
159        }
160    
161        /**
162         * Permet de mettre à jour un champs dans la table instruction sans passer par ses triggers
163         * @param  string $uid Identifiant du fichier
164         */
165        private function updateInstructionAutoExecute($uid) {
166    
167          // valeurs à mettre à jour
168          $val = array("document_arrete"=>$uid);
169          // met à jour la table instruction sans passer par ses triggers
170          $res = $this->db->autoExecute(DB_PREFIXE."instruction", $val, DB_AUTOQUERY_UPDATE,"instruction=".$this->getLastInstruction($this->valF['dossier']));
171          // Exécution du traitement
172          $this->f->addToLog("updateInstructionDocumentArrete() : db->autoExecute(".$res.")", VERBOSE_MODE);
173          if (database::isError($res)) {
174              die();
175          }
176    
177        }
178    
179        /**
180         * Permet d’effectuer des actions après l’insertion des données dans la base
181         */
182        function triggerajouterapres($id,&$db,$val,$DEBUG) {
183    
184          // Si c'est un arrêté alors alors on met à jour la table instruction
185          if ($this->get_document_numerise_type_categorie_libelle($val["document_numerise_type"]) == 'Arrêté') {
186                    
187            // Met à jour la table instruction
188            $this->updateInstructionAutoExecute($this->valF['uid']);
189          }
190    
191      }      }
192    
193      /**      /**
# Line 189  class document_numerise extends document Line 249  class document_numerise extends document
249          }          }
250      }      }
251    
252        // {{{
253        // Méthodes de récupération des métadonnées document
254      /**      /**
255       * Récupération du numéro de dossier d'instruction à ajouter aux métadonnées       * Récupération du numéro de dossier d'instruction à ajouter aux métadonnées
256       * @return [type] [description]       * @return [type] [description]
# Line 200  class document_numerise extends document Line 262  class document_numerise extends document
262          return $this->specificMetadata->dossier;          return $this->specificMetadata->dossier;
263      }      }
264      /**      /**
265         * Récupération la version du dossier d'instruction à ajouter aux métadonnées
266         * @return int Version
267         */
268        protected function getDossierVersion() {
269            if(empty($this->specificMetadata)) {
270                $this->getSpecificMetadata();
271            }
272            return $this->specificMetadata->version;
273        }
274        /**
275       * Récupération du numéro de dossier d'autorisation à ajouter aux métadonnées       * Récupération du numéro de dossier d'autorisation à ajouter aux métadonnées
276       * @return [type] [description]       * @return [type] [description]
277       */       */
# Line 273  class document_numerise extends document Line 345  class document_numerise extends document
345          }          }
346          return $this->specificMetadata->groupe_instruction;          return $this->specificMetadata->groupe_instruction;
347      }      }
   
348      /**      /**
349       * Récupération du type de document à ajouter aux métadonnées       * Récupération du libellé du type du document à ajouter aux métadonnées
350       * @return [type] [description]       * @return string Groupe d'instruction
351       */       */
352      protected function getCodeDocumentType() {      protected function getTypeDoc() {
353          $sql = "SELECT libelle FROM document_numerise_type WHERE          //Requête sql
354          document_numerise_type = ".$this->valF["document_numerise_type"];          $sql = "SELECT libelle
355          $code = $this->db->getOne($sql);                  FROM ".DB_PREFIXE."document_numerise_type
356                    WHERE document_numerise_type = ".$this->valF["document_numerise_type"];
357            $document_numerise_type_libelle = $this->db->getOne($sql);
358            $this->addToLog("db->getone(\"".$sql."\");", VERBOSE_MODE);
359            $this->f->addToLog("getTypeDoc() : db->getOne(".$sql.")", VERBOSE_MODE);
360            if (database::isError($document_numerise_type_libelle)) {
361                die();
362            }
363    
364          return $this->valF["nom_fichier"];          //Retourne le code du type de document
365            return $document_numerise_type_libelle;
366      }      }
367        // Fin des méthodes de récupération des métadonnées
368        // }}}
369    
370        // {{{
371        // Méthodes de récupération des métadonnées arrêté
372        /**
373         * @return string Retourne le numéro d'arrêté
374         */
375        function getNumArrete() {
376            return '';
377        }
378        /**
379         * @return string ads
380         */
381        function getSpecialiteArrete() {
382            return "ADS";
383        }
384        /**
385         * @return string decision
386         */
387        function getDecisionArrete() {
388            if (empty($this->metadonneesArrete)) {
389                $this->getArreteMetadata();
390            }
391            return $this->metadonneesArrete["decisionarrete"];
392        }
393        /**
394         * @return chaîne vide
395         */
396        function getChketatReglementaire() {
397            return 'true';
398        }
399        /**
400         * @return boolean de notification au pétitionnaire
401         */
402        function getChkNotification() {
403            return 'true';
404        }
405        /**
406         * @return date de notification au pétitionnaire
407         */
408        function getDateNotification() {
409            if (empty($this->metadonneesArrete)) {
410                $this->getArreteMetadata();
411            }
412            return $this->metadonneesArrete["datenotification"];
413        }
414        /**
415         * @return chaîne vide
416         */
417        function getChkCreationdroit() {
418            return "true";
419        }
420        /**
421         * @return chaîne vide
422         */
423        function getChkPublication() {
424            return "true";
425        }
426        /**
427         * @return chaîne vide
428         */
429        function getDatePublication() {
430            return "";
431        }
432        /**
433         * @return boolean check si le document est passé au contrôle de légalité
434         */
435        function getChkControleLegalite() {
436            return 'true';
437        }
438        /**
439         * @return date de signature de l'arrêté
440         */
441        function getDateSignatureArrete() {
442            if (empty($this->metadonneesArrete)) {
443                $this->getArreteMetadata();
444            }
445            return $this->metadonneesArrete["datesignaturearrete"];
446        }
447        /**
448         * @return string nom du signataire
449         */
450        function getNomSignataire() {
451            if (empty($this->metadonneesArrete)) {
452                $this->getArreteMetadata();
453            }
454            return $this->metadonneesArrete["nomsignataire"];
455        }
456        /**
457         * @return string qualité du signataire
458         */
459        function getQualiteSignataire() {
460            if (empty($this->metadonneesArrete)) {
461                $this->getArreteMetadata();
462            }
463            return $this->metadonneesArrete["qualitesignataire"];
464        }
465        /**
466         * @return string chaîne vide
467         */
468        function getChkDelegation() {
469            return "true";
470        }
471        /**
472         * @return string numéro du terrain
473         */
474        function getAp_numRue() {
475            if (empty($this->metadonneesArrete)) {
476                $this->getArreteMetadata();
477            }
478            return $this->metadonneesArrete["ap_numrue"];
479        }
480        /**
481         * @return string nom de la rue du terrain
482         */
483        function getAp_nomDeLaVoie() {
484            if (empty($this->metadonneesArrete)) {
485                $this->getArreteMetadata();
486            }
487            return $this->metadonneesArrete["ap_nomdelavoie"];
488        }
489        /**
490         * @return string code postal du terrain
491         */
492        function getAp_codePostal() {
493            if (empty($this->metadonneesArrete)) {
494                $this->getArreteMetadata();
495            }
496            return $this->metadonneesArrete["ap_codepostal"];
497        }
498        /**
499         * @return string ville du terrain
500         */
501        function getAp_ville() {
502            if (empty($this->metadonneesArrete)) {
503                $this->getArreteMetadata();
504            }
505            return $this->metadonneesArrete["ap_ville"];
506        }
507    
508        // Fin des méthodes de récupération des métadonnées
509        // }}}
510    
511      /**      /**
512       * Génère le nom du fichier avec les information du formulaire       * Génère le nom du fichier avec les information du formulaire
# Line 325  class document_numerise extends document Line 547  class document_numerise extends document
547          return $document_numerise_type_code;          return $document_numerise_type_code;
548      }      }
549    
550        /**
551         * Permet de récupérer le libellé de la catégorie du type de document
552         * @param  int $document_numerise_type    Clé primaire d'un donnée de document_numerise_type
553         * @return string                         Libellé de la catégorie du type de document
554         */
555        private function get_document_numerise_type_categorie_libelle($document_numerise_type) {
556    
557          // Requête sql
558          $sql = "SELECT document_numerise_type_categorie.libelle
559                  FROM ".DB_PREFIXE."document_numerise_type
560                    LEFT JOIN ".DB_PREFIXE."document_numerise_type_categorie
561                      ON document_numerise_type.document_numerise_type_categorie = document_numerise_type_categorie.document_numerise_type_categorie
562                  WHERE document_numerise_type.document_numerise_type = ".$document_numerise_type;
563          $document_numerise_type_categorie_libelle = $this->db->getOne($sql);
564          $this->addToLog("db->getone(\"".$sql."\");", VERBOSE_MODE);
565          $this->f->addToLog("obj/document_numerise.class.php : db->getOne(".$sql.")", VERBOSE_MODE);
566          if (database::isError($document_numerise_type_categorie_libelle)) {
567              die();
568          }
569    
570          //Retourne le code du type de document
571          return $document_numerise_type_categorie_libelle;
572        }
573    
574    
575      /**      /**
576       * Cette méthode permet de stocker en attribut toutes les métadonnées       * Cette méthode permet de stocker en attribut toutes les métadonnées
577       * nécessaire à l'ajout d'un document.       * nécessaire à l'ajout d'un document.
578       */       */
579      public function getSpecificMetadata() {      public function getSpecificMetadata() {
           
580    
581          //Requête pour récupérer les informations essentiels sur le dossier d'instruction          //Requête pour récupérer les informations essentiels sur le dossier d'instruction
582          $sql = "SELECT dossier.dossier as dossier,          $sql = "SELECT dossier.dossier as dossier,
583                          dossier_autorisation.dossier_autorisation as dossier_autorisation,                          dossier_autorisation.dossier_autorisation as dossier_autorisation,
584                          to_char(dossier.date_demande, 'YYYY/MM') as date_demande_initiale,                          to_char(dossier.date_demande, 'YYYY/MM') as date_demande_initiale,
585                            dossier.version as version,
586                          dossier_instruction_type.code as dossier_instruction_type,                          dossier_instruction_type.code as dossier_instruction_type,
587                          etat_dossier_autorisation.libelle as statut,                          etat_dossier_autorisation.libelle as statut,
588                          dossier_autorisation_type.code as dossier_autorisation_type,                          dossier_autorisation_type.code as dossier_autorisation_type,
# Line 356  class document_numerise extends document Line 602  class document_numerise extends document
602                          ON dossier_autorisation_type.groupe = groupe.groupe                          ON dossier_autorisation_type.groupe = groupe.groupe
603                  WHERE dossier.dossier = '".$this->valF["dossier"]."'";                  WHERE dossier.dossier = '".$this->valF["dossier"]."'";
604          $res = $this->db->query($sql);          $res = $this->db->query($sql);
605          $this->f->addToLog("obj/document_numerise.class.php : db->query(".$sql.")", VERBOSE_MODE);          $this->f->addToLog("getSpecificMetadata : db->query(".$sql.")", VERBOSE_MODE);
606          if ( database::isError($res)){          if ( database::isError($res)){
607              die();              die();
608          }          }
# Line 374  class document_numerise extends document Line 620  class document_numerise extends document
620      }      }
621    
622      /**      /**
623         * Méthode de récupération des métadonnées arrêtés dans la base de données,
624         * les données sont stockés dans l'attribut $this->metadonneesArrete
625         */
626        function getArreteMetadata() {
627            $sqlArrete = "SELECT    signataire_arrete.nom as \"nomsignataire\",
628                                    signataire_arrete.qualite as \"qualitesignataire\",
629                                    instruction.date_evenement as \"datesignaturearrete\",
630                                    instruction.etat as \"decisionarrete\",
631                                    instruction.date_retour_rar as \"datenotification\",
632                                    instruction.date_retour_signature as \"datesignaturesrrete\",
633                                    dossier.terrain_adresse_voie_numero as \"ap_numrue\",
634                                    dossier.complement as \"ap_nomdelavoie\",
635                                    dossier.terrain_adresse_code_postal as \"ap_codepostal\",
636                                    dossier.terrain_adresse_localite as \"ap_ville\"
637                                FROM ".DB_PREFIXE."instruction
638                                LEFT JOIN ".DB_PREFIXE."signataire_arrete ON
639                                    instruction.signataire_arrete = signataire_arrete.signataire_arrete
640                                LEFT JOIN ".DB_PREFIXE."dossier ON
641                                    instruction.dossier = dossier.dossier
642                                LEFT JOIN ".DB_PREFIXE."donnees_techniques ON
643                                        donnees_techniques.dossier_instruction = dossier.dossier
644                                WHERE dossier.dossier = '".$this->valF["dossier"]."'
645                                  AND instruction.instruction = ".$this->getLastInstruction($this->valF["dossier"]);
646            $resArrete = $this->db->query($sqlArrete);
647            $this->f->addToLog("getArreteMetadata(): db->query(\"".$sqlArrete."\");", VERBOSE_MODE);
648            if ( database::isError($resArrete)){
649                die();
650            }
651    
652            $this->metadonneesArrete = $resArrete->fetchRow(DB_FETCHMODE_ASSOC);
653        }
654    
655        /**
656       * Cette methode est à surcharger elle permet de tester dans chaque classe       * Cette methode est à surcharger elle permet de tester dans chaque classe
657       * des droits spécifiques en fonction des données       * des droits spécifiques en fonction des données
658       */       */
659      function canAccess() {      function canAccess() {
660          $retourformulaire = $this->getParameter("retourformulaire");        
661          // Si l'utilisateur est un instructeur et que le dossier d'instruction est cloturé          // Si l'utilisateur est un intructeur qui ne correspond pas à la
662          if ( $this->f->isUserInstructeur() &&          // division du dossier
663              $this->getStatutDossier($this->getParameter("idxformulaire")) == "cloture" &&          if ($this->f->isUserInstructeur()
664              (              && $this->f->om_utilisateur["division"] != $this->getDivisionFromDossier()
665                  $retourformulaire == 'dossier' ||              && $this->getParameter("maj") != 3) {
666                  $retourformulaire == 'dossier_instruction' ||              //
                 $retourformulaire == 'dossier_instruction_mes_encours' ||  
                 $retourformulaire == 'dossier_instruction_tous_encours' ||  
                 $retourformulaire == 'dossier_instruction_mes_clotures' ||  
                 $retourformulaire == 'dossier_instruction_tous_clotures'  
             ) &&  
             $this->getParameter("maj") != 3) {  
               
667              return false;              return false;
668          }          }
669          //          //
# Line 427  class document_numerise extends document Line 699  class document_numerise extends document
699          }          }
700          return $statut;          return $statut;
701      }      }
702    
703        /**
704         * Cette variable permet de stocker le résultat de la méthode
705         * getDivisionFromDossier() afin de ne pas effectuer le recalcul à chacun de
706         * ces appels.
707         * @var string Code de la division du dossier en cours
708         */
709        var $_division_from_dossier = NULL;
710    
711        /**
712         * Cette méthode permet de récupérer le code de division correspondant
713         * au dossier sur lequel on se trouve.
714         *
715         * @return string Code de la division du dossier en cours
716         */
717        function getDivisionFromDossier() {
718    
719            // Cette méthode peut être appelée plusieurs fois lors d'une requête.
720            // Pour éviter de refaire le traitement de recherche de la division
721            // alors on vérifie si nous ne l'avons pas déjà calculé.
722            if ($this->_division_from_dossier != NULL) {
723                // Logger
724                $this->addToLog("getDivisionFromDossier(): retour de la valeur déjà calculée - '".$this->_division_from_dossier."'", EXTRA_VERBOSE_MODE);
725                // On retourne la valeur déjà calculée
726                return $this->_division_from_dossier;
727            }
728    
729            // Par défaut, on définit la valeur du dossier à NULL
730            $dossier = NULL;
731            // Test sur le mode et le contexte du formulaire
732            if ($this->getParameter("maj") == 0
733                && ($this->getParameter("retourformulaire") == "dossier"
734                    || $this->getParameter("retourformulaire") == "dossier_instruction"
735                    || $this->getParameter("retourformulaire") == "dossier_instruction_mes_encours"
736                    || $this->getParameter("retourformulaire") == "dossier_instruction_tous_encours"
737                    || $this->getParameter("retourformulaire") == "dossier_instruction_mes_clotures"
738                    || $this->getParameter("retourformulaire") == "dossier_instruction_tous_clotures")) {
739                // Si on se trouve en mode AJOUT (seul mode où l'enregistrement
740                // n'existe pas en base de données) ET que nous nous trouvons
741                // dans le contexte d'un dossier d'instruction alors on récupère
742                // le numéro de dossier depuis le paramètre 'idxformulaire'
743                $dossier = $this->getParameter("idxformulaire");
744            } else {
745                // Sinon on récupère le numéro de dossier dans le champs dossier de
746                // l'enregistrement (en base de données)
747                $dossier = $this->getVal("dossier");
748            }
749    
750            // On appelle la méthode de la classe utils qui renvoi le code de la
751            // division d'un dossier, on la stocke pour ne pas refaire le calcul au
752            // prochain appel de cette méthode
753            $this->_division_from_dossier = $this->f->getDivisionFromDossier($dossier);
754            // Logger
755            $this->addToLog("getDivisionFromDossier(): retour de la valeur nouvellement calculée - '".$this->_division_from_dossier."'", EXTRA_VERBOSE_MODE);
756            // On retourne la valeur retournée
757            return $this->_division_from_dossier;
758    
759        }
760    
761        function getLastInstruction($dossier) {
762    
763          //
764          $sql = "SELECT max(instruction) FROM ".DB_PREFIXE."instruction
765                    JOIN ".DB_PREFIXE."dossier ON instruction.dossier = dossier.dossier
766                    WHERE dossier.dossier='".$dossier."'";
767          $lastInstruction = $this->db->getOne($sql);
768          $this->f->addToLog("getStatutDossier() : db->getOne(\"".$sql."\")", VERBOSE_MODE);
769          if ( database::isError($lastInstruction)){
770              die();
771          }
772    
773          return $lastInstruction;
774        }
775  }// fin classe  }// fin classe
776  ?>  ?>

Legend:
Removed from v.1978  
changed lines
  Added in v.2016

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26