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&amp;order_id={$order_id}&amp;no_menu=1&pop=1";
        if (vmIsJoomla('1.5', '>=')) {
            $print_url .= "&amp;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&amp;order_id={$order_id}&amp;no_menu=1&pop=1&amp;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;
	      }