Exemple #1
0
 public function collectRates(Mage_Shipping_Model_Rate_Request $request)
 {
     parent::collectRates($request);
     $result = $this->getResult();
     Mage::dispatchEvent('am_restrict_rates', array('request' => $request, 'result' => $result));
     return $this;
 }
 /**
  * Retrieve all methods for supplied shipping data
  *
  * @todo make it ordered
  * @param Mage_Shipping_Model_Shipping_Method_Request $data
  * @return Mage_Shipping_Model_Shipping
  */
 public function collectRates(Mage_Shipping_Model_Rate_Request $request)
 {
     if (!Mage::getStoreConfig('carriers/wsaupsfreight/active')) {
         return parent::collectRates($request);
     }
     $restrictRates = Mage::getStoreConfig('carriers/wsaupsfreight/restrict_rates');
     $forceFreight = Mage::getStoreConfig('carriers/wsaupsfreight/force_freight');
     $hasFreightItems = $this->hasFreightItems($request);
     $limitCarrier = $request->getLimitCarrier();
     if ($restrictRates && Mage::getStoreConfig('carriers/wsaupsfreight/weight_apply') == 'Order' && $request->getPackageWeight() >= Mage::getStoreConfig('carriers/wsaupsfreight/min_weight') || $forceFreight && $hasFreightItems) {
         if (!$limitCarrier) {
             $limitCarrier = array();
         } else {
             if (!is_array($limitCarrier)) {
                 $limitCarrier = array($limitCarrier);
             }
         }
         $limitCarrier[] = 'wsaupsfreight';
         $request->setLimitCarrier($limitCarrier);
     } else {
         if ($request->getPackageWeight() < Mage::getStoreConfig('carriers/wsaupsfreight/min_weight') && !$hasFreightItems) {
             if (!$limitCarrier) {
                 $carriers = Mage::getStoreConfig('carriers', $request->getStoreId());
                 foreach ($carriers as $carrierCode => $carrierConfig) {
                     if ($carrierCode == 'wsaupsfreight') {
                         continue;
                     }
                     $limitCarrier[] = $carrierCode;
                 }
             } else {
                 if (!is_array($limitCarrier)) {
                     $limitCarrier = array($limitCarrier);
                 }
                 foreach ($limitCarrier as $carrierCode => $carrierConfig) {
                     if ($carrierCode == 'wsaupsfreight') {
                         continue;
                     }
                     $limitCarrier[] = $carrierCode;
                 }
             }
             $request->setLimitCarrier($limitCarrier);
         }
     }
     return parent::collectRates($request);
 }
 public function collectRates(Mage_Shipping_Model_Rate_Request $request)
 {
     parent::collectRates($request);
     //var_dump($request);
     $parametros = array('email' => Mage::getStoreConfig('squidfacil/squidfacil_group/squidfacil_email', Mage::app()->getStore()), 'token' => Mage::getStoreConfig('squidfacil/squidfacil_group/squidfacil_token', Mage::app()->getStore()), 'cep' => $request->getDestPostcode());
     $items = $request->getData('all_items');
     foreach ($items as $item) {
         $parametros['products'][] = array('sku' => $item->getSku(), 'quantity' => $item->getQty());
     }
     $ch = curl_init();
     curl_setopt($ch, CURLOPT_URL, "https://www.squidfacil.com.br/webservice/freight/freight.php");
     curl_setopt($ch, CURLOPT_POST, 1);
     curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
     curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
     curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($parametros));
     $response = curl_exec($ch);
     curl_close($ch);
     $xml = simplexml_load_string($response, 'SimpleXMLElement', LIBXML_NOCDATA);
     if ($xml) {
         $root = $xml->children();
         foreach ($root->carrier as $externalCarrier) {
             $carrier = new SquidFacil_Shipping_Model_Carrier_Abstract();
             $carrier->setCode('squidfacil_' . strtolower($externalCarrier->name));
             foreach ($externalCarrier->service as $service) {
                 $method = new Mage_Shipping_Model_Rate_Result_Method();
                 $method->setCarrier((string) $externalCarrier->name);
                 $method->setCarrierTitle((string) $externalCarrier->name);
                 $method->setMethod(strtolower((string) $service->name));
                 $method->setMethodTitle((string) $service->name);
                 $method->setPrice((double) $service->value);
                 $carrier->setRate($method);
             }
             $this->getResult()->append($carrier->collectRates($request));
         }
     }
     return $this;
 }
