+ // write_customer_trans have to be called after optional void_cust_allocations above
+ $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, $invoice->tax_included, $invoice->prep_amount);
+
+ if ($trans_no == 0) {
+ $invoice->trans_no = array($invoice_no=>0);
+ } else
+ move_trans_attachments(ST_SALESINVOICE, $trans_no, $invoice_no);
+
+ $total = 0;
+ // for prepayments use deferred income account if set
+ $sales_account = $invoice->is_prepaid() ? get_company_pref('deferred_income_act') : 0;
+
+ foreach ($invoice->line_items as $line_no => $invoice_line) {
+ $qty = $invoice_line->qty_dispatched;
+ $line_taxfree_price = get_tax_free_price_for_item($invoice_line->stock_id,
+ $invoice_line->price * $qty, 0, $invoice->tax_included,
+ $invoice->tax_group_array);
+
+ $line_tax = get_full_price_for_item($invoice_line->stock_id,
+ $invoice_line->price * $qty, 0, $invoice->tax_included,
+ $invoice->tax_group_array) - $line_taxfree_price;
+
+ write_customer_trans_detail_item(ST_SALESINVOICE, $invoice_no, $invoice_line->stock_id,
+ $invoice_line->item_description, $invoice_line->qty_dispatched,
+ $invoice_line->line_price(), $qty ? $line_tax/$qty : 0, $invoice_line->discount_percent,
+ $invoice_line->standard_cost, $invoice_line->src_id,
+ $trans_no ? $invoice_line->id : 0);
+
+ // Update delivery items for the quantity invoiced
+ if ($invoice_line->qty_old != $invoice_line->qty_dispatched)
+ {
+ if ($invoice->is_prepaid())
+ update_prepaid_so_line($invoice_line->src_id, $invoice_line->qty_dispatched-$invoice_line->qty_old);
+ else
+ update_parent_line(ST_SALESINVOICE, $invoice_line->src_id, ($invoice_line->qty_dispatched-$invoice_line->qty_old));
+ }
+ if ($invoice_line->qty_dispatched != 0) {
+ $stock_gl_code = get_stock_gl_code($invoice_line->stock_id);