X-Git-Url: https://delta.frontaccounting.com/gitweb/?a=blobdiff_plain;f=sales%2Fincludes%2Fdb%2Fsales_invoice_db.inc;h=90be614ef1425b867c21fac7cfb57bf49243145e;hb=f11b39846d81bd043490ba9596224b859e47467c;hp=d4fda212743ccecb616148e1a1b4526f81e1fbde;hpb=020d309dc37e9400d27ef3cad381e6f1b04f67fd;p=fa-stable.git diff --git a/sales/includes/db/sales_invoice_db.inc b/sales/includes/db/sales_invoice_db.inc index d4fda212..90be614e 100644 --- a/sales/includes/db/sales_invoice_db.inc +++ b/sales/includes/db/sales_invoice_db.inc @@ -40,6 +40,12 @@ function write_sales_invoice(&$invoice) if (!$invoice->is_prepaid()) update_customer_trans_version(get_parent_type(ST_SALESINVOICE), $invoice->src_docs); + elseif (count($invoice->prepayments)) { // partial invoice + $last_payment = end($invoice->prepayments); + $gl_date = sql2date($last_payment['tran_date']); + } else { // final invoice + $gl_date = $invoice->document_date; + } $ov_gst = 0; $taxes = $invoice->get_taxes(); // all taxes with freight_tax @@ -63,12 +69,12 @@ function write_sales_invoice(&$invoice) $sales_order = $sales_order[0]; // assume all crucial SO data are same for every delivery if ($trans_no) { - $allocs = get_payments_for($trans_no, ST_SALESINVOICE); + $allocs = get_payments_for($trans_no, ST_SALESINVOICE, $invoice->customer_id); delete_comments(ST_SALESINVOICE, $trans_no); void_gl_trans(ST_SALESINVOICE, $trans_no, true); void_trans_tax_details(ST_SALESINVOICE, $trans_no); } else - $allocs = get_payments_for($invoice->order_no, ST_SALESORDER); + $allocs = get_payments_for($invoice->order_no, ST_SALESORDER, $invoice->customer_id); if ($invoice->is_prepaid()) // selected prepayment is already in cart { @@ -204,7 +210,7 @@ function write_sales_invoice(&$invoice) update_debtor_trans_allocation(ST_CUSTPAYMENT, $pmtno, $invoice->customer_id); } } - reallocate_payments($invoice_no, ST_SALESINVOICE, $date_, $to_allocate, $allocs); + reallocate_payments($invoice_no, ST_SALESINVOICE, $date_, $to_allocate, $allocs, $invoice->customer_id); hook_db_postwrite($invoice, ST_SALESINVOICE); commit_transaction();