public function checkout() { $cartModel = new Cart(); //Check cart is not empty $cartData = $cartModel->getCount(); if ($cartData <= 0) { $this->Session->setFlash('Your cart is empty, please back to homepage to shopping.', 'default', array(), 'success'); $this->redirect(array('controller' => 'carts', 'action' => 'view')); } //Check and save Customer data to database if ($this->request->is('post') && !empty($this->request->data)) { $this->Customer->create(); if ($this->Customer->save($this->request->data)) { $customerId = $this->Customer->getLastInsertID(); //Save data to "invoices" table $invoiceModel = new Invoice(); $invoiceData = array(); $invoiceData['Invoice']['customer_id'] = $customerId; $invoiceData['Invoice']['order_date'] = date('Y-d-m H:i:s', strtotime('+1day')); $foodModel = new Food(); $cartArray = $cartModel->readFood(); $totalPrice = $foodModel->getTotalPriceByCart($cartArray); $invoiceData['Invoice']['total_price'] = $totalPrice; $invoiceData['Invoice']['note'] = $this->request->data['Customer']['note']; $invoiceData['Invoice']['price_temp'] = $totalPrice; $invoiceData['Invoice']['price_refund'] = 0; $invoiceData['Invoice']['payment_type'] = 'Cash'; if ($invoiceModel->save($invoiceData)) { $invoiceId = $invoiceModel->getLastInsertID(); //Save data to "invoice_details" table foreach ($cartArray as $foodId => $amount) { $invoiceDetailModel = new InvoiceDetail(); $invoiceDetailData = array(); $invoiceDetailData['InvoiceDetail']['invoice_id'] = $invoiceId; $invoiceDetailData['InvoiceDetail']['food_id'] = $foodId; $invoiceDetailData['InvoiceDetail']['amount'] = $amount; $foodData = $foodModel->getFoodDataById($foodId); $invoiceDetailData['InvoiceDetail']['price'] = $foodData['Food']['price']; $invoiceDetailData['InvoiceDetail']['is_choose'] = 0; $invoiceDetailModel->save($invoiceDetailData); } //Set invoice_id to session after insert data to "invoices" table CakeSession::write('invoice_id', $invoiceId); //Remove cart ordered $cartModel->resetCart(); $this->Session->setFlash('Thanks for your ordered.', 'default', array(), 'success'); $this->redirect(array('controller' => 'customers', 'action' => 'order')); } } else { $this->Session->setFlash('Please input correct data.', 'default', array(), 'error'); } } //Show carts list $carts = $cartModel->readFood(); $foods = array(); if (null != $carts) { foreach ($carts as $foodId => $count) { $foodModel = new Food(); $food = $foodModel->read(null, $foodId); $food['Food']['count'] = $count; $foods[] = $food; } } $this->set(compact('foods')); }
public function executeGenerateInvoice(sfWebRequest $request) { $purchase = Doctrine_Query::create()->from('Purchase p')->where('p.id = ' . $request->getParameter('id'))->fetchOne(); //create purchase $invoice = new Invoice(); $invoice->setInvno(date('h:i:s a')); $invoice->setCustomerId(2); //cash $invoice->setIsTemporary(2); //new $invoice->setDate(date("Y-m-d")); $invoice->save(); //create purchase details foreach ($purchase->getPurchasedetail() as $purchdetail) { $invdetail = new InvoiceDetail(); $invdetail->setInvoiceId($invoice->getId()); $invdetail->setProductId($purchdetail->getProductId()); $invdetail->setDescription($purchdetail->getProduct()->getName()); $invdetail->setQty($purchdetail->getQty()); $invdetail->setPrice(0); $invdetail->setTotal(0); $invdetail->setUnittotal(0); $invdetail->save(); $invdetail->updateStockentry(); } $this->redirect("invoice/view?id=" . $invoice->getId()); }
$invoice->hotel = 0; $invoice->description = json_encode($passengers); $invoice->status = 0; $invc_num = $invoice->Save(); //var_dump($_POST['invoice']);exit; if ($invc_num) { // add invoice detail foreach ($_POST['invoice'] as $detail) { $invcdtl = new InvoiceDetail(); $invcdtl->invoice = $invc_num; $invcdtl->room = $detail['id']; $invcdtl->room_title = ''; $invcdtl->adult = 0; $invcdtl->child = 0; $invcdtl->amount = $detail['price']; $invcdtl->save(); } } else { $app = new AppController(); $app->Erro('متاسفانه درتکمیل فرآیند خطایی رخ داد'); } if ($_POST['paymentype'] == 'parsian') { $gt = new ParsianGateway(Parsian_PIN); $st = $gt->PinPaymentRequest($totalamont, time(), Base_URL . '?controller=bank&action=callback'); if ($st && $st['authority'] && $st['status'] == 0) { $trans = new Transaction(); $trans->amount = $totalamont; if (isset($_SESSION['user']['id'])) { $trans->user = $_SESSION['user']['id']; $trans->email = $_SESSION['user']['email']; $trans->name = $_SESSION['user']['name'];