In this shipping module i added additional cost to the shipping cost based on cart weight. For example if the shipping cost is 5$ and cart weight is less than 18 pounds means i added additional 7$ to the shipping cost. So the total shipping cost would be 12$. You can also use this code for only particular product or for particular shipping methods.
app/etc/modules/Fixed_Shipping.xml
app/code/local/Fixed/Shipping/etc/config.xmltrue local
app/code/local/Fixed/Shipping/Model/Rate.php0.7.4 Fixed_Shipping_Model_Rate
class Fixed_Shipping_Model_Rate extends Mage_Sales_Model_Quote_Address_Rate { public function importShippingRate(Mage_Shipping_Model_Rate_Result_Abstract $rate) { if ($rate instanceof Mage_Shipping_Model_Rate_Result_Error) { $this ->setCode($rate->getCarrier().'_error') ->setCarrier($rate->getCarrier()) ->setCarrierTitle($rate->getCarrierTitle()) ->setErrorMessage($rate->getErrorMessage()) ; } elseif ($rate instanceof Mage_Shipping_Model_Rate_Result_Method) { $items = Mage::getSingleton('checkout/cart')->getQuote()->getItemsCollection()->getItems(); $product = Mage::getModel('catalog/product'); $total_weight=0; $additional_price = 0; foreach ($items as $item) { $product->load($product->getIdBySku($item->getSku())); $qty = $item->getQty(); $weight = $item->getWeight(); if($product->isConfigurable()){ $total_weight+=($weight*($qty-1)); } else { $total_weight+=($weight*$qty); } } $var1 = Mage::getModel('core/variable')->loadByCode('ship_cond_1') ->getData(html_value); //Shipping method codes -> flatrate, FEDEXGROUND, GROUNDHOMEDELIVERY, GND, 3DS, 2DA, 1DP, 1DA, 1DM if($total_weight <= 18) $additional_price = 7; else if($total_weight > 18 && $total_weight <= 43 ) $additional_price = 10; else if($total_weight > 43 && $total_weight <= 61 ) $additional_price = 14; else if($total_weight > 61 && $total_weight <= 80 ) $additional_price = 16; else if($total_weight > 80 && $total_weight <= 1000 ) $additional_price = 22; $price =$additional_price + $rate->getPrice(); $this ->setCode($rate->getCarrier().'_'.$rate->getMethod()) ->setCarrier($rate->getCarrier()) ->setCarrierTitle($rate->getCarrierTitle()) ->setMethod($rate->getMethod()) ->setMethodTitle($rate->getMethodTitle()) ->setMethodDescription($rate->getMethodDescription()) ->setPrice($price) ; } Mage::log($rate->getMethod()); return $this; } }
No comments:
Post a Comment