include_once($path_to_root . "/sales/includes/db/sales_delivery_db.inc");
include_once($path_to_root . "/sales/includes/db/sales_types_db.inc");
include_once($path_to_root . "/sales/includes/db/sales_points_db.inc");
+include_once($path_to_root . "/sales/includes/db/sales_groups_db.inc");
+include_once($path_to_root . "/sales/includes/db/recurrent_invoices_db.inc");
include_once($path_to_root . "/sales/includes/db/custalloc_db.inc");
include_once($path_to_root . "/sales/includes/db/cust_trans_db.inc");
include_once($path_to_root . "/sales/includes/db/cust_trans_details_db.inc");
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, $rate);
+ PT_CUSTOMER, $customer_id, $err_msg, $rate);
}
//----------------------------------------------------------------------------------------
$myrow = get_sales_type($sales_type_id);
$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)
- 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 = ".db_escape($stock_id)."
+ AND (curr_abrev = ".db_escape($currency)." OR curr_abrev = ".db_escape($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)
+ $price = false;
+ if (isset($prices[$sales_type_id][$currency]))
{
- if ($factor != 0)
- $price = $price * $factor / $rate;
- else
- $price /= $rate;
- return round_to_nearest($price, $round_to);
+ $price = $prices[$sales_type_id][$currency];
}
-
- $price = false;
+ elseif (isset($prices[$base_id][$currency]))
+ {
+ $price = $prices[$base_id][$currency] * $factor;
+ }
+ elseif (isset($prices[$sales_type_id][$home_curr]))
+ {
+ $price = $prices[$sales_type_id][$home_curr] / $rate;
+ }
+ elseif (isset($prices[$base_id][$home_curr]))
+ {
+ $price = $prices[$base_id][$home_curr] * $factor / $rate;
+ }
+/*
if (isset($prices[$sales_type_id][$home_curr]))
{
$price = $prices[$sales_type_id][$home_curr] / $rate;
{
$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());
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
+ $src = array_keys($cart->src_docs);
+ $del_no = reset($src);
- $sql = 'UPDATE '.TB_PREF.'debtor_trans SET trans_link = ' . $del_no .
- ' WHERE type='.$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 != 10)
+ if ($cart->trans_type != ST_SALESINVOICE)
return 0;
// the rest is batch invoice specific
//--------------------------------------------------------------------------------------------------
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;
}
//--------------------------------------------------------------------------------------------------
-function update_parent_line($doc_type, $line_id, $qty_dispatched)
+function update_parent_line($doc_type, $line_id, $qty_dispatched, $auto=false)
{
$doc_type = get_parent_type($doc_type);
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";
+ SET qty_sent = qty_sent + $qty_dispatched";
+ if ($auto)
+ $sql .= ", quantity = quantity + $qty_dispatched";
+ $sql .= " WHERE id=".db_escape($line_id);
+ }
else
$sql = "UPDATE ".TB_PREF."debtor_trans_details
SET qty_done = qty_done + $qty_dispatched
- WHERE id=$line_id";
+ WHERE id=".db_escape($line_id);
}
db_query($sql, "The parent document detail record could not be updated");
return true;
{
$sql = "SELECT ".TB_PREF."locations.* FROM ".TB_PREF."stock_moves,"
.TB_PREF."locations".
- " WHERE type=".$cart->trans_type.
+ " WHERE type=".db_escape($cart->trans_type).
" AND trans_no=".key($cart->trans_no).
" AND qty!=0 ".
" AND ".TB_PREF."locations.loc_code=".TB_PREF."stock_moves.loc_code";
$cart->set_sales_type($myrow["tpe"], $myrow["sales_type"], $myrow["tax_included"],0);
$cart->set_customer($myrow["debtor_no"], $myrow["DebtorName"],
- $myrow["curr_code"], $myrow["discount"]);
+ $myrow["curr_code"], $myrow["discount"], $myrow["payment_terms"]);
$cart->set_branch($myrow["branch_code"], $myrow["tax_group_id"],
$myrow["tax_group_name"], $myrow["phone"], $myrow["email"]);