Question

I want to apply coupon code programmatically when the condition is true. If condition false coupon code should be not applied.

Please help me.

Was it helpful?

Solution

You can try this below code :

Construct Method :

protected $cart;

public function __construct(
  \Magento\Checkout\Model\Cart $cart
){
   $this->cart = $cart;
}

Then, you can use this below code in your function :

$cart = $this->cart;
$couponCode = 'your_coupon_code';
if(condition true)
{
    $quote = $cart->getQuote()->setCouponCode($couponCode)->collectTotals()->save();
} else {
    $quote = $cart->getQuote()->setCouponCode('')->collectTotals()->save();
}

Object Manager Method :

$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$cart = $objectManager->get('\Magento\Checkout\Model\Cart');
$couponCode = 'your_coupon_code';
if(condition true)
{
    $quote = $cart->getQuote()->setCouponCode($couponCode)->collectTotals()->save();
} else {
    $quote = $cart->getQuote()->setCouponCode('')->collectTotals()->save();
}

Note : Use construct method instead of object Manager.

Licensed under: CC-BY-SA with attribution
Not affiliated with magento.stackexchange
scroll top