[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Noalyss-commit] [noalyss] 24/38: Nouveau #00022980002298: detail fiche
From: |
dwm |
Subject: |
[Noalyss-commit] [noalyss] 24/38: Nouveau #00022980002298: detail fiche , historique du suivi |
Date: |
Sun, 18 Feb 2024 07:30:44 -0500 (EST) |
sparkyx pushed a commit to branch devel
in repository noalyss.
commit 868dbdfbd070a8a22827a29274d3a07004eebe5d
Author: sparkyx <danydb@noalyss.eu>
AuthorDate: Wed Feb 14 18:21:32 2024 +0100
Nouveau #00022980002298: detail fiche ,historique du suivi
---
html/ajax_misc.php | 2 +
html/js/acc_ledger.js | 38 ++++++++++++++
html/js/card.js | 3 ++
include/ajax/ajax_card.php | 3 +-
include/ajax/ajax_follow_up.php | 16 ++++++
include/class/follow_up.class.php | 76 +++++++++++++++++++++-------
include/template/follow_up-view_list.php | 87 ++++++++++++++++++++++++++++++++
7 files changed, 206 insertions(+), 19 deletions(-)
diff --git a/html/ajax_misc.php b/html/ajax_misc.php
index 63b197768..e3d97138d 100644
--- a/html/ajax_misc.php
+++ b/html/ajax_misc.php
@@ -344,6 +344,8 @@ $path = array(
"operation_exercice+text"=>"ajax_operation_exercice",
// transfer operation to accountancy
'operation_exercice+transfer'=>"ajax_operation_exercice",
+ // view list of followup for a card
+ "view_followup_card"=>"ajax_follow_up",
) ;
if (array_key_exists($op, $path)) {
diff --git a/html/js/acc_ledger.js b/html/js/acc_ledger.js
index 9929335ed..6298d53ad 100644
--- a/html/js/acc_ledger.js
+++ b/html/js/acc_ledger.js
@@ -930,6 +930,44 @@ function view_history_card(p_value, dossier, p_exercice) {
}
);
}
+/*!
+ * \brief list followup of a card
+ * \param p_value int fiche.f_id of the card
+ */
+function view_followup_card(p_value, dossier) {
+ layer++;
+ var idbox = 'detfu' + layer;
+ var popup = {
+ 'id': idbox,
+ 'cssclass': 'inner_box',
+ 'html': loading(),
+ 'drag': false
+ };
+ var querystring = {
+ 'gDossier': dossier,
+ 'f_id': p_value,
+ 'div': idbox,
+ "l": layer,
+ "op": "view_followup_card",
+ };
+ waiting_box();
+ var action = new Ajax.Request(
+ "ajax_misc.php",
+ {
+ method: 'get',
+ parameters: querystring,
+ onFailure: error_box,
+ onSuccess: function (req, xml) {
+ remove_waiting_box();
+ if (req.responseText === 'NOCONX') { reconnect();return;}
+
+ add_div(popup);
+ $(idbox).update(req.responseText);
+ g(idbox).style.top = calcy(140 + (layer * 3)) + "px";
+ }
+ }
+ );
+}
/**
* update history view after changing the exercice
diff --git a/html/js/card.js b/html/js/card.js
index 3eb1947c6..71c78754a 100644
--- a/html/js/card.js
+++ b/html/js/card.js
@@ -634,6 +634,9 @@ function fill_ipopcard(obj)
if ( obj.nohistory != undefined) {
queryString+='&nohistory';
}
+ if ( obj.nofollowup != undefined) {
+ queryString+='&nofollowup';
+ }
queryString=encodeURI(queryString);
var action=new Ajax.Request ( 'ajax_misc.php',
{
diff --git a/include/ajax/ajax_card.php b/include/ajax/ajax_card.php
index 22ca1c2e5..267872812 100644
--- a/include/ajax/ajax_card.php
+++ b/include/ajax/ajax_card.php
@@ -29,7 +29,7 @@
* - gDossier
* - op
- dc Detail of a card
- parameter : $qcode , optional ro for readonly and nohistory without the
history button
+ parameter : $qcode , optional ro for readonly and nohistory without the
history button, nofollowup
- bc Blank Card : display form for adding a card
parameter fd_id (fiche_def:fd_id)
- st Show Type : select type of card
@@ -168,6 +168,7 @@ case 'dc':
$html.=HtmlInput::submit('save',_('Sauver'));
}
if ( ! isset
($nohistory))$html.=HtmlInput::history_card_button($f->id,_('Historique'));
+ if ( ! isset
($nofollowup))$html.=HtmlInput::followup_card_button($f->id,_('Suivi'));
// Display a remove button if not used and can modify card
if ( $can_modify == 1 && $f->is_used()==FALSE)
{
diff --git a/include/ajax/ajax_follow_up.php b/include/ajax/ajax_follow_up.php
index 5a8b885b9..51c416e9d 100644
--- a/include/ajax/ajax_follow_up.php
+++ b/include/ajax/ajax_follow_up.php
@@ -25,6 +25,7 @@ if (!defined('ALLOWED'))
* @file
* @brief Update description on file
*/
+global $http,$cn;
$op=$http->request('op');
global $g_user;
@@ -138,4 +139,19 @@ if ($op == 'followup_comment_oneedit') {
break;
}
return;
+}
+
+/**************************************************************************
+ * See list of follow-up evebt
+ *************************************************************************/
+if ($op =="view_followup_card")
+{
+ $div=$http->get("div");
+ $card=new Fiche($cn,$http->get("f_id","number"));
+ echo HtmlInput::title_box("Suivi
".h($card->strAttribut(ATTR_DEF_NAME)),$div);
+
$query=Follow_Up::create_query($cn,["qcode"=>$card->strAttribut(ATTR_DEF_QUICKCODE)]);
+ $followup=new Follow_Up($cn);
+ echo $followup->view_list($query);
+ echo \HtmlInput::button_close($div);
+ return;
}
\ No newline at end of file
diff --git a/include/class/follow_up.class.php
b/include/class/follow_up.class.php
index ecdfeb88f..fe0467890 100644
--- a/include/class/follow_up.class.php
+++ b/include/class/follow_up.class.php
@@ -634,13 +634,56 @@ class Follow_Up
$this->insert_operation();
$this->insert_action();
}
-
+ /**
+ * @brief return the SQL to make a list of actions
+ * Colum :
+ * - my_date string date action format DD.MM.YYYY
+ * - my_remind string date reminder format DD.MM.YYYY
+ * - str_last_comment string last colemnt format DD.MM.YYYY
+ * - last_comment date last comment
+ * - f_id_dest int fiche.f_id concerned card
+ * - s_value string state of the action (cloturé, à suivre ,...)
+ * - s_id int id of document_state
+ * - ag_title string Title of the follow-up
+ * - dt_value string Type of document
+ * - ag_ref, string ref of the action
+ * - ag_priority int priority of the action
+ * - ag_state, int state of the followup (see table :
document_state )
+ * - dest string profil group
+ * - name string name of the recipient
+ * - qcode string qcode of the recipient
+ * - tag string list of tags separated by comma
+ * - tags_color string list of tag colors separated by comma
+ * @returns a SQL string to retrieve list of actions
+ */
+ public static function SQL_list_action():string
+ {
+ $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_timestamp),'DD.MM.YY') as str_last_comment,
+ coalesce((select max(agc_date) from action_gestion_comment as
agc where agc.ag_id=ag.ag_id),ag_timestamp) as last_comment,
+ f_id_dest,
+ s_id,
+ s_value,
+ 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,
+ (select ad_value from fiche_Detail where f_id=ag.f_id_dest and
ad_id=1) as name,
+ (select ad_value from fiche_Detail where f_id=ag.f_id_dest and
ad_id=23) as qcode,
+ 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(t1.t_color) 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_color
+ from action_gestion as ag
+ join document_type on (ag_type=dt_id)
+ join document_state on (ag_state=s_id)
+ ";
+ return $sql;
+ }
/**
* @brief myList($p_base, $p_filter = "", $p_search = "")
* Show list of action by default if sorted on date
* @param $p_base base url with ac...
* @param $p_filter filters on the document_type
* @param $p_search must a valid sql command ( ex 'and ag_title like
upper('%hjkh%'))
+ * @see Follow_Up::create_query()
* @return string containing html code
*/
function myList($p_base, $p_filter="", $p_search="")
@@ -676,23 +719,9 @@ class Follow_Up
else
$p_filter_doc=" 1=1 ";
- $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_timestamp),'DD.MM.YY') as str_last_comment,
- coalesce((select max(agc_date) from action_gestion_comment as
agc where agc.ag_id=ag.ag_id),ag_timestamp) as last_comment,
- f_id_dest,
- s_value,
- 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,
- (select ad_value from fiche_Detail where f_id=ag.f_id_dest and
ad_id=1) as name,
- (select ad_value from fiche_Detail where f_id=ag.f_id_dest and
ad_id=23) as qcode,
- 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(t1.t_color) 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_color
- from action_gestion as ag
- join document_type on (ag_type=dt_id)
- join document_state on (ag_state=s_id)
- where $p_filter_doc $p_search $sort";
+ // make SQL to find the action
+ $sql=Follow_Up::SQL_list_action()." where
$p_filter_doc $p_search $sort";
+
$max_line=$this->db->count_sql($sql);
$step=$_SESSION[SESSION_KEY.'g_pagesize'];
$page=(isset($_GET['offset']))?$_GET['page']:1;
@@ -823,6 +852,17 @@ class Follow_Up
return $r;
}
+ /**
+ * @brief display list of followup , used with card
+ * @param $query string SQL query
+ * @return void
+ */
+ function view_list($query)
+ {
+ $sql=Follow_Up::SQL_list_action();
+ $sql = " $sql $query";
+ require_once NOALYSS_TEMPLATE."/follow_up-view_list.php";
+ }
//----------------------------------------------------------------------
/**
* \brief Update the data into the database, the field ag_description
could contain some HTML tags and must be
diff --git a/include/template/follow_up-view_list.php
b/include/template/follow_up-view_list.php
new file mode 100644
index 000000000..225831451
--- /dev/null
+++ b/include/template/follow_up-view_list.php
@@ -0,0 +1,87 @@
+<?php
+/*
+ * This file is part of NOALYSS.
+ *
+ * NOALYSS is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * NOALYSS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with NOALYSS; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+*/
+// Copyright Author Dany De Bontridder danydb@aevalys.eu 13/02/24
+/*!
+ * \file
+ * \brief display list of followup
+ */
+global $cn;
+$array=$cn->get_array($sql);
+if (empty ($array)) {
+ echo_warning("Aucun suivi ");
+ return;
+}
+$idx=0;
+?>
+
+<table class="result">
+ <thead>
+
+ <tr>
+ <th>Date</th>
+ <th>Référence</th>
+ <th>Titre</th>
+ <th>QCODE</th>
+ <th>Dernier commentaire</th>
+ <th>Etat</th>
+ <th></th>
+ </tr>
+ </thead>
+ <tbody>
+ <?php
+ foreach($array as $item) {
+ $even=($idx%2==0)?'class="odd"':'class="even"';
+ $idx++;
+ ?>
+ <tr <?=$even?>>
+ <td><?=$item['my_date']?></td>
+ <td>
+ <?php
+ echo \HtmlInput::detail_action($item['ag_id'],
$item['ag_ref']);
+
+
+ ?>
+
+ </td>
+ <td><?=h($item['ag_title'])?></td>
+ <td><?=h($item['qcode'])?></td>
+ <td><?=$item['str_last_comment']?></td>
+ <td><?=h($item['s_value'])?></td>
+ <td>
+
+ <?php
+ if ($item['tags']!="") {
+ $aColor = explode(",", $item["tags_color"]);
+ $aTags = explode(",", $item["tags"]);
+ $nb_tag = count($aTags);
+ for ($x = 0; $x < $nb_tag; $x++) {
+ printf('<span
style="font-size:75%%;padding:1px;border-color:transparent" class="tagcell
tagcell-color%s">%s</span>', $aColor[$x], $aTags[$x]);
+ printf(" ");
+ } // end loop $x
+
+ }
+ ?>
+ </td>
+ </tr>
+ <?php
+ }
+
+ ?>
+ </tbody>
+</table>
- [Noalyss-commit] [noalyss] 10/38: Filtre ne fonctionne pas tva_search_id est vide, (continued)
- [Noalyss-commit] [noalyss] 10/38: Filtre ne fonctionne pas tva_search_id est vide, dwm, 2024/02/18
- [Noalyss-commit] [noalyss] 11/38: Sécurité : bloquer le changement de date des opérations, Renforce mode strict : change de date impossible, dwm, 2024/02/18
- [Noalyss-commit] [noalyss] 17/38: FOLLOWUP : nom contact pas affiché, dwm, 2024/02/18
- [Noalyss-commit] [noalyss] 23/38: Merge branch 'devel', dwm, 2024/02/18
- [Noalyss-commit] [noalyss] 13/38: FOLLOWUP : Cosmetic nombre pièces, dwm, 2024/02/18
- [Noalyss-commit] [noalyss] 22/38: Fix : auto numbering receipt, dwm, 2024/02/18
- [Noalyss-commit] [noalyss] 32/38: cosmetic, dwm, 2024/02/18
- [Noalyss-commit] [noalyss] 36/38: Fix : Bug cannot filter a list of element, dwm, 2024/02/18
- [Noalyss-commit] [noalyss] 27/38: Nouvelle fonction pour ajouter des attributs à un élément DOM, dwm, 2024/02/18
- [Noalyss-commit] [noalyss] 31/38: DB protect against JS Injection, dwm, 2024/02/18
- [Noalyss-commit] [noalyss] 24/38: Nouveau #00022980002298: detail fiche , historique du suivi,
dwm <=
- [Noalyss-commit] [noalyss] 35/38: Merge devel, dwm, 2024/02/18
- [Noalyss-commit] [noalyss] 09/38: Task #2321: Sécurité : empêcher changement de numéro de pièce, dwm, 2024/02/18
- [Noalyss-commit] [noalyss] 16/38: Follow-Up : bug ne peut pas ajouter fichier sur nouvel événement, dwm, 2024/02/18
- [Noalyss-commit] [noalyss] 18/38: Fix cosmetic bug : duplicate operation with autoreverse VAT has an VAT amount, dwm, 2024/02/18
- [Noalyss-commit] [noalyss] 20/38: Fix : auto numbering receipt, dwm, 2024/02/18
- [Noalyss-commit] [noalyss] 21/38: Merge branch 'devel', dwm, 2024/02/18
- [Noalyss-commit] [noalyss] 25/38: cosmetic, dwm, 2024/02/18
- [Noalyss-commit] [noalyss] 37/38: Cosmetic, dwm, 2024/02/18
- [Noalyss-commit] [noalyss] 38/38: Upgrade SQL, dwm, 2024/02/18
- [Noalyss-commit] [noalyss] 28/38: DB protect against JS Injection, dwm, 2024/02/18