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

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

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 10968 by softime, Wed Dec 15 00:06:28 2021 UTC revision 15835 by softime, Thu Oct 5 12:46:12 2023 UTC
# Line 7  Line 7 
7    
8  /*Etend la classe dossier*/  /*Etend la classe dossier*/
9  include('../sql/pgsql/dossier.inc.php');  include('../sql/pgsql/dossier.inc.php');
10    include "../sql/pgsql/app_om_tab_common_select.inc.php";
11    
12  /*Titre de la page*/  /*Titre de la page*/
13  $ent = _("instruction")." -> "._("dossiers d'instruction");  $ent = _("instruction")." -> "._("dossiers d'instruction");
# Line 27  THEN TRIM(CONCAT(demandeur.particulier_n Line 28  THEN TRIM(CONCAT(demandeur.particulier_n
28  ELSE TRIM(CONCAT(demandeur.personne_morale_raison_sociale, ' ', demandeur.personne_morale_denomination))  ELSE TRIM(CONCAT(demandeur.personne_morale_raison_sociale, ' ', demandeur.personne_morale_denomination))
29  END";  END";
30    
 /*Formatage de l'adresse du terrain, concatenantion de plusieurs champs pour les  
  * mettrent dans une seule colonne*/  
 $trim_concat_terrain = '  
 TRIM(  
     COALESCE(  
         dossier.adresse_normalisee,  
         CONCAT_WS(  
             \' \',  
             dossier.terrain_adresse_voie_numero,  
             dossier.terrain_adresse_voie,  
             dossier.terrain_adresse_lieu_dit,  
             dossier.terrain_adresse_code_postal,  
             dossier.terrain_adresse_localite,  
             dossier.terrain_adresse_bp,  
             dossier.terrain_adresse_cedex  
         )  
     )  
 ) as "'.__("localisation").'"';  
   
