X-Git-Url: https://delta.frontaccounting.com/gitweb/?a=blobdiff_plain;f=sales%2Fincludes%2Fdb%2Fsales_invoice_db.inc;h=a072076940326041f532f1cec17225b167b83d04;hb=15576cedd9e46caac2884c2815875e7ec9fd4802;hp=d4fda212743ccecb616148e1a1b4526f81e1fbde;hpb=95ff74b5722826544743a01daf527aa3c9efe11a;p=fa-stable.git diff --git a/sales/includes/db/sales_invoice_db.inc b/sales/includes/db/sales_invoice_db.inc index d4fda212..a0720769 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 { @@ -170,7 +176,7 @@ function write_sales_invoice(&$invoice) add_trans_tax_details(ST_SALESINVOICE, $invoice_no, $taxitem['tax_type_id'], $taxitem['rate'], $invoice->tax_included, $prepaid_factor*$taxitem['Value'], $taxitem['Net'], $ex_rate, $date_, $invoice->reference, TR_OUTPUT); - if (isset($taxitem['sales_gl_code'])) + if (isset($taxitem['sales_gl_code']) && !empty($taxitem['sales_gl_code']) && $taxitem['Value'] != 0) $total += add_gl_trans_customer(ST_SALESINVOICE, $invoice_no, $date_, $taxitem['sales_gl_code'], 0, 0, (-$taxitem['Value'])*$prepaid_factor, $invoice->customer_id, "A tax GL posting could not be inserted"); @@ -197,14 +203,14 @@ function write_sales_invoice(&$invoice) $Refs->get_next(ST_CUSTPAYMENT, null, array('customer' => $invoice->customer_id, 'branch' => $invoice->Branch, 'date' => $date_)), $amount-$discount, $discount, - _('Cash invoice').' '.$invoice_no); + $invoice->pos['pos_name'].' #'.$invoice_no); add_cust_allocation($amount, ST_CUSTPAYMENT, $pmtno, ST_SALESINVOICE, $invoice_no, $invoice->customer_id, $date_); update_debtor_trans_allocation(ST_SALESINVOICE, $invoice_no, $invoice->customer_id); 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();