From 4a4e032fdf10fe2eacb0d268b97bed6ff06a3915 Mon Sep 17 00:00:00 2001 From: Joe Hunt Date: Tue, 30 Jun 2009 13:55:20 +0000 Subject: [PATCH] Small adjustments --- doc/calculate_price.txt | 3 +- sales/includes/sales_db.inc | 72 ++++++++++--------------------------- 2 files changed, 21 insertions(+), 54 deletions(-) diff --git a/doc/calculate_price.txt b/doc/calculate_price.txt index 56138918..d10ae536 100644 --- a/doc/calculate_price.txt +++ b/doc/calculate_price.txt @@ -2,13 +2,14 @@ Calculate sales price from standard cost ---------------------------------------- You can have automatic sales price calculation for items that do not have any prices in Sales Prices entered. This works -independently from Base Price factor, but if Base Price is set it works together with it. +independently from the Base Price List setting, but if the factor is set in the other Sales Type Lists it works together with them. Preparing and operation ----------------------- Go into Setup tab - Company Setup. +In the field, Base for auto price calculation, set a Base Price List. In the field, Add Price from Std cost, enter the % that you want to increase from the average standard costs for the items not listed in the Item Price List. If this value is empty there are no automatic price calculations. BE aware that an increase value of 0 will calculate the price to be the same as the Std cost. So to remove the calculation, just empty the field. It will then get an internal value of -1. diff --git a/sales/includes/sales_db.inc b/sales/includes/sales_db.inc index 4756e0a8..de98c3b0 100644 --- a/sales/includes/sales_db.inc +++ b/sales/includes/sales_db.inc @@ -93,67 +93,25 @@ function get_price ($stock_id, $currency, $sales_type_id, $factor=null, $date=nu $factor = $myrow['factor']; } - $sql = "SELECT price - FROM ".TB_PREF."prices - 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); - $add_pct = get_company_pref('add_pct'); - $round_to = get_company_pref('round_to'); - $home_curr = get_company_currency(); - - if (db_num_rows($result) != 0) - { - $myrow = db_fetch_row($result); - return $myrow[0]; - } - elseif ($add_pct != -1) - { - $price = get_calculated_price($stock_id, $add_pct); - if ($currency == $home_curr) - { - if ($factor != 0) - $price *= $factor; - return round_to_nearest($price, $round_to); - } - } - if ($factor == 0) return false; // auto price calculations off - $base_id = get_base_sales_type(); - if ($base_id <= 0) return 0; // auto price calculations off - - // get all prices which we can use to guess the price. - // alternative is make up to 2 additional sql queries + $home_curr = get_company_currency(); + // AND (sales_type_id = $sales_type_id OR sales_type_id = $base_id) $sql = "SELECT price, curr_abrev, sales_type_id FROM ".TB_PREF."prices - 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); + WHERE stock_id = '$stock_id' + AND (curr_abrev = '$currency' OR curr_abrev = '$home_curr')"; + $result = db_query($sql, "There was a problem retrieving the pricing information for the part $stock_id for customer"); + $num_rows = db_num_rows($result); + $rate = round2(get_exchange_rate_from_home_currency($currency, $date), + user_exrate_dec()); + $round_to = get_company_pref('round_to'); $prices = array(); while($myrow = db_fetch($result)) { $prices[$myrow['sales_type_id']][$myrow['curr_abrev']] = $myrow['price']; } - $rate = round(get_exchange_rate_from_home_currency($currency, $date), - user_exrate_dec()); - if (db_num_rows($result) == 0 && $add_pct != -1) - { - if ($factor != 0) - $price = $price * $factor / $rate; - else - $price /= $rate; - return round_to_nearest($price, $round_to); - } - $price = false; if (isset($prices[$sales_type_id][$home_curr])) { @@ -167,9 +125,17 @@ function get_price ($stock_id, $currency, $sales_type_id, $factor=null, $date=nu { $price = $prices[$base_id][$home_curr] * $factor / $rate; } + elseif ($num_rows == 0 && $add_pct != -1) + { + $price = get_calculated_price($stock_id, $add_pct); + if ($currency != $home_curr) + $price /= $rate; + if ($factor != 0) + $price *= $factor; + } if ($price === false) - return false; - else if ($round_to != 1) + return 0; + elseif ($round_to != 1) return round_to_nearest($price, $round_to); else return round2($price, user_price_dec()); -- 2.30.2