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); }
', 'win2', 'status=no,toolbar=no,scrollbars=yes,titlebar=no,menubar=no,resizable=yes,width=640,height=480,directories=no,location=no');"> <img src="<?php echo $mosConfig_live_site; ?> /images/M_images/printButton.png" align="ABSMIDDLE" height="16" width="16" border="0" /> <?php echo $VM_LANG->_('PHPSHOP_CHECK_OUT_THANK_YOU_PRINT_VIEW'); ?> </a> </span> </div> <?php //Inf Подключение классов учёта остатков require_once CLASSPATH . 'shop_stock/shop_stock.php'; $ps_stock = new ps_stock(); $shop_stock_history = new Shop_Stock_History(); $OrderStatus = $ps_stock->checkOrderStatus($order_id); $class = 'toggletoorderstatus'; if (!$OrderStatus) { $class .= ' dnone'; } ?> <div style="float: right;"> <?php if (strpos($db->f("ship_method_id"), "postcalc") === 0) { ?> <span class="pagenav" style="font-weight: bold;"> <a href="javascript:void window.open('/administrator/index.php?page=order.order_printdetails_blank&order_id=<?php echo $order_id;