_init('sales/quote_address_rate'); } protected function _beforeSave() { parent::_beforeSave(); if ($this->getAddress()) { $this->setParentId($this->getAddress()->getId()); } return $this; } public function setAddress(Mage_Sales_Model_Quote_Address $address) { $this->_address = $address; return $this; } public function getAddress() { return $this->_address; } 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) { $this ->setCode($rate->getCarrier().'_'.$rate->getMethod()) ->setCarrier($rate->getCarrier()) ->setCarrierTitle($rate->getCarrierTitle()) ->setMethod($rate->getMethod()) ->setMethodDescription($rate->getMethodTitle()) ->setMethodDetails($rate->getMethodDetails()) ->setMethodDescription($rate->getMethodDescription()) ->setPrice($rate->getPrice()) ; } return $this; } }