From: Joe Hunt Date: Wed, 4 Apr 2012 07:25:04 +0000 (+0200) Subject: 0001488: Modifying Sales Invoice (with allocations) causes negative allocations X-Git-Tag: 2.3-final~468 X-Git-Url: https://delta.frontaccounting.com/gitweb/?a=commitdiff_plain;h=d99592d2715e4fea0a4c76bb8b0a5e3e70fd90dc;p=fa-stable.git 0001488: Modifying Sales Invoice (with allocations) causes negative allocations --- diff --git a/sales/includes/db/sales_invoice_db.inc b/sales/includes/db/sales_invoice_db.inc index 558b2159..8ffd22e4 100644 --- a/sales/includes/db/sales_invoice_db.inc +++ b/sales/includes/db/sales_invoice_db.inc @@ -59,22 +59,23 @@ function write_sales_invoice(&$invoice) if (is_array($sales_order)) $sales_order = $sales_order[0]; // assume all crucial SO data are same for every delivery - $invoice_no = write_customer_trans(ST_SALESINVOICE, $trans_no, $invoice->customer_id, - $invoice->Branch, $date_, $invoice->reference, $items_total, 0, - $items_added_tax, $invoice->freight_cost, $freight_added_tax, - $invoice->sales_type, $sales_order, $invoice->ship_via, - $invoice->due_date, 0, 0, $invoice->dimension_id, - $invoice->dimension2_id, $invoice->payment); - // 2008-06-14 extra $alloc, 2008-11-12 added dimension_id Joe Hunt + if ($trans_no != 0) { + delete_comments(ST_SALESINVOICE, $trans_no); + void_gl_trans(ST_SALESINVOICE, $trans_no, true); + void_cust_allocations(ST_SALESINVOICE, $trans_no); // ? + void_trans_tax_details(ST_SALESINVOICE, $trans_no); + } + $invoice_no = write_customer_trans(ST_SALESINVOICE, $trans_no, $invoice->customer_id, + $invoice->Branch, $date_, $invoice->reference, $items_total, 0, + $items_added_tax, $invoice->freight_cost, $freight_added_tax, + $invoice->sales_type, $sales_order, $invoice->ship_via, + $invoice->due_date, 0, 0, $invoice->dimension_id, + $invoice->dimension2_id, $invoice->payment); + // 2008-06-14 extra $alloc, 2008-11-12 added dimension_id Joe Hunt if ($trans_no == 0) { $invoice->trans_no = array($invoice_no=>0); - } else { - delete_comments(ST_SALESINVOICE, $invoice_no); - void_gl_trans(ST_SALESINVOICE, $invoice_no, true); - void_cust_allocations(ST_SALESINVOICE, $invoice_no); // ? - void_trans_tax_details(ST_SALESINVOICE, $invoice_no); - } + $total = 0; foreach ($invoice->line_items as $line_no => $invoice_line) { $qty = $invoice_line->qty_dispatched;