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; }
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(); }