From: Janusz Dobrowolski Date: Thu, 19 Mar 2015 10:05:04 +0000 (+0100) Subject: Improved error messages in transaction voiding. X-Git-Tag: v2.4.2~19^2~239 X-Git-Url: https://delta.frontaccounting.com/gitweb/?p=fa-stable.git;a=commitdiff_plain;h=4fcb2ed2946898d413f18fe9e2be33d1b16b8749 Improved error messages in transaction voiding. --- diff --git a/admin/db/voiding_db.inc b/admin/db/voiding_db.inc index 04e3d0d3..5a683135 100644 --- a/admin/db/voiding_db.inc +++ b/admin/db/voiding_db.inc @@ -20,93 +20,94 @@ function void_transaction($type, $type_no, $date_, $memo_) $void_entry = get_voided_entry($type, $type_no); if ($void_entry != null) - return false; + return _('This transaction was already voided before.'); switch ($type) { case ST_JOURNAL : // it's a journal entry if (!exists_gl_trans($type, $type_no)) - return false; + return _('Selected transaction does not exists.'); void_journal_trans($type, $type_no); break; case ST_BANKDEPOSIT : // it's a deposit case ST_BANKTRANSFER : // it's a transfer if (!check_void_bank_trans($type, $type_no)) - return false; + return _('This transaction cannot be voided because the operation would decrease account balance below allowed limit in some point of account history.'); case ST_BANKPAYMENT : // it's a payment if (!exists_bank_trans($type, $type_no)) - return false; + return _('Selected transaction does not exists.'); void_bank_trans($type, $type_no); break; case ST_CUSTPAYMENT : // it's a customer payment if (!check_void_bank_trans($type, $type_no)) - return false; + return _('This transaction cannot be voided because the operation would decrease account balance below allowed limit in some point of account history.'); case ST_SALESINVOICE : // it's a customer invoice case ST_CUSTCREDIT : // it's a customer credit note case ST_CUSTDELIVERY : // it's a customer dispatch if (!exists_customer_trans($type, $type_no)) - return false; + return _('Selected transaction does not exists.'); if ($type == ST_CUSTDELIVERY) // added 04 Oct 2008 by Joe Hunt. If delivery note has a not voided invoice, then NO. { $childs = get_sales_child_lines($type, $type_no, false); // 2011-03-17 This had been changed. Joe if ($childs && db_num_rows($childs)) - return false; + return _('This delivery cannot be voided because it was already invoiced.'); } post_void_customer_trans($type, $type_no); break; case ST_LOCTRANSFER : // it's a stock transfer if (get_stock_transfer_items($type_no) == null) - return false; + return _('Selected transaction does not exists.'); void_stock_transfer($type_no); break; case ST_INVADJUST : // it's a stock adjustment if (get_stock_adjustment_items($type_no) == null) - return false; + return _('Selected transaction does not exists.'); void_stock_adjustment($type_no); break; case ST_PURCHORDER : // it's a PO - return false; + return _('This transaction type cannot be voided.'); + break; case ST_SUPPRECEIVE : // it's a GRN if (exists_grn_on_invoices($type_no)) - return false; + return _('This GRN cannot be voided because it was already invoiced.'); 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 if (!exists_supp_trans($type, $type_no)) - return false; + return _('Selected transaction does not exists.'); if (!post_void_supp_trans($type, $type_no)) - return false; + return _('Error encountered when voiding transaction.'); break; case ST_WORKORDER : // it's a work order if (!get_work_order($type_no, true)) - return false; + return _('Selected transaction does not exists.'); void_work_order($type_no); break; case ST_MANUISSUE : // it's a work order issue if (!exists_work_order_issue($type_no)) - return false; + return _('Selected transaction does not exists.'); void_work_order_issue($type_no); break; case ST_MANURECEIVE : // it's a work order production if (!exists_work_order_produce($type_no)) - return false; + return _('Selected transaction does not exists.'); void_work_order_produce($type_no); break; case ST_SALESORDER: // it's a sales order case ST_SALESQUOTE: // it's a sales quotation - return false; + return _('This transaction type cannot be voided.'); case ST_COSTUPDATE : // it's a stock cost update - return false; + return _('This transaction type cannot be voided.'); break; } @@ -114,7 +115,7 @@ function void_transaction($type, $type_no, $date_, $memo_) add_audit_trail($type, $type_no, $date_, _("Voided.")."\n".$memo_); $Refs->restore_last($type, $type_no); add_voided_entry($type, $type_no, $date_, $memo_); - return true; + return false; } //-------------------------------------------------------------------------------------------------- diff --git a/admin/void_transaction.php b/admin/void_transaction.php index 11051607..af44b391 100644 --- a/admin/void_transaction.php +++ b/admin/void_transaction.php @@ -283,10 +283,10 @@ 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']); @@ -294,7 +294,7 @@ function handle_void_transaction() unset($_POST['date_']); } else { - display_error(_("The entered transaction does not exist or cannot be voided.")); + display_error($msg); set_focus('trans_no'); } diff --git a/gl/includes/db/gl_db_banking.inc b/gl/includes/db/gl_db_banking.inc index cd197af7..a26d92e7 100644 --- a/gl/includes/db/gl_db_banking.inc +++ b/gl/includes/db/gl_db_banking.inc @@ -536,7 +536,15 @@ function write_bank_transaction($trans_type, $trans_no, $from_account, $items, $ // old transaction can be voided only after new transaction is entered, // otherwise the operation could fail for cash accounts due to temporary negative balance if (@$old_trans) - void_transaction($trans_type, $old_trans, Today(), _("Document reentered.")); + { + $msg = void_transaction($trans_type, $old_trans, Today(), _("Document reentered.")); + if ($msg) + { + display_error($msg); + return false; + } + } + $args->trans_no = $trans_no; hook_db_postwrite($args, $trans_type);