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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 6565 - (hide annotations)
Fri Apr 21 16:14:15 2017 UTC (7 years, 9 months ago) by softime
File size: 29032 byte(s)
Merge de la version 4.0.0

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 nhaye 5254 require_once ("../obj/lien_lot_demandeur.class.php");
7 mbroquet 3730
8     class lot extends lot_gen {
9    
10    
11 softime 6565 function __construct($id, &$db = null, $debug = null) {
12 mbroquet 3730 $this->constructeur($id,$db,$debug);
13    
14     }// fin constructeur
15    
16 nhaye 5254 /**
17     * Définition des actions disponibles sur la classe.
18     *
19     * @return void
20     */
21     function init_class_actions() {
22     //
23     parent::init_class_actions();
24 mbroquet 3730
25 nhaye 5254 // ACTION - 001 - ajouter
26     //
27 softime 6565 $this->class_actions[0]["condition"] = array("is_ajoutable", "can_user_access_dossier_contexte_ajout");
28 nhaye 5254
29     // ACTION - 001 - modifier
30     //
31 softime 6565 $this->class_actions[1]["condition"] = array("is_modifiable", "can_user_access_dossier_contexte_modification");
32 nhaye 5254
33     // ACTION - 002 - supprimer
34     //
35 softime 6565 $this->class_actions[2]["condition"] = array("is_supprimable", "can_user_access_dossier_contexte_modification");
36 nhaye 5254
37     // ACTION - 100 - donnees_techniques
38     // Affiche dans un overlay les données techniques
39     $this->class_actions[100] = array(
40     "identifier" => "donnees_techniques",
41     "portlet" => array(
42     "type" => "action-self",
43     "libelle" => _("Données techniques"),
44     "order" => 100,
45     "class" => "rediger-16",
46     ),
47     "view" => "view_donnees_techniques",
48     "permission_suffix" => "donnees_techniques_consulter",
49 softime 6565 "condition" => "can_user_access_dossier_contexte_modification",
50 nhaye 5254 );
51    
52     // ACTION - 100 - transferer_lot_nouveaux_demandeurs
53     // Transfert les lots de demandeur
54     $this->class_actions[110] = array(
55     "identifier" => "transferer_lot_nouveaux_demandeurs",
56     "portlet" => array(
57     "type" => "action-direct",
58     "libelle" => _("Transferer ce lot aux nouveaux demandeurs"),
59     "order" => 110,
60     "class" => "transferer-16",
61     ),
62     "permission_suffix" => "transferer",
63 softime 6565 "method" => "transferer_lot_demandeurs",
64     "condition" => "can_user_access_dossier_contexte_modification",
65 nhaye 5254 );
66     }
67    
68 softime 5169 /**
69 nhaye 5254 * TREATMENT - transferer_lot_demandeurs.
70     *
71     * Permet de permet de transferer les lots aux nouveau demandeur.
72     *
73     *
74     * @param array $val valeurs soumises par le formulaire
75     * @param null $dnu1 @deprecated Ancienne ressource de base de données.
76     * @param null $dnu2 @deprecated Ancien marqueur de débogage.
77     *
78     * @return boolean
79     */
80     function transferer_lot_demandeurs($val = array(), &$dnu1 = null, $dnu2 = null) {
81    
82     // Cette méthode permet d'exécuter une routine en début des méthodes
83     // dites de TREATMENT.
84     $this->begin_treatment(__METHOD__);
85    
86    
87     /*Donnees*/
88     $idxDossier = $this->getVal("dossier");
89     //Si les liaisons n'existent pas déjà
90     $sql = "SELECT
91     lot.lot as lot, lien_lot_demandeur.demandeur as demandeur
92     FROM
93     ".DB_PREFIXE."lien_dossier_demandeur
94     INNER JOIN ".DB_PREFIXE."lien_lot_demandeur
95     ON
96     lien_lot_demandeur.demandeur = lien_dossier_demandeur.demandeur
97     INNER JOIN ".DB_PREFIXE."lot
98     ON
99     lot.lot = ".$this->getVal($this->clePrimaire)."
100     WHERE lien_dossier_demandeur.dossier = '$idxDossier'";
101    
102     $res = $this->db->query($sql);
103     $this->addToLog(__METHOD__."(): db->query(\"".$sql."\");", VERBOSE_MODE);
104    
105     // Si une erreur survient
106     if (database::isError($res, true)) {
107    
108     // Appel de la methode de recuperation des erreurs
109     $this->erreur_db($res->getDebugInfo(), $res->getMessage(), '');
110     $res->free();
111     $this->correct = false;
112     // Termine le traitement
113     return $this->end_treatment(__METHOD__, false);
114     }
115    
116     // Récupère la liste des demandeurs associés aux lot et dossier d'instruction
117     $listDemandeurLie = array();
118     if ($res->numrows() > 0) {
119    
120     $i = 0;
121     while($row=& $res->fetchRow(DB_FETCHMODE_ASSOC)){
122    
123     $listDemandeurLie[$i++] = $row['demandeur'];
124     }
125     }
126     echo (" nbDossierDemandeurIJ: " . $res->numrows());
127    
128     $res->free();
129     // Récupère les demandeurs du dossier d'instruction
130     $sql = "SELECT
131     lien_dossier_demandeur.demandeur as demandeur,
132     lien_dossier_demandeur.petitionnaire_principal as pp
133     FROM
134     ".DB_PREFIXE."lien_dossier_demandeur
135     WHERE lien_dossier_demandeur.dossier = '$idxDossier'";
136    
137     $res = $this->db->query($sql);
138     $this->addToLog(__METHOD__."(): db->query(\"".$sql."\");", VERBOSE_MODE);
139    
140     // Si une erreur survient
141     if (database::isError($res, true)) {
142    
143     // Appel de la methode de recuperation des erreurs
144     $this->erreur_db($res->getDebugInfo(), $res->getMessage(), '');
145     $res->free();
146     $this->correct = false;
147     // Termine le traitement
148     return $this->end_treatment(__METHOD__, false);
149     }
150    
151     echo (" nbDossierDemandeurWD: " . $res->numrows());
152    
153     // Transfert des demandeurs entre le dossier et le lot
154     if (count($listDemandeurLie) != $res->numrows()){
155    
156     //Supprime les anciens liens
157     $sql = "DELETE FROM ".DB_PREFIXE."lien_lot_demandeur
158     WHERE lien_lot_demandeur.lot = ".$this->getVal($this->clePrimaire);
159    
160     $res2 = $this->db->query($sql);
161    
162     echo (" delLotDemandeur: " . $res2);
163     $this->addToLog(__METHOD__."(): db->query(\"".$sql."\");", VERBOSE_MODE);
164    
165    
166     // Si une erreur survient
167     if (database::isError($res2, true)) {
168    
169     // Appel de la methode de recuperation des erreurs
170     $this->erreur_db($res2->getDebugInfo(), $res2->getMessage(), '');
171     $res2->free();
172     $this->correct = false;
173     // Termine le traitement
174     return $this->end_treatment(__METHOD__, false);
175     }
176    
177     $ret = "";
178    
179    
180     // Créé autant de liaisons que de demandeurs liés au dossier d'instruction
181     while($row=& $res->fetchRow(DB_FETCHMODE_ASSOC)){
182    
183     if (!in_array($row['demandeur'], $listDemandeurLie)){
184    
185     $valLLD = array();
186     $valLLD['lien_lot_demandeur'] = NULL;
187     $valLLD['lot'] = $this->getVal($this->clePrimaire);
188     $valLLD['demandeur'] = $row['demandeur'];
189     $valLLD['petitionnaire_principal'] = $row['pp'];
190    
191     $lld = new lien_lot_demandeur("]", $this->db, DEBUG);
192     $lld->valF = "";
193    
194     $lld->ajouter($valLLD, $this->db, DEBUG) ;
195    
196     $sql = "SELECT
197     civilite.code as code,
198     CASE WHEN demandeur.qualite='particulier'
199     THEN TRIM(CONCAT(demandeur.particulier_nom, ' ', demandeur.particulier_prenom))
200     ELSE TRIM(CONCAT(demandeur.personne_morale_raison_sociale, ' ', demandeur.personne_morale_denomination))
201     END as nom
202     FROM
203     ".DB_PREFIXE."demandeur
204     LEFT JOIN
205     ".DB_PREFIXE."civilite
206     ON
207     demandeur.particulier_civilite = civilite.civilite OR
208     demandeur.personne_morale_civilite = civilite.civilite
209     WHERE demandeur.demandeur = ".$row['demandeur'];
210    
211     $res2 = $this->db->query($sql);
212     $this->addToLog(__METHOD__."(): db->query(\"".$sql."\");", VERBOSE_MODE);
213    
214     // Si une erreur survient
215     if (database::isError($res2, true)) {
216    
217     // Appel de la methode de recuperation des erreurs
218     $this->erreur_db($res2->getDebugInfo(), $res2->getMessage(), '');
219     $res2->free();
220     $this->correct = false;
221     // Termine le traitement
222     return $this->end_treatment(__METHOD__, false);
223     }
224    
225     $row=& $res2->fetchRow(DB_FETCHMODE_ASSOC);
226     $ret .= $row['code']. " " . $row['nom'] . "<br/>" ;
227    
228     $res2->free();
229     }
230     }
231     $res->free();
232    
233     //Envoie du message de retour
234     $this->addToMessage(_("Transfert effectue avec succès"));
235     }
236     //Sinon
237     else {
238     //Envoie du message de retour
239     $this->addToMessage(_("Les demandeurs ont déjà été transférés"));
240     }
241    
242     // Termine le traitement
243     return $this->end_treatment(__METHOD__, true);
244     }
245    
246     /**
247     * Ouvre le sous-formulaire passé en paramètre en overlay
248     * en mode ajout si aucun n'existe sinon en mode modifier.
249     *
250     * @return void
251     */
252     function display_overlay($idx = "", $obj = "") {
253     // Seulement si le numéro de dossier est fourni
254     if (isset($idx) && !empty($idx)
255     && isset($obj) && !empty($obj)){
256    
257     // Vérifie que l'objet n'existe pas
258     $sql = "SELECT donnees_techniques
259     FROM ".DB_PREFIXE."donnees_techniques
260     WHERE donnees_techniques.lot = ".$idx;
261     // Ajout au log
262     $this->f->addToLog($obj.".php: db->query(\"".$sql."\");", VERBOSE_MODE);
263     // Exécution de la requête
264     $res = $this->db->query($sql);
265     $this->f->isDatabaseError($res);
266    
267     // S'il n'y en a pas, afficher le formulaire d'ajout
268     if ($res->numrows() == 0) {
269     //
270     echo '
271     <script type="text/javascript" >
272     overlayIt(\''.$obj.'\',\'sousform.php?obj=donnees_techniques'.
273     '&retourformulaire=lot&action=0&idxformulaire='. $idx. '\', 1);
274     </script>
275     ';
276     }
277     // Sinon afficher l'objet en consultation
278     else {
279     //
280     $row = & $res->fetchRow(DB_FETCHMODE_ASSOC);
281     //
282     echo '
283     <script type="text/javascript" >
284     overlayIt(\''.$obj.'\',\'sousform.php?obj=donnees_techniques'.
285 softime 6565 '&retourformulaire=lot&action=5&idxformulaire='. $idx. '&idx=' . $row['donnees_techniques'] .'&objsf='.$obj.'\', 1);
286 nhaye 5254 </script>
287     ';
288     }
289     }
290     }
291    
292     /**
293     * CONDITION - is_ajoutable.
294     *
295     * Condition pour pouvoir ajouter
296     *
297     * @return boolean
298     */
299     function is_ajoutable() {
300     // Test du bypass
301     if ($this->f->isAccredited("lot_ajouter_bypass")) {
302     return true;
303     }
304     // Test des autres conditions
305     return $this->is_ajoutable_or_modifiable_or_supprimable();
306     }
307    
308     /**
309     * CONDITION - is_modifiable.
310     *
311     * Condition pour afficher le bouton modifier
312     *
313     * @return boolean
314     */
315     function is_modifiable() {
316     // Test du bypass
317     if ($this->f->isAccredited("lot_modifier_bypass")) {
318     return true;
319     }
320     // Test des autres conditions
321     return $this->is_ajoutable_or_modifiable_or_supprimable();
322     }
323    
324     /**
325     * CONDITION - is_supprimable.
326     *
327     * Condition pour afficher le bouton supprimer
328     * @return boolean
329     */
330     function is_supprimable() {
331     // Test du bypass
332     if ($this->f->isAccredited("lot_supprimer_bypass")) {
333     return true;
334     }
335     // Test des autres conditions
336     return $this->is_ajoutable_or_modifiable_or_supprimable();
337     }
338    
339    
340     /**
341     * Conditions pour afficher les boutons modifier et supprimer
342     *
343     * @return boolean
344     */
345 softime 6565 function is_ajoutable_or_modifiable_or_supprimable() {
346     // Tester si le dossier est cloturé ,
347     // et si l'instructeur est de la même division
348     if ($this->is_instructeur_from_division_dossier() === true and
349     $this->is_dossier_instruction_not_closed() === true){
350     return true;
351     }
352 nhaye 5254
353 softime 6565 return false;
354     }
355 nhaye 5254
356 softime 6565
357 nhaye 5254 /**
358     * VIEW - view_donnees_techniques.
359     *
360     * Ouvre le sous-formulaire en ajaxIt dans un overlay.
361     * Cette action est bindée pour utiliser la fonction popUpIt.
362     *
363     * @return void
364     */
365     function view_donnees_techniques() {
366     $dossier = $this->getVal("dossier");
367     // Vérification de l'accessibilité sur l'élément
368     $this->checkAccessibility();
369     //
370     $this->display_overlay(
371     $this->getVal($this->clePrimaire),
372     "donnees_techniques"
373     );
374     }
375    
376     /**
377 softime 5169 * Méthode qui effectue les requêtes de configuration des champs.
378     *
379     * @param object &$form Formulaire.
380     * @param integer $maj Mode du formulaire.
381     *
382     * @return void
383     */
384     public function setSelect(&$form,$maj) {
385     // Le parent n'est pas appelé délibérament pour cause de performance.
386     // En effet, celui-ci charge toutes les données de la table dossier et
387     // de la table dossier_autorisation.
388     }
389    
390    
391 mbroquet 3730 function triggerAjouterApres($id, &$db, $val, $DEBUG) {
392     parent::triggerAjouterApres($id, $db, $val, $DEBUG);
393    
394 softime 5169 // Si en sous-formulaire
395 mbroquet 3730 if($this->getParameter("idxformulaire") != "") {
396    
397     // Insertion du lien demandeur/lot
398     require_once ("../obj/lien_lot_demandeur.class.php");
399     $lld = new lien_lot_demandeur("]", $db, $DEBUG);
400     $sqlDemandeur = "SELECT * FROM ".DB_PREFIXE."lien_dossier_demandeur
401     WHERE dossier='".$this->getParameter("idxformulaire")."'";
402     $res = $db->query($sqlDemandeur);
403     $this->f->addToLog("triggerAjouterApres() : db->query(\"".$sqlDemandeur."\");", VERBOSE_MODE);
404     if ( database::isError($res)){
405     die();
406     }
407     while($row = $res->fetchRow(DB_FETCHMODE_ASSOC)) {
408     unset($row['lien_dossier_demandeur']);
409     unset($row['dossier']);
410     $row['lien_lot_demandeur'] = "";
411     $row['lot'] = $this->valF["lot"];
412     $lld->ajouter($row, $db, $DEBUG);
413     }
414 softime 5169
415     // Ajoute une ligne dans les données techniques
416     $add_dt = $this->add_donnees_techniques();
417     //
418     if ($add_dt === false) {
419     //
420     $this->addToMessage(_("Impossible d'associer des données techniques au lot.")." "._("Veuillez contacter votre administrateur."));
421     return false;
422     }
423 mbroquet 3730 }
424 softime 5169
425     //
426     return true;
427 mbroquet 3730 }
428    
429     /**
430     * Cache le champ dossier_autorisation
431     */
432     function setType(&$form,$maj) {
433     parent::setType($form,$maj);
434    
435     $form->setType('dossier_autorisation', 'hidden');
436     $form->setType('dossier','hidden');
437 nhaye 5254
438     if($maj == "110") {
439     $form->setType('lot', 'hidden');
440     $form->setType('libelle', 'hidden');
441     $form->setType('dossier_autorisation', 'hidden');
442     $form->setType('dossie', 'hidden');
443     }
444 mbroquet 3730 }
445    
446    
447     /**
448     * Permet d'affecter des valeurs aux champs de sous formulaires
449     */
450 softime 5169 function setValsousformulaire(&$form,$maj,$validation,$idxformulaire,$retourformulaire,$typeformulaire,&$db,$DEBUG=null) {
451     //
452 mbroquet 3730 if($validation == 0) {
453 softime 5169 //
454     $is_in_context_of_di = $this->is_in_context_of_foreign_key("dossier", $this->getParameter('retourformulaire'));
455     //
456     $is_in_context_of_da = $this->is_in_context_of_foreign_key("dossier_autorisation", $this->getParameter('retourformulaire'));
457    
458     //
459     if($is_in_context_of_di === true) {
460     //
461     $form->setVal('dossier', $this->getParameter('idxformulaire'));
462     // Instancie le dossier
463     $inst_di = $this->get_inst_dossier($this->getParameter('idxformulaire'));
464     // Récupère la valeur du dossier d'autorisation
465     $form->setVal('dossier_autorisation', $inst_di->getVal('dossier_autorisation'));
466 mbroquet 3730 }
467 softime 5169
468     //
469     if($is_in_context_of_da === true) {
470     //
471     $form->setVal('dossier_autorisation', $this->getParameter('idxformulaire'));
472     }
473 mbroquet 3730 }// fin validation
474     }// fin setValsousformulaire
475    
476     /**
477     * Ajout de la liste des demandeurs
478     */
479     function sousformSpecificContent($maj) {
480    
481     //En consultation
482     if ( $maj == 3 ){
483    
484     //Récupère la liste des demandeurs
485     $sql = "SELECT
486     civilite.code as code,
487     CASE WHEN demandeur.qualite='particulier'
488     THEN TRIM(CONCAT(demandeur.particulier_nom, ' ', demandeur.particulier_prenom))
489     ELSE TRIM(CONCAT(demandeur.personne_morale_raison_sociale, ' ', demandeur.personne_morale_denomination))
490     END as nom,
491     lien_lot_demandeur.petitionnaire_principal as petitionnaire_principal,
492     demandeur.type_demandeur as type_demandeur
493     FROM
494     ".DB_PREFIXE."lien_lot_demandeur
495     LEFT JOIN
496     ".DB_PREFIXE."demandeur
497     ON
498     lien_lot_demandeur.demandeur = demandeur.demandeur
499     LEFT JOIN
500     ".DB_PREFIXE."civilite
501     ON
502     demandeur.particulier_civilite = civilite.civilite OR
503     demandeur.personne_morale_civilite = civilite.civilite
504     WHERE lien_lot_demandeur.lot = ".$this->val[array_search('lot', $this->champs)]."
505     ORDER BY demandeur.type_demandeur DESC";
506    
507     $res = $this->f->db->query($sql);
508     $this->f->addToLog("sousformSpecificContent() : db->query(\"".$sql."\")");
509     if ( database::isError($res)){
510     die();
511     }
512    
513     //Affichage des données
514     echo "<div class=\"field field-type-static\">";
515     echo "<div class=\"form-libelle\">";
516     echo "<label id=\"lib-libelle\" class=\"libelle-demandeur\" for=\"demandeur\">";
517     echo _("demandeur");
518     echo "</label>";
519     echo "</div>";
520     echo "<div class=\"form-content\">";
521     echo "<span id=\"demandeur\" class=\"field_value\">";
522    
523     $listDemandeur = "";
524     //La liste des demandeurs
525     while($row=& $res->fetchRow(DB_FETCHMODE_ASSOC)){
526    
527     //Ordonne l'affichage des demandeur
528     if ( $row['petitionnaire_principal'] == 't' ){
529    
530     $listDemandeur = $row['code']. " " . $row['nom'] . ", " . _("petitionnaire principal") . "<br/>".$listDemandeur;
531     }
532     else {
533    
534     $listDemandeur .= $row['code']. " " . $row['nom'] . ", " . $row['type_demandeur'] . "<br/>";
535     }
536     }
537     echo $listDemandeur;
538     echo "</span>";
539     echo "</div>";
540     echo "</div>";
541     }
542     }
543    
544    
545     /**
546     * Retourne true s'il y a des données techniques lié au dossier d'instruction
547     * @param string $idx Identifiant du dossier d'instruction
548     * @return boolean S'il y a des données techniques
549     */
550     function hasDonneesTechniquesDossier($idx){
551    
552     //Si l'identifiant du dossier d'instruction founi est correct
553     if ( $idx != '' ){
554    
555     //On récupère le statut de l'état du dossier d'instruction à partir de
556     //l'identifiant du dossier
557     $sql = "SELECT donnees_techniques.donnees_techniques
558     FROM ".DB_PREFIXE."donnees_techniques
559     LEFT JOIN
560     ".DB_PREFIXE."dossier
561     ON
562     donnees_techniques.dossier_instruction = dossier.dossier
563     WHERE dossier.dossier = '".$idx."'";
564     $donnees_techniques = $this->db->query($sql);
565     $this->f->addToLog("hasDonneesTechniquesDossier() : db->query(\"".$sql."\")", VERBOSE_MODE);
566     if ( database::isError($donnees_techniques)){
567     die();
568     }
569    
570     if ( $donnees_techniques->numRows() > 0 ){
571     return TRUE;
572     }
573     }
574     return FALSE;
575     }
576    
577    
578     /**
579 softime 5169 * Cette méthode est appelée lors de la suppression d’un objet, elle permet
580     * de vérifier si l’objet supprimé n’est pas lié à une autre table pour en
581     * empêcher la suppression.
582     *
583     * @param mixed $id Identifiant de l'objet.
584     *
585     * @return boolean
586     */
587     public function cleSecondaire($id) {
588     // Surcharge pour éviter les contrôles sur les tables liées en cas
589     // de suppression
590     return true;
591     }
592    
593    
594     /**
595     * Supprime le lien entre le lot et les demandeurs.
596     *
597     * @param integer $lot Identifiant de l'objet.
598     *
599     * @return boolean
600     */
601     protected function delete_lien_lot_demandeur($lot) {
602    
603     // SQL
604     $sql = "DELETE FROM ".DB_PREFIXE."lien_lot_demandeur
605     WHERE lot = ".$lot;
606     // Résultat
607     $res = $this->f->db->query($sql);
608     // Log
609     $this->f->addToLog(__METHOD__."() : db->query(\"".$sql."\")");
610     //
611     if ($this->f->isDatabaseError($res, true)) {
612     return false;
613     }
614    
615     //
616     return true;
617     }
618    
619    
620     /**
621     * Supprime les données techniques liées.
622     *
623     * @param integer $lot Identifiant de l'objet.
624     *
625     * @return boolean
626     */
627     protected function delete_donnees_techniques($lot) {
628    
629     // SQL
630     $sql = "DELETE FROM ".DB_PREFIXE."donnees_techniques
631     WHERE lot = ".$lot;
632     // Résultat
633     $res = $this->f->db->query($sql);
634     // Log
635     $this->f->addToLog(__METHOD__."() : db->query(\"".$sql."\")");
636     //
637     if ($this->f->isDatabaseError($res, true)) {
638     return false;
639     }
640    
641     //
642     return true;
643     }
644    
645    
646     /**
647     * Permet d’effectuer des actions avant la modification des données dans la
648     * base.
649     *
650     * @param mixed $id Identifiant de l'objet.
651     * @param object &$db Instance BDD.
652     * @param array $val Liste des valeurs.
653     * @param mixed $DEBUG Mode du debug.
654     *
655     * @return boolean
656     */
657     public function triggersupprimer($id, &$db, $val, $DEBUG) {
658    
659     // Suppression du lien entre le lot et les demandeurs
660     $delete_lien_lot_demandeur = $this->delete_lien_lot_demandeur($id);
661     //
662     if ($delete_lien_lot_demandeur === false) {
663     //
664     return false;
665     }
666    
667     // Suppression des données techniques lié au lot
668     $delete_donnees_techniques = $this->delete_donnees_techniques($id);
669     //
670     if ($delete_donnees_techniques === false) {
671     //
672     return false;
673     }
674    
675     //
676     return true;
677     }
678    
679    
680     /**
681     * Ajout les données techniques au lot.
682     *
683     * @return boolean
684     */
685     protected function add_donnees_techniques() {
686    
687     // Instancie la classe donnees_techniques en ajout
688     require_once '../obj/donnees_techniques.class.php';
689     $inst_dt = new donnees_techniques("]", $this->f->db, DEBUG);
690    
691     // Toutes les valeurs sont mis à null
692     foreach($inst_dt->champs as $value) {
693     //
694     $valF[$value] = null;
695     }
696    
697     // Ajout de l'identifiant du lot
698     $valF['lot'] = $this->valF[$this->clePrimaire];
699     // Identifiant du CERFA
700     $valF['cerfa'] = $this->get_cerfa_id_by_dossier_autorisation($this->valF['dossier_autorisation']);
701     // Si aucun CERFA n'est identifié
702     if ($valF['cerfa'] === '' || $valF['cerfa'] === null) {
703     //
704     $this->f->addToLog(__METHOD__."() : ERROR - "._("Aucun CERFA paramétré."), DEBUG_MODE);
705     return false;
706     }
707    
708     // Ajoute l'enregistrement dans la table donnees_techniques
709     $add = $inst_dt->ajouter($valF, $this->f->db, DEBUG);
710     //
711     if ($add === false) {
712     //
713     $this->f->addToLog(__METHOD__."() : ERROR - "._("Impossible d'ajouter les données techniques du lot."), DEBUG_MODE);
714     return false;
715     }
716    
717     //
718     return true;
719     }
720    
721    
722     /**
723     * Récupère l'instance du dossier.
724     *
725     * @param string $dossier_autorisation Identifiant de l'objet.
726     *
727     * @return object
728     */
729     public function get_inst_dossier_autorisation($dossier_autorisation = null) {
730     //
731     return $this->get_inst_common("dossier_autorisation", $dossier_autorisation);
732     }
733    
734    
735     /**
736     * Récupère l'instance du dossier.
737     *
738     * @param integer $dossier_autorisation_type_detaille Identifiant de l'objet.
739     *
740     * @return object
741     */
742     public function get_inst_dossier_autorisation_type_detaille($dossier_autorisation_type_detaille) {
743     //
744     return $this->get_inst_common("dossier_autorisation_type_detaille", $dossier_autorisation_type_detaille);
745     }
746    
747    
748     /**
749     * Récupère le cerfa des lots pour afficher les bonnes données techniques.
750     *
751     * @param string $da Identifiant de l'objet.
752     *
753     * @return integer
754     */
755     public function get_cerfa_id_by_dossier_autorisation($da) {
756    
757     // Instancie le dossier d'autorisation
758     $inst_da = $this->get_inst_dossier_autorisation($da);
759    
760     // Instancie le type détaillé du dossier d'autorisation
761     $inst_datd = $this->get_inst_dossier_autorisation_type_detaille($inst_da->getVal('dossier_autorisation_type_detaille'));
762    
763     //
764     return $inst_datd->getVal('cerfa_lot');
765    
766     }
767    
768 softime 6565 /*
769     * CONDITION - can_user_access_dossier_contexte_ajout
770     *
771     * Vérifie que l'utilisateur a bien accès au dossier d'instruction passé dans le
772     * formulaire d'ajout.
773     * Cette méthode vérifie que l'utilisateur est lié au groupe du dossier, et si le
774     * dossier est confidentiel qu'il a accès aux confidentiels de ce groupe.
775     *
776     */
777     function can_user_access_dossier_contexte_ajout() {
778 softime 5169
779 softime 6565 ($this->f->get_submitted_get_value('idxformulaire') !== null ? $id_dossier =
780     $this->f->get_submitted_get_value('idxformulaire') : $id_dossier = "");
781     //
782     if ($id_dossier !== "") {
783     require_once "../obj/dossier_instruction.class.php";
784     $dossier = new dossier_instruction($id_dossier, $f->db, DEBUG);
785     //
786     return $dossier->can_user_access_dossier();
787     }
788     return false;
789     }
790    
791     /*
792     * CONDITION - can_user_access_dossier_contexte_modification
793     *
794     * Vérifie que l'utilisateur a bien accès au dossier lié au lot instanciée.
795     * Cette méthode vérifie que l'utilisateur est lié au groupe du dossier, et si le
796     * dossier est confidentiel qu'il a accès aux confidentiels de ce groupe.
797     *
798     */
799     function can_user_access_dossier_contexte_modification() {
800    
801     $id_dossier = $this->getVal('dossier');
802     //
803     if ($id_dossier !== "" && $id_dossier !== null) {
804     require_once "../obj/dossier_instruction.class.php";
805     $dossier = new dossier_instruction($id_dossier, $f->db, DEBUG);
806     //
807     return $dossier->can_user_access_dossier();
808     }
809     return false;
810     }
811    
812    
813 mbroquet 3730 }// fin classe
814 nhaye 5254 ?>

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26