reconcilaction : possibility to select only one operation
This commit is contained in:
parent
3450d5f350
commit
23b88e2bb8
5 changed files with 125 additions and 58 deletions
|
|
@ -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;
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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'));
|
||||
|
|
|
|||
|
|
@ -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';
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
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)
|
||||
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;
|
||||
// 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()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue