checkitout icon indicating copy to clipboard operation
checkitout copied to clipboard

The shipping_method step hash is calculated including rates that have been deleted

Open jdukeukpos opened this issue 8 years ago • 0 comments

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}

jdukeukpos avatar Mar 23 '16 09:03 jdukeukpos