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()); }
} require 'inc/class.purchase.php'; require 'inc/class.formatter.php'; $purchaseid = isset($_GET['purchase']) && is_numeric($_GET['purchase']) ? $_GET['purchase'] : false; $log = Log::getInstance(); $isValid = true; if (!$purchaseid) { $log->addError("No existen datos de Compra solicitada."); $isValid = false; } $purchase = new Purchase(); if (!$purchase->read($purchaseid)) { $log->addError("No existen datos de Compra solicitada."); $isValid = false; } $details = PurchaseDetail::getAll($purchaseid); $payments = PurchasePayment::getAll($purchaseid); include 'inc/widget/error.php'; if (isset($_POST['page']) && isset($_POST['purchase']) && !$log->isError()) { include 'inc/widget/success.php'; } if ($isValid) { ?> <form action="" method="POST" name="form1"> <table class="form"> <tr> <td class="label">Código:</td> <td><?php echo $purchase->code; ?> </td>
public function executeCheckout() { $this->user = $this->getUser()->getRaykuUser(); $voucher_id = $this->getUser()->getAttribute('voucher_id'); $offer = OfferVoucherPeer::retrieveByPK($voucher_id); //$_SESSION['offerid'] = $offer->getId(); if ($this->getRequest()->getMethod() == sfRequest::POST) { $c = new Criteria(); $c->add(ShoppingCartPeer::IS_ACTIVE, true); $c->add(ShoppingCartPeer::USER_ID, $this->user->getId()); $c->addDescendingOrderByColumn(ShoppingCartPeer::CREATED_AT); $this->cart_items = ShoppingCartPeer::doSelect($c); $purchase_detail = $this->getRequestParameter('purchase'); foreach ($purchase_detail as $index => $value) { $purchaseDetail[$index] = trim($value); } if ($purchaseDetail['name'] == '' || $purchaseDetail['email'] == '' || $purchaseDetail['address_1'] == '' || $purchaseDetail['city'] == '' || $purchaseDetail['state'] == '' || $purchaseDetail['zip'] == '' || $purchaseDetail['country'] == '' || $purchaseDetail['tel'] == '') { sfProjectConfiguration::getActive()->loadHelpers(array('Url', 'Tag')); $this->msg = "<p>Please fill in all additional information on the <b>Purchase Cart</b> page.</p>"; $this->msg .= "<p>" . link_to('Go back to the <b>Purchase Cart</b> page.', 'shop/checkoutPage') . "</p>"; } else { if (count($this->cart_items) > 0) { $count = 0; $tot_price = 0; $tot_item_price = 0; $tot_shipping_price = 0; $tot_quantity = 0; foreach ($this->cart_items as $cart_item) { $tot_price = $tot_price + $cart_item->getTotalPrice() + $cart_item->getTotalShippingCharge(); if ($tot_price > $this->user->getPoints()) { break; } $sales_detail = new SalesDetail(); $sales_detail->setItemId($cart_item->getItemId()); $sales_detail->setTotalPrice($cart_item->getTotalPrice()); $sales_detail->setTotalShippingCharge($cart_item->getTotalShippingCharge()); $sales_detail->setQuantity($cart_item->getQuantity()); $sales_detail->save(); $count++; $tot_item_price = $tot_item_price + $cart_item->getTotalPrice(); $tot_shipping_price = $tot_shipping_price + $cart_item->getTotalShippingCharge(); $tot_quantity = $tot_quantity + $cart_item->getQuantity(); $itemPurchased = ItemPeer::retrieveByPK($cart_item->getItemId()); if (empty($purchasedItems)) { $purchasedItems = $itemPurchased->getTitle(); } else { $purchasedItems = $purchasedItems . "," . $itemPurchased->getTitle(); } $cart_item->delete(); } $sales = new Sales(); if ($offer instanceof OfferVoucher) { $tot_price = $tot_price - $offer->getPrice(); //$sales->setOfferVoucherId($offer->getId()); $offer->setIsUsed(true); $offer->save(); } $sales->setTotalSalePrice($tot_price); $sales->setTotalItemPrice($tot_item_price); $sales->setTotalShippingCharge($tot_shipping_price); $sales->setQuantity($tot_quantity); $sales->setStatusId(1); $sales->save(); $this->user->setPoints($this->user->getPoints() - $tot_price); $this->user->save(); $full_name = htmlentities($purchase_detail['name']); $email = htmlentities($purchase_detail['email']); $address_1 = htmlentities($purchase_detail['address_1']); $address_2 = htmlentities($purchase_detail['address_2']); $city = htmlentities($purchase_detail['city']); $state = htmlentities($purchase_detail['state']); $zip = htmlentities($purchase_detail['zip']); $country = htmlentities($purchase_detail['country']); $tel = htmlentities($purchase_detail['tel']); $purchase_detail = new PurchaseDetail(); $purchase_detail->setFullName($full_name); $purchase_detail->setUserId($this->user->getId()); $purchase_detail->setEmail($email); $purchase_detail->setAddress1($address_1); $purchase_detail->setAddress2($address_2); $purchase_detail->setCity($city); $purchase_detail->setZip($zip); $purchase_detail->setState($state); $purchase_detail->setCountry($country); $purchase_detail->setSalesId($sales->getId()); $purchase_detail->save(); $user = $this->getUser()->getRaykuUser(); $this->mail = Mailman::createCleanMailer(); $this->mail->setSubject('Rayku.com Shoping Item Purchase Details'); $this->mail->setFrom($user->getName() . ' <' . $user->getEmail() . '>'); $to = "*****@*****.**"; $items = "<b>" . $purchasedItems . "</b>"; sfProjectConfiguration::getActive()->loadHelpers(array('Partial')); $this->mail->setBody(get_partial('purchaseitem', array('name' => $user->getName(), 'user' => $user, 'items' => $items))); $this->mail->setContentType('text/html'); $this->mail->addAddress($to); $this->mail->send(); $this->msg = "<p style='font-size:14px;color:#444444'>You have just spent " . $tot_price . "RP to purchase " . $count . " item(s).<br /><br />A Rayku administrator has been notified, and will deliver your purchase as soon as possible. Once your order has been processed, you will be notified by private message here on Rayku.<br /><br />Thanks!<br />Rayku.com Staff</p>"; $this->getUser()->setAttribute('voucher_id', null); } else { $this->msg = "<p style='font-size:14px;color:#444444'>No items in cart</p>"; } } } else { $this->msg = "<p style='font-size:14px;color:#444444'>Unauthorized access.</p>"; } }
/** * Adds an object to the instance pool. * * Propel keeps cached copies of objects in an instance pool when they are retrieved * from the database. In some cases -- especially when you override doSelect*() * methods in your stub classes -- you may need to explicitly add objects * to the cache in order to ensure that the same objects are always returned by doSelect*() * and retrieveByPK*() calls. * * @param PurchaseDetail $value A PurchaseDetail object. * @param string $key (optional) key to use for instance map (for performance boost if key was already calculated externally). */ public static function addInstanceToPool(PurchaseDetail $obj, $key = null) { if (Propel::isInstancePoolingEnabled()) { if ($key === null) { $key = (string) $obj->getId(); } // if key === null self::$instances[$key] = $obj; } }