ecomdev / checkitout Goto Github PK
View Code? Open in Web Editor NEWMagento CheckItOut! extension, the checkout framework for Magento 1.x
License: Open Software License 3.0
Magento CheckItOut! extension, the checkout framework for Magento 1.x
License: Open Software License 3.0
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}
In all PHP file headers, we need to replace EULA with OSL, as project got open sourced.
Because a step does not send data to the server if it is already in the process of sending data then there is the possibility of the data that the user sees in the checkout being out of sync with the data that the server holds.
This causes support issues when the user thinks that they have specified one thing, like ship to France but Magento has another, like ship to the UK
This situation can easily be observed on a development environment where caching is switched off; meaning ajax request take longer than on a live environment
To recreate:
Viewing the order in Magento will show that the change of country was not saved
A solution to this problem would be to do the following:
When a user fails to select a shipping method the validation message is not showing. I am seeing this on multiple sites, can anyone confirm or offer a solution?
I can step into the code and see that the isValid
method is being called in skin/frontend/base/default/js/ecomdev/checkitout/steps/shipping.js
and this in turn is correctly calling the Validation.ajaxError
method found in skin/frontend/base/default/js/ecomdev/checkitout/compatibility/global.js
. This correctly call the showAdvice
method which is supposed to trigger the Appear effect but from what I can see this never happens (i.e. the display stays as none and the opacity never moves to 100).
Can anyone help?
When Mage_Checkout_Model_Type_Onepage::saveBilling() is called by EcomDev_CheckItOut_Model_Type_Onepage:: saveBilling() the following fields are copied from the billing address to the shipping address when "ship to billing" is selected:
cached_items_all
cached_items_nominal
cached_items_nonnominal
These are fields which cache the product items associated with the address and in the case of the billing address there are none associated (unless virtual)
When present, but empty, on the billing address and then copied onto the shipping address the shipping address then has no product items associated it.
This means that Mage_SalesRule_Model_Quote_Discount::collect() then applies no discounts and then Mage_Sales_Model_Quote::_validateCouponCode() removed the coupon from the quote.
I suggest adding the following code in EcomDev_CheckItOut_Model_Type_Onepage::saveBilling():
--> fix code
if (!$this->getQuote()->isVirtual() && !empty($data['use_for_shipping']) ) {
$_billing=$this->getQuote()->getBillingAddress();
$_billing->unsetData('cached_items_all');
$_billing->unsetData('cached_items_nominal');
$_billing->unsetData('cached_items_nonnominal');
}
<-- end - fix code
// existing code
$result = $this->_getDependency()->saveBilling($data, $customerAddressId);
..
..
It seems that CheckItOut extension does not support Payment Method fees.
For example, Cash on Delivery cost is not added/removed from order totals, whenever user changes selected Payment/Shipping method. (I've tested it in three different magento websites)
Is this a bug or a feature that extension does not support. It's very important in my opinion. Payment method fees work ok with every onepagecheckout extension I've used. And of course, default magento onepagecheckout supports them.
Any ideas about this issue?
we have 2 payment methods on our site - sagepage direct and paypal
Issue 1:
If a user goes to the checkout, selects the paypal payment method and then refreshes the page the checkout displays properly with the paypal payment method selected; however the checkout js object does not the correct paymentRedirect url (it has none at all).
Solution:
pass the paymentRedirect url in the config options for the chekout js object and then have the initialize method set it internally if present
Issue 2:
The payment.switchMethod method sets the paymentRedirect url to false on a switch; however if there is no form (as in the case of paypal) handleChange() only fires completely the first time.
After the first time the LastSubmittedValues match the values the getValues() - an empty hash.
This means that the payment change is not submitted and no paymentReditect url is received via ajax leaving the paymentRedirect url incorrectly as false
It seems that the settings (in admin) cannot be saved in Magento version 1.9.3.4 above (tried it with 1.9.3.4 and 1.9.3.8). In version 1.9.3.0 saving the settings works correctly. Any idea's why it might be happening?
The only responsibility of the Magneto composer installer for this extension seems to be to ensure that the installer is deployed to the correct spot, the version '*' can be used, meaning any version of the composer installer.
The current version requirement (dev-master) conflicts with other, stable version requirements of the same package by other extensions.
A quick scan indicates that it's not available under the ecomdev
namespace.
I need a frontend developer to create a new layout as described in the following blog post:
http://www.ecomdev.org/2012/11/29/magento-checkout-extension-ideas-architecture-revealed.html (Layout Handles section)
Please comment this issue with your intention to help, and I will add you as a collaborator on the project.
Are there any plans to include the SUPEE-9767 changes?
Currently formkey validation in e.g. OnepageController::savePayment
etc. is missing.
Setting Show Comment Field to Yes shows the text area on checkout but I can't see the comment saved anywhere with the order. Am I missing something?
Magento 1.9.3.3 and EcomDev_CheckItOut-1.5.15
Hi,
I'm getting the following javascript errros in magento administration System > Configuration > CheckItOut! Extension.
Here are the errors
prototype.js:5557 Uncaught TypeError: Cannot read property 'get' of undefined
at _createResponder (prototype.js:5557)
at Function.observe (prototype.js:5636)
at (index):1296
_createResponder @ prototype.js:5557
prototype.js:5557 Uncaught TypeError: Cannot read property 'get' of undefined
at _createResponder (prototype.js:5557)
at Function.observe (prototype.js:5636)
at (index):1306
_createResponder @ prototype.js:5557
prototype.js:5557 Uncaught TypeError: Cannot read property 'get' of undefined
at _createResponder (prototype.js:5557)
at Function.observe (prototype.js:5636)
at (index):1316
The lines 1296,1306,1316 have the following code:
(1296) Event.observe($('carriers_tablerate_condition_name'), 'change', checkConditionName.bind(this));
(1306) Event.observe($('carriers_tablerate_condition_name'), 'change', checkConditionName.bind(this));
(1316) Event.observe($('carriers_tablerate_condition_name'), 'change', checkConditionName.bind(this));
This is content from the Default Values Configuration section.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.