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