Exemple #4
0
 /**
  * Retrieve all methods for supplied shipping data
  *
  * @param Mage_Shipping_Model_Shipping_Method_Request $data
  * @return Mage_Shipping_Model_Shipping
  */
 public function collectRates(Mage_Shipping_Model_Rate_Request $request)
 {
     parent::collectRates($request);
     $result = $this->getResult();
     Mage::dispatchEvent('am_restrict_rates', array('request' => $request, 'result' => $result));
     $oldRates = $result->getAllRates();
     $oldPrices = $this->_getPrices($oldRates);
     $newRates = array();
     $validator = Mage::getSingleton('amshiprules/validator');
     $validator->init($request);
     if (!$validator->canApplyFor($oldRates)) {
         return $this;
     }
     $validator->applyRulesTo($oldRates);
     foreach ($oldRates as $rate) {
         if ($validator->needNewRequest($rate)) {
             $newRequest = $validator->getNewRequest($rate);
             if (count($newRequest->getAllItems())) {
                 $result->reset();
                 parent::collectRates($newRequest);
                 $rate = $validator->findRate($result->getAllRates(), $rate);
             } else {
                 $rate->setPrice(0);
             }
         }
         $rate->setPrice($rate->getPrice() + $validator->getFee($rate));
         $newRates[] = $rate;
     }
     $result->reset();
     foreach ($newRates as $rate) {
         $rate->setOldPrice($oldPrices[$rate->getMethod()]);
         $rate->setPrice(max(0, $rate->getPrice()));
         $result->append($rate);
     }
     return $this;
 }
 public function _collectRates(Mage_Shipping_Model_Rate_Request $request)
 {
     return parent::collectRates($request);
 }
 /**
  * Retrieve all methods for supplied shipping data
  *
  * @todo make it ordered
  * @param Mage_Shipping_Model_Shipping_Method_Request $data
  * @return Mage_Shipping_Model_Shipping
  */
 public function collectRates(Mage_Shipping_Model_Rate_Request $request)
 {
     if (Mage::helper('wsacommon')->isModuleEnabled('Webshopapps_Dropship')) {
         if (!Mage::registry('dropship_shipmodel')) {
             $model = Mage::getModel('dropship/shipping_shipping');
             Mage::register('dropship_shipmodel', $model);
         }
         Mage::registry('dropship_shipmodel')->resetResult();
         return Mage::registry('dropship_shipmodel')->collectRates($request);
     }
     if (Mage::helper('wsacommon')->isModuleEnabled('Webshopapps_Rgshipping')) {
         if (!Mage::registry('rgshipping_shipmodel')) {
             $model = Mage::getModel('rgshipping/shipping_shipping');
             Mage::register('rgshipping_shipmodel', $model);
         }
         Mage::registry('rgshipping_shipmodel')->resetResult();
         return Mage::registry('rgshipping_shipmodel')->collectRates($request);
     }
     if (Mage::helper('wsacommon')->isModuleEnabled('Webshopapps_Freightrate')) {
         if (!Mage::registry('freightrate_shipmodel')) {
             $model = Mage::getModel('freightrate/shipping_shipping');
             Mage::register('freightrate_shipmodel', $model);
         }
         Mage::registry('freightrate_shipmodel')->resetResult();
         return Mage::registry('freightrate_shipmodel')->collectRates($request);
     }
     if (Mage::helper('wsacommon')->isModuleEnabled('Webshopapps_Shippingoverride2')) {
         if (!Mage::registry('override2_shipmodel')) {
             $model = Mage::getModel('shippingoverride2/shipping_shipping');
             Mage::register('override2_shipmodel', $model);
         }
         Mage::registry('override2_shipmodel')->resetResult();
         return Mage::registry('override2_shipmodel')->collectRates($request);
     }
     if (Mage::helper('wsacommon')->isModuleEnabled('Webshopapps_Conwayfreight')) {
         if (!Mage::registry('conway_shipmodel')) {
             $model = Mage::getModel('conwayfreight/shipping_shipping');
             Mage::register('conway_shipmodel', $model);
         }
         Mage::registry('conway_shipmodel')->resetResult();
         return Mage::registry('conway_shipmodel')->collectRates($request);
     }
     if (Mage::helper('wsacommon')->isModuleEnabled('Webshopapps_Abffreight')) {
         if (!Mage::registry('abffreight_shipmodel')) {
             $model = Mage::getModel('abffreight/shipping_shipping');
             Mage::register('abffreight_shipmodel', $model);
         }
         Mage::registry('abffreight_shipmodel')->resetResult();
         return Mage::registry('abffreight_shipmodel')->collectRates($request);
     }
     if (Mage::helper('wsacommon')->isModuleEnabled('Webshopapps_Wsaupsfreight')) {
         if (!Mage::registry('wsaupfreight_shipmodel')) {
             $model = Mage::getModel('wsaupsfreight/shipping_shipping');
             Mage::register('wsaupfreight_shipmodel', $model);
         }
         Mage::registry('wsaupfreight_shipmodel')->resetResult();
         return Mage::registry('wsaupfreight_shipmodel')->collectRates($request);
     }
     if (Mage::helper('wsacommon')->isModuleEnabled('Webshopapps_Yrcfreight')) {
         if (!Mage::registry('yrc_shipmodel')) {
             $model = Mage::getModel('yrcfreight/shipping_shipping');
             Mage::register('yrc_shipmodel', $model);
         }
         Mage::registry('yrc_shipmodel')->resetResult();
         return Mage::registry('yrc_shipmodel')->collectRates($request);
     }
     if (Mage::helper('wsacommon')->isModuleEnabled('Webshopapps_Rlfreight')) {
         if (!Mage::registry('rlfreight_shipmodel')) {
             $model = Mage::getModel('rlfreight/shipping_shipping');
             Mage::register('rlfreight_shipmodel', $model);
         }
         Mage::registry('rlfreight_shipmodel')->resetResult();
         return Mage::registry('rlfreight_shipmodel')->collectRates($request);
     }
     return parent::collectRates($request);
 }
