/[openfoncier]/trunk/sql/pgsql/dossier_instruction.inc.php
ViewVC logotype

Annotation of /trunk/sql/pgsql/dossier_instruction.inc.php

Parent Directory Parent Directory | Revision Log Revision Log


Revision 10968 - (hide annotations)
Wed Dec 15 00:06:28 2021 UTC (3 years, 1 month ago) by softime
File size: 17829 byte(s)
* Fusion de la branche d'intégration 5.4.0-develop dans le trunk

1 mbroquet 3730 <?php
2     /**
3     *
4     * @package openfoncier
5     * @version SVN : $Id: dossier_instruction.inc.php 6128 2016-03-08 15:43:42Z jymadier $
6     */
7    
8     /*Etend la classe dossier*/
9     include('../sql/pgsql/dossier.inc.php');
10    
11     /*Titre de la page*/
12     $ent = _("instruction")." -> "._("dossiers d'instruction");
13    
14     $tab_title = _("DI");
15    
16 softime 7996 // Pour le formulaire de géocodage par lot
17     // Change le nom de l'onglet principal et cache les autres onglets
18     if ($f->get_submitted_get_value('action') === '126'){
19     $tab_title = _("Géolocalisation des dossiers");
20     $sousformulaire = array();
21     }
22    
23 mbroquet 3730 /* Test SQL pour récupérer les bons champs selon la qualité du demandeur :
24     * particulier ou personne morale*/
25     $case_demandeur = "CASE WHEN demandeur.qualite='particulier'
26     THEN TRIM(CONCAT(demandeur.particulier_nom, ' ', demandeur.particulier_prenom))
27     ELSE TRIM(CONCAT(demandeur.personne_morale_raison_sociale, ' ', demandeur.personne_morale_denomination))
28     END";
29    
30     /*Formatage de l'adresse du terrain, concatenantion de plusieurs champs pour les
31     * mettrent dans une seule colonne*/
32 softime 10573 $trim_concat_terrain = '
33     TRIM(
34     COALESCE(
35     dossier.adresse_normalisee,
36     CONCAT_WS(
37     \' \',
38     dossier.terrain_adresse_voie_numero,
39     dossier.terrain_adresse_voie,
40     dossier.terrain_adresse_lieu_dit,
41     dossier.terrain_adresse_code_postal,
42     dossier.terrain_adresse_localite,
43     dossier.terrain_adresse_bp,
44     dossier.terrain_adresse_cedex
45     )
46     )
47     ) as "'.__("localisation").'"';
48 mbroquet 3730
49     /*Tables sur lesquels la requête va s'effectuer*/
50     $table = DB_PREFIXE."dossier
51 softime 6565 LEFT JOIN (
52     SELECT *
53     FROM ".DB_PREFIXE."lien_dossier_demandeur
54     INNER JOIN ".DB_PREFIXE."demandeur
55     ON demandeur.demandeur = lien_dossier_demandeur.demandeur
56     WHERE lien_dossier_demandeur.petitionnaire_principal IS TRUE
57     AND LOWER(demandeur.type_demandeur) = LOWER('petitionnaire')
58     ) as demandeur
59     ON demandeur.dossier = dossier.dossier
60 mbroquet 3730 LEFT JOIN ".DB_PREFIXE."dossier_autorisation
61     ON dossier_autorisation.dossier_autorisation = dossier.dossier_autorisation
62     LEFT JOIN ".DB_PREFIXE."dossier_autorisation_type_detaille
63     ON dossier_autorisation_type_detaille.dossier_autorisation_type_detaille = dossier_autorisation.dossier_autorisation_type_detaille
64     LEFT JOIN ".DB_PREFIXE."instructeur
65     ON dossier.instructeur = instructeur.instructeur
66     LEFT JOIN ".DB_PREFIXE."om_utilisateur
67     ON instructeur.om_utilisateur = om_utilisateur.om_utilisateur
68 softime 6565 LEFT JOIN ".DB_PREFIXE."instructeur as instructeur2
69     ON dossier.instructeur_2 = instructeur2.instructeur
70     LEFT JOIN ".DB_PREFIXE."om_utilisateur as om_utilisateur2
71     ON instructeur2.om_utilisateur = om_utilisateur2.om_utilisateur
72 mbroquet 3730 LEFT JOIN ".DB_PREFIXE."etat
73     ON dossier.etat = etat.etat
74     LEFT JOIN ".DB_PREFIXE."division
75     ON dossier.division = division.division
76     LEFT JOIN ".DB_PREFIXE."avis_decision
77     ON avis_decision.avis_decision=dossier.avis_decision
78     LEFT JOIN ".DB_PREFIXE."om_collectivite
79     ON dossier.om_collectivite=om_collectivite.om_collectivite
80 softime 6565 LEFT OUTER JOIN ".DB_PREFIXE."arrondissement
81 softime 7521 ON arrondissement.code_postal = dossier.terrain_adresse_code_postal
82 mbroquet 3730 ";
83 softime 10573 if ($f->is_option_dossier_commune_enabled()) {
84     $table .= "
85     LEFT OUTER JOIN ".DB_PREFIXE."commune
86     ON commune.commune = dossier.commune
87     ";
88     }
89 mbroquet 3730
90 softime 10713 // Ajout des colonnes concernant la demat
91     $table .=
92     "LEFT JOIN
93     (SELECT
94     dossier,
95     external_uid
96     FROM
97     ".DB_PREFIXE."lien_id_interne_uid_externe
98 softime 10808 WHERE object = 'dossier'
99     AND category = 'platau'
100     ) AS dossier_platau
101 softime 10713 ON
102     dossier_platau.dossier = dossier.dossier
103     LEFT JOIN
104     (SELECT
105     dossier,
106     external_uid
107     FROM
108     ".DB_PREFIXE."lien_id_interne_uid_externe
109 softime 10808 WHERE object = 'dossier_consultation'
110     AND category = 'platau'
111     ) AS consultation_platau
112 softime 10713 ON
113     consultation_platau.dossier = dossier.dossier
114     LEFT JOIN
115     (SELECT
116     dossier,
117     ARRAY_TO_STRING(ARRAY_AGG(external_uid ORDER BY external_uid ASC), ', ') AS external_uid
118     FROM
119     ".DB_PREFIXE."lien_id_interne_uid_externe
120     WHERE
121     object = 'piece'
122 softime 10808 AND category = 'platau'
123 softime 10713 GROUP BY
124     dossier) AS pieces_platau
125     ON
126     pieces_platau.dossier = dossier.dossier
127     LEFT JOIN
128     (SELECT
129     dossier,
130     ARRAY_TO_STRING(ARRAY_AGG(object || ' : ' || external_uid), ', ') AS external_uid
131     FROM
132     ".DB_PREFIXE."lien_id_interne_uid_externe
133     WHERE
134     object != 'piece'
135     AND object != 'dossier'
136     AND object != 'dossier_consultation'
137 softime 10808 AND category = 'platau'
138 softime 10713 GROUP BY
139     dossier) AS autres_platau
140     ON
141     autres_platau.dossier = dossier.dossier
142 softime 10968 LEFT JOIN
143     (SELECT DISTINCT(dossier_instruction), source_depot
144     FROM ".DB_PREFIXE."demande) AS demande
145 softime 10869 ON demande.dossier_instruction = dossier.dossier
146 softime 10713 ";
147    
148 softime 10573 $champ_date_depot_mairie = 'to_char(dossier.date_depot_mairie ,\'DD/MM/YYYY\') as "'._("date_depot_mairie").'"';
149    
150 mbroquet 3730 /*Champs du début de la requête*/
151     $champAffiche_debut_commun = array(
152     'dossier.dossier as "'._("dossier").'"',
153 softime 10573 'dossier.dossier_libelle as "'._("dossier").'"'
154     );
155     if ($f->is_option_dossier_commune_enabled()) {
156     $champAffiche_debut_commun[] = 'commune.libelle as "'.__("commune").'"';
157     }
158     array_push($champAffiche_debut_commun,
159 mbroquet 3730 $case_demandeur.' as "'._("petitionnaire").'"',
160     $trim_concat_terrain,
161     'dossier_autorisation_type_detaille.libelle as "'._("nature_dossier").'"',
162     'to_char(dossier.date_depot ,\'DD/MM/YYYY\') as "'._("date_depot").'"',
163     'to_char(dossier.date_complet ,\'DD/MM/YYYY\') as "'._("date_complet").'"',
164     'CASE WHEN dossier.incomplet_notifie IS TRUE AND dossier.incompletude IS TRUE
165     THEN to_char(dossier.date_limite_incompletude ,\'DD/MM/YYYY\')
166     ELSE to_char(dossier.date_limite ,\'DD/MM/YYYY\')
167 softime 10573 END as "'._("date_limite").'"'
168 mbroquet 3730 );
169    
170 softime 10573 if ($f->is_option_date_depot_mairie_enabled() === true) {
171     $champAffiche_debut_commun[] = $champ_date_depot_mairie;
172     }
173 softime 7521 /**
174     * Colonne "Nature des travaux" (regroupe les descriptions des données
175     * techniques).
176     */
177     // Nombre max de caractères à afficher dans la colonne de la nature des travaux
178     // avant de tronquer la valeur et d'ajouter une ellipse "…"
179     $max_chars = 40;
180     //
181     $nature_des_travaux_select = "
182     CASE WHEN char_length(nature_des_travaux) <= ".$max_chars." THEN
183     CONCAT('<span title=\"',
184     nature_des_travaux,
185     '\">',
186     replace(nature_des_travaux, '\n', '<br/>'),
187     '</span>')
188     ELSE
189     CONCAT('<span title=\"',
190     nature_des_travaux,
191     '\">',
192     replace(left(nature_des_travaux, ".$max_chars."), '\n', '<br/>') || '…',
193     '</span>')
194     END as \""._("nature des travaux").'"';
195 softime 10573 // description/nature des travaux. En cas de modif, bloc de code aussi présent dans
196     // dossier.form.inc.php (le formulaire du DI)', 'om_requete' et 'stats à la demande'
197 softime 7521 $nature_des_travaux_from = "
198     INNER JOIN (
199     SELECT
200     CONCAT_WS(
201     '\n',
202     CASE WHEN co_projet_desc = '' THEN
203     NULL
204     ELSE
205     TRIM(co_projet_desc)
206     END,
207     CASE WHEN ope_proj_desc = '' THEN
208     NULL
209     ELSE
210     TRIM(ope_proj_desc)
211     END,
212     CASE WHEN am_projet_desc = '' THEN
213     NULL
214     ELSE
215     TRIM(am_projet_desc)
216     END,
217     CASE WHEN dm_projet_desc = '' THEN
218     NULL
219     ELSE
220     TRIM(dm_projet_desc)
221     END,
222     CASE WHEN donnees_techniques.erp_cstr_neuve IS TRUE
223     THEN '".str_replace("'", "''", _('erp_cstr_neuve'))."' END,
224     CASE WHEN donnees_techniques.erp_trvx_acc IS TRUE
225     THEN '".str_replace("'", "''", _('erp_trvx_acc'))."' END,
226     CASE WHEN donnees_techniques.erp_extension IS TRUE
227     THEN '".str_replace("'", "''", _('erp_extension'))."' END,
228     CASE WHEN donnees_techniques.erp_rehab IS TRUE
229     THEN '".str_replace("'", "''", _('erp_rehab'))."' END,
230     CASE WHEN donnees_techniques.erp_trvx_am IS TRUE
231     THEN '".str_replace("'", "''", _('erp_trvx_am'))."' END,
232     CASE WHEN donnees_techniques.erp_vol_nouv_exist IS TRUE
233     THEN '".str_replace("'", "''", _('erp_vol_nouv_exist'))."' END
234     ) as nature_des_travaux,
235 softime 7685 dossier_instruction
236 softime 7521 FROM ".DB_PREFIXE."donnees_techniques
237     ) as nature_des_travaux
238 softime 7685 ON nature_des_travaux.dossier_instruction = dossier.dossier
239 softime 7521 ";
240     // On ne veut cette colonne que dans les trois listings "Recherche",
241     // "Mes encours" et "Tous les encours"
242     $listings = array("dossier_instruction",
243     "dossier_instruction_mes_encours",
244     "dossier_instruction_tous_encours");
245     //
246     $is_in_obj_whitelist = in_array($obj, $listings);
247     // La variable $retourformulaire permet de s'assurer que l'on est pas dans un
248     // sous-tableau
249     if ($is_in_obj_whitelist === true && $retourformulaire === '') {
250     // Modifie les colonnes à afficher en début du tableau
251     $champAffiche_debut_commun = array(
252     'dossier.dossier as "'._("dossier").'"',
253 softime 10573 'dossier.dossier_libelle as "'._("dossier").'"'
254     );
255     if ($f->is_option_dossier_commune_enabled()) {
256     $champAffiche_debut_commun[] = 'commune.libelle as "'.__("commune").'"';
257     }
258     array_push($champAffiche_debut_commun,
259 softime 7521 $case_demandeur.' as "'._("petitionnaire").'"',
260     $trim_concat_terrain,
261     'dossier_autorisation_type_detaille.libelle as "'._("nature_dossier").'"',
262     $nature_des_travaux_select,
263     'to_char(dossier.date_depot ,\'DD/MM/YYYY\') as "'._("date_depot").'"',
264     'to_char(dossier.date_complet ,\'DD/MM/YYYY\') as "'._("date_complet").'"',
265     'CASE WHEN dossier.incomplet_notifie IS TRUE AND dossier.incompletude IS TRUE
266     THEN to_char(dossier.date_limite_incompletude ,\'DD/MM/YYYY\')
267     ELSE to_char(dossier.date_limite ,\'DD/MM/YYYY\')
268 softime 10573 END as "'._("date_limite").'"'
269 softime 7521 );
270 softime 10573 if ($f->is_option_date_depot_mairie_enabled() === true) {
271     $champAffiche_debut_commun[] = $champ_date_depot_mairie;
272     }
273 softime 7521 // Modifie également le from
274     $table .= $nature_des_travaux_from;
275     }
276    
277 mbroquet 3730 /*Champs de la fin de la requête*/
278     $champAffiche_fin_commun = array(
279     'etat.libelle as "'._("etat").'"',
280     'CASE WHEN dossier.enjeu_urba is TRUE
281     THEN \'<span class="om-icon om-icon-16 om-icon-fix enjeu_urba-16" title="'._("Enjeu URBA").'">URBA</span>\'
282     ELSE \'\'
283     END ||
284     CASE WHEN dossier.enjeu_erp is TRUE
285     THEN \'<span class="om-icon om-icon-16 om-icon-fix enjeu_erp-16" title="'._("Enjeu ERP").'">ERP</span>\'
286     ELSE \'\'
287     END
288     as "'._("enjeu").'"',
289     );
290 softime 7521
291 mbroquet 3730 //
292     if ($_SESSION['niveau'] == '2') {
293     array_push($champAffiche_fin_commun, "om_collectivite.libelle as \""._("collectivite")."\"");
294     }
295    
296 softime 6565 $selection .= "AND groupe.code != 'CTX'";
297    
298 mbroquet 3730 /*Liste des champs affichés dans le tableau de résultat*/
299 softime 7521 $champAffiche = array_merge(
300     $champAffiche_debut_commun,
301     array('instructeur.nom as "'._("instructeur").'"',
302     'division.code as "'._("division").'"',
303     ),
304     $champAffiche_fin_commun
305     );
306 mbroquet 3730
307 softime 6565 // Suppression du bouton d'ajout, qui n'est pas affiché par défaut dans les listings de
308     // dossiers d'instruction
309     $tab_actions['corner']['ajouter'] = NULL;
310    
311 softime 10869 if (isset($_GET['message_help'])
312     && ! is_null($_GET['message_help'])
313     && $_GET['message_help'] != ""
314     && $_GET['module'] == 'tab') {
315    
316     $tab_actions['left']["consulter"]['id'] .= '&amp;message_help='.urlencode($_GET['message_help']);
317     $tab_actions['content'] = $tab_actions['left']["consulter"];
318     }
319    
320 mbroquet 3730 // Liste des autres dossiers d'instructions
321     if ($retourformulaire== 'dossier_instruction'){
322 softime 10573 $champAffiche = array(
323 mbroquet 3730 'b.dossier as "'._("dossier_instruction").'"',
324 softime 10573 'b.dossier_libelle as "'._("dossier").'"'
325     );
326     if ($f->is_option_dossier_commune_enabled()) {
327     $champAffiche[] = 'c.libelle as "'._("commune").'"';
328     }
329     array_push($champAffiche,
330 mbroquet 3730 'dossier_instruction_type.libelle as "'._("demande_type").'"',
331     'to_char(b.date_depot ,\'DD/MM/YYYY\') as "'._("date_depot").'"',
332 softime 10573 'b.etat as "'._("etat").'"'
333 mbroquet 3730 );
334    
335     $table =DB_PREFIXE.'dossier as a
336     JOIN '.DB_PREFIXE.'dossier_autorisation
337     ON a.dossier_autorisation=dossier_autorisation.dossier_autorisation
338     JOIN '.DB_PREFIXE.'dossier as b
339     ON b.dossier_autorisation=dossier_autorisation.dossier_autorisation
340     JOIN '.DB_PREFIXE.'dossier_instruction_type
341     ON dossier_instruction_type.dossier_instruction_type = b.dossier_instruction_type';
342 softime 10573 if ($f->is_option_dossier_commune_enabled()) {
343     $table .= '
344     JOIN '.DB_PREFIXE.'commune as c
345     ON c.commune = dossier.commune';
346     }
347 softime 8989 $selection = 'WHERE a.dossier=\''.$f->db->escapeSimple($idxformulaire).'\'';
348 mbroquet 3730 $tri= "order by b.date_depot ASC";
349    
350 softime 6565 //
351 mbroquet 3730 $tab_actions['left']["consulter"] =
352 softime 7996 array('lien' => ''.OM_ROUTE_FORM.'&obj=dossier_instruction&amp;action=3'.'&amp;idx=',
353 mbroquet 3730 'id' => '&retourformulaire='.$retourformulaire.'&retour=',
354     'lib' => '<span class="om-icon om-icon-16 om-icon-fix consult-16" title="'._('Consulter').'">'._('Consulter').'</span>',
355     'rights' => array('list' => array('dossier_instruction', 'dossier_instruction_consulter'), 'operator' => 'OR'),
356     'ordre' => 10,
357     'ajax' => false);
358    
359     $tab_actions['content'] = $tab_actions['left']["consulter"];
360     $options[] = array(
361     "type"=>"pagination_select",
362     "display"=>false,
363     );
364     }
365 softime 7521 if ( $retourformulaire == "dossier_autorisation") {
366 softime 6565
367     //
368 mbroquet 3730 $tab_actions['left']["consulter"] =
369 softime 7996 array('lien' => ''.OM_ROUTE_FORM.'&obj=dossier_instruction&amp;action=3&amp;idx=',
370 mbroquet 3730 'id' => '&amp;retourformulaire='.$retourformulaire,
371     'lib' => '<span class="om-icon om-icon-16 om-icon-fix consult-16" title="'._('Consulter').'">'._('Consulter').'</span>',
372     'rights' => array('list' => array('dossier_instruction', 'dossier_instruction_consulter'), 'operator' => 'OR'),
373     'ordre' => 10,
374     'ajax' => false);
375    
376     $tab_actions['content'] = $tab_actions['left']["consulter"] ;
377     }
378    
379    
380     // Affichage du bouton de redirection vers le SIG externe si configuré
381     // XXX Ajouter filtre pour afficher l'icone géolocalisation en fonction de la conf SIG du dossier
382     if($f->getParameter('option_sig') == 'sig_externe') {
383     $tab_actions['left']["localiser-sig-externe"] = array(
384 softime 7996 'lien' => ''.OM_ROUTE_FORM.'&obj=dossier_instruction&amp;action=140&amp;idx=',
385 mbroquet 3730 'id' => '',
386     'lib' => '<span class="om-icon om-icon-16 om-icon-fix sig-16" title="'._('Localiser').'">'._('Localiser').'</span>',
387     'rights' => array('list' => array('dossier_instruction', 'dossier_instruction_consulter'), 'operator' => 'OR'),
388     'ordre' => 20,
389     'target' => "_SIG",
390     'ajax' => false);
391     }
392    
393     // Si filtre DI auxquels on peut proposer une autre décision
394     if (isset($extra_parameters["filtre_decision"])
395     && $extra_parameters["filtre_decision"] == true) {
396    
397     // Augmentation de la limite
398     $serie = 50;
399     // Réinitialisation des options
400     $options = array();
401     // Suppression de la recherche avancée
402     $options[] = array(
403     'type' => 'search',
404     'display' => false);
405     // Suppression du sélecteur de pages
406     $options[] = array(
407     'type' => 'pagination_select',
408     'display' => false);
409     // Ajout jointure
410     $table .= "JOIN ".DB_PREFIXE."instruction ON instruction.instruction = (
411     SELECT instruction
412     FROM ".DB_PREFIXE."instruction
413     JOIN ".DB_PREFIXE."evenement on instruction.evenement=evenement.evenement
414     WHERE instruction.dossier = dossier.dossier
415     AND evenement.retour IS FALSE
416     ORDER BY date_evenement DESC, instruction DESC
417     LIMIT 1
418     )
419     JOIN ".DB_PREFIXE."evenement ON instruction.evenement=evenement.evenement
420     JOIN ".DB_PREFIXE."dossier_instruction_type ON dossier.dossier_instruction_type=dossier_instruction_type.dossier_instruction_type AND dossier_instruction_type.code IN ('P', 'T', 'M')";
421     // Modification sélection
422     $selection = "WHERE
423 softime 6565 groupe.code != 'CTX'
424     AND ((evenement.type = 'arrete' AND instruction.om_final_instruction IS TRUE) OR evenement.type = 'changement_decision')
425 mbroquet 3730 AND evenement.retour IS FALSE
426     AND instruction.date_retour_signature IS NULL
427     AND instruction.date_envoi_rar IS NULL
428     AND instruction.date_retour_rar IS NULL
429     AND instruction.date_envoi_controle_legalite IS NULL
430     AND instruction.date_retour_controle_legalite IS NULL
431     AND etat.statut = 'encours'
432     AND om_utilisateur.login != '".$_SESSION['login']."'";
433     // Si collectivité de l'utilisateur niveau mono alors filtre sur celle-ci
434     if ($f->isCollectiviteMono($_SESSION['collectivite']) === true) {
435     $selection .= " AND dossier.om_collectivite=".$_SESSION['collectivite'];
436     }
437     // Modification tri
438     $tri = " ORDER BY dossier.dossier ";
439     }
440    
441 softime 6565 // Gestion des groupes et confidentialité
442     include ('../sql/pgsql/filter_group.inc.php');
443    
444 softime 10573 ?>

Properties

Name Value
svn:keywords "Id"

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26