diff --git a/packages/Webkul/Admin/src/DataGrids/CartRuleCouponDataGrid.php b/packages/Webkul/Admin/src/DataGrids/CartRuleCouponDataGrid.php
new file mode 100644
index 000000000..ccf8c6375
--- /dev/null
+++ b/packages/Webkul/Admin/src/DataGrids/CartRuleCouponDataGrid.php
@@ -0,0 +1,86 @@
+
+ * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com)
+ */
+class CartRuleCouponDataGrid extends DataGrid
+{
+ protected $index = 'id';
+
+ protected $sortOrder = 'desc';
+
+ public function prepareQueryBuilder()
+ {
+ $queryBuilder = DB::table('cart_rule_coupons')
+ ->addSelect('id', 'code', 'created_at', 'expired_at', 'times_used')
+ ->where('cart_rule_coupons.cart_rule_id', request('id'));
+
+ $this->setQueryBuilder($queryBuilder);
+ }
+
+ public function addColumns()
+ {
+ $this->addColumn([
+ 'index' => 'id',
+ 'label' => trans('admin::app.datagrid.id'),
+ 'type' => 'number',
+ 'searchable' => false,
+ 'sortable' => true,
+ 'filterable' => true
+ ]);
+
+ $this->addColumn([
+ 'index' => 'code',
+ 'label' => trans('admin::app.datagrid.coupon-code'),
+ 'type' => 'string',
+ 'searchable' => true,
+ 'sortable' => true,
+ 'filterable' => true
+ ]);
+
+ $this->addColumn([
+ 'index' => 'created_at',
+ 'label' => trans('admin::app.datagrid.created-date'),
+ 'type' => 'datetime',
+ 'sortable' => true,
+ 'searchable' => false,
+ 'filterable' => true
+ ]);
+
+ $this->addColumn([
+ 'index' => 'expired_at',
+ 'label' => trans('admin::app.datagrid.expiration-date'),
+ 'type' => 'datetime',
+ 'sortable' => true,
+ 'searchable' => false,
+ 'filterable' => true
+ ]);
+
+ $this->addColumn([
+ 'index' => 'times_used',
+ 'label' => trans('admin::app.datagrid.times-used'),
+ 'type' => 'number',
+ 'searchable' => true,
+ 'sortable' => true,
+ 'filterable' => true
+ ]);
+ }
+
+ public function prepareMassActions()
+ {
+ $this->addMassAction([
+ 'type' => 'delete',
+ 'action' => route('admin.cart-rule-coupons.mass-delete'),
+ 'label' => trans('admin::app.datagrid.delete'),
+ 'method' => 'DELETE'
+ ]);
+ }
+}
diff --git a/packages/Webkul/Admin/src/Resources/views/sales/orders/view.blade.php b/packages/Webkul/Admin/src/Resources/views/sales/orders/view.blade.php
index c635af49e..a1b28cbd0 100755
--- a/packages/Webkul/Admin/src/Resources/views/sales/orders/view.blade.php
+++ b/packages/Webkul/Admin/src/Resources/views/sales/orders/view.blade.php
@@ -332,7 +332,13 @@
@if ($order->base_discount_amount > 0)
- | {{ __('admin::app.sales.orders.discount') }} |
+
+ {{ __('admin::app.sales.orders.discount') }}
+
+ @if ($order->coupon_code)
+ ({{ $order->coupon_code }})
+ @endif
+ |
- |
{{ core()->formatBasePrice($order->base_discount_amount) }} |
diff --git a/packages/Webkul/CartRule/src/Helpers/CartRule.php b/packages/Webkul/CartRule/src/Helpers/CartRule.php
index faef6fa22..942fe77ea 100644
--- a/packages/Webkul/CartRule/src/Helpers/CartRule.php
+++ b/packages/Webkul/CartRule/src/Helpers/CartRule.php
@@ -380,6 +380,8 @@ class CartRule
break;
}
+ $selectedShipping->save();
+
$cartAppliedCartRuleIds = array_merge(explode(',', $cart->applied_cart_rule_ids), $appliedRuleIds);
$cartAppliedCartRuleIds = array_filter($cartAppliedCartRuleIds);
diff --git a/packages/Webkul/CartRule/src/Listeners/Cart.php b/packages/Webkul/CartRule/src/Listeners/Cart.php
index f886166b4..f039059c1 100644
--- a/packages/Webkul/CartRule/src/Listeners/Cart.php
+++ b/packages/Webkul/CartRule/src/Listeners/Cart.php
@@ -2,6 +2,8 @@
namespace Webkul\CartRule\Listeners;
+use Webkul\CartRule\Helpers\CartRule;
+
/**
* Cart event handler
*
@@ -10,5 +12,32 @@ namespace Webkul\CartRule\Listeners;
*/
class Cart
{
+ /**
+ * CartRule object
+ *
+ * @var CartRule
+ */
+ protected $cartRuleHepler;
+ /**
+ * Create a new listener instance.
+ *
+ * @param Webkul\CartRule\Repositories\CartRule $cartRuleHepler
+ * @return void
+ */
+ public function __construct(CartRule $cartRuleHepler)
+ {
+ $this->cartRuleHepler = $cartRuleHepler;
+ }
+
+ /**
+ * Aplly valid cart rules to cart
+ *
+ * @param Cart $cart
+ * @return void
+ */
+ public function applyCartRules($cart)
+ {
+ $this->cartRuleHepler->collect();
+ }
}
\ No newline at end of file
diff --git a/packages/Webkul/CartRule/src/Providers/EventServiceProvider.php b/packages/Webkul/CartRule/src/Providers/EventServiceProvider.php
index a935da915..a5b5d7133 100755
--- a/packages/Webkul/CartRule/src/Providers/EventServiceProvider.php
+++ b/packages/Webkul/CartRule/src/Providers/EventServiceProvider.php
@@ -15,5 +15,7 @@ class EventServiceProvider extends ServiceProvider
public function boot()
{
Event::listen('checkout.order.save.after', 'Webkul\CartRule\Listeners\Order@manageCartRule');
+
+ Event::listen('checkout.cart.collect.totals.before', 'Webkul\CartRule\Listeners\Cart@applyCartRules');
}
}
\ No newline at end of file
diff --git a/packages/Webkul/CatalogRule/src/Helpers/CatalogRuleProduct.php b/packages/Webkul/CatalogRule/src/Helpers/CatalogRuleProduct.php
index f700fb5fe..5be4b124f 100644
--- a/packages/Webkul/CatalogRule/src/Helpers/CatalogRuleProduct.php
+++ b/packages/Webkul/CatalogRule/src/Helpers/CatalogRuleProduct.php
@@ -134,7 +134,7 @@ class CatalogRuleProduct
return $qb;
foreach ($rule->conditions as $condition) {
- if (! $condition['attribute'] || ! $condition['value'])
+ if (! $condition['attribute'] || ! isset($condition['value']) || is_null($condition['value']) || $condition['value'] == '')
continue;
$chunks = explode('|', $condition['attribute']);
@@ -204,6 +204,7 @@ class CatalogRuleProduct
->orderBy('channel_id', 'asc')
->orderBy('customer_group_id', 'asc')
->orderBy('product_id', 'asc')
+ ->orderBy('sort_order', 'asc')
->orderBy('catalog_rule_id', 'asc');
if ($product) {
diff --git a/packages/Webkul/Checkout/src/Models/Cart.php b/packages/Webkul/Checkout/src/Models/Cart.php
index 01cddea2b..9088531fa 100755
--- a/packages/Webkul/Checkout/src/Models/Cart.php
+++ b/packages/Webkul/Checkout/src/Models/Cart.php
@@ -12,8 +12,6 @@ class Cart extends Model implements CartContract
protected $guarded = ['id', 'created_at', 'updated_at'];
- protected $hidden = ['coupon_code'];
-
protected $with = ['items', 'items.children'];
/**
diff --git a/packages/Webkul/Shop/src/Http/Controllers/OnepageController.php b/packages/Webkul/Shop/src/Http/Controllers/OnepageController.php
index a77f66752..12dad01aa 100755
--- a/packages/Webkul/Shop/src/Http/Controllers/OnepageController.php
+++ b/packages/Webkul/Shop/src/Http/Controllers/OnepageController.php
@@ -8,9 +8,6 @@ use Webkul\Shipping\Facades\Shipping;
use Webkul\Payment\Facades\Payment;
use Webkul\Checkout\Http\Requests\CustomerAddressForm;
use Webkul\Sales\Repositories\OrderRepository;
-use Webkul\Discount\Helpers\Cart\CouponAbleRule as Coupon;
-use Webkul\Discount\Helpers\Cart\NonCouponAbleRule as NonCoupon;
-use Webkul\Discount\Helpers\Cart\ValidatesDiscount;
use Webkul\Customer\Repositories\CustomerRepository;
/**
@@ -22,13 +19,6 @@ use Webkul\Customer\Repositories\CustomerRepository;
*/
class OnepageController extends Controller
{
- /**
- * OrderRepository object
- *
- * @var array
- */
- protected $orderRepository;
-
/**
* Contains route related configuration
*
@@ -37,21 +27,11 @@ class OnepageController extends Controller
protected $_config;
/**
- * CouponAbleRule instance object
+ * OrderRepository object
*
+ * @var array
*/
- protected $coupon;
-
- /**
- * NoncouponAbleRule instance object
- *
- */
- protected $nonCoupon;
-
- /**
- * ValidatesDiscount instance object
- */
- protected $validatesDiscount;
+ protected $orderRepository;
/**
* customerRepository instance object
@@ -61,25 +41,17 @@ class OnepageController extends Controller
/**
* Create a new controller instance.
*
- * @param \Webkul\Attribute\Repositories\OrderRepository $orderRepository
+ * @param \Webkul\Attribute\Repositories\OrderRepository $orderRepository
+ * @param \Webkul\Customer\Repositories\CustomerRepository $customerRepository
* @return void
*/
public function __construct(
OrderRepository $orderRepository,
- Coupon $coupon,
- NonCoupon $nonCoupon,
- ValidatesDiscount $validatesDiscount,
CustomerRepository $customerRepository
)
{
- $this->coupon = $coupon;
-
- $this->nonCoupon = $nonCoupon;
-
$this->orderRepository = $orderRepository;
- $this->validatesDiscount = $validatesDiscount;
-
$this->customerRepository = $customerRepository;
$this->_config = request('_config');
@@ -100,8 +72,6 @@ class OnepageController extends Controller
if (! auth()->guard('customer')->check() && $cart->haveDownloadableItems())
return redirect()->route('customer.session.index');
- $this->nonCoupon->apply();
-
Cart::collectTotals();
return view($this->_config['view'], compact('cart'));
@@ -139,8 +109,6 @@ class OnepageController extends Controller
} else {
$cart = Cart::getCart();
- $this->nonCoupon->apply();
-
Cart::collectTotals();
if ($cart->haveStockableItems()) {
@@ -166,8 +134,6 @@ class OnepageController extends Controller
if (Cart::hasError() || !$shippingMethod || !Cart::saveShippingMethod($shippingMethod))
return response()->json(['redirect_url' => route('shop.checkout.cart.index')], 403);
- $this->nonCoupon->apply();
-
Cart::collectTotals();
return response()->json(Payment::getSupportedPaymentMethods());
@@ -185,8 +151,6 @@ class OnepageController extends Controller
if (Cart::hasError() || ! $payment || ! Cart::savePaymentMethod($payment))
return response()->json(['redirect_url' => route('shop.checkout.cart.index')], 403);
- $this->nonCoupon->apply();
-
Cart::collectTotals();
$cart = Cart::getCart();
@@ -253,23 +217,53 @@ class OnepageController extends Controller
{
$cart = Cart::getCart();
- $this->validatesDiscount->validate();
-
- if ($cart->haveStockableItems() && ! $cart->shipping_address) {
+ if ($cart->haveStockableItems() && ! $cart->shipping_address)
throw new \Exception(trans('Please check shipping address.'));
- }
- if (! $cart->billing_address) {
+ if (! $cart->billing_address)
throw new \Exception(trans('Please check billing address.'));
- }
- if ($cart->haveStockableItems() && ! $cart->selected_shipping_rate) {
+ if ($cart->haveStockableItems() && ! $cart->selected_shipping_rate)
throw new \Exception(trans('Please specify shipping method.'));
- }
- if (! $cart->payment) {
+ if (! $cart->payment)
throw new \Exception(trans('Please specify payment method.'));
- }
+ }
+
+ /**
+ * Check Customer is exist or not
+ *
+ * @return Response
+ */
+ public function checkExistCustomer()
+ {
+ $customer = $this->customerRepository->findOneWhere([
+ 'email' => request()->email
+ ]);
+
+ if (! is_null($customer))
+ return 'true';
+
+ return 'false';
+ }
+
+ /**
+ * Login for checkout
+ *
+ * @return Response
+ */
+ public function loginForCheckout()
+ {
+ $this->validate(request(), [
+ 'email' => 'required|email'
+ ]);
+
+ if (! auth()->guard('customer')->attempt(request(['email', 'password'])))
+ return response()->json(['error' => trans('shop::app.customer.login-form.invalid-creds')]);
+
+ Cart::mergeCart();
+
+ return response()->json(['success' => 'Login successfully']);
}
/**
@@ -333,40 +327,4 @@ class OnepageController extends Controller
], 422);
}
}
-
- /**
- * Check Customer is exist or not
- *
- * @return Response
- */
- public function checkExistCustomer()
- {
- //check customer is exist or not
- $customer = $this->customerRepository->findOneWhere([
- 'email' => request()->email
- ]);
-
- //if customer is exist
- if (! is_null($customer)) {
- return 'true';
- }
- return 'false';
- }
-
- //login for checkout
- public function loginForCheckout()
- {
- $this->validate(request(), [
- 'email' => 'required|email'
- ]);
-
- if (! auth()->guard('customer')->attempt(request(['email', 'password']))) {
- return response()->json(['error' => trans('shop::app.customer.login-form.invalid-creds')]);
- }
-
- //Event passed to prepare cart after login
- Cart::mergeCart();
-
- return response()->json(['success' => 'Login successfully']);
- }
}
\ No newline at end of file
diff --git a/packages/Webkul/Shop/src/Resources/lang/en/app.php b/packages/Webkul/Shop/src/Resources/lang/en/app.php
index 7095c10b6..c538d53b8 100755
--- a/packages/Webkul/Shop/src/Resources/lang/en/app.php
+++ b/packages/Webkul/Shop/src/Resources/lang/en/app.php
@@ -499,7 +499,8 @@ return [
'free-desc' => 'This is a free shipping',
'flat-desc' => 'This is a flat rate',
'password' => 'Password',
- 'login-exist-message' => 'You already have an account with us, Sign in or continue as guest.'
+ 'login-exist-message' => 'You already have an account with us, Sign in or continue as guest.',
+ 'enter-coupon-code' => 'Enter Coupon Code'
],
'total' => [
@@ -513,9 +514,13 @@ return [
'disc-amount' => 'Amount discounted',
'new-grand-total' => 'New Grand Total',
'coupon' => 'Coupon',
- 'coupon-applied' => 'Coupon Applied',
+ 'coupon-applied' => 'Applied Coupon',
'remove-coupon' => 'Remove Coupon',
- 'cannot-apply-coupon' => 'Cannot Apply Coupon'
+ 'cannot-apply-coupon' => 'Cannot Apply Coupon',
+ 'invalid-coupon' => 'Coupon code is invalid.',
+ 'success-coupon' => 'Coupon code applied successfully.',
+ 'remove-coupon' => 'Coupon code removed successfully.',
+ 'coupon-apply-issue' => 'Coupon code can\'t be applied.'
],
'success' => [
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 269fc5ca4..72aa3c9bd 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
@@ -127,6 +127,8 @@
@include('shop::checkout.total.summary', ['cart' => $cart])
+
+
{!! view_render_event('bagisto.shop.checkout.cart.summary.after', ['cart' => $cart]) !!}
@@ -155,6 +157,7 @@
@endsection
@push('scripts')
+ @include('shop::checkout.cart.coupon')
diff --git a/packages/Webkul/Shop/src/Resources/views/checkout/total/summary.blade.php b/packages/Webkul/Shop/src/Resources/views/checkout/total/summary.blade.php
index bbab890a3..70d5d87d6 100755
--- a/packages/Webkul/Shop/src/Resources/views/checkout/total/summary.blade.php
+++ b/packages/Webkul/Shop/src/Resources/views/checkout/total/summary.blade.php
@@ -24,15 +24,12 @@
@endif
-
base_discount_amount && $cart->base_discount_amount > 0) style="display: block;" @else style="display: none;" @endif>
@@ -43,36 +40,4 @@
{{ core()->currency($cart->base_grand_total) }}
-
- is('checkout/cart')) v-if="parseInt(discount)" @endif>
- @if (! request()->is('checkout/cart'))
- @if (! $cart->coupon_code)
-
- @else
-
-
-
-
-
-
-
- @endif
- @endif
-
\ No newline at end of file