X-Git-Url: https://delta.frontaccounting.com/gitweb/?a=blobdiff_plain;f=sales%2Fincludes%2Fsales_db.inc;h=fc6f290479c1e2b64348969da51b59bab84cf068;hb=2cb57633d2f3e27b0c2b2e7448564f467e21e1fd;hp=8c74c9bfbe597194168cea6667c6725552f67c3d;hpb=3a5c989060c96623b8f621ba89f8eb4405fb1588;p=fa-stable.git diff --git a/sales/includes/sales_db.inc b/sales/includes/sales_db.inc index 8c74c9bf..fc6f2904 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,22 +45,47 @@ 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); + PT_CUSTOMER, $customer_id, $err_msg, $rate); } //---------------------------------------------------------------------------------------- +function get_calculated_price($stock_id, $add_pct) +{ + $avg = get_standard_cost($stock_id); + if ($avg == 0) + return 0; + return round2($avg * (1 + $add_pct / 100), user_price_dec()); +} + +function round_to_nearest($price, $round_to) +{ + if ($price == 0) + return 0; + $pow = pow(10, user_price_dec()); + if ($pow >= $round_to) + $mod = ($pow % $round_to); + else + $mod = ($round_to % $pow); + if ($mod != 0) + $price = ceil($price) - ($pow - $round_to) / $pow; + else + $price = ceil($price * ($pow / $round_to)) / ($pow / $round_to); + return $price; + +} + 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,61 +93,52 @@ 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); - - if (db_num_rows($result) != 0) - { - $myrow = db_fetch_row($result); - return $myrow[0]; - } - if ($factor == 0) return false; // auto price calculations off - + $add_pct = get_company_pref('add_pct'); $base_id = get_base_sales_type(); - $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 + $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()); $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; } - if (isset($prices[$base_id][$home_curr])) + elseif (isset($prices[$base_id][$home_curr])) { $price = $prices[$base_id][$home_curr] * $factor / $rate; } - - return $price === false ? false : round($price, user_price_dec()); + 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 0; + elseif ($round_to != 1) + return round_to_nearest($price, $round_to); + else + return round2($price, user_price_dec()); } //---------------------------------------------------------------------------------------- // @@ -167,7 +192,7 @@ function set_document_parent($cart) db_query($sql, 'Child document link cannot be updated'); } - if ($cart->trans_type != 10) + if ($cart->trans_type != ST_SALESINVOICE) return 0; // the rest is batch invoice specific @@ -195,7 +220,7 @@ function set_document_parent($cart) //-------------------------------------------------------------------------------------------------- function get_parent_type($type) { - $parent_types = array( 11=>10, 10=>13, 13=>30 ); + $parent_types = array( ST_CUSTCREDIT => ST_SALESINVOICE, ST_SALESINVOICE => ST_CUSTDELIVERY, ST_CUSTDELIVERY => ST_SALESORDER ); return isset($parent_types[$type]) ? $parent_types[$type] : 0; } @@ -208,7 +233,7 @@ function update_parent_line($doc_type, $line_id, $qty_dispatched) if ($doc_type==0) return false; else { - if ($doc_type==30) + if ($doc_type==ST_SALESORDER) $sql = "UPDATE ".TB_PREF."sales_order_details SET qty_sent = qty_sent + $qty_dispatched WHERE id=$line_id"; @@ -278,15 +303,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