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());
 }
Exemple #3
0
 $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'];