X-Git-Url: https://delta.frontaccounting.com/gitweb/?a=blobdiff_plain;f=gl%2Fincludes%2Fdb%2Fgl_db_bank_trans.inc;h=3bd65e23b974270983b1dcb6e2c6e0c474951434;hb=50339ff6ffe3cbb2a6237cc6a922a98481c7a41f;hp=f393d5f901bf6ac958e1cbe17958c0f56a7906b0;hpb=2d23368483326fc5229a37e715de0769dcee883a;p=fa-stable.git diff --git a/gl/includes/db/gl_db_bank_trans.inc b/gl/includes/db/gl_db_bank_trans.inc index f393d5f9..3bd65e23 100644 --- a/gl/includes/db/gl_db_bank_trans.inc +++ b/gl/includes/db/gl_db_bank_trans.inc @@ -87,11 +87,13 @@ function get_bank_trans_for_bank_account($bank_account, $from, $to) { $from = date2sql($from); $to = date2sql($to); - $sql = "SELECT ".TB_PREF."bank_trans.* FROM ".TB_PREF."bank_trans - WHERE ".TB_PREF."bank_trans.bank_act = ".db_escape($bank_account) . " + $sql = "SELECT t.* FROM " + .TB_PREF."bank_trans t LEFT JOIN ".TB_PREF."voided v ON t.type=v.type AND t.trans_no=v.id + WHERE t.bank_act = ".db_escape($bank_account) . " + AND ISNULL(v.date_) AND trans_date >= '$from' AND trans_date <= '$to' - ORDER BY trans_date,".TB_PREF."bank_trans.id"; + ORDER BY trans_date, t.id"; return db_query($sql,"The transactions for '" . $bank_account . "' could not be retrieved"); } @@ -153,23 +155,31 @@ function void_bank_trans($type, $type_no, $nested=false) /** * Check account history to find transaction which would exceed authorized overdraft for given account. -* Returns null or transaction in conflict. +* Returns null or transaction in conflict. Running balance is checked on daily basis only, to enable ID change after edition. * $delta_amount - tested change in bank balance at $date. **/ -function check_bank_account_history($delta_amount, $bank_account, $date, $user=null) +function check_bank_account_history($delta_amount, $bank_account, $date=null, $user=null) { - if ($delta_amount >= 0) + if ($delta_amount >= 0 && isset($date)) return null; // amount increese is always safe - $balance = get_bank_account_limit($bank_account, $date, $user); + $balance = $date ? get_bank_account_limit($bank_account, $date, $user) : 0; - if (!isset($balance)) + if (!isset($balance) && isset($date)) return null; // unlimited account - $date = date2sql($date); - $balance+= $delta_amount; + if ($balance < $delta_amount) + return array('amount' => $balance, 'trans_date'=> $date); - $sql = "SELECT * FROM ".TB_PREF."bank_trans WHERE bank_act=".db_escape($bank_account)." AND trans_date > '$date' ORDER BY trans_date ASC, id ASC"; + $balance += $delta_amount; + + $sql = "SELECT sum(amount) as amount, trans_date FROM ".TB_PREF."bank_trans WHERE bank_act=".db_escape($bank_account); + if ($date) + { + $date = date2sql($date); + $sql .= " AND trans_date > '$date'"; + } + $sql .= " GROUP BY trans_date ORDER BY trans_date ASC"; $history = db_query($sql, "cannot retrieve cash account history");