[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Noalyss-commit] [noalyss] 06/119: reconcilaction : possibility to selec
From: |
Dany De Bontridder |
Subject: |
[Noalyss-commit] [noalyss] 06/119: reconcilaction : possibility to select only one operation |
Date: |
Mon, 26 Oct 2020 18:27:00 -0400 (EDT) |
sparkyx pushed a commit to branch master
in repository noalyss.
commit 23b88e2bb889991c41a5b64dbae228ddac1ff186
Author: Dany De Bontridder <danydb@noalyss.eu>
AuthorDate: Tue Aug 18 19:11:23 2020 +0200
reconcilaction : possibility to select only one operation
---
html/js/scripts.js | 12 +++-
include/ajax/ajax_search_operation.php | 3 +
include/class/acc_ledger_search.class.php | 3 +
include/lib/iconcerned.class.php | 98 ++++++++++++++++++-----------
unit-test/include/class/acc_ledger.Test.php | 65 +++++++++++++------
5 files changed, 124 insertions(+), 57 deletions(-)
diff --git a/html/js/scripts.js b/html/js/scripts.js
index 404e99e..ce350f3 100644
--- a/html/js/scripts.js
+++ b/html/js/scripts.js
@@ -1304,6 +1304,7 @@ function search_reconcile(dossier, ctl_concern,
amount_id, ledger, p_id_target,
str_style += ";width:92%;overflow:auto;";
waiting_box();
var hide_operation = $(ctl_concern).getAttribute("hide_operation");
+ var single_operation = $(ctl_concern).getAttribute("single_operation");
var param_send = {gDossier: dossier,
ctlc: ctl_concern,
@@ -1313,7 +1314,8 @@ function search_reconcile(dossier, ctl_concern,
amount_id, ledger, p_id_target,
ledger: ledger,
target: target,
tiers: tiers,
- hide_operation: hide_operation
+ hide_operation: hide_operation,
+ single_operation:single_operation
};
var qs = encodeJSON(param_send);
@@ -1381,6 +1383,7 @@ function set_reconcile(obj)
if (!obj.elements['target'])
return;
var target = obj.elements['target'].value;
+ var single_operation = obj.elements['single_operation'].value;
for (var e = 0; e < obj.elements.length; e++)
{
@@ -1414,7 +1417,12 @@ function set_reconcile(obj)
});
}
}
- $(ctlc.value).value += nValue;
+ if (single_operation==0) {
+ $(ctlc.value).value += nValue;
+ } else {
+ $(ctlc.value).value = nValue;
+
+ }
}
}
}
diff --git a/include/ajax/ajax_search_operation.php
b/include/ajax/ajax_search_operation.php
index 0c47011..f5a541a 100644
--- a/include/ajax/ajax_search_operation.php
+++ b/include/ajax/ajax_search_operation.php
@@ -109,6 +109,8 @@ if (isset($_GET['viewsearch']))
list($array['date_start'],
$array['date_end'])=$g_user->get_limit_current_exercice();
}
$array['hide_operation']=$hide_operation;
+ $array['single_operation']=$http->get("single_operation");
+
list($sql, $where)=$ledger->build_search_sql($array);
// Count nb of line
$max_line=$cn->count_sql($sql);
@@ -128,6 +130,7 @@ if (isset($_GET['viewsearch']))
}
}
echo '<form method="get" onsubmit="set_reconcile(this);return false">';
+ echo HtmlInput::hidden("single_operation", $array['single_operation']);
echo HtmlInput::hidden("tiers", $tiers);
echo HtmlInput::submit("upd_rec", _("Mettre à jour"));
echo HtmlInput::get_to_hidden(array('ctlc', 'amount_id', 'ledger'));
diff --git a/include/class/acc_ledger_search.class.php
b/include/class/acc_ledger_search.class.php
index 198b0e7..d2e7fa7 100644
--- a/include/class/acc_ledger_search.class.php
+++ b/include/class/acc_ledger_search.class.php
@@ -224,6 +224,9 @@ class Acc_Ledger_Search
if (isset($_REQUEST['hide_operation']))
$r.=HtmlInput::hidden("hide_operation",
$http->request('hide_operation'));
+ if (isset($_REQUEST['single_operation']))
+ $r.=HtmlInput::hidden("single_operation",
$http->request('single_operation'));
+
ob_start();
$search_filter=$this->build_search_filter();
require_once NOALYSS_TEMPLATE.'/ledger_search.php';
diff --git a/include/lib/iconcerned.class.php b/include/lib/iconcerned.class.php
index d43fa3e..2c4a418 100644
--- a/include/lib/iconcerned.class.php
+++ b/include/lib/iconcerned.class.php
@@ -1,4 +1,5 @@
<?php
+
/*
* This file is part of NOALYSS.
*
@@ -15,78 +16,105 @@
* 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
-/*!\file
+/* !\file
* \brief Html Input
* - name is the name and id of the input
* - extra amount of the operation to reconcile
* - extra2 ledger paid
*/
require_once NOALYSS_INCLUDE.'/lib/html_input.class.php';
+
class IConcerned extends HtmlInput
{
+
private $hideOperation; //!< string of j_id to hide, separated by comma to
avoid to reconcile an operation with itself
+ private $singleOperation; //!< do not allow to select several operations
- public function __construct($p_name='',$p_value='',$p_id="")
- {
- $this->name=$p_name;
- $this->value=$p_value;
- $this->amount_id=null;
- $this->paid='';
- $this->id=$p_id;
- $this->tiers=""; // id of the field for the tiers to be updated
- $this->div=""; // Dom Element to show the search result
- $this->hideOperation=""; // string of j_id to hide, separated by comma
to avoid to reconcile an operation with itself
- }
- /*!\brief show the html input of the widget*/
- public function input($p_name=null,$p_value=null)
+ public function __construct($p_name='', $p_value='', $p_id="")
+ {
+ $this->name=$p_name;
+ $this->value=$p_value;
+ $this->amount_id=null;
+ $this->paid='';
+ $this->id=$p_id;
+ // id of the field for the tiers to be updated
+ $this->tiers="";
+ // Dom Element to show the search result
+ $this->div="";
+ // string of j_id to hide, separated by comma to avoid to reconcile an
operation with itself
+ $this->hideOperation="";
+ // by default we can select several operation
+ $this->singleOperation=0;
+ }
+
+ /* !\brief show the html input of the widget */
+
+ public function input($p_name=null, $p_value=null)
{
$this->name=($p_name==null)?$this->name:$p_name;
$this->value=($p_value==null)?$this->value:$p_value;
- if ( $this->readOnly==true) return $this->display();
+ if ($this->readOnly==true)
+ return $this->display();
$this->id=($this->id=="")?$this->name:$this->id;
-
$javascript=sprintf("search_reconcile(".dossier::id().",'%s','%s','%s','%s','%s')",
- $this->name,
- $this->amount_id,
- $this->paid,
- $this->div,
- $this->tiers );
+
$javascript=sprintf("search_reconcile(".dossier::id().",'%s','%s','%s','%s','%s')",
$this->name,
+ $this->amount_id, $this->paid, $this->div, $this->tiers);
$r=Icon_Action::icon_magnifier(uniqid(), $javascript);
$r.=sprintf("
- <INPUT TYPE=\"text\"
style=\"color:black;background:lightyellow;border:solid 1px grey;\"
NAME=\"%s\" ID=\"%s\" VALUE=\"%s\" SIZE=\"8\" hide_operation=\"%s\" readonly>
+ <INPUT TYPE=\"text\"
style=\"color:black;background:lightyellow;border:solid 1px grey;\"
NAME=\"%s\" ID=\"%s\" VALUE=\"%s\" SIZE=\"8\" hide_operation=\"%s\" readonly
single_operation=\"%s\">
<INPUT class=\"smallbutton\"
TYPE=\"button\" onClick=\"$('%s').value=''\" value=\"X\">
- ",
- $this->name,
- $this->id,
- $this->value,
- $this->hideOperation,
- $this->id
- );
+ ", $this->name, $this->id, $this->value,
$this->hideOperation,$this->singleOperation,
+ $this->id
+ );
return $r;
}
/**
* setter
- * @param $p_string
+ * @param number $p_string jrn.jr_id of the operation to hide
*/
function set_hideOperation($p_string)
{
$this->hideOperation=strip_tags($p_string);
}
- /*!\brief print in html the readonly value of the widget*/
+
+ /**
+ * Set the value of single operation, limit to one operation if TRUE
+ * @param bool $p_value TRUE or false
+ */
+ function set_singleOperation($p_value){
+ if ( $p_value == TRUE ) {
+ $this->singleOperation=1;
+ return;
+ }
+ if ( $p_value == FALSE ) {
+ $this->singleOperation=0;
+ return;
+ }
+ throw new Exception (_("setSingleOperation failed"));
+ }
+
+ function get_singleOperation(){
+ return $this->singleOperation;
+ }
+
+ /* !\brief print in html the readonly value of the widget */
+
public function display()
{
- $r=sprintf("<span><b>%s</b></span>",$this->value);
- $r.=sprintf('<input type="hidden" name="%s" value="%s">',
$this->name,$this->value);
+ $r=sprintf("<span><b>%s</b></span>", $this->value);
+ $r.=sprintf('<input type="hidden" name="%s" value="%s">', $this->name,
$this->value);
return $r;
-
}
+
static public function test_me()
{
+
}
+
}
diff --git a/unit-test/include/class/acc_ledger.Test.php
b/unit-test/include/class/acc_ledger.Test.php
index 93e8af5..8edb68d 100644
--- a/unit-test/include/class/acc_ledger.Test.php
+++ b/unit-test/include/class/acc_ledger.Test.php
@@ -443,31 +443,56 @@ class Acc_LedgerTest extends TestCase
*/
public function testVerify_Ledger()
{
- global $g_connection;
+ global $g_connection;
$ledger=new Acc_Ledger($g_connection,4);
$array=[
- "p_jrn"=>"15",
- "p_jrn_deb_max_line"=>5,
- "p_jrn_name"=>"New ledger",
- "p_jrn_type"=>"ODS"
- ];
- // Must success
- try {
- $ledger->verify_ledger($array);
- $this->assertTrue(TRUE);
- } catch (Exception $ex) {
- var_dump($ex->getMessage());
- var_dump($ex->getTraceAsString());
- }
+ "p_jrn"=>"15",
+ "p_jrn_deb_max_line"=>5,
+ "p_jrn_name"=>"New ledger",
+ "p_jrn_type"=>"ODS"
+ ];
+ //-----------------------------------------------
+ // Must succeed
+ //-----------------------------------------------
+ $ledger->verify_ledger($array);
+
+ // succeeds if negative amount 1
+ $array["negative_amount"]=1;
+ $ledger->verify_ledger($array);
+
+ //-----------------------------------------------
// Must fail
- $a_ledger["p_jrn"]="a";
+ //-----------------------------------------------
try {
- $ledger->verify_ledger($array);
- $this->assertTrue(FALSE);
- } catch (Exception $ex) {
- $this->assertTrue(TRUE);
- }
+ $array["p_jrn"]="a";
+ $ledger->verify_ledger($array);
+ $this->assertTrue(FALSE,"p_jrn is invalide");
+ }catch (\Exception $e) {
+ $this->assertTrue(TRUE);
+ }
+ // reset properly ,
+ $array["p_jrn"]="15";
+ $ledger->verify_ledger($array);
+
+
+ // fails if negative amount neither 1 nor 0
+ try {
+ $array["negative_amount"]=2;
+ $ledger->verify_ledger($array);
+ $this->assertTrue(FALSE,"negative_amount must be 1 or 0");
+ }catch (\Exception $e) {
+ $this->assertTrue(TRUE);
+ }
+
+ // negative amount not set , so fails
+ try {
+ $array["negative_warning"]="Yes";
+ $ledger->verify_ledger($array);
+ $this->assertTrue(FALSE,"negative_warning must be a string");
+ }catch (\Exception $e) {
+ $this->assertTrue(TRUE);
+ }
}
/**
- [Noalyss-commit] [noalyss] branch master updated (44dbd49 -> bc168d2), Dany De Bontridder, 2020/10/26
- [Noalyss-commit] [noalyss] 07/119: prevent divide by zero in formula, Dany De Bontridder, 2020/10/26
- [Noalyss-commit] [noalyss] 09/119: compatibility PHP74 : join() : glue before piece, Dany De Bontridder, 2020/10/26
- [Noalyss-commit] [noalyss] 06/119: reconcilaction : possibility to select only one operation,
Dany De Bontridder <=
- [Noalyss-commit] [noalyss] 13/119: Bug 1834 : order POST over GET, Dany De Bontridder, 2020/10/26
- [Noalyss-commit] [noalyss] 05/119: Bug : syntax error, Dany De Bontridder, 2020/10/26
- [Noalyss-commit] [noalyss] 04/119: Bug : use ilike instead of tilde, Dany De Bontridder, 2020/10/26
- [Noalyss-commit] [noalyss] 02/119: Bug : correct search remove ~, Dany De Bontridder, 2020/10/26
- [Noalyss-commit] [noalyss] 08/119: remove extract, Dany De Bontridder, 2020/10/26
- [Noalyss-commit] [noalyss] 03/119: Merge branch 'master' of gitlab.noalyss.eu:noalyss/noalyss, Dany De Bontridder, 2020/10/26
- [Noalyss-commit] [noalyss] 01/119: Fix warning with empty array, Dany De Bontridder, 2020/10/26
- [Noalyss-commit] [noalyss] 10/119: Fix bug : cannot use % when searching NEW : space can be used now, Dany De Bontridder, 2020/10/26
- [Noalyss-commit] [noalyss] 14/119: doc, Dany De Bontridder, 2020/10/26
- [Noalyss-commit] [noalyss] 11/119: Improve use of the security, Dany De Bontridder, 2020/10/26