Пример #1
0
 function change_item_quantity($order_id, $order_item_id, $quantity)
 {
     global $mosConfig_offset, $vmLogger;
     if (!is_numeric($quantity) || $quantity < 1) {
         return -1;
     }
     $db = new ps_DB();
     $q = "SELECT product_id, product_quantity, product_preorder ";
     $q .= "FROM #__{vm}_order_item WHERE order_id = '" . $order_id . "' ";
     $q .= "AND order_item_id = '" . addslashes($order_item_id) . "'";
     $db->query($q);
     $db->next_record();
     $product_id = $db->f('product_id');
     $prev_quantity = $db->f('product_quantity');
     $diff = $quantity - $db->f('product_quantity');
     $timestamp = time() + $mosConfig_offset * 60 * 60;
     require_once CLASSPATH . 'shop_stock/shop_stock.php';
     $ps_stock = new ps_stock();
     $scanitem = $ps_stock->getScanItem($order_id, $product_id);
     if ($scanitem['scan'] > $quantity) {
         $vmLogger->err('Не удалось изменить количество товара, в заказе имеются сканированые позиции в большем количестве');
         return -1;
     }
     // stock
     $dbs = new ps_DB();
     $q = "SELECT product_name, product_in_stock ";
     $q .= "FROM #__{vm}_product ";
     $q .= " WHERE product_id = '" . $product_id . "'";
     $dbs->query($q);
     $dbs->next_record();
     $product_name = $dbs->f('product_name');
     $preorder = intval($db->f('product_preorder'));
     if ($diff > 0) {
         // add to order
         if ($dbs->f('product_in_stock') < $diff) {
             $stock = $dbs->f('product_in_stock') < 0 ? 0 : $dbs->f('product_in_stock');
             $preorder += $diff - $stock;
         }
     } else {
         // remove from order
         $preorder -= abs($diff);
         if ($preorder < 0) {
             $preorder = 0;
         }
     }
     // Update quantity of item
     $q = "UPDATE #__{vm}_order_item ";
     $q .= "SET product_quantity = " . $quantity . ", ";
     $q .= "mdate = " . $timestamp . ", ";
     $q .= "product_preorder = " . $preorder . " ";
     $q .= "WHERE order_item_id = '" . addslashes($order_item_id) . "'";
     $db->query($q);
     $db->next_record();
     // Update Stock Level and Product Sales
     $q = "UPDATE #__{vm}_product ";
     $q .= "SET product_in_stock = product_in_stock - " . $diff;
     $q .= " WHERE product_id = '" . $product_id . "'";
     $db->query($q);
     $db->next_record();
     $q = "UPDATE #__{vm}_product ";
     $q .= "SET product_sales= product_sales + " . $diff;
     $q .= " WHERE product_id='" . $product_id . "'";
     $db->query($q);
     $db->next_record();
     $this->recalc_order($order_id);
     $this->reload_from_db = 1;
     $this->orderlog->saveLog($this->order_id, 'Изменение кол-ва товара', $product_name, $prev_quantity, $quantity);
 }
Пример #2
0
            $downloadable = false;
            $files = array();
            $dbd->query('SELECT product_id, attribute_name
  							FROM `#__{vm}_product_attribute`
  							WHERE product_id=' . $dbt->f('product_id') . ' AND attribute_name=\'download\'');
            if ($dbd->next_record()) {
                $downloadable = true;
                $dbd->query('SELECT product_id, end_date, download_max, download_id, file_name
  							FROM `#__{vm}_product_download`
  							WHERE product_id=' . $dbt->f('product_id') . ' AND order_id=\'' . $order_id . '\'');
                while ($dbd->next_record()) {
                    $files[] = $dbd->get_row();
                }
            }
            //Inf Просканированные позиции
            $scanitem = $ps_stock->getScanItem($order_id, $dbt->f("product_id"));
            $fullorderitem = '';
            if ($scanitem['scan'] == $dbt->f("product_quantity")) {
                $fullorderitem = 'fullorderitem';
            }
            ?>
			  			  <tr fullorderitem="<?php 
            echo $dbt->f("product_quantity");
            ?>
" class="<?php 
            echo $bgcolor;
            ?>
 itemrow_<?php 
            echo $dbt->f('product_id');
            ?>
 <?php