/[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 18876 by softime, Tue Oct 8 08:41:06 2024 UTC revision 19307 by softime, Wed Nov 6 10:57:56 2024 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');
 include "../sql/pgsql/app_om_tab_common_select.inc.php";  
10    
11  /*Titre de la page*/  /*Titre de la page*/
12  $ent = __("instruction")." -> ".__("dossiers d'instruction");  $ent = __("instruction")." -> ".__("dossiers d'instruction");
# Line 36  nous ajoutons donc des paramètres d'Opt Line 35  nous ajoutons donc des paramètres d'Opt
35  // SQL d'origine de la recherche  // SQL d'origine de la recherche
36  $table_debut_old = sprintf('  $table_debut_old = sprintf('
37      -- Recherche le pétitionnaire principal du dossier (unique !)      -- Recherche le pétitionnaire principal du dossier (unique !)
38      LEFT JOIN (      LEFT JOIN %1$slien_dossier_demandeur
39          SELECT          ON lien_dossier_demandeur.dossier = dossier.dossier
40              *          AND lien_dossier_demandeur.petitionnaire_principal IS TRUE
41          FROM      INNER JOIN %1$sdemandeur
42              %1$slien_dossier_demandeur          ON demandeur.demandeur = lien_dossier_demandeur.demandeur
43              INNER JOIN %1$sdemandeur              AND demandeur.type_demandeur = \'petitionnaire\'
                 ON demandeur.demandeur = lien_dossier_demandeur.demandeur  
         WHERE  
             lien_dossier_demandeur.petitionnaire_principal IS TRUE  
             AND LOWER(demandeur.type_demandeur) = LOWER(\'petitionnaire\')  
     ) as demandeur  
     ON demandeur.dossier = dossier.dossier  
44      -- Recherche l etat du dossier      -- Recherche l etat du dossier
45      LEFT JOIN %1$setat      LEFT JOIN %1$setat
46          ON dossier.etat = etat.etat          ON dossier.etat = etat.etat
# Line 66  $table_debut_optimiser_lien_demandeurs = Line 59  $table_debut_optimiser_lien_demandeurs =
59  // SQL d'origine de la recherche  // SQL d'origine de la recherche
60  $table_middle = sprintf(  $table_middle = sprintf(
61      '-- Recherche le type de DATD      '-- Recherche le type de DATD
62      LEFT JOIN %1$sdossier_instruction_type      INNER JOIN %1$sdossier_instruction_type
63          ON dossier_instruction_type.dossier_instruction_type = dossier.dossier_instruction_type          ON dossier_instruction_type.dossier_instruction_type = dossier.dossier_instruction_type
64      LEFT JOIN %1$sdossier_autorisation_type_detaille      INNER JOIN %1$sdossier_autorisation_type_detaille
65          ON dossier_autorisation_type_detaille.dossier_autorisation_type_detaille = dossier_instruction_type.dossier_autorisation_type_detaille          ON dossier_autorisation_type_detaille.dossier_autorisation_type_detaille = dossier_instruction_type.dossier_autorisation_type_detaille
66      -- Recherche l instructeur du dossier      -- Recherche l instructeur du dossier
67      LEFT JOIN %1$sinstructeur      LEFT JOIN %1$sinstructeur
# Line 84  $table_middle = sprintf( Line 77  $table_middle = sprintf(
77      LEFT JOIN %1$sdivision      LEFT JOIN %1$sdivision
78          ON dossier.division = division.division          ON dossier.division = division.division
79      -- Recherche l avis de décision      -- Recherche l avis de décision
80      LEFT JOIN %1$savis_decision        LEFT JOIN %1$savis_decision  
81          ON avis_decision.avis_decision=dossier.avis_decision          ON avis_decision.avis_decision=dossier.avis_decision
82      -- Recherche la collectivite de rattachement du dossier      -- Recherche la collectivite de rattachement du dossier
83      LEFT JOIN %1$som_collectivite      INNER JOIN %1$som_collectivite
84          ON dossier.om_collectivite=om_collectivite.om_collectivite          ON dossier.om_collectivite=om_collectivite.om_collectivite
85      -- Recherche l arrondissement du dossier      -- Recherche l arrondissement du dossier
86      LEFT JOIN %1$sarrondissement      LEFT JOIN %1$sarrondissement
# Line 96  $table_middle = sprintf( Line 89  $table_middle = sprintf(
89      LEFT JOIN (%1$sdemande      LEFT JOIN (%1$sdemande
90          JOIN %1$sdemande_type          JOIN %1$sdemande_type
91              ON demande.demande_type = demande_type.demande_type              ON demande.demande_type = demande_type.demande_type
92      )      ) ON demande.dossier_instruction = dossier.dossier
93          ON demande.dossier_instruction = dossier.dossier          AND demande_type.dossier_instruction_type = dossier.dossier_instruction_type
             AND demande_type.dossier_instruction_type = dossier.dossier_instruction_type  
94      ',      ',
95      DB_PREFIXE      DB_PREFIXE
96  );  );
# Line 113  $table_end_optimiser_lien_demandeurs = s Line 105  $table_end_optimiser_lien_demandeurs = s
105      JOIN %1$slien_dossier_demandeur      JOIN %1$slien_dossier_demandeur
106          ON dossier.dossier = lien_dossier_demandeur.dossier AND lien_dossier_demandeur.petitionnaire_principal IS TRUE          ON dossier.dossier = lien_dossier_demandeur.dossier AND lien_dossier_demandeur.petitionnaire_principal IS TRUE
107      JOIN %1$sdemandeur      JOIN %1$sdemandeur
108          ON lien_dossier_demandeur.demandeur = demandeur.demandeur AND LOWER(demandeur.type_demandeur) = LOWER(\'petitionnaire\')          ON lien_dossier_demandeur.demandeur = demandeur.demandeur AND demandeur.type_demandeur = \'petitionnaire\'
109      ',      ',
110      DB_PREFIXE      DB_PREFIXE
111  );  );
# Line 122  $table = sprintf( Line 114  $table = sprintf(
114      '%1$sdossier      '%1$sdossier
115      %2$s      %2$s
116      %3$s      %3$s
117      %4$s      %4$s',
     %5$s  
     ',  
118      DB_PREFIXE,      DB_PREFIXE,
119      $table_debut_old,      $table_debut_old,
120      $table_middle,      $table_middle,
121      $table_end_old,      $table_end_old
     $join_enjeux_dossier  
122  );  );
123    
124  // Génération de la sortie selon le paramètrage  // Génération de la sortie selon le paramètrage
# Line 140  if ( Line 129  if (
129          '%1$sdossier          '%1$sdossier
130          %2$s          %2$s
131          %3$s          %3$s
132          %4$s          %4$s',
         %5$s  
         ',  
