X-Git-Url: https://delta.frontaccounting.com/gitweb/?a=blobdiff_plain;f=admin%2Fdb%2Fvoiding_db.inc;h=7f3ddc21c432d69b22da0cd518bc8ab407cf5799;hb=4bd7da3c640207f8c74a50377f9aa3f76338be60;hp=2869bfd80603ed5707e1d70b30e9e1b240614425;hpb=257a9e6800a4ba8bdfada30bf9eeb7ac47a73a12;p=fa-stable.git diff --git a/admin/db/voiding_db.inc b/admin/db/voiding_db.inc index 2869bfd8..7f3ddc21 100644 --- a/admin/db/voiding_db.inc +++ b/admin/db/voiding_db.inc @@ -1,13 +1,13 @@ . + See the License here . ***********************************************************************/ include_once($path_to_root . "/sales/includes/sales_db.inc"); include_once($path_to_root . "/purchasing/includes/purchasing_db.inc"); @@ -16,101 +16,129 @@ include_once($path_to_root . "/manufacturing/includes/manufacturing_db.inc"); function void_transaction($type, $type_no, $date_, $memo_) { + global $Refs; $void_entry = get_voided_entry($type, $type_no); if ($void_entry != null) - return false; + return _('This transaction was already voided before.'); switch ($type) { - case 0 : // it's a journal entry + case ST_JOURNAL : // it's a journal entry if (!exists_gl_trans($type, $type_no)) - return false; + return _('Selected transaction does not exists.'); + if ($wo = check_wo_costing($type, $type_no)) + return sprintf(_('This transaction cannot be voided because it is part of Work Order %s costs.'), $wo); void_journal_trans($type, $type_no); break; - case 1 : // it's a payment - case 2 : // it's a deposit - case 4 : // it's a transfer + case ST_BANKDEPOSIT : // it's a deposit + case ST_BANKTRANSFER : // it's a transfer + if (!check_void_bank_trans($type, $type_no)) + 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 10 : // it's a customer invoice - case 11 : // it's a customer credit note - case 12 : // it's a customer payment - case 13 : // it's a customer dispatch + case ST_CUSTPAYMENT : // it's a customer payment + if (!check_void_bank_trans($type, $type_no)) + 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 + if ($type == ST_SALESINVOICE && is_cust_invoice_credited($type_no)) + return _('This invoice cannot be voided because it was already credited.'); + 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; - if ($type == 13) // added 04 Oct 2008 by Joe Hunt. If delivery note has a not voided invoice, then NO. + 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. { - $delivery = get_customer_trans($type_no, $type); - if ($delivery['trans_link'] != 0) - { - if (get_voided_entry(10, $delivery['trans_link']) === false) - return false; + $vers = get_customer_trans_version($type, $type_no); + if ($vers[$type_no] == 1) { + $childs = get_sales_child_lines($type, $type_no, false); // 2011-03-17 This had been changed. Joe + if ($childs && db_num_rows($childs)) + return _('This delivery cannot be voided because it was already invoiced.'); } - } + } post_void_customer_trans($type, $type_no); break; - case systypes::location_transfer() : // it's a stock transfer + 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 systypes::inventory_adjustment() : // it's a stock adjustment + 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 25 : // it's a GRN - return false; - case 20 : // it's a suppler invoice - case 21 : // it's a supplier credit note - case 22 : // it's a supplier payment + case ST_PURCHORDER : // it's a PO + return _('This transaction type cannot be voided.'); + break; + + case ST_SUPPRECEIVE : // it's a GRN + if (exists_grn_on_invoices($type_no)) + return _('This GRN cannot be voided because it was already invoiced.'); + if (!post_void_supp_trans($type, $type_no)) + return _('Error encountered when voiding transaction.'); + 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 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 systypes::work_order() : // it's a work order + 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 28 : // it's a work order issue + case ST_MANUISSUE : // it's a work order issue if (!exists_work_order_issue($type_no)) - return false; + return _('Selected transaction does not exists.'); + if ($wo = check_void_wo_issue($type_no)) + return sprintf(_('Selected document cannot be voided because related Work Order %s is already closed.'), $wo); void_work_order_issue($type_no); break; - case 29 : // it's a work order production + case ST_MANURECEIVE : // it's a work order production if (!exists_work_order_produce($type_no)) - return false; + return _('Selected transaction does not exists.'); + if ($wo = check_void_wo_production($type_no)) + return sprintf(_('Selected document cannot be voided because related Work Order %s is already closed.'), $wo); void_work_order_produce($type_no); break; - case systypes::cost_update() : // it's a stock cost update - return false; + case ST_SALESORDER: // it's a sales order + case ST_SALESQUOTE: // it's a sales quotation + return _('This transaction type cannot be voided.'); + + case ST_COSTUPDATE : // it's a stock cost update + return _('This transaction type cannot be voided.'); break; } // only add an entry if it's actually been voided + 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; } //-------------------------------------------------------------------------------------------------- function get_voided_entry($type, $type_no) { - $sql = "SELECT * FROM ".TB_PREF."voided WHERE type=$type AND id=$type_no"; + $sql = "SELECT * FROM ".TB_PREF."voided WHERE type=".db_escape($type) + ." AND id=".db_escape($type_no); $result = db_query($sql, "could not query voided transaction table"); @@ -123,11 +151,11 @@ function add_voided_entry($type, $type_no, $date_, $memo_) { $date = date2sql($date_); $sql = "INSERT INTO ".TB_PREF."voided (type, id, date_, memo_) - VALUES ($type, $type_no, ".db_escape($date).", ".db_escape($memo_).")"; + VALUES (".db_escape($type).", ".db_escape($type_no).", " + .db_escape($date).", ".db_escape($memo_).")"; db_query($sql, "could not add voided transaction entry"); } //-------------------------------------------------------------------------------------------------- -?> \ No newline at end of file