/** * Пересчитывает количество остатков продуктов при редактировании заказа. * @param int $orderId - id заказа. * $content - новое содержимое содержимое заказа * @return bool */ public function refreshCountAfterEdit($orderId, $content) { // Если количество товара меняется, то пересчитываем остатки продуктов из заказа. $order = $this->getOrder(' id = ' . DB::quote($orderId, true)); $order_content_old = unserialize(stripslashes($order[$orderId]['order_content'])); $order_content_new = unserialize(stripslashes($content)); $product = new Models_Product(); $codes = array(); foreach ($order_content_old as $item_old) { $codes[] = array('id' => $item_old['id'], 'code' => $item_old['code'], 'count' => $item_old['count']); } foreach ($order_content_new as $item_new) { $flag = 0; foreach ($codes as $key => $info) { if (in_array($item_new['code'], $info)) { $codes[$key] = array('id' => $item_new['id'], 'code' => $item_new['code'], 'count' => $info['count'] - $item_new['count']); $flag = 1; } } if ($flag === 0) { $codes[] = array('id' => $item_new['id'], 'code' => $item_new['code'], 'count' => $item_new['count'] * -1); } } foreach ($codes as $prod) { if ($prod['count'] > 0) { $product->increaseCountProduct($prod['id'], $prod['code'], $prod['count']); } elseif ($prod['count'] < 0) { $product->decreaseCountProduct($prod['id'], $prod['code'], abs($prod['count'])); } } $result = $flag; $args = func_get_args(); return MG::createHook(__CLASS__ . "_" . __FUNCTION__, $result, $args); }
/** * Пересчитывает количество остатков продуктов при отменении заказа. * @param int $orderId - id заказа. * @param int $status_id - новый статус заказа. * @return bool */ public function refreshCountProducts($orderId, $status_id) { // Если статус меняется на "Отменен", то пересчитываем остатки продуктов из заказа. $order = $this->getOrder(' id = ' . DB::quote($orderId, true)); // Увеличиваем колличество товаров. if ($status_id == 4) { if ($order[$orderId]['status_id'] != 4) { $order_content = unserialize(stripslashes($order[$orderId]['order_content'])); $product = new Models_Product(); foreach ($order_content as $item) { $product->increaseCountProduct($item['id'], $item['code'], $item['count']); } } } else { // Уменьшаем колличество товаров. if ($order[$orderId]['status_id'] == 4) { $order_content = unserialize(stripslashes($order[$orderId]['order_content'])); $product = new Models_Product(); foreach ($order_content as $item) { $product->decreaseCountProduct($item['id'], $item['code'], $item['count']); } } } }