Made cart rule conditions interpreter fault tolerant to missing attributes

This commit is contained in:
Prashant Singh 2019-08-21 15:22:37 +05:30
parent 3b61c17155
commit 171b48453e
3 changed files with 11 additions and 3 deletions

View File

@ -104,7 +104,6 @@
<label for="status" class="required">{{ __('admin::app.promotion.general-info.status') }}</label>
<select type="text" class="control" name="status" v-model="status" v-validate="'required'" data-vv-as="&quot;{{ __('admin::app.promotion.general-info.status') }}&quot;">
<option disabled="disabled">{{ __('admin::app.promotion.select-attribtue', ['attribute' => 'Status']) }}</option>
<option value="1">Yes</option>
<option value="0">No</option>
</select>

View File

@ -106,7 +106,7 @@
<label for="status" class="required">{{ __('admin::app.promotion.general-info.status') }}</label>
<select type="text" class="control" name="status" v-model="status" v-validate="'required'" data-vv-as="&quot;{{ __('admin::app.promotion.general-info.status') }}&quot;">
<option disabled="disabled">{{ __('admin::app.promotion.select-attribute', ['attribute' => 'Status']) }}</option>
{{-- <option disabled="disabled">{{ __('admin::app.promotion.select-attribute', ['attribute' => 'Status']) }}</option> --}}
<option value="1">{{ __('admin::app.promotion.yes') }}</option>
<option value="0">{{ __('admin::app.promotion.no') }}</option>
</select>
@ -704,6 +704,8 @@
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 => {

View File

@ -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;
}