-
Notifications
You must be signed in to change notification settings - Fork 12
Description
The saveBilling(others?) action always reloads the shippingMethods html because the second stepHash which is used for comparison contains deleted rates.
EcomDev_CheckItOut_OnepageController::saveBillingAction()
..
$result = $this->getOnepage()->saveBilling($data, $customerAddressId);
causes the current rates for the address to be deleted and new ones inserted.
In EcomDev_CheckItOut_Model_Hash_Quote_Address_Rate::getDataForHash()
..
in the loop over the rates collection I believe that it should do the following at the start:
if ($shippingRate->isDeleted()) {
continue;
}
(see Mage_Sales_Model_Quote_Address::getAllShippingRates() - or this function could be used instead)
see stack traces below:
2016-03-21T17:26:52+00:00 DEBUG (7): /checkout/onepage/saveBilling/
EcomDev_CheckItOut_Model_Hash_Quote_Address_Rate::getDataForHash:
shippingAddressId: 298
2016-03-21T17:26:52+00:00 DEBUG (7): /checkout/onepage/saveBilling/
EcomDev_CheckItOut_Model_Hash_Quote_Address_Rate::getDataForHash:
Array
(
[0] => flatrate_flatrate;Click and Collect;Collect your order from Stockport;0.00
[1] => xxx_economy_ukmainland;Economy Delivery;Economy Delivery;8.50
[2] => xxx_express_ukmainland;Express Delivery;Express Delivery;12.00
[3] => premiumrate_2-3_Day_Delivery_;Select Shipping Method;2-3 Working Day Delivery_;8.50
[4] => premiumrate_Next_Day_Delivery_;Select Shipping Method;Next Working Day Delivery_;12.00
[5] => Economy Delivery - Economy Delivery
)
#0 app/code/community/EcomDev/CheckItOut/Model/Hash/Quote/Abstract.php(70): EcomDev_CheckItOut_Model_Hash_Quote_Address_Rate->getDataForHash()
#1 app/code/community/EcomDev/CheckItOut/Model/Hash.php(48): EcomDev_CheckItOut_Model_Hash_Quote_Abstract->getHash()
#2 app/code/community/EcomDev/CheckItOut/controllers/OnepageController.php(131): EcomDev_CheckItOut_Model_Hash->getHash(Object(Mage_Sales_Model_Quote))
#3 app/code/core/Mage/Core/Controller/Varien/Action.php(407): EcomDev_CheckItOut_OnepageController->preDispatch()
#4 app/code/core/Mage/Core/Controller/Varien/Router/Standard.php(254): Mage_Core_Controller_Varien_Action->dispatch('saveBilling')
#5 app/code/core/Mage/Core/Controller/Varien/Front.php(172): Mage_Core_Controller_Varien_Router_Standard->match(Object(Mage_Core_Controller_Request_Http))
#6 app/code/core/Mage/Core/Model/App.php(365): Mage_Core_Controller_Varien_Front->dispatch()
#7 app/Mage.php(684): Mage_Core_Model_App->run(Array)
#8 index.php(122): Mage::run('', 'store')
#9 {main}
2016-03-21T17:26:52+00:00 DEBUG (7): /checkout/onepage/saveBilling/
EcomDev_CheckItOut_Model_Hash_Quote_Address_Rate::getDataForHash:
shippingAddressId: 298
2016-03-21T17:26:52+00:00 DEBUG (7): /checkout/onepage/saveBilling/
EcomDev_CheckItOut_Model_Hash_Quote_Address_Rate::getDataForHash:
Array
(
[0] => flatrate_flatrate;Click and Collect;Collect your order from Stockport;0.00
[1] => xxx_economy_ukmainland;Economy Delivery;Economy Delivery;8.50
[2] => xxx_express_ukmainland;Express Delivery;Express Delivery;12.00
[3] => premiumrate_2-3_Day_Delivery_;Select Shipping Method;2-3 Working Day Delivery_;8.50
[4] => premiumrate_Next_Day_Delivery_;Select Shipping Method;Next Working Day Delivery_;12.00
[5] => flatrate_flatrate;Click and Collect;Collect your order from Stockport;0.00
[6] => xxx_economy_ukmainland;Economy Delivery;Economy Delivery;8.50
[7] => xxx_express_ukmainland;Express Delivery;Express Delivery;12.00
[8] => premiumrate_2-3_Day_Delivery_;Select Shipping Method;2-3 Working Day Delivery_;8.50
[9] => premiumrate_Next_Day_Delivery_;Select Shipping Method;Next Working Day Delivery_;12.00
[10] => Economy Delivery - Economy Delivery
)
#0 app/code/community/EcomDev/CheckItOut/Model/Hash/Quote/Abstract.php(70): EcomDev_CheckItOut_Model_Hash_Quote_Address_Rate->getDataForHash()
#1 app/code/community/EcomDev/CheckItOut/Model/Hash.php(48): EcomDev_CheckItOut_Model_Hash_Quote_Abstract->getHash()
#2 app/code/community/EcomDev/CheckItOut/controllers/OnepageController.php(409): EcomDev_CheckItOut_Model_Hash->getHash(Object(Mage_Sales_Model_Quote))
#3 app/code/community/EcomDev/CheckItOut/controllers/OnepageController.php(362): EcomDev_CheckItOut_OnepageController->_addHashInfo(Array)
#4 app/code/core/Mage/Core/Controller/Varien/Action.php(418): EcomDev_CheckItOut_OnepageController->saveBillingAction()
#5 app/code/core/Mage/Core/Controller/Varien/Router/Standard.php(254): Mage_Core_Controller_Varien_Action->dispatch('saveBilling')
#6 app/code/core/Mage/Core/Controller/Varien/Front.php(172): Mage_Core_Controller_Varien_Router_Standard->match(Object(Mage_Core_Controller_Request_Http))
#7 app/code/core/Mage/Core/Model/App.php(365): Mage_Core_Controller_Varien_Front->dispatch()
#8 app/Mage.php(684): Mage_Core_Model_App->run(Array)
#9 index.php(122): Mage::run('', 'store')
#10 {main}