function add_product() { global $VM_LANG, $vmLogger, $mosConfig_offset; require_once CLASSPATH . 'ps_product_attribute.php'; require_once CLASSPATH . 'ps_product.php'; $ps_product_attribute = new ps_product_attribute(); $ps_product = new vm_ps_product(); $product_id = vmGet($_REQUEST, 'product_id'); $order_item_id = vmGet($_REQUEST, 'order_item_id'); $add_product_validate = vmGet($_REQUEST, 'add_product_validate'); $d = $_REQUEST; // Check if quantity is a numeric value if ($add_product_validate == 1) { $quantity = trim(vmGet($_REQUEST, 'product_quantity')); if (!is_numeric($quantity) || $quantity < 1) { $vmLogger->err($VM_LANG->_('PHPSHOP_ORDER_EDIT_ERROR_QUANTITY_MUST_BE_HIGHER_THAN_0')); $add_product_validate = 0; } } if ($add_product_validate == 1) { $result_attributes = $ps_product_attribute->cartGetAttributes($d); $dbp = new ps_DB(); $q = "SELECT vendor_id, product_in_stock,product_sales,product_parent_id, product_sku, product_name FROM #__{vm}_product WHERE product_id='{$product_id}'"; $dbp->query($q); $dbp->next_record(); $vendor_id = $dbp->f("vendor_id"); $product_sku = $dbp->f("product_sku"); $product_name = $dbp->f("product_name"); $product_parent_id = $dbp->f("product_parent_id"); // Read user_info_id from db $prod_weight = $ps_product->get_weight($product_id); $dbu = new ps_DB(); $q = "SELECT user_info_id FROM #__{vm}_orders WHERE order_id = '" . $this->order_id . "' "; $dbu->query($q); $dbu->next_record(); $user_info_id = $dbu->f("user_info_id"); // On r�cup�re le prix exact du produit $my_taxrate = $ps_product->get_product_taxrate($product_id, $prod_weight, $user_info_id); $product_price_arr = $this->get_adjusted_attribute_price($product_id, $quantity, $d["description"], $result_attributes); //Inf Получение стоимости товара с дочернего сайта откуда заказ $odb = new ps_DB(); $oq = "SELECT shop_id FROM #__{vm}_orders WHERE order_id = '" . $this->order_id . "'"; $odb->query($oq); $shop_id = $odb->f("shop_id"); //Inf Информация о магазине require_once CLASSPATH . 'ps_multishop.php'; $ps_multishop = new ps_multishop($this->order_id); if ($shop_id > 1) { $_product_price_arr = file_get_contents($ps_multishop->getShop_url() . "/api/productinfo.php?sku=" . $product_sku . "&order_id=" . $this->order_id); if ($_product_price_arr != -1) { $product_price_arr = unserialize($_product_price_arr); } } $product_price_arr["product_price"] = $GLOBALS['CURRENCY']->convert($product_price_arr["product_price"], $product_price_arr["product_currency"]); $product_price = $product_price_arr["product_price"]; $description = $d["description"]; $description = $this->getDescriptionWithTax($description, $product_id); // Don´t show attribute prices in descripton $product_final_price = round($product_price * ($my_taxrate + 1), 2); $product_currency = $product_price_arr["product_currency"]; $db = new ps_DB(); if ($product_parent_id > 0) { $q = "SELECT attribute_name, attribute_value, product_id "; $q .= "FROM #__{vm}_product_attribute WHERE "; $q .= "product_id='" . $product_id . "'"; $db->setQuery($q); $db->query(); while ($db->next_record()) { $description .= $db->f("attribute_name") . ": " . $db->f("attribute_value") . "; "; } } $q = "SELECT * FROM #__{vm}_order_item "; $q .= " WHERE order_id=" . $this->order_id; $db->query($q); $db->next_record(); $user_info_id = $db->f("user_info_id"); $order_status = $db->f("order_status"); $timestamp = time() + $mosConfig_offset * 60 * 60; $q = "SELECT order_item_id, product_quantity "; $q .= "FROM #__{vm}_order_item WHERE order_id = '" . $this->order_id . "' "; $q .= "AND product_id = '" . $product_id . "' "; $q .= "AND product_attribute = '" . addslashes($description) . "'"; $db->query($q); if ($db->next_record()) { $this->change_item_quantity($this->order_id, $db->f('order_item_id'), $quantity + (int) $db->f('product_quantity')); } else { $q = "INSERT INTO #__{vm}_order_item "; $q .= "(order_id, user_info_id, vendor_id, product_id, order_item_sku, order_item_name, "; $q .= "product_quantity, product_item_price, product_final_price, "; $q .= "order_item_currency, order_status, product_attribute, cdate, mdate) "; $q .= "VALUES ('"; $q .= $this->order_id . "', '"; $q .= $user_info_id . "', '"; $q .= $vendor_id . "', '"; $q .= $product_id . "', '"; $q .= $product_sku . "', '"; $q .= $db->getEscaped($product_name) . "', '"; $q .= $quantity . "', '"; $q .= $product_price . "', '"; $q .= $product_final_price . "', '"; $q .= $product_currency . "', '"; $q .= $order_status . "', '"; // added for advanced attribute storage $q .= $db->getEscaped($description) . "', '"; // END advanced attribute modifications $q .= $timestamp . "','"; $q .= $timestamp . "'"; $q .= ")"; $db->query($q); $db->next_record(); // Update Stock Level and Product Sales $q = "UPDATE #__{vm}_product "; $q .= "SET product_in_stock = product_in_stock - " . $quantity . ",\n\t\t\t\t\t\t\t\tproduct_sales= product_sales + " . $quantity; $q .= " WHERE product_id='" . $product_id . "'"; $db->query($q); } $this->recalc_order($this->order_id); $this->reload_from_db = 1; $vmLogger->info($VM_LANG->_('PHPSHOP_ORDER_EDIT_PRODUCT_ADDED')); $this->orderlog->saveLog($this->order_id, 'Добавление позиции', $product_name, 0, $quantity); } }
if ($db->next_record()) { // Print View Icon $print_url = $_SERVER['PHP_SELF'] . "?page=order.order_printdetails&order_id={$order_id}&no_menu=1&pop=1"; if (vmIsJoomla('1.5', '>=')) { $print_url .= "&tmpl=component"; } $print_url = $sess->url($print_url); $print_url = defined('_VM_IS_BACKEND') ? str_replace("index2.php", "index3.php", $print_url) : str_replace("index.php", "index2.php", $print_url); $sendmail_url = $_SERVER['PHP_SELF'] . "?page=order.order_sendmail&order_id={$order_id}&no_menu=1&pop=1&tmpl=component"; $sendmail_url = $sess->url($sendmail_url); $sendmail_url = defined('_VM_IS_BACKEND') ? str_replace("index2.php", "index3.php", $sendmail_url) : str_replace("index.php", "index2.php", $sendmail_url); ?> <?php //Inf Информация о магазине require_once CLASSPATH . 'ps_multishop.php'; $ps_multishop = new ps_multishop($order_id); ?> <style> .info_shop_name { background: #eeecc6 none repeat scroll 0 0; border: 1px solid #ccc; font-size: 25px; font-weight: bold; padding: 5px; position: fixed; right: 0; text-align: center; top: 0; width: 250px; z-index: 9999; }