Example #1
0
    public static function create(DB $db, Amount $denom, Purchase $p)
    {
        $prepared = $db->prepare('
			INSERT INTO `bills` (
				`entered_at`,
				`denomination`,
				`purchase_id`
			) VALUES (
				NOW(),
				:denomination,
				:purchase_id
			)
		');
        $result = $prepared->execute(array(':denomination' => $denom->get(), ':purchase_id' => $p->getId()));
        if ($result === false) {
            throw new Exception("Unable to log bill.");
        }
        return self::load($db, $db->lastInsertId());
    }
 public function executeGeneratePurchase(sfWebRequest $request)
 {
     $invoice = Doctrine_Query::create()->from('Invoice i')->where('i.id = ' . $request->getParameter('id'))->fetchOne();
     //create purchase
     $purchase = new Purchase();
     $purchase->setDate(date("Y-m-d"));
     $purchase->setPono(date('h:i:s a'));
     $purchase->save();
     //create purchase details
     foreach ($invoice->getInvoicedetail() as $invdetail) {
         $purchdetail = new PurchaseDetail();
         $purchdetail->setPurchaseId($purchase->getId());
         $purchdetail->setProductId($invdetail->getProductId());
         $purchdetail->setDescription($invdetail->getProduct()->getName());
         $purchdetail->setQty($invdetail->getQty());
         $purchdetail->setPrice(0);
         $purchdetail->setTotal(0);
         $purchdetail->setUnittotal(0);
         $purchdetail->save();
         $purchdetail->updateStockentry();
     }
     $this->redirect("purchase/view?id=" . $purchase->getId());
 }
Example #3
0
 public static function completeTransaction(Config $cfg, DB $db, Purchase $p)
 {
     $w = $cfg->getWalletProvider();
     if ($p->isCompleted()) {
         throw new Exception("completeTransaction() was attempted twice on purchase ticket: " . $p->getId());
     }
     try {
         $db->beginTransaction();
         $tx = $w->sendTransaction($p->getCustomerAddress(), $p->recalculateBitcoinAmount());
         $p->setTXID($tx->getId())->setNTXID(self::normalizeTXID($tx->getId()))->setStatus(self::COMPLETE)->setMessage($tx->getMessage())->setNotice($tx->getNotice());
         self::finalize($db, $p);
         self::save($db, $p);
         $db->commit();
     } catch (Exception $e) {
         $db->rollback();
         $erroredOut = self::load($cfg, $db, $p->getId());
         $erroredOut->setStatus(self::ERROR);
         self::save($db, $erroredOut);
         throw $e;
     }
 }