From 832c8450919da643035039bad4c7c6d3798fef11 Mon Sep 17 00:00:00 2001 From: Prashant Singh Date: Fri, 1 Nov 2019 15:40:11 +0530 Subject: [PATCH] Fixed issue #1543 and Cart rule related issues --- ...5_135152_create_attribute_groups_table.php | 4 +- ...swatch_type_column_in_attributes_table.php | 2 +- ...lue_columns_in_attribute_options_table.php | 2 +- ...use_in_flat_column_in_attributes_table.php | 2 +- ...isplay_mode_column_in_categories_table.php | 2 +- ...add_locale_id_in_category_translations.php | 6 ++- ..._type_to_varchar_in_cart_address_table.php | 2 +- ..._rename_discount_columns_in_cart_table.php | 3 +- ...custom_price_to_nullable_in_cart_items.php | 8 +++- ...lumn_deafult_value_in_cart_items_table.php | 2 +- ...018_07_20_064849_create_channels_table.php | 6 ++- ...change_content_column_in_sliders_table.php | 4 +- ...625_drop_foreign_key_core_config_table.php | 5 +-- ...8_12_05_132629_alter_core_config_table.php | 6 +-- ...lumn_type_to_text_in_core_config_table.php | 2 +- ..._add_symbol_column_in_currencies_table.php | 2 +- .../2019_07_23_033128_alter_locales_table.php | 4 +- ..._is_verified_column_in_customers_table.php | 4 +- ...58_add_notes_column_in_customers_table.php | 1 + ...09_add_phone_column_in_customers_table.php | 4 +- ...d_code_column_in_customer_groups_table.php | 2 +- ...que_in_phone_column_in_customers_table.php | 4 +- ...dd_additional_cloumn_in_wishlist_table.php | 2 +- .../Discount/src/Actions/Cart/Action.php | 37 ++++++++----------- .../Discount/src/Actions/Cart/FixedAmount.php | 21 ++++------- .../src/Actions/Cart/PercentOfProduct.php | 34 ++++++----------- ...19_05_13_024326_create_cart_rule_table.php | 2 +- ...75727_create_cart_rule_customers_table.php | 2 +- ..._180457_create_cart_rule_coupons_table.php | 2 +- ..._30_141207_create_cart_rule_cart_table.php | 2 +- ...eate_catalog_rule_products_price_table.php | 2 +- .../Discount/src/Helpers/Cart/Discount.php | 2 +- ...018_07_27_065727_create_products_table.php | 10 ++++- ...id_column_in_product_inventories_table.php | 4 +- ...pdated_at_column_in_product_flat_table.php | 21 ++++------- ...max_price_column_in_product_flat_table.php | 3 +- ...r_customer_id_in_product_reviews_table.php | 2 +- ...remaining_column_in_product_flat_table.php | 22 ++++++++++- .../2018_11_15_153257_alter_order_table.php | 4 +- .../2018_11_15_163729_alter_invoice_table.php | 4 +- ...018_12_24_184402_alter_shipments_table.php | 5 ++- ...iscount_columns_in_invoice_items_table.php | 4 +- ...08_30_065840_create_tax_mappings_table.php | 2 +- .../2018_06_12_111907_create_admins_table.php | 1 - 44 files changed, 142 insertions(+), 123 deletions(-) diff --git a/packages/Webkul/Attribute/src/Database/Migrations/2018_07_05_135152_create_attribute_groups_table.php b/packages/Webkul/Attribute/src/Database/Migrations/2018_07_05_135152_create_attribute_groups_table.php index bfaca20b4..7c843c6d6 100755 --- a/packages/Webkul/Attribute/src/Database/Migrations/2018_07_05_135152_create_attribute_groups_table.php +++ b/packages/Webkul/Attribute/src/Database/Migrations/2018_07_05_135152_create_attribute_groups_table.php @@ -40,8 +40,8 @@ class CreateAttributeGroupsTable extends Migration */ public function down() { - Schema::dropIfExists('attribute_groups'); - Schema::dropIfExists('attribute_group_mappings'); + + Schema::dropIfExists('attribute_groups'); } } diff --git a/packages/Webkul/Attribute/src/Database/Migrations/2019_02_21_152709_add_swatch_type_column_in_attributes_table.php b/packages/Webkul/Attribute/src/Database/Migrations/2019_02_21_152709_add_swatch_type_column_in_attributes_table.php index 51870a8f5..9d7230b4a 100644 --- a/packages/Webkul/Attribute/src/Database/Migrations/2019_02_21_152709_add_swatch_type_column_in_attributes_table.php +++ b/packages/Webkul/Attribute/src/Database/Migrations/2019_02_21_152709_add_swatch_type_column_in_attributes_table.php @@ -26,7 +26,7 @@ class AddSwatchTypeColumnInAttributesTable extends Migration public function down() { Schema::table('attributes', function (Blueprint $table) { - // + $table->dropColumn('swatch_type'); }); } } diff --git a/packages/Webkul/Attribute/src/Database/Migrations/2019_02_21_153851_add_swatch_value_columns_in_attribute_options_table.php b/packages/Webkul/Attribute/src/Database/Migrations/2019_02_21_153851_add_swatch_value_columns_in_attribute_options_table.php index 40ecd95d2..6cbef8934 100644 --- a/packages/Webkul/Attribute/src/Database/Migrations/2019_02_21_153851_add_swatch_value_columns_in_attribute_options_table.php +++ b/packages/Webkul/Attribute/src/Database/Migrations/2019_02_21_153851_add_swatch_value_columns_in_attribute_options_table.php @@ -26,7 +26,7 @@ class AddSwatchValueColumnsInAttributeOptionsTable extends Migration public function down() { Schema::table('attribute_options', function (Blueprint $table) { - // + $table->dropColumn('swatch_value'); }); } } diff --git a/packages/Webkul/Attribute/src/Database/Migrations/2019_07_29_142734_add_use_in_flat_column_in_attributes_table.php b/packages/Webkul/Attribute/src/Database/Migrations/2019_07_29_142734_add_use_in_flat_column_in_attributes_table.php index d52675871..14a3cfa32 100644 --- a/packages/Webkul/Attribute/src/Database/Migrations/2019_07_29_142734_add_use_in_flat_column_in_attributes_table.php +++ b/packages/Webkul/Attribute/src/Database/Migrations/2019_07_29_142734_add_use_in_flat_column_in_attributes_table.php @@ -26,7 +26,7 @@ class AddUseInFlatColumnInAttributesTable extends Migration public function down() { Schema::table('attributes', function (Blueprint $table) { - // + $table->dropColumn('use_in_flat'); }); } } diff --git a/packages/Webkul/Category/src/Database/Migrations/2019_03_15_123337_add_display_mode_column_in_categories_table.php b/packages/Webkul/Category/src/Database/Migrations/2019_03_15_123337_add_display_mode_column_in_categories_table.php index fa77a1f38..aff2f8b6e 100644 --- a/packages/Webkul/Category/src/Database/Migrations/2019_03_15_123337_add_display_mode_column_in_categories_table.php +++ b/packages/Webkul/Category/src/Database/Migrations/2019_03_15_123337_add_display_mode_column_in_categories_table.php @@ -26,7 +26,7 @@ class AddDisplayModeColumnInCategoriesTable extends Migration public function down() { Schema::table('categories', function (Blueprint $table) { - // + $table->dropColumn('display_mode'); }); } } diff --git a/packages/Webkul/Category/src/Database/Migrations/2019_07_11_151210_add_locale_id_in_category_translations.php b/packages/Webkul/Category/src/Database/Migrations/2019_07_11_151210_add_locale_id_in_category_translations.php index 5c4e754c3..43978ec7b 100644 --- a/packages/Webkul/Category/src/Database/Migrations/2019_07_11_151210_add_locale_id_in_category_translations.php +++ b/packages/Webkul/Category/src/Database/Migrations/2019_07_11_151210_add_locale_id_in_category_translations.php @@ -29,6 +29,10 @@ class AddLocaleIdInCategoryTranslations extends Migration */ public function down() { - // + Schema::table('category_translations', function (Blueprint $table) { + $table->dropForeign(['locale_id']); + + $table->dropColumn('locale_id'); + }); } } diff --git a/packages/Webkul/Checkout/src/Database/Migrations/2019_05_22_165833_update_zipcode_column_type_to_varchar_in_cart_address_table.php b/packages/Webkul/Checkout/src/Database/Migrations/2019_05_22_165833_update_zipcode_column_type_to_varchar_in_cart_address_table.php index e0fd934b1..2deda260e 100644 --- a/packages/Webkul/Checkout/src/Database/Migrations/2019_05_22_165833_update_zipcode_column_type_to_varchar_in_cart_address_table.php +++ b/packages/Webkul/Checkout/src/Database/Migrations/2019_05_22_165833_update_zipcode_column_type_to_varchar_in_cart_address_table.php @@ -26,7 +26,7 @@ class UpdateZipcodeColumnTypeToVarcharInCartAddressTable extends Migration public function down() { Schema::table('cart_address', function (Blueprint $table) { - // + $table->integer('postcode')->change(); }); } } diff --git a/packages/Webkul/Checkout/src/Database/Migrations/2019_05_23_184029_rename_discount_columns_in_cart_table.php b/packages/Webkul/Checkout/src/Database/Migrations/2019_05_23_184029_rename_discount_columns_in_cart_table.php index a96df1be2..44546ded3 100644 --- a/packages/Webkul/Checkout/src/Database/Migrations/2019_05_23_184029_rename_discount_columns_in_cart_table.php +++ b/packages/Webkul/Checkout/src/Database/Migrations/2019_05_23_184029_rename_discount_columns_in_cart_table.php @@ -27,7 +27,8 @@ class RenameDiscountColumnsInCartTable extends Migration public function down() { Schema::table('cart', function (Blueprint $table) { - // + $table->renameColumn('discount_amount', 'discount'); + $table->renameColumn('base_discount_amount', 'base_discount'); }); } } diff --git a/packages/Webkul/Checkout/src/Database/Migrations/2019_06_06_195905_update_custom_price_to_nullable_in_cart_items.php b/packages/Webkul/Checkout/src/Database/Migrations/2019_06_06_195905_update_custom_price_to_nullable_in_cart_items.php index feef7a87d..58d2dac96 100644 --- a/packages/Webkul/Checkout/src/Database/Migrations/2019_06_06_195905_update_custom_price_to_nullable_in_cart_items.php +++ b/packages/Webkul/Checkout/src/Database/Migrations/2019_06_06_195905_update_custom_price_to_nullable_in_cart_items.php @@ -29,6 +29,12 @@ class UpdateCustomPriceToNullableInCartItems extends Migration */ public function down() { - // + Schema::table('cart_items', function (Blueprint $table) { + $table->dropColumn('custom_price'); + }); + + Schema::table('cart_items', function (Blueprint $table) { + $table->decimal('custom_price', 12,4)->default(0); + }); } } diff --git a/packages/Webkul/Checkout/src/Database/Migrations/2019_06_21_130512_update_weight_column_deafult_value_in_cart_items_table.php b/packages/Webkul/Checkout/src/Database/Migrations/2019_06_21_130512_update_weight_column_deafult_value_in_cart_items_table.php index 00c33c69c..a57076dba 100644 --- a/packages/Webkul/Checkout/src/Database/Migrations/2019_06_21_130512_update_weight_column_deafult_value_in_cart_items_table.php +++ b/packages/Webkul/Checkout/src/Database/Migrations/2019_06_21_130512_update_weight_column_deafult_value_in_cart_items_table.php @@ -26,7 +26,7 @@ class UpdateWeightColumnDeafultValueInCartItemsTable extends Migration public function down() { Schema::table('cart_items', function (Blueprint $table) { - // + $table->decimal('weight', 12,4)->default(1)->change(); }); } } diff --git a/packages/Webkul/Core/src/Database/Migrations/2018_07_20_064849_create_channels_table.php b/packages/Webkul/Core/src/Database/Migrations/2018_07_20_064849_create_channels_table.php index 4093ecab5..0dbbf3f61 100755 --- a/packages/Webkul/Core/src/Database/Migrations/2018_07_20_064849_create_channels_table.php +++ b/packages/Webkul/Core/src/Database/Migrations/2018_07_20_064849_create_channels_table.php @@ -56,8 +56,10 @@ class CreateChannelsTable extends Migration */ public function down() { - Schema::dropIfExists('channels'); - Schema::dropIfExists('channel_currencies'); + + Schema::dropIfExists('channel_locales'); + + Schema::dropIfExists('channels'); } } \ No newline at end of file diff --git a/packages/Webkul/Core/src/Database/Migrations/2018_11_27_174449_change_content_column_in_sliders_table.php b/packages/Webkul/Core/src/Database/Migrations/2018_11_27_174449_change_content_column_in_sliders_table.php index 785d202a5..0415348e4 100755 --- a/packages/Webkul/Core/src/Database/Migrations/2018_11_27_174449_change_content_column_in_sliders_table.php +++ b/packages/Webkul/Core/src/Database/Migrations/2018_11_27_174449_change_content_column_in_sliders_table.php @@ -25,8 +25,6 @@ class ChangeContentColumnInSlidersTable extends Migration */ public function down() { - Schema::table('sliders', function (Blueprint $table) { - $table->string('content')->change(); - }); + // } } diff --git a/packages/Webkul/Core/src/Database/Migrations/2018_12_05_132625_drop_foreign_key_core_config_table.php b/packages/Webkul/Core/src/Database/Migrations/2018_12_05_132625_drop_foreign_key_core_config_table.php index b154ae934..c5728bd20 100755 --- a/packages/Webkul/Core/src/Database/Migrations/2018_12_05_132625_drop_foreign_key_core_config_table.php +++ b/packages/Webkul/Core/src/Database/Migrations/2018_12_05_132625_drop_foreign_key_core_config_table.php @@ -26,9 +26,6 @@ class DropForeignKeyCoreConfigTable extends Migration */ public function down() { - Schema::table('core_config', function (Blueprint $table) { - $table->dropForeign('core_config_channel_id_foreign'); - $table->renameColumn('channel_id', 'channel_code'); - }); + // } } diff --git a/packages/Webkul/Core/src/Database/Migrations/2018_12_05_132629_alter_core_config_table.php b/packages/Webkul/Core/src/Database/Migrations/2018_12_05_132629_alter_core_config_table.php index 222a9b79e..66bd60e15 100755 --- a/packages/Webkul/Core/src/Database/Migrations/2018_12_05_132629_alter_core_config_table.php +++ b/packages/Webkul/Core/src/Database/Migrations/2018_12_05_132629_alter_core_config_table.php @@ -27,10 +27,6 @@ class AlterCoreConfigTable extends Migration */ public function down() { - Schema::table('core_config', function (Blueprint $table) { - $table->string('channel_code')->nullable()->change(); - $table->string('locale_code')->nullable(); - $table->timestamps(); - }); + // } } diff --git a/packages/Webkul/Core/src/Database/Migrations/2019_01_31_164117_update_value_column_type_to_text_in_core_config_table.php b/packages/Webkul/Core/src/Database/Migrations/2019_01_31_164117_update_value_column_type_to_text_in_core_config_table.php index 8b6786020..e71957298 100644 --- a/packages/Webkul/Core/src/Database/Migrations/2019_01_31_164117_update_value_column_type_to_text_in_core_config_table.php +++ b/packages/Webkul/Core/src/Database/Migrations/2019_01_31_164117_update_value_column_type_to_text_in_core_config_table.php @@ -25,6 +25,6 @@ class UpdateValueColumnTypeToTextInCoreConfigTable extends Migration */ public function down() { - + // } } diff --git a/packages/Webkul/Core/src/Database/Migrations/2019_07_05_114157_add_symbol_column_in_currencies_table.php b/packages/Webkul/Core/src/Database/Migrations/2019_07_05_114157_add_symbol_column_in_currencies_table.php index fae7e2d64..561014543 100644 --- a/packages/Webkul/Core/src/Database/Migrations/2019_07_05_114157_add_symbol_column_in_currencies_table.php +++ b/packages/Webkul/Core/src/Database/Migrations/2019_07_05_114157_add_symbol_column_in_currencies_table.php @@ -26,7 +26,7 @@ class AddSymbolColumnInCurrenciesTable extends Migration public function down() { Schema::table('currencies', function (Blueprint $table) { - // + $table->dropColumn('symbol'); }); } } diff --git a/packages/Webkul/Core/src/Database/Migrations/2019_07_23_033128_alter_locales_table.php b/packages/Webkul/Core/src/Database/Migrations/2019_07_23_033128_alter_locales_table.php index bcca3d042..f79a0a753 100644 --- a/packages/Webkul/Core/src/Database/Migrations/2019_07_23_033128_alter_locales_table.php +++ b/packages/Webkul/Core/src/Database/Migrations/2019_07_23_033128_alter_locales_table.php @@ -25,6 +25,8 @@ class AlterLocalesTable extends Migration */ public function down() { - + Schema::table('locales', function (Blueprint $table) { + $table->dropColumn('direction'); + }); } } diff --git a/packages/Webkul/Customer/src/Database/Migrations/2018_11_17_165758_add_is_verified_column_in_customers_table.php b/packages/Webkul/Customer/src/Database/Migrations/2018_11_17_165758_add_is_verified_column_in_customers_table.php index 2f764e150..05a21af53 100755 --- a/packages/Webkul/Customer/src/Database/Migrations/2018_11_17_165758_add_is_verified_column_in_customers_table.php +++ b/packages/Webkul/Customer/src/Database/Migrations/2018_11_17_165758_add_is_verified_column_in_customers_table.php @@ -14,8 +14,8 @@ class AddIsVerifiedColumnInCustomersTable extends Migration public function up() { Schema::table('customers', function (Blueprint $table) { - $table->boolean('is_verified')->default(0)->after('subscribed_to_news_letter'); - $table->string('token')->nullable()->after('is_verified'); + $table->boolean('is_verified')->default(0); + $table->string('token')->nullable(); $table->dropColumn('gender'); }); } diff --git a/packages/Webkul/Customer/src/Database/Migrations/2019_03_28_103658_add_notes_column_in_customers_table.php b/packages/Webkul/Customer/src/Database/Migrations/2019_03_28_103658_add_notes_column_in_customers_table.php index 12793a5f3..ec4f45089 100644 --- a/packages/Webkul/Customer/src/Database/Migrations/2019_03_28_103658_add_notes_column_in_customers_table.php +++ b/packages/Webkul/Customer/src/Database/Migrations/2019_03_28_103658_add_notes_column_in_customers_table.php @@ -26,6 +26,7 @@ class AddNotesColumnInCustomersTable extends Migration public function down() { Schema::table('customers', function (Blueprint $table) { + $table->dropColumn('notes'); }); } } diff --git a/packages/Webkul/Customer/src/Database/Migrations/2019_06_04_114009_add_phone_column_in_customers_table.php b/packages/Webkul/Customer/src/Database/Migrations/2019_06_04_114009_add_phone_column_in_customers_table.php index 324518592..76f585c98 100644 --- a/packages/Webkul/Customer/src/Database/Migrations/2019_06_04_114009_add_phone_column_in_customers_table.php +++ b/packages/Webkul/Customer/src/Database/Migrations/2019_06_04_114009_add_phone_column_in_customers_table.php @@ -28,7 +28,9 @@ class AddPhoneColumnInCustomersTable extends Migration public function down() { Schema::table('customers', function (Blueprint $table) { - // + if (Schema::hasColumn('customers', 'phone')) { + $table->dropColumn('phone'); + } }); } } diff --git a/packages/Webkul/Customer/src/Database/Migrations/2019_06_15_183412_add_code_column_in_customer_groups_table.php b/packages/Webkul/Customer/src/Database/Migrations/2019_06_15_183412_add_code_column_in_customer_groups_table.php index 02c82b1ec..dbc547707 100644 --- a/packages/Webkul/Customer/src/Database/Migrations/2019_06_15_183412_add_code_column_in_customer_groups_table.php +++ b/packages/Webkul/Customer/src/Database/Migrations/2019_06_15_183412_add_code_column_in_customer_groups_table.php @@ -26,7 +26,7 @@ class AddCodeColumnInCustomerGroupsTable extends Migration public function down() { Schema::table('customer_groups', function (Blueprint $table) { - // + $table->dropColumn('code'); }); } } diff --git a/packages/Webkul/Customer/src/Database/Migrations/2019_06_19_162817_remove_unique_in_phone_column_in_customers_table.php b/packages/Webkul/Customer/src/Database/Migrations/2019_06_19_162817_remove_unique_in_phone_column_in_customers_table.php index 3953f8b0a..d824f6bf2 100644 --- a/packages/Webkul/Customer/src/Database/Migrations/2019_06_19_162817_remove_unique_in_phone_column_in_customers_table.php +++ b/packages/Webkul/Customer/src/Database/Migrations/2019_06_19_162817_remove_unique_in_phone_column_in_customers_table.php @@ -28,7 +28,9 @@ class RemoveUniqueInPhoneColumnInCustomersTable extends Migration public function down() { Schema::table('customers', function (Blueprint $table) { - // + if ( Schema::hasColumn('customers', 'phone')) { + $table->unique('phone'); + } }); } } diff --git a/packages/Webkul/Customer/src/Database/Migrations/2019_08_12_184925_add_additional_cloumn_in_wishlist_table.php b/packages/Webkul/Customer/src/Database/Migrations/2019_08_12_184925_add_additional_cloumn_in_wishlist_table.php index b3f3ce787..553d082fd 100644 --- a/packages/Webkul/Customer/src/Database/Migrations/2019_08_12_184925_add_additional_cloumn_in_wishlist_table.php +++ b/packages/Webkul/Customer/src/Database/Migrations/2019_08_12_184925_add_additional_cloumn_in_wishlist_table.php @@ -26,7 +26,7 @@ class AddAdditionalCloumnInWishlistTable extends Migration public function down() { Schema::table('wishlist', function (Blueprint $table) { - // + $table->dropColumn('additional'); }); } } diff --git a/packages/Webkul/Discount/src/Actions/Cart/Action.php b/packages/Webkul/Discount/src/Actions/Cart/Action.php index 4bcd7e06b..9f81ed18b 100644 --- a/packages/Webkul/Discount/src/Actions/Cart/Action.php +++ b/packages/Webkul/Discount/src/Actions/Cart/Action.php @@ -31,38 +31,38 @@ abstract class Action * * @return Collection $matchedItems */ - public function getEligibleItems($rule) + public function getEligibleItems() { + $rule = $this->rule; + $cart = \Cart::getCart(); $items = $cart->items()->get(); - $productIDs = $rule->product_ids; + if ($this->rule->action_type == 'whole_cart_to_percent' || $this->rule->action_type == 'whole_cart_to_fixed_amount') { + $this->matchedItems = $items; + } - $productIDs = explode(',', $productIDs); - - $matchCriteria = $rule->uses_attribute_conditions ? $rule->product_ids : '*'; - - if ($matchCriteria == '*') { + if (! $rule->uses_attribute_conditions) { $this->matchedItems = $items; return $this->matchedItems; } else { - $matchingIDs = explode(',', $matchCriteria); + $productIDs = explode(',', $rule->product_ids); foreach ($items as $item) { - foreach ($matchingIDs as $matchingID) { + foreach ($productIDs as $productID) { $childrens = collect(); $childrens = $item->children; foreach ($childrens as $children) { - if ($children->product_id == $matchingID) { - $this->pushItem($children); + if ($children->product_id == $productID) { + $this->matchedItems->push($children); } } - if ($item->product_id == $matchingID) { - $this->pushItem($item); + if ($item->product_id == $productID) { + $this->matchedItems->push($item); } } } @@ -85,11 +85,11 @@ abstract class Action return true; } else { if ($rule->action_type == 'whole_cart_to_percent' && $rule->uses_attribute_condition) { - $matchIDs = explode(',', $rule->product_ids); + $matchingIDs = explode(',', $rule->product_ids); - foreach ($matchIDs as $matchID) { + foreach ($matchingIDs as $matchingID) { foreach ($eligibleItems as $item) { - if (($item->child ? $item->child->product_id : $item->product_id) == $matchID) { + if (($item->child ? $item->child->product_id : $item->product_id) == $matchingID) { return true; } } @@ -104,9 +104,4 @@ abstract class Action return $apply(); } - - - private function pushItem($item) { - $this->matchedItems->push($item); - } } \ No newline at end of file diff --git a/packages/Webkul/Discount/src/Actions/Cart/FixedAmount.php b/packages/Webkul/Discount/src/Actions/Cart/FixedAmount.php index e5d42490e..4cca8221a 100644 --- a/packages/Webkul/Discount/src/Actions/Cart/FixedAmount.php +++ b/packages/Webkul/Discount/src/Actions/Cart/FixedAmount.php @@ -6,29 +6,25 @@ use Webkul\Discount\Actions\Cart\Action; class FixedAmount extends Action { - public function calculate($rule) + public function __construct($rule) { /** * Setting the rule getting applied */ $this->rule = $rule; + } + public function calculate($rule) + { $impact = collect(); $totalDiscount = 0; - $applicability = $this->checkApplicability(); - - if ($applicability) { - if ($rule->action_type == 'whole_cart_to_fixed') { - $eligibleItems = \Cart::getCart()->items; - } - - $eligibleItems = \Cart::getCart()->items; + if ($this->checkApplicability()) { + $eligibleItems = $this->getEligibleItems(); foreach ($eligibleItems as $item) { $report = array(); - $report['item_id'] = $item->id; $report['child_items'] = collect(); @@ -37,7 +33,6 @@ class FixedAmount extends Action $itemQuantity = $item->quantity; $discQuantity = $rule->disc_quantity; - $discQuantity = $itemQuantity <= $discQuantity ? $itemQuantity : $discQuantity; if ($item->product->getTypeInstance()->isComposite()) { @@ -59,7 +54,7 @@ class FixedAmount extends Action foreach ($item->children as $children) { $childBaseTotal = $children->base_total; - $itemDiscount = $childBaseTotal / (\Cart::getCart()->base_sub_total / 100); + $itemDiscount = $childBaseTotal / ($item->base_total / 100); $children->discount = ($itemDiscount / 100) * $rule->disc_amount; @@ -73,11 +68,9 @@ class FixedAmount extends Action } $discount = round($rule->disc_amount, 4) * $discQuantity; - $discount = $discount <= $itemPrice * $discQuantity ? $discount : $itemPrice * $discQuantity; $report['discount'] = $discount; - $report['formatted_discount'] = core()->currency($discount); $impact->push($report); diff --git a/packages/Webkul/Discount/src/Actions/Cart/PercentOfProduct.php b/packages/Webkul/Discount/src/Actions/Cart/PercentOfProduct.php index ef314bd86..9f29ad329 100644 --- a/packages/Webkul/Discount/src/Actions/Cart/PercentOfProduct.php +++ b/packages/Webkul/Discount/src/Actions/Cart/PercentOfProduct.php @@ -6,6 +6,14 @@ use Webkul\Discount\Actions\Cart\Action; class PercentOfProduct extends Action { + public function __construct($rule) + { + /** + * Setting the rule getting applied + */ + $this->rule = $rule; + } + /** * To calculate impact of cart rule's action of current items of cart instance * @@ -15,11 +23,6 @@ class PercentOfProduct extends Action */ public function calculate($rule) { - /** - * Setting the rule getting applied - */ - $this->rule = $rule; - $impact = collect(); $totalDiscount = 0; @@ -27,13 +30,7 @@ class PercentOfProduct extends Action $applicability = $this->checkApplicability(); if ($applicability) { - if ($this->rule->action_type == 'whole_cart_to_percent') { - $eligibleItems = \Cart::getCart()->items; - } - - $cart = \Cart::getCart(); - - $eligibleItems = $cart->items; + $eligibleItems = $this->getEligibleItems(); foreach ($eligibleItems as $item) { $report = array(); @@ -42,21 +39,14 @@ class PercentOfProduct extends Action $report['child_items'] = collect(); $itemPrice = $item->base_price; - $itemQuantity = $item->quantity; $discQuantity = $this->rule->disc_quantity; - $discQuantity = $itemQuantity <= $discQuantity ? $itemQuantity : $discQuantity; - if ($this->rule->disc_amount > 100) { - $discount_amount = 100; - } else { - $discount_amount = $this->rule->disc_amount; - } + $discount_amount = ($this->rule->disc_amount > 100) ? 100 : $this->rule->disc_amount; $discount = $itemPrice * ($discount_amount / 100) * $discQuantity; - $discount = $discount <= $itemPrice * $discQuantity ? $discount : $itemPrice * $discQuantity; if ($item->product->getTypeInstance()->isComposite()) { @@ -78,9 +68,9 @@ class PercentOfProduct extends Action foreach ($item->children as $children) { $childBaseTotal = $children->base_total; - $itemDiscount = $childBaseTotal / (\Cart::getCart()->base_sub_total / 100); + $itemDiscount = $childBaseTotal / ($item->base_total / 100); - $children->discount = ($itemDiscount / 100) * ($cart->base_sub_total * ($this->rule->disc_amount / 100)); + $children->discount = ($itemDiscount / 100) * ($item->base_total * ($this->rule->disc_amount / 100)); $children->discount = $children->base_total > $children->discount ? $children->discount : $children->base_total; diff --git a/packages/Webkul/Discount/src/Database/Migrations/2019_05_13_024326_create_cart_rule_table.php b/packages/Webkul/Discount/src/Database/Migrations/2019_05_13_024326_create_cart_rule_table.php index 41859725a..4d9190e65 100644 --- a/packages/Webkul/Discount/src/Database/Migrations/2019_05_13_024326_create_cart_rule_table.php +++ b/packages/Webkul/Discount/src/Database/Migrations/2019_05_13_024326_create_cart_rule_table.php @@ -56,6 +56,6 @@ class CreateCartRuleTable extends Migration */ public function down() { - Schema::dropIfExists('cart_rule'); + Schema::dropIfExists('cart_rules'); } } diff --git a/packages/Webkul/Discount/src/Database/Migrations/2019_05_23_175727_create_cart_rule_customers_table.php b/packages/Webkul/Discount/src/Database/Migrations/2019_05_23_175727_create_cart_rule_customers_table.php index a65435173..fbe323ab1 100644 --- a/packages/Webkul/Discount/src/Database/Migrations/2019_05_23_175727_create_cart_rule_customers_table.php +++ b/packages/Webkul/Discount/src/Database/Migrations/2019_05_23_175727_create_cart_rule_customers_table.php @@ -31,6 +31,6 @@ class CreateCartruleCustomersTable extends Migration */ public function down() { - Schema::dropIfExists('cartrule_customers'); + Schema::dropIfExists('cart_rule_customers'); } } diff --git a/packages/Webkul/Discount/src/Database/Migrations/2019_05_23_180457_create_cart_rule_coupons_table.php b/packages/Webkul/Discount/src/Database/Migrations/2019_05_23_180457_create_cart_rule_coupons_table.php index 8c99d442c..67eea0030 100644 --- a/packages/Webkul/Discount/src/Database/Migrations/2019_05_23_180457_create_cart_rule_coupons_table.php +++ b/packages/Webkul/Discount/src/Database/Migrations/2019_05_23_180457_create_cart_rule_coupons_table.php @@ -35,6 +35,6 @@ class CreateCartruleCouponsTable extends Migration */ public function down() { - Schema::dropIfExists('cartrule_coupons'); + Schema::dropIfExists('cart_rule_coupons'); } } diff --git a/packages/Webkul/Discount/src/Database/Migrations/2019_05_30_141207_create_cart_rule_cart_table.php b/packages/Webkul/Discount/src/Database/Migrations/2019_05_30_141207_create_cart_rule_cart_table.php index ec6fc70e8..82c7505a0 100644 --- a/packages/Webkul/Discount/src/Database/Migrations/2019_05_30_141207_create_cart_rule_cart_table.php +++ b/packages/Webkul/Discount/src/Database/Migrations/2019_05_30_141207_create_cart_rule_cart_table.php @@ -30,6 +30,6 @@ class CreateCartRuleCartTable extends Migration */ public function down() { - Schema::dropIfExists('cart_rule_order'); + Schema::dropIfExists('cart_rule_cart'); } } diff --git a/packages/Webkul/Discount/src/Database/Migrations/2019_08_08_130583_create_catalog_rule_products_price_table.php b/packages/Webkul/Discount/src/Database/Migrations/2019_08_08_130583_create_catalog_rule_products_price_table.php index b9d9eff19..a5af74b08 100644 --- a/packages/Webkul/Discount/src/Database/Migrations/2019_08_08_130583_create_catalog_rule_products_price_table.php +++ b/packages/Webkul/Discount/src/Database/Migrations/2019_08_08_130583_create_catalog_rule_products_price_table.php @@ -37,6 +37,6 @@ class CreateCatalogRuleProductsPriceTable extends Migration */ public function down() { - Schema::dropIfExists('catalog_rule_product_price'); + Schema::dropIfExists('catalog_rule_products_price'); } } diff --git a/packages/Webkul/Discount/src/Helpers/Cart/Discount.php b/packages/Webkul/Discount/src/Helpers/Cart/Discount.php index b7cfa31e3..023d091c2 100644 --- a/packages/Webkul/Discount/src/Helpers/Cart/Discount.php +++ b/packages/Webkul/Discount/src/Helpers/Cart/Discount.php @@ -360,7 +360,7 @@ abstract class Discount { $this->rules = config('discount-rules'); - $actionType = new $this->rules['cart'][$rule->action_type]; + $actionType = new $this->rules['cart'][$rule->action_type]($rule); return $actionType; } diff --git a/packages/Webkul/Product/src/Database/Migrations/2018_07_27_065727_create_products_table.php b/packages/Webkul/Product/src/Database/Migrations/2018_07_27_065727_create_products_table.php index 2f1611efd..8a7d5bdec 100755 --- a/packages/Webkul/Product/src/Database/Migrations/2018_07_27_065727_create_products_table.php +++ b/packages/Webkul/Product/src/Database/Migrations/2018_07_27_065727_create_products_table.php @@ -70,8 +70,16 @@ class CreateProductsTable extends Migration */ public function down() { - Schema::dropIfExists('products'); + Schema::dropIfExists('product_cross_sells'); + + Schema::dropIfExists('product_up_sells'); + + Schema::dropIfExists('product_super_attributes'); + + Schema::dropIfExists('product_relations'); Schema::dropIfExists('product_categories'); + + Schema::dropIfExists('products'); } } diff --git a/packages/Webkul/Product/src/Database/Migrations/2019_01_11_122452_add_vendor_id_column_in_product_inventories_table.php b/packages/Webkul/Product/src/Database/Migrations/2019_01_11_122452_add_vendor_id_column_in_product_inventories_table.php index 9fffb5e3c..eaae807c5 100644 --- a/packages/Webkul/Product/src/Database/Migrations/2019_01_11_122452_add_vendor_id_column_in_product_inventories_table.php +++ b/packages/Webkul/Product/src/Database/Migrations/2019_01_11_122452_add_vendor_id_column_in_product_inventories_table.php @@ -26,8 +26,6 @@ class AddVendorIdColumnInProductInventoriesTable extends Migration */ public function down() { - Schema::table('product_inventories', function (Blueprint $table) { - // - }); + // } } diff --git a/packages/Webkul/Product/src/Database/Migrations/2019_01_25_124522_add_updated_at_column_in_product_flat_table.php b/packages/Webkul/Product/src/Database/Migrations/2019_01_25_124522_add_updated_at_column_in_product_flat_table.php index ae5eb7cac..6aacbc85d 100644 --- a/packages/Webkul/Product/src/Database/Migrations/2019_01_25_124522_add_updated_at_column_in_product_flat_table.php +++ b/packages/Webkul/Product/src/Database/Migrations/2019_01_25_124522_add_updated_at_column_in_product_flat_table.php @@ -32,18 +32,13 @@ class AddUpdatedAtColumnInProductFlatTable extends Migration */ public function down() { - Schema::disableForeignKeyConstraints(); - - Schema::table('product_flat', function (Blueprint $table) { - $table->dropColumn('created_at'); - $table->dropColumn('size_label'); - $table->dropColumn('updated_at'); - $table->dropColumn('parent_id'); - $table->dropColumn('visible_individually'); - $table->dropForeign('parent_id'); - $table->dropIndex('product_flat_unique_index'); - }); - - Schema::enableForeignKeyConstraints(); + // Schema::table('product_flat', function (Blueprint $table) { + // $table->dropColumn('created_at'); + // $table->dropColumn('size_label'); + // $table->dropColumn('updated_at'); + // $table->dropColumn('parent_id'); + // $table->dropColumn('visible_individually'); + // $table->dropIndex('product_flat_unique_index'); + // }); } } diff --git a/packages/Webkul/Product/src/Database/Migrations/2019_01_29_123053_add_min_price_and_max_price_column_in_product_flat_table.php b/packages/Webkul/Product/src/Database/Migrations/2019_01_29_123053_add_min_price_and_max_price_column_in_product_flat_table.php index 68c1a9b96..d03af3446 100644 --- a/packages/Webkul/Product/src/Database/Migrations/2019_01_29_123053_add_min_price_and_max_price_column_in_product_flat_table.php +++ b/packages/Webkul/Product/src/Database/Migrations/2019_01_29_123053_add_min_price_and_max_price_column_in_product_flat_table.php @@ -28,7 +28,8 @@ class AddMinPriceAndMaxPriceColumnInProductFlatTable extends Migration public function down() { Schema::table('product_flat', function (Blueprint $table) { - // + $table->dropColumn('min_price'); + $table->dropColumn('max_price'); }); } } diff --git a/packages/Webkul/Product/src/Database/Migrations/2019_02_21_153035_alter_customer_id_in_product_reviews_table.php b/packages/Webkul/Product/src/Database/Migrations/2019_02_21_153035_alter_customer_id_in_product_reviews_table.php index 54ae5054c..cdae0eff5 100644 --- a/packages/Webkul/Product/src/Database/Migrations/2019_02_21_153035_alter_customer_id_in_product_reviews_table.php +++ b/packages/Webkul/Product/src/Database/Migrations/2019_02_21_153035_alter_customer_id_in_product_reviews_table.php @@ -26,7 +26,7 @@ class AlterCustomerIdInProductReviewsTable extends Migration public function down() { Schema::table('product_reviews', function (Blueprint $table) { - // + $table->dropColumn('customer_id'); }); } } diff --git a/packages/Webkul/Product/src/Database/Migrations/2019_05_23_113407_add_remaining_column_in_product_flat_table.php b/packages/Webkul/Product/src/Database/Migrations/2019_05_23_113407_add_remaining_column_in_product_flat_table.php index 9e16cc870..b47597a4c 100644 --- a/packages/Webkul/Product/src/Database/Migrations/2019_05_23_113407_add_remaining_column_in_product_flat_table.php +++ b/packages/Webkul/Product/src/Database/Migrations/2019_05_23_113407_add_remaining_column_in_product_flat_table.php @@ -46,7 +46,27 @@ class AddRemainingColumnInProductFlatTable extends Migration public function down() { Schema::table('product_flat', function (Blueprint $table) { - + if (Schema::hasColumn('product_flat', 'short_description')) { + $table->dropColumn('short_description'); + } + if (Schema::hasColumn('product_flat', 'meta_title')) { + $table->dropColumn('meta_title'); + } + if (Schema::hasColumn('product_flat', 'meta_keywords')) { + $table->dropColumn('meta_keywords'); + } + if (Schema::hasColumn('product_flat', 'meta_description')) { + $table->dropColumn('meta_description'); + } + if (Schema::hasColumn('product_flat', 'width')) { + $table->dropColumn('width'); + } + if (Schema::hasColumn('product_flat', 'height')) { + $table->dropColumn('height'); + } + if (Schema::hasColumn('product_flat', 'depth')) { + $table->dropColumn('depth'); + } }); } } \ No newline at end of file diff --git a/packages/Webkul/Sales/src/Database/Migrations/2018_11_15_153257_alter_order_table.php b/packages/Webkul/Sales/src/Database/Migrations/2018_11_15_153257_alter_order_table.php index b3d1ee090..f8ffe1c2c 100755 --- a/packages/Webkul/Sales/src/Database/Migrations/2018_11_15_153257_alter_order_table.php +++ b/packages/Webkul/Sales/src/Database/Migrations/2018_11_15_153257_alter_order_table.php @@ -25,6 +25,8 @@ class AlterOrderTable extends Migration */ public function down() { - // + Schema::table('orders', function (Blueprint $table) { + $table->dropColumn('cart_id'); + }); } } \ No newline at end of file diff --git a/packages/Webkul/Sales/src/Database/Migrations/2018_11_15_163729_alter_invoice_table.php b/packages/Webkul/Sales/src/Database/Migrations/2018_11_15_163729_alter_invoice_table.php index 1516da319..507017784 100755 --- a/packages/Webkul/Sales/src/Database/Migrations/2018_11_15_163729_alter_invoice_table.php +++ b/packages/Webkul/Sales/src/Database/Migrations/2018_11_15_163729_alter_invoice_table.php @@ -25,6 +25,8 @@ class AlterInvoiceTable extends Migration */ public function down() { - // + Schema::table('invoices', function (Blueprint $table) { + $table->dropColumn('transaction_id'); + }); } } diff --git a/packages/Webkul/Sales/src/Database/Migrations/2018_12_24_184402_alter_shipments_table.php b/packages/Webkul/Sales/src/Database/Migrations/2018_12_24_184402_alter_shipments_table.php index 79244fa43..72c15a43b 100755 --- a/packages/Webkul/Sales/src/Database/Migrations/2018_12_24_184402_alter_shipments_table.php +++ b/packages/Webkul/Sales/src/Database/Migrations/2018_12_24_184402_alter_shipments_table.php @@ -26,6 +26,9 @@ class AlterShipmentsTable extends Migration */ public function down() { - // + Schema::table('shipments', function (Blueprint $table) { + $table->dropForeign('shipments_inventory_source_id_foreign')->references('id')->on('inventory_sources')->onDelete('set null'); + $table->dropColumn('inventory_source_id'); + }); } } diff --git a/packages/Webkul/Sales/src/Database/Migrations/2019_05_23_155520_add_discount_columns_in_invoice_items_table.php b/packages/Webkul/Sales/src/Database/Migrations/2019_05_23_155520_add_discount_columns_in_invoice_items_table.php index d707ccd96..30f3f6c38 100644 --- a/packages/Webkul/Sales/src/Database/Migrations/2019_05_23_155520_add_discount_columns_in_invoice_items_table.php +++ b/packages/Webkul/Sales/src/Database/Migrations/2019_05_23_155520_add_discount_columns_in_invoice_items_table.php @@ -28,7 +28,9 @@ class AddDiscountColumnsInInvoiceItemsTable extends Migration public function down() { Schema::table('invoice_items', function (Blueprint $table) { - // + $table->dropColumn('discount_percent'); + $table->dropColumn('discount_amount'); + $table->dropColumn('base_discount_amount'); }); } } diff --git a/packages/Webkul/Tax/src/Database/Migrations/2018_08_30_065840_create_tax_mappings_table.php b/packages/Webkul/Tax/src/Database/Migrations/2018_08_30_065840_create_tax_mappings_table.php index b8cc385dc..86d295355 100755 --- a/packages/Webkul/Tax/src/Database/Migrations/2018_08_30_065840_create_tax_mappings_table.php +++ b/packages/Webkul/Tax/src/Database/Migrations/2018_08_30_065840_create_tax_mappings_table.php @@ -37,6 +37,6 @@ class CreateTaxMappingsTable extends Migration */ public function down() { - Schema::dropIfExists('tax_map'); + Schema::dropIfExists('tax_categories_tax_rates'); } } diff --git a/packages/Webkul/User/src/Database/Migrations/2018_06_12_111907_create_admins_table.php b/packages/Webkul/User/src/Database/Migrations/2018_06_12_111907_create_admins_table.php index 14ca9237e..659967653 100755 --- a/packages/Webkul/User/src/Database/Migrations/2018_06_12_111907_create_admins_table.php +++ b/packages/Webkul/User/src/Database/Migrations/2018_06_12_111907_create_admins_table.php @@ -13,7 +13,6 @@ class CreateAdminsTable extends Migration */ public function up() { - Schema::defaultStringLength(191); Schema::create('admins', function (Blueprint $table) { $table->increments('id'); $table->string('name');