/** * Store a newly created resource in storage. * * @return Response */ public function store() { $validator = Validator::make(Input::all(), Sales::$rules); if ($validator->passes()) { // Create customer if required $customer = new Customers(); if (Input::get('name')) { $customer->name = Input::get('name'); $customer->address = Input::get('address'); $customer->contact = Input::get('contact'); $customer->save(); } $sale = new Sales(); $sale->reference_no = ''; $sale->customer_id = $customer->id ? $customer->id : 0; $sale->outlet_id = $this->user->outlet_id; $sale->discount = Input::get('discount'); $sale->paid = Input::get('paid'); $sale->total = Input::get('grandtotal'); $sale->notes = Input::get('notes'); $sale->status = Input::get('paid') == Input::get('grandtotal') ? 'completed' : 'credit'; if ($sale->save()) { $sale->reference_no = 'SALE-' . date('Ymd') . '-' . str_pad($sale->id, 3, 0, STR_PAD_LEFT); $sale->save(); foreach (Input::get('cart') as $productId => $item) { $itemDiscount = 0; if ($item['discount_type'] == 'fixed') { $itemDiscount = $item['discount_amount'] * $item['quantity']; } elseif ($item['discount_type'] == 'percentage') { $itemDiscount = $item['discount_amount'] / 100 * $item['sp'] * $item['quantity']; } $salesItem = new SalesItems(); $salesItem->sales_id = $sale->id; $salesItem->product_id = $productId; $salesItem->cp = $item['cp']; $salesItem->sp = $item['sp']; $salesItem->quantity = $item['quantity']; $salesItem->total = $item['quantity'] * $item['sp'] - $itemDiscount; $salesItem->discount_type = $item['discount_type']; $salesItem->discount_amount = $item['discount_amount']; $salesItem->discount_total = $itemDiscount; $salesItem->save(); if ($this->user->outlet_id != 0) { $outletstock = OutletsStocks::where('product_id', '=', $productId)->where('outlet_id', '=', $this->user->outlet_id)->first(); $outletstock->quantity = $outletstock->quantity - $salesItem->quantity; $outletstock->save(); } else { // Update product stock $product = Products::find($productId); $product->quantity = $product->quantity - $salesItem->quantity; $product->save(); } } } return Redirect::route('sales.edit', $sale->id)->with('success', 'New sale added successfully'); } else { return Redirect::route('sales.create')->withErrors($validator)->withInput(Input::all()); } }
public static function index() { return function ($request, $response) { if ($request->session('admin')) { switch ($request->method()) { case 'GET': #echo "GET"; $sales = Sales::all(); $response->json($sales->as_array()); break; case 'POST': $data = $request->data(); $sales = new Sales(); $sales->date = $data->date; $sales->order = $data->order_id; $sales->amount = $data->amount; $sales->save(); $response->json($sales->as_array()); break; case 'DELETE': # code... echo "DELETE"; break; case 'PUT': # code... echo "PUT"; break; default: # code... break; } } else { $response->code(403); } }; }
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>"; } }
/** * Performs the work of inserting or updating the row in the database. * * If the object is new, it inserts it; otherwise an update is performed. * All related objects are also updated in this method. * * @param PropelPDO $con * @return int The number of rows affected by this insert/update and any referring fk objects' save() operations. * @throws PropelException * @see save() */ protected function doSave(PropelPDO $con) { $affectedRows = 0; // initialize var to track total num of affected rows if (!$this->alreadyInSave) { $this->alreadyInSave = true; // We call the save method on the following object(s) if they // were passed to this object by their coresponding set // method. This object relates to these object(s) by a // foreign key reference. if ($this->aUser !== null) { if ($this->aUser->isModified() || $this->aUser->isNew()) { $affectedRows += $this->aUser->save($con); } $this->setUser($this->aUser); } if ($this->aSales !== null) { if ($this->aSales->isModified() || $this->aSales->isNew()) { $affectedRows += $this->aSales->save($con); } $this->setSales($this->aSales); } if ($this->isNew()) { $this->modifiedColumns[] = PurchaseDetailPeer::ID; } // If this object has been modified, then save it to the database. if ($this->isModified()) { if ($this->isNew()) { $pk = PurchaseDetailPeer::doInsert($this, $con); $affectedRows += 1; // we are assuming that there is only 1 row per doInsert() which // should always be true here (even though technically // BasePeer::doInsert() can insert multiple rows). $this->setId($pk); //[IMV] update autoincrement primary key $this->setNew(false); } else { $affectedRows += PurchaseDetailPeer::doUpdate($this, $con); } $this->resetModified(); // [HL] After being saved an object is no longer 'modified' } $this->alreadyInSave = false; } return $affectedRows; }
public function actionAddSales() { $pid = $_POST['pid']; $saleDate = $_POST['saleDate']; $saleCount = $_POST['saleCount']; // $pid = 9; // $saleDate = '2012-03-10'; // $saleCount = 7; $sql = "SELECT * FROM product WHERE id=" . $pid; $product = Product::model()->findBySql($sql); $result = false; if ($product) { // $sql = "SELECT * FROM sales WHERE pid=".$pid." AND timestamp=".$saleDate; $sql = "SELECT * FROM sales WHERE pid=" . $pid . " AND timestamp='" . $saleDate . "'"; $haveSale = Sales::model()->findBySql($sql); // echo var_dump($haveSale); // die(); if (null == $haveSale) { // echo "yes"; $newSale = new Sales(); $newSale->pid = $pid; $newSale->count = $saleCount; $newSale->timestamp = $saleDate; $newSale->save(); $result = true; } } echo $result; }