X-Git-Url: https://delta.frontaccounting.com/gitweb/?a=blobdiff_plain;f=admin%2Fvoid_transaction.php;h=e252661e5caa7a54117084e036ed907043c401ad;hb=a3616fe8abf36ba9a2ba9ba63689475b1c8978b8;hp=a2f0a435a4cd9b68d24a6ad776d150f20b5a48d7;hpb=7c0d108b47596677f513f73070a0c9746a2bd750;p=fa-stable.git diff --git a/admin/void_transaction.php b/admin/void_transaction.php index a2f0a435..e252661e 100644 --- a/admin/void_transaction.php +++ b/admin/void_transaction.php @@ -21,9 +21,9 @@ include_once($path_to_root . "/admin/db/transactions_db.inc"); include_once($path_to_root . "/admin/db/voiding_db.inc"); $js = ""; -if ($use_date_picker) +if (user_use_date_picker()) $js .= get_js_date_picker(); -if ($use_popup_windows) +if ($SysPrefs->use_popup_windows) $js .= get_js_open_window(800, 500); page(_($help_context = "Void a Transaction"), false, false, "", $js); @@ -70,8 +70,13 @@ function exist_transaction($type, $type_no) break; case ST_PURCHORDER : // it's a PO - case ST_SUPPRECEIVE : // it's a GRN return false; + + case ST_SUPPRECEIVE : // it's a GRN + if (!exists_grn($type_no)) + return false; + break; + case ST_SUPPINVOICE : // it's a suppler invoice case ST_SUPPCREDIT : // it's a supplier credit note case ST_SUPPAYMENT : // it's a supplier payment @@ -99,7 +104,6 @@ function exist_transaction($type, $type_no) return false; case ST_COSTUPDATE : // it's a stock cost update return false; - break; } return true; @@ -116,6 +120,8 @@ function select_link($row) { if (!isset($row['type'])) $row['type'] = $_POST['filterType']; + if (!is_date_in_fiscalyear($row['trans_date'], true)) + return _("N/A"); return button('Edit'.$row["trans_no"], _("Select"), _("Select"), ICON_EDIT); } @@ -136,19 +142,24 @@ function ref_view($row) return $row['ref']; } +function is_selected($row) // Function added by faisal +{ + global $selected_id; + return $row['trans_no'] == $selected_id ? true : false; +} + function voiding_controls() { global $selected_id; - $not_implemented = array(ST_PURCHORDER, ST_SUPPRECEIVE, ST_SALESORDER, - ST_SALESQUOTE, ST_COSTUPDATE); + $not_implemented = array(ST_PURCHORDER, ST_SALESORDER, ST_SALESQUOTE, ST_COSTUPDATE, ST_CUSTOMER, ST_SUPPLIER); start_form(); start_table(TABLESTYLE_NOBORDER); start_row(); - systypes_list_cells(_("Type:"), 'filterType', null, true, $not_implemented); + systypes_list_cells(_("Transaction Type:"), 'filterType', null, true, $not_implemented); if (list_updated('filterType')) $selected_id = -1; @@ -162,24 +173,26 @@ function voiding_controls() ref_cells(_("to #:"), 'ToTransNo'); submit_cells('ProcessSearch', _("Search"), '', '', 'default'); - + end_row(); end_table(1); $trans_ref = false; - $sql = get_sql_for_view_transactions($_POST['filterType'], $_POST['FromTransNo'], $_POST['ToTransNo'], $trans_ref); + $sql = get_sql_for_view_transactions(get_post('filterType'), get_post('FromTransNo'), get_post('ToTransNo'), $trans_ref); if ($sql == "") return; $cols = array( - _("#") => array('insert'=>true, 'fun'=>'view_link'), - _("Reference") => array('fun'=>'ref_view'), + _("#") => array('insert'=>true, 'fun'=>'view_link'), + _("Reference") => array('fun'=>'ref_view'), _("Date") => array('type'=>'date', 'fun'=>'date_view'), _("GL") => array('insert'=>true, 'fun'=>'gl_view'), - _("Select") => array('insert'=>true, 'fun'=>'select_link') + _("Select") => array('insert'=>true, 'fun'=>'select_link') ); $table =& new_db_pager('transactions', $sql, $cols); + $table->set_marker('is_selected', _("Marked transactions will be voided.")); //Added by Faisal + $table->width = "40%"; display_db_pager($table); @@ -217,7 +230,24 @@ function voiding_controls() } else { - display_warning(_("Are you sure you want to void this transaction ? This action cannot be undone."), 0, 1); + if ($_POST['filterType'] == ST_SUPPRECEIVE) { + $result = get_grn_items($_POST['trans_no']); + if (db_num_rows($result) > 0) { + while ($myrow = db_fetch($result)) { + if (is_inventory_item($myrow["item_code"])) { + if (check_negative_stock($myrow["item_code"], -$myrow["qty_recd"], null, $_POST['date_'])) { + $stock = get_item($myrow["item_code"]); + display_error(_("The void cannot be processed because there is an insufficient quantity for item:") . + " " . $stock['stock_id'] . " - " . $stock['description'] . " - " . + _("Quantity On Hand") . " = " . number_format2(get_qoh_on_date($stock['stock_id'], null, + $_POST['date_']), get_qty_dec($stock['stock_id']))); + return false; + } + } + } + } + } + display_warning(_("Are you sure you want to void this transaction ? This action cannot be undone."), 0, 1); br(); submit_center_first('ConfirmVoiding', _("Proceed"), '', true); submit_center_last('CancelVoiding', _("Cancel"), '', 'cancel'); @@ -235,7 +265,7 @@ function check_valid_entries() { display_error(_("The selected transaction was closed for edition and cannot be voided.")); set_focus('trans_no'); - return; + return false; } if (!is_date($_POST['date_'])) { @@ -245,7 +275,7 @@ function check_valid_entries() } if (!is_date_in_fiscalyear($_POST['date_'])) { - display_error(_("The entered date is not in fiscal year.")); + display_error(_("The entered date is out of fiscal year or is closed for further data entry.")); set_focus('date_'); return false; } @@ -277,18 +307,17 @@ function handle_void_transaction() return; } - $ret = void_transaction($_POST['filterType'], $_POST['trans_no'], + $msg = void_transaction($_POST['filterType'], $_POST['trans_no'], $_POST['date_'], $_POST['memo_']); - if ($ret) + if (!$msg) { display_notification_centered(_("Selected transaction has been voided.")); unset($_POST['trans_no']); unset($_POST['memo_']); - unset($_POST['date_']); } else { - display_error(_("The entered transaction does not exist or cannot be voided.")); + display_error($msg); set_focus('trans_no'); } @@ -314,6 +343,7 @@ if (isset($_POST['ProcessVoiding'])) if (isset($_POST['ConfirmVoiding'])) { handle_void_transaction(); + $selected_id = ''; $Ajax->activate('_page_body'); } @@ -329,4 +359,3 @@ voiding_controls(); end_page(); -?> \ No newline at end of file