I have two shipping method , Free shipping and flat rate , where free shipping has minimum shipping amount 1500 and flat rate has fixed amount of 135.
I have to skip shipping method option on one step checkout page, but it should be applied to total amount in cart.
I skipped shipping method on checkout page, but at the end of payment, it gives me error, that please specify shipping method
How to Configure Magento 2 Shipping Settings? Before configuring the default shipping methods available in Magento 2 you have to configure the default shipping settings. For this go to Stores > Configuration > Sales > Shipping Settings and configure Origin and Shipping Policy Parameters.
On the Admin sidebar, go to Stores > Settings > Configuration. In the left panel, expand the Sales section and choose Shipping Methods. Scroll down to the Magento Shipping section to configure the shipping profile settings. Click Configure to complete each profile.
you need to override the onepage controller and onepage block
Please refer below code.
**Magento: Skip Shipping Method from onepage checkout**
First override following files(i.e. in local directory) rather than changing the core:
1) app/code/core/Mage/Checkout/Block/Onepage/Onepage.php
2) app/code/core/mage/checkout/controller/Onepagecontrollers.php
3) app/code/core/Mage/Sales/Model/Service/Quote.php
4) app/design/frontend/base/default/template/checkout/onepage/progress.phtml
5) app/code/core/Mage/Sales/Model/Service/Quote.php
Once done follow the below steps:
**Step 1: app/code/local/Mage/Checkout/Block/Onepage.php**
Change the line:
$stepCodes = array('billing', 'shipping', 'shipping_method', 'payment', 'review');
In Magento 1.7+ you will find $stepCodes in for each just replace with below code
with:
$stepCodes = array('billing', 'shipping', 'payment', 'review');
**Step 2: app/code/local/Mage/Checkout/controller/Onepagecontrollers.php**
Change the line:
protected $_sectionUpdateFunctions = array(
'payment-method' => '_getPaymentMethodsHtml',
'shpping-method' => '_getShippingMeghtoHtml',
'review' => '_getReviewHtml',
);
with:
protected $_sectionUpdateFunctions = array(
'payment-method' => '_getPaymentMethodsHtml',
'review' => '_getReviewHtml',
);
**Step 3: app/code/local/Mage/Checkout/controller/Onepagecontrollers.php**
Change saveBillingAction() function with:
public function saveBillingAction()
{
if ($this->_expireAjax()) {
return;
}
if ($this->getRequest()->isPost()) {
$postData = $this->getRequest()->getPost('billing', array());
$data = $this->_filterPostData($postData);
$data = $this->getRequest()->getPost('billing', array());
$customerAddressId = $this->getRequest()->getPost('billing_address_id', false);
if (isset($data['email'])) {
$data['email'] = trim($data['email']);
}
$result = $this->getOnepage()->saveBilling($data, $customerAddressId);
if (!isset($result['error'])) {
/* check quote for virtual */
if ($this->getOnepage()->getQuote()->isVirtual()) {
$result['goto_section'] = 'payment';
$result['update_section'] = array(
'name' => 'payment-method',
'html' => $this->_getPaymentMethodsHtml()
);
} elseif (isset($data['use_for_shipping']) && $data['use_for_shipping'] == 1) {
$result['goto_section'] = 'payment';
$result['update_section'] = array(
'name' => 'payment-method',
'html' => $this->_getPaymentMethodsHtml()
);
$result['allow_sections'] = array('shipping');
$result['duplicateBillingInfo'] = 'true';
} else {
$result['goto_section'] = 'shipping';
}
}
$this->getResponse()->setBody(Mage::helper('core')->jsonEncode($result));
}
}
Change saveShippingAction() function with:
public function saveShippingAction()
{
if ($this->_expireAjax()) {
return;
}
if ($this->getRequest()->isPost()) {
$data = $this->getRequest()->getPost('shipping', array());
$customerAddressId = $this->getRequest()->getPost('shipping_address_id', false);
$result = $this->getOnepage()->saveShipping($data, $customerAddressId);
if (!isset($result['error'])) {
$result['goto_section'] = 'payment';
$result['update_section'] = array(
'name' => 'payment-method',
'html' => $this->_getPaymentMethodsHtml()
);
}
$this->getResponse()->setBody(Mage::helper('core')->jsonEncode($result));
}
}
**Step 4: app/code/local/Mage/Sales/Model/Service/Quote.php**
Change _validate() function with:
protected function _validate()
{
$helper = Mage::helper('sales');
if (!$this->getQuote()->isVirtual()) {
$address = $this->getQuote()->getShippingAddress();
$addressValidation = $address->validate();
if ($addressValidation !== true) {
Mage::throwException(
$helper->__('Please check shipping address information. %s', implode(' ', $addressValidation))
);
}
}
$addressValidation = $this->getQuote()->getBillingAddress()->validate();
if ($addressValidation !== true) {
Mage::throwException(
$helper->__('Please check billing address information. %s', implode(' ', $addressValidation))
);
}
if (!($this->getQuote()->getPayment()->getMethod())) {
Mage::throwException($helper->__('Please select a valid payment method.'));
}
return $this;
}
**Step 5: app/design/frontend/default/default/template/checkout/onepage/progress.phtml**
Remove the shipping method block.
**Step 6: app/locale/en_US/template/email/sales/order_new.html**
Remove the shipping method block(i.e. {{var order.getShippingDescription()}}).
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With