Ejemplo n.º 1
0
 public function actionCoupon()
 {
     if ($_GET['remove'] && !empty($_GET['remove'])) {
         cart_discount::model()->deleteAllByAttributes(array('discount_ID' => $_GET['remove'], 'cart_ID' => Yii::app()->user->getState('cart_ID')));
         Yii::app()->user->setFlash('cart', "voucher has been removed");
         $this->redirect(array('index'));
         exit;
     }
     if ($_POST['token'] != md5(Yii::app()->user->getStateKeyPrefix())) {
         $this->redirect(array('index'));
         exit;
     }
     if (!$_POST['code'] or empty($_POST['code'])) {
         Yii::app()->user->setFlash('cart', "voucher name can't be blank");
         $this->redirect(array('index'));
         exit;
     }
     if (!($discount = discount_entity::model()->findByAttributes(array('discount_name' => $_POST['code'])))) {
         Yii::app()->user->setFlash('cart', "voucher name not valid");
         $this->redirect(array('index'));
         exit;
     }
     $cart = cart::model()->findByPk(Yii::app()->user->getState('cart_ID'));
     if ($msg = $cart->validateDiscount($_POST['total'], $discount->discount_ID, true)) {
         Yii::app()->user->setFlash('cart', $msg);
         $this->redirect(array('index'));
         exit;
     } else {
         $cartDiscount = new cart_discount();
         $cartDiscount->cart_ID = $cart->cart_ID;
         $cartDiscount->discount_ID = $discount->discount_ID;
         $cartDiscount->save();
     }
     $this->redirect(array('index'));
 }
Ejemplo n.º 2
0
 public function actionPayment()
 {
     $cart = cart::model()->findByPk(Yii::app()->user->getState('cart_ID'));
     if (!$cart->cart_address_ID or !$cart->cart_carrier_ID) {
         $this->redirect(array('index'));
         exit;
     }
     if (!($address = address_entity::model()->findByPk($cart->cart_address_ID))) {
         $this->redirect(array('index'));
         exit;
     }
     $grandTotal = product_entity::decoratePrice($cart->getOrderTotal(), true);
     $this->render('payment', array('grandTotal' => $grandTotal));
 }
Ejemplo n.º 3
0
 public function actionChangeCurrency()
 {
     $new_currency = $_POST['id'];
     if ($new_currency and currency::model()->findByPk($new_currency)) {
         $cart = cart::model()->findByPk(Yii::app()->user->getState('cart_ID'));
         $cart->cart_currency_ID = $new_currency;
         $cart->save();
         Yii::app()->user->setState('currency_ID', $new_currency);
         Yii::app()->user->updateCookie();
         die(1);
     } else {
         die(0);
     }
 }
Ejemplo n.º 4
0
 public function actionCart()
 {
     $errors = '';
     $qty = $_GET['qty'];
     $product = $this->loadModel();
     if ($qty < 0 || $qty > 100) {
         $errors .= "Quantity Invalid \n";
     }
     $cart = cart::model()->findByPk(Yii::app()->user->getState('cart_ID'));
     if (!$cart) {
         //To do
     }
     $cart->updateQty($qty, $product->product_ID);
     Yii::app()->user->setFlash('cart', "Add {$product->product_name} to cart!");
     $this->redirect(array('cart/index'));
 }
