X-Git-Url: https://delta.frontaccounting.com/gitweb/?a=blobdiff_plain;f=sales%2Fallocations%2Fcustomer_allocate.php;h=7c88dc9553af855b3fb42be8bfc6696756551b69;hb=d58fa50bb3c97cabf0646db613018690a12dbb46;hp=e1fd9ea2cac4bb3e9826bff7134380fa3f35a8dc;hpb=082b0f00ec5292669a82a0c611ef67650282a7c4;p=fa-stable.git diff --git a/sales/allocations/customer_allocate.php b/sales/allocations/customer_allocate.php index e1fd9ea2..7c88dc95 100644 --- a/sales/allocations/customer_allocate.php +++ b/sales/allocations/customer_allocate.php @@ -1,21 +1,31 @@ . +***********************************************************************/ +$page_security = 'SA_SALESALLOC'; +$path_to_root = "../.."; include($path_to_root . "/includes/ui/allocation_cart.inc"); include_once($path_to_root . "/includes/session.inc"); include_once($path_to_root . "/includes/data_checks.inc"); include_once($path_to_root . "/sales/includes/sales_ui.inc"); include_once($path_to_root . "/sales/includes/sales_db.inc"); +//include_once($path_to_root . "/sales/includes/ui/cust_alloc_ui.inc"); $js = ""; -if ($use_popup_windows) +if ($SysPrefs->use_popup_windows) $js .= get_js_open_window(900, 500); -add_js_allocate(); +add_js_file('allocate.js'); -page(_("Allocate Customer Payment or Credit Note"), false, false, "", $js); +page(_($help_context = "Allocate Customer Payment or Credit Note"), false, false, "", $js); //-------------------------------------------------------------------------------- @@ -26,240 +36,90 @@ function clear_allocations() unset($_SESSION['alloc']->allocs); unset($_SESSION['alloc']); } - session_register('alloc'); + //session_register('alloc'); } //-------------------------------------------------------------------------------- -function check_data() +function edit_allocations_for_transaction($type, $trans_no) { - $total_allocated = 0; + global $systypes_array; - for ($counter = 0; $counter < $_POST["TotalNumberOfAllocs"]; $counter++) + $cart = $_SESSION['alloc']; + + if ($cart->type == ST_JOURNAL && $cart->bank_amount < 0) { + $cart->bank_amount = -$cart->bank_amount; + $cart->amount = -$cart->amount; + } + display_heading(sprintf(_("Allocation of %s # %d"), $systypes_array[$cart->type], $cart->trans_no)); - if (!check_num('amount' . $counter)) - { - display_error(_("The entry for one or more amounts is invalid.")); - return false; - } - - if (!check_num('amount' . $counter,0)) - { - display_error(_("The entry for an amount to allocate was negative. A positive allocation amount is expected.")); - return false; - } - - /*Now check to see that the AllocAmt is no greater than the - amount left to be allocated against the transaction under review */ - if (input_num('amount' . $counter) > $_POST['un_allocated' . $counter]) - { - //$_POST['amount' . $counter] = $_POST['un_allocated' . $counter]; - } - - $_SESSION['alloc']->allocs[$counter]->current_allocated = input_num('amount' . $counter); + display_heading($cart->person_name); - $total_allocated += input_num('amount' . $counter); - } + display_heading2(_("Date:") . " " . $cart->date_ . ""); + display_heading2(_("Total:"). " " . price_format($cart->bank_amount).' '.$cart->currency.""); - if ($total_allocated - $_SESSION['alloc']->amount > sys_prefs::allocation_settled_allowance()) + if (floatcmp($cart->bank_amount, $cart->amount)) { - display_error(_("These allocations cannot be processed because the amount allocated is more than the total amount left to allocate.")); - //echo _("Total allocated:") . " " . $total_allocated ; - //echo " " . _("Total amount that can be allocated:") . " " . -$_SESSION['alloc']->TransAmt . "
"; - return false; + $total = _("Amount to be settled:") . " " . price_format($cart->amount).' '.$cart->person_curr.""; + if ($cart->currency != $cart->person_curr) + $total .= sprintf(" (%s %s/%s)", exrate_format($cart->bank_amount/$cart->amount), $cart->currency, $cart->person_curr); + display_heading2($total); } - return true; -} - -//----------------------------------------------------------------------------------- - -function handle_process() -{ - begin_transaction(); - - // clear all the allocations for this payment/credit - clear_cust_alloctions($_SESSION['alloc']->type, $_SESSION['alloc']->trans_no); + echo "
"; - // now add the new allocations - $total_allocated = 0; - foreach ($_SESSION['alloc']->allocs as $allocn_item) + start_form(); + div_start('alloc_tbl'); + if (count($cart->allocs) > 0) + { + show_allocatable(true); + submit_center_first('UpdateDisplay', _("Refresh"), _('Start again allocation of selected amount'), true); + submit('Process', _("Process"), true, _('Process allocations'), 'default'); + submit_center_last('Cancel', _("Back to Allocations"),_('Abandon allocations and return to selection of allocatable amounts'), 'cancel'); + } + else { - if ($allocn_item->current_allocated > 0) - { - add_cust_allocation($allocn_item->current_allocated, - $_SESSION['alloc']->type, $_SESSION['alloc']->trans_no, - $allocn_item->type, $allocn_item->type_no, $_SESSION['alloc']->date_); - - update_debtor_trans_allocation($allocn_item->type, $allocn_item->type_no, - $allocn_item->current_allocated); - $total_allocated += $allocn_item->current_allocated; - - } - - } /*end of the loop through the array of allocations made */ - - update_debtor_trans_allocation($_SESSION['alloc']->type, - $_SESSION['alloc']->trans_no, $total_allocated); - - commit_transaction(); + display_note(_("There are no unsettled transactions to allocate."), 0, 1); - clear_allocations(); + submit_center('Cancel', _("Back to Allocations"), true, + _('Abandon allocations and return to selection of allocatable amounts'), 'cancel'); + } + div_end(); + end_form(); } //-------------------------------------------------------------------------------- if (isset($_POST['Process'])) { - if (check_data()) + if (check_allocations()) { - handle_process(); + $_SESSION['alloc']->write(); + clear_allocations(); $_POST['Cancel'] = 1; } } - //-------------------------------------------------------------------------------- if (isset($_POST['Cancel'])) { clear_allocations(); meta_forward($path_to_root . "/sales/allocations/customer_allocation_main.php"); - exit; } //-------------------------------------------------------------------------------- -function get_allocations_for_transaction($type, $trans_no) +if (isset($_GET['trans_no']) && isset($_GET['trans_type'])) { clear_allocations(); - - $debtor = get_customer_trans($trans_no, $type); - - $_SESSION['alloc'] = new allocation($trans_no, $type, $debtor["debtor_no"], - $debtor["DebtorName"], $debtor["Total"], sql2date($debtor["tran_date"])); - - /* Now populate the array of possible (and previous actual) allocations for this customer */ - /*First get the transactions that have outstanding balances ie Total-alloc >0 */ - - $trans_items = get_allocatable_to_cust_transactions($_SESSION['alloc']->person_id); - - while ($myrow = db_fetch($trans_items)) - { - $_SESSION['alloc']->add_item($myrow["type"], $myrow["trans_no"], - sql2date($myrow["tran_date"]), sql2date($myrow["due_date"]), - $myrow["Total"], // trans total - $myrow["alloc"], // trans total allocated - 0); // this allocation - } - - - /* Now get trans that might have previously been allocated to by this trans - NB existing entries where still some of the trans outstanding entered from - above logic will be overwritten with the prev alloc detail below */ - - $trans_items = get_allocatable_to_cust_transactions($_SESSION['alloc']->person_id, $trans_no, $type); - - while ($myrow = db_fetch($trans_items)) - { - $_SESSION['alloc']->add_or_update_item ($myrow["type"], $myrow["trans_no"], - sql2date($myrow["tran_date"]), sql2date($myrow["due_date"]), - $myrow["Total"], $myrow["alloc"] - $myrow["amt"], $myrow["amt"]); - } + $_SESSION['alloc'] = new allocation($_GET['trans_type'], $_GET['trans_no'], @$_GET['debtor_no'], PT_CUSTOMER); } -//-------------------------------------------------------------------------------- - -function edit_allocations_for_transaction($type, $trans_no) -{ - global $table_style; - - start_form(false, true); - - display_heading(sprintf(_("Allocation of %s # %d"), systypes::name($_SESSION['alloc']->type),$_SESSION['alloc']->trans_no)); - - display_heading($_SESSION['alloc']->person_name); - - display_heading2(_("Date:") . " " . $_SESSION['alloc']->date_ . ""); - display_heading2(_("Total:") . " " . price_format($_SESSION['alloc']->amount) . ""); - - echo "
"; - - if (count($_SESSION['alloc']->allocs) > 0) - { - start_table($table_style); - - $th = array(_("Transaction Type"), _("#"), _("Date"), _("Due Date"), _("Amount"), - _("Other Allocations"), _("This Allocation"), _("Left to Allocate"), "", ""); - - table_header($th); - - $k = $counter = $total_allocated = 0; - - foreach ($_SESSION['alloc']->allocs as $allocn_item) - { - alt_table_row_color($k); - - label_cell(systypes::name($allocn_item->type)); - label_cell(get_trans_view_str($allocn_item->type, $allocn_item->type_no)); - label_cell($allocn_item->date_, "align=right"); - label_cell($allocn_item->due_date, "align=right"); - amount_cell($allocn_item->amount); - amount_cell($allocn_item->amount_allocated); - - if (!check_num('amount' . $counter)) - $_POST['amount' . $counter] = price_format($allocn_item->current_allocated); - amount_cells(null, 'amount' . $counter, $_POST['amount' . $counter]); - - $un_allocated = round($allocn_item->amount - $allocn_item->amount_allocated, 6); - hidden("un_allocated" . $counter, $un_allocated); - amount_cell($un_allocated); - - label_cell("" - . _("All") . ""); - label_cell("" - . _("None") . ""); - end_row(); - - $total_allocated += input_num('amount' . $counter); - $counter++; - } - - label_row(_("Total Allocated"), price_format($total_allocated), - "colspan=6 align=right", "nowrap align=right id='total_allocated'"); - if ($_SESSION['alloc']->amount - $total_allocated < 0) - { - $font1 = ""; - $font2 = ""; - } - else - $font1 = $font2 = ""; - $left_to_allocate = $_SESSION['alloc']->amount - $total_allocated; - $left_to_allocate = price_format($left_to_allocate); - label_row(_("Left to Allocate"), $font1 . $left_to_allocate . $font2, - "colspan=6 align=right ", "nowrap align=right id='left_to_allocate'"); - end_table(1); - - hidden('TotalNumberOfAllocs', $counter); -// hidden('left_to_allocate', $left_to_allocate); - submit_center_first('UpdateDisplay', _("Update")); - submit('Process', _("Process")); - } - else - { - display_note(_("There are no unsettled transactions to allocate."), 0, 1); - } - - submit_center_last('Cancel', _("Back to Allocations")); - - end_form(); -} - -//-------------------------------------------------------------------------------- - -if (isset($_GET['trans_no']) && isset($_GET['trans_type'])) +if(get_post('UpdateDisplay')) { - get_allocations_for_transaction($_GET['trans_type'], $_GET['trans_no']); + $_SESSION['alloc']->read(); + $Ajax->activate('alloc_tbl'); } if (isset($_SESSION['alloc'])) @@ -271,4 +131,3 @@ if (isset($_SESSION['alloc'])) end_page(); -?> \ No newline at end of file