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 (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))
commit_transaction();
}
+function is_cust_invoice_credited($trans_no)
+{
+ return db_num_rows(get_sales_child_lines(ST_SALESINVOICE, $trans_no));
+}
+
function get_cust_prepayment_invoice_factor($trans_no)
{
$sql = "SELECT IF(dt.prep_amount>0, dt.prep_amount/so.total ,0)