Exemple #7
0
 /**
  * Retrieve all methods for supplied shipping data
  *
  * @todo make it ordered
  * @param Mage_Shipping_Model_Shipping_Method_Request $data
  * @return Mage_Shipping_Model_Shipping
  */
 public function collectRates(Mage_Shipping_Model_Rate_Request $request)
 {
     Mage::dispatchEvent(self::$_eventPrefix . '_collectRates_before', array(self::$_eventObject => $this));
     if (Mage::helper('wsacommon')->isModuleEnabled('Webshopapps_Dropship', 'carriers/dropship/active')) {
         if (!Mage::registry('dropship_shipmodel')) {
             $model = Mage::getModel('dropship/shipping_shipping');
             Mage::register('dropship_shipmodel', $model);
         }
         Mage::registry('dropship_shipmodel')->resetResult();
         return Mage::registry('dropship_shipmodel')->collectRates($request);
     }
     if (Mage::helper('wsacommon')->isModuleEnabled('Webshopapps_Rgshipping', 'shipping/rgshipping/active')) {
         if (!Mage::registry('rgshipping_shipmodel')) {
             $model = Mage::getModel('rgshipping/shipping_shipping');
             Mage::register('rgshipping_shipmodel', $model);
         }
         Mage::registry('rgshipping_shipmodel')->resetResult();
         return Mage::registry('rgshipping_shipmodel')->collectRates($request);
     }
     if (Mage::helper('wsacommon')->isModuleEnabled('Webshopapps_Shipmanager', 'carriers/shipmanager/active')) {
         if (!Mage::registry('shipmanager_shipmodel')) {
             $model = Mage::getModel('shipmanager/shipping_shipping');
             Mage::register('shipmanager_shipmodel', $model);
         }
         Mage::registry('shipmanager_shipmodel')->resetResult();
         return Mage::registry('shipmanager_shipmodel')->collectRates($request);
     }
     if (Mage::helper('wsacommon')->isModuleEnabled('Webshopapps_Shippingoverride2', 'shipping/shippingoverride2/active')) {
         if (!Mage::registry('override2_shipmodel')) {
             $model = Mage::getModel('shippingoverride2/shipping_shipping');
             Mage::register('override2_shipmodel', $model);
         }
         Mage::registry('override2_shipmodel')->resetResult();
         return Mage::registry('override2_shipmodel')->collectRates($request);
     }
     if (Mage::helper('wsacommon')->isModuleEnabled('Webshopapps_Freightrate', 'carriers/freightrate/active')) {
         if (!Mage::registry('freightrate_shipmodel')) {
             $model = Mage::getModel('freightrate/shipping_shipping');
             Mage::register('freightrate_shipmodel', $model);
         }
         Mage::registry('freightrate_shipmodel')->resetResult();
         return Mage::registry('freightrate_shipmodel')->collectRates($request);
     }
     if (Mage::helper('wsacommon')->isModuleEnabled('Webshopapps_Wsafreightcommon', 'shipping/wsafreightcommon/active')) {
         if (!Mage::registry('wsafreightcommon_shipmodel')) {
             $model = Mage::getModel('wsafreightcommon/shipping_shipping');
             Mage::register('wsafreightcommon_shipmodel', $model);
         }
         Mage::registry('wsafreightcommon_shipmodel')->resetResult();
         return Mage::registry('wsafreightcommon_shipmodel')->collectRates($request);
     }
     if (Mage::helper('wsacommon')->isModuleEnabled('Webshopapps_Estesfreight', 'carriers/estesfreight/active')) {
         if (!Mage::registry('estes_shipmodel')) {
             $model = Mage::getModel('estesfreight/shipping_shipping');
             Mage::register('estes_shipmodel', $model);
         }
         Mage::registry('estes_shipmodel')->resetResult();
         return Mage::registry('estes_shipmodel')->collectRates($request);
     }
     if (Mage::helper('wsacommon')->isModuleEnabled('Webshopapps_Conwayfreight', 'carriers/conwayfreight/active')) {
         if (!Mage::registry('conway_shipmodel')) {
             $model = Mage::getModel('conwayfreight/shipping_shipping');
             Mage::register('conway_shipmodel', $model);
         }
         Mage::registry('conway_shipmodel')->resetResult();
         return Mage::registry('conway_shipmodel')->collectRates($request);
     }
     if (Mage::helper('wsacommon')->isModuleEnabled('Webshopapps_Wsafedexfreight', 'carriers/wsafedexfreight/active')) {
         if (!Mage::registry('wsafedexfreight_shipmodel')) {
             $model = Mage::getModel('wsafedexfreight/shipping_shipping');
             Mage::register('wsafedexfreight_shipmodel', $model);
         }
         Mage::registry('wsafedexfreight_shipmodel')->resetResult();
         return Mage::registry('wsafedexfreight_shipmodel')->collectRates($request);
     }
     if (Mage::helper('wsacommon')->isModuleEnabled('Webshopapps_Usslogistics', 'carriers/usslogistics/active')) {
         if (!Mage::registry('usslogistics_shipmodel')) {
             $model = Mage::getModel('usslogistics/shipping_shipping');
             Mage::register('usslogistics_shipmodel', $model);
         }
         Mage::registry('usslogistics_shipmodel')->resetResult();
         return Mage::registry('usslogistics_shipmodel')->collectRates($request);
     }
     if (Mage::helper('wsacommon')->isModuleEnabled('Webshopapps_Abffreight', 'carriers/abffreight/active')) {
         if (!Mage::registry('abffreight_shipmodel')) {
             $model = Mage::getModel('abffreight/shipping_shipping');
             Mage::register('abffreight_shipmodel', $model);
         }
         Mage::registry('abffreight_shipmodel')->resetResult();
         return Mage::registry('abffreight_shipmodel')->collectRates($request);
     }
     if (Mage::helper('wsacommon')->isModuleEnabled('Webshopapps_Wsaupsfreight', 'carriers/wsaupsfreight/active')) {
         if (!Mage::registry('wsaupfreight_shipmodel')) {
             $model = Mage::getModel('wsaupsfreight/shipping_shipping');
             Mage::register('wsaupfreight_shipmodel', $model);
         }
         Mage::registry('wsaupfreight_shipmodel')->resetResult();
         return Mage::registry('wsaupfreight_shipmodel')->collectRates($request);
     }
     if (Mage::helper('wsacommon')->isModuleEnabled('Webshopapps_Yrcfreight', 'carriers/yrcfreight/active')) {
         if (!Mage::registry('yrc_shipmodel')) {
             $model = Mage::getModel('yrcfreight/shipping_shipping');
             Mage::register('yrc_shipmodel', $model);
         }
         Mage::registry('yrc_shipmodel')->resetResult();
         return Mage::registry('yrc_shipmodel')->collectRates($request);
     }
     if (Mage::helper('wsacommon')->isModuleEnabled('Webshopapps_Rlfreight', 'carriers/rlfreight/active')) {
         if (!Mage::registry('rlfreight_shipmodel')) {
             $model = Mage::getModel('rlfreight/shipping_shipping');
             Mage::register('rlfreight_shipmodel', $model);
         }
         Mage::registry('rlfreight_shipmodel')->resetResult();
         return Mage::registry('rlfreight_shipmodel')->collectRates($request);
     }
     if (Mage::helper('wsacommon')->isModuleEnabled('Webshopapps_Handlingproduct', 'shipping/handlingproduct/active')) {
         if (!Mage::helper('wsacommon')->isModuleEnabled('Webshopapps_Shipusa', 'shipping/shipusa/active')) {
             if (Mage::registry('handlingproduct_shipmodel')) {
                 Mage::registry('handlingproduct_shipmodel')->resetResult();
             }
         }
     }
     // This method of handling rewrites is now deprecated in favour of using event logic for handling matrix
     // Only remains in case Handling Matrix code has not been updated
     if (Mage::helper('wsacommon')->isModuleEnabled('Webshopapps_Handlingmatrix', 'shipping/handlingmatrix/active') && Mage::helper('wsacommon')->getNumericExtensionVersion('handlingmatrix') < 100) {
         if (Mage::registry('handlingmatrix_shipmodel')) {
             Mage::registry('handlingmatrix_shipmodel')->resetResult();
         }
     }
     if (Mage::helper('wsacommon')->isModuleEnabled('Webshopapps_Insurance', 'shipping/insurance/active')) {
         if (Mage::registry('insurance_shipmodel')) {
             Mage::registry('insurance_shipmodel')->resetResult();
         }
     }
     parent::collectRates($request);
     Mage::dispatchEvent(self::$_eventPrefix . '_collectRates_after', array(self::$_eventObject => $this, 'request' => $request));
     return $this;
 }