Exemple #1
0
 public function loadModel()
 {
     if ($this->_model == null) {
         if (isset($_GET['id'])) {
             $condition = '';
             $this->_model = currency::model()->findByPk($_GET['id'], $condition);
         }
         if ($this->_model == null) {
             throw new CHttpException(404, "The requested page does not exist!");
         }
     }
     return $this->_model;
 }
Exemple #2
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);
     }
 }
Exemple #3
0
 public static function decoratePrice($price, $sign = false)
 {
     $id_currency = Yii::app()->user->getState('currency_ID');
     if (!$id_currency) {
         return $sign ? '$' . round(floatval($price), 2) : round(floatval($price), 2);
     }
     if (!($currency = currency::model()->findByPk($id_currency))) {
         return $sign ? '$' . round(floatval($price), 2) : round(floatval($price), 2);
     }
     if ($currency->iso_code == 'USD') {
         return $sign ? '$' . round(floatval($price), 2) : round(floatval($price), 2);
     }
     return $sign ? $currency->sign . round(floatval($price) * $currency->conversion_rate, 2) : round(floatval($price) * $currency->conversion_rate, 2);
 }
Exemple #4
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
              *
              */
         }
     }
 }