コード例 #1
0
ファイル: order.php プロジェクト: kostiukoleg/all4web.loc
 /**
  * Пересчитывает количество остатков продуктов при редактировании заказа.
  * @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);
 }
コード例 #2
0
ファイル: order.php プロジェクト: WinGood/24karcher
 /**
  * Пересчитывает количество остатков продуктов при отменении заказа.
  * @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']);
             }
         }
     }
 }