/**
  * When a cart goes below 0 (due to discounts), set the amount to 0.
  *
  * @param CartInterface $cart Cart
  */
 public function validateNegativeAmount(CartInterface $cart)
 {
     $amount = $cart->getAmount();
     if ($amount->getAmount() <= 0) {
         $cart->setAmount(Money::create(0, $amount->getCurrency()));
     }
 }
 /**
  * Load cart total price.
  *
  * @param CartInterface $cart Cart
  */
 public function loadCartTotalAmount(CartInterface $cart)
 {
     $currency = $this->currencyWrapper->get();
     $finalAmount = clone $cart->getPurchasableAmount();
     /**
      * Calculates the shipping amount.
      */
     $shippingAmount = $cart->getShippingAmount();
     if ($shippingAmount instanceof MoneyInterface) {
         $convertedShippingAmount = $this->currencyConverter->convertMoney($shippingAmount, $currency);
         $finalAmount = $finalAmount->add($convertedShippingAmount);
     }
     /**
      * Calculates the coupon amount.
      */
     $couponAmount = $cart->getCouponAmount();
     if ($couponAmount instanceof MoneyInterface) {
         $convertedCouponAmount = $this->currencyConverter->convertMoney($couponAmount, $currency);
         $finalAmount = $finalAmount->subtract($convertedCouponAmount);
     }
     $cart->setAmount($finalAmount);
 }