checkitout
checkitout copied to clipboard
The shipping_method step hash is calculated including rates that have been deleted
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}