X-Git-Url: https://delta.frontaccounting.com/gitweb/?a=blobdiff_plain;f=sales%2Fincludes%2Fsales_db.inc;h=1eb5e9060371c40d786d7897e9e09acab4e8c173;hb=5363021b0a477a1332cc19598c245edd2f8afd91;hp=f653c24a6b038ebf995601f50e7884d8a3575208;hpb=fd59c60718609c1bf3240a303030167a4f1b1885;p=fa-stable.git diff --git a/sales/includes/sales_db.inc b/sales/includes/sales_db.inc index f653c24a..1eb5e906 100644 --- a/sales/includes/sales_db.inc +++ b/sales/includes/sales_db.inc @@ -1,5 +1,14 @@ . +***********************************************************************/ include_once($path_to_root . "/includes/banking.inc"); include_once($path_to_root . "/includes/db/inventory_db.inc"); include_once($path_to_root . "/sales/includes/db/sales_order_db.inc"); @@ -36,14 +45,14 @@ function add_stock_move_customer($type, $stock_id, $trans_id, $location, $date_, // $amount is in CUSTOMER'S currency function add_gl_trans_customer($type, $type_no, $date_, $account, $dimension, $dimension2, - $amount, $customer_id, $err_msg="") + $amount, $customer_id, $err_msg="", $rate=0) { if ($err_msg == "") $err_msg = "The customer GL transaction could not be inserted"; return add_gl_trans($type, $type_no, $date_, $account, $dimension, $dimension2, "", $amount, get_customer_currency($customer_id), - payment_person_types::customer(), $customer_id, $err_msg); + payment_person_types::customer(), $customer_id, $err_msg, $rate); } //---------------------------------------------------------------------------------------- @@ -51,7 +60,7 @@ function add_gl_trans_customer($type, $type_no, $date_, $account, $dimension, $d function get_price ($stock_id, $currency, $sales_type_id, $factor=null, $date=null) { if ($date == null) - $date = Today(); + $date = new_doc_date(); if ($factor === null) { @@ -59,11 +68,11 @@ function get_price ($stock_id, $currency, $sales_type_id, $factor=null, $date=nu $factor = $myrow['factor']; } - $sql = "SELECT ".TB_PREF."prices.price + $sql = "SELECT price FROM ".TB_PREF."prices - WHERE ".TB_PREF."prices.stock_id = '" . $stock_id . "' " - ." AND ".TB_PREF."prices.sales_type_id = " . $sales_type_id - ." AND ".TB_PREF."prices.curr_abrev = '$currency'"; + WHERE stock_id = '" . $stock_id . "' " + ." AND sales_type_id = " . $sales_type_id + ." AND curr_abrev = '$currency'"; $msg = "There was a problem retrieving the pricing information for the part $stock_id for customer"; $result = db_query($sql, $msg); @@ -73,21 +82,22 @@ function get_price ($stock_id, $currency, $sales_type_id, $factor=null, $date=nu $myrow = db_fetch_row($result); return $myrow[0]; } - if ($factor == 0) return 0; // auto price calculations off + if ($factor == 0) return false; // auto price calculations off $base_id = get_base_sales_type(); - $home_curr = get_company_currency(); + if ($base_id <= 0) return 0; // auto price calculations off + + $home_curr = get_company_currency(); // get all prices which we can use to guess the price. // alternative is make up to 2 additional sql queries - $sql = "SELECT ".TB_PREF."prices.price,".TB_PREF."prices.curr_abrev, - ".TB_PREF."prices.sales_type_id + $sql = "SELECT price, curr_abrev, sales_type_id FROM ".TB_PREF."prices - WHERE ".TB_PREF."prices.stock_id = '" . $stock_id . "' " - ." AND (".TB_PREF."prices.sales_type_id = " . $sales_type_id - ." OR ".TB_PREF."prices.sales_type_id = " . $base_id.")" - ." AND (".TB_PREF."prices.curr_abrev = '$currency'" - ." OR ".TB_PREF."prices.curr_abrev = '$home_curr')"; + WHERE stock_id = '" . $stock_id . "' " + ." AND (sales_type_id = " . $sales_type_id + ." OR sales_type_id = " . $base_id.")" + ." AND (curr_abrev = '$currency'" + ." OR curr_abrev = '$home_curr')"; $result = db_query($sql, $msg); @@ -99,22 +109,57 @@ function get_price ($stock_id, $currency, $sales_type_id, $factor=null, $date=nu $rate = round(get_exchange_rate_from_home_currency($currency, $date), user_exrate_dec()); - $price = 0.00; + $price = false; if (isset($prices[$sales_type_id][$home_curr])) { $price = $prices[$sales_type_id][$home_curr] / $rate; } - if (isset($prices[$base_id][$currency])) + elseif (isset($prices[$base_id][$currency])) { - $price =$prices[$base_id][$currency] * $factor; + $price = $prices[$base_id][$currency] * $factor; } - if (isset($prices[$base_id][$home_curr])) + elseif (isset($prices[$base_id][$home_curr])) { - $price =$prices[$base_id][$home_curr] * $factor / $rate; + $price = $prices[$base_id][$home_curr] * $factor / $rate; } - return round($price, user_price_dec()); + return $price === false ? false : round($price, user_price_dec()); +} +//---------------------------------------------------------------------------------------- +// +// Get price for given item or kit. +// When $std==true price is calculated as a sum of all included stock items, +// otherwise all prices set for kits and items are accepted. +// +function get_kit_price($item_code, $currency, $sales_type_id, $factor=null, + $date=null, $std = false) +{ + $kit_price = 0.00; + if (!$std) { + $kit_price = get_price( $item_code, $currency, $sales_type_id, + $factor, $date); + + if ($kit_price !== false) { + return $kit_price; + } + } + // no price for kit found, get total value of all items + $kit = get_item_kit($item_code); + + while($item = db_fetch($kit)) { + if ($item['item_code'] != $item['stock_id']) { + // foreign/kit code + $kit_price += $item['quantity'] * get_kit_price( $item['stock_id'], + $currency, $sales_type_id, $factor, $date, $std); + + } else { + // stock item + $kit_price += $item['quantity'] * get_price( $item['stock_id'], + $currency, $sales_type_id, $factor, $date); + } + } + return $kit_price; } //----------------------------------------------------------------------------- @@ -244,15 +289,7 @@ function read_sales_trans($doc_type, $trans_no, &$cart) $cart->dimension2_id = $myrow['dimension2_id']; $cart->Comments = ''; foreach ( $trans_no as $trans ) { - $coms = get_comments($doc_type,$trans); - while($row=db_fetch($coms)) { - $text = $row['memo_']; - if ($text!='') { - if ($cart->Comments!='') - $cart->Comments .= "\n"; - $cart->Comments .= $text; - } - } + $cart->Comments .= get_comments_string($doc_type,$trans); } // FIX this should be calculated sum() for multiply parents @@ -270,7 +307,8 @@ function read_sales_trans($doc_type, $trans_no, &$cart) $result = get_customer_trans_details($doc_type,$trans_no); if (db_num_rows($result) > 0) { for($line_no=0; $myrow = db_fetch($result); $line_no++) { - $cart->add_to_cart($line_no,$myrow["stock_id"],$myrow["quantity"], + $cart->line_items[$line_no] = new line_details( + $myrow["stock_id"],$myrow["quantity"], $myrow["unit_price"], $myrow["discount_percent"], $myrow["qty_done"], $myrow["standard_cost"], $myrow["StockDescription"],$myrow["id"], $myrow["debtor_trans_no"]);