get_submitted_get_value('retourformulaire')) ?
$f->get_submitted_get_value('retourformulaire') :
$f->get_submitted_get_value('?retourformulaire');
$getObj = ! empty($getObj) ? $getObj : $parent;
if (! empty($sousformulaire_parameters['dossier_contrainte_contexte_ctx']['href'])) {
$sousformulaire_parameters['dossier_contrainte_contexte_ctx']['href'] =
OM_ROUTE_FORM."&obj=sous_dossier&action=4&idx=".$idx."&retourformulaire=".$getObj."&";
}
if (! empty($sousformulaire_parameters['document_numerise_contexte_ctx']['href'])) {
$sousformulaire_parameters['document_numerise_contexte_ctx']['href'] =
OM_ROUTE_FORM."&obj=sous_dossier&action=5&idx=".$idx."&retourformulaire=".$getObj."&";
}
// Cas des sous onglets dans le contexte des dossiers d'instruction
if (! empty($sousformulaire_parameters['dossier_contrainte']['href'])) {
$sousformulaire_parameters['dossier_contrainte']['href'] =
OM_ROUTE_FORM."&obj=sous_dossier&action=4&idx=".$idx."&retourformulaire=".$getObj."&";
}
if (! empty($sousformulaire_parameters['document_numerise']['href'])) {
$sousformulaire_parameters['document_numerise']['href'] =
OM_ROUTE_FORM."&obj=sous_dossier&action=5&idx=".$idx."&retourformulaire=".$getObj."&";
}
// Non affichage de l'onglet sous-dossier pour les sous-dossiers
$posSousDossier = array_search('sous_dossier', $sousformulaire, true);
if ($posSousDossier != 'false') {
unset($sousformulaire[$posSousDossier]);
unset($sousformulaire_parameters['sous_dossier']);
}
/*Titre de la page*/
$ent = __("instruction")." -> ".__("sous-dossiers");
$champAffiche = array(
'DISTINCT(dossier.dossier) as "'.__("sous-dossier").'"',
'dossier.date_demande as "'.__('date de creation').'"',
'dossier.etat as "'.__('etat').'"',
);
// Obligatoire pour que le distinct fonctionne
$tri="ORDER BY dossier.dossier";
$table = sprintf(
'%1$sdossier
LEFT JOIN %1$sdossier_instruction_type
ON dossier.dossier_instruction_type=dossier_instruction_type.dossier_instruction_type
-- Récupération des informations des demandeurs pour que la recherche simple
-- sur les dossiers ne provoque pas d erreur à l affichage des listings
-- des sous-dossiers
-- Cela créé des doublons (notamment pour les dossier contentieux), il faut donc
-- un DISTINCT sur la colonne dossier
LEFT JOIN %1$slien_dossier_demandeur
ON lien_dossier_demandeur.dossier = dossier.dossier
AND lien_dossier_demandeur.petitionnaire_principal IS TRUE
LEFT JOIN %1$sdemandeur
ON lien_dossier_demandeur.demandeur = demandeur.demandeur',
DB_PREFIXE
);
$obj = 'sous_dossier';
// Filtre les dossiers à afficher en fonction du type de sous-dossier passé en
// paramètre dans l'url.
// Gère également l'affichage du nom du listing
$typeSsDossier = $f->get_submitted_get_value('sous_dossier_type');
if ($typeSsDossier === 'sous_dossier_historique') {
// Récupération des dossiers historique
$tab_title = __('sous dossier historique');
$table = sprintf(
'%1$sdossier
-- jointure permettant d accéder au type du dossier
LEFT JOIN %1$sdossier_instruction_type
ON dossier.dossier_instruction_type = dossier_instruction_type.dossier_instruction_type
AND dossier.dossier_instruction_type NOT IN (
SELECT
lien_type_DI_type_DI.dossier_instruction_type
FROM
%1$sdossier
LEFT JOIN %1$sdossier_instruction_type
ON dossier.dossier_instruction_type = dossier_instruction_type.dossier_instruction_type
LEFT JOIN %1$slien_type_DI_type_DI
ON dossier_instruction_type.dossier_instruction_type = lien_type_DI_type_DI.type_di_parent
WHERE
dossier = \'%2$s\'
)',
DB_PREFIXE,
$idxformulaire
);
$selection = sprintf(
'WHERE
-- Récupération uniquement des sous-dossier associé au dossier voulu
dossier_instruction_type.sous_dossier IS TRUE
AND dossier.dossier_parent = \'%1$s\'',
$idxformulaire
);
// Il n'est pas possible d'ajouter des dossier historique
$tab_actions['corner']['ajouter'] = null;
} elseif (is_numeric($typeSsDossier)) { // Vérifie si on a récupéré un identifiant de sous-dossier
$tab_title = __($typeSsDossier);
$selection = sprintf(
'WHERE
dossier_instruction_type.dossier_instruction_type = %1$s
AND dossier.dossier_parent = \'%2$s\'',
$typeSsDossier,
$idxformulaire
);
// Bouton d'ajout d'un sous-dossier
// Récupère une instance de sous-dossier pour vérifier si il existe un type de demande associée
// au type de sous-dossier.
// Vérifie également si il existe plusieurs demande pour ce type de sous dossier.
// Si l'un des deux cas est vrai alors on ne peut pas ajouter de sous-dossier et l'action
// ne dois pas être affichée
$tab_actions['corner']['ajouter'] = null;
$instSsDossier = $this->get_inst__om_dbform(array(
'obj' => 'sous_dossier',
'idx' => 0
));
$idTypeSsDossier = $this->get_submitted_get_value('sous_dossier_type');
if ($instSsDossier->type_demande_existe_et_est_unique($idTypeSsDossier)) {
// Action permettant d'ajouter la demande qui va déclencher la création du sous-dossier (SD)
// et rediriger l'utilisateur vers le SD qu'il viens de créer.
//
// /!\ pour rediriger correctement l'utilisateur vers le formulaire de consultation
// du sous-dossier une surcharge de la méthode displayHeader() a été faite dans le
// fichier om_table.class.php.
// Suite à cette surcharge, les "corners" actions se feront toutes sans utiliser
// d'ajax a partir du moment ou l'url à pour paramètre :
// - obj = sous_dosssier
// - retourformulaire = dossier_instruction
// Récupération du contexte du widget pour gérer la redirection vers le listing
// du widget dans le contexte des sous-dossiers
$cplmtUrlWidget = '';
$retourWidget = $f->get_submitted_get_value('retour_widget');
$widgetRechercheId = $f->get_submitted_get_value('widget_recherche_id');
if (! empty($retourWidget) && !empty($widgetRechercheId)) {
$cplmtUrlWidget = '&retour_widget='.$retourWidget.
'&widget_recherche_id='.$widgetRechercheId;
}
$tab_actions['corner']['ajouter'] = array(
'lien' => OM_ROUTE_FORM.'&obj='.$obj.'&action=8',
'id' =>
'&idxformulaire='.$idxformulaire.
'&retourformulaire='.$retourformulaire.
'&advs_id='.$advs_id.
'&premiersf='.$premier.
'&trisf='.$tricol.
'&valide='.$valide.
'&sous_dossier_type='.$typeSsDossier.
$cplmtUrlWidget,
'lib' => ''.__('Ajouter').'',
'ordre' => 10
);
}
}
// Si on a le nom du type de dossier on l'affiche dans la première colonne
$libTypeSsDossier = $f->get_submitted_get_value('sous_dossier_type_lib');
if (! empty($libTypeSsDossier)) {
$champAffiche[0] = 'DISTINCT(dossier.dossier) as "'.$libTypeSsDossier.'"';
}
// Modification des actions de consultation pour accéder au sous_dossier en tant que formulaire
// et pas sous_formulaire
// Récupération du contexte d'accès au sous-dossier au moment ou il s'agit d'un sous
// formulaire. Une fois stocké on ne change plus les valeurs du contexte sauf si le
// contexte change
// /!\ Le contexte est récupéré via l'url qui est construite dans la fonction :
// - sous_dossier->view_tab();
// Pour les widgets le contexte est récupéré via l'url qui est paramétré pour
// l'affichage du sous-onglet des sous-dossiers :
// - dossier.inc.php
// Il est ensuite récupéré de la même manière que le contexte.
// Dans le cas de l'ouverture du sous-dossier suite à un ajout les paramètre de
// widget et de retour sont envoyé dans l'url paramétré pour le bouton d'ajout :
// - sous-dossier.inc.php
if (! empty($f->get_submitted_get_value('idxformulaire')) && $parent != 'sous_dossier') {
$contexte = array(
'obj_parent' => $parent,
'idxformulaire_parent' => $f->get_submitted_get_value('idxformulaire'),
'advs_id_parent' => $f->get_submitted_get_value('advs_id'),
'widget_recherche_id' => $f->get_submitted_get_value('widget_recherche_id'),
'retour_widget' => $f->get_submitted_get_value('retour_widget')
);
$_SESSION['contexte_sous_dossier'] = $contexte;
}
$tab_actions['content'] = array(
'lien' => OM_ROUTE_FORM.'&obj=sous_dossier&action=3&idx=',
'id' => '',
'lib' => ''.__('Consulter').'',
'rights' => array('list' => array($obj, $obj.'_consulter'), 'operator' => 'OR'),
'ordre' => 10,
'ajax' => false
);
// Actions a gauche : consulter
$tab_actions['left']['consulter'] = $tab_actions['content'];
$tab_title = __("DI");
?>