".__("dossiers d'autorisation"); // Par défaut, aucune actions disponibles sur le tableau $tab_actions['corner']['ajouter'] = NULL; $tab_actions['left']['consulter'] = NULL; $tab_actions['content'] = NULL; $options = NULL; /* 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"; $case_etat = "CASE WHEN etat_dernier_dossier_instruction_accepte IS NULL THEN eda.libelle ELSE edda.libelle END"; // Copie des surcharges de la classe dossier à partir de gen/sql/pgsql/dossier.inc.php $foreign_keys_di = array( "dossier" => array( "dossier", "dossier_instruction", "dossier_instruction_mes_encours", "dossier_instruction_tous_encours", "dossier_instruction_mes_clotures", "dossier_instruction_tous_clotures", "dossier_contentieux", "dossier_contentieux_mes_infractions", "dossier_contentieux_toutes_infractions", "dossier_contentieux_mes_recours", "dossier_contentieux_tous_recours", "sous-dossier" ) ); // Liste des autres dossiers d'instructions if (in_array($retourformulaire, $foreign_keys_di['dossier']) === true || $retourformulaire == 'dossier_qualifier_qualificateur' || $retourformulaire== 'dossier_autorisation'){ $champAffiche=array( 'da.dossier_autorisation', 'da.dossier_autorisation_libelle as "'.__("dossier d'autorisation lié géographiquement").'"', 'to_char(da.depot_initial ,\'DD/MM/YYYY\') as "'.__("date_depot_initial").'"', $case_etat.' as "'.__("etat").'"', ); // option commune = filtrage sur la commune // ATTENTION : Ce filtrage compare la commune du dossier courant (di_current.commune) // avec la commune du dossier d'autorisation (da.commune). Si ces communes diffèrent, // les dossiers liés géographiquement ne seront pas retournés, même s'ils ont des parcelles en commun. // Cela peut causer des problèmes de symétrie si les communes ne correspondent pas. $filtrage_commune = ''; if ($f->is_option_dossier_commune_enabled()) { $filtrage_commune = ' AND di_current.commune = da.commune '; } // Récupère les dossiers d'autorisation qui ont au moins une parcelle en commun avec // le DI courant, en comparant les tables dossier_parcelle et dossier_autorisation_parcelle. // La normalisation des parcelles est appliquée de manière symétrique pour garantir // que la correspondance fonctionne dans les deux sens (dossier 1 -> dossier 2 et dossier 2 -> dossier 1). // Normalisation : les parcelles de 8 caractères sont normalisées en 9 caractères en ajoutant '0' à la position 4. $table = sprintf( "%1\$sdossier AS di_current INNER JOIN %1\$sdossier_parcelle AS dp_current ON dp_current.dossier = di_current.dossier INNER JOIN %1\$sdossier_parcelle AS dp_other ON ( CASE WHEN char_length(trim(dp_current.libelle::text)) = 8 THEN substring(trim(dp_current.libelle::text) FROM 1 FOR 3) || '0' || substring(trim(dp_current.libelle::text) FROM 4) ELSE trim(dp_current.libelle::text) END ) = ( CASE WHEN char_length(trim(dp_other.libelle::text)) = 8 THEN substring(trim(dp_other.libelle::text) FROM 1 FOR 3) || '0' || substring(trim(dp_other.libelle::text) FROM 4) ELSE trim(dp_other.libelle::text) END ) AND dp_other.dossier <> di_current.dossier INNER JOIN %1\$sdossier AS di_other ON di_other.dossier = dp_other.dossier AND di_other.dossier_autorisation <> di_current.dossier_autorisation AND di_other.om_collectivite = di_current.om_collectivite INNER JOIN %1\$sdossier_autorisation AS da ON da.dossier_autorisation = di_other.dossier_autorisation AND da.om_collectivite = di_other.om_collectivite LEFT JOIN %1\$setat_dossier_autorisation as eda ON da.etat_dossier_autorisation = eda.etat_dossier_autorisation LEFT JOIN %1\$setat_dossier_autorisation as edda ON da.etat_dernier_dossier_instruction_accepte = edda.etat_dossier_autorisation", DB_PREFIXE ); // On souhaite afficher les DA liés au DI courant // Filtrage précoce pour optimiser la requête $selection = sprintf(" WHERE di_current.dossier='%s' ", $f->db->escapeSimple($idxformulaire)); // Ajout du filtrage sur la commune si l'option est activée $selection .= $filtrage_commune; // GROUP BY pour éliminer les doublons si plusieurs parcelles en commun $selection .= " GROUP BY da.dossier_autorisation, da.dossier_autorisation_libelle, da.depot_initial, eda.libelle, edda.libelle "; $tri= "ORDER BY da.depot_initial DESC"; // Lien vers le script spécifique de visualisation if (isset($advs_id) === false) { $advs_id = ""; } //Suppression du bouton d'ajout $tab_actions['corner']['ajouter'] = NULL; //Suppression du bouton d'ajout $tab_actions['left']["consulter"] = array('lien' => ''.OM_ROUTE_FORM.'&obj=dossier_autorisation&action=777&retourformulaire='.$retourformulaire.'&idxformulaire='.$idxformulaire.'&retour='.$idxformulaire.'&idx=', 'lib' => ''.__('Consulter').'', 'rights' => array('list' => array('dossier_autorisation', 'dossier_autorisation_consulter'), 'operator' => 'OR'), 'ordre' => 10, 'ajax' => false ); $tab_actions['content'] = $tab_actions['left']["consulter"]; $options[] = array( "type"=>"pagination_select", "display"=>false, ); } ?>