X-Git-Url: https://delta.frontaccounting.com/gitweb/?a=blobdiff_plain;f=sales%2Fincludes%2Fsales_db.inc;h=de98c3b0ffbc6d4a97e2f05296b78c72c493a3c0;hb=389721f442ea4dc96ba1cafd65919e717e0d8746;hp=4756e0a80cd35896dcdd397e8777dfd93fe7d310;hpb=0e24cc3519d763421aa035cb2c7ddcc7ce45bf3e;p=fa-stable.git 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());