X-Git-Url: https://delta.frontaccounting.com/gitweb/?a=blobdiff_plain;f=sales%2Fallocations%2Fcustomer_allocate.php;h=7c88dc9553af855b3fb42be8bfc6696756551b69;hb=d58fa50bb3c97cabf0646db613018690a12dbb46;hp=0360329551f04bbff3289274a87f6c4d0649d567;hpb=6ccee45d601e5bf1e0d02e962d82d79fabbe41c1;p=fa-stable.git diff --git a/sales/allocations/customer_allocate.php b/sales/allocations/customer_allocate.php index 03603295..7c88dc95 100644 --- a/sales/allocations/customer_allocate.php +++ b/sales/allocations/customer_allocate.php @@ -9,22 +9,23 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the License here . ***********************************************************************/ -$path_to_root="../.."; -$page_security = 3; +$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_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); //-------------------------------------------------------------------------------- @@ -35,103 +36,67 @@ 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, 0)) - { - display_error(_("The entry for one or more amounts is invalid or negative.")); - set_focus('amount'.$counter); - 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.")); - set_focus('amount'.$counter); - 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) > input_num('un_allocated' . $counter)) - { - //$_POST['amount' . $counter] = $_POST['un_allocated' . $counter]; - } + display_heading($cart->person_name); - $_SESSION['alloc']->allocs[$counter]->current_allocated = input_num('amount' . $counter); + display_heading2(_("Date:") . " " . $cart->date_ . ""); + display_heading2(_("Total:"). " " . price_format($cart->bank_amount).' '.$cart->currency.""); - $total_allocated += input_num('amount' . $counter); - } - - 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, $_SESSION['alloc']->date_); + 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); - - // Exchange Variations Joe Hunt 2008-09-20 //////////////////////////////////////// - - exchange_variation($_SESSION['alloc']->type, $_SESSION['alloc']->trans_no, - $allocn_item->type, $allocn_item->type_no, $_SESSION['alloc']->date_, - $allocn_item->current_allocated, payment_person_types::customer()); - - /////////////////////////////////////////////////////////////////////////// - $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; } } @@ -142,142 +107,18 @@ if (isset($_POST['Cancel'])) clear_allocations(); meta_forward($path_to_root . "/sales/allocations/customer_allocation_main.php"); } -//-------------------------------------------------------------------------------- - -function get_allocations_for_transaction($type, $trans_no) -{ - 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"]); - } -} -//-------------------------------------------------------------------------------- - -function edit_allocations_for_transaction($type, $trans_no) -{ - global $table_style; - - 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 "
"; - - start_form(false, true); - div_start('alloc_tbl'); - 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); - - $_POST['amount' . $counter] = price_format($allocn_item->current_allocated); - amount_cells(null, 'amount' . $counter, price_format('amount' . $counter)); - - $un_allocated = round($allocn_item->amount - $allocn_item->amount_allocated, 6); - amount_cell($un_allocated); - - label_cell("" - . _("All") . ""); - label_cell("" - . _("None") . "".hidden("un_allocated" . $counter, price_format($un_allocated), false)); - 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'", 3); - 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'", 3); - end_table(1); - - hidden('TotalNumberOfAllocs', $counter); - submit_center_first('UpdateDisplay', _("Refresh"), _('Start again allocation of selected amount'), true); - submit('Process', _("Process"), true, _('Process allocations'), true); - submit_center_last('Cancel', _("Back to Allocations"),_('Abandon allocations and return to selection of allocatable amounts'), true); - } - else - { - display_note(_("There are no unsettled transactions to allocate."), 0, 1); - - submit_center('Cancel', _("Back to Allocations"), true, - _('Abandon allocations and return to selection of allocatable amounts'), true); - } - div_end(); - end_form(); -} //-------------------------------------------------------------------------------- if (isset($_GET['trans_no']) && isset($_GET['trans_type'])) { - get_allocations_for_transaction($_GET['trans_type'], $_GET['trans_no']); + clear_allocations(); + $_SESSION['alloc'] = new allocation($_GET['trans_type'], $_GET['trans_no'], @$_GET['debtor_no'], PT_CUSTOMER); } + if(get_post('UpdateDisplay')) { - $trans_no = $_SESSION['alloc']->trans_no; - $type = $_SESSION['alloc']->type; - clear_allocations(); - get_allocations_for_transaction($type, $trans_no); + $_SESSION['alloc']->read(); $Ajax->activate('alloc_tbl'); } @@ -290,4 +131,3 @@ if (isset($_SESSION['alloc'])) end_page(); -?> \ No newline at end of file