FIX calculation of balance in conciliation page on desc sorting.
This commit is contained in:
parent
fd3fd9d945
commit
28aa17e4fd
@ -175,7 +175,6 @@ $object->fields = dol_sort_array($object->fields, 'position');
|
|||||||
$arrayfields = dol_sort_array($arrayfields, 'position');
|
$arrayfields = dol_sort_array($arrayfields, 'position');
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Actions
|
* Actions
|
||||||
*/
|
*/
|
||||||
@ -266,13 +265,15 @@ if ((GETPOST('confirm_savestatement', 'alpha') || GETPOST('confirm_reconcile', '
|
|||||||
|
|
||||||
if (!$error) {
|
if (!$error) {
|
||||||
$param = 'action=reconcile&contextpage=banktransactionlist&id='.$id.'&search_account='.$id;
|
$param = 'action=reconcile&contextpage=banktransactionlist&id='.$id.'&search_account='.$id;
|
||||||
$param .= '&search_conciliated='.urlencode($search_conciliated);
|
|
||||||
if ($page) {
|
if ($page) {
|
||||||
$param .= '&page='.urlencode($page);
|
$param .= '&page='.urlencode($page);
|
||||||
}
|
}
|
||||||
if ($offset) {
|
if ($offset) {
|
||||||
$param .= '&offset='.urlencode($offset);
|
$param .= '&offset='.urlencode($offset);
|
||||||
}
|
}
|
||||||
|
if ($search_conciliated != '' && $search_conciliated != '-1') {
|
||||||
|
$param .= '&search_conciliated='.urlencode($search_conciliated);
|
||||||
|
}
|
||||||
if ($search_thirdparty_user) {
|
if ($search_thirdparty_user) {
|
||||||
$param .= '&search_thirdparty='.urlencode($search_thirdparty_user);
|
$param .= '&search_thirdparty='.urlencode($search_thirdparty_user);
|
||||||
}
|
}
|
||||||
@ -415,7 +416,6 @@ $banklinestatic = new AccountLine($db);
|
|||||||
|
|
||||||
$now = dol_now();
|
$now = dol_now();
|
||||||
|
|
||||||
|
|
||||||
// Must be before button action
|
// Must be before button action
|
||||||
$param = '';
|
$param = '';
|
||||||
if (!empty($contextpage) && $contextpage != $_SERVER["PHP_SELF"]) {
|
if (!empty($contextpage) && $contextpage != $_SERVER["PHP_SELF"]) {
|
||||||
@ -748,7 +748,7 @@ if ($resql) {
|
|||||||
// Confirmation delete
|
// Confirmation delete
|
||||||
if ($action == 'delete') {
|
if ($action == 'delete') {
|
||||||
$text = $langs->trans('ConfirmDeleteTransaction');
|
$text = $langs->trans('ConfirmDeleteTransaction');
|
||||||
print $form->formconfirm($_SERVER['PHP_SELF'].'?id='.$object->id.'&rowid='.GETPOST("rowid"), $langs->trans('DeleteTransaction'), $text, 'confirm_delete', null, '', 1);
|
print $form->formconfirm($_SERVER['PHP_SELF'].'?id='.$object->id.'&rowid='.GETPOST("rowid", 'int'), $langs->trans('DeleteTransaction'), $text, 'confirm_delete', null, '', 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Lines of title fields
|
// Lines of title fields
|
||||||
@ -1189,7 +1189,7 @@ if ($resql) {
|
|||||||
$objforbalance = $db->fetch_object($resqlforbalance);
|
$objforbalance = $db->fetch_object($resqlforbalance);
|
||||||
if ($objforbalance) {
|
if ($objforbalance) {
|
||||||
// If sort is desc,desc,desc then total of previous date + amount is the balancebefore of the previous line before the line to show
|
// If sort is desc,desc,desc then total of previous date + amount is the balancebefore of the previous line before the line to show
|
||||||
if ($sortfield == 'b.datev,b.dateo,b.rowid' && $sortorder == 'desc,desc,desc') {
|
if ($sortfield == 'b.datev,b.dateo,b.rowid' && ($sortorder == 'desc' || $sortorder == 'desc,desc' || $sortorder == 'desc,desc,desc')) {
|
||||||
$balancebefore = $objforbalance->previoustotal + ($sign * $objp->amount);
|
$balancebefore = $objforbalance->previoustotal + ($sign * $objp->amount);
|
||||||
} else {
|
} else {
|
||||||
// If sort is asc,asc,asc then total of previous date is balance of line before the next line to show
|
// If sort is asc,asc,asc then total of previous date is balance of line before the next line to show
|
||||||
@ -1274,8 +1274,7 @@ if ($resql) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ($sortfield == 'b.datev,b.dateo,b.rowid' && ($sortorder == 'desc' || $sortorder == 'desc,desc' || $sortorder == 'desc,desc,desc')) {
|
||||||
if ($sortfield == 'b.datev,b.dateo,b.rowid' && $sortorder == 'desc,desc,desc') {
|
|
||||||
$balance = price2num($balancebefore, 'MT'); // balance = balancebefore of previous line (sort is desc)
|
$balance = price2num($balancebefore, 'MT'); // balance = balancebefore of previous line (sort is desc)
|
||||||
$balancebefore = price2num($balancebefore - ($sign * $objp->amount), 'MT');
|
$balancebefore = price2num($balancebefore - ($sign * $objp->amount), 'MT');
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@ -5329,13 +5329,16 @@ function price2num($amount, $rounding = '', $option = 0)
|
|||||||
if ($thousand != ',' && $thousand != '.') {
|
if ($thousand != ',' && $thousand != '.') {
|
||||||
$amount = str_replace(',', '.', $amount); // To accept 2 notations for french users
|
$amount = str_replace(',', '.', $amount); // To accept 2 notations for french users
|
||||||
}
|
}
|
||||||
|
|
||||||
$amount = str_replace(' ', '', $amount); // To avoid spaces
|
$amount = str_replace(' ', '', $amount); // To avoid spaces
|
||||||
$amount = str_replace($thousand, '', $amount); // Replace of thousand before replace of dec to avoid pb if thousand is .
|
$amount = str_replace($thousand, '', $amount); // Replace of thousand before replace of dec to avoid pb if thousand is .
|
||||||
$amount = str_replace($dec, '.', $amount);
|
$amount = str_replace($dec, '.', $amount);
|
||||||
|
|
||||||
|
$amount = preg_replace('/[^0-9\-\.]/', '', $amount); // Clean non numeric chars (so it clean some UTF8 spaces for example.
|
||||||
}
|
}
|
||||||
//print ' XX'.$amount.' '.$rounding;
|
//print ' XX'.$amount.' '.$rounding;
|
||||||
|
|
||||||
// Now, make a rounding if required
|
// Now, $amount is a real PHP float number. We make a rounding if required.
|
||||||
if ($rounding) {
|
if ($rounding) {
|
||||||
$nbofdectoround = '';
|
$nbofdectoround = '';
|
||||||
if ($rounding == 'MU') {
|
if ($rounding == 'MU') {
|
||||||
@ -5375,9 +5378,12 @@ function price2num($amount, $rounding = '', $option = 0)
|
|||||||
if ($thousand != ',' && $thousand != '.') {
|
if ($thousand != ',' && $thousand != '.') {
|
||||||
$amount = str_replace(',', '.', $amount); // To accept 2 notations for french users
|
$amount = str_replace(',', '.', $amount); // To accept 2 notations for french users
|
||||||
}
|
}
|
||||||
|
|
||||||
$amount = str_replace(' ', '', $amount); // To avoid spaces
|
$amount = str_replace(' ', '', $amount); // To avoid spaces
|
||||||
$amount = str_replace($thousand, '', $amount); // Replace of thousand before replace of dec to avoid pb if thousand is .
|
$amount = str_replace($thousand, '', $amount); // Replace of thousand before replace of dec to avoid pb if thousand is .
|
||||||
$amount = str_replace($dec, '.', $amount);
|
$amount = str_replace($dec, '.', $amount);
|
||||||
|
|
||||||
|
$amount = preg_replace('/[^0-9\-\.]/', '', $amount); // Clean non numeric chars (so it clean some UTF8 spaces for example.
|
||||||
}
|
}
|
||||||
|
|
||||||
return $amount;
|
return $amount;
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user