Exemplo n.º 1
0
 public static function cancelOrder($order_code, $user)
 {
     $order_type = substr($order_code, -2, 2);
     if ('SK' != $order_type) {
         return false;
     }
     $order = Orders::getOne(array('order_code' => $order_code), 'id, order_status');
     if (1 != $order['order_status']) {
         return false;
     }
     $oid = $order['id'];
     //DB::Debug();
     $stocks = ProductsStockLock::getList("order_code='{$order_code}' AND status=0");
     ABase::log("Stocks in cancelOrder: " . serialize($stocks), 'cancel_order_');
     DB::tranBegin('Orders.cancelOrder');
     //事务开始
     OrdersLog::insert(array('order_code' => $order_code, 'ex_status' => '取消订单', 'admin' => $user, 'action' => '订单取消', 'ip' => Func::getIP(), 'create_time' => time()));
     foreach ($stocks as $stock) {
         $sid = $stock['id'];
         $product_sku = $stock['product_sku'];
         $product_num = $stock['product_num'];
         $exp_date = $stock['exp_date'];
         ProductsStock::increase("product_sku='{$product_sku}' AND exp_date='{$exp_date}'", "stock", $product_num);
         ProductsStockLock::update($sid, array('status' => 2));
     }
     Orders::update($oid, array('order_status' => 7));
     $commit_status = DB::tranEnd('Orders.cancelOrder');
 }