diff --git a/packages/Webkul/Admin/src/DataGrids/TaxRateDataGrid.php b/packages/Webkul/Admin/src/DataGrids/TaxRateDataGrid.php index 65165532a..73246f935 100755 --- a/packages/Webkul/Admin/src/DataGrids/TaxRateDataGrid.php +++ b/packages/Webkul/Admin/src/DataGrids/TaxRateDataGrid.php @@ -19,7 +19,7 @@ class TaxRateDataGrid extends DataGrid public function prepareQueryBuilder() { - $queryBuilder = DB::table('tax_rates')->addSelect('id', 'identifier', 'state', 'country', 'tax_rate'); + $queryBuilder = DB::table('tax_rates')->addSelect('id', 'identifier', 'state', 'country', 'zip_code', 'zip_from', 'zip_to', 'tax_rate'); $this->setQueryBuilder($queryBuilder); } @@ -62,6 +62,33 @@ class TaxRateDataGrid extends DataGrid 'filterable' => true ]); + $this->addColumn([ + 'index' => 'zip_code', + 'label' => trans('admin::app.configuration.tax-rates.zip_code'), + 'type' => 'string', + 'searchable' => true, + 'sortable' => true, + 'filterable' => true + ]); + + $this->addColumn([ + 'index' => 'zip_from', + 'label' => trans('admin::app.configuration.tax-rates.zip_from'), + 'type' => 'string', + 'searchable' => true, + 'sortable' => true, + 'filterable' => true + ]); + + $this->addColumn([ + 'index' => 'zip_to', + 'label' => trans('admin::app.configuration.tax-rates.zip_to'), + 'type' => 'string', + 'searchable' => true, + 'sortable' => true, + 'filterable' => true + ]); + $this->addColumn([ 'index' => 'tax_rate', 'label' => trans('admin::app.datagrid.tax-rate'), diff --git a/packages/Webkul/Admin/src/Resources/views/catalog/categories/create.blade.php b/packages/Webkul/Admin/src/Resources/views/catalog/categories/create.blade.php index d62f0213b..a1b838e53 100755 --- a/packages/Webkul/Admin/src/Resources/views/catalog/categories/create.blade.php +++ b/packages/Webkul/Admin/src/Resources/views/catalog/categories/create.blade.php @@ -94,8 +94,8 @@
- - + + @{{ errors.first('description') }}
@@ -189,6 +189,14 @@ toolbar1: 'formatselect | bold italic strikethrough forecolor backcolor | link | alignleft aligncenter alignright alignjustify | numlist bullist outdent indent | removeformat | code', image_advtab: true }); + + $('#display_mode').on('change', function (e) { + if ($('#display_mode').val() != 'products_only') { + $("#descript-label").addClass("required"); + } else { + $("#descript-label").removeClass("required"); + } + }) }); @endpush \ No newline at end of file diff --git a/packages/Webkul/Admin/src/Resources/views/catalog/categories/edit.blade.php b/packages/Webkul/Admin/src/Resources/views/catalog/categories/edit.blade.php index 7a6a593cd..50c89daaf 100755 --- a/packages/Webkul/Admin/src/Resources/views/catalog/categories/edit.blade.php +++ b/packages/Webkul/Admin/src/Resources/views/catalog/categories/edit.blade.php @@ -107,8 +107,8 @@
- - + + @{{ errors.first('{!!$locale!!}[description]') }}
diff --git a/packages/Webkul/Category/src/Http/Controllers/CategoryController.php b/packages/Webkul/Category/src/Http/Controllers/CategoryController.php index ca06cbdfd..4c33db524 100755 --- a/packages/Webkul/Category/src/Http/Controllers/CategoryController.php +++ b/packages/Webkul/Category/src/Http/Controllers/CategoryController.php @@ -75,7 +75,8 @@ class CategoryController extends Controller $this->validate(request(), [ 'slug' => ['required', 'unique:category_translations,slug', new \Webkul\Core\Contracts\Validations\Slug], 'name' => 'required', - 'image.*' => 'mimes:jpeg,jpg,bmp,png' + 'image.*' => 'mimes:jpeg,jpg,bmp,png', + 'description' => 'required_if:display_mode,==,description_only,products_and_description' ]); if (strtolower(request()->input('name')) == 'root') { diff --git a/packages/Webkul/Product/src/Repositories/SearchRepository.php b/packages/Webkul/Product/src/Repositories/SearchRepository.php index 255b4d7e6..1d6b4254a 100755 --- a/packages/Webkul/Product/src/Repositories/SearchRepository.php +++ b/packages/Webkul/Product/src/Repositories/SearchRepository.php @@ -37,9 +37,17 @@ class SearchRepository extends Repository } public function search($data) { - $term = $data['term']; + $query = parse_url($_SERVER['REQUEST_URI'], PHP_URL_QUERY); + $searchTerm = explode("?", $query); + $serachQuery = ''; - $products = $this->product->searchProductByAttribute($term); + foreach($searchTerm as $term){ + if (strpos($term, 'term') !== false) { + $serachQuery = last(explode("=", $term)); + } + } + + $products = $this->product->searchProductByAttribute($serachQuery); return $products; } diff --git a/packages/Webkul/Sales/src/Repositories/ShipmentItemRepository.php b/packages/Webkul/Sales/src/Repositories/ShipmentItemRepository.php index 17302b353..77cd02bc4 100644 --- a/packages/Webkul/Sales/src/Repositories/ShipmentItemRepository.php +++ b/packages/Webkul/Sales/src/Repositories/ShipmentItemRepository.php @@ -4,6 +4,7 @@ namespace Webkul\Sales\Repositories; use Illuminate\Container\Container as App; use Webkul\Core\Eloquent\Repository; +use Illuminate\Support\Facades\Event; /** * ShipmentItem Reposotory @@ -31,16 +32,16 @@ class ShipmentItemRepository extends Repository { if (! $data['product']) return; - + $orderedInventory = $data['product']->ordered_inventories() ->where('channel_id', $data['shipment']->order->channel->id) ->first(); - + if ($orderedInventory) { if (($orderedQty = $orderedInventory->qty - $data['qty']) < 0) { $orderedQty = 0; } - + $orderedInventory->update([ 'qty' => $orderedQty ]); @@ -59,7 +60,7 @@ class ShipmentItemRepository extends Repository if (!$inventory) return; - + if (($qty = $inventory->qty - $data['qty']) < 0) { $qty = 0; } @@ -67,5 +68,7 @@ class ShipmentItemRepository extends Repository $inventory->update([ 'qty' => $qty ]); + + Event::fire('catalog.product.update.after', $data['product']); } } \ 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 d560d2df2..124c4a4ab 100755 --- a/packages/Webkul/Shop/src/Http/Controllers/CartController.php +++ b/packages/Webkul/Shop/src/Http/Controllers/CartController.php @@ -46,6 +46,8 @@ class CartController extends Controller protected $productView; + protected $suppressFlash = false; + public function __construct( CartRepository $cart, CartItemRepository $cartItem, @@ -102,7 +104,7 @@ class CartController extends Controller if ($result) { session()->flash('success', trans('shop::app.checkout.cart.item.success')); - return redirect()->route($this->_config['redirect']); + return redirect()->back(); } else { session()->flash('warning', trans('shop::app.checkout.cart.item.error-add')); @@ -153,7 +155,6 @@ class CartController extends Controller } } - foreach ($request['qty'] as $key => $value) { $item = $this->cartItem->findOneByField('id', $key); @@ -161,7 +162,11 @@ class CartController extends Controller Event::fire('checkout.cart.update.before', $key); - Cart::updateItem($item->product_id, $data, $key); + $result = Cart::updateItem($item->product_id, $data, $key); + + if ($result == false) { + $this->suppressFlash = true; + } Event::fire('checkout.cart.update.after', $item); @@ -171,6 +176,12 @@ class CartController extends Controller Cart::collectTotals(); + if ($this->suppressFlash) { + session()->forget('success'); + session()->forget('warning'); + session()->flash('info', trans('shop::app.checkout.cart.partial-cart-update')); + } + return redirect()->back(); } diff --git a/packages/Webkul/Shop/src/Http/Middleware/Currency.php b/packages/Webkul/Shop/src/Http/Middleware/Currency.php index 1b8250ddf..7bd53fd28 100755 --- a/packages/Webkul/Shop/src/Http/Middleware/Currency.php +++ b/packages/Webkul/Shop/src/Http/Middleware/Currency.php @@ -29,7 +29,17 @@ class Currency */ public function handle($request, Closure $next) { - if ($currency = $request->get('currency')) { + $query = parse_url($_SERVER['REQUEST_URI'], PHP_URL_QUERY); + $currencyTerm = explode("?", $query); + $currencyCode = ''; + + foreach($currencyTerm as $term){ + if (strpos($term, 'currency') !== false) { + $currencyCode = last(explode("=", $term)); + } + } + + if ($currency = $currencyCode) { if ($this->currency->findOneByField('code', $currency)) { session()->put('currency', $currency); } diff --git a/packages/Webkul/Shop/src/Http/Middleware/Locale.php b/packages/Webkul/Shop/src/Http/Middleware/Locale.php index 024f911de..34c2cc24d 100755 --- a/packages/Webkul/Shop/src/Http/Middleware/Locale.php +++ b/packages/Webkul/Shop/src/Http/Middleware/Locale.php @@ -29,7 +29,17 @@ class Locale */ public function handle($request, Closure $next) { - if ($locale = $request->get('locale')) { + $query = parse_url($_SERVER['REQUEST_URI'], PHP_URL_QUERY); + $localeTerm = explode("?", $query); + $localCode = ''; + + foreach($localeTerm as $term){ + if (strpos($term, 'locale') !== false) { + $localCode = last(explode("=", $term)); + } + } + + if ($locale = $localCode) { if ($this->locale->findOneByField('code', $locale)) { app()->setLocale($locale); diff --git a/packages/Webkul/Shop/src/Resources/lang/ar/app.php b/packages/Webkul/Shop/src/Resources/lang/ar/app.php index 009f5f6a6..0cec3a13b 100644 --- a/packages/Webkul/Shop/src/Resources/lang/ar/app.php +++ b/packages/Webkul/Shop/src/Resources/lang/ar/app.php @@ -9,7 +9,7 @@ return [ 'wishlist' => 'قائمة الأماني', 'orders' => 'الأوامر', ], - + 'common' => [ 'error' => 'حدث شيء خاطئ ، رجاء حاول ثانية لاحقا.' ], @@ -385,7 +385,8 @@ return [ ], 'quantity-error' => 'الكمية المطلوبة غير متوفرة', 'cart-subtotal' => 'المجموع الفرعي للعربات', - 'cart-remove-action' => 'هل تريد حقا أن تفعل هذا ؟' + 'cart-remove-action' => 'هل تريد حقا أن تفعل هذا ؟', + 'partial-cart-update' => 'Only some of the product(s) were updated' ], 'onepage' => [ diff --git a/packages/Webkul/Shop/src/Resources/lang/en/app.php b/packages/Webkul/Shop/src/Resources/lang/en/app.php index 333a67753..6b13b3f1f 100755 --- a/packages/Webkul/Shop/src/Resources/lang/en/app.php +++ b/packages/Webkul/Shop/src/Resources/lang/en/app.php @@ -389,7 +389,8 @@ return [ ], 'quantity-error' => 'Requested Quantity Is Not Available', 'cart-subtotal' => 'Cart Subtotal', - 'cart-remove-action' => 'Do you really want to do this ?' + 'cart-remove-action' => 'Do you really want to do this ?', + 'partial-cart-update' => 'Only some of the product(s) were updated' ], 'onepage' => [ diff --git a/packages/Webkul/Shop/src/Resources/lang/pt_BR/app.php b/packages/Webkul/Shop/src/Resources/lang/pt_BR/app.php index 4f3c67369..80846d82f 100755 --- a/packages/Webkul/Shop/src/Resources/lang/pt_BR/app.php +++ b/packages/Webkul/Shop/src/Resources/lang/pt_BR/app.php @@ -390,7 +390,8 @@ return [ ], 'quantity-error' => 'Quantidade solicitada não está disponível', 'cart-subtotal' => 'Subtotal do carrinho', - 'cart-remove-action' => 'Você realmente quer fazer isso ?' + 'cart-remove-action' => 'Você realmente quer fazer isso ?', + 'partial-cart-update' => 'Only some of the product(s) were updated' ], 'onepage' => [ diff --git a/packages/Webkul/Shop/src/Resources/views/layouts/footer/footer.blade.php b/packages/Webkul/Shop/src/Resources/views/layouts/footer/footer.blade.php index 918b9f454..2f91d9f95 100755 --- a/packages/Webkul/Shop/src/Resources/views/layouts/footer/footer.blade.php +++ b/packages/Webkul/Shop/src/Resources/views/layouts/footer/footer.blade.php @@ -30,13 +30,28 @@ + + {{ __('shop::app.footer.locale') }}
@@ -50,7 +65,11 @@ diff --git a/packages/Webkul/Shop/src/Resources/views/layouts/header/index.blade.php b/packages/Webkul/Shop/src/Resources/views/layouts/header/index.blade.php index 3e741da14..f86c3eb55 100755 --- a/packages/Webkul/Shop/src/Resources/views/layouts/header/index.blade.php +++ b/packages/Webkul/Shop/src/Resources/views/layouts/header/index.blade.php @@ -28,6 +28,16 @@
+
@@ -48,7 +58,11 @@ diff --git a/packages/Webkul/Tax/src/Http/Controllers/TaxRateController.php b/packages/Webkul/Tax/src/Http/Controllers/TaxRateController.php index 6b661771d..9d08d8830 100755 --- a/packages/Webkul/Tax/src/Http/Controllers/TaxRateController.php +++ b/packages/Webkul/Tax/src/Http/Controllers/TaxRateController.php @@ -189,11 +189,20 @@ class TaxRateController extends Controller foreach ($excelData as $data) { foreach ($data as $column => $uploadData) { + + if (!is_null($uploadData['zip_from']) && !is_null($uploadData['zip_to'])) { + $uploadData['is_zip'] = 1; + } + $validator = Validator::make($uploadData, [ 'identifier' => 'required|string', 'state' => 'required|string', 'country' => 'required|string', - 'tax_rate' => 'required|numeric' + 'tax_rate' => 'required|numeric', + 'is_zip' => 'sometimes', + 'zip_code' => 'sometimes|required_without:is_zip', + 'zip_from' => 'nullable|required_with:is_zip', + 'zip_to' => 'nullable|required_with:is_zip,zip_from', ]); if ($validator->fails()) { @@ -230,6 +239,12 @@ class TaxRateController extends Controller $errorMsg[$coulmn] = $fail->first('country'); } else if ($fail->first('state')) { $errorMsg[$coulmn] = $fail->first('state'); + } else if ($fail->first('zip_code')) { + $errorMsg[$coulmn] = $fail->first('zip_code'); + } else if ($fail->first('zip_from')) { + $errorMsg[$coulmn] = $fail->first('zip_from'); + } else if ($fail->first('zip_to')) { + $errorMsg[$coulmn] = $fail->first('zip_to'); } } @@ -250,6 +265,11 @@ class TaxRateController extends Controller foreach ($excelData as $data) { foreach ($data as $column => $uploadData) { + if (!is_null($uploadData['zip_from']) && !is_null($uploadData['zip_to'])) { + $uploadData['is_zip'] = 1; + $uploadData['zip_code'] = NULL; + } + if (isset($rateIdentifier)) { $id = array_search($uploadData['identifier'], $rateIdentifier); if ($id) {