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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 11228 - (show annotations)
Tue Jan 18 17:22:30 2022 UTC (3 years ago) by softime
File size: 18093 byte(s)
* Fusion de la branche d'intégration 5.6.0-develop dans le trunk

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

Properties

Name Value
svn:keywords "Id"

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26