public function collectRates(Mage_Shipping_Model_Rate_Request $request) { $result = Mage::getModel('shipping/rate_result'); /* @var $result Mage_Shipping_Model_Rate_Result */ $result->append($this->_getStandardShippingRate()); $expressWeightThreshold = $this->getConfigData('express_weight_threshold'); $eligibleForExpressDelivery = true; foreach ($request->getAllItems() as $_item) { if ($_item->getWeight() > $expressWeightThreshold) { $eligibleForExpressDelivery = false; } } if ($eligibleForExpressDelivery) { $result->append($this->_getExpressShippingRate()); } if ($request->getFreeShipping()) { /** * If the request has the free shipping flag, * append a free shipping rate to the result. */ $freeShippingRate = $this->_getFreeShippingRate(); $result->append($freeShippingRate); } return $result; }
/** * Enter description here... * * @param Mage_Shipping_Model_Rate_Request $data * @return Mage_Shipping_Model_Rate_Result */ public function collectRates(Mage_Shipping_Model_Rate_Request $request) { if (!$this->getConfigFlag('active')) { return false; } $freeBoxes = 0; if ($request->getAllItems()) { foreach ($request->getAllItems() as $item) { if ($item->getProduct()->isVirtual() || $item->getParentItem()) { continue; } if ($item->getHasChildren() && $item->isShipSeparately()) { foreach ($item->getChildren() as $child) { if ($child->getFreeShipping() && !$child->getProduct()->isVirtual()) { $freeBoxes += $item->getQty() * $child->getQty(); } } } elseif ($item->getFreeShipping()) { $freeBoxes += $item->getQty(); } } } $this->setFreeBoxes($freeBoxes); $result = Mage::getModel('shipping/rate_result'); if ($this->getConfigData('type') == 'O') { // per order $shippingPrice = $this->getConfigData('price'); } elseif ($this->getConfigData('type') == 'I') { // per item $shippingPrice = $request->getPackageQty() * $this->getConfigData('price') - $this->getFreeBoxes() * $this->getConfigData('price'); } else { $shippingPrice = false; } $shippingPrice = $this->getFinalPriceWithHandlingFee($shippingPrice); if ($shippingPrice !== false) { $method = Mage::getModel('shipping/rate_result_method'); $method->setCarrier('zabstorepickup'); $method->setCarrierTitle($this->getConfigData('title')); $method->setMethod('storepickup'); $method->setMethodTitle($this->getConfigData('name')); if ($request->getFreeShipping() === true || $request->getPackageQty() == $this->getFreeBoxes()) { $shippingPrice = '0.00'; } $method->setPrice($shippingPrice); $method->setCost($shippingPrice); $address = $this->getAddress(); $additional = false; if ($address) { /**@var $address Mage_Customer_Model_Address**/ $address = $address->format('html'); $additional = Mage::helper('zab_storepickup')->__("Pickup in:") . "<br/>" . "<address>{$address}</address><br/>"; } if ($this->getConfigData('instruction')) { $additional .= $this->getConfigData('instruction'); } $method->setAdditionalInfo($additional); $result->append($method); } return $result; }
public function collectRates(Mage_Shipping_Model_Rate_Request $request) { if (!$this->getConfigFlag('active')) { return false; } $freeBoxes = 0; if ($request->getAllItems()) { foreach ($request->getAllItems() as $item) { if ($item->getFreeShipping() && !$item->getProduct()->isVirtual()) { $freeBoxes += $item->getQty(); } } } $this->setFreeBoxes($freeBoxes); $quoteId = Mage::getSingleton('core/session')->proposal_quote_id; if ($quoteId) { $price = Mage::app()->getHelper('qquoteadv')->getQquoteShipPriceById($quoteId); $result = Mage::getModel('shipping/rate_result'); /* if ($this->getConfigData('type') == 'O') { // per order $shippingPrice = $price; } elseif ($this->getConfigData('type') == 'I') { // per item $shippingPrice = ($request->getPackageQty() * $price) - ($this->getFreeBoxes() * $price); } else { $shippingPrice = false; }*/ $type = Mage::app()->getHelper('qquoteadv')->getShipTypeByQuote(); if ($type == 'O') { // per order $shippingPrice = $price; } elseif ($type == 'I') { // per item $shippingPrice = $request->getPackageQty() * $price - $this->getFreeBoxes() * $price; } else { $shippingPrice = false; } $shippingPrice = $this->getFinalPriceWithHandlingFee($shippingPrice); if ($shippingPrice !== false) { $method = Mage::getModel('shipping/rate_result_method'); $method->setCarrier('qquoteshiprate'); $method->setCarrierTitle($this->getConfigData('title')); $method->setMethod('qquoteshiprate'); if ($type == 'I') { $method->setMethodTitle('Price per Item'); } else { $method->setMethodTitle($this->getConfigData('name')); } if ($request->getFreeShipping() === true || $request->getPackageQty() == $this->getFreeBoxes()) { $shippingPrice = '0.00'; } $method->setPrice($shippingPrice); $method->setCost($shippingPrice); $result->append($method); } return $result; } return false; }
/** * Collect and get rates * * @param Mage_Shipping_Model_Rate_Request $request * @return Mage_Shipping_Model_Rate_Result|bool|null */ public function collectRates(Mage_Shipping_Model_Rate_Request $request) { if (!$this->getConfigFlag('active')) { return false; } $activeForCustomerGroup = Mage::helper('emjainteractive_shippingoption')->isShippingMethodAvailable(); if (!$activeForCustomerGroup) { return false; } $freeBoxes = 0; if ($request->getAllItems()) { foreach ($request->getAllItems() as $item) { if ($item->getProduct()->isVirtual() || $item->getParentItem()) { continue; } if ($item->getHasChildren() && $item->isShipSeparately()) { foreach ($item->getChildren() as $child) { if ($child->getFreeShipping() && !$child->getProduct()->isVirtual()) { $freeBoxes += $item->getQty() * $child->getQty(); } } } elseif ($item->getFreeShipping()) { $freeBoxes += $item->getQty(); } } } $this->setFreeBoxes($freeBoxes); $result = Mage::getModel('shipping/rate_result'); if ($this->getConfigData('type') == 'O') { // per order $shippingPrice = $this->getConfigData('price'); } elseif ($this->getConfigData('type') == 'I') { // per item $shippingPrice = $request->getPackageQty() * $this->getConfigData('price') - $this->getFreeBoxes() * $this->getConfigData('price'); } else { $shippingPrice = false; } $shippingPrice = $this->getFinalPriceWithHandlingFee($shippingPrice); if ($shippingPrice !== false) { $method = Mage::getModel('shipping/rate_result_method'); $method->setCarrier('umosaco'); $method->setCarrierTitle($this->getConfigData('title')); $method->setMethod('umosaco'); $method->setMethodTitle($this->getConfigData('name')); if ($request->getFreeShipping() === true || $request->getPackageQty() == $this->getFreeBoxes()) { $shippingPrice = '0.00'; } $method->setPrice($shippingPrice); $method->setCost($shippingPrice); $result->append($method); } return $result; }
public function collectRates(Mage_Shipping_Model_Rate_Request $request) { if (!$this->getConfigFlag('active')) { return false; } $freeBoxes = 0; if ($request->getAllItems()) { foreach ($request->getAllItems() as $item) { if ($item->getProduct()->isVirtual() || $item->getParentItem()) { continue; } if ($item->getHasChildren() && $item->isShipSeparately()) { foreach ($item->getChildren() as $child) { if ($child->getFreeShipping() && !$child->getProduct()->isVirtual()) { $freeBoxes += $item->getQty() * $child->getQty(); } } } elseif ($item->getFreeShipping()) { $freeBoxes += $item->getQty(); } } } $this->setFreeBoxes($freeBoxes); $result = Mage::getModel('shipping/rate_result'); if ($this->getConfigData('type') == 'O') { // per order $shippingPrice = $this->getConfigData('price'); } elseif ($this->getConfigData('type') == 'I') { // per item $shippingPrice = $request->getPackageQty() * $this->getConfigData('price') - $this->getFreeBoxes() * $this->getConfigData('price'); } else { $shippingPrice = false; } if (Mage_Shipping_Model_Carrier_Abstract::HANDLING_TYPE_PERCENT == $this->getConfigData('shipper_type')) { $shippingPrice = $request->getData('base_subtotal_incl_tax') * $shippingPrice / 100; } $shippingPrice = $this->getFinalPriceWithHandlingFee($shippingPrice); if ($shippingPrice !== false) { $method = Mage::getModel('shipping/rate_result_method'); $method->setCarrier('flatrate'); $method->setCarrierTitle($this->getConfigData('title')); $method->setMethod('flatrate'); $method->setMethodTitle($this->getConfigData('name')); if ($request->getFreeShipping() === true || $request->getPackageQty() == $this->getFreeBoxes()) { $shippingPrice = '0.00'; } $method->setPrice($shippingPrice); $method->setCost($shippingPrice); $result->append($method); } return $result; }
public function collectRates(Mage_Shipping_Model_Rate_Request $request) { if (!Mage::getStoreConfig('carriers/' . $this->_code . '/active')) { return false; } $destinationData = array('city' => ucwords(strtolower($request->getDestCity())), 'country_id' => $request->getDestCountryId(), 'postcode' => $request->getDestPostcode()); $quoteId = Mage::getSingleton('checkout/session')->getQuoteId(); $quote = Mage::getModel("sales/quote")->load($quoteId); $result = Mage::getModel('aramexshipping/shipping')->getRatesAndPackages($quote, true, $destinationData); $error = $result['error']; $error_msg = isset($result['error_msg']) ? 'Aramex Error: ' . $result['error_msg'] : ''; $price = $result['price']; $methodTitle = $request->getFreeShipping() ? Mage::helper('aramexshipping')->__('Free shipping applied') : ''; $handling = Mage::getStoreConfig('carriers/' . $this->_code . '/handling'); $result = Mage::getModel('shipping/rate_result'); if (!$error && $price > 0 || !$error && $request->getFreeShipping()) { $method = Mage::getModel('shipping/rate_result_method'); $method->setCarrier($this->_code); $method->setMethod($this->_code); $method->setCarrierTitle($this->getConfigData('title')); $method->setMethodTitle($methodTitle); $method->setPrice($price); $method->setCost($price); $result->append($method); } else { $error = Mage::getModel('shipping/rate_result_error'); $error->setCarrier($this->_code); $error->setCarrierTitle($this->getConfigData('title')); $error->setErrorMessage($error_msg ? $error_msg : $this->getConfigData('specificerrmsg')); $result->append($error); if ($error_msg) { Mage::helper('aramexshipping')->log($error_msg, '', 'aramex_collect_rates'); Mage::helper('aramexshipping')->sendLogEmail(array('subject' => 'Collect Rates Error Log', 'content' => $error_msg)); } } return $result; }
/** * Enter description here... * * @param Mage_Shipping_Model_Rate_Request $data * @return Mage_Shipping_Model_Rate_Result */ public function collectRates(Mage_Shipping_Model_Rate_Request $request) { if (!$this->getConfigFlag('active')) { return false; } $result = Mage::getModel('shipping/rate_result'); $packageValue = $request->getBaseCurrency()->convert($request->getPackageValue(), $request->getPackageCurrency()); $allow = $request->getFreeShipping() || $packageValue >= $this->getConfigData('cutoff_cost'); if ($allow) { $method = Mage::getModel('shipping/rate_result_method'); $method->setCarrier('freeshipping'); $method->setCarrierTitle($this->getConfigData('title')); $method->setMethod('freeshipping'); $method->setMethodTitle($this->getConfigData('name')); $method->setPrice('0.00'); $method->setCost('0.00'); $result->append($method); } return $result; }
public function collectRates(Mage_Shipping_Model_Rate_Request $request) { if (!$this->getConfigFlag('active')) { return false; } $freeBoxes = 0; if ($request->getAllItems()) { foreach ($request->getAllItems() as $item) { if ($item->getFreeShipping() && !$item->getProduct()->isVirtual()) { $freeBoxes += $item->getQty(); } } } $this->setFreeBoxes($freeBoxes); $result = Mage::getModel('shipping/rate_result'); if ($this->getConfigData('type') == 'O') { // per order $shippingPrice = $this->getConfigData('price'); } elseif ($this->getConfigData('type') == 'I') { // per item $shippingPrice = $request->getPackageQty() * $this->getConfigData('price') - $this->getFreeBoxes() * $this->getConfigData('price'); } else { $shippingPrice = false; } $shippingPrice = $this->getFinalPriceWithHandlingFee($shippingPrice); if ($shippingPrice !== false) { $method = Mage::getModel('shipping/rate_result_method'); $method->setCarrier($this->_code); $method->setCarrierTitle($this->getConfigData('title')); $method->setMethod($this->_code); $method->setMethodTitle($this->getConfigData('name')); if ($request->getFreeShipping() === true || $request->getPackageQty() == $this->getFreeBoxes()) { $shippingPrice = '0.00'; } $method->setPrice($shippingPrice); $method->setCost($shippingPrice); $result->append($method); } return $result; }
/** * Collect rates for this shipping method based on information in $request * * @param Mage_Shipping_Model_Rate_Request $data * @return Mage_Shipping_Model_Rate_Result */ public function collectRates(Mage_Shipping_Model_Rate_Request $request) { // skip if not enabled if (!Mage::getStoreConfig('carriers/' . $this->_code . '/active')) { return false; } $result = Mage::getModel('shipping/rate_result'); $packageValue = $request->getBaseCurrency()->convert($request->getPackageValue(), $request->getPackageCurrency()); $temp = array(); //get sheepla module config $sConfig = Mage::getStoreConfig('sheepla'); //if user is using dynamic pricing if ($sConfig['advanced']['use_dynamic_pricing']) { //support admin and user checkout if (Mage::getSingleton('admin/session')->isLoggedIn()) { //admin $quote = Mage::getSingleton('adminhtml/session_quote')->getQuote(); } else { //user $quote = Mage::getSingleton('checkout/session')->getQuote(); } $items = $quote->getAllVisibleItems(); $address = $quote->getShippingAddress(); try { $this->initSheeplaObjects(); $dpRates = $this->sp->getClient()->getDynamicPricing($address, $items); $availableDynamicTemplateIds = array(); foreach ($dpRates as $rate) { $availableDynamicTemplateIds[] = $rate['shipmentTemplateId']; } } catch (Exception $e) { $dpRates = false; Mage::Log('[Sheepla][' . date('Y-m-d H:i:s') . ']' . $e->getMessage()); } } else { $dpRates = false; } for ($i = 1; $i <= 10; $i++) { if ($this->getMethodConfig('allowspecific', $i)) { $availableCountries = explode(',', $this->getMethodConfig('specificcountry', $i)); if (!($availableCountries && in_array($request->getDestCountryId(), $availableCountries))) { continue; } } $shippingName = $this->getMethodConfig('name', $i); $shippingPrice = $this->getMethodConfig('price', $i); if (!empty($shippingName)) { //if dynamic pricing enabled and method is not at dpRates table, skip this method if (is_array($dpRates)) { $shippingTemplateId = $this->getMethodConfig('template_id', $i); if ($shippingTemplateId != '0' && !in_array($shippingTemplateId, $availableDynamicTemplateIds)) { continue; } } $method = Mage::getModel('shipping/rate_result_method'); $method->setCarrier('sheepla'); $method->setMethod('method_' . $i); $method->setMethodTitle($this->getMethodConfig('name', $i)); $method->setMethodDetails($this->getMethodConfig('desc', $i)); $method->setMethodDescription($this->getMethodConfig('desc', $i)); $method->setPrice(preg_replace('/,/', '.', $shippingPrice)); $method->setCost($this->getMethodConfig('cost', $i)); if (isset($sConfig['advanced']['custom_label']) && !empty($sConfig['advanced']['custom_label'])) { $method->setCarrierTitle($sConfig['advanced']['custom_label']); } else { $method->setCarrierTitle(Mage::helper('sheepla/data')->__('Robust delivery by Sheepla!')); } //dynamic price calculate if ($request->getFreeShipping() === true || $request->getPackageQty() == $this->getFreeBoxes()) { $method->setPrice('0.00'); } elseif (is_array($dpRates)) { foreach ($sConfig as $k => $v) { if ($method->getMethod() == $k) { foreach ($dpRates as $rule) { if ($rule['shipmentTemplateId'] == $v['template_id']) { $method->setPrice($rule['price']); } } } } } $temp[$this->getMethodConfig('sort_order', $i)] = $method; } } foreach ($temp as $m) { $result->append($m); } return $result; }
public function collectRates(Mage_Shipping_Model_Rate_Request $request) { try { $process = array('result' => Mage::getModel('shipping/rate_result'), 'cart.items' => array(), 'products' => array(), 'data' => array('cart.price_excluding_tax' => $request->_data['package_value_with_discount'], 'cart.price_including_tax' => $request->_data['package_value_with_discount'], 'cart.weight' => $request->_data['package_weight'], 'cart.weight.unit' => null, 'cart.quantity' => $request->_data['package_qty'], 'cart.coupon' => Mage::getSingleton('checkout/cart')->getQuote()->getCouponCode(), 'shipto.country.code' => $request->_data['dest_country_id'], 'shipto.country.name' => null, 'shipto.region.code' => $request->_data['dest_region_code'], 'shipto.postal.code' => $request->_data['dest_postcode'], 'origin.country.code' => $request->_data['country_id'], 'origin.country.name' => null, 'origin.region.code' => $request->_data['region_id'], 'origin.postal.code' => $request->_data['postcode'], 'customer.group.id' => null, 'customer.group.code' => null, 'free_shipping' => $request->getFreeShipping(), 'store.id' => $request->_data['store_id'], 'store.code' => null, 'store.name' => null, 'store.address' => null, 'store.phone' => null, 'date.timestamp' => null, 'date.year' => null, 'date.month' => null, 'date.day' => null, 'date.hour' => null, 'date.minute' => null, 'date.second' => null), 'stop_to_first_match' => TRUE, 'config' => null); // We don't need process certain products. If necessary, enable this block. $items = $request->getAllItems(); for ($i = 0, $n = count($items); $i < $n; $i++) { $item = $items[$i]; if ($item->getProduct() instanceof Mage_Catalog_Model_Product) { $process['cart.items'][$item->getId()] = $item; } } $this->_process($process); return $process['result']; } catch (Exception $e) { Mage::logException($e); } }
/** * @param Mage_Shipping_Model_Rate_Request $request * * @return Mage_Shipping_Model_Rate_Result */ protected function _getFlatRate(Mage_Shipping_Model_Rate_Request $request) { $freeBoxes = 0; if ($request->getAllItems()) { foreach ($request->getAllItems() as $item) { if ($item->getProduct()->isVirtual() || $item->getParentItem()) { continue; } if ($item->getHasChildren() && $item->isShipSeparately()) { foreach ($item->getChildren() as $child) { if ($child->getFreeShipping() && !$child->getProduct()->isVirtual()) { $freeBoxes += $item->getQty() * $child->getQty(); } } } elseif ($item->getFreeShipping()) { $freeBoxes += $item->getQty(); } } } $this->setFreeBoxes($freeBoxes); $result = Mage::getModel('shipping/rate_result'); if ($this->getConfigData('type') == 'O') { // per order $shippingPrice = $this->getConfigData('type'); } elseif ($this->getConfigData('type') == 'I') { // per item $shippingPrice = $request->getPackageQty() * $this->getConfigData('price') - $this->getFreeBoxes() * $this->getConfigData('price'); } else { $shippingPrice = 'O'; } $shippingPrice = $this->getFinalPriceWithHandlingFee($shippingPrice); if ($shippingPrice !== false) { $method = Mage::getModel('shipping/rate_result_method'); $method->setCarrier($this->_code); $method->setCarrierTitle($this->getConfigData('title')); $method->setMethod('flatrate'); $method->setMethodTitle($this->getConfigData('name')); if (count($request->getAllItems()) > 0 && ($request->getFreeShipping() === true || $request->getPackageQty() !== null && $request->getPackageQty() == $this->getFreeBoxes())) { $shippingPrice = '0.00'; } $method->setPrice($shippingPrice); $method->setCost($shippingPrice); $result->append($method); } return $result; }
/** * Enter description here... * * @param Mage_Shipping_Model_Rate_Request $data * @return Mage_Shipping_Model_Rate_Result */ public function collectRates(Mage_Shipping_Model_Rate_Request $request) { if (!$this->getConfigFlag('active')) { return false; } $freeBoxes = 0; if ($request->getAllItems()) { foreach ($request->getAllItems() as $item) { if ($item->getProduct()->isVirtual() || $item->getParentItem()) { continue; } if ($item->getHasChildren() && $item->isShipSeparately()) { foreach ($item->getChildren() as $child) { if ($child->getFreeShipping() && !$child->getProduct()->isVirtual()) { $freeBoxes += $item->getQty() * $child->getQty(); } } } elseif ($item->getFreeShipping()) { $freeBoxes += $item->getQty(); } } } $this->setFreeBoxes($freeBoxes); $result = Mage::getModel('shipping/rate_result'); if ($this->getConfigData('type') == 'O') { // per order $shippingPrice = $this->getConfigData('price'); } elseif ($this->getConfigData('type') == 'I') { // per item $shippingPrice = $request->getPackageQty() * $this->getConfigData('price') - $this->getFreeBoxes() * $this->getConfigData('price'); } else { $shippingPrice = false; } $voucher_code = Mage::getSingleton('core/session')->getData('voucher_code'); $voucher = $this->verify_voucher_code($voucher_code); if ($voucher['order_type'] == '3MM') { $shippingPrice = 18; } $shippingPrice = $this->getFinalPriceWithHandlingFee($shippingPrice); if ($shippingPrice !== false) { $method = Mage::getModel('shipping/rate_result_method'); $method->setCarrier('flatrate'); $method->setCarrierTitle($this->getConfigData('title')); $method->setMethod('flatrate'); $method->setMethodTitle($this->getConfigData('name')); if ($request->getFreeShipping() === true || $request->getPackageQty() == $this->getFreeBoxes()) { $shippingPrice = '0.00'; } $method->setPrice($shippingPrice); $method->setCost($shippingPrice); $result->append($method); } return $result; }
/** * Enter description here... * * @param FCM_Shipping_Model_Rate_Request $data * @return FCM_Shipping_Model_Rate_Result */ public function collectRates(Mage_Shipping_Model_Rate_Request $request) { /* It will check whether Express shipping method is enable or not if not it will return to calling function without executing further */ if (!$this->getConfigFlag('active')) { return false; } $freeBoxes = 0; if ($request->getAllItems()) { foreach ($request->getAllItems() as $item) { // Below line will check whether the product in question is virtual one or not if ($item->getProduct()->isVirtual() || $item->getParentItem()) { continue; } // Below line will be executed whether item in cart are shipped seperatly or not if ($item->getHasChildren() && $item->isShipSeparately()) { foreach ($item->getChildren() as $child) { if ($child->getFreeShipping() && !$child->getProduct()->isVirtual()) { $freeBoxes += $item->getQty() * $child->getQty(); } } } elseif ($item->getFreeShipping()) { $freeBoxes += $item->getQty(); } } } $this->setFreeBoxes($freeBoxes); $result = Mage::getModel('shipping/rate_result'); // this one check whether shipping will be calculated per order wise if ($this->getConfigData('type') == 'O') { $shippingPrice = $this->getConfigData('price'); } elseif ($this->getConfigData('type') == 'I') { $shippingPrice = $request->getPackageQty() * $this->getConfigData('price') - $this->getFreeBoxes() * $this->getConfigData('price'); } else { $shippingPrice = false; } $shippingPrice = $this->getFinalPriceWithHandlingFee($shippingPrice); if ($shippingPrice !== false) { $method = Mage::getModel('shipping/rate_result_method'); //Set Shipping Carrier name as Express $method->setCarrier('express'); //Fetch Express Shipping title which we have set from admin $method->setCarrierTitle($this->getConfigData('title')); //Set Shipping method name as express $method->setMethod('express'); //Fetch Express Shipping name which we have set from admin $method->setMethodTitle($this->getConfigData('name')); /* Check whether any free shipping promotion is being applied or not if free shipping applied, below condition make the shipping price as 0 */ if ($request->getFreeShipping() === true || $request->getPackageQty() == $this->getFreeBoxes()) { $shippingPrice = '0.00'; } /* set shipping Price and Cost as mention in admin configuration or Zero if any free shipping promotion rule is applied */ $method->setPrice($shippingPrice); $method->setCost($shippingPrice); /* Append this shipping method with other shipping method which are in Enable state */ $result->append($method); } return $result; }
/** * Enter description here... * * @param Mage_Shipping_Model_Rate_Request $data * @return Mage_Shipping_Model_Rate_Result */ public function collectRates(Mage_Shipping_Model_Rate_Request $request) { if (!$this->getConfigFlag('active')) { return false; } $freeBoxes = 0; if ($request->getAllItems()) { foreach ($request->getAllItems() as $item) { if ($item->getProduct()->isVirtual() || $item->getParentItem()) { continue; } if ($item->getHasChildren() && $item->isShipSeparately()) { foreach ($item->getChildren() as $child) { if ($child->getFreeShipping() && !$child->getProduct()->isVirtual()) { $freeBoxes += $item->getQty() * $child->getQty(); } } } elseif ($item->getFreeShipping()) { $freeBoxes += $item->getQty(); } } } $this->setFreeBoxes($freeBoxes); $result = Mage::getModel('shipping/rate_result'); if ($this->getConfigData('type') == 'O') { // per order $shippingPrice = $this->getConfigData('price'); } elseif ($this->getConfigData('type') == 'I') { // per item $shippingPrice = $request->getPackageQty() * $this->getConfigData('price') - $this->getFreeBoxes() * $this->getConfigData('price'); } else { $shippingPrice = false; } //$shippingPrice = $this->getFinalPriceWithHandlingFee($shippingPrice); $custom_ship = $this->get_pro_ship(); /*Mage::getSingleton('core/session', array('name'=>'frontend')); $session = Mage::getSingleton('checkout/session'); $cart_items = $session->getQuote()->getAllItems(); $_helper = Mage::helper('catalog/output'); $product_shipping_price=0; $flat_shipping_price = 0; foreach( $cart_items as $items ){ $cur_fproduct = Mage::getModel('catalog/product')->load($items->getProduct_id()); $product_shipping_price = $_helper->productAttribute($cur_fproduct, $cur_fproduct->getShippingFlatratePerProduct(), 'shipping_flatrate_per_product'); if ($product_shipping_price == '') { $flat_shipping_price += ($items) * ($this->getConfigData('price')); } }*/ //$shippingPrice = $custom_ship + $flat_shipping_price; $shippingPrice = $custom_ship; if ($shippingPrice !== false) { $method = Mage::getModel('shipping/rate_result_method'); $method->setCarrier('flatrate'); $method->setCarrierTitle($this->getConfigData('title')); $method->setMethod('flatrate'); $method->setMethodTitle($this->getConfigData('name')); if ($request->getFreeShipping() === true || $request->getPackageQty() == $this->getFreeBoxes()) { $shippingPrice = '0.00'; } $method->setPrice($shippingPrice); $method->setCost($shippingPrice); $result->append($method); } return $result; }
/** * Collect rate to get shipping method * * @param Mage_Shipping_Model_Rate_Request $request * @return Mage_Shipping_Model_Rate_Request $request */ public function collectRates(Mage_Shipping_Model_Rate_Request $request) { $result = ""; $ship_price = 0; if (!$this->getConfigFlag('active')) { return false; } $website_id = (int) $request->getWebsiteId(); // Default condition Name: Weight vs. Destination $weight = $request->getPackageWeight(); // Check Weight Limit if ($this->getConfigFlag('active_weight_limit') && $weight >= $this->getConfigData('weight_limit')) { return false; } // Condition Name: Price Vs. Destination if ($this->getConfigData('condition_name') != $this->_default_condition_name) { // The weight is now the price $weight = Mage::helper('mmshippingplus')->getOrderAmount(); } // Get country, region and postcode data $country = Mage::helper('mmshippingplus')->getCustomerCountryCode(); $region = Mage::helper('mmshippingplus')->getCustomerRegionCode(); $postcode = Mage::helper('mmshippingplus')->getCustomerPostcode(); // Free shipping by qty $freeQty = 0; if ($request->getAllItems()) { foreach ($request->getAllItems() as $item) { if ($item->getProduct()->isVirtual() || $item->getParentItem()) { continue; } if ($item->getHasChildren() && $item->isShipSeparately()) { foreach ($item->getChildren() as $child) { if ($child->getFreeShipping() && !$child->getProduct()->isVirtual()) { $freeQty += $item->getQty() * ($child->getQty() - (is_numeric($child->getFreeShipping()) ? $child->getFreeShipping() : 0)); } } } elseif ($item->getFreeShipping()) { $freeQty += $item->getQty() - (is_numeric($item->getFreeShipping()) ? $item->getFreeShipping() : 0); } } } if (!$request->getConditionName()) { $request->setConditionName($this->getConfigData('condition_name') ? $this->getConfigData('condition_name') : $this->_default_condition_name); } // Check tablerate with condition $tablerate = Mage::getModel('mmshippingplus/shippingplus')->getCollection()->setOrder('weight', 'DESC')->addFieldToFilter('website_id', array('in' => $website_id))->addFieldToFilter('dest_country', array('in' => array('*', $country)))->addFieldToFilter('dest_zip', array('in' => array('*', $postcode)))->addFieldToFilter('dest_region', array('in' => array('*', $region)))->addFieldToFilter('weight', array('lteq' => $weight))->addFieldToFilter('type', array('eq' => $this->getConfigData('condition_name'))); // Tablerate price $ship_price = $tablerate->getFirstItem()->getPrice(); // Price with shipping weight range if ($this->getConfigFlag('active_ship_kg')) { if ($this->getConfigData('ship_kg_country')) { $kg_country = explode(',', $this->getConfigData('ship_kg_country')); } $country = Mage::helper('mmshippingplus')->getCustomerCountryCode(2); if (in_array($country, $kg_country)) { if ($weight >= $this->getConfigData('ship_from_kg') && $weight <= $this->getConfigData('ship_to_kg')) { $ship_price = $this->getConfigData('ship_kg_price'); } } } // Price with shipping price range if ($this->getConfigFlag('active_ship_price')) { if ($this->getConfigData('ship_price_country')) { $price_country = explode(',', $this->getConfigData('ship_price_country')); } $country = Mage::helper('mmshippingplus')->getCustomerCountryCode(2); if (in_array($country, $price_country)) { $amount = Mage::helper('mmshippingplus')->getOrderAmount(); if ($amount >= $this->getConfigData('ship_from_price') && $amount <= $this->getConfigData('ship_to_price')) { $ship_price = $this->getConfigData('ship_price_price'); } } } if (!is_null($ship_price) && $ship_price != 0) { // Free shipping by tablerate $ship_price = $ship_price == $this->_free_ship_tablerate ? 0 : $ship_price; // Check if price has charge $charge = $tablerate->getFirstItem()->getCharge(); if ($charge > 0) { $amount = Mage::helper('mmshippingplus')->getOrderAmount(MMind_Shippingplus_Model_Config_Source_Rangeprice::TYPE_SUBTOTAL); // Charge type if ($this->getConfigData('charge_type') == MMind_Shippingplus_Model_Config_Source_Charge::TYPE_CHARGE_FIX) { // Fix price $ship_price += $charge; } else { // Percentage price $ship_price += $amount * $charge / 100; } } // Package weight and qty free shipping $oldWeight = $request->getPackageWeight(); $oldQty = $request->getPackageQty(); $request->setPackageWeight($request->getFreeMethodWeight()); $request->setPackageQty($oldQty - $freeQty); $result = Mage::getModel('shipping/rate_result'); $request->setPackageWeight($oldWeight); $request->setPackageQty($oldQty); $method = Mage::getModel('shipping/rate_result_method'); $method->setCarrier($this->_code); $method->setCarrierTitle($this->getConfigData('title')); $method->setMethod($this->_code); $method->setMethodTitle($this->getConfigData('method_name')); if ($request->getFreeShipping() === true || $request->getPackageQty() == $freeQty) { $ship_price = 0; } $method->setPrice($ship_price); $method->setCost(0); $result->append($method); return $result; } else { // View method also with zero price if ($this->getConfigData('active_shipping_zeroprice')) { // Package weight and qty free shipping $oldWeight = $request->getPackageWeight(); $oldQty = $request->getPackageQty(); $request->setPackageWeight($request->getFreeMethodWeight()); $request->setPackageQty($oldQty - $freeQty); $result = Mage::getModel('shipping/rate_result'); $request->setPackageWeight($oldWeight); $request->setPackageQty($oldQty); $method = Mage::getModel('shipping/rate_result_method'); $method->setCarrier($this->_code); $method->setCarrierTitle($this->getConfigData('title')); $method->setMethod($this->_code); $method->setMethodTitle($this->getConfigData('method_name')); $ship_price = 0; $method->setPrice($ship_price); $method->setCost(0); $result->append($method); return $result; } } }
/** * Collect shipping method price and set all data selected in config. * * @param Mage_Shipping_Model_Rate_Request $request * @return bool|false|Mage_Core_Model_Abstract */ public function collectRates(Mage_Shipping_Model_Rate_Request $request) { if (!Mage::getStoreConfig('carriers/' . $this->_code . '/active')) { return false; } $method = Mage::getModel('shipping/rate_result_method'); $result = Mage::getModel('shipping/rate_result'); if (!$this->getConfigData('ratetype')) { $price = $this->getConfigData('flatrateprice'); if ($request->getFreeShipping() === true) { $price = 0; } } else { $freeQty = 0; if ($request->getAllItems()) { $freePackageValue = 0; foreach ($request->getAllItems() as $item) { if ($item->getProduct()->isVirtual() || $item->getParentItem()) { continue; } if ($item->getHasChildren() && $item->isShipSeparately()) { foreach ($item->getChildren() as $child) { if ($child->getFreeShipping() && !$child->getProduct()->isVirtual()) { $freeShipping = is_numeric($child->getFreeShipping()) ? $child->getFreeShipping() : 0; $freeQty += $item->getQty() * ($child->getQty() - $freeShipping); } } } elseif ($item->getFreeShipping()) { $freeShipping = is_numeric($item->getFreeShipping()) ? $item->getFreeShipping() : 0; $freeQty += $item->getQty() - $freeShipping; $freePackageValue += $item->getBaseRowTotal(); } } $oldValue = $request->getPackageValue(); $request->setPackageValue($oldValue - $freePackageValue); } if ($freePackageValue) { $request->setPackageValue($request->getPackageValue() - $freePackageValue); } $conditionName = $this->getConfigData('condition_name'); $request->setConditionName($conditionName ? $conditionName : $this->_default_condition_name); $oldWeight = $request->getPackageWeight(); $oldQty = $request->getPackageQty(); $request->setPackageWeight($request->getFreeMethodWeight()); $request->setPackageQty($oldQty - $freeQty); $rate = $this->getRate($request); $request->setPackageWeight($oldWeight); $request->setPackageQty($oldQty); if (!empty($rate) && $rate['price'] >= 0) { if ($request->getFreeShipping() === true || $request->getPackageQty() == $freeQty) { $price = 0; } else { $price = $rate['price']; } } elseif (empty($rate) && $request->getFreeShipping() === true) { $request->setPackageValue($freePackageValue); $request->setPackageQty($freeQty); $rate = $this->getRate($request); if (!empty($rate) && $rate['price'] >= 0) { $price = 0; } } else { $error = Mage::getModel('shipping/rate_result_error'); $error->setCarrier($this->_code); $error->setCarrierTitle($this->getConfigData('title')); $error->setErrorMessage(Mage::helper('dpd')->__('This shipping method is currently unavailable. If you would like to ship using this shipping method, please contact us.')); $result->append($error); return $result; } } $method->setCarrier($this->_code); $method->setMethod($this->_code); $method->setMethodTitle($this->getConfigData('name')); $method->setCarrierTitle($this->getConfigData('carrier')); $method->setPrice($price); $method->setCost($price); $result->append($method); return $result; }
/** * Gets the final price of the freight * Follows the rules of free shipping * * @param Varien_Object $method * @return boolean|int|float */ protected function _getFinalPrice(Varien_Object $method, Mage_Shipping_Model_Rate_Request $request) { $freeMethod = $this->getConfigData('free_shipping_method'); if ($method->hasError() && !$method->getShowMessage() || $method->getPrice() <= 0) { return false; } if ($request->getFreeShipping() === true) { if ($freeMethod == 'lower-price') { if ($bestMethod = $this->getLowerPriceMethod($this->_getClientRequest())) { if ($bestMethod->getCode() == $method->getCode()) { return 0; } } } if ($freeMethod == $method->getCode()) { return 0; } } $finalPrice = $method->getPrice(); if ($handlingFee = $this->getConfigData('handling_fee')) { switch ($this->getConfigData('handling_type')) { case 'F': $finalPrice += $handlingFee; break; case 'P': $finalPrice = $handlingFee * $finalPrice / 100 + $finalPrice; break; } } return $finalPrice; }
/** * Enter description here... * * @param Mage_Shipping_Model_Rate_Request $data * @return Mage_Shipping_Model_Rate_Result */ public function collectRates(Mage_Shipping_Model_Rate_Request $request) { if ($request->getAllItems()) { $exprees_shipping = array(); foreach ($request->getAllItems() as $item) { $product_id = $item->getProductId(); $productObj = Mage::getModel('catalog/product')->load($product_id); $exprees_shipping_available = $productObj->getData('exprees_shipping_available'); //our shipping attribute code array_push($exprees_shipping, $exprees_shipping_available); $newArray = array_count_values($exprees_shipping); $priceapply = count($newArray); } } if (!$this->getConfigFlag('active') || $priceapply == '1') { return false; } $freeBoxes = 0; if ($request->getAllItems()) { foreach ($request->getAllItems() as $item) { if ($item->getProduct()->isVirtual() || $item->getParentItem()) { continue; } if ($item->getHasChildren() && $item->isShipSeparately()) { foreach ($item->getChildren() as $child) { if ($child->getFreeShipping() && !$child->getProduct()->isVirtual()) { $freeBoxes += $item->getQty() * $child->getQty(); } } } elseif ($item->getFreeShipping()) { $freeBoxes += $item->getQty(); } } } $this->setFreeBoxes($freeBoxes); $result = Mage::getModel('shipping/rate_result'); if ($this->getConfigData('type') == 'O') { // per order $shippingPrice = $this->getConfigData('price'); } elseif ($this->getConfigData('type') == 'I') { // per item //$shippingPrice = ($request->getPackageQty() * $this->getConfigData('price')) - ($this->getFreeBoxes() * $this->getConfigData('price')); $shippingPrice = $priceapply * $this->getConfigData('price') - $this->getFreeBoxes() * $this->getConfigData('price'); } else { $shippingPrice = false; } $shippingPrice = $this->getFinalPriceWithHandlingFee($shippingPrice); if ($shippingPrice !== false) { $method = Mage::getModel('shipping/rate_result_method'); $method->setCarrier('flatrate'); $method->setCarrierTitle($this->getConfigData('title')); $method->setMethod('flatrate'); $method->setMethodTitle($this->getConfigData('name')); if ($request->getFreeShipping() === true || $request->getPackageQty() == $this->getFreeBoxes()) { $shippingPrice = '0.00'; } $method->setPrice($shippingPrice); $method->setCost($shippingPrice); $result->append($method); } return $result; }