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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2006 - (show 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 <?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 var $donnees_techniques;
10 var $idDT;
11
12 function lot($id,&$db,$debug) {
13 $this->constructeur($id,$db,$debug);
14
15 }// fin constructeur
16
17
18 function triggerAjouterApres($id, &$db, $val, $DEBUG) {
19 parent::triggerAjouterApres($id, $db, $val, $DEBUG);
20
21 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 $this->f->addToLog("triggerAjouterApres() : db->query(\"".$sqlDemandeur."\");", VERBOSE_MODE);
37 if ( database::isError($res)){
38 die();
39 }
40 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 }
48 }
49
50 /**
51 * Cache le champ dossier_autorisation
52 */
53 function setType(&$form,$maj) {
54 parent::setType($form,$maj);
55
56 $form->setType('dossier_autorisation', 'hidden');
57 }
58
59
60
61 /**
62 * Ajout de la liste des demandeurs
63 */
64 function sousformSpecificContent($maj) {
65
66 //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 $this->f->addToLog("sousformSpecificContent() : db->query(\"".$sql."\")");
94 if ( database::isError($res)){
95 die();
96 }
97
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
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
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 }
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 // 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 //
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
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 }// fin classe
329 ?>

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26