/** * 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; } }
/** * 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; }