From: Janusz Dobrowolski Date: Mon, 21 Dec 2009 22:19:38 +0000 (+0000) Subject: Fixed bad source document quantity update and invalid qtys during derivative document X-Git-Url: https://delta.frontaccounting.com/gitweb/?a=commitdiff_plain;h=0b8157efe04605d85857fabb1dab94109ba3c36c;p=textcart.git Fixed bad source document quantity update and invalid qtys during derivative document entry [0000184]. --- diff --git a/sales/includes/cart_class.inc b/sales/includes/cart_class.inc index 17708a4..1ba84ea 100644 --- a/sales/includes/cart_class.inc +++ b/sales/includes/cart_class.inc @@ -100,7 +100,7 @@ class cart global $SysPrefs, $Refs; if (!is_array($trans_no)) $trans_no = array($trans_no); - if ($trans_no[0]) + if ($trans_no[0]) // read old transaction { if ($type == ST_SALESORDER || $type == ST_SALESQUOTE) { // sales order || sales quotation read_sales_order($trans_no[0], $this, $type); @@ -111,7 +111,7 @@ class cart $line->qty_dispatched = $line->quantity - $line->qty_done; } } - } else { // derivative transaction + } else { // other type of sales 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, ST_SALESORDER); @@ -121,9 +121,9 @@ class cart $this->delivery_to = $sodata["deliver_to"]; $this->delivery_address = $sodata["delivery_address"]; } + // old derivative transaction edit if (!$view && ($type!=ST_CUSTCREDIT || $this->trans_link!=0)) { $src_type = get_parent_type($type); - $src_details = 0; if ($src_type == ST_SALESORDER) { // get src data from sales_orders $this->src_docs = array( $sodata['order_no']=>$sodata['version']); $srcdetails = get_sales_order_details($this->order_no, ST_SALESORDER); @@ -132,7 +132,6 @@ class cart $srcdetails = get_customer_trans_details($src_type,array_keys($this->src_docs)); } // calculate & save: qtys on other docs and free qtys on src doc - $line_no = 0; for($line_no = 0; $srcline = db_fetch($srcdetails); $line_no++) { $sign = 1; // $type==13 ? 1 : -1; // this is strange debtor_trans atavism $line = &$this->line_items[$line_no]; @@ -141,15 +140,15 @@ class cart $line->qty_old = $line->qty_dispatched = $line->quantity; $line->quantity += $sign * ($srcline['quantity'] - $srcline['qty_done']); // add free qty on src doc } - } else { + } else { // prepare qtys for derivative document entry (not used in display) 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_dispatched = $line->quantity - $line->qty_done; } } } - } else { + } else { // new document $this->trans_type = $type; $this->trans_no = 0; $this->customer_currency = get_company_currency(); diff --git a/sales/includes/sales_db.inc b/sales/includes/sales_db.inc index 5364583..22c3541 100644 --- a/sales/includes/sales_db.inc +++ b/sales/includes/sales_db.inc @@ -184,12 +184,12 @@ 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(array_keys($cart->src_docs)); + // if this child document has only one parent - update child link + $del_no = reset(array_keys($cart->src_docs)); - $sql = 'UPDATE '.TB_PREF.'debtor_trans SET trans_link = ' . $del_no . - ' WHERE type=".db_escape($cart->trans_type)." AND trans_no='. $inv_no ; - db_query($sql, 'Child document link cannot be updated'); + $sql = 'UPDATE '.TB_PREF.'debtor_trans SET trans_link = ' . $del_no . + ' WHERE type='.db_escape($cart->trans_type).' AND trans_no='. $inv_no ; + db_query($sql, 'Child document link cannot be updated'); } if ($cart->trans_type != ST_SALESINVOICE)