📄 order.php
字号:
'ip_address' => $_SESSION['customers_ip_address'] . ' - ' . $_SERVER['REMOTE_ADDR']
);
zen_db_perform(TABLE_ORDERS, $sql_data_array);
$insert_id = $db->Insert_ID();
$zco_notifier->notify('NOTIFY_ORDER_DURING_CREATE_ADDED_ORDER_HEADER', array_merge(array('orders_id' => $insert_id, 'shipping_weight' => $_SESSION['cart']->weight), $sql_data_array));
for ($i=0, $n=sizeof($zf_ot_modules); $i<$n; $i++) {
$sql_data_array = array('orders_id' => $insert_id,
'title' => $zf_ot_modules[$i]['title'],
'text' => $zf_ot_modules[$i]['text'],
'value' => $zf_ot_modules[$i]['value'],
'class' => $zf_ot_modules[$i]['code'],
'sort_order' => $zf_ot_modules[$i]['sort_order']);
zen_db_perform(TABLE_ORDERS_TOTAL, $sql_data_array);
$zco_notifier->notify('NOTIFY_ORDER_DURING_CREATE_ADDED_ORDERTOTAL_LINE_ITEM', $sql_data_array);
}
$customer_notification = (SEND_EMAILS == 'true') ? '1' : '0';
$sql_data_array = array('orders_id' => $insert_id,
'orders_status_id' => $this->info['order_status'],
'date_added' => 'now()',
'customer_notified' => $customer_notification,
'comments' => $this->info['comments']);
zen_db_perform(TABLE_ORDERS_STATUS_HISTORY, $sql_data_array);
$zco_notifier->notify('NOTIFY_ORDER_DURING_CREATE_ADDED_ORDER_COMMENT', $sql_data_array);
return($insert_id);
}
function create_add_products($zf_insert_id, $zf_mode = false) {
global $db, $currencies, $order_total_modules, $order_totals, $zco_notifier;
// initialized for the email confirmation
$this->products_ordered = '';
$this->products_ordered_html = '';
$this->subtotal = 0;
$this->total_tax = 0;
// lowstock email report
$this->email_low_stock='';
for ($i=0, $n=sizeof($this->products); $i<$n; $i++) {
$custom_insertable_text = '';
// Stock Update - Joao Correia
if (STOCK_LIMITED == 'true') {
if (DOWNLOAD_ENABLED == 'true') {
$stock_query_raw = "select p.products_quantity, pad.products_attributes_filename, p.product_is_always_free_shipping
from " . TABLE_PRODUCTS . " p
left join " . TABLE_PRODUCTS_ATTRIBUTES . " pa
on p.products_id=pa.products_id
left join " . TABLE_PRODUCTS_ATTRIBUTES_DOWNLOAD . " pad
on pa.products_attributes_id=pad.products_attributes_id
WHERE p.products_id = '" . zen_get_prid($this->products[$i]['id']) . "'";
// Will work with only one option for downloadable products
// otherwise, we have to build the query dynamically with a loop
$products_attributes = $this->products[$i]['attributes'];
if (is_array($products_attributes)) {
$stock_query_raw .= " AND pa.options_id = '" . $products_attributes[0]['option_id'] . "' AND pa.options_values_id = '" . $products_attributes[0]['value_id'] . "'";
}
$stock_values = $db->Execute($stock_query_raw);
} else {
$stock_values = $db->Execute("select * from " . TABLE_PRODUCTS . " where products_id = '" . zen_get_prid($this->products[$i]['id']) . "'");
}
$zco_notifier->notify('NOTIFY_ORDER_PROCESSING_STOCK_DECREMENT_BEGIN');
if ($stock_values->RecordCount() > 0) {
// do not decrement quantities if products_attributes_filename exists
if ((DOWNLOAD_ENABLED != 'true') || $stock_values->fields['product_is_always_free_shipping'] == 2 || (!$stock_values->fields['products_attributes_filename']) ) {
$stock_left = $stock_values->fields['products_quantity'] - $this->products[$i]['qty'];
$this->products[$i]['stock_reduce'] = $this->products[$i]['qty'];
} else {
$stock_left = $stock_values->fields['products_quantity'];
}
// $this->products[$i]['stock_value'] = $stock_values->fields['products_quantity'];
$db->Execute("update " . TABLE_PRODUCTS . " set products_quantity = '" . $stock_left . "' where products_id = '" . zen_get_prid($this->products[$i]['id']) . "'");
// if ( ($stock_left < 1) && (STOCK_ALLOW_CHECKOUT == 'false') ) {
if ($stock_left <= 0) {
// only set status to off when not displaying sold out
if (SHOW_PRODUCTS_SOLD_OUT == '0') {
$db->Execute("update " . TABLE_PRODUCTS . " set products_status = 0 where products_id = '" . zen_get_prid($this->products[$i]['id']) . "'");
}
}
// for low stock email
if ( $stock_left <= STOCK_REORDER_LEVEL ) {
// WebMakers.com Added: add to low stock email
$this->email_low_stock .= 'ID# ' . zen_get_prid($this->products[$i]['id']) . "\t\t" . $this->products[$i]['model'] . "\t\t" . $this->products[$i]['name'] . "\t\t" . ' Qty Left: ' . $stock_left . "\n";
}
}
}
// Update products_ordered (for bestsellers list)
// $db->Execute("update " . TABLE_PRODUCTS . " set products_ordered = products_ordered + " . sprintf('%d', $order->products[$i]['qty']) . " where products_id = '" . zen_get_prid($order->products[$i]['id']) . "'");
$db->Execute("update " . TABLE_PRODUCTS . " set products_ordered = products_ordered + " . sprintf('%f', $this->products[$i]['qty']) . " where products_id = '" . zen_get_prid($this->products[$i]['id']) . "'");
$zco_notifier->notify('NOTIFY_ORDER_PROCESSING_STOCK_DECREMENT_END');
$sql_data_array = array('orders_id' => $zf_insert_id,
'products_id' => zen_get_prid($this->products[$i]['id']),
'products_model' => $this->products[$i]['model'],
'products_name' => $this->products[$i]['name'],
'products_price' => $this->products[$i]['price'],
'final_price' => $this->products[$i]['final_price'],
'onetime_charges' => $this->products[$i]['onetime_charges'],
'products_tax' => $this->products[$i]['tax'],
'products_quantity' => $this->products[$i]['qty'],
'products_priced_by_attribute' => $this->products[$i]['products_priced_by_attribute'],
'product_is_free' => $this->products[$i]['product_is_free'],
'products_discount_type' => $this->products[$i]['products_discount_type'],
'products_discount_type_from' => $this->products[$i]['products_discount_type_from'],
'products_prid' => $this->products[$i]['id']);
zen_db_perform(TABLE_ORDERS_PRODUCTS, $sql_data_array);
$order_products_id = $db->Insert_ID();
$zco_notifier->notify('NOTIFY_ORDER_DURING_CREATE_ADDED_PRODUCT_LINE_ITEM', array_merge(array('orders_products_id' => $order_products_id), $sql_data_array));
$zco_notifier->notify('NOTIFY_ORDER_PROCESSING_CREDIT_ACCOUNT_UPDATE_BEGIN');
$order_total_modules->update_credit_account($i);//ICW ADDED FOR CREDIT CLASS SYSTEM
$zco_notifier->notify('NOTIFY_ORDER_PROCESSING_ATTRIBUTES_BEGIN');
//------ bof: insert customer-chosen options to order--------
$attributes_exist = '0';
$this->products_ordered_attributes = '';
if (isset($this->products[$i]['attributes'])) {
$attributes_exist = '1';
for ($j=0, $n2=sizeof($this->products[$i]['attributes']); $j<$n2; $j++) {
if (DOWNLOAD_ENABLED == 'true') {
$attributes_query = "select popt.products_options_name, poval.products_options_values_name,
pa.options_values_price, pa.price_prefix,
pa.product_attribute_is_free, pa.products_attributes_weight, pa.products_attributes_weight_prefix,
pa.attributes_discounted, pa.attributes_price_base_included, pa.attributes_price_onetime,
pa.attributes_price_factor, pa.attributes_price_factor_offset,
pa.attributes_price_factor_onetime, pa.attributes_price_factor_onetime_offset,
pa.attributes_qty_prices, pa.attributes_qty_prices_onetime,
pa.attributes_price_words, pa.attributes_price_words_free,
pa.attributes_price_letters, pa.attributes_price_letters_free,
pad.products_attributes_maxdays, pad.products_attributes_maxcount, pad.products_attributes_filename
from " . TABLE_PRODUCTS_OPTIONS . " popt, " . TABLE_PRODUCTS_OPTIONS_VALUES . " poval, " .
TABLE_PRODUCTS_ATTRIBUTES . " pa
left join " . TABLE_PRODUCTS_ATTRIBUTES_DOWNLOAD . " pad
on pa.products_attributes_id=pad.products_attributes_id
where pa.products_id = '" . zen_db_input($this->products[$i]['id']) . "'
and pa.options_id = '" . $this->products[$i]['attributes'][$j]['option_id'] . "'
and pa.options_id = popt.products_options_id
and pa.options_values_id = '" . $this->products[$i]['attributes'][$j]['value_id'] . "'
and pa.options_values_id = poval.products_options_values_id
and popt.language_id = '" . $_SESSION['languages_id'] . "'
and poval.language_id = '" . $_SESSION['languages_id'] . "'";
$attributes_values = $db->Execute($attributes_query);
} else {
$attributes_values = $db->Execute("select popt.products_options_name, poval.products_options_values_name,
pa.options_values_price, pa.price_prefix,
pa.product_attribute_is_free, pa.products_attributes_weight, pa.products_attributes_weight_prefix,
pa.attributes_discounted, pa.attributes_price_base_included, pa.attributes_price_onetime,
pa.attributes_price_factor, pa.attributes_price_factor_offset,
pa.attributes_price_factor_onetime, pa.attributes_price_factor_onetime_offset,
pa.attributes_qty_prices, pa.attributes_qty_prices_onetime,
pa.attributes_price_words, pa.attributes_price_words_free,
pa.attributes_price_letters, pa.attributes_price_letters_free
from " . TABLE_PRODUCTS_OPTIONS . " popt, " . TABLE_PRODUCTS_OPTIONS_VALUES . " poval, " . TABLE_PRODUCTS_ATTRIBUTES . " pa
where pa.products_id = '" . $this->products[$i]['id'] . "' and pa.options_id = '" . (int)$this->products[$i]['attributes'][$j]['option_id'] . "' and pa.options_id = popt.products_options_id and pa.options_values_id = '" . (int)$this->products[$i]['attributes'][$j]['value_id'] . "' and pa.options_values_id = poval.products_options_values_id and popt.language_id = '" . $_SESSION['languages_id'] . "' and poval.language_id = '" . $_SESSION['languages_id'] . "'");
}
//clr 030714 update insert query. changing to use values form $order->products for products_options_values.
$sql_data_array = array('orders_id' => $zf_insert_id,
'orders_products_id' => $order_products_id,
'products_options' => $attributes_values->fields['products_options_name'],
// 'products_options_values' => $attributes_values->fields['products_options_values_name'],
'products_options_values' => $this->products[$i]['attributes'][$j]['value'],
'options_values_price' => $attributes_values->fields['options_values_price'],
'price_prefix' => $attributes_values->fields['price_prefix'],
'product_attribute_is_free' => $attributes_values->fields['product_attribute_is_free'],
'products_attributes_weight' => $attributes_values->fields['products_attributes_weight'],
'products_attributes_weight_prefix' => $attributes_values->fields['products_attributes_weight_prefix'],
'attributes_discounted' => $attributes_values->fields['attributes_discounted'],
'attributes_price_base_included' => $attributes_values->fields['attributes_price_base_included'],
'attributes_price_onetime' => $attributes_values->fields['attributes_price_onetime'],
'attributes_price_factor' => $attributes_values->fields['attributes_price_factor'],
'attributes_price_factor_offset' => $attributes_values->fields['attributes_price_factor_offset'],
'attributes_price_factor_onetime' => $attributes_values->fields['attributes_price_factor_onetime'],
'attributes_price_factor_onetime_offset' => $attributes_values->fields['attributes_price_factor_onetime_offset'],
'attributes_qty_prices' => $attributes_values->fields['attributes_qty_prices'],
'attributes_qty_prices_onetime' => $attributes_values->fields['attributes_qty_prices_onetime'],
'attributes_price_words' => $attributes_values->fields['attributes_price_words'],
'attributes_price_words_free' => $attributes_values->fields['attributes_price_words_free'],
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -