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

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

Parent Directory Parent Directory | Revision Log Revision Log


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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26