Ejemplo n.º 5
0
 public function validateOrder($cart_ID, $order_status, $amountPaid, $paymentMethod = 'Unknown', $message = NULL, $extraVars = array(), $currency_special = NULL, $dont_touch_amount = false)
 {
     $cart = cart::model()->findByPk(intval($cart_cart));
     if ($cart and !$cart->orderExists()) {
         $order = new order_entity();
         $customer = customer_entity::model()->findByPk($cart->cart_customer_ID);
         $currency = currency::model()->findByPK($cart->cart_currency_ID);
         $order->order_carrier_ID = intval($cart->cart_carrier_ID);
         $order->order_address_ID = intval($cart->cart_address_ID);
         $order->order_cart_ID = intval($cart->cart_ID);
         $order->order_currency_ID = intval($cart->cart_currency_ID);
         $order->order_customer_ID = intval($cart->cart_customer_ID);
         $order->order_salt = $customer->customer_salt;
         $order->order_payment_method = $paymentMethod;
         $amountPaid = !$dont_touch_amount ? round(floatval($amountPaid), 2) : $amountPaid;
         $order->order_total_paid = $amountPaid;
         $order->order_total_discount = product_entity::decoratePrice($cart->getOrderTotal(2));
         $order->order_total_products = product_entity::decoratePrice($cart->getOrderTotal(1));
         $order->order_total_shipping = product_entity::decoratePrice($cart->getOrderShippingCost());
         $order->order_grand = product_entity::decoratePrice($cart->getOrderTotal());
         $order->order_delivery_ID = 0;
         $order->order_payment_date = date('Y-m-d H:i:s');
         $order->order_delivery_date = '0000-00-00 00:00:00';
         if ($order->order_total_paid < $order->order_grand) {
             $order_status = order_entity::PaymentError;
         }
         $order->order_status = $order_status;
         $res = $order->save();
         if ($res and $order->order_ID) {
             //order detail
             foreach ($cart->products as $product) {
                 $quantity = $cart->containProduct($row->product_ID);
                 $orderDetail = new order_detail();
                 $orderDetail->detail_order_ID = $order->order_ID;
                 $orderDetail->detail_product_ID = $product->product_ID;
                 $orderDetail->detail_product_name = $product->product_name;
                 if ($quantity['quantity'] > 1) {
                     $discount_ID = discount_quantity::validateQuantityDiscount($product->product_ID, $quantity['quantity']);
                     if ($discount_ID) {
                         $discountQuantity = discount_quantity::model()->findByPk($discount_ID);
                         $orderDetail->detail_quantity_discount = $currency->convert($product->product_price - $discountQuantity->applyRule($product->product_price));
                         $orderDetail->detail_quantity_discount_applied = 1;
                         $orderDetail->detail_reducetion_percent = 0;
                         $orderDetail->detail_reducetion_amount = 0;
                         $orderDetail->detail_product_price = $currency->convert($product->product_price - $orderDetail->detail_quantity_discount);
                     }
                 } else {
                     if ($product->isReduction()) {
                         if ($product->product_reducetion_percent) {
                             $orderDetail->detail_reducetion_percent = $currency->convert(floatval($product->product_price) * floatval($product->product_reducetion_percent / 100), 2);
                             $orderDetail->detail_reducetion_amount = 0;
                             $orderDetail->detail_quantity_discount = 0;
                             $orderDetail->detail_quantity_discount_applied = 2;
                             $orderDetail->detail_product_price = $currency->convert($product->product_price - $orderDetail->detail_reducetion_percent);
                         } else {
                             $orderDetail->detail_reducetion_amount = $currency->convert($product->product_reducetion_amount);
                             $orderDetail->detail_reducetion_percent = 0;
                             $orderDetail->detail_quantity_discount = 0;
                             $orderDetail->detail_quantity_discount_applied = 2;
                             $orderDetail->detail_product_price = $currency->convert($product->product_price - $orderDetail->detail_reducetion_amount);
                         }
                     } else {
                         $orderDetail->detail_reducetion_amount = 0;
                         $orderDetail->detail_reducetion_percent = 0;
                         $orderDetail->detail_quantity_discount = 0;
                         $orderDetail->detail_quantity_discount_applied = 2;
                         $orderDetail->detail_product_price = $currency->convert($product->product_price);
                     }
                 }
                 $orderDetail->order_weight = floatval($product->product_weight);
                 $orderDetail->save();
                 //update product info
                 if ($order->order_status != order_entity::PaymentError and $order->order_status != order_entity::Canceled) {
                     $product->product_quantity -= $quantity['quantity'];
                     $product->save();
                 }
             }
             //order_discount
             if (sizeof($discounts = cart_discount::items($cart->cart_ID)) >= 1) {
                 foreach ($discounts as $discount) {
                     $orderDiscount = new order_discount();
                     $orderDiscount->order_ID = $order->order_ID;
                     $orderDiscount->discount_ID = $discount['discount_ID'];
                     $orderDiscount->discount_name = $discount['discount_name'];
                     if ($discount['discount_type'] == 3) {
                         $orderDiscount->discount_value = 0;
                     } else {
                         if ($discount['discount_type'] == 2) {
                             $orderDiscount->discount_value = $currency->convert($discount['discount_value']);
                         } else {
                             if ($discounts['discount_type'] == 1) {
                                 $orderDiscount->discount_value = $currency->convert($order->order_total_products * ($discount['discount_value'] / 100));
                             }
                         }
                     }
                 }
             }
             /**
              * To do list
              * 1.Email confirm
              * 2.Product sales
              * 3.Order message
              * 4.order History
              *
              */
         }
     }
 }