From f3dd02a8a4c88076627aca073e9e1148cac7a4b1 Mon Sep 17 00:00:00 2001 From: Janusz Dobrowolski Date: Sun, 5 Oct 2008 17:14:14 +0000 Subject: [PATCH] Bugfix [0000063] Bad update of parent document lines after edition of sales document. --- sales/includes/cart_class.inc | 7 +++++-- sales/includes/db/sales_credit_db.inc | 11 +++++------ sales/includes/db/sales_delivery_db.inc | 2 +- sales/includes/db/sales_invoice_db.inc | 2 +- sales/includes/sales_db.inc | 2 +- 5 files changed, 13 insertions(+), 11 deletions(-) diff --git a/sales/includes/cart_class.inc b/sales/includes/cart_class.inc index 83c9e28f..78cf46a8 100644 --- a/sales/includes/cart_class.inc +++ b/sales/includes/cart_class.inc @@ -75,17 +75,17 @@ class cart function read($type, $trans_no = 0, $view=false ) { if (!is_array($trans_no)) $trans_no = array($trans_no); - if ($trans_no[0]) { if ($type == 30) { // sales order read_sales_order($trans_no[0], $this); if ($view) { // prepare for DN/IV entry for($line_no = 0; $line_no < count($this->line_items); $line_no++) { $line = &$this->line_items[$line_no]; + $line->src_id = $line->id; // save src line ids for update $line->qty_dispatched = $line->quantity - $line->qty_done; } } - } else { // derivative transaction + } else { // derivative transaction read_sales_trans($type, $trans_no, $this); if ($this->order_no) { // free hand credit notes have no order_no $sodata = get_sales_order_header($this->order_no); @@ -111,12 +111,14 @@ class cart $sign = 1; // $type==13 ? 1 : -1; // this is strange debtor_trans atavism $line = &$this->line_items[$line_no]; + $line->src_id = $srcline['id']; // save src line ids for update $line->qty_old = $line->qty_dispatched = $line->quantity; $line->quantity += $sign * ($srcline['quantity'] - $srcline['qty_done']); // add free qty on src doc } } else { for($line_no = 0; $line_no < count($this->line_items); $line_no++) { $line = &$this->line_items[$line_no]; + $line->src_id = $line->id; // save src line ids for update $line->qty_dispatched = $line->quantity; } } @@ -403,6 +405,7 @@ class line_details var $tax_type; var $tax_type_name; var $src_no; // number of src doc for this line + var $src_id; var $quantity; var $price; var $discount_percent; diff --git a/sales/includes/db/sales_credit_db.inc b/sales/includes/db/sales_credit_db.inc index c49a07f4..2f56e901 100644 --- a/sales/includes/db/sales_credit_db.inc +++ b/sales/includes/db/sales_credit_db.inc @@ -6,8 +6,8 @@ // function write_credit_note($credit_note, $write_off_acc) { - // Changed 2008-09-26 Joe Hunt ------- - $credit_invoice = count(array_keys($credit_note->src_docs)) ? reset(array_keys($credit_note->src_docs)) : 0; + $credit_invoice = is_array($credit_note->src_docs) ? + reset(array_keys($credit_note->src_docs)) : $credit_note->src_docs; $credit_date = $credit_note->document_date; $tax_group_id = $credit_note->tax_group_id; @@ -73,11 +73,10 @@ function write_credit_note($credit_note, $write_off_acc) void_stock_move(11, $credit_no); void_customer_trans_tax_details(11, $credit_no); } - if ($credit_invoice) { $invoice_alloc_balance = get_DebtorTrans_allocation_balance(10, $credit_invoice); update_customer_trans_version(get_parent_type(11), $credit_note->src_docs ); - if ($invoice_alloc_balance > 0) { /*the invoice is not already fully allocated */ + if ($invoice_alloc_balance > 0) { //the invoice is not already fully allocated $total = $credit_note_total + $credit_note->freight_cost + $items_added_tax + $freight_added_tax; @@ -98,10 +97,11 @@ function write_credit_note($credit_note, $write_off_acc) } } + foreach ($credit_note->line_items as $credit_line) { if ($credit_invoice && $credit_line->qty_dispatched!=$credit_line->qty_old ) { - update_parent_line(11, $credit_line->id,($credit_line->qty_dispatched + update_parent_line(11, $credit_line->src_id,($credit_line->qty_dispatched -$credit_line->qty_old)); } @@ -151,7 +151,6 @@ function write_credit_note($credit_note, $write_off_acc) "A tax GL posting for this credit note could not be inserted"); } } - add_comments(11, $credit_no, $credit_date, $credit_note->Comments); if ($trans_no == 0) { diff --git a/sales/includes/db/sales_delivery_db.inc b/sales/includes/db/sales_delivery_db.inc index 6b0cc5e6..11aa2f66 100644 --- a/sales/includes/db/sales_delivery_db.inc +++ b/sales/includes/db/sales_delivery_db.inc @@ -63,7 +63,7 @@ function write_sales_delivery(&$delivery,$bo_policy) // Now update sales_order_details for the quantity delivered if ($delivery_line->qty_old != $delivery_line->qty_dispatched) - update_parent_line(13, $delivery_line->id, + update_parent_line(13, $delivery_line->src_id, $delivery_line->qty_dispatched-$delivery_line->qty_old); if ($delivery_line->qty_dispatched != 0) { diff --git a/sales/includes/db/sales_invoice_db.inc b/sales/includes/db/sales_invoice_db.inc index b3dfd743..c4303fc6 100644 --- a/sales/includes/db/sales_invoice_db.inc +++ b/sales/includes/db/sales_invoice_db.inc @@ -91,7 +91,7 @@ function write_sales_invoice(&$invoice) // Update delivery items for the quantity invoiced if ($invoice_line->qty_old != $invoice_line->qty_dispatched) - update_parent_line(10, $invoice_line->id, ($invoice_line->qty_dispatched-$invoice_line->qty_old)); + update_parent_line(10, $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); diff --git a/sales/includes/sales_db.inc b/sales/includes/sales_db.inc index ffefcd20..5c4fffdb 100644 --- a/sales/includes/sales_db.inc +++ b/sales/includes/sales_db.inc @@ -125,7 +125,7 @@ function set_document_parent($cart) if (count($cart->src_docs) == 1) { // if this child document has only one parent - update child link - $del_no = reset($cart->src_docs); + $del_no = reset(array_keys($cart->src_docs)); $sql = 'UPDATE '.TB_PREF.'debtor_trans SET trans_link = ' . $del_no . ' WHERE type='.$cart->trans_type.' AND trans_no='. $inv_no ; -- 2.30.2