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); }
$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