"._("dossiers d'instruction"); $tab_title = _("DI"); // Pour le formulaire de géocodage par lot // Change le nom de l'onglet principal et cache les autres onglets if ($f->get_submitted_get_value('action') === '126'){ $tab_title = _("Géolocalisation des dossiers"); $sousformulaire = array(); } /* Test SQL pour récupérer les bons champs selon la qualité du demandeur : * particulier ou personne morale*/ $case_demandeur = "CASE WHEN demandeur.qualite='particulier' THEN TRIM(CONCAT(demandeur.particulier_nom, ' ', demandeur.particulier_prenom)) ELSE TRIM(CONCAT(demandeur.personne_morale_raison_sociale, ' ', demandeur.personne_morale_denomination)) END"; /*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").'"'; /*Tables sur lesquels la requête va s'effectuer*/ $table = DB_PREFIXE."dossier LEFT JOIN ( SELECT * FROM ".DB_PREFIXE."lien_dossier_demandeur INNER JOIN ".DB_PREFIXE."demandeur 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 LEFT JOIN ".DB_PREFIXE."dossier_autorisation ON dossier_autorisation.dossier_autorisation = dossier.dossier_autorisation LEFT JOIN ".DB_PREFIXE."dossier_autorisation_type_detaille ON dossier_autorisation_type_detaille.dossier_autorisation_type_detaille = dossier_autorisation.dossier_autorisation_type_detaille LEFT JOIN ".DB_PREFIXE."instructeur ON dossier.instructeur = instructeur.instructeur LEFT JOIN ".DB_PREFIXE."om_utilisateur ON instructeur.om_utilisateur = om_utilisateur.om_utilisateur LEFT JOIN ".DB_PREFIXE."instructeur as instructeur2 ON dossier.instructeur_2 = instructeur2.instructeur LEFT JOIN ".DB_PREFIXE."om_utilisateur as om_utilisateur2 ON instructeur2.om_utilisateur = om_utilisateur2.om_utilisateur LEFT JOIN ".DB_PREFIXE."etat ON dossier.etat = etat.etat LEFT JOIN ".DB_PREFIXE."division ON dossier.division = division.division LEFT JOIN ".DB_PREFIXE."avis_decision ON avis_decision.avis_decision=dossier.avis_decision LEFT JOIN ".DB_PREFIXE."om_collectivite ON dossier.om_collectivite=om_collectivite.om_collectivite LEFT OUTER JOIN ".DB_PREFIXE."arrondissement ON arrondissement.code_postal = dossier.terrain_adresse_code_postal "; if ($f->is_option_dossier_commune_enabled()) { $table .= " LEFT OUTER JOIN ".DB_PREFIXE."commune ON commune.commune = dossier.commune "; } // Ajout des colonnes concernant la demat $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 LEFT JOIN ".DB_PREFIXE."demande ON demande.dossier_instruction = dossier.dossier "; $champ_date_depot_mairie = 'to_char(dossier.date_depot_mairie ,\'DD/MM/YYYY\') as "'._("date_depot_mairie").'"'; /*Champs du début de la requête*/ $champAffiche_debut_commun = array( 'dossier.dossier as "'._("dossier").'"', 'dossier.dossier_libelle as "'._("dossier").'"' ); if ($f->is_option_dossier_commune_enabled()) { $champAffiche_debut_commun[] = 'commune.libelle as "'.__("commune").'"'; } array_push($champAffiche_debut_commun, $case_demandeur.' as "'._("petitionnaire").'"', $trim_concat_terrain, 'dossier_autorisation_type_detaille.libelle as "'._("nature_dossier").'"', 'to_char(dossier.date_depot ,\'DD/MM/YYYY\') as "'._("date_depot").'"', 'to_char(dossier.date_complet ,\'DD/MM/YYYY\') as "'._("date_complet").'"', 'CASE WHEN dossier.incomplet_notifie IS TRUE AND dossier.incompletude IS TRUE THEN to_char(dossier.date_limite_incompletude ,\'DD/MM/YYYY\') ELSE to_char(dossier.date_limite ,\'DD/MM/YYYY\') END as "'._("date_limite").'"' ); if ($f->is_option_date_depot_mairie_enabled() === true) { $champAffiche_debut_commun[] = $champ_date_depot_mairie; } /** * Colonne "Nature des travaux" (regroupe les descriptions des données * techniques). */ // Nombre max de caractères à afficher dans la colonne de la nature des travaux // avant de tronquer la valeur et d'ajouter une ellipse "…" $max_chars = 40; // $nature_des_travaux_select = " CASE WHEN char_length(nature_des_travaux) <= ".$max_chars." THEN CONCAT('', replace(nature_des_travaux, '\n', '
'), '
') ELSE CONCAT('', replace(left(nature_des_travaux, ".$max_chars."), '\n', '
') || '…', '
') END as \""._("nature des travaux").'"'; // description/nature des travaux. En cas de modif, bloc de code aussi présent dans // dossier.form.inc.php (le formulaire du DI)', 'om_requete' et 'stats à la demande' $nature_des_travaux_from = " INNER JOIN ( SELECT CONCAT_WS( '\n', CASE WHEN co_projet_desc = '' THEN NULL ELSE TRIM(co_projet_desc) END, CASE WHEN ope_proj_desc = '' THEN NULL ELSE TRIM(ope_proj_desc) END, CASE WHEN am_projet_desc = '' THEN NULL ELSE TRIM(am_projet_desc) END, CASE WHEN dm_projet_desc = '' THEN NULL ELSE TRIM(dm_projet_desc) END, CASE WHEN donnees_techniques.erp_cstr_neuve IS TRUE THEN '".str_replace("'", "''", _('erp_cstr_neuve'))."' END, CASE WHEN donnees_techniques.erp_trvx_acc IS TRUE THEN '".str_replace("'", "''", _('erp_trvx_acc'))."' END, CASE WHEN donnees_techniques.erp_extension IS TRUE THEN '".str_replace("'", "''", _('erp_extension'))."' END, CASE WHEN donnees_techniques.erp_rehab IS TRUE THEN '".str_replace("'", "''", _('erp_rehab'))."' END, CASE WHEN donnees_techniques.erp_trvx_am IS TRUE THEN '".str_replace("'", "''", _('erp_trvx_am'))."' END, CASE WHEN donnees_techniques.erp_vol_nouv_exist IS TRUE THEN '".str_replace("'", "''", _('erp_vol_nouv_exist'))."' END ) as nature_des_travaux, dossier_instruction FROM ".DB_PREFIXE."donnees_techniques ) as nature_des_travaux ON nature_des_travaux.dossier_instruction = dossier.dossier "; // On ne veut cette colonne que dans les trois listings "Recherche", // "Mes encours" et "Tous les encours" $listings = array("dossier_instruction", "dossier_instruction_mes_encours", "dossier_instruction_tous_encours"); // $is_in_obj_whitelist = in_array($obj, $listings); // La variable $retourformulaire permet de s'assurer que l'on est pas dans un // sous-tableau if ($is_in_obj_whitelist === true && $retourformulaire === '') { // Modifie les colonnes à afficher en début du tableau $champAffiche_debut_commun = array( 'dossier.dossier as "'._("dossier").'"', 'dossier.dossier_libelle as "'._("dossier").'"' ); if ($f->is_option_dossier_commune_enabled()) { $champAffiche_debut_commun[] = 'commune.libelle as "'.__("commune").'"'; } array_push($champAffiche_debut_commun, $case_demandeur.' as "'._("petitionnaire").'"', $trim_concat_terrain, 'dossier_autorisation_type_detaille.libelle as "'._("nature_dossier").'"', $nature_des_travaux_select, 'to_char(dossier.date_depot ,\'DD/MM/YYYY\') as "'._("date_depot").'"', 'to_char(dossier.date_complet ,\'DD/MM/YYYY\') as "'._("date_complet").'"', 'CASE WHEN dossier.incomplet_notifie IS TRUE AND dossier.incompletude IS TRUE THEN to_char(dossier.date_limite_incompletude ,\'DD/MM/YYYY\') ELSE to_char(dossier.date_limite ,\'DD/MM/YYYY\') END as "'._("date_limite").'"' ); if ($f->is_option_date_depot_mairie_enabled() === true) { $champAffiche_debut_commun[] = $champ_date_depot_mairie; } // Modifie également le from $table .= $nature_des_travaux_from; } /*Champs de la fin de la requête*/ $champAffiche_fin_commun = array( 'etat.libelle as "'._("etat").'"', 'CASE WHEN dossier.enjeu_urba is TRUE THEN \'URBA\' ELSE \'\' END || CASE WHEN dossier.enjeu_erp is TRUE THEN \'ERP\' ELSE \'\' END as "'._("enjeu").'"', ); // if ($_SESSION['niveau'] == '2') { array_push($champAffiche_fin_commun, "om_collectivite.libelle as \""._("collectivite")."\""); } $selection .= "AND groupe.code != 'CTX'"; /*Liste des champs affichés dans le tableau de résultat*/ $champAffiche = array_merge( $champAffiche_debut_commun, array('instructeur.nom as "'._("instructeur").'"', 'division.code as "'._("division").'"', ), $champAffiche_fin_commun ); // Suppression du bouton d'ajout, qui n'est pas affiché par défaut dans les listings de // dossiers d'instruction $tab_actions['corner']['ajouter'] = NULL; if (isset($_GET['message_help']) && ! is_null($_GET['message_help']) && $_GET['message_help'] != "" && $_GET['module'] == 'tab') { $tab_actions['left']["consulter"]['id'] .= '&message_help='.urlencode($_GET['message_help']); $tab_actions['content'] = $tab_actions['left']["consulter"]; } // Liste des autres dossiers d'instructions if ($retourformulaire== 'dossier_instruction'){ $champAffiche = array( 'b.dossier as "'._("dossier_instruction").'"', 'b.dossier_libelle as "'._("dossier").'"' ); if ($f->is_option_dossier_commune_enabled()) { $champAffiche[] = 'c.libelle as "'._("commune").'"'; } array_push($champAffiche, 'dossier_instruction_type.libelle as "'._("demande_type").'"', 'to_char(b.date_depot ,\'DD/MM/YYYY\') as "'._("date_depot").'"', 'b.etat as "'._("etat").'"' ); $table =DB_PREFIXE.'dossier as a JOIN '.DB_PREFIXE.'dossier_autorisation ON a.dossier_autorisation=dossier_autorisation.dossier_autorisation JOIN '.DB_PREFIXE.'dossier as b ON b.dossier_autorisation=dossier_autorisation.dossier_autorisation JOIN '.DB_PREFIXE.'dossier_instruction_type ON dossier_instruction_type.dossier_instruction_type = b.dossier_instruction_type'; if ($f->is_option_dossier_commune_enabled()) { $table .= ' JOIN '.DB_PREFIXE.'commune as c ON c.commune = dossier.commune'; } $selection = 'WHERE a.dossier=\''.$f->db->escapeSimple($idxformulaire).'\''; $tri= "order by b.date_depot ASC"; // $tab_actions['left']["consulter"] = array('lien' => ''.OM_ROUTE_FORM.'&obj=dossier_instruction&action=3'.'&idx=', 'id' => '&retourformulaire='.$retourformulaire.'&retour=', 'lib' => ''._('Consulter').'', 'rights' => array('list' => array('dossier_instruction', 'dossier_instruction_consulter'), 'operator' => 'OR'), 'ordre' => 10, 'ajax' => false); $tab_actions['content'] = $tab_actions['left']["consulter"]; $options[] = array( "type"=>"pagination_select", "display"=>false, ); } if ( $retourformulaire == "dossier_autorisation") { // $tab_actions['left']["consulter"] = array('lien' => ''.OM_ROUTE_FORM.'&obj=dossier_instruction&action=3&idx=', 'id' => '&retourformulaire='.$retourformulaire, 'lib' => ''._('Consulter').'', 'rights' => array('list' => array('dossier_instruction', 'dossier_instruction_consulter'), 'operator' => 'OR'), 'ordre' => 10, 'ajax' => false); $tab_actions['content'] = $tab_actions['left']["consulter"] ; } // Affichage du bouton de redirection vers le SIG externe si configuré // XXX Ajouter filtre pour afficher l'icone géolocalisation en fonction de la conf SIG du dossier if($f->getParameter('option_sig') == 'sig_externe') { $tab_actions['left']["localiser-sig-externe"] = array( 'lien' => ''.OM_ROUTE_FORM.'&obj=dossier_instruction&action=140&idx=', 'id' => '', 'lib' => ''._('Localiser').'', 'rights' => array('list' => array('dossier_instruction', 'dossier_instruction_consulter'), 'operator' => 'OR'), 'ordre' => 20, 'target' => "_SIG", 'ajax' => false); } // Si filtre DI auxquels on peut proposer une autre décision if (isset($extra_parameters["filtre_decision"]) && $extra_parameters["filtre_decision"] == true) { // Augmentation de la limite $serie = 50; // Réinitialisation des options $options = array(); // Suppression de la recherche avancée $options[] = array( 'type' => 'search', 'display' => false); // Suppression du sélecteur de pages $options[] = array( 'type' => 'pagination_select', 'display' => false); // Ajout jointure $table .= "JOIN ".DB_PREFIXE."instruction ON instruction.instruction = ( SELECT instruction FROM ".DB_PREFIXE."instruction JOIN ".DB_PREFIXE."evenement on instruction.evenement=evenement.evenement WHERE instruction.dossier = dossier.dossier AND evenement.retour IS FALSE ORDER BY date_evenement DESC, instruction DESC LIMIT 1 ) JOIN ".DB_PREFIXE."evenement ON instruction.evenement=evenement.evenement 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')"; // Modification sélection $selection = "WHERE groupe.code != 'CTX' 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']."'"; // Si collectivité de l'utilisateur niveau mono alors filtre sur celle-ci if ($f->isCollectiviteMono($_SESSION['collectivite']) === true) { $selection .= " AND dossier.om_collectivite=".$_SESSION['collectivite']; } // Modification tri $tri = " ORDER BY dossier.dossier "; } // Gestion des groupes et confidentialité include ('../sql/pgsql/filter_group.inc.php'); ?>