| Server IP : 213.186.33.4 / Your IP : 216.73.216.193 Web Server : Apache System : Linux webm006.cluster103.gra.hosting.ovh.net 5.15.206-ovh-vps-grsec-zfs-classid #1 SMP Fri May 15 02:41:25 UTC 2026 x86_64 User : awebpaca ( 35430) PHP Version : 8.5.0 Disable Function : _dyuweyrj4,_dyuweyrj4r,dl MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : OFF | Pkexec : OFF Directory : /home/awebpaca/boutiques/app/code/core/Mage/Shipping/Model/ |
Upload File : |
<?php
/**
* Magento
*
* NOTICE OF LICENSE
*
* This source file is subject to the Open Software License (OSL 3.0)
* that is bundled with this package in the file LICENSE.txt.
* It is also available through the world-wide-web at this URL:
* http://opensource.org/licenses/osl-3.0.php
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to license@magentocommerce.com so we can send you a copy immediately.
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade Magento to newer
* versions in the future. If you wish to customize Magento for your
* needs please refer to http://www.magentocommerce.com for more information.
*
* @category Mage
* @package Mage_Shipping
* @copyright Copyright (c) 2010 Magento Inc. (http://www.magentocommerce.com)
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
class Mage_Shipping_Model_Shipping
{
/**
* Default shipping orig for requests
*
* @var array
*/
protected $_orig = null;
/**
* Cached result
*
* @var Mage_Sales_Model_Shipping_Method_Result
*/
protected $_result = null;
/**
* Get shipping rate result model
*
* @return Mage_Shipping_Model_Rate_Result
*/
public function getResult()
{
if (empty($this->_result)) {
$this->_result = Mage::getModel('shipping/rate_result');
}
return $this->_result;
}
/**
* Set shipping orig data
*/
public function setOrigData($data)
{
$this->_orig = $data;
}
/**
* Reset cached result
*/
public function resetResult()
{
$this->getResult()->reset();
return $this;
}
/**
* Retrieve configuration model
*
* @return Mage_Shipping_Model_Config
*/
public function getConfig()
{
return Mage::getSingleton('shipping/config');
}
/**
* 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 (!$request->getOrig()) {
$request
->setCountryId(Mage::getStoreConfig('shipping/origin/country_id', $request->getStore()))
->setRegionId(Mage::getStoreConfig('shipping/origin/region_id', $request->getStore()))
->setCity(Mage::getStoreConfig('shipping/origin/city', $request->getStore()))
->setPostcode(Mage::getStoreConfig('shipping/origin/postcode', $request->getStore()));
}
$limitCarrier = $request->getLimitCarrier();
if (!$limitCarrier) {
$carriers = Mage::getStoreConfig('carriers', $request->getStoreId());
foreach ($carriers as $carrierCode=>$carrierConfig) {
$this->collectCarrierRates($carrierCode, $request);
}
} else {
if (!is_array($limitCarrier)) {
$limitCarrier = array($limitCarrier);
}
foreach ($limitCarrier as $carrierCode) {
$carrierConfig = Mage::getStoreConfig('carriers/'.$carrierCode, $request->getStoreId());
if (!$carrierConfig) {
continue;
}
$this->collectCarrierRates($carrierCode, $request);
}
}
return $this;
}
public function collectCarrierRates($carrierCode, $request)
{
$carrier = $this->getCarrierByCode($carrierCode, $request->getStoreId());
if (!$carrier) {
return $this;
}
$result = $carrier->checkAvailableShipCountries($request);
if (false !== $result && !($result instanceof Mage_Shipping_Model_Rate_Result_Error)) {
$result = $carrier->proccessAdditionalValidation($request);
}
/*
* Result will be false if the admin set not to show the shipping module
* if the devliery country is not within specific countries
*/
if (false !== $result){
if (!$result instanceof Mage_Shipping_Model_Rate_Result_Error) {
$result = $carrier->collectRates($request);
}
if ($carrier->getConfigData('showmethod') == 0 && $result->getError()) {
return $this;
}
// sort rates by price
if (method_exists($result, 'sortRatesByPrice')) {
$result->sortRatesByPrice();
}
$this->getResult()->append($result);
}
return $this;
}
public function collectRatesByAddress(Varien_Object $address, $limitCarrier=null)
{
$request = Mage::getModel('shipping/rate_request');
$request->setAllItems($address->getAllItems());
$request->setDestCountryId($address->getCountryId());
$request->setDestRegionId($address->getRegionId());
$request->setDestPostcode($address->getPostcode());
$request->setPackageValue($address->getBaseSubtotal());
$request->setPackageValueWithDiscount($address->getBaseSubtotalWithDiscount());
$request->setPackageWeight($address->getWeight());
$request->setFreeMethodWeight($address->getFreeMethodWeight());
$request->setPackageQty($address->getItemQty());
$request->setStoreId(Mage::app()->getStore()->getId());
$request->setWebsiteId(Mage::app()->getStore()->getWebsiteId());
$request->setBaseCurrency(Mage::app()->getStore()->getBaseCurrency());
$request->setPackageCurrency(Mage::app()->getStore()->getCurrentCurrency());
$request->setLimitCarrier($limitCarrier);
return $this->collectRates($request);
}
public function getCarrierByCode($carrierCode, $storeId = null)
{
if (!Mage::getStoreConfigFlag('carriers/'.$carrierCode.'/active', $storeId)) {
return false;
}
$className = Mage::getStoreConfig('carriers/'.$carrierCode.'/model', $storeId);
if (!$className) {
return false;
#Mage::throwException('Invalid carrier: '.$carrierCode);
}
$obj = Mage::getModel($className);
if ($storeId) {
$obj->setStore($storeId);
}
return $obj;
}
}