diff --git a/include/action.common.inc.php b/include/action.common.inc.php index bb2f7ebe3..5f47e82e7 100644 --- a/include/action.common.inc.php +++ b/include/action.common.inc.php @@ -211,6 +211,7 @@ if ($sub_action == "update") //-------------------------------------------------------------------------------- // Show the detail of an action // permit the update +//-------------------------------------------------------------------------------- if ($sub_action == 'detail') { echo '
'; @@ -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 ""; + // Add a button to export complete to Csv + echo '
'; + 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 "
"; Follow_Up::show_action_list($cn, $base); } diff --git a/include/class/follow_up.class.php b/include/class/follow_up.class.php index 043cbc7b0..1dba8c6d1 100644 --- a/include/class/follow_up.class.php +++ b/include/class/follow_up.class.php @@ -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 ''; } /** - * 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) { diff --git a/include/export/export_follow_up_csv.php b/include/export/export_follow_up_csv.php index a32405103..ee692f494 100644 --- a/include/export/export_follow_up_csv.php +++ b/include/export/export_follow_up_csv.php @@ -23,18 +23,27 @@ /** * @file * @brief export Action Gestion to csv, taking in account the search - * + * */ 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();