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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 18876 - (hide annotations)
Tue Oct 8 08:41:06 2024 UTC (4 months ago) by softime
File size: 29211 byte(s)
merge: fusion de la branche d'intégration 6.8.0-develop dans le trunk

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

Properties

Name Value
svn:keywords "Id"

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26