Improved journal trans: added currency support, tax and source document date. Allowed...
[fa-stable.git] / gl / includes / db / gl_db_trans.inc
index ea4b38e26782ae333bff60262e024e5912eb5d21..d42bd73263a5baefe43cfcca0f233a850695a858 100644 (file)
@@ -19,7 +19,7 @@
 function add_gl_trans($type, $trans_id, $date_, $account, $dimension, $dimension2, $memo_,
        $amount, $currency=null, $person_type_id=null, $person_id=null, $err_msg="", $rate=0)
 {
-       global $use_audit_trail;
+       global $SysPrefs;
 
        $date = date2sql($date_);
        if ($currency != null)
@@ -35,14 +35,14 @@ function add_gl_trans($type, $trans_id, $date_, $account, $dimension, $dimension
                $dimension = 0;
        if ($dimension2 == null || $dimension2 < 0)
                $dimension2 = 0;
-       if (isset($use_audit_trail) && $use_audit_trail)
+       if (isset($SysPrefs->use_audit_trail) && $SysPrefs->use_audit_trail)
        {
                if ($memo_ == "" || $memo_ == null)
                        $memo_ = $_SESSION["wa_current_user"]->username;
                else
                        $memo_ = $_SESSION["wa_current_user"]->username . " - " . $memo_;
        }
-       if (!is_subledger_account($account) && $account==get_company_pref('deffered_income_act') || $account==get_company_pref('grn_clearing_act'))
+       if (!is_subledger_account($account) || $account==get_company_pref('grn_clearing_act'))
                $person_id = $person_type_id = null;
 
        $sql = "INSERT INTO ".TB_PREF."gl_trans ( type, type_no, tran_date,
@@ -90,12 +90,15 @@ function add_gl_trans_std_cost($type, $trans_id, $date_, $account, $dimension, $
 function add_gl_balance($type, $trans_id, $date_, $amount, $person_type_id=null, $person_id=null)
 {
        $amount = round2($amount, user_price_dec());
-       if ($amount != 0)
+
+       if (floatcmp($amount, 0))
+       {
+               error_log(sprintf( _("Rounding error %s encountered for trans_type:%s,trans_no:%s"), $amount, $type, $trans_id));
                return add_gl_trans($type, $trans_id, $date_, get_company_pref('exchange_diff_act'), 0, 0, "",
                        $amount, null, $person_type_id, $person_id, "The balanced GL transaction could not be inserted");
-       else
+       else
                return 0;
-}      
+}
 
 //--------------------------------------------------------------------------------
 
@@ -103,7 +106,7 @@ function get_gl_transactions($from_date, $to_date, $trans_no=0,
        $account=null, $dimension=0, $dimension2=0, $filter_type=null,
        $amount_min=null, $amount_max=null)
 {
-       global $show_voided_gl_trans;
+       global $SysPrefs;
        
        $from = date2sql($from_date);
        $to = date2sql($to_date);
@@ -118,7 +121,7 @@ function get_gl_transactions($from_date, $to_date, $trans_no=0,
                AND ISNULL(v.date_)
                AND tran_date >= '$from'
                AND tran_date <= '$to'";
-       if (isset($show_voided_gl_trans) && $show_voided_gl_trans == 0)
+       if (isset($SysPrefs->show_voided_gl_trans) && $SysPrefs->show_voided_gl_trans == 0)
                $sql .= " AND ".TB_PREF."gl_trans.amount <> 0"; 
        if ($trans_no > 0)
                $sql .= " AND ".TB_PREF."gl_trans.type_no LIKE ".db_escape('%'.$trans_no);
@@ -449,12 +452,12 @@ function get_tax_summary($from, $to)
                                        ." || (trans_type=".ST_JOURNAL ." AND amount<0)"
                                        ." || trans_type=".ST_CUSTCREDIT.", amount*ex_rate,0)) payable,
 
-                               SUM(IF(trans_type=".ST_CUSTCREDIT." || trans_type=".ST_SUPPINVOICE.",-1,1)*
+                               SUM(IF(trans_type=".ST_CUSTCREDIT." || trans_type=".ST_SUPPINVOICE." || trans_type=".ST_JOURNAL.",-1,1)*
                                IF(trans_type=".ST_BANKDEPOSIT." || trans_type=".ST_SALESINVOICE
                                        ." || (trans_type=".ST_JOURNAL ." AND amount<0)"
                                        ." || trans_type=".ST_CUSTCREDIT.", 0, net_amount*ex_rate)) net_input,
 
-                               SUM(IF(trans_type=".ST_CUSTCREDIT." || trans_type=".ST_SUPPINVOICE.",-1,1)*
+                               SUM(IF(trans_type=".ST_CUSTCREDIT." || trans_type=".ST_SUPPINVOICE." || trans_type=".ST_JOURNAL.",-1,1)*
                                IF(trans_type=".ST_BANKDEPOSIT." || trans_type=".ST_SALESINVOICE
                                        ." || (trans_type=".ST_JOURNAL ." AND amount<0)"
                                        ." || trans_type=".ST_CUSTCREDIT.", 0, amount*ex_rate)) collectible,
@@ -472,102 +475,6 @@ function get_tax_summary($from, $to)
     return db_query($sql,"Cannot retrieve tax summary");
 }
 
-//--------------------------------------------------------------------------------
-// Write/update journal entries.
-//
-function write_journal_entries(&$cart, $reverse, $use_transaction=true)
-{
-       global $Refs;
-
-       $date_ = $cart->tran_date;
-       $ref   = $cart->reference;
-       $memo_ = $cart->memo_;
-       $trans_type = $cart->trans_type;
-       $new = $cart->order_id == 0;
-       
-       if ($new)
-           $cart->order_id = get_next_trans_no($trans_type);
-
-    $trans_id = $cart->order_id;
-
-       if ($use_transaction)
-               begin_transaction();
-       
-       if(!$new)
-               void_journal_trans($trans_type, $trans_id, false);
-
-       foreach ($cart->gl_items as $journal_item)
-       {
-               // post to first found bank account using given gl acount code.
-               $is_bank_to = is_bank_account($journal_item->code_id);
-
-               add_gl_trans($trans_type, $trans_id, $date_, $journal_item->code_id,
-                       $journal_item->dimension_id, $journal_item->dimension2_id,
-                       $journal_item->reference, $journal_item->amount, null, 
-                       $journal_item->person_type_id, 
-                       $journal_item->person_id);
-
-       if ($is_bank_to)
-       {
-               add_bank_trans($trans_type, $trans_id, $is_bank_to, $ref,
-                       $date_, $journal_item->amount,  0, "", get_company_currency(),
-                       "Cannot insert a destination bank transaction");
-       }
-               // store tax details if the gl account is a tax account
-               add_gl_tax_details($journal_item->code_id, 
-                       ST_JOURNAL, $trans_id, $journal_item->amount, 1, $date_, $memo_);
-       }
-       
-       $Refs->save($trans_type, $trans_id, $ref);
-       if ($new) {
-               add_comments($trans_type, $trans_id, $date_, $memo_);
-       } else {
-               update_comments($trans_type, $trans_id, null, $memo_);
-       }
-
-       add_audit_trail($trans_type, $trans_id, $date_);
-
-       if ($reverse)
-       {
-       //$reversingDate = date(user_date_display(),
-       //      Mktime(0,0,0,get_month($date_)+1,1,get_year($date_)));
-       $reversingDate = begin_month(add_months($date_, 1));
-
-       $trans_id_reverse = get_next_trans_no($trans_type);
-
-       foreach ($cart->gl_items as $journal_item)
-       {
-                       $is_bank_to = is_bank_account($journal_item->code_id);
-
-               add_gl_trans($trans_type, $trans_id_reverse, $reversingDate,
-                       $journal_item->code_id, $journal_item->dimension_id, $journal_item->dimension2_id,
-                       $journal_item->reference, -$journal_item->amount, 
-                       null, $journal_item->person_type_id, $journal_item->person_id);
-
-               if ($is_bank_to)
-               {
-                       add_bank_trans($trans_type, $trans_id_reverse, $is_bank_to, $ref,
-                               $reversingDate, -$journal_item->amount,
-                               0, "", get_company_currency(),
-                               "Cannot insert a destination bank transaction");
-               }
-                       // store tax details if the gl account is a tax account
-                       add_gl_tax_details($journal_item->code_id, 
-                               ST_JOURNAL, $trans_id, $journal_item->amount, 1, $reversingDate, $memo_);
-       }
-
-       add_comments($trans_type, $trans_id_reverse, $reversingDate, $memo_);
-
-       $Refs->save($trans_type, $trans_id_reverse, $ref);
-               add_audit_trail($trans_type, $trans_id_reverse, $reversingDate);
-       }
-
-       if ($use_transaction)
-               commit_transaction();
-
-       return $trans_id;
-}
-
 //--------------------------------------------------------------------------------------------------
 
 function exists_gl_trans($type, $trans_id)
@@ -611,21 +518,6 @@ function clear_gl_trans($type, $trans_id, $nested=false)
                commit_transaction();
 }
 
-//----------------------------------------------------------------------------------------
-
-function void_journal_trans($type, $type_no, $use_transaction=true)
-{
-       if ($use_transaction)
-               begin_transaction();
-
-       void_bank_trans($type, $type_no, true);
-//     void_gl_trans($type, $type_no, true);    // this is done above
-//     void_trans_tax_details($type, $type_no); // ditto
-
-       if ($use_transaction)
-               commit_transaction();
-}
-
 function get_sql_for_journal_inquiry($filter, $from, $to, $ref='', $memo='', $alsoclosed=false)
 {
 
@@ -664,8 +556,6 @@ function get_sql_for_journal_inquiry($filter, $from, $to, $ref='', $memo='', $al
        else
                $sql .= " AND NOT ISNULL(a.gl_seq)";
 
-       $sql .= " GROUP BY tran_date, gl_seq, gl.type, gl.type_no";
-
+       $sql .= " GROUP BY gl.tran_date, a.gl_seq, gl.type, gl.type_no";
        return $sql;
 }
-?>
\ No newline at end of file