-
- $company_data = get_company_prefs();
-
- $branch_data = get_branch_accounts($delivery->Branch);
-
- $delivery_items_total = $delivery->get_items_total_dispatch($tax_group_id);
-
- $tax_total = 0;
- $taxes = $delivery->get_taxes($tax_group_id, $charge_shipping);
- foreach ($taxes as $taxitem)
- $tax_total += $taxitem['Value'];
-
- /*Now insert the debtor_trans */
- $delivery_no = add_customer_trans(13, $delivery->customer_id, $delivery->Branch, $date_,
- $reference, $delivery_items_total, 0, $tax_total, $charge_shipping,
- $sales_type, $sales_order, 0, $ship_via, $due_date);
-
- // If balance of this delivery cancelled update sales order details quantity.
- foreach ($delivery->line_items as $delivery_line)
- {
- $line_taxfree_price = $delivery_line->taxfree_price($tax_group_id);
- /* add delivery details for _all_ lines */
- add_customer_trans_detail_item(13, $delivery_no, $delivery_line->stock_id,
- $delivery_line->item_description, $location, $date_,
- -$delivery_line->qty_dispatched, $line_taxfree_price, 0,
- $delivery_line->discount_percent, $reference, $delivery_line->standard_cost);
-
- if ($delivery_line->qty_dispatched != 0)
- {
- // Now update sales_order_details for the quantity delivered
- dispatch_sales_order_item($sales_order, $delivery_line->stock_id,
- $delivery_line->qty_dispatched, $delivery_line->id);
-
+
+ $customer = get_customer($delivery->customer_id);
+ $delivery_items_total = $delivery->get_items_total_dispatch();
+ $freight_tax = $delivery->get_shipping_tax();
+
+// mark sales order for concurrency conflicts check
+ update_sales_order_version($delivery->src_docs);
+
+ $tax_total = 0;
+ $taxes = $delivery->get_taxes(); // all taxes with freight_tax
+
+ foreach ($taxes as $taxitem) {
+ $tax_total += $taxitem['Value'];
+ }
+ /* Insert/update the debtor_trans */
+ $delivery_no = write_customer_trans(13, $trans_no, $delivery->customer_id,
+ $delivery->Branch, $delivery->document_date, $delivery->reference,
+ $delivery_items_total, 0,
+ $delivery->tax_included ? 0 : $tax_total-$freight_tax,
+ $delivery->freight_cost,
+ $delivery->tax_included ? 0 : $freight_tax,
+ $delivery->sales_type, $delivery->order_no, 0,
+ $delivery->ship_via, $delivery->due_date, 0, 0, $delivery->dimension_id, $delivery->dimension2_id);
+
+ if ($trans_no == 0) {
+ $delivery->trans_no = array($delivery_no=>0);
+ } else {
+ void_gl_trans(13, $delivery_no, true);
+ void_stock_move(13, $delivery_no);
+ void_customer_trans_tax_details(13, $delivery_no);
+ delete_comments(13, $delivery_no);
+ }
+
+ foreach ($delivery->line_items as $delivery_line) {
+ $line_price = $delivery_line->line_price();
+ $line_taxfree_price = get_tax_free_price_for_item($delivery_line->stock_id,
+ $delivery_line->price, 0, $delivery->tax_included,
+ $delivery->tax_group_array);
+
+ $line_tax = get_full_price_for_item($delivery_line->stock_id, $delivery_line->price,
+ 0, $delivery->tax_included, $delivery->tax_group_array) - $line_taxfree_price;
+
+ if ($trans_no != 0) // Inserted 2008-09-25 Joe Hunt
+ $delivery_line->standard_cost = get_standard_cost($delivery_line->stock_id);
+
+ /* add delivery details for all lines */
+ write_customer_trans_detail_item(13, $delivery_no, $delivery_line->stock_id,
+ $delivery_line->item_description, $delivery_line->qty_dispatched,
+ $delivery_line->line_price(), $line_tax,
+ $delivery_line->discount_percent, $delivery_line->standard_cost,
+ $trans_no ? $delivery_line->id : 0);
+
+ // Now update sales_order_details for the quantity delivered
+ if ($delivery_line->qty_old != $delivery_line->qty_dispatched)
+ update_parent_line(13, $delivery_line->src_id,
+ $delivery_line->qty_dispatched-$delivery_line->qty_old);
+
+ if ($delivery_line->qty_dispatched != 0) {
+ add_stock_move_customer(13, $delivery_line->stock_id, $delivery_no,
+ $delivery->Location, $delivery->document_date, $delivery->reference,
+ -$delivery_line->qty_dispatched, $delivery_line->standard_cost,1,
+ $line_price, $delivery_line->discount_percent);
+
+