X-Git-Url: https://delta.frontaccounting.com/gitweb/?a=blobdiff_plain;f=gl%2Fincludes%2Fdb%2Fgl_db_banking.inc;fp=gl%2Fincludes%2Fdb%2Fgl_db_banking.inc;h=964eac0ce384556adff2f08714e0ceea5eb6a1dd;hb=1571869d54be48452fdbe08f25130972ff0a7b5a;hp=f3f9a99593b312c679186dd6f69d0fc032ece9e2;hpb=1528943cad0e936781649f1dee6f7b778618eb60;p=fa-stable.git diff --git a/gl/includes/db/gl_db_banking.inc b/gl/includes/db/gl_db_banking.inc index f3f9a995..964eac0c 100644 --- a/gl/includes/db/gl_db_banking.inc +++ b/gl/includes/db/gl_db_banking.inc @@ -35,7 +35,7 @@ function add_exchange_variation($trans_no, $date_, $acc_id, $account, } $amount = get_gl_trans_from_to("", $date_, $account); $diff = $amount - $for_amount; - if ($diff != 0) + if (floatcmp($diff,0)) { if ($trans_no == null) $trans_no = get_next_trans_no(ST_JOURNAL); @@ -45,8 +45,9 @@ function add_exchange_variation($trans_no, $date_, $acc_id, $account, -$diff, null, $person_type_id, $person_id); add_gl_trans(ST_JOURNAL, $trans_no, $date_, get_company_pref('exchange_diff_act'), 0, 0, _("Exchange Variance"), $diff, null, $person_type_id, $person_id); + return true; } - return ($diff != 0); + return false; } //------------- New helper functions for revaluation of customer/supplier currencies 2011-05-08 Joe Hunt. @@ -189,14 +190,14 @@ function add_exchange_variation_all($date=null, $ref="", $memo) // function add_bank_transfer($from_account, $to_account, $date_, - $amount, $ref, $memo_, $charge=0) + $amount, $ref, $memo_, $charge=0, $target_amount=0) { global $Refs, $SysPrefs; begin_transaction(); - $args = func_get_args(); if (count($args) < 7) $args[] = 0; + $args = func_get_args(); if (count($args) < 8) $args[] = 0; $args = (object)array_combine(array('from_account', 'to_account', 'date_', 'amount', - 'ref', 'memo_', 'charge'), $args); + 'ref', 'memo_', 'charge', 'target_amount'), $args); $args->trans_no = 0; hook_db_prewrite($args, ST_BANKTRANSFER); @@ -237,16 +238,25 @@ function add_bank_transfer($from_account, $to_account, $date_, $total += add_gl_trans($trans_type, $trans_no, $date_, $charge_act, 0, 0, $person_id, $charge, $currency); } + + // provide backward compatibility for extension modules (target amount can be not passed) + $to_currency = $target_amount ? $toact['bank_curr_code'] : $currency; + $to_amount = $target_amount ? $target_amount : $amount; + // do the destination account postings $total += add_gl_trans($trans_type, $trans_no, $date_, $to_gl_account, 0, 0, $person_id, - $amount, $currency); + $to_amount, $to_currency); /*Post a balance post if $total != 0 */ - add_gl_balance($trans_type, $trans_no, $date_, -$total); + if ($currency == $to_currency) + add_gl_balance($trans_type, $trans_no, $date_, -$total); + else // in this case those are exchange variances between bank and home rates + add_gl_trans($trans_type, $trans_no, $date_, get_company_pref('exchange_diff_act'), + 0, 0, _("Exchange Variance"), -$total); add_bank_trans($trans_type, $trans_no, $to_account, $ref, - $date_, $amount, PT_MISC, $person_id, - $currency, "Cannot insert a destination bank transaction"); + $date_, $to_amount, PT_MISC, $person_id, + $to_currency, "Cannot insert a destination bank transaction"); if ($SysPrefs->auto_currency_revaluation()) { @@ -276,17 +286,18 @@ function add_bank_transfer($from_account, $to_account, $date_, // Add bank payment or deposit to database. // // $from_account - bank account id -// $item - transaction cart (line item's amounts in bank account's currency) +// $items - transaction cart (line amounts in bank account's currency); negative for deposit // $person_type_id - defines type of $person_id identifiers // $person_id - supplier/customer/other id -// $person_detail_id - customer branch id or not used +// $person_detail_id - customer branch id or not used +// $settled_amount - settled amount in AR/AP (if applicable) in customer/supplier currency (always non-negative number) // // returns an array of (inserted trans type, trans no) // // FIXME -revise code for update case // function write_bank_transaction($trans_type, $trans_no, $from_account, $items, $date_, - $person_type_id, $person_id, $person_detail_id, $ref, $memo_, $use_transaction=true) + $person_type_id, $person_id, $person_detail_id, $ref, $memo_, $use_transaction=true, $settled_amount=null) { global $Refs, $SysPrefs; @@ -301,7 +312,7 @@ function write_bank_transaction($trans_type, $trans_no, $from_account, $items, $ $args = func_get_args(); if (count($args) < 11) $args[] = true; $args = (object)array_combine(array('trans_type', 'trans_no', 'from_account', 'items', 'date_', - 'person_type_id', 'person_id', 'person_detail_id', 'ref', 'memo_', 'use_transaction'), + 'person_type_id', 'person_id', 'person_detail_id', 'ref', 'memo_', 'use_transaction', 'settled_amount'), $args); hook_db_prewrite($args, $trans_type); @@ -321,11 +332,14 @@ function write_bank_transaction($trans_type, $trans_no, $from_account, $items, $ 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; + if (!isset($settled_amount)) // leaved for backward/ext compatibility + $cust_amount = exchange_from_to(abs($total_amount), $currency, get_customer_currency($person_id), $date_); + else + $cust_amount = $settled_amount; + + if ($trans_type == ST_BANKPAYMENT) + $cust_amount = -$cust_amount; $trans_no = write_customer_trans($trans_type, 0, $person_id, $person_detail_id, $date_, $ref, $cust_amount); @@ -335,10 +349,13 @@ function write_bank_transaction($trans_type, $trans_no, $from_account, $items, $ { // 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_); + if (!isset($settled_amount)) // leaved for for backward/ext compatibility + $supp_amount = exchange_from_to(abs($total_amount), $currency, get_supplier_currency($person_id), $date_); + else + $supp_amount = $settled_amount; - // we need to negate it too - $supp_amount = -$supp_amount; + if ($trans_type == ST_BANKPAYMENT) + $supp_amount = -$supp_amount; $trans_no = write_supp_trans($trans_type, 0, $person_id, $date_, '', $ref, "", $supp_amount, 0, 0);