/[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 14542 - (show annotations)
Thu Apr 20 13:21:47 2023 UTC (21 months, 2 weeks ago) by softime
File size: 26294 byte(s)
chore(branch): fusion de la branche d'intégration 5.17.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 include "../sql/pgsql/app_om_tab_common_select.inc.php";
11
12 /*Titre de la page*/
13 $ent = _("instruction")." -> "._("dossiers d'instruction");
14
15 $tab_title = _("DI");
16
17 // Pour le formulaire de géocodage par lot
18 // Change le nom de l'onglet principal et cache les autres onglets
19 if ($f->get_submitted_get_value('action') === '126'){
20 $tab_title = _("Géolocalisation des dossiers");
21 $sousformulaire = array();
22 }
23
24 /* Test SQL pour récupérer les bons champs selon la qualité du demandeur :
25 * particulier ou personne morale*/
26 $case_demandeur = "CASE WHEN demandeur.qualite='particulier'
27 THEN TRIM(CONCAT(demandeur.particulier_nom, ' ', demandeur.particulier_prenom))
28 ELSE TRIM(CONCAT(demandeur.personne_morale_raison_sociale, ' ', demandeur.personne_morale_denomination))
29 END";
30
31 /*Formatage de l'adresse du terrain, concatenantion de plusieurs champs pour les
32 * mettrent dans une seule colonne*/
33 $trim_concat_terrain = '
34 TRIM(
35 CASE
36 WHEN dossier.adresse_normalisee IS NULL
37 OR TRIM(dossier.adresse_normalisee) = \'\'
38 THEN
39 '.DB_PREFIXE.'adresse(
40 dossier.terrain_adresse_voie_numero::text,
41 dossier.terrain_adresse_voie::text,
42 \'\'::text,
43 dossier.terrain_adresse_lieu_dit::text,
44 dossier.terrain_adresse_bp::text,
45 dossier.terrain_adresse_code_postal::text,
46 dossier.terrain_adresse_localite::text,
47 dossier.terrain_adresse_cedex::text,
48 \'\'::text,
49 \' \'::text
50 )
51 ELSE
52 dossier.adresse_normalisee
53 END
54 ) as "'.__("localisation").'"';
55
56 /*Tables sur lesquels la requête va s'effectuer*/
57 $table = sprintf(
58 '%1$sdossier
59 -- Recherche le pétitionnaire principal du dossier (unique !)
60 LEFT JOIN (
61 SELECT
62 *
63 FROM
64 %1$slien_dossier_demandeur
65 INNER JOIN %1$sdemandeur
66 ON demandeur.demandeur = lien_dossier_demandeur.demandeur
67 WHERE
68 lien_dossier_demandeur.petitionnaire_principal IS TRUE
69 AND LOWER(demandeur.type_demandeur) = LOWER(\'petitionnaire\')
70 ) as demandeur
71 ON demandeur.dossier = dossier.dossier
72 -- Recherche le type de DATD
73 LEFT JOIN %1$sdossier_instruction_type
74 ON dossier_instruction_type.dossier_instruction_type = dossier.dossier_instruction_type
75 LEFT JOIN %1$sdossier_autorisation_type_detaille
76 ON dossier_autorisation_type_detaille.dossier_autorisation_type_detaille = dossier_instruction_type.dossier_autorisation_type_detaille
77 -- Recherche l instructeur du dossier
78 LEFT JOIN %1$sinstructeur
79 ON dossier.instructeur = instructeur.instructeur
80 LEFT JOIN %1$som_utilisateur
81 ON instructeur.om_utilisateur = om_utilisateur.om_utilisateur
82 -- Recherche l instructeur 2 du dossier
83 LEFT JOIN %1$sinstructeur as instructeur_secondaire
84 ON dossier.instructeur_2 = instructeur_secondaire.instructeur
85 LEFT JOIN %1$som_utilisateur as utilisateur_2
86 ON instructeur_secondaire.om_utilisateur = utilisateur_2.om_utilisateur
87 -- Recherche l etat du dossier
88 LEFT JOIN %1$setat
89 ON dossier.etat = etat.etat
90 -- Recherche la division de rattachement du dossier (différente de celle de l instructeur)
91 LEFT JOIN %1$sdivision
92 ON dossier.division = division.division
93 -- Recherche l avis de décision
94 LEFT JOIN %1$savis_decision
95 ON avis_decision.avis_decision=dossier.avis_decision
96 -- Recherche la collectivite de rattachement du dossier
97 LEFT JOIN %1$som_collectivite
98 ON dossier.om_collectivite=om_collectivite.om_collectivite
99 -- Recherche l arrondissement du dossier
100 LEFT JOIN %1$sarrondissement
101 ON arrondissement.code_postal = dossier.terrain_adresse_code_postal
102 -- Récupère la demande qui a créé le type dossier du dossier
103 LEFT JOIN (%1$sdemande
104 JOIN %1$sdemande_type
105 ON demande.demande_type = demande_type.demande_type
106 )
107 ON demande.dossier_instruction = dossier.dossier
108 AND demande_type.dossier_instruction_type = dossier.dossier_instruction_type
109 ',
110 DB_PREFIXE
111 );
112 if ($f->is_option_dossier_commune_enabled()) {
113 $table .= "
114 LEFT OUTER JOIN ".DB_PREFIXE."commune
115 ON commune.commune = dossier.commune
116 ";
117 }
118
119 $nature_travaux_from = "LEFT JOIN (
120 SELECT ntc.dossier, string_agg(ntc.libelle::text, '\n' order by ntc.libelle) as libelle
121 FROM
122 (SELECT DISTINCT
123 dossier,
124 famille_travaux.libelle as famille_travaux,
125 CONCAT(famille_travaux.libelle, ' / ', nature_travaux.libelle) as libelle
126 FROM
127 ".DB_PREFIXE."lien_dossier_nature_travaux
128 INNER JOIN
129 ".DB_PREFIXE."nature_travaux
130 ON lien_dossier_nature_travaux.nature_travaux = nature_travaux.nature_travaux
131 INNER JOIN
132 ".DB_PREFIXE."famille_travaux
133 ON nature_travaux.famille_travaux = famille_travaux.famille_travaux ORDER BY famille_travaux.libelle) as ntc
134 GROUP BY dossier ORDER BY libelle) as nature_travaux ON nature_travaux.dossier = dossier.dossier
135 ";
136 // Ajout des colonnes concernant la demat
137 if ($f->get_submitted_get_value('mode') === 'export_csv') {
138 // Jointure permettant d'afficher l'id platau du service consultant et le
139 // libellé du service consultant dans les exports si le mode service consulté est
140 // actif
141 $table .= $f->is_option_mode_service_consulte_enabled() === true ?
142 'LEFT JOIN '.DB_PREFIXE.'consultation_entrante
143 ON dossier.dossier = consultation_entrante.dossier
144 ' :
145 '';
146 $table .=
147 "LEFT JOIN
148 (SELECT
149 dossier,
150 external_uid
151 FROM
152 ".DB_PREFIXE."lien_id_interne_uid_externe
153 WHERE object = 'dossier'
154 AND category = 'platau'
155 ) AS dossier_platau
156 ON
157 dossier_platau.dossier = dossier.dossier
158 LEFT JOIN
159 (SELECT
160 dossier,
161 external_uid
162 FROM
163 ".DB_PREFIXE."lien_id_interne_uid_externe
164 WHERE object = 'dossier_consultation'
165 AND category = 'platau'
166 ) AS consultation_platau
167 ON
168 consultation_platau.dossier = dossier.dossier
169 LEFT JOIN
170 (SELECT
171 dossier,
172 ARRAY_TO_STRING(ARRAY_AGG(external_uid ORDER BY external_uid ASC), ', ') AS external_uid
173 FROM
174 ".DB_PREFIXE."lien_id_interne_uid_externe
175 WHERE
176 object = 'piece'
177 AND category = 'platau'
178 GROUP BY
179 dossier) AS pieces_platau
180 ON
181 pieces_platau.dossier = dossier.dossier
182 LEFT JOIN
183 (SELECT
184 dossier,
185 ARRAY_TO_STRING(ARRAY_AGG(object || ' : ' || external_uid), ', ') AS external_uid
186 FROM
187 ".DB_PREFIXE."lien_id_interne_uid_externe
188 WHERE
189 object != 'piece'
190 AND object != 'dossier'
191 AND object != 'dossier_consultation'
192 AND category = 'platau'
193 GROUP BY
194 dossier) AS autres_platau
195 ON
196 autres_platau.dossier = dossier.dossier
197 ";
198 $nature_travaux_from = "LEFT JOIN (
199 SELECT ftc.dossier, string_agg(ftc.libelle::text, ', ') as famille_travaux_libelle
200 FROM
201 (SELECT DISTINCT
202 dossier,
203 famille_travaux.libelle
204 FROM
205 ".DB_PREFIXE."lien_dossier_nature_travaux
206 INNER JOIN
207 ".DB_PREFIXE."nature_travaux
208 ON lien_dossier_nature_travaux.nature_travaux = nature_travaux.nature_travaux
209 INNER JOIN
210 ".DB_PREFIXE."famille_travaux
211 ON nature_travaux.famille_travaux = famille_travaux.famille_travaux
212 ORDER BY famille_travaux.libelle) as ftc
213 GROUP BY dossier) as famille_travaux ON famille_travaux.dossier = dossier.dossier
214 LEFT JOIN (
215 SELECT ntc.dossier, string_agg(ntc.libelle::text, ', ') as nature_travaux_libelle
216 FROM
217 (SELECT DISTINCT
218 dossier,
219 nature_travaux.libelle
220 FROM
221 ".DB_PREFIXE."lien_dossier_nature_travaux
222 INNER JOIN
223 ".DB_PREFIXE."nature_travaux
224 ON lien_dossier_nature_travaux.nature_travaux = nature_travaux.nature_travaux
225 ORDER BY nature_travaux.libelle) as ntc
226 GROUP BY dossier) as nature_travaux ON nature_travaux.dossier = dossier.dossier
227 ";
228 }
229
230 $champ_date_depot_mairie = 'to_char(dossier.date_depot_mairie ,\'DD/MM/YYYY\') as "'._("date_depot_mairie").'"';
231
232 /*Champs du début de la requête*/
233 $champAffiche_debut_commun = array(
234 'dossier.dossier as "'._("dossier").'"',
235 'dossier.geom as "geom_picto"',
236 'demande.source_depot as "demat_picto"',
237 $select__dossier_libelle__column_as,
238 );
239 if ($f->is_option_dossier_commune_enabled()) {
240 $champAffiche_debut_commun[] = 'commune.libelle as "'.__("commune").'"';
241 }
242 array_push($champAffiche_debut_commun,
243 $case_demandeur.' as "'._("petitionnaire").'"',
244 $trim_concat_terrain,
245 'dossier_autorisation_type_detaille.libelle as "'._("nature_dossier").'"',
246 'to_char(dossier.date_depot ,\'DD/MM/YYYY\') as "'._("date_depot").'"',
247 'to_char(dossier.date_complet ,\'DD/MM/YYYY\') as "'._("date_complet").'"',
248 'CASE WHEN dossier.incomplet_notifie IS TRUE AND dossier.incompletude IS TRUE
249 THEN to_char(dossier.date_limite_incompletude ,\'DD/MM/YYYY\')
250 ELSE to_char(dossier.date_limite ,\'DD/MM/YYYY\')
251 END as "'._("date_limite").'"'
252 );
253
254 if ($f->is_option_date_depot_mairie_enabled() === true) {
255 $champAffiche_debut_commun[] = $champ_date_depot_mairie;
256 }
257 /**
258 * Colonne "Nature des travaux" (regroupe les descriptions des données
259 * techniques).
260 */
261 // Nombre max de caractères à afficher dans la colonne de la nature des travaux
262 // avant de tronquer la valeur et d'ajouter une ellipse "…"
263 $max_chars = 40;
264 //
265 $description_projet_select = "
266 CASE WHEN nature_travaux.libelle IS NULL AND char_length(description_projet) <= ".$max_chars." THEN
267 CONCAT('<span class=\"nature_travaux_cursor\" title=\"',
268 description_projet,
269 '\">',
270 replace(description_projet, '\n', '<br/>'),
271 '</span>')
272 WHEN nature_travaux.libelle IS NULL AND char_length(description_projet) > ".$max_chars." THEN
273 CONCAT('<span class=\"nature_travaux_cursor\" title=\"',
274 description_projet,
275 '\">',
276 replace(left(description_projet, ".$max_chars."), '\n', '<br/>') || '…',
277 '</span>')
278 WHEN nature_travaux.libelle IS NOT NULL AND ARRAY_LENGTH(STRING_TO_ARRAY(nature_travaux.libelle, '\n'), 1) = 1 THEN
279 CONCAT('<span class=\"nature_travaux_cursor\" title=\"',
280 nature_travaux.libelle,
281 '\n',
282 description_projet,
283 '\">',
284 replace(nature_travaux.libelle, '\n', '<br/>'),
285 '</span>')
286 WHEN nature_travaux.libelle IS NOT NULL AND ARRAY_LENGTH(STRING_TO_ARRAY(nature_travaux.libelle, '\n'), 1) > 1 THEN
287 CONCAT('<span class=\"nature_travaux_cursor\" title=\"',
288 nature_travaux.libelle,
289 '\n',
290 description_projet,
291 '\">',
292 split_part(nature_travaux.libelle, '\n', 1), '<br/>', '[...]',
293 '</span>')
294 END as \""._("nature des travaux").'"';
295 // description/nature des travaux. En cas de modif, bloc de code aussi présent dans
296 // dossier.form.inc.php (le formulaire du DI)', 'om_requete' et 'stats à la demande'
297 $description_projet_from = "
298 INNER JOIN (
299 SELECT
300 CONCAT_WS(
301 '\n',
302 CASE WHEN co_projet_desc = '' THEN
303 NULL
304 ELSE
305 TRIM(co_projet_desc)
306 END,
307 CASE WHEN ope_proj_desc = '' THEN
308 NULL
309 ELSE
310 TRIM(ope_proj_desc)
311 END,
312 CASE WHEN am_projet_desc = '' THEN
313 NULL
314 ELSE
315 TRIM(am_projet_desc)
316 END,
317 CASE WHEN dm_projet_desc = '' THEN
318 NULL
319 ELSE
320 TRIM(dm_projet_desc)
321 END,
322 CASE WHEN donnees_techniques.erp_cstr_neuve IS TRUE
323 THEN '".str_replace("'", "''", _('erp_cstr_neuve'))."' END,
324 CASE WHEN donnees_techniques.erp_trvx_acc IS TRUE
325 THEN '".str_replace("'", "''", _('erp_trvx_acc'))."' END,
326 CASE WHEN donnees_techniques.erp_extension IS TRUE
327 THEN '".str_replace("'", "''", _('erp_extension'))."' END,
328 CASE WHEN donnees_techniques.erp_rehab IS TRUE
329 THEN '".str_replace("'", "''", _('erp_rehab'))."' END,
330 CASE WHEN donnees_techniques.erp_trvx_am IS TRUE
331 THEN '".str_replace("'", "''", _('erp_trvx_am'))."' END,
332 CASE WHEN donnees_techniques.erp_vol_nouv_exist IS TRUE
333 THEN '".str_replace("'", "''", _('erp_vol_nouv_exist'))."' END
334 ) as description_projet,
335 dossier_instruction
336 FROM ".DB_PREFIXE."donnees_techniques
337 ) as description_projet
338 ON description_projet.dossier_instruction = dossier.dossier
339 ";
340 // On ne veut cette colonne que dans les trois listings "Recherche",
341 // "Mes encours" et "Tous les encours"
342 $listings = array("dossier_instruction",
343 "dossier_instruction_mes_encours",
344 "dossier_instruction_tous_encours");
345 //
346 $is_in_obj_whitelist = in_array($obj, $listings);
347 // La variable $retourformulaire permet de s'assurer que l'on est pas dans un
348 // sous-tableau
349 if ($is_in_obj_whitelist === true && $retourformulaire === '') {
350 // Modifie les colonnes à afficher en début du tableau
351 $champAffiche_debut_commun = array(
352 'dossier.dossier as "'._("dossier").'"',
353 'dossier.geom as "geom_picto"',
354 'demande.source_depot as "demat_picto"',
355 $select__dossier_libelle__column_as,
356 );
357 if ($f->is_option_dossier_commune_enabled()) {
358 $champAffiche_debut_commun[] = 'commune.libelle as "'.__("commune").'"';
359 }
360 array_push($champAffiche_debut_commun,
361 $case_demandeur.' as "'._("petitionnaire").'"',
362 $trim_concat_terrain,
363 'dossier_autorisation_type_detaille.libelle as "'._("nature_dossier").'"',
364 $description_projet_select,
365 'to_char(dossier.date_depot ,\'DD/MM/YYYY\') as "'._("date_depot").'"',
366 'to_char(dossier.date_complet ,\'DD/MM/YYYY\') as "'._("date_complet").'"',
367 'CASE WHEN dossier.incomplet_notifie IS TRUE AND dossier.incompletude IS TRUE
368 THEN to_char(dossier.date_limite_incompletude ,\'DD/MM/YYYY\')
369 ELSE to_char(dossier.date_limite ,\'DD/MM/YYYY\')
370 END as "'._("date_limite").'"'
371 );
372 if ($f->is_option_date_depot_mairie_enabled() === true) {
373 $champAffiche_debut_commun[] = $champ_date_depot_mairie;
374 }
375 // Modifie également le from
376 $table .= $description_projet_from.' '.$nature_travaux_from;
377 }
378
379 /*Champs de la fin de la requête*/
380 $champAffiche_fin_commun = array(
381 'etat.libelle as "'._("etat").'"',
382 'CASE WHEN dossier.enjeu_urba is TRUE
383 THEN \'<span class="om-icon om-icon-16 om-icon-fix enjeu_urba-16" title="'._("Enjeu URBA").'">URBA</span>\'
384 ELSE \'\'
385 END ||
386 CASE WHEN dossier.enjeu_erp is TRUE
387 THEN \'<span class="om-icon om-icon-16 om-icon-fix enjeu_erp-16" title="'._("Enjeu ERP").'">ERP</span>\'
388 ELSE \'\'
389 END
390 as "'._("enjeu").'"',
391 );
392
393 //
394 if ($_SESSION['niveau'] == '2') {
395 array_push($champAffiche_fin_commun, "om_collectivite.libelle as \""._("collectivite")."\"");
396 }
397
398 // Identifie s'il y a déjà un WHERE dans la requête
399 if (stripos($selection, "WHERE") === false) {
400 $selection .= " WHERE ";
401 } else {
402 $selection .= " AND ";
403 }
404 // Les dossiers des contentieux sont gérés dans un autre listing, il ne doivent
405 // pas apparaître dans la liste des dossiers d'instruction de l'onglet instruction -> recherche
406 // /!\ l'opérateur != exclus les valeurs null. Il faut donc préciser que les groupe ayant un
407 // code NULL doivent bien être récupérés.
408 $selection .= " (groupe.code IS NULL OR groupe.code != 'CTX')";
409
410 /*Liste des champs affichés dans le tableau de résultat*/
411 $champAffiche = array_merge(
412 $champAffiche_debut_commun,
413 array('instructeur.nom as "'._("instructeur").'"',
414 'division.code as "'._("division").'"',
415 ),
416 $champAffiche_fin_commun
417 );
418
419 // Suppression du bouton d'ajout, qui n'est pas affiché par défaut dans les listings de
420 // dossiers d'instruction
421 $tab_actions['corner']['ajouter'] = NULL;
422
423 if (isset($_GET['message_help'])
424 && ! is_null($_GET['message_help'])
425 && $_GET['message_help'] != ""
426 && $_GET['module'] == 'tab') {
427
428 $tab_actions['left']["consulter"]['id'] .= '&amp;message_help='.urlencode($_GET['message_help']);
429 $tab_actions['content'] = $tab_actions['left']["consulter"];
430 }
431
432 // Liste des autres dossiers d'instructions
433 if ($retourformulaire== 'dossier_instruction'){
434 $champAffiche = array(
435 'dossier.dossier as "'._("dossier_instruction").'"',
436 'dossier.geom as "geom_picto"',
437 'demande.source_depot as "demat_picto"',
438 $select__dossier_libelle__column_as,
439 );
440 if ($f->is_option_dossier_commune_enabled()) {
441 $champAffiche[] = 'c.libelle as "'._("commune").'"';
442 }
443 array_push($champAffiche,
444 'dossier_instruction_type.libelle as "'._("demande_type").'"',
445 'to_char(dossier.date_depot ,\'DD/MM/YYYY\') as "'._("date_depot").'"',
446 'dossier.etat as "'._("etat").'"'
447 );
448
449 $table =DB_PREFIXE.'dossier as a
450 JOIN '.DB_PREFIXE.'dossier_autorisation
451 ON a.dossier_autorisation=dossier_autorisation.dossier_autorisation
452 JOIN '.DB_PREFIXE.'dossier as dossier
453 ON dossier.dossier_autorisation=dossier_autorisation.dossier_autorisation
454 JOIN '.DB_PREFIXE.'dossier_instruction_type
455 ON dossier_instruction_type.dossier_instruction_type = dossier.dossier_instruction_type';
456 if ($f->is_option_dossier_commune_enabled()) {
457 $table .= '
458 JOIN '.DB_PREFIXE.'commune as c
459 ON c.commune = dossier.commune';
460 }
461 $selection = 'WHERE a.dossier=\''.$f->db->escapeSimple($idxformulaire).'\'';
462 $tri= "order by dossier.date_depot ASC";
463
464 //
465 $tab_actions['left']["consulter"] =
466 array('lien' => ''.OM_ROUTE_FORM.'&obj=dossier_instruction&amp;action=3'.'&amp;idx=',
467 'id' => '&retourformulaire='.$retourformulaire.'&retour=',
468 'lib' => '<span class="om-icon om-icon-16 om-icon-fix consult-16" title="'._('Consulter').'">'._('Consulter').'</span>',
469 'rights' => array('list' => array('dossier_instruction', 'dossier_instruction_consulter'), 'operator' => 'OR'),
470 'ordre' => 10,
471 'ajax' => false);
472
473 $tab_actions['content'] = $tab_actions['left']["consulter"];
474 $options[] = array(
475 "type"=>"pagination_select",
476 "display"=>false,
477 );
478 }
479
480
481 if ( $retourformulaire == "dossier_autorisation") {
482
483 //
484 $tab_actions['left']["consulter"] =
485 array('lien' => ''.OM_ROUTE_FORM.'&obj=dossier_instruction&amp;action=3&amp;idx=',
486 'id' => '&amp;retourformulaire='.$retourformulaire,
487 'lib' => '<span class="om-icon om-icon-16 om-icon-fix consult-16" title="'._('Consulter').'">'._('Consulter').'</span>',
488 'rights' => array('list' => array('dossier_instruction', 'dossier_instruction_consulter'), 'operator' => 'OR'),
489 'ordre' => 10,
490 'ajax' => false);
491
492 $tab_actions['content'] = $tab_actions['left']["consulter"] ;
493 }
494
495
496 // Affichage du bouton de redirection vers le SIG externe si configuré
497 // XXX Ajouter filtre pour afficher l'icone géolocalisation en fonction de la conf SIG du dossier
498 if($f->getParameter('option_sig') == 'sig_externe') {
499 $tab_actions['left']["localiser-sig-externe"] = array(
500 'lien' => ''.OM_ROUTE_FORM.'&obj=dossier_instruction&amp;action=140&amp;idx=',
501 'id' => '',
502 'lib' => '<span class="om-icon om-icon-16 om-icon-fix sig-16" title="'._('Localiser').'">'._('Localiser').'</span>',
503 'rights' => array('list' => array('dossier_instruction', 'dossier_instruction_consulter'), 'operator' => 'OR'),
504 'ordre' => 20,
505 'target' => "_SIG",
506 'ajax' => false);
507 }
508
509 // Si filtre DI auxquels on peut proposer une autre décision
510 // /!\ Requête lié à celles permettant de savoir si l'instructeur peut changer la
511 // décision et à l'affichage du widgets des dossiers éligibles au changement :
512 // * instruction.class.php : isInstrCanChangeDecision()
513 // * dossier_instruction.class.php : view_widget_dossiers_evenement_retour_finalise()
514 // TODO ; faire évoluer cette affichage pour reprendre celui des DI (avec la recherche avancée)
515 if (isset($extra_parameters["filtre_decision"])
516 && $extra_parameters["filtre_decision"] == true) {
517
518 // Augmentation de la limite
519 $serie = 50;
520 // Réinitialisation des options
521 $options = array();
522 // Suppression de la recherche avancée
523 $options[] = array(
524 'type' => 'search',
525 'display' => false);
526 // Suppression du sélecteur de pages
527 $options[] = array(
528 'type' => 'pagination_select',
529 'display' => false);
530 // Ajout jointure
531 $table = sprintf(
532 '%1$sdossier
533 JOIN %1$setat
534 ON dossier.etat = etat.etat AND etat.statut = \'encours\'
535 JOIN %1$slien_dossier_demandeur
536 ON dossier.dossier = lien_dossier_demandeur.dossier AND lien_dossier_demandeur.petitionnaire_principal IS TRUE
537 JOIN %1$sdossier_instruction_type
538 ON dossier.dossier_instruction_type=dossier_instruction_type.dossier_instruction_type
539 JOIN %1$sdossier_autorisation_type_detaille
540 ON dossier_instruction_type.dossier_autorisation_type_detaille = dossier_autorisation_type_detaille.dossier_autorisation_type_detaille
541 -- Récupère la demande qui a créé le type dossier du dossier
542 LEFT JOIN (%1$sdemande
543 JOIN %1$sdemande_type
544 ON demande.demande_type = demande_type.demande_type
545 )
546 ON demande.dossier_instruction = dossier.dossier
547 AND demande_type.dossier_instruction_type = dossier.dossier_instruction_type
548 JOIN %1$sinstruction
549 -- Recherche de la dernière instruction qui ne soit pas liée à un événement retour
550 ON instruction.instruction = (
551 SELECT instruction
552 FROM %1$sinstruction
553 JOIN %1$sevenement ON instruction.evenement=evenement.evenement
554 AND evenement.retour IS FALSE
555 WHERE instruction.dossier = dossier.dossier
556 ORDER BY date_evenement DESC, instruction DESC
557 LIMIT 1
558 )
559 -- On ne garde que les dossiers pour lesquels la dernière instruction est finalisée
560 -- ou alors pour laquelle l instruction a été ajouté par la commune et est
561 -- non signée, non notifié, etc.
562 AND (instruction.om_final_instruction IS TRUE
563 OR instruction.created_by_commune IS TRUE)
564 AND instruction.date_retour_signature IS NULL
565 AND instruction.date_envoi_rar IS NULL
566 AND instruction.date_retour_rar IS NULL
567 AND instruction.date_envoi_controle_legalite IS NULL
568 AND instruction.date_retour_controle_legalite IS NULL
569 -- On vérifie que l instruction soit un arrêté ou un changement de décision
570 JOIN %1$sevenement
571 ON instruction.evenement=evenement.evenement
572 AND (evenement.type = \'arrete\'
573 OR evenement.type = \'changement_decision\')
574 -- Recherche les informations du pétitionnaire principal pour l affichage
575 JOIN %1$sdemandeur
576 ON lien_dossier_demandeur.demandeur = demandeur.demandeur
577 -- Recherche la collectivité rattachée à l instructeur
578 JOIN %1$sinstructeur
579 ON dossier.instructeur=instructeur.instructeur
580 JOIN %1$sdivision
581 ON instructeur.division=division.division
582 JOIN %1$sdirection
583 ON division.direction=direction.direction
584 JOIN %1$som_collectivite
585 ON direction.om_collectivite=om_collectivite.om_collectivite
586 %2$s
587 ',
588 DB_PREFIXE,
589 $description_projet_from.' '.$nature_travaux_from
590 );
591 // Modification sélection
592 $selection = "WHERE dossier_instruction_type.sous_dossier IS NOT TRUE AND
593 om_collectivite.niveau = '2'";
594 // Si collectivité de l'utilisateur niveau mono alors filtre sur celle-ci
595 if ($f->isCollectiviteMono($_SESSION['collectivite']) === true) {
596 $selection .= " AND dossier.om_collectivite=".$_SESSION['collectivite'];
597 }
598 // Modification tri
599 $tri = " ORDER BY dossier.dossier ";
600 }
601
602
603 // Ajout de la gestion des groupes et confidentialité à la requête du listing
604 $sqlFiltreGroup = $this->get_sql_filtre_groupe($table.$selection);
605 $selection .= $sqlFiltreGroup['WHERE'];
606 $table .= $sqlFiltreGroup['FROM'];
607 // Ajout du filtrage des sous dossier à la requête d'affichage du listing
608 $sqlFiltreSD = $this->get_sql_filtre_sous_dossier($table.$selection);
609 $selection .= $sqlFiltreSD['WHERE'];
610 $table .= $sqlFiltreSD['FROM'];
611 ?>

Properties

Name Value
svn:keywords "Id"

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26