diff --git a/packages/Webkul/Admin/src/Resources/views/promotions/cart-rule/create.blade.php b/packages/Webkul/Admin/src/Resources/views/promotions/cart-rule/create.blade.php index f42af8a6a..3314f79b0 100644 --- a/packages/Webkul/Admin/src/Resources/views/promotions/cart-rule/create.blade.php +++ b/packages/Webkul/Admin/src/Resources/views/promotions/cart-rule/create.blade.php @@ -104,7 +104,6 @@ diff --git a/packages/Webkul/Admin/src/Resources/views/promotions/cart-rule/edit.blade.php b/packages/Webkul/Admin/src/Resources/views/promotions/cart-rule/edit.blade.php index 613aa47f8..14082b127 100644 --- a/packages/Webkul/Admin/src/Resources/views/promotions/cart-rule/edit.blade.php +++ b/packages/Webkul/Admin/src/Resources/views/promotions/cart-rule/edit.blade.php @@ -106,7 +106,7 @@ @@ -505,23 +505,33 @@ mounted () { data = @json($cart_rule[3]); this.name = data.name; + this.description = data.description; + this.conditions_list = []; + this.channels = []; + for (i in data.channels) { this.channels.push(data.channels[i].channel_id); } this.customer_groups = data.customer_groups; + for (i in data.customer_groups) { this.customer_groups.push(data.customer_groups[i].customer_group_id); } this.ends_till = data.ends_till; + this.starts_from = data.starts_from; + this.priority = data.priority; + this.per_customer = data.per_customer; + this.status = data.status; + if (data.use_coupon == 0) { // this.auto_generation = null; this.use_coupon = 0; @@ -539,24 +549,36 @@ } this.usage_limit = data.usage_limit; + this.is_guest = data.is_guest; this.action_type = data.action_type; + this.apply = null; + this.apply_amt = false; + this.apply_prct = false; + this.apply_to_shipping = data.apply_to_shipping; + this.disc_amount = data.disc_amount; + // this.disc_threshold = data.disc_threshold; + this.disc_quantity = data.disc_quantity; + this.end_other_rules = data.end_other_rules; + this.coupon_type = data.coupon_type; + this.free_shipping = data.free_shipping; this.all_conditions = null; if (data.conditions != null) { this.conditions_list = JSON.parse(JSON.parse(data.conditions)); + this.match_criteria = this.conditions_list.pop().criteria; } @@ -565,6 +587,16 @@ this.attribute_values = JSON.parse(JSON.parse(data.actions).attribute_conditions).attributes; + if (this.category_values == null) { + this.category_values = []; + } + + if (this.attribute_values == null) { + this.attribute_values = []; + } + + console.log(this.category_values); + // creating options and has option param on the frontend for (i in this.attribute_values) { for (j in this.attribute_input) { @@ -689,9 +721,7 @@ delete this.attribute_values[i].options; } - if (this.category_values != null && this.category_values.length > 0) { - this.all_attributes.categories = this.category_values; - } + this.all_attributes.categories = this.category_values; this.all_attributes.attributes = this.attribute_values; @@ -700,10 +730,12 @@ this.all_attributes = null; } - if (this.conditions_list.length != 0) { + if (this.conditions_list != null) { this.conditions_list.push({'criteria': this.match_criteria}); this.all_conditions = JSON.stringify(this.conditions_list); + + this.conditions_list.pop(); } this.$validator.validateAll().then(result => { diff --git a/packages/Webkul/Discount/src/Helpers/Cart/Discount.php b/packages/Webkul/Discount/src/Helpers/Cart/Discount.php index e1334315d..7df74e404 100644 --- a/packages/Webkul/Discount/src/Helpers/Cart/Discount.php +++ b/packages/Webkul/Discount/src/Helpers/Cart/Discount.php @@ -725,6 +725,10 @@ abstract class Discount $result = true; foreach ($conditions as $condition) { + if (! isset($condition->attribute) || ! isset($condition->condition) || !isset($condition->value)) { + continue; + } + if (isset($condition->attribute)) { $actual_value = ${$condition->attribute}; @@ -851,9 +855,12 @@ abstract class Discount } foreach ($conditions as $condition) { + if (!isset($condition->attribute) || ! isset($condition->condition) || !isset($condition->value)) { + continue; + } + if (isset($condition->attribute)) { $actual_value = ${$condition->attribute}; - } else { $result = false; } diff --git a/packages/Webkul/Discount/src/Http/Controllers/CartRuleController.php b/packages/Webkul/Discount/src/Http/Controllers/CartRuleController.php index e31a1aa42..1c98d4b92 100644 --- a/packages/Webkul/Discount/src/Http/Controllers/CartRuleController.php +++ b/packages/Webkul/Discount/src/Http/Controllers/CartRuleController.php @@ -272,7 +272,7 @@ class CartRuleController extends Controller // create a cart rule $ruleCreated = $this->cartRule->create($data); - // can execute convert x here after when the rule is updated + // can execute convertX here after when the rule is updated if (isset($attribute_conditions) && $attribute_conditions != "[]" && $attribute_conditions != "") { $this->convertX->convertX($ruleCreated->id, $attribute_conditions); } @@ -420,7 +420,9 @@ class CartRuleController extends Controller $data['disc_quantity'] = $data['disc_amount']; } else { - if (! isset($attribute_conditions) || $attribute_conditions == "[]" || $attribute_conditions == "") { + $attribute_conditions = json_decode($attribute_conditions); + + if (! (isset($attribute_conditions->categories) && count($attribute_conditions->categories)) && ! (isset($attribute_conditions->attributes) && count($attribute_conditions->attributes))) { $data['uses_attribute_conditions'] = 0; $data['actions'] = [ @@ -435,7 +437,7 @@ class CartRuleController extends Controller 'action_type' => $data['action_type'], 'disc_amount' => $data['disc_amount'], 'disc_quantity' => $data['disc_quantity'], - 'attribute_conditions' => $attribute_conditions + 'attribute_conditions' => json_encode($attribute_conditions) ]; } } @@ -498,7 +500,7 @@ class CartRuleController extends Controller // update cart rule $ruleUpdated = $this->cartRule->update($data, $id); - if (isset($attribute_conditions) && $attribute_conditions != "[]" && $attribute_conditions != "") { + if (isset($attribute_conditions) && $data['uses_attribute_conditions']) { // can execute convert X here after when the rule is updated $this->convertX->convertX($ruleUpdated->id, $attribute_conditions); } else {