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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2006 - (hide annotations)
Fri Jun 14 10:45:44 2013 UTC (11 years, 7 months ago) by softime
File size: 13854 byte(s)
- Dans la classe document_numerise lors de l'ajout du type de document, si celui-ci fait parti de la catégorie 'Arrêté', il ajoute les métadonnées spécifiques aux arrêtés
- Enlever le filtre sur le statut dans app/document_numerise.view.php qui empêche d'ajouter une nouvelle pièce si le dossier est clôturé
- Ajouter un filtre sur la division pour les documents numérisés et les lots
- MAJ HISTORY.txt


1 vpihour 633 <?php
2     //$Id$
3     //gen openMairie le 08/11/2012 14:59
4    
5     require_once ("../gen/obj/lot.class.php");
6    
7     class lot extends lot_gen {
8    
9 nhaye 1268 var $donnees_techniques;
10     var $idDT;
11    
12 vpihour 633 function lot($id,&$db,$debug) {
13     $this->constructeur($id,$db,$debug);
14 nhaye 1268
15 vpihour 633 }// fin constructeur
16    
17 nhaye 1268
18 nhaye 1240 function triggerAjouterApres($id, &$db, $val, $DEBUG) {
19     parent::triggerAjouterApres($id, $db, $val, $DEBUG);
20    
21 nhaye 1246 if($this->getParameter("idxformulaire") != "") {
22     // Insertion du lien dossier/lot
23     require_once ("../obj/lien_dossier_lot.class.php");
24     $ldl = new lien_dossier_lot("]", $db, $DEBUG);
25     $valLdl['lien_dossier_lot'] = "";
26     $valLdl['dossier'] = $this->getParameter("idxformulaire");
27     $valLdl['lot'] = $this->valF["lot"];
28     $ldl->ajouter($valLdl, $db, $DEBUG);
29    
30     // Insertion du lien demandeur/lot
31     require_once ("../obj/lien_lot_demandeur.class.php");
32     $lld = new lien_lot_demandeur("]", $db, $DEBUG);
33     $sqlDemandeur = "SELECT * FROM ".DB_PREFIXE."lien_dossier_demandeur
34     WHERE dossier='".$this->getParameter("idxformulaire")."'";
35     $res = $db->query($sqlDemandeur);
36 vpihour 1777 $this->f->addToLog("triggerAjouterApres() : db->query(\"".$sqlDemandeur."\");", VERBOSE_MODE);
37     if ( database::isError($res)){
38     die();
39     }
40 nhaye 1246 while($row = $res->fetchRow(DB_FETCHMODE_ASSOC)) {
41     unset($row['lien_dossier_demandeur']);
42     unset($row['dossier']);
43     $row['lien_lot_demandeur'] = "";
44     $row['lot'] = $this->valF["lot"];
45     $lld->ajouter($row, $db, $DEBUG);
46     }
47 nhaye 1240 }
48     }
49    
50 vpihour 1245 /**
51     * Cache le champ dossier_autorisation
52     */
53 vpihour 1241 function setType(&$form,$maj) {
54     parent::setType($form,$maj);
55    
56     $form->setType('dossier_autorisation', 'hidden');
57     }
58 nhaye 1268
59    
60 vpihour 1245
61     /**
62     * Ajout de la liste des demandeurs
63     */
64     function sousformSpecificContent($maj) {
65 nhaye 1268
66 vpihour 1245 //En consultation
67     if ( $maj == 3 ){
68    
69     //Récupère la liste des demandeurs
70     $sql = "SELECT
71     civilite.code as code,
72     CASE WHEN demandeur.qualite='particulier'
73     THEN TRIM(CONCAT(demandeur.particulier_nom, ' ', demandeur.particulier_prenom))
74     ELSE TRIM(CONCAT(demandeur.personne_morale_raison_sociale, ' ', demandeur.personne_morale_denomination))
75     END as nom,
76     lien_lot_demandeur.petitionnaire_principal as petitionnaire_principal,
77     demandeur.type_demandeur as type_demandeur
78     FROM
79     ".DB_PREFIXE."lien_lot_demandeur
80     LEFT JOIN
81     ".DB_PREFIXE."demandeur
82     ON
83     lien_lot_demandeur.demandeur = demandeur.demandeur
84     LEFT JOIN
85     ".DB_PREFIXE."civilite
86     ON
87     demandeur.particulier_civilite = civilite.civilite OR
88     demandeur.personne_morale_civilite = civilite.civilite
89     WHERE lien_lot_demandeur.lot = ".$this->val[array_search('lot', $this->champs)]."
90     ORDER BY demandeur.type_demandeur DESC";
91    
92     $res = $this->f->db->query($sql);
93 vpihour 1777 $this->f->addToLog("sousformSpecificContent() : db->query(\"".$sql."\")");
94     if ( database::isError($res)){
95     die();
96     }
97 vpihour 1245
98     //Affichage des données
99     echo "<div class=\"field field-type-static\">";
100     echo "<div class=\"form-libelle\">";
101     echo "<label id=\"lib-libelle\" class=\"libelle-demandeur\" for=\"demandeur\">";
102     echo _("demandeur");
103     echo "</label>";
104     echo "</div>";
105     echo "<div class=\"form-content\">";
106     echo "<span id=\"demandeur\" class=\"field_value\">";
107    
108     $listDemandeur = "";
109     //La liste des demandeurs
110     while($row=& $res->fetchRow(DB_FETCHMODE_ASSOC)){
111    
112     //Ordonne l'affichage des demandeur
113     if ( $row['petitionnaire_principal'] == 't' ){
114    
115     $listDemandeur = $row['code']. " " . $row['nom'] . ", " . _("petitionnaire principal") . "<br/>".$listDemandeur;
116     }
117     else {
118    
119     $listDemandeur .= $row['code']. " " . $row['nom'] . ", " . $row['type_demandeur'] . "<br/>";
120     }
121     }
122     echo $listDemandeur;
123     echo "</span>";
124     echo "</div>";
125     echo "</div>";
126     }
127     }
128 vpihour 1978
129     /**
130     * Surcharge pour gérer les actions disponibles dans le portlet
131     */
132     function checkAccessibility() {
133     //
134     parent::checkAccessibility();
135    
136     $idxformulaire = $this->getParameter("idxformulaire");
137     $retourformulaire = $this->getParameter("retourformulaire");
138     //Si le dossier d'instruction auquel est rattaché le lot est
139     //cloturé, on affiche pas les liens du portlet
140     if ( $idxformulaire != '' &&
141     (
142     $retourformulaire == 'dossier' ||
143     $retourformulaire == 'dossier_instruction' ||
144     $retourformulaire == 'dossier_instruction_mes_encours' ||
145     $retourformulaire == 'dossier_instruction_tous_encours' ||
146     $retourformulaire == 'dossier_instruction_mes_clotures' ||
147     $retourformulaire == 'dossier_instruction_tous_clotures'
148     )){
149    
150     //On récuppère le statut du dossier d'instruction
151     $statut = $this->getStatutDossier($idxformulaire);
152     if ( $this->f->isUserInstructeur() && $statut == "cloture" ){
153    
154     //On cache le lien de modification
155     $this->parameters["actions"]["modifier"] = NULL;
156     $this->parameters["actions"]["supprimer"] = NULL;
157     $this->actions_sup["transferer"] = NULL;
158    
159     //Si le dossier lié n'a pas de données techniques
160     if ( !$this->hasDonneesTechniquesDossier($idxformulaire) ){
161     $this->actions_sup["editer_donnees"] = NULL;
162     }
163     }
164     }
165 softime 2006
166     // Si l'utilisateur est un intructeur qui en correspond pas à la
167     // division du dossier
168     if ($this->f->isUserInstructeur()
169     && isset($this->f->om_utilisateur["division"])
170     && $this->f->om_utilisateur["division"] != $this->getDivisionFromDossier()) {
171     //
172     $this->actions_sup = array();
173     $this->setParameter("actions", array());
174     }
175 vpihour 1978 }
176    
177     /**
178     * Cette methode est à surcharger elle permet de tester dans chaque classe
179     * des droits spécifiques en fonction des données
180     */
181     function canAccess() {
182    
183     $retourformulaire = $this->getParameter("retourformulaire");
184     // Si l'utilisateur est un instructeur et que le dossier est cloturé
185     if ( $this->f->isUserInstructeur() &&
186     $this->getStatutDossier($this->getParameter("idxformulaire")) == "cloture" &&
187     (
188     $retourformulaire == 'dossier' ||
189     $retourformulaire == 'dossier_instruction' ||
190     $retourformulaire == 'dossier_instruction_mes_encours' ||
191     $retourformulaire == 'dossier_instruction_tous_encours' ||
192     $retourformulaire == 'dossier_instruction_mes_clotures' ||
193     $retourformulaire == 'dossier_instruction_tous_clotures'
194     ) && $this->getParameter("maj") != 3) {
195    
196     return false;
197     }
198 softime 2006 // Si l'utilisateur est un intructeur qui ne correspond pas à la
199     // division du dossier
200     if ($this->f->isUserInstructeur()
201     && $this->f->om_utilisateur["division"] != $this->getDivisionFromDossier()
202     && $this->getParameter("maj") != 3) {
203     //
204     return false;
205     }
206 vpihour 1978 //
207     return true;
208     }
209    
210     /**
211     * Retourne le statut du dossier d'instruction
212     * @param string $idx Identifiant du dossier d'instruction
213     * @return string Le statut du dossier d'instruction
214     */
215     function getStatutDossier($idx){
216    
217     $statut = '';
218    
219     //Si l'identifiant du dossier d'instruction fourni est correct
220     if ( $idx != '' ){
221    
222     //On récupère le statut de l'état du dossier à partir de l'identifiant du
223     //dossier
224     $sql = "SELECT etat.statut
225     FROM ".DB_PREFIXE."dossier
226     LEFT JOIN
227     ".DB_PREFIXE."etat
228     ON
229     dossier.etat = etat.etat
230     WHERE dossier ='".$idx."'";
231     $statut = $this->db->getOne($sql);
232     $this->f->addToLog("getStatutDossier() : db->getOne(\"".$sql."\")", VERBOSE_MODE);
233     if ( database::isError($statut)){
234     die();
235     }
236     }
237     return $statut;
238     }
239    
240     /**
241     * Retourne true s'il y a des données techniques lié au dossier d'instruction
242     * @param string $idx Identifiant du dossier d'instruction
243     * @return boolean S'il y a des données techniques
244     */
245     function hasDonneesTechniquesDossier($idx){
246    
247     //Si l'identifiant du dossier d'instruction founi est correct
248     if ( $idx != '' ){
249    
250     //On récupère le statut de l'état du dossier d'instruction à partir de
251     //l'identifiant du dossier
252     $sql = "SELECT donnees_techniques.donnees_techniques
253     FROM ".DB_PREFIXE."donnees_techniques
254     LEFT JOIN
255     ".DB_PREFIXE."dossier
256     ON
257     donnees_techniques.dossier_instruction = dossier.dossier
258     WHERE dossier.dossier = '".$idx."'";
259     $donnees_techniques = $this->db->query($sql);
260     $this->f->addToLog("hasDonneesTechniquesDossier() : db->query(\"".$sql."\")", VERBOSE_MODE);
261     if ( database::isError($donnees_techniques)){
262     die();
263     }
264    
265     if ( $donnees_techniques->numRows() > 0 ){
266     return TRUE;
267     }
268     }
269     return FALSE;
270     }
271 softime 2006
272     /**
273     * Cette variable permet de stocker le résultat de la méthode
274     * getDivisionFromDossier() afin de ne pas effectuer le recalcul à chacun de
275     * ces appels.
276     * @var string Code de la division du dossier en cours
277     */
278     var $_division_from_dossier = NULL;
279    
280     /**
281     * Cette méthode permet de récupérer le code de division correspondant
282     * au dossier sur lequel on se trouve.
283     *
284     * @return string Code de la division du dossier en cours
285     */
286     function getDivisionFromDossier() {
287    
288     // Cette méthode peut être appelée plusieurs fois lors d'une requête.
289     // Pour éviter de refaire le traitement de recherche de la division
290     // alors on vérifie si nous ne l'avons pas déjà calculé.
291     if ($this->_division_from_dossier != NULL) {
292     // Logger
293     $this->addToLog("getDivisionFromDossier(): retour de la valeur déjà calculée - '".$this->_division_from_dossier."'", EXTRA_VERBOSE_MODE);
294     // On retourne la valeur déjà calculée
295     return $this->_division_from_dossier;
296     }
297    
298     // Par défaut, on définit la valeur du dossier à NULL
299     $dossier = NULL;
300     // Test sur le mode et le contexte du formulaire
301     if (($this->getParameter("retourformulaire") == "dossier"
302     || $this->getParameter("retourformulaire") == "dossier_instruction"
303     || $this->getParameter("retourformulaire") == "dossier_instruction_mes_encours"
304     || $this->getParameter("retourformulaire") == "dossier_instruction_tous_encours"
305     || $this->getParameter("retourformulaire") == "dossier_instruction_mes_clotures"
306     || $this->getParameter("retourformulaire") == "dossier_instruction_tous_clotures")) {
307     // Si on se trouve en mode AJOUT (seul mode où l'enregistrement
308     // n'existe pas en base de données) ET que nous nous trouvons
309     // dans le contexte d'un dossier d'instruction alors on récupère
310     // le numéro de dossier depuis le paramètre 'idxformulaire'
311     $dossier = $this->getParameter("idxformulaire");
312     } else {
313     // Sinon on récupère le numéro de dossier dans le champs dossier de
314     // l'enregistrement (en base de données)
315     $dossier = $this->getVal("dossier");
316     }
317    
318     // On appelle la méthode de la classe utils qui renvoi le code de la
319     // division d'un dossier, on la stocke pour ne pas refaire le calcul au
320     // prochain appel de cette méthode
321     $this->_division_from_dossier = $this->f->getDivisionFromDossier($dossier);
322     // Logger
323     $this->addToLog("getDivisionFromDossier(): retour de la valeur nouvellement calculée - '".$this->_division_from_dossier."'", EXTRA_VERBOSE_MODE);
324     // On retourne la valeur retournée
325     return $this->_division_from_dossier;
326    
327     }
328 vpihour 633 }// fin classe
329     ?>

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26