Magento2.1.9 How to apply condition in checkout shipping method?
-
06-02-2021 - |
Question
Solution
- Create custom module
Hello_World
- Create plugin and configure in
di.xml
file,app/code/Hello/World/di.xml
<?xml version="1.0"?> <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd"> <type name="Magento\OfflineShipping\Model\Carrier\Freeshipping"> <plugin name="disable-freeshipping" type="Hello\World\Model\Carrier\Freeshipping" sortOrder="1" /> </type> </config>
Create model file
app/code/Hello/World/Model/Carrier/Freeshipping.php
<?php namespace Hello\World\Model\Carrier; class Freeshipping{ protected $_checkoutSession; protected $_scopeConfig; protected $_customerSession; public function __construct( \Magento\Checkout\Model\Session $checkoutSession, \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig, \Magento\Store\Model\StoreManagerInterface $storeManager, \Magento\Customer\Model\Session $customerSession ) { $this->_storeManager = $storeManager; $this->_checkoutSession = $checkoutSession; $this->_scopeConfig = $scopeConfig; $this->_customerSession = $customerSession; } public function afterCollectRates(\Magento\OfflineShipping\Model\Carrier\Freeshipping $freeshipping, $result) { //Magento-2 Log Here $writer = new \Zend\Log\Writer\Stream(BP.'/var/log/magento2.log'); $logger = new \Zend\Log\Logger(); $logger->addWriter($writer); //Customer Group ID Here $customerGroupId=$this->_customerSession->getCustomer()->getGroupId(); $logger->info("Free shipping has been calling and customerGroupId ".$customerGroupId); //keep your customer group id here if($customerGroupId === '1'){ return false; } return $result; } }
OTHER TIPS
For this, you need to create a custom shipping method. The below link will helps you to create custom shipping method
https://webkul.com/blog/create-custom-shipping-method-in-magento2/
You can set the condition in the function collectRates in the file app/code/Webkul/Customshipping/Model/Carrier.php
Refer the below link to get customer group
Licensed under: CC-BY-SA with attribution
Not affiliated with magento.stackexchange