diff --git a/packages/Webkul/Admin/src/Resources/views/catalog/products/field-types/date.blade.php b/packages/Webkul/Admin/src/Resources/views/catalog/products/field-types/date.blade.php
index a2f8bbd3e..abec746eb 100755
--- a/packages/Webkul/Admin/src/Resources/views/catalog/products/field-types/date.blade.php
+++ b/packages/Webkul/Admin/src/Resources/views/catalog/products/field-types/date.blade.php
@@ -1,3 +1,3 @@
- is_required ? "v-validate='required'" : '' }} value="{{ old($attribute->code) ?: $product[$attribute->code] }}" data-vv-as=""{{ $attribute->admin_name }}""/>
+
\ No newline at end of file
diff --git a/packages/Webkul/Admin/src/Resources/views/catalog/products/field-types/datetime.blade.php b/packages/Webkul/Admin/src/Resources/views/catalog/products/field-types/datetime.blade.php
index 9c099198c..1b822d36c 100755
--- a/packages/Webkul/Admin/src/Resources/views/catalog/products/field-types/datetime.blade.php
+++ b/packages/Webkul/Admin/src/Resources/views/catalog/products/field-types/datetime.blade.php
@@ -1,3 +1,3 @@
- is_required ? "v-validate='required'" : '' }} value="{{ old($attribute->code) ?: $product[$attribute->code]}}" data-vv-as=""{{ $attribute->admin_name }}"">
+
\ No newline at end of file
diff --git a/packages/Webkul/Discount/src/Http/Controllers/CartRuleController.php b/packages/Webkul/Discount/src/Http/Controllers/CartRuleController.php
index 5b91f0047..cd85e7638 100644
--- a/packages/Webkul/Discount/src/Http/Controllers/CartRuleController.php
+++ b/packages/Webkul/Discount/src/Http/Controllers/CartRuleController.php
@@ -115,6 +115,8 @@ class CartRuleController extends Controller
$this->validate(request(), [
'name' => 'required|string|unique:cart_rules,name',
'description' => 'string',
+ 'starts_from' => 'nullable|date',
+ 'ends_till' => 'nullable|date|after_or_equal:starts_from',
'customer_groups' => 'required|array',
'channels' => 'required|array',
'status' => 'required|boolean',
@@ -339,6 +341,8 @@ class CartRuleController extends Controller
$this->validate(request(), [
'name' => 'required|string|unique:cart_rules,name,'.$id,
'description' => 'string',
+ 'starts_from' => 'nullable|date',
+ 'ends_till' => 'nullable|date|after_or_equal:starts_from',
'customer_groups' => 'required|array',
'channels' => 'required|array',
'status' => 'required|boolean',
diff --git a/packages/Webkul/Discount/src/Http/Controllers/CatalogRuleController.php b/packages/Webkul/Discount/src/Http/Controllers/CatalogRuleController.php
index 75580552e..9bb650a8f 100644
--- a/packages/Webkul/Discount/src/Http/Controllers/CatalogRuleController.php
+++ b/packages/Webkul/Discount/src/Http/Controllers/CatalogRuleController.php
@@ -121,6 +121,8 @@ class CatalogRuleController extends Controller
$this->validate(request(), [
'name' => 'required|string|unique:catalog_rules,name',
'description' => 'string',
+ 'starts_from' => 'nullable|date',
+ 'ends_till' => 'nullable|date|after_or_equal:starts_from',
'starts_from' => 'present|nullable|date',
'ends_till' => 'present|nullable|date',
'customer_groups' => 'required',
@@ -273,8 +275,8 @@ class CatalogRuleController extends Controller
$this->validate(request(), [
'name' => 'required|string|unique:catalog_rules,name,'.$id,
// 'name' => 'required|string',
- 'starts_from' => 'present|nullable|date',
- 'ends_till' => 'present|nullable|date',
+ 'starts_from' => 'nullable|date',
+ 'ends_till' => 'nullable|date|after_or_equal:starts_from',
'description' => 'string',
'customer_groups' => 'required',
'channels' => 'required',
diff --git a/packages/Webkul/Product/src/Http/Requests/ProductForm.php b/packages/Webkul/Product/src/Http/Requests/ProductForm.php
index 2a7e100de..7304c2f82 100755
--- a/packages/Webkul/Product/src/Http/Requests/ProductForm.php
+++ b/packages/Webkul/Product/src/Http/Requests/ProductForm.php
@@ -73,6 +73,8 @@ class ProductForm extends FormRequest
$this->rules = array_merge($product->getTypeInstance()->getTypeValidationRules(), [
'sku' => ['required', 'unique:products,sku,' . $this->id, new \Webkul\Core\Contracts\Validations\Slug],
'images.*' => 'mimes:jpeg,jpg,bmp,png',
+ 'special_price_from' => 'nullable|date',
+ 'special_price_to' => 'nullable|date|after_or_equal:special_price_from'
]);
foreach ($product->getEditableAttributes() as $attribute) {
@@ -81,7 +83,10 @@ class ProductForm extends FormRequest
$validations = [];
- array_push($validations, $attribute->is_required ? 'required' : 'nullable');
+ if (! isset($this->rules[$attribute->code]))
+ array_push($validations, $attribute->is_required ? 'required' : 'nullable');
+ else
+ $validations = $this->rules[$attribute->code];
if ($attribute->type == 'text' && $attribute->validation) {
array_push($validations,
diff --git a/packages/Webkul/Product/src/Type/AbstractType.php b/packages/Webkul/Product/src/Type/AbstractType.php
index e8521d10c..75abbba1e 100644
--- a/packages/Webkul/Product/src/Type/AbstractType.php
+++ b/packages/Webkul/Product/src/Type/AbstractType.php
@@ -162,9 +162,12 @@ abstract class AbstractType
if ($attribute->type == 'boolean')
$data[$attribute->code] = isset($data[$attribute->code]) && $data[$attribute->code] ? 1 : 0;
- if (! isset($data[$attribute->code]) || (in_array($attribute->type, ['date', 'datetime']) && ! $data[$attribute->code]))
+ if (! isset($data[$attribute->code]))
continue;
+ if ($attribute->type == 'date' && $data[$attribute->code] == '')
+ $data[$attribute->code] = null;
+
if ($attribute->type == 'multiselect' || $attribute->type == 'checkbox')
$data[$attribute->code] = implode(",", $data[$attribute->code]);
diff --git a/packages/Webkul/Ui/publishable/assets/css/ui.css b/packages/Webkul/Ui/publishable/assets/css/ui.css
old mode 100755
new mode 100644
diff --git a/packages/Webkul/Ui/publishable/assets/js/ui.js b/packages/Webkul/Ui/publishable/assets/js/ui.js
old mode 100755
new mode 100644
diff --git a/packages/Webkul/Ui/publishable/assets/mix-manifest.json b/packages/Webkul/Ui/publishable/assets/mix-manifest.json
old mode 100755
new mode 100644