"._("dossiers d'instruction"); $tab_title = _("DI"); /* 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( CASE WHEN dossier.adresse_normalisee IS NULL OR TRIM(dossier.adresse_normalisee) = \'\' THEN CONCAT_WS( \' \', dossier.terrain_adresse_voie_numero, dossier.terrain_adresse_voie, dossier.terrain_adresse_code_postal ) ELSE dossier.adresse_normalisee END ) as "'.__("localisation").'"'; /*Tables sur lesquels la requête va s'effectuer*/ $table = DB_PREFIXE."dossier LEFT JOIN ".DB_PREFIXE."lien_dossier_demandeur ON lien_dossier_demandeur.dossier=dossier.dossier AND lien_dossier_demandeur.petitionnaire_principal IS TRUE LEFT JOIN ".DB_PREFIXE."demandeur ON lien_dossier_demandeur.demandeur=demandeur.demandeur 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."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 -- Récupère la demande qui a créé le type dossier du dossier LEFT JOIN (".DB_PREFIXE."demande JOIN ".DB_PREFIXE."demande_type ON demande.demande_type = demande_type.demande_type) ON demande.dossier_instruction = dossier.dossier AND demande_type.dossier_instruction_type = dossier.dossier_instruction_type "; /*Champs du début de la requête*/ $champAffiche_debut_commun = array( 'dossier.dossier as "'._("dossier").'"', 'dossier.geom as "geom_picto"', 'demande.source_depot as "demat_picto"', $select__dossier_libelle__column_as, $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").'"', 'to_char(dossier.date_limite ,\'DD/MM/YYYY\') as "'._("date_limite").'"', ); /*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").'"', ); /*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); // Liste des autres dossiers d'instructions if (in_array($retourformulaire, $foreign_keys_extended["dossier"]) === true || $retourformulaire == 'dossier_qualifier_qualificateur' || $retourformulaire== 'dossier_autorisation'){ // Table principale : dossier cible (résultats du tableau) $table = DB_PREFIXE.'dossier as dossier'; // Jointure avec le DI source $table .= ' INNER JOIN '.DB_PREFIXE.'dossier as di_source ON di_source.dossier = \''.$f->db->escapeSimple($idxformulaire).'\''; // Éventuelle jointure avec la table de liaison des DI liés $table .= ' LEFT JOIN '.DB_PREFIXE.'lien_dossier_dossier ON lien_dossier_dossier.dossier_cible = dossier.dossier AND lien_dossier_dossier.dossier_src = \''.$f->db->escapeSimple($idxformulaire).'\''; // Jointure avec les clés étrangères du DI cible pour récupérer leurs libellés $table .= ' INNER JOIN '.DB_PREFIXE.'dossier_instruction_type as di_type_cible ON di_type_cible.dossier_instruction_type = dossier.dossier_instruction_type INNER JOIN '.DB_PREFIXE.'etat as etat_cible ON dossier.etat = etat_cible.etat'; // Jointure avec la table groupe $table .= " INNER JOIN ".DB_PREFIXE."dossier_autorisation_type_detaille ON di_type_cible.dossier_autorisation_type_detaille = dossier_autorisation_type_detaille.dossier_autorisation_type_detaille"; $table .= " INNER JOIN ".DB_PREFIXE."dossier_autorisation_type ON dossier_autorisation_type.dossier_autorisation_type = dossier_autorisation_type_detaille.dossier_autorisation_type"; $table .= " INNER JOIN ".DB_PREFIXE."groupe ON dossier_autorisation_type.groupe = groupe.groupe"; $table .= "-- Récupère la demande qui a créé le type dossier du dossier LEFT JOIN (".DB_PREFIXE."demande JOIN ".DB_PREFIXE."demande_type ON demande.demande_type = demande_type.demande_type) ON demande.dossier_instruction = dossier.dossier AND demande_type.dossier_instruction_type = dossier.dossier_instruction_type"; /* Condition SQL pour masquer l'icone de suppression de dossier lié. - Seul l'utilisateur disposant d'une permission spécifique peut supprimer les liens automatiques. - Un lien non typé n'est jamais supprimable (ce cas ne doit pas se produire). - Si l'utilisateur a une division alors celle-ci doit correspondre à celle du dossier à moins qu'il ne dispose d'un bypass. */ $clause_auto = '' ; if ($this->isAccredited("dossier_instruction_supprimer_liaison_auto") === false) { $clause_auto = ' OR lien_dossier_dossier.type_lien != \'manuel\' '; } if ($this->isAccredited("lien_dossier_dossier_gestion_defaut_bypass") === false && $_SESSION['division'] != '0') { $clause_auto .= ' OR di_source.division != '.$_SESSION['division'].' '; } $case_cannot_delete_link = 'CASE WHEN lien_dossier_dossier.type_lien IS NULL'.$clause_auto.' THEN \'f\' ELSE \'t\' END'; $options[] = array( 'type' => 'condition', 'field' => $case_cannot_delete_link, 'case' => array( array( 'values' => array('f', ), 'style' => 'case_cannot_delete_link', ), array( 'values' => array('t', ), 'style' => 'case_can_delete_link', ), ), ); /* Condition SQL pour mettre en forme le lien automatique. */ $case_lien_auto = 'CASE WHEN lien_dossier_dossier.type_lien = \'auto_recours\' THEN \'t\' ELSE \'f\' END'; $options[] = array( 'type' => 'condition', 'field' => $case_lien_auto, 'case' => array( array( 'values' => array('f', ), 'style' => 'case_lien_manuel', ), array( 'values' => array('t', ), 'style' => 'case_lien_auto', ), ), ); $champAffiche=array( 'dossier.dossier as "'._("dossier d'instruction").'"', 'dossier.geom as "geom_picto"', 'demande.source_depot as "demat_picto"', $select__dossier_libelle__column. ' as "'._("dossier d'instruction").'"', 'di_type_cible.libelle as "'._("demande_type").'"', 'to_char(dossier.date_depot ,\'DD/MM/YYYY\') as "'._("date_depot").'"', 'etat_cible.libelle as "'._("etat").'"', ); $champAffiche[] = $case_cannot_delete_link.' as "case_cannot_delete_link"'; $champAffiche[] = $case_lien_auto.' as "case_lien_auto"'; // Exclusion du DI source des DI cibles récupérés par le DA // et filtre du DI source $selection = ' WHERE dossier.dossier != \''.$f->db->escapeSimple($idxformulaire).'\' AND (di_source.dossier_autorisation = dossier.dossier_autorisation OR lien_dossier_dossier.dossier_cible IS NOT NULL)'; // Éventuel filtre mono sur les dossiers cibles if ($f->isCollectiviteMono($_SESSION['collectivite']) === true) { $selection .= " AND dossier.om_collectivite = ".$_SESSION['collectivite']; } // Tri chronologique par la date de dépôt du dossier cible $tri= "ORDER BY dossier.date_depot ASC"; // Récupération de la classe qui contient le soustab $class = ((isset($_GET['context']))?$_GET['context']: ''); // Gestion action ajouter $tab_actions['corner']['ajouter'] = NULL; require_once "../obj/dossier.class.php"; $inst = new dossier($idxformulaire); // if (isset($f) === true && $class !== '' && ($f->isAccredited($class . "_ajouter_bypass") === true || ($f->isUserInstructeur() && $inst->getDivisionFromDossier($idxformulaire) === $_SESSION["division"] && $f->getStatutDossier($idxformulaire) !== "cloture"))) { // Bouton d'ajout $tab_actions['corner']["ajouter"] = array( 'lien' => ''.OM_ROUTE_SOUSFORM.'&obj=' . $class .'&action=5&idx=0&idxformulaire='.$idxformulaire, 'id' => '&retourformulaire='.$retourformulaire.'&retour=tab', 'lib' => ''._('Ajouter').'', 'rights' => array('list' => array($class, $class . '_ajouter'), 'operator' => 'OR'), 'ordre' => 10, 'ajax' => false, ); } // if (isset($f) === true && ($f->getStatutDossier($idxformulaire) !== "cloture" || $f->isAccredited("dossier_instruction_supprimer_liaison_bypass") === true)) { // Action direct supprimer // On appelle la classe de dossier contenue dans $retourformulaire $tab_actions['left']['supprimer'] = array( 'lien' => ''.OM_ROUTE_FORM.'&obj=' . $retourformulaire . '&action=210&idx='.$idxformulaire.'&idx_cible=', 'lib' => ''._('Supprimer').'', 'rights' => array('list' => array($retourformulaire, $retourformulaire . '_supprimer_liaison'), 'operator' => 'OR'), 'ordre' => 30, 'type' => 'action-direct', ); } // Action consulter sans AJAX $tab_actions['left']["consulter"] = array( 'lien' => ''.OM_ROUTE_FORM.'&obj=dossier_instruction&action=777&retourformulaire='.$retourformulaire.'&idxformulaire='.$idxformulaire.'&idx=', 'lib' => ''._('Consulter').'', 'rights' => array( 'list' => array( 'dossier_instruction', 'dossier_instruction_consulter', 'dossier_contentieux_tous_recours', 'dossier_contentieux_tous_recours_consulter', 'dossier_contentieux_toutes_infractions', 'dossier_contentieux_toutes_infractions_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"){ //Suppression du bouton d'ajout $tab_actions['corner']['ajouter'] = NULL; // $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); } // Ajout du filtrage des sous dossier à la requête d'affichage du listing $sqlFiltreSD = $this->get_sql_filtre_sous_dossier($table.$selection); $selection .= $sqlFiltreSD['WHERE']; $table .= $sqlFiltreSD['FROM']; ?>