Task #0002035: Improve GESTION/FOLLOW - Export CSV

This commit is contained in:
sparkyx 2021-08-13 12:25:59 +02:00
parent 2769a25e8d
commit 03c8b004d0
3 changed files with 129 additions and 19 deletions

View file

@ -211,6 +211,7 @@ if ($sub_action == "update")
//--------------------------------------------------------------------------------
// Show the detail of an action
// permit the update
//--------------------------------------------------------------------------------
if ($sub_action == 'detail')
{
echo '<div class="content">';
@ -264,6 +265,7 @@ method="post" style="display:inline" onsubmit="return check_file_size(this,%s
}
//-------------------------------------------------------------------------------
// Delete an action
//-------------------------------------------------------------------------------
if ($sub_action == 'delete')
{
// confirmed
@ -282,6 +284,7 @@ if ($sub_action == 'delete')
//--------------------------------------------------------------------------------
// Show a list of the action
//--------------------------------------------------------------------------------
if ($sub_action == "list")
{
// Add a button to export to Csv
@ -289,7 +292,16 @@ if ($sub_action == "list")
echo HtmlInput::request_to_hidden(array("closed_action","remind_date_end","remind_date","sag_ref", "remind_date","only_internal", "state", "gDossier", "qcode", "start_date", "end_date", "ag_id", "ag_dest_query",
"tdoc", "action_query","date_start","date_end","hsstate","searchtag"));
echo HtmlInput::hidden("act", "CSV:ActionGestion");
echo HtmlInput::submit("follow_up_csv", "Export CSV",'','smallbutton');
echo HtmlInput::hidden("export_type", "simple");
echo HtmlInput::submit("follow_up_csv", _("Export CSV"),'','smallbutton');
echo "</form>";
// Add a button to export complete to Csv
echo '<form method="GET" style="display:inline;" ACTION="export.php">';
echo HtmlInput::request_to_hidden(array("closed_action","remind_date_end","remind_date","sag_ref", "remind_date","only_internal", "state", "gDossier", "qcode", "start_date", "end_date", "ag_id", "ag_dest_query",
"tdoc", "action_query","date_start","date_end","hsstate","searchtag"));
echo HtmlInput::hidden("act", "CSV:ActionGestion");
echo HtmlInput::hidden("export_type", "detail");
echo HtmlInput::submit("follow_up_csv", _("Export CSV détaillé"),'','smallbutton');
echo "</form>";
Follow_Up::show_action_list($cn, $base);
}

View file

@ -1018,7 +1018,7 @@ class Follow_Up
}
/**
* get the action where the remind day is today
* @brief get the action where the remind day is today
* @return array
*/
function get_today()
@ -1036,7 +1036,7 @@ class Follow_Up
}
/**
* get the action where the remind day is today
* @brief get the action where the remind day is today
* @return array
*/
function get_late()
@ -1050,7 +1050,7 @@ class Follow_Up
}
/**
* insert a related operation
* @brief insert a related operation
*/
function insert_operation()
{
@ -1068,7 +1068,7 @@ class Follow_Up
}
/**
* remove a related operation
* @brief remove a related operation
* @deprecated not used : dead_code
* @todo to remove
*/
@ -1084,7 +1084,7 @@ class Follow_Up
}
/**
* Display only a search box for searching an action
* @brief Display only a search box for searching an action
* @param $cn database connx
* @param $inner true if coming from an ajax (ajax_search_action)
*/
@ -1208,7 +1208,7 @@ class Follow_Up
echo '</form>';
}
/**
* Show a button for adding follow-up action, display the FORM
* @brief Show a button for adding follow-up action, display the FORM
* @param array $pa_param , will be converted in a HIDDEN input type in the form
*/
static function show_action_add($pa_param)
@ -1218,7 +1218,7 @@ class Follow_Up
}
/**
* Create a subquery to filter thanks the selected tag
*@brief Create a subquery to filter thanks the selected tag
* @param $cn db connx
* @param $p_array
* @return SQL
@ -1251,7 +1251,7 @@ class Follow_Up
}
/**
* Get date from $_GET and create the sql stmt for the query
* @briefGet date from $_GET and create the sql stmt for the query
* @note the query is taken in $_REQUEST
* @see Follow_Up::ShowActionList
* @return string SQL condition
@ -1361,7 +1361,7 @@ class Follow_Up
}
/**
* Show the result of a search in an inner windows, the result is limited to 25
* @brief Show the result of a search in an inner windows, the result is limited to 25
* @param type $cn database connx
* @param type $p_sql the query
*/
@ -1386,7 +1386,7 @@ class Follow_Up
}
/**
* Insert a related action into the table action_gestion_related
* @brief Insert a related action into the table action_gestion_related
*/
function insert_action()
{
@ -1407,9 +1407,8 @@ class Follow_Up
}
}
}
/**
* export to CSV the query the p_array has
* @brief export to CSV the query the p_array has
* @param array $p_array
*/
function export_csv($p_array)
@ -1455,6 +1454,96 @@ class Follow_Up
)
);
}
/**
* @brief export to CSV the query the p_array has
* @param array $p_array
*/
function export_csv_detail($p_array)
{
$p_search=self::create_query($this->db, $p_array);
$sql="
select ag_id,
to_char(ag_timestamp,'DD.MM.YYYY') as my_date,
to_char(ag_remind_date,'DD.MM.YYYY') as my_remind,
to_char(coalesce((select max(agc_date)
from action_gestion_comment as agc
where agc.ag_id=ag.ag_id),ag.ag_timestamp),'DD.MM.YY HH24:MI') as last_comment,
array_to_string((select array_agg(t1.t_tag)
from action_tags as a1 join tags as t1 on (a1.t_id=t1.t_id)
where a1.ag_id=ag.ag_id ),',') as tags,
array_to_string((select array_agg(coalesce(jrn1.jr_pj_number,jrn1.jr_internal))
from action_gestion_operation ago join jrn jrn1 using (jr_id)
where ago.ag_id=ag.ag_id),',') as related_operation,
array_to_string((select array_agg(agc2.agc_comment order by agc2.agc_date desc)
from action_gestion_comment agc2 where agc2.ag_id=ag.ag_id ),'|') as action_comment,
array_to_string((select array_agg(followup_id) from (select agr1.aga_least followup_id
from action_gestion_related agr1
where agr1.aga_greatest = ag.ag_id
union
select agr2.aga_greatest
from
action_gestion_related agr2
where agr2.aga_least=ag.ag_id) as followup),',') follow_up,
(select ad_value from fiche_Detail where f_id=ag.f_id_dest and ad_id=1) as name,
ag_title,
dt_value,
ag_ref,
ag_priority,
ag_state,
coalesce((select p_name from profile where p_id=ag_dest),'Aucun groupe') as dest
from action_gestion as ag
join document_type on (ag.ag_type=dt_id)
join document_state on(ag.ag_state=s_id)
where
true $p_search order by ag.ag_timestamp,ag.ag_id";
$ret=$this->db->exec_sql($sql);
$nb_record=Database::num_row($ret);
$export_csv=new Noalyss_Csv('action_gestion_detail');
$export_csv->send_header();
$export_csv->write_header([
_("Document id"),
_("Date"),
_("Date rappel"),
_("Destinataire"),
_("Référence "),
_("Titre "),
_("Commentaires "),
_("Date dernier commentaire "),
_("Etiquette "),
_("Priorité "),
_("Etat "),
_("Opérations"),
_("Autres actions"),
_("Type action"),
_("Groupe "),
]);
for ($i=0;$i<$nb_record;$i++)
{
$row=Database::fetch_array($ret,$i);
$export_csv->add($row['ag_id']);
$export_csv->add($row['my_date']);
$export_csv->add($row['my_remind']);
$export_csv->add($row['name']);
$export_csv->add($row['ag_ref']);
$export_csv->add($row['ag_title']);
$export_csv->add($row['action_comment']);
$export_csv->add($row['last_comment']);
$export_csv->add($row['tags']);
$export_csv->add($row['ag_priority']);
$export_csv->add($row['ag_state']);
$export_csv->add($row['related_operation']);
$export_csv->add($row['follow_up']);
$export_csv->add($row['dt_value']);
$export_csv->add($row['dest']);
$export_csv->write();
}
if ($nb_record==0)
return;
}
static function get_all_operation($p_jr_id)
{

View file

@ -26,15 +26,24 @@
*
*/
if ( ! defined ('ALLOWED') ) die('Appel direct ne sont pas permis');
header('Pragma: public');
header('Content-type: application/csv');
header('Content-Disposition: attachment;filename="action-gestion.csv"',FALSE);
$http=new HttpInput();
$follow=new Follow_Up($cn);
$array=$_GET;
if ( isset ($_POST['query']) ) $p_array['query']=$_POST['query'];
echo $follow->export_csv($_GET);
//- export follow up simple :no comment
if ( $http->get("export_type") == "simple") {
header('Pragma: public');
header('Content-type: application/csv');
header('Content-Disposition: attachment;filename="action-gestion.csv"',FALSE);
echo $follow->export_csv($_GET);
}
/*
* export follow up full : comments
* Mantis task #0002035
*/
if ( $http->get("export_type") == "detail") { echo $follow->export_csv_detail($_GET); }
exit();