X-Git-Url: https://delta.frontaccounting.com/gitweb/?a=blobdiff_plain;f=includes%2Fui%2Fallocation_cart.inc;h=8d1e400186f5ce06ae83ec2bcde5170d2b4e4f98;hb=29e68a1b8dcbe7c7ecb797396945e0cccf2d6cd8;hp=d89eb9ecc3dc966bc4e5014f3d7e5257eb27d180;hpb=da23a4fdc0501edbce8fb74d194fa816e89dd3d6;p=fa-stable.git diff --git a/includes/ui/allocation_cart.inc b/includes/ui/allocation_cart.inc index d89eb9ec..8d1e4001 100644 --- a/includes/ui/allocation_cart.inc +++ b/includes/ui/allocation_cart.inc @@ -22,6 +22,7 @@ class allocation var $type; var $person_id = ''; var $person_name = ''; + var $person_type; var $date_; var $amount = 0; /*Total amount of the transaction in FX */ @@ -91,29 +92,32 @@ class allocation $type = $this->type; $trans_no = $this->trans_no; } - - $sup = $type == 21 || $type == 22; + if ($type == ST_BANKPAYMENT || $type == ST_BANKDEPOSIT) { + $bank_trans = db_fetch(get_bank_trans($type, $trans_no)); + $this->person_type = $bank_trans['person_type_id'] == PT_SUPPLIER; + } else + $this->person_type = $type == ST_SUPPCREDIT || $type == ST_SUPPAYMENT; $this->allocs = array(); if ($trans_no) { - $trans = $sup ? get_supp_trans($trans_no, $type) + $trans = $this->person_type ? get_supp_trans($trans_no, $type) : get_customer_trans($trans_no, $type); - $this->person_id = $trans[$sup ? 'supplier_id':'debtor_no']; - $this->person_name = $trans[$sup ? "supplier_name":"DebtorName"]; + $this->person_id = $trans[$this->person_type ? 'supplier_id':'debtor_no']; + $this->person_name = $trans[$this->person_type ? "supplier_name":"DebtorName"]; $this->amount = $trans["Total"]; $this->date_ = sql2date($trans["tran_date"]); } else { - $this->person_id = get_post($sup ? 'supplier_id':'customer_id'); - $this->date_ = get_post($sup ? 'DatePaid':'DateBanked', Today()); + $this->person_id = get_post($this->person_type ? 'supplier_id':'customer_id'); + $this->date_ = get_post($this->person_type ? 'DatePaid':'DateBanked', Today()); } /* Now populate the array of possible (and previous actual) allocations for this customer/supplier. First get the transactions that have outstanding balances ie Total-alloc >0 */ - if ($sup) + if ($this->person_type) $trans_items = get_allocatable_to_supp_transactions($this->person_id); else $trans_items = get_allocatable_to_cust_transactions($this->person_id); @@ -134,7 +138,7 @@ class allocation NB existing entries where still some of the trans outstanding entered from above logic will be overwritten with the prev alloc detail below */ - if ($sup) + if ($this->person_type) $trans_items = get_allocatable_to_supp_transactions($this->person_id, $trans_no, $type); else @@ -155,11 +159,9 @@ class allocation // function write() { - $sup = $this->type == 21 || $this->type == 22; - begin_transaction(); - if ($sup) + if ($this->person_type) clear_supp_alloctions($this->type, $this->trans_no, $this->date_); else clear_cust_alloctions($this->type, $this->trans_no, $this->date_); @@ -170,7 +172,7 @@ class allocation { if ($alloc_item->current_allocated > 0) { - if ($sup) { + if ($this->person_type) { add_supp_allocation($alloc_item->current_allocated, $this->type, $this->trans_no, $alloc_item->type, $alloc_item->type_no, $this->date_); @@ -190,8 +192,7 @@ class allocation exchange_variation($this->type, $this->trans_no, $alloc_item->type, $alloc_item->type_no, $this->date_, $alloc_item->current_allocated, - $sup ? payment_person_types::supplier() - : payment_person_types::customer()); + $this->person_type ? PT_SUPPLIER : PT_CUSTOMER); ////////////////////////////////////////////////////////////// @@ -199,7 +200,7 @@ class allocation } } /*end of the loop through the array of allocations made */ - if ($sup) + if ($this->person_type) update_supp_trans_allocation($this->type, $this->trans_no, $total_allocated); else @@ -248,13 +249,13 @@ class allocation_item function show_allocatable($show_totals) { - global $table_style; + global $systypes_array; $k = $counter = $total_allocated = 0; if (count($_SESSION['alloc']->allocs)) { - start_table("$table_style width=60%"); + start_table(TABLESTYLE, "width=60%"); $th = array(_("Transaction Type"), _("#"), _("Date"), _("Due Date"), _("Amount"), _("Other Allocations"), _("This Allocation"), _("Left to Allocate"),'',''); table_header($th); @@ -262,7 +263,7 @@ function show_allocatable($show_totals) { foreach ($_SESSION['alloc']->allocs as $alloc_item) { alt_table_row_color($k); - label_cell(systypes::name($alloc_item->type)); + label_cell($systypes_array[$alloc_item->type]); label_cell(get_trans_view_str($alloc_item->type, $alloc_item->type_no)); label_cell($alloc_item->date_, "align=right"); label_cell($alloc_item->due_date, "align=right"); @@ -273,7 +274,7 @@ function show_allocatable($show_totals) { amount_cells(null, "amount" . $counter, price_format('amount' . $counter)); $un_allocated = round($alloc_item->amount - $alloc_item->amount_allocated, 6); - amount_cell($un_allocated); + amount_cell($un_allocated, false,'', 'maxval'.$counter); label_cell("" . _("All") . ""); label_cell("" @@ -289,7 +290,9 @@ function show_allocatable($show_totals) { "colspan=6 align=right", "align=right id='total_allocated'", 3); $amount = $_SESSION['alloc']->amount; - if ($_SESSION['alloc']->type == 21 || $_SESSION['alloc']->type == 22) + if ($_SESSION['alloc']->type == ST_SUPPCREDIT + || $_SESSION['alloc']->type == ST_SUPPAYMENT + || $_SESSION['alloc']->type == ST_BANKPAYMENT) $amount = -$amount; if ($amount - $total_allocated < 0) @@ -312,6 +315,8 @@ function show_allocatable($show_totals) { function check_allocations() { + global $SysPrefs; + $total_allocated = 0; for ($counter = 0; $counter < $_POST["TotalNumberOfAllocs"]; $counter++) @@ -327,7 +332,9 @@ function check_allocations() amount left to be allocated against the transaction under review */ if (input_num('amount' . $counter) > get_post('un_allocated' . $counter)) { - //$_POST['amount' . $counter] = $_POST['un_allocated' . $counter]; + display_error(_("At least one transaction is overallocated.")); + set_focus('amount'.$counter); + return false; } $_SESSION['alloc']->allocs[$counter]->current_allocated = input_num('amount' . $counter); @@ -336,10 +343,12 @@ function check_allocations() } $amount = $_SESSION['alloc']->amount; - if ($_SESSION['alloc']->type == 21 || $_SESSION['alloc']->type == 22) + + + if (in_array($_SESSION['alloc']->type, array(ST_BANKPAYMENT, ST_SUPPCREDIT, ST_SUPPAYMENT))) $amount = -$amount; - if ($total_allocated - $amount > sys_prefs::allocation_settled_allowance()) + if ($total_allocated - ($amount + input_num('discount')) > $SysPrefs->allocation_settled_allowance()) { display_error(_("These allocations cannot be processed because the amount allocated is more than the total amount left to allocate.")); return false;