133          DB_PREFIXE,          DB_PREFIXE,
134          $table_debut_optimiser_lien_demandeurs,          $table_debut_optimiser_lien_demandeurs,
135          $table_middle,          $table_middle,
136          $table_end_optimiser_lien_demandeurs,          $table_end_optimiser_lien_demandeurs
         $join_enjeux_dossier  
137      );      );
138  }  }
139    
# Line 158  if ($f->is_option_dossier_commune_enable Line 144  if ($f->is_option_dossier_commune_enable
144      ";      ";
145  }  }
146    
 $nature_travaux_from = "LEFT JOIN (  
     SELECT ntc.dossier, string_agg(ntc.libelle::text, '\n' order by ntc.libelle) as libelle  
     FROM  
     (SELECT DISTINCT  
         dossier,  
         famille_travaux.libelle as famille_travaux,  
         CONCAT(famille_travaux.libelle, ' / ', nature_travaux.libelle) as libelle  
     FROM  
         ".DB_PREFIXE."lien_dossier_nature_travaux  
     INNER JOIN  
         ".DB_PREFIXE."nature_travaux  
             ON lien_dossier_nature_travaux.nature_travaux = nature_travaux.nature_travaux  
     INNER JOIN  
         ".DB_PREFIXE."famille_travaux  
             ON nature_travaux.famille_travaux = famille_travaux.famille_travaux ORDER BY famille_travaux.libelle) as ntc  
     GROUP BY dossier ORDER BY libelle) as nature_travaux ON nature_travaux.dossier = dossier.dossier  
 ";  
 // Ajout des colonnes concernant la demat  
 if ($f->get_submitted_get_value('mode') === 'export_csv') {  
     // Jointure permettant d'afficher l'id platau du service consultant et le  
     // libellé du service consultant dans les exports si le mode service consulté est  
     // actif  
     $table .= $f->is_option_mode_service_consulte_enabled() === true ?  
         'LEFT JOIN '.DB_PREFIXE.'consultation_entrante  
             ON dossier.dossier = consultation_entrante.dossier  
         ' :  
         '';  
     $table .=  
         "LEFT JOIN  
             (SELECT  
                 dossier,  
                 external_uid  
             FROM  
                 ".DB_PREFIXE."lien_id_interne_uid_externe  
             WHERE object = 'dossier'  
                 AND category = 'platau'  
             ) AS dossier_platau  
             ON  
                 dossier_platau.dossier = dossier.dossier  
         LEFT JOIN  
             (SELECT  
                 dossier,  
                 external_uid  
             FROM  
                 ".DB_PREFIXE."lien_id_interne_uid_externe  
             WHERE object = 'dossier_consultation'  
                 AND category = 'platau'  
             ) AS consultation_platau  
             ON  
                 consultation_platau.dossier = dossier.dossier  
         LEFT JOIN  
             (SELECT  
                 dossier,  
                 ARRAY_TO_STRING(ARRAY_AGG(external_uid ORDER BY external_uid ASC), ', ') AS external_uid  
             FROM  
                 ".DB_PREFIXE."lien_id_interne_uid_externe  
             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  
             ";  
     $nature_travaux_from = "LEFT JOIN (  
         SELECT ftc.dossier, string_agg(ftc.libelle::text, ', ') as famille_travaux_libelle  
         FROM  
         (SELECT DISTINCT  
             dossier,  
             famille_travaux.libelle  
         FROM  
             ".DB_PREFIXE."lien_dossier_nature_travaux  
         INNER JOIN  
             ".DB_PREFIXE."nature_travaux  
                 ON lien_dossier_nature_travaux.nature_travaux = nature_travaux.nature_travaux  
         INNER JOIN  
             ".DB_PREFIXE."famille_travaux  
                 ON nature_travaux.famille_travaux = famille_travaux.famille_travaux  
         ORDER BY famille_travaux.libelle) as ftc  
         GROUP BY dossier) as famille_travaux ON famille_travaux.dossier = dossier.dossier  
         LEFT JOIN (  
                 SELECT ntc.dossier, string_agg(ntc.libelle::text, ', ') as nature_travaux_libelle  
                 FROM  
                 (SELECT DISTINCT  
                     dossier,  
                     nature_travaux.libelle  
                 FROM  
                     ".DB_PREFIXE."lien_dossier_nature_travaux  
                 INNER JOIN  
                     ".DB_PREFIXE."nature_travaux  
                         ON lien_dossier_nature_travaux.nature_travaux = nature_travaux.nature_travaux  
                 ORDER BY nature_travaux.libelle) as ntc  
                 GROUP BY dossier) as nature_travaux ON nature_travaux.dossier = dossier.dossier  
     ";  
 }  
   
