예제 #1
0
 public static function cancelOrder(Order $order)
 {
     if ($order->getStatus() != OrderStatus::ACTIVE) {
         self::$errorMessage = "The order cannot be canceled";
         return false;
     }
     $deal = new Deal();
     $deal->findActiveDealByOrderId($order->getId());
     $rate = new Rate();
     $rate->findById($order->getRateId());
     if ($order->getType() == OrderType::BUY) {
         $purse = self::getPurse($order->getUserId(), $rate->getSecondCurrencyId());
         $refund = $deal->getVolume() * $deal->getPrice() * (1.0 + $rate->getFee());
     } else {
         $purse = self::getPurse($order->getUserId(), $rate->getFirstCurrencyId());
         $refund = $deal->getVolume();
     }
     $purse->addValue($refund);
     $purse->save();
     $deal->delete();
     if ($order->getPart() == 0) {
         $order->setStatus(OrderStatus::CANCELLED);
     } else {
         $order->setStatus(OrderStatus::PARTIALLY_DONE);
     }
     $order->setDate(date("Y-m-d H:i:s"));
     $order->save();
     self::refreshRatePrices($rate);
     return true;
 }
예제 #2
0
 public function testSaveDelete()
 {
     Deal::truncate();
     $d = new Deal();
     $d->name = "asasdasd";
     $d->save();
     $this->assertTrue($d->id != 0);
     $this->assertTrue($d->created != null);
     $this->assertTrue($d->updated != null);
     //        $this->assertTrue($rp["deleted"] == 0);
     $d->delete();
     $this->assertTrue($d->deleted == 1);
     Deal::truncate();
 }