31  /*Tables sur lesquels la requête va s'effectuer*/  /*Tables sur lesquels la requête va s'effectuer*/
32  $table = DB_PREFIXE."dossier  $table = sprintf(
33  LEFT JOIN (      '%1$sdossier
34      SELECT *      -- Recherche le pétitionnaire principal du dossier (unique !)
35      FROM ".DB_PREFIXE."lien_dossier_demandeur      LEFT JOIN (
36      INNER JOIN ".DB_PREFIXE."demandeur          SELECT
37          ON demandeur.demandeur = lien_dossier_demandeur.demandeur              *
38      WHERE lien_dossier_demandeur.petitionnaire_principal IS TRUE          FROM
39      AND LOWER(demandeur.type_demandeur) = LOWER('petitionnaire')              %1$slien_dossier_demandeur
40  ) as demandeur              INNER JOIN %1$sdemandeur
41      ON demandeur.dossier = dossier.dossier                  ON demandeur.demandeur = lien_dossier_demandeur.demandeur
42  LEFT JOIN ".DB_PREFIXE."dossier_autorisation          WHERE
43      ON dossier_autorisation.dossier_autorisation = dossier.dossier_autorisation              lien_dossier_demandeur.petitionnaire_principal IS TRUE
44  LEFT JOIN ".DB_PREFIXE."dossier_autorisation_type_detaille              AND LOWER(demandeur.type_demandeur) = LOWER(\'petitionnaire\')
45      ON dossier_autorisation_type_detaille.dossier_autorisation_type_detaille = dossier_autorisation.dossier_autorisation_type_detaille      ) as demandeur
46  LEFT JOIN ".DB_PREFIXE."instructeur          ON demandeur.dossier = dossier.dossier
47      ON dossier.instructeur = instructeur.instructeur      -- Recherche le type de DATD
48  LEFT JOIN ".DB_PREFIXE."om_utilisateur      LEFT JOIN %1$sdossier_instruction_type
49      ON instructeur.om_utilisateur = om_utilisateur.om_utilisateur          ON dossier_instruction_type.dossier_instruction_type = dossier.dossier_instruction_type
50  LEFT JOIN ".DB_PREFIXE."instructeur as instructeur2      LEFT JOIN %1$sdossier_autorisation_type_detaille
51      ON dossier.instructeur_2 = instructeur2.instructeur          ON dossier_autorisation_type_detaille.dossier_autorisation_type_detaille = dossier_instruction_type.dossier_autorisation_type_detaille
52  LEFT JOIN ".DB_PREFIXE."om_utilisateur as om_utilisateur2      -- Recherche l instructeur du dossier
53      ON instructeur2.om_utilisateur = om_utilisateur2.om_utilisateur      LEFT JOIN %1$sinstructeur
54  LEFT JOIN ".DB_PREFIXE."etat          ON dossier.instructeur = instructeur.instructeur
55      ON dossier.etat = etat.etat      LEFT JOIN %1$som_utilisateur
56  LEFT JOIN ".DB_PREFIXE."division          ON instructeur.om_utilisateur = om_utilisateur.om_utilisateur
57      ON dossier.division = division.division      -- Recherche l instructeur 2 du dossier
58  LEFT JOIN ".DB_PREFIXE."avis_decision        LEFT JOIN %1$sinstructeur as instructeur_secondaire
59     ON avis_decision.avis_decision=dossier.avis_decision          ON dossier.instructeur_2 = instructeur_secondaire.instructeur
60  LEFT JOIN ".DB_PREFIXE."om_collectivite      LEFT JOIN %1$som_utilisateur as utilisateur_2
61      ON dossier.om_collectivite=om_collectivite.om_collectivite          ON instructeur_secondaire.om_utilisateur = utilisateur_2.om_utilisateur
62  LEFT OUTER JOIN ".DB_PREFIXE."arrondissement      -- Recherche l etat du dossier
63      ON arrondissement.code_postal = dossier.terrain_adresse_code_postal      LEFT JOIN %1$setat
64  ";          ON dossier.etat = etat.etat
65        -- Recherche la division de rattachement du dossier (différente de celle de l instructeur)
66        LEFT JOIN %1$sdivision
67            ON dossier.division = division.division
68        -- Recherche l avis de décision
69        LEFT JOIN %1$savis_decision  
70            ON avis_decision.avis_decision=dossier.avis_decision
71        -- Recherche la collectivite de rattachement du dossier
72        LEFT JOIN %1$som_collectivite
73            ON dossier.om_collectivite=om_collectivite.om_collectivite
74        -- Recherche l arrondissement du dossier
75        LEFT JOIN %1$sarrondissement
76            ON arrondissement.code_postal = dossier.terrain_adresse_code_postal
77        -- Récupère la demande qui a créé le type dossier du dossier
78        LEFT JOIN (%1$sdemande
79            JOIN %1$sdemande_type
80                ON demande.demande_type = demande_type.demande_type
81        )
82            ON demande.dossier_instruction = dossier.dossier
83                AND demande_type.dossier_instruction_type = dossier.dossier_instruction_type
84        ',
85        DB_PREFIXE
86    );
87  if ($f->is_option_dossier_commune_enabled()) {  if ($f->is_option_dossier_commune_enabled()) {
88      $table .= "      $table .= "
89          LEFT OUTER JOIN ".DB_PREFIXE."commune          LEFT OUTER JOIN ".DB_PREFIXE."commune
# Line 87  if ($f->is_option_dossier_commune_enable Line 91  if ($f->is_option_dossier_commune_enable
91      ";      ";
92  }  }
93    
94    $nature_travaux_from = "LEFT JOIN (
95        SELECT ntc.dossier, string_agg(ntc.libelle::text, '\n' order by ntc.libelle) as libelle
96        FROM
97        (SELECT DISTINCT
98            dossier,
99            famille_travaux.libelle as famille_travaux,
100            CONCAT(famille_travaux.libelle, ' / ', nature_travaux.libelle) as libelle
101        FROM
102            ".DB_PREFIXE."lien_dossier_nature_travaux
103        INNER JOIN
104            ".DB_PREFIXE."nature_travaux
105                ON lien_dossier_nature_travaux.nature_travaux = nature_travaux.nature_travaux
106        INNER JOIN
107            ".DB_PREFIXE."famille_travaux
108                ON nature_travaux.famille_travaux = famille_travaux.famille_travaux ORDER BY famille_travaux.libelle) as ntc
109        GROUP BY dossier ORDER BY libelle) as nature_travaux ON nature_travaux.dossier = dossier.dossier
110    ";
111  // Ajout des colonnes concernant la demat  // Ajout des colonnes concernant la demat
112  $table .=  if ($f->get_submitted_get_value('mode') === 'export_csv') {
113      "LEFT JOIN      // Jointure permettant d'afficher l'id platau du service consultant et le
114          (SELECT      // libellé du service consultant dans les exports si le mode service consulté est
115        // actif
116        $table .= $f->is_option_mode_service_consulte_enabled() === true ?
117            'LEFT JOIN '.DB_PREFIXE.'consultation_entrante
118                ON dossier.dossier = consultation_entrante.dossier
119            ' :
120            '';
121        $table .=
122            "LEFT JOIN
123                (SELECT
124                    dossier,
125                    external_uid
126                FROM
127                    ".DB_PREFIXE."lien_id_interne_uid_externe
128                WHERE object = 'dossier'
129                    AND category = 'platau'
130                ) AS dossier_platau
131                ON
132                    dossier_platau.dossier = dossier.dossier
133            LEFT JOIN
134                (SELECT
135                    dossier,
136                    external_uid
137                FROM
138                    ".DB_PREFIXE."lien_id_interne_uid_externe
139                WHERE object = 'dossier_consultation'
140                    AND category = 'platau'
141                ) AS consultation_platau
142                ON
143                    consultation_platau.dossier = dossier.dossier
144            LEFT JOIN
145                (SELECT
146                    dossier,
147                    ARRAY_TO_STRING(ARRAY_AGG(external_uid ORDER BY external_uid ASC), ', ') AS external_uid
148                FROM
149                    ".DB_PREFIXE."lien_id_interne_uid_externe
150                WHERE
151                    object = 'piece'
152                    AND category = 'platau'
153                GROUP BY
154                    dossier) AS pieces_platau
155                ON
156                    pieces_platau.dossier = dossier.dossier
157            LEFT JOIN
158                (SELECT
159                    dossier,
160                    ARRAY_TO_STRING(ARRAY_AGG(object || ' : ' || external_uid), ', ') AS external_uid
161                FROM
162                    ".DB_PREFIXE."lien_id_interne_uid_externe
163                WHERE
164                    object != 'piece'
165                    AND object != 'dossier'
166                    AND object != 'dossier_consultation'
167                    AND category = 'platau'
168                GROUP BY
169                    dossier) AS autres_platau
170                ON
171                    autres_platau.dossier = dossier.dossier
172                ";
173        $nature_travaux_from = "LEFT JOIN (
174            SELECT ftc.dossier, string_agg(ftc.libelle::text, ', ') as famille_travaux_libelle
175            FROM
176            (SELECT DISTINCT
177              dossier,              dossier,
178              external_uid              famille_travaux.libelle
179          FROM          FROM
180              ".DB_PREFIXE."lien_id_interne_uid_externe              ".DB_PREFIXE."lien_dossier_nature_travaux
181          WHERE object = 'dossier'          INNER JOIN
182              AND category = 'platau'              ".DB_PREFIXE."nature_travaux
183          ) AS dossier_platau                  ON lien_dossier_nature_travaux.nature_travaux = nature_travaux.nature_travaux
184          ON          INNER JOIN
185              dossier_platau.dossier = dossier.dossier              ".DB_PREFIXE."famille_travaux
186      LEFT JOIN                  ON nature_travaux.famille_travaux = famille_travaux.famille_travaux
187          (SELECT          ORDER BY famille_travaux.libelle) as ftc
188              dossier,          GROUP BY dossier) as famille_travaux ON famille_travaux.dossier = dossier.dossier
189              external_uid          LEFT JOIN (
190          FROM                  SELECT ntc.dossier, string_agg(ntc.libelle::text, ', ') as nature_travaux_libelle
191              ".DB_PREFIXE."lien_id_interne_uid_externe                  FROM
192          WHERE object = 'dossier_consultation'                  (SELECT DISTINCT
193              AND category = 'platau'                      dossier,
194          ) AS consultation_platau                      nature_travaux.libelle
195          ON                  FROM
196              consultation_platau.dossier = dossier.dossier                      ".DB_PREFIXE."lien_dossier_nature_travaux
197      LEFT JOIN                  INNER JOIN
198          (SELECT                      ".DB_PREFIXE."nature_travaux
199              dossier,                          ON lien_dossier_nature_travaux.nature_travaux = nature_travaux.nature_travaux
200              ARRAY_TO_STRING(ARRAY_AGG(external_uid ORDER BY external_uid ASC), ', ') AS external_uid                  ORDER BY nature_travaux.libelle) as ntc
201          FROM                  GROUP BY dossier) as nature_travaux ON nature_travaux.dossier = dossier.dossier
202              ".DB_PREFIXE."lien_id_interne_uid_externe      ";
203          WHERE  }
             object = 'piece'  
             AND category = 'platau'  
         GROUP BY  
             dossier) AS pieces_platau  
         ON  
             pieces_platau.dossier = dossier.dossier  
     LEFT JOIN  
         (SELECT  
             dossier,  
             ARRAY_TO_STRING(ARRAY_AGG(object || ' : ' || external_uid), ', ') AS external_uid  
         FROM  
             ".DB_PREFIXE."lien_id_interne_uid_externe  
         WHERE  
             object != 'piece'  
             AND object != 'dossier'  
             AND object != 'dossier_consultation'  
             AND category = 'platau'  
         GROUP BY  
             dossier) AS autres_platau  
         ON  
             autres_platau.dossier = dossier.dossier  
     LEFT JOIN  
         (SELECT DISTINCT(dossier_instruction), source_depot  
             FROM ".DB_PREFIXE."demande) AS demande  
         ON demande.dossier_instruction = dossier.dossier  
         ";  
204    
205  $champ_date_depot_mairie = 'to_char(dossier.date_depot_mairie ,\'DD/MM/YYYY\') as "'._("date_depot_mairie").'"';  $champ_date_depot_mairie = 'to_char(dossier.date_depot_mairie ,\'DD/MM/YYYY\') as "'.__("dépôt mairie").'"';
206    
207  /*Champs du début de la requête*/  /*Champs du début de la requête*/
208  $champAffiche_debut_commun = array(  $champAffiche_debut_commun = array(
209      'dossier.dossier as "'._("dossier").'"',      'dossier.dossier as "'._("dossier").'"',
210      'dossier.dossier_libelle as "'._("dossier").'"'      'dossier.geom as "geom_picto"',
211        'demande.source_depot as "demat_picto"',
212        $select__dossier_libelle__column_as,
213  );  );
214  if ($f->is_option_dossier_commune_enabled()) {  if ($f->is_option_dossier_commune_enabled()) {
215      $champAffiche_debut_commun[] = 'commune.libelle as "'.__("commune").'"';      $champAffiche_debut_commun[] = 'commune.libelle as "'.__("commune").'"';
# Line 158  if ($f->is_option_dossier_commune_enable Line 217  if ($f->is_option_dossier_commune_enable
217  array_push($champAffiche_debut_commun,  array_push($champAffiche_debut_commun,
218      $case_demandeur.' as "'._("petitionnaire").'"',      $case_demandeur.' as "'._("petitionnaire").'"',
219      $trim_concat_terrain,      $trim_concat_terrain,
220      'dossier_autorisation_type_detaille.libelle as "'._("nature_dossier").'"',      'dossier_autorisation_type_detaille.libelle as "'._("type").'"',
221      'to_char(dossier.date_depot ,\'DD/MM/YYYY\') as "'._("date_depot").'"',      'to_char(dossier.date_depot ,\'DD/MM/YYYY\') as "'.__("dépôt").'"',
222      'to_char(dossier.date_complet ,\'DD/MM/YYYY\') as "'._("date_complet").'"',      'to_char(dossier.date_complet ,\'DD/MM/YYYY\') as "'.__("complétude").'"',
223      'CASE WHEN dossier.incomplet_notifie IS TRUE AND dossier.incompletude IS TRUE      'CASE WHEN dossier.incomplet_notifie IS TRUE AND dossier.incompletude IS TRUE
224          THEN to_char(dossier.date_limite_incompletude ,\'DD/MM/YYYY\')          THEN to_char(dossier.date_limite_incompletude ,\'DD/MM/YYYY\')
225          ELSE to_char(dossier.date_limite ,\'DD/MM/YYYY\')          ELSE to_char(dossier.date_limite ,\'DD/MM/YYYY\')
226      END as "'._("date_limite").'"'      END as "'.__("limite").'"'
227  );  );
228    
229  if ($f->is_option_date_depot_mairie_enabled() === true) {  if ($f->is_option_date_depot_mairie_enabled() === true) {
# Line 178  if ($f->is_option_date_depot_mairie_enab Line 237  if ($f->is_option_date_depot_mairie_enab
237  // avant de tronquer la valeur et d'ajouter une ellipse "…"  // avant de tronquer la valeur et d'ajouter une ellipse "…"
238  $max_chars = 40;  $max_chars = 40;
239  //  //
240  $nature_des_travaux_select = "  $description_projet_select = "
241  CASE WHEN char_length(nature_des_travaux) <= ".$max_chars." THEN  CASE WHEN nature_travaux.libelle IS NULL AND char_length(description_projet) <= ".$max_chars." THEN
242      CONCAT('<span title=\"',      CONCAT('<span class=\"nature_travaux_cursor\" title=\"',
243              nature_des_travaux,              description_projet,
244            '\">',
245            replace(description_projet, '\n', '<br/>'),
246        '</span>')
247    WHEN nature_travaux.libelle IS NULL AND char_length(description_projet) > ".$max_chars." THEN
248        CONCAT('<span class=\"nature_travaux_cursor\" title=\"',
249                description_projet,
250          '\">',          '\">',
251          replace(nature_des_travaux, '\n', '<br/>'),          replace(left(description_projet, ".$max_chars."), '\n', '<br/>') || '…',
252      '</span>')      '</span>')
253  ELSE  WHEN nature_travaux.libelle IS NOT NULL AND ARRAY_LENGTH(STRING_TO_ARRAY(nature_travaux.libelle, '\n'), 1) = 1 THEN
254      CONCAT('<span title=\"',      CONCAT('<span class=\"nature_travaux_cursor\" title=\"',
255              nature_des_travaux,              nature_travaux.libelle,
256                '\n',
257                description_projet,
258          '\">',          '\">',
259          replace(left(nature_des_travaux, ".$max_chars."), '\n', '<br/>') || '…',          replace(nature_travaux.libelle, '\n', '<br/>'),
260        '</span>')
261    WHEN nature_travaux.libelle IS NOT NULL AND ARRAY_LENGTH(STRING_TO_ARRAY(nature_travaux.libelle, '\n'), 1) > 1 THEN
262        CONCAT('<span class=\"nature_travaux_cursor\" title=\"',
263                nature_travaux.libelle,
264                '\n',
265                description_projet,
266            '\">',
267            split_part(nature_travaux.libelle, '\n', 1), '<br/>', '[...]',
268      '</span>')      '</span>')
269  END as \""._("nature des travaux").'"';  END as \""._("nature des travaux").'"';
270  // description/nature des travaux. En cas de modif, bloc de code aussi présent dans  // description/nature des travaux. En cas de modif, bloc de code aussi présent dans
271  // dossier.form.inc.php (le formulaire du DI)', 'om_requete' et 'stats à la demande'  // dossier.form.inc.php (le formulaire du DI)', 'om_requete' et 'stats à la demande'
272  $nature_des_travaux_from = "  $description_projet_from = "
273  INNER JOIN (  INNER JOIN (
274      SELECT      SELECT
275          CONCAT_WS(          CONCAT_WS(
# Line 230  INNER JOIN ( Line 305  INNER JOIN (
305              CASE WHEN donnees_techniques.erp_trvx_am IS TRUE              CASE WHEN donnees_techniques.erp_trvx_am IS TRUE
306                  THEN '".str_replace("'", "''", _('erp_trvx_am'))."' END,                  THEN '".str_replace("'", "''", _('erp_trvx_am'))."' END,
307              CASE WHEN donnees_techniques.erp_vol_nouv_exist IS TRUE              CASE WHEN donnees_techniques.erp_vol_nouv_exist IS TRUE
308                  THEN '".str_replace("'", "''", _('erp_vol_nouv_exist'))."' END                  THEN '".str_replace("'", "''", _('erp_vol_nouv_exist'))."' END,
309          ) as nature_des_travaux,              CASE WHEN mh_design_appel_denom = '' THEN
310                    NULL
311                ELSE
312                    TRIM(mh_design_appel_denom)
313                END,
314                CASE WHEN mh_loc_denom = '' THEN
315                    NULL
316                ELSE
317                    TRIM(mh_loc_denom)
318                END
319            ) as description_projet,
320          dossier_instruction          dossier_instruction
321          FROM ".DB_PREFIXE."donnees_techniques          FROM ".DB_PREFIXE."donnees_techniques
322      ) as nature_des_travaux      ) as description_projet
323      ON nature_des_travaux.dossier_instruction = dossier.dossier      ON description_projet.dossier_instruction = dossier.dossier
324  ";  ";
325  // On ne veut cette colonne que dans les trois listings "Recherche",  // On ne veut cette colonne que dans les trois listings "Recherche",
326  // "Mes encours" et "Tous les encours"  // "Mes encours" et "Tous les encours"
# Line 250  if ($is_in_obj_whitelist === true && $re Line 335  if ($is_in_obj_whitelist === true && $re
335      // Modifie les colonnes à afficher en début du tableau      // Modifie les colonnes à afficher en début du tableau
336      $champAffiche_debut_commun = array(      $champAffiche_debut_commun = array(
337          'dossier.dossier as "'._("dossier").'"',          'dossier.dossier as "'._("dossier").'"',
338          'dossier.dossier_libelle as "'._("dossier").'"'          'dossier.geom as "geom_picto"',
339            'demande.source_depot as "demat_picto"',
340            $select__dossier_libelle__column_as,
341      );      );
342      if ($f->is_option_dossier_commune_enabled()) {      if ($f->is_option_dossier_commune_enabled()) {
343          $champAffiche_debut_commun[] = 'commune.libelle as "'.__("commune").'"';          $champAffiche_debut_commun[] = 'commune.libelle as "'.__("commune").'"';
# Line 258  if ($is_in_obj_whitelist === true && $re Line 345  if ($is_in_obj_whitelist === true && $re
345      array_push($champAffiche_debut_commun,      array_push($champAffiche_debut_commun,
346          $case_demandeur.' as "'._("petitionnaire").'"',          $case_demandeur.' as "'._("petitionnaire").'"',
347          $trim_concat_terrain,          $trim_concat_terrain,
348          'dossier_autorisation_type_detaille.libelle as "'._("nature_dossier").'"',          'dossier_autorisation_type_detaille.libelle as "'._("type").'"',
349          $nature_des_travaux_select,          $description_projet_select,
350          'to_char(dossier.date_depot ,\'DD/MM/YYYY\') as "'._("date_depot").'"',          'to_char(dossier.date_depot ,\'DD/MM/YYYY\') as "'.__("dépôt").'"',
351          'to_char(dossier.date_complet ,\'DD/MM/YYYY\') as "'._("date_complet").'"',          'to_char(dossier.date_complet ,\'DD/MM/YYYY\') as "'.__("complétude").'"',
352          'CASE WHEN dossier.incomplet_notifie IS TRUE AND dossier.incompletude IS TRUE          'CASE WHEN dossier.incomplet_notifie IS TRUE AND dossier.incompletude IS TRUE
353              THEN to_char(dossier.date_limite_incompletude ,\'DD/MM/YYYY\')              THEN to_char(dossier.date_limite_incompletude ,\'DD/MM/YYYY\')
354              ELSE to_char(dossier.date_limite ,\'DD/MM/YYYY\')              ELSE to_char(dossier.date_limite ,\'DD/MM/YYYY\')
355          END as "'._("date_limite").'"'          END as "'.__("limite").'"'
356      );      );
357      if ($f->is_option_date_depot_mairie_enabled() === true) {      if ($f->is_option_date_depot_mairie_enabled() === true) {
358          $champAffiche_debut_commun[] = $champ_date_depot_mairie;          $champAffiche_debut_commun[] = $champ_date_depot_mairie;
359      }      }
360      // Modifie également le from      // Modifie également le from
361      $table .= $nature_des_travaux_from;      $table .= $description_projet_from.' '.$nature_travaux_from;
362  }  }
363    
364  /*Champs de la fin de la requête*/  /*Champs de la fin de la requête*/
# Line 293  if ($_SESSION['niveau'] == '2') { Line 380  if ($_SESSION['niveau'] == '2') {
380      array_push($champAffiche_fin_commun, "om_collectivite.libelle as \""._("collectivite")."\"");      array_push($champAffiche_fin_commun, "om_collectivite.libelle as \""._("collectivite")."\"");
381  }  }
382    
383  $selection .= "AND groupe.code != 'CTX'";  // Identifie s'il y a déjà un WHERE dans la requête
384    if (stripos($selection, "WHERE") === false) {
385        $selection .= " WHERE ";
386    } else {
387        $selection .= " AND ";
388    }
389    // Les dossiers des contentieux sont gérés dans un autre listing, il ne doivent
390    // pas apparaître dans la liste des dossiers d'instruction de l'onglet instruction -> recherche
391    // /!\ l'opérateur != exclus les valeurs null. Il faut donc préciser que les groupe ayant un
392    // code NULL doivent bien être récupérés.
393    $selection .= " (groupe.code IS NULL OR groupe.code != 'CTX')";
394    
395    $instructeur_nom = 'CASE WHEN instructeur.nom IS NOT NULL AND division.code IS NOT NULL THEN
396                CONCAT(\'<span title="Instructeur: \', instructeur.nom, '."'\n'".', \'Division: \', division.code, \'"\', \'>\', instructeur.nom, \' (\', division.code, \')\', \'</span>\')
397            WHEN instructeur.nom IS NOT NULL AND division.code IS NULL THEN
398                instructeur.nom
399            ELSE
400                instructeur.nom
401            END as "'.__("instructeur").'"';
402    
403    
404  /*Liste des champs affichés dans le tableau de résultat*/  /*Liste des champs affichés dans le tableau de résultat*/
405  $champAffiche = array_merge(  $champAffiche = array_merge(
406      $champAffiche_debut_commun,      $champAffiche_debut_commun,
407      array('instructeur.nom as "'._("instructeur").'"',      array(
408            'division.code as "'._("division").'"',          $instructeur_nom,
409      ),      ),
410      $champAffiche_fin_commun      $champAffiche_fin_commun
411  );  );
# Line 320  if (isset($_GET['message_help']) Line 426  if (isset($_GET['message_help'])
426  // Liste des autres dossiers d'instructions  // Liste des autres dossiers d'instructions
427  if ($retourformulaire== 'dossier_instruction'){  if ($retourformulaire== 'dossier_instruction'){
428      $champAffiche = array(      $champAffiche = array(
429          'b.dossier as "'._("dossier_instruction").'"',          'dossier.dossier as "'._("dossier_instruction").'"',
430          'b.dossier_libelle as "'._("dossier").'"'          'dossier.geom as "geom_picto"',
431            'demande.source_depot as "demat_picto"',
432            $select__dossier_libelle__column_as,
433      );      );
434      if ($f->is_option_dossier_commune_enabled()) {      if ($f->is_option_dossier_commune_enabled()) {
435          $champAffiche[] = 'c.libelle as "'._("commune").'"';          $champAffiche[] = 'c.libelle as "'._("commune").'"';
436      }      }
437      array_push($champAffiche,      array_push($champAffiche,
438          'dossier_instruction_type.libelle as "'._("demande_type").'"',          'dossier_instruction_type.libelle as "'._("demande_type").'"',
439          'to_char(b.date_depot ,\'DD/MM/YYYY\') as "'._("date_depot").'"',          'to_char(dossier.date_depot ,\'DD/MM/YYYY\') as "'._("dépôt").'"',
440          'b.etat as "'._("etat").'"'          'dossier.etat as "'._("etat").'"'
441      );      );
442    
443      $table =DB_PREFIXE.'dossier as a      $table =DB_PREFIXE.'dossier as a
444              JOIN '.DB_PREFIXE.'dossier_autorisation              JOIN '.DB_PREFIXE.'dossier_autorisation
445              ON a.dossier_autorisation=dossier_autorisation.dossier_autorisation              ON a.dossier_autorisation=dossier_autorisation.dossier_autorisation
446              JOIN '.DB_PREFIXE.'dossier as b              JOIN '.DB_PREFIXE.'dossier as dossier
447              ON b.dossier_autorisation=dossier_autorisation.dossier_autorisation              ON dossier.dossier_autorisation=dossier_autorisation.dossier_autorisation
448              JOIN '.DB_PREFIXE.'dossier_instruction_type              JOIN '.DB_PREFIXE.'dossier_instruction_type
449              ON dossier_instruction_type.dossier_instruction_type = b.dossier_instruction_type';              ON dossier_instruction_type.dossier_instruction_type = dossier.dossier_instruction_type';
450      if ($f->is_option_dossier_commune_enabled()) {      if ($f->is_option_dossier_commune_enabled()) {
451          $table .= '          $table .= '
452              JOIN '.DB_PREFIXE.'commune as c              JOIN '.DB_PREFIXE.'commune as c
453                  ON c.commune = dossier.commune';                  ON c.commune = dossier.commune';
454      }      }
455      $selection = 'WHERE a.dossier=\''.$f->db->escapeSimple($idxformulaire).'\'';      $selection = 'WHERE a.dossier=\''.$f->db->escapeSimple($idxformulaire).'\'';
456      $tri= "order by b.date_depot ASC";      $tri= "order by dossier.date_depot ASC";
457    
458      //      //
459      $tab_actions['left']["consulter"] =      $tab_actions['left']["consulter"] =
# Line 362  if ($retourformulaire== 'dossier_instruc Line 470  if ($retourformulaire== 'dossier_instruc
470          "display"=>false,          "display"=>false,
471      );      );
472  }  }
473    
474    
475  if ( $retourformulaire == "dossier_autorisation") {  if ( $retourformulaire == "dossier_autorisation") {
476    
477      //      //
# Line 391  if($f->getParameter('option_sig') == 'si Line 501  if($f->getParameter('option_sig') == 'si
501  }  }
502    
503  // Si filtre DI auxquels on peut proposer une autre décision  // Si filtre DI auxquels on peut proposer une autre décision
504    // /!\ Requête lié à celles permettant de savoir si l'instructeur peut changer la
505    // décision et à l'affichage du widgets des dossiers éligibles au changement :
506    //   * instruction.class.php : isInstrCanChangeDecision()
507    //   * dossier_instruction.class.php : view_widget_dossiers_evenement_retour_finalise()
508    // TODO ; faire évoluer cette affichage pour reprendre celui des DI (avec la recherche avancée)
509  if (isset($extra_parameters["filtre_decision"])  if (isset($extra_parameters["filtre_decision"])
510      && $extra_parameters["filtre_decision"] == true) {      && $extra_parameters["filtre_decision"] == true) {
511    
# Line 407  if (isset($extra_parameters["filtre_deci Line 522  if (isset($extra_parameters["filtre_deci
522          'type' => 'pagination_select',          'type' => 'pagination_select',
523          'display' => false);          'display' => false);
524      // Ajout jointure      // Ajout jointure
525      $table .= "JOIN ".DB_PREFIXE."instruction ON instruction.instruction = (      $table = sprintf(
526                  SELECT instruction          '%1$sdossier
527                  FROM ".DB_PREFIXE."instruction          JOIN %1$setat
528                  JOIN ".DB_PREFIXE."evenement on instruction.evenement=evenement.evenement              ON dossier.etat = etat.etat AND etat.statut = \'encours\'
529                  WHERE instruction.dossier = dossier.dossier          JOIN %1$slien_dossier_demandeur
530                  AND evenement.retour IS FALSE              ON dossier.dossier = lien_dossier_demandeur.dossier AND lien_dossier_demandeur.petitionnaire_principal IS TRUE
531                  ORDER BY date_evenement DESC, instruction DESC          JOIN %1$sdossier_instruction_type
532                  LIMIT 1              ON dossier.dossier_instruction_type=dossier_instruction_type.dossier_instruction_type
533              )          JOIN %1$sdossier_autorisation_type_detaille
534              JOIN ".DB_PREFIXE."evenement ON instruction.evenement=evenement.evenement              ON dossier_instruction_type.dossier_autorisation_type_detaille = dossier_autorisation_type_detaille.dossier_autorisation_type_detaille
535              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')";              -- Récupère la demande qui a créé le type dossier du dossier
536            LEFT JOIN (%1$sdemande
537                JOIN %1$sdemande_type
538                    ON demande.demande_type = demande_type.demande_type
539            )
540                ON demande.dossier_instruction = dossier.dossier
541                    AND demande_type.dossier_instruction_type = dossier.dossier_instruction_type
542            JOIN %1$sinstruction
543                -- Recherche de la dernière instruction qui ne soit pas liée à un événement retour
544                    ON instruction.instruction = (
545                            SELECT instruction
546                            FROM %1$sinstruction
547                            JOIN %1$sevenement ON instruction.evenement=evenement.evenement
548                            AND evenement.retour IS FALSE
549                            WHERE instruction.dossier = dossier.dossier
550                            ORDER BY date_evenement DESC, instruction DESC
551                            LIMIT 1
552                        )
553                        -- On ne garde que les dossiers pour lesquels la dernière instruction est finalisée
554                        -- ou alors pour laquelle l instruction a été ajouté par la commune et est
555                        -- non signée, non notifié, etc.
556                        AND (instruction.om_final_instruction IS TRUE
557                            OR instruction.created_by_commune IS TRUE)
558                        AND instruction.date_retour_signature IS NULL
559                        AND instruction.date_envoi_rar IS NULL
560                        AND instruction.date_retour_rar IS NULL
561                        AND instruction.date_envoi_controle_legalite IS NULL
562                        AND instruction.date_retour_controle_legalite IS NULL
563                -- On vérifie que l instruction soit un arrêté ou un changement de décision
564                JOIN %1$sevenement
565                    ON instruction.evenement=evenement.evenement
566                        AND (evenement.type = \'arrete\'
567                            OR evenement.type = \'changement_decision\')
568                -- Recherche les informations du pétitionnaire principal pour l affichage
569                JOIN %1$sdemandeur
570                    ON lien_dossier_demandeur.demandeur = demandeur.demandeur
571                -- Recherche la collectivité rattachée à l instructeur
572                JOIN %1$sinstructeur
573                    ON dossier.instructeur=instructeur.instructeur
574                JOIN %1$sdivision
575                    ON instructeur.division=division.division
576                JOIN %1$sdirection
577                    ON division.direction=direction.direction
578                JOIN %1$som_collectivite
579                    ON direction.om_collectivite=om_collectivite.om_collectivite
580                %2$s
581            ',
582            DB_PREFIXE,
583            $description_projet_from.' '.$nature_travaux_from
584        );
585      // Modification sélection      // Modification sélection
586      $selection = "WHERE      $selection = "WHERE dossier_instruction_type.sous_dossier IS NOT TRUE AND
587                  groupe.code != 'CTX'          om_collectivite.niveau = '2'";
                 AND ((evenement.type = 'arrete' AND instruction.om_final_instruction IS TRUE) OR evenement.type = 'changement_decision')  
                 AND evenement.retour IS FALSE  
                 AND instruction.date_retour_signature IS NULL  
                 AND instruction.date_envoi_rar IS NULL  
                 AND instruction.date_retour_rar IS NULL  
                 AND instruction.date_envoi_controle_legalite IS NULL  
                 AND instruction.date_retour_controle_legalite IS NULL  
                 AND etat.statut = 'encours'  
                 AND om_utilisateur.login != '".$_SESSION['login']."'";  
588      // Si collectivité de l'utilisateur niveau mono alors filtre sur celle-ci      // Si collectivité de l'utilisateur niveau mono alors filtre sur celle-ci
589      if ($f->isCollectiviteMono($_SESSION['collectivite']) === true) {      if ($f->isCollectiviteMono($_SESSION['collectivite']) === true) {
590          $selection .= " AND dossier.om_collectivite=".$_SESSION['collectivite'];          $selection .= " AND dossier.om_collectivite=".$_SESSION['collectivite'];
# Line 438  if (isset($extra_parameters["filtre_deci Line 593  if (isset($extra_parameters["filtre_deci
593      $tri = " ORDER BY dossier.dossier ";      $tri = " ORDER BY dossier.dossier ";
594  }  }
595    
596  // Gestion des groupes et confidentialité  
597  include ('../sql/pgsql/filter_group.inc.php');  // Ajout de la gestion des groupes et confidentialité à la requête du listing
598    $sqlFiltreGroup = $this->get_sql_filtre_groupe($table.$selection);
599    $selection .= $sqlFiltreGroup['WHERE'];
600    $table .= $sqlFiltreGroup['FROM'];
601    // Ajout du filtrage des sous dossier à la requête d'affichage du listing
602    $sqlFiltreSD = $this->get_sql_filtre_sous_dossier($table.$selection);
603    $selection .= $sqlFiltreSD['WHERE'];
604    $table .= $sqlFiltreSD['FROM'];
605    
606    // Si l'option qui permet de masquer les colonnes comporte la localisation
607    // ou le champ date_complet alors on masque la colonne
608    $param_affichage_col = $f->get_affichage_di_listing_colonnes_masquees();
609    if (! empty($param_affichage_col)) {
610        if (array_search('localisation', $param_affichage_col) !== false) {
611            $key_champaff = array_search($trim_concat_terrain, $champAffiche);
612            unset($champAffiche[$key_champaff]);
613            $champAffiche = array_values($champAffiche);
614            // Gestion pour les listings tous_encours et tous_cloture
615            $key_champaff_commun = array_search($trim_concat_terrain, $champAffiche_debut_commun);
616            unset($champAffiche_debut_commun[$key_champaff_commun]);
617            $champAffiche_debut_commun = array_values($champAffiche_debut_commun);
618        }
619        if (array_search('date_complet', $param_affichage_col) !== false) {
620            $key_champaff = array_search('to_char(dossier.date_complet ,\'DD/MM/YYYY\') as "'.__("complétude").'"', $champAffiche);
621            unset($champAffiche[$key_champaff]);
622            $champAffiche = array_values($champAffiche);
623            // Gestion pour les listings tous_encours et tous_cloture
624            $key_champaff_commun = array_search('to_char(dossier.date_complet ,\'DD/MM/YYYY\') as "'.__("complétude").'"', $champAffiche_debut_commun);
625            unset($champAffiche_debut_commun[$key_champaff_commun]);
626            $champAffiche_debut_commun = array_values($champAffiche_debut_commun);
627        }
628    }
629    
630  ?>  ?>

Legend:
Removed from v.10968  
changed lines
  Added in v.15835

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26