147  $champ_date_depot_mairie = 'to_char(dossier.date_depot_mairie ,\'DD/MM/YYYY\') as "'.__("dépôt mairie").'"';  $champ_date_depot_mairie = 'to_char(dossier.date_depot_mairie ,\'DD/MM/YYYY\') as "'.__("dépôt mairie").'"';
148    
149  /*Champs du début de la requête*/  /*Champs du début de la requête*/
# Line 299  if ($f->is_option_date_depot_mairie_enab Line 174  if ($f->is_option_date_depot_mairie_enab
174  // avant de tronquer la valeur et d'ajouter une ellipse "…"  // avant de tronquer la valeur et d'ajouter une ellipse "…"
175  $max_chars = 40;  $max_chars = 40;
176  //  //
 $description_projet_select = "  
 CASE WHEN nature_travaux.libelle IS NULL AND char_length(description_projet) <= ".$max_chars." THEN  
     CONCAT('<span class=\"nature_travaux_cursor\" title=\"',  
             description_projet,  
         '\">',  
         replace(description_projet, '\n', '<br/>'),  
     '</span>')  
 WHEN nature_travaux.libelle IS NULL AND char_length(description_projet) > ".$max_chars." THEN  
     CONCAT('<span class=\"nature_travaux_cursor\" title=\"',  
             description_projet,  
         '\">',  
         replace(left(description_projet, ".$max_chars."), '\n', '<br/>') || '…',  
     '</span>')  
 WHEN nature_travaux.libelle IS NOT NULL AND ARRAY_LENGTH(STRING_TO_ARRAY(nature_travaux.libelle, '\n'), 1) = 1 THEN  
     CONCAT('<span class=\"nature_travaux_cursor\" title=\"',  
             nature_travaux.libelle,  
             '\n',  
             description_projet,  
         '\">',  
         replace(nature_travaux.libelle, '\n', '<br/>'),  
     '</span>')  
 WHEN nature_travaux.libelle IS NOT NULL AND ARRAY_LENGTH(STRING_TO_ARRAY(nature_travaux.libelle, '\n'), 1) > 1 THEN  
     CONCAT('<span class=\"nature_travaux_cursor\" title=\"',  
             nature_travaux.libelle,  
             '\n',  
             description_projet,  
         '\">',  
         split_part(nature_travaux.libelle, '\n', 1), '<br/>', '[...]',  
     '</span>')  
 END as \"".__("nature des travaux").'"';  
177  // 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
178  // 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'
179  $description_projet_from = "  $description_projet_select = sprintf(
180  INNER JOIN (      "-- use_column_name_to_sort
181      SELECT      (
182          CONCAT_WS(          SELECT
183              '\n',              CASE WHEN nature_travaux.libelle IS NULL
184              CASE WHEN co_projet_desc = '' THEN                      AND char_length(description_projet.libelle) <= %2\$s
185                  NULL                  THEN CONCAT(
186              ELSE                      '<span class=\"nature_travaux_cursor\" title=\"', description_projet.libelle, '\">',
187                  TRIM(co_projet_desc)                          REPLACE(description_projet.libelle, '\n', '<br/>'),
188              END,                      '</span>')
189              CASE WHEN ope_proj_desc = '' THEN                  WHEN nature_travaux.libelle IS NULL
190                  NULL                      AND char_length(description_projet.libelle) > %2\$s
191              ELSE                  THEN CONCAT(
192                  TRIM(ope_proj_desc)                      '<span class=\"nature_travaux_cursor\" title=\"', description_projet.libelle, '\">',
193              END,                          REPLACE(left (description_projet.libelle, %2\$s), '\n', '<br/>') || '…',
194              CASE WHEN am_projet_desc = '' THEN                      '</span>')
195                  NULL                  WHEN nature_travaux.libelle IS NOT NULL
196              ELSE                      AND ARRAY_LENGTH(STRING_TO_ARRAY(nature_travaux.libelle, '\n'), 1) = 1
197                  TRIM(am_projet_desc)                  THEN CONCAT(
198              END,                      '<span class=\"nature_travaux_cursor\" title=\"', nature_travaux.libelle, '\n', description_projet.libelle, '\">',
199              CASE WHEN dm_projet_desc = '' THEN                          REPLACE(nature_travaux.libelle, '\n', '<br/>'),
200                  NULL                      '</span>')
201              ELSE                  WHEN nature_travaux.libelle IS NOT NULL
202                  TRIM(dm_projet_desc)                      AND ARRAY_LENGTH(STRING_TO_ARRAY(nature_travaux.libelle, '\n'), 1) > 1
203              END,                  THEN CONCAT(
204              CASE WHEN donnees_techniques.erp_cstr_neuve IS TRUE                      '<span class=\"nature_travaux_cursor\" title=\"', nature_travaux.libelle, '\n', description_projet.libelle, '\">',
205                  THEN '".str_replace("'", "''", __('erp_cstr_neuve'))."' END,                          SPLIT_PART(nature_travaux.libelle, '\n', 1), '<br/>', '[...]',
206              CASE WHEN donnees_techniques.erp_trvx_acc IS TRUE                      '</span>')
207                  THEN '".str_replace("'", "''", __('erp_trvx_acc'))."' END,              END AS \"nature des travaux\"
208              CASE WHEN donnees_techniques.erp_extension IS TRUE          FROM (
209                  THEN '".str_replace("'", "''", __('erp_extension'))."' END,              SELECT
210              CASE WHEN donnees_techniques.erp_rehab IS TRUE                  dossier_instruction,
211                  THEN '".str_replace("'", "''", __('erp_rehab'))."' END,                  CONCAT_WS(
212              CASE WHEN donnees_techniques.erp_trvx_am IS TRUE                      '\n',
213                  THEN '".str_replace("'", "''", __('erp_trvx_am'))."' END,                      CASE WHEN co_projet_desc = '' THEN
214              CASE WHEN donnees_techniques.erp_vol_nouv_exist IS TRUE                          NULL
215                  THEN '".str_replace("'", "''", __('erp_vol_nouv_exist'))."' END,                      ELSE
216              CASE WHEN mh_design_appel_denom = '' THEN                          TRIM(co_projet_desc)
217                  NULL                      END,
218              ELSE                      CASE WHEN ope_proj_desc = '' THEN
219                  TRIM(mh_design_appel_denom)                          NULL
220              END,                      ELSE
221              CASE WHEN mh_loc_denom = '' THEN                          TRIM(ope_proj_desc)
222                  NULL                      END,
223              ELSE                      CASE WHEN am_projet_desc = '' THEN
224                  TRIM(mh_loc_denom)                          NULL
225              END                      ELSE
226          ) as description_projet,                          TRIM(am_projet_desc)
227          dossier_instruction                      END,
228          FROM ".DB_PREFIXE."donnees_techniques                      CASE WHEN dm_projet_desc = '' THEN
229      ) as description_projet                          NULL
230      ON description_projet.dossier_instruction = dossier.dossier                      ELSE
231  ";                          TRIM(dm_projet_desc)
232                        END,
233                        CASE WHEN donnees_techniques.erp_cstr_neuve IS TRUE
234                            THEN '".str_replace("'", "''", __('erp_cstr_neuve'))."' END,
235                        CASE WHEN donnees_techniques.erp_trvx_acc IS TRUE
236                            THEN '".str_replace("'", "''", __('erp_trvx_acc'))."' END,
237                        CASE WHEN donnees_techniques.erp_extension IS TRUE
238                            THEN '".str_replace("'", "''", __('erp_extension'))."' END,
239                        CASE WHEN donnees_techniques.erp_rehab IS TRUE
240                            THEN '".str_replace("'", "''", __('erp_rehab'))."' END,
241                        CASE WHEN donnees_techniques.erp_trvx_am IS TRUE
242                            THEN '".str_replace("'", "''", __('erp_trvx_am'))."' END,
243                        CASE WHEN donnees_techniques.erp_vol_nouv_exist IS TRUE
244                            THEN '".str_replace("'", "''", __('erp_vol_nouv_exist'))."' END,
245                        CASE WHEN mh_design_appel_denom = '' THEN
246                            NULL
247                        ELSE
248                            TRIM(mh_design_appel_denom)
249                        END,
250                        CASE WHEN mh_loc_denom = '' THEN
251                            NULL
252                        ELSE
253                            TRIM(mh_loc_denom)
254                        END
255                    ) as libelle
256                FROM %1\$sdonnees_techniques
257                WHERE
258                    donnees_techniques.dossier_instruction = dossier.dossier
259                ) as description_projet
260                LEFT JOIN (
261                    SELECT
262                        ntc.dossier,
263                        string_agg(ntc.libelle::text, '\n' ORDER BY ntc.libelle) AS libelle
264                    FROM (
265                        SELECT DISTINCT
266                            dossier,
267                            famille_travaux.libelle AS famille_travaux,
268                            CONCAT(famille_travaux.libelle, ' / ', nature_travaux.libelle) AS libelle
269                        FROM
270                            %1\$slien_dossier_nature_travaux
271                            INNER JOIN %1\$snature_travaux
272                                ON lien_dossier_nature_travaux.nature_travaux = nature_travaux.nature_travaux
273                            INNER JOIN %1\$sfamille_travaux
274                                ON nature_travaux.famille_travaux = famille_travaux.famille_travaux
275                        WHERE
276                            lien_dossier_nature_travaux.dossier = dossier.dossier
277                        ORDER BY
278                            famille_travaux.libelle
279                    ) AS ntc
280                    GROUP BY dossier
281                    ORDER BY libelle
282                ) AS nature_travaux
283                    ON description_projet.dossier_instruction = nature_travaux.dossier
284        ) AS \"".__("nature des travaux").'"',
285        DB_PREFIXE,
286        $max_chars
287    );
288    
289  // On ne veut cette colonne que dans les trois listings "Recherche",  // On ne veut cette colonne que dans les trois listings "Recherche",
290  // "Mes encours" et "Tous les encours"  // "Mes encours" et "Tous les encours"
291  $listings = array("dossier_instruction",  $listings = array("dossier_instruction",
# Line 414  if ($is_in_obj_whitelist === true && $re Line 316  if ($is_in_obj_whitelist === true && $re
316      if ($f->is_option_date_depot_mairie_enabled() === true) {      if ($f->is_option_date_depot_mairie_enabled() === true) {
317          $champAffiche_debut_commun[] = $champ_date_depot_mairie;          $champAffiche_debut_commun[] = $champ_date_depot_mairie;
318      }      }
     // Modifie également le from  
     $table .= $description_projet_from.' '.$nature_travaux_from;  
319  }  }
320    
321  /*Champs de la fin de la requête*/  /*Champs de la fin de la requête*/
# Line 626  if (isset($extra_parameters["filtre_deci Line 526  if (isset($extra_parameters["filtre_deci
526                  ON division.direction=direction.direction                  ON division.direction=direction.direction
527              JOIN %1$som_collectivite              JOIN %1$som_collectivite
528                  ON direction.om_collectivite=om_collectivite.om_collectivite                  ON direction.om_collectivite=om_collectivite.om_collectivite
             %2$s %3$s  
             %4$s  
529          ',          ',
530          DB_PREFIXE,          DB_PREFIXE
         $description_projet_from,  
         $nature_travaux_from,  
         $join_enjeux_dossier  
531      );      );
532      // Modification sélection      // Modification sélection
533      $selection = "WHERE dossier_instruction_type.sous_dossier IS NOT TRUE AND      $selection = "WHERE dossier_instruction_type.sous_dossier IS NOT TRUE AND

Legend:
Removed from v.18876  
changed lines
  Added in v.19307

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26