Пример #1
0
 /**
  * Gives applicable Shipping charges.
  *
  * @param   integer   $subtotal  cart subtotal (after discounted amount )
  * @param   object    $vars      object with cartdetail,billing address and shipping adress details.
  *
  * @since   2.2
  * @return   returns the applicatble shipping charges
  */
 public function afterShipPrice($subtotal, $vars)
 {
     $jinput = JFactory::getApplication()->input;
     $post = $jinput->post;
     $params = JComponentHelper::getParams('com_quick2cart');
     $shippingMode = $params->get('shippingMode', 'itemLevel');
     // @TODO SET ITEM LEVEL AS DEF
     //$shippingMode = $params->get('shippingMode', 'orderLeval');
     if ($shippingMode == "orderLeval") {
         $dispatcher = JDispatcher::getInstance();
         JPluginHelper::importPlugin('qtcshipping');
         //@TODO:need to check plugim type..
         $shipresults = $dispatcher->trigger('qtcshipping', array($subtotal, $vars));
         //Call the plugin and get the result
         if (!empty($shipresults[0]['charges']) && is_numeric($shipresults[0]['charges'])) {
             $firstRes = $shipresults[0];
             $charges = (double) $firstRes['charges'];
             $detail = json_encode($firstRes);
             $post->set("order_shipping_details", $detail);
             return $charges;
         }
     } else {
         $shipChargesDetail = array();
         $shipChargesDetail['totCharges'] = 0;
         $shipChargesDetail['itemShipMethDetail'] = array();
         $qtcshiphelper = new qtcshiphelper();
         foreach ($vars->cartItemDetail as $key => $itemDetail) {
             $item_id = $itemDetail['item_id'];
             // If item has shipping methods
             if (isset($vars->selectedItemshipMeth[$item_id])) {
                 $shipMethIdForItem = $vars->selectedItemshipMeth[$item_id];
                 $itemShipMethDetail = $vars->itemsShipMethRateDetail[$shipMethIdForItem];
                 $shipMethod = array();
                 $shipMethod['client'] = $itemShipMethDetail['client'];
                 $shipMethod['methodId'] = $itemShipMethDetail['methodId'];
                 $address = new stdClass();
                 $address->billing_address = $vars->billing_address;
                 $address->shipping_address = $vars->shipping_address;
                 $address->ship_chk = $vars->ship_chk;
                 //	(Recalculate) Get selected shipping method detail.
                 $shipChargesDetail['itemShipMethDetail'][$item_id] = $shippingChargeDetail = $qtcshiphelper->getItemsShipMethods($item_id, $address, $itemDetail, $shipMethod);
                 $vars->cartItemDetail[$key]['itemShipCharges'] = !empty($shippingChargeDetail['totalShipCost']) ? $shippingChargeDetail['totalShipCost'] : $itemShipMethDetail['totalShipCost'];
                 $shipChargesDetail['totCharges'] += $vars->cartItemDetail[$key]['itemShipCharges'];
             }
         }
         $qtcOrderShipcharges = 0;
         if (!empty($shipChargesDetail)) {
             // To add against item row entry
             $post->set('itemShipMethDetail', $shipChargesDetail['itemShipMethDetail']);
             if ($shipChargesDetail['totCharges']) {
                 $qtcOrderShipcharges = $shipChargesDetail['totCharges'];
                 //$shipval = $comquick2cartHelper->calamt($shipval, $shipChargesDetail['totCharges']);
             }
         }
         return $qtcOrderShipcharges;
     }
 }
Пример #2
0
 /**
  * Method to give available shipping mehtods list and its detail for cart items.
  *
  * @param   object  $post  Post object .
  *
  * @since   2.2
  * @return   null
  */
 public function getCartItemsShiphDetail($post)
 {
     $productHelper = new productHelper();
     $itemWiseShipDetail = array();
     $shipMethodHtml = '';
     $address = new stdClass();
     $address->billing_address = $post->get('bill', array(), 'ARRAY');
     $address->shipping_address = $post->get('ship', array(), 'ARRAY');
     $address->ship_chk = $post->get('ship_chk', 0);
     $qtcshiphelper = new qtcshiphelper();
     $Quick2cartModelcart = new Quick2cartModelcart();
     $cartitems = $Quick2cartModelcart->getCartitems();
     if (!empty($cartitems)) {
         foreach ($cartitems as $citem) {
             //  Get item's shipping profile id
             $profieId = $this->getItemsShipProfileId($citem['item_id']);
             if (!empty($profieId)) {
                 // Get shipping methods list.
                 $shipMeths = $this->getShipProfileMethods($profieId);
                 if (!empty($shipMeths)) {
                     $shipDetail = array();
                     $shipMethsDetail = array();
                     $shipDetail['item_id'] = $citem['item_id'];
                     // Add current cart item detail
                     $shipDetail['itemDetail'] = $citem;
                     foreach ($shipMeths as $meth) {
                         $methodId = $meth['methodId'];
                         // $shipDetail['shippingMeths'] = $qtcshiphelper->getItemsShipMethods($citem['item_id'], $bill, $ship, $citem, $shipMeths);
                         $shipDetail['shippingMeths'][$methodId] = $qtcshiphelper->getItemsShipMethods($citem['item_id'], $address, $citem, $meth);
                     }
                     $itemWiseShipDetail[] = $shipDetail;
                 }
             }
         }
     }
     $shipMethodHtml = $this->getShipMethodHtml($itemWiseShipDetail);
     return $shipMethodHtml;
 }