Напишите плагин, чтобы отключить метод доставки по фиксированной ставке, когда бесплатная доставка фактически включена на основе общей суммы корзины.
<? 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\Flatrate" >
<plugin name = "disable-flatrate" type = "Vendor\ModuleName\Model\Carrier\Flatrate" sortOrder = "1" />
</type>
</config>
Напишите класс Model для обработки итоговой проверки.
<? php
namespace Vendor \ModuleName\Model\Carrier ;
class Flatrate
{
const XML_PATH_FREE_SHIPPING_SUBTOTAL = "carriers/freeshipping/free_shipping_subtotal" ;
/**
* @var \Magento\Checkout\Model\Session
*/
protected $_checkoutSession ;
/**
* @var \Magento\Framework\App\Config\ScopeConfigInterface
*/
protected $_scopeConfig ;
public function __construct (
\Magento\Checkout\Model\Session $checkoutSession ,
\Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig ,
\Magento\Store\Model\StoreManagerInterface $storeManager
) {
$this -> _storeManager = $storeManager ;
$this -> _checkoutSession = $checkoutSession ;
$this -> _scopeConfig = $scopeConfig ;
}
public function afterCollectRates ( \Magento\OfflineShipping\Model\Carrier\Flatrate $flatRate , $result )
{
$scopeId = $this -> _storeManager -> getStore ()-> getId ();
$storeScope = \Magento\Store\Model\ScopeInterface :: SCOPE_STORES ;
// Get MOA value from system configuration.
$freeShippingSubTotal = $this -> _scopeConfig -> getValue ( self :: XML_PATH_FREE_SHIPPING_SUBTOTAL , $storeScope , $scopeId );
// Get cart subtotal from checkout session.
$baseSubTotal = $this -> _checkoutSession -> getQuote ()-> getBaseSubtotal ();
// Validate subtoal should be empty or Zero.
if (! empty ( $baseSubTotal ) && ! empty ( $freeShippingSubTotal )) {
if ( $baseSubTotal >= $freeShippingSubTotal ) {
return false ;
}
}
return $result ;
}
}
Манипракаш Чиннасамы
источник
Используйте расширение ShippingTweaks .
источник
в ответ на @Nagaraju и надеясь помочь кому-либо.
Файл di.xml может быть создан в любом вашем модуле, или если вы не знаете, как и где:
app / code / My_Vendor / MyModule / etc / di.xml -> здесь вы положили код @maniprakash
тогда вы должны создать класс в:
app / code / My_Vendor / MyModule / Model / Flatrate -> и вставьте код класса @maniprakash
Просто не забудьте изменить путь в тэге типа на di.xml
путь должен совпадать с вашим классом Model . в моем примере должно быть
И это все! Надеюсь, поможет! и благодаря @manipakrash, это помогает мне! знак равно
источник
Скрыть бесплатную доставку при оформлении заказа
Производитель / Magento / Magento_Checkout / шаблон / груз-адрес / грузить-метод-item.html
источник
и т.д. / di.xml
Плагин / Model / ShippingMethodManagement.php
источник