-function get_balance($account, $from, $to, $from_incl=true, $to_incl=true) {
-
- $sql = "SELECT SUM(amount) As TransactionSum FROM ".TB_PREF."gl_trans
- WHERE account='$account'";
-
- if ($from)
- {
- $from_date = date2sql($from);
- if ($from_incl)
- $sql .= " AND tran_date >= '$from_date'";
- else
- $sql .= " AND tran_date > '$from_date'";
- }
-
- if ($to)
- {
- $to_date = date2sql($to);
- if ($to_incl)
- $sql .= " AND tran_date <= '$to_date' ";
- else
- $sql .= " AND tran_date < '$to_date' ";
- }
+function get_balance($account, $from, $to, $from_incl=true, $to_incl=true)
+{
+ $sql = "SELECT SUM(IF(amount >= 0, amount, 0)) AS debit, SUM(IF(amount < 0, -amount, 0)) AS credit, SUM(amount) AS balance
+ FROM ".TB_PREF."gl_trans,".TB_PREF."chart_master,".TB_PREF."chart_types, ".TB_PREF."chart_class
+ WHERE ".TB_PREF."gl_trans.account=".TB_PREF."chart_master.account_code AND ".TB_PREF."chart_master.account_type=".TB_PREF."chart_types.id
+ AND ".TB_PREF."chart_types.class_id=".TB_PREF."chart_class.cid AND";
+
+ if ($account != null)
+ $sql .= " account='$account' AND";
+ $from_date = date2sql($from);
+ if ($from_incl)
+ $sql .= " tran_date >= '$from_date' AND";
+ else
+ $sql .= " tran_date > IF(".TB_PREF."chart_class.balance_sheet=1, '0000-00-00', '$from_date') AND";
+ $to_date = date2sql($to);
+ if ($to_incl)
+ $sql .= " tran_date <= '$to_date' ";
+ else
+ $sql .= " tran_date < '$to_date' ";