Changed Report Statements to accept selector Outstanding Only
[fa-stable.git] / gl / includes / db / gl_db_banking.inc
index 58825018e3e12db6fb01beaac3bb9aa4aec86079..3506a5c83f171b1b5e0902567df1160bce4dd74e 100644 (file)
@@ -248,9 +248,8 @@ function add_bank_transaction($trans_type, $from_account, $items, $date_,
                        "Cannot insert a destination bank transaction");
                if ($do_exchange_variance)
                {
-                       if (add_exchange_variation($trans_no1, $date_, $is_bank_to, $gl_item->code_id, 
-                               $currency, $person_type_id, $person_id))
-                               $exchanged = true;
+                       add_exchange_variation($trans_no1, $date_, $is_bank_to, $gl_item->code_id, 
+                               $currency, $person_type_id, $person_id);
                }               
        }
                // store tax details if the gl account is a tax account
@@ -276,6 +275,142 @@ function add_bank_transaction($trans_type, $from_account, $items, $date_,
                        add_audit_trail(ST_JOURNAL, $trans_no1, $date_);
                }       
        }
+
+       add_comments($trans_type, $trans_no, $date_, $memo_);
+
+       $Refs->save($trans_type, $trans_no, $ref);
+       add_audit_trail($trans_type, $trans_no, $date_);
+
+       if ($use_transaction)
+               commit_transaction();
+
+       return array($trans_type, $trans_no);
+}
+
+//----------------------------------------------------------------------------------------
+
+//----------------------------------------------------------------------------------
+//     Re-Insert bank payment or deposit to database using the transaction number passed.
+//
+//     $from_account - bank account id
+//  $item - transaction cart (line item's amounts in bank account's currency)
+//  $person_type_id - defines type of $person_id identifiers
+//  $person_id - supplier/customer/other id
+//  $person_detail_id - customer branch id or not used
+//
+// returns an array of (inserted trans type, trans no)
+
+function reinsert_bank_transaction($trans_type, $trans_no, $from_account, $items, $date_,
+       $person_type_id, $person_id, $person_detail_id, $ref, $memo_, $use_transaction=true)
+{
+       global $Refs, $SysPrefs;
+
+       // we can only handle type 1 (payment)and type 2 (deposit)
+       if ($trans_type != ST_BANKPAYMENT && $trans_type != ST_BANKDEPOSIT)
+               display_db_error("Invalid type ($trans_type) sent to add_bank_transaction");
+
+       $do_exchange_variance = false;
+       $exchanged = false;
+       if ($use_transaction)
+               begin_transaction();
+
+       $currency = get_bank_account_currency($from_account);
+       $bank_gl_account = get_bank_gl_account($from_account);
+
+       // the gl items are already inversed/negated for type 2 (deposit)
+       $total_amount = $items->gl_items_total();
+
+    if ($person_type_id == PT_CUSTOMER)
+    {
+       // we need to add a customer transaction record
+
+               // convert to customer currency
+               $cust_amount = exchange_from_to($total_amount, $currency, get_customer_currency($person_id), $date_);
+               // we need to negate it too
+               $cust_amount = -$cust_amount;
+
+               $trans_no = reinsert_customer_trans($trans_type, $trans_no, $person_id, $person_detail_id, $date_,
+               $ref, $cust_amount);
+
+    }
+    elseif ($person_type_id == PT_SUPPLIER)
+    {
+       // we need to add a supplier transaction record
+               // convert to supp currency
+               $supp_amount = exchange_from_to($total_amount, $currency, get_supplier_currency($person_id), $date_);
+
+               // we need to negate it too
+               $supp_amount = -$supp_amount;
+
+               $trans_no = reinsert_supp_trans($trans_type, $trans_no, $person_id, $date_, '',
+               $ref, "", $supp_amount, 0, 0);
+
+    }
+    else
+    {
+       $do_exchange_variance = $SysPrefs->auto_currency_revaluation();
+       if ($do_exchange_variance)
+               $trans_no1 = get_next_trans_no(ST_JOURNAL);
+    }
+
+       // do the source account postings
+
+    add_bank_trans($trans_type, $trans_no, $from_account, $ref,
+       $date_, -$total_amount,
+       $person_type_id, $person_id,
+       $currency,
+       "Cannot insert a source bank transaction");
+       $total = 0;
+       foreach ($items->gl_items as $gl_item)
+       {
+               $is_bank_to = is_bank_account($gl_item->code_id);
+
+               if ($trans_type == ST_BANKPAYMENT AND $is_bank_to)
+               {
+                       // we don't allow payments to go to a bank account. use transfer for this !
+                       display_db_error("invalid payment entered. Cannot pay to another bank account", "");
+               }
+
+       // do the destination account postings
+       $total += add_gl_trans($trans_type, $trans_no, $date_, $gl_item->code_id,
+               $gl_item->dimension_id, $gl_item->dimension2_id, $gl_item->reference,
+               $gl_item->amount, $currency, $person_type_id, $person_id);
+
+       if ($is_bank_to)
+       {
+               add_bank_trans($trans_type, $trans_no, $is_bank_to, $ref,
+                       $date_, $gl_item->amount,
+                       $person_type_id, $person_id, $currency,
+                       "Cannot insert a destination bank transaction");
+               if ($do_exchange_variance)
+               {
+                       add_exchange_variation($trans_no1, $date_, $is_bank_to, $gl_item->code_id, 
+                               $currency, $person_type_id, $person_id);
+               }               
+       }
+               // store tax details if the gl account is a tax account
+
+               $amount = $gl_item->amount;
+               $ex_rate = get_exchange_rate_from_home_currency($currency, $date_);
+                       
+               add_gl_tax_details($gl_item->code_id, $trans_type, $trans_no, -$amount,
+                       $ex_rate, $date_, $memo_);
+       }
+       // do the source account postings
+    add_gl_trans($trans_type, $trans_no, $date_, $bank_gl_account, 0, 0, $memo_,
+       -$total, null, $person_type_id, $person_id);
+
+    if ($do_exchange_variance)
+    {
+       if ($exchanged || add_exchange_variation($trans_no1, $date_, $from_account, $bank_gl_account, 
+               $currency, $person_type_id, $person_id))
+       {       
+                       $ref1 = $Refs->get_next(ST_JOURNAL);
+                       $Refs->save(ST_JOURNAL, $trans_no1, $ref1);
+                       add_audit_trail(ST_JOURNAL, $trans_no1, $date_);
+               }       
+       }
+
        add_comments($trans_type, $trans_no, $date_, $memo_);
 
        $Refs->save($trans_type, $trans_no, $ref);