diff --git a/.gitignore b/.gitignore
index fa1eccb1e..129eca994 100644
--- a/.gitignore
+++ b/.gitignore
@@ -22,3 +22,4 @@ yarn.lock
.php_cs.cache
storage/
storage/*.key
+/docker-compose-collection/
diff --git a/packages/Webkul/Checkout/src/Cart.php b/packages/Webkul/Checkout/src/Cart.php
index 506cecb0c..3f22ad2c0 100755
--- a/packages/Webkul/Checkout/src/Cart.php
+++ b/packages/Webkul/Checkout/src/Cart.php
@@ -320,6 +320,25 @@ class Cart {
return true;
}
+ /**
+ * Clear cart
+ * @return bool
+ */
+ public function clear(): bool
+ {
+ if (! $cart = $this->getCart()) {
+ return false;
+ }
+
+ $this->cartRepository->delete($cart->id);
+
+ if (session()->has('cart')) {
+ session()->forget('cart');
+ }
+
+ return true;
+ }
+
/**
* This function handles when guest has some of cart products and then logs in.
*
diff --git a/packages/Webkul/Checkout/src/Models/Cart.php b/packages/Webkul/Checkout/src/Models/Cart.php
index 4f17e688c..177ac2758 100755
--- a/packages/Webkul/Checkout/src/Models/Cart.php
+++ b/packages/Webkul/Checkout/src/Models/Cart.php
@@ -130,4 +130,20 @@ class Cart extends Model implements CartContract
return false;
}
+
+ /**
+ * Returns true if cart contains one or many products with quantity box.
+ * f.e. simple, configurable, virtual
+ * @return bool
+ */
+ public function hasProductsWithQuantityBox(): bool
+ {
+ $result = true;
+ foreach ($this->items as $item) {
+ if ($item->product->getTypeInstance()->showQuantityBox() === true) {
+ $result = false;
+ }
+ }
+ return $result;
+ }
}
\ No newline at end of file
diff --git a/packages/Webkul/Shop/src/Http/Controllers/CartController.php b/packages/Webkul/Shop/src/Http/Controllers/CartController.php
index 374695d40..fd5e314aa 100755
--- a/packages/Webkul/Shop/src/Http/Controllers/CartController.php
+++ b/packages/Webkul/Shop/src/Http/Controllers/CartController.php
@@ -80,9 +80,12 @@ class CartController extends Controller
try {
$result = Cart::addProduct($id, request()->all());
- if (is_array($result) && isset($result['warning'])) {
+ if ($this->onWarningAddingToCart($result)) {
session()->flash('warning', $result['warning']);
- } else {
+ return redirect()->back();
+ }
+
+ if ($result instanceof Cart) {
session()->flash('success', trans('shop::app.checkout.cart.item.success'));
if ($customer = auth()->guard('customer')->user())
@@ -203,4 +206,16 @@ class CartController extends Controller
'message' => trans('shop::app.checkout.total.remove-coupon')
]);
}
+
+ /**
+ * Returns true, if result of adding product to cart
+ * is an array and contains a key "warning"
+ *
+ * @param $result
+ *
+ * @return bool
+ */
+ private function onWarningAddingToCart($result): bool {
+ return is_array($result) && isset($result['warning']);
+ }
}
\ No newline at end of file
diff --git a/packages/Webkul/Shop/src/Resources/views/checkout/cart/index.blade.php b/packages/Webkul/Shop/src/Resources/views/checkout/cart/index.blade.php
index 85b83c6c8..368e08867 100755
--- a/packages/Webkul/Shop/src/Resources/views/checkout/cart/index.blade.php
+++ b/packages/Webkul/Shop/src/Resources/views/checkout/cart/index.blade.php
@@ -108,9 +108,11 @@
{{ __('shop::app.checkout.cart.continue-shopping') }}
-