From 7cbf86b0e74fe94c8ccb41c677ef7abd98738eda Mon Sep 17 00:00:00 2001 From: Vitalii Zabaznov Date: Wed, 16 Dec 2015 15:00:56 +0200 Subject: [PATCH 1/5] MAGETWO-40061: Subproduct discounts for Catalog Price Rules are useless --- .../Promo/Catalog/Edit/Tab/Actions.php | 38 ------------- .../Model/Indexer/IndexBuilder.php | 8 --- app/code/Magento/CatalogRule/Model/Rule.php | 15 +----- .../CatalogRule/Setup/UpgradeSchema.php | 53 +++++++++++++++++++ .../CatalogRule/Test/Unit/Model/RuleTest.php | 28 ---------- app/code/Magento/CatalogRule/etc/module.xml | 2 +- .../view/adminhtml/templates/promo/js.phtml | 40 -------------- .../Magento/CatalogRule/Model/RuleTest.php | 12 ++--- 8 files changed, 59 insertions(+), 137 deletions(-) create mode 100644 app/code/Magento/CatalogRule/Setup/UpgradeSchema.php diff --git a/app/code/Magento/CatalogRule/Block/Adminhtml/Promo/Catalog/Edit/Tab/Actions.php b/app/code/Magento/CatalogRule/Block/Adminhtml/Promo/Catalog/Edit/Tab/Actions.php index 9f4273421911f..6f98f46c62d3a 100644 --- a/app/code/Magento/CatalogRule/Block/Adminhtml/Promo/Catalog/Edit/Tab/Actions.php +++ b/app/code/Magento/CatalogRule/Block/Adminhtml/Promo/Catalog/Edit/Tab/Actions.php @@ -98,44 +98,6 @@ protected function _prepareForm() ] ); - $fieldset->addField( - 'sub_is_enable', - 'select', - [ - 'name' => 'sub_is_enable', - 'label' => __('Subproduct discounts'), - 'title' => __('Subproduct discounts'), - 'onchange' => 'hideShowSubproductOptions(this);', - 'values' => [0 => __('No'), 1 => __('Yes')] - ] - ); - - $fieldset->addField( - 'sub_simple_action', - 'select', - [ - 'label' => __('Apply'), - 'name' => 'sub_simple_action', - 'options' => [ - 'by_percent' => __('Apply as percentage of original'), - 'by_fixed' => __('Apply as fixed amount'), - 'to_percent' => __('Adjust final price to this percentage'), - 'to_fixed' => __('Adjust final price to discount value'), - ] - ] - ); - - $fieldset->addField( - 'sub_discount_amount', - 'text', - [ - 'name' => 'sub_discount_amount', - 'required' => true, - 'class' => 'validate-not-negative-number', - 'label' => __('Discount Amount') - ] - ); - $fieldset->addField( 'stop_rules_processing', 'select', diff --git a/app/code/Magento/CatalogRule/Model/Indexer/IndexBuilder.php b/app/code/Magento/CatalogRule/Model/Indexer/IndexBuilder.php index 08e0c3b620b31..135fb9ad4e961 100644 --- a/app/code/Magento/CatalogRule/Model/Indexer/IndexBuilder.php +++ b/app/code/Magento/CatalogRule/Model/Indexer/IndexBuilder.php @@ -262,8 +262,6 @@ protected function applyRule(Rule $rule, $product) $actionOperator = $rule->getSimpleAction(); $actionAmount = $rule->getDiscountAmount(); $actionStop = $rule->getStopRulesProcessing(); - $subActionOperator = $rule->getSubIsEnable() ? $rule->getSubSimpleAction() : ''; - $subActionAmount = $rule->getSubDiscountAmount(); $rows = []; try { @@ -280,8 +278,6 @@ protected function applyRule(Rule $rule, $product) 'action_amount' => $actionAmount, 'action_stop' => $actionStop, 'sort_order' => $sortOrder, - 'sub_simple_action' => $subActionOperator, - 'sub_discount_amount' => $subActionAmount, ]; if (count($rows) == $this->batchCount) { @@ -356,8 +352,6 @@ protected function updateRuleProductData(Rule $rule) $sortOrder = (int)$rule->getSortOrder(); $actionOperator = $rule->getSimpleAction(); $actionAmount = $rule->getDiscountAmount(); - $subActionOperator = $rule->getSubIsEnable() ? $rule->getSubSimpleAction() : ''; - $subActionAmount = $rule->getSubDiscountAmount(); $actionStop = $rule->getStopRulesProcessing(); $rows = []; @@ -379,8 +373,6 @@ protected function updateRuleProductData(Rule $rule) 'action_amount' => $actionAmount, 'action_stop' => $actionStop, 'sort_order' => $sortOrder, - 'sub_simple_action' => $subActionOperator, - 'sub_discount_amount' => $subActionAmount, ]; if (count($rows) == $this->batchCount) { diff --git a/app/code/Magento/CatalogRule/Model/Rule.php b/app/code/Magento/CatalogRule/Model/Rule.php index dcd36cfaf3086..d38a69feb747c 100644 --- a/app/code/Magento/CatalogRule/Model/Rule.php +++ b/app/code/Magento/CatalogRule/Model/Rule.php @@ -364,11 +364,6 @@ public function validateData(\Magento\Framework\DataObject $dataObject) $action = $dataObject->getData('simple_action'); $discount = $dataObject->getData('discount_amount'); $result = array_merge($result, $this->validateDiscount($action, $discount)); - if ($dataObject->getData('sub_is_enable') == 1) { - $action = $dataObject->getData('sub_simple_action'); - $discount = $dataObject->getData('sub_discount_amount'); - $result = array_merge($result, $this->validateDiscount($action, $discount)); - } return !empty($result) ? $result : true; } @@ -430,15 +425,7 @@ public function calcProductPriceRule(Product $product, $price) if ($rulesData) { foreach ($rulesData as $ruleData) { if ($product->getParentId()) { - if (!empty($ruleData['sub_simple_action'])) { - $priceRules = $this->_catalogRuleData->calcPriceRule( - $ruleData['sub_simple_action'], - $ruleData['sub_discount_amount'], - $priceRules ? $priceRules : $price - ); - } else { - $priceRules = $priceRules ? $priceRules : $price; - } + $priceRules = $priceRules ? $priceRules : $price; if ($ruleData['action_stop']) { break; } diff --git a/app/code/Magento/CatalogRule/Setup/UpgradeSchema.php b/app/code/Magento/CatalogRule/Setup/UpgradeSchema.php new file mode 100644 index 0000000000000..0ce15041f5b4b --- /dev/null +++ b/app/code/Magento/CatalogRule/Setup/UpgradeSchema.php @@ -0,0 +1,53 @@ +startSetup(); + + if (version_compare($context->getVersion(), '2.0.1', '<')) { + $this->removeSubProductDiscounts($setup); + } + + $setup->endSetup(); + } + + /** + * Remove Sub Product Discounts + * @param SchemaSetupInterface $setup + * @return void + */ + private function removeSubProductDiscounts(SchemaSetupInterface $setup) + { + $connection = $setup->getConnection(); + $fields = [ + 'table' => 'catalogrule', + 'columns' => [ + 'sub_is_enable', + 'sub_simple_action', + 'sub_discount_amount' + ] + ]; + + foreach ($fields['columns'] as $filedInfo) { + $connection->dropColumn($setup->getTable($fields['table']), $filedInfo); + } + } +} diff --git a/app/code/Magento/CatalogRule/Test/Unit/Model/RuleTest.php b/app/code/Magento/CatalogRule/Test/Unit/Model/RuleTest.php index bb8b7521642ab..03c4bb1ae47d9 100644 --- a/app/code/Magento/CatalogRule/Test/Unit/Model/RuleTest.php +++ b/app/code/Magento/CatalogRule/Test/Unit/Model/RuleTest.php @@ -232,9 +232,6 @@ public function validateDataDataProvider() [ 'simple_action' => 'by_fixed', 'discount_amount' => '123', - 'sub_is_enable' => '0', - 'sub_simple_action' => 'by_percent', - 'sub_discount_amount' => '123', ], true ], @@ -242,42 +239,22 @@ public function validateDataDataProvider() [ 'simple_action' => 'by_percent', 'discount_amount' => '9,99', - 'sub_is_enable' => '0', ], true ], - [ - [ - 'simple_action' => 'by_fixed', - 'discount_amount' => '123', - 'sub_is_enable' => '1', - 'sub_simple_action' => 'by_percent', - 'sub_discount_amount' => '123', - ], - [ - 'Percentage discount should be between 0 and 100.', - ] - ], [ [ 'simple_action' => 'by_percent', 'discount_amount' => '123.12', - 'sub_is_enable' => '1', - 'sub_simple_action' => 'to_percent', - 'sub_discount_amount' => '123.001', ], [ 'Percentage discount should be between 0 and 100.', - 'Percentage discount should be between 0 and 100.', ] ], [ [ 'simple_action' => 'to_percent', 'discount_amount' => '-12', - 'sub_is_enable' => '1', - 'sub_simple_action' => 'to_fixed', - 'sub_discount_amount' => '567.8901', ], [ 'Percentage discount should be between 0 and 100.', @@ -287,20 +264,15 @@ public function validateDataDataProvider() [ 'simple_action' => 'to_fixed', 'discount_amount' => '-1234567890', - 'sub_is_enable' => '1', - 'sub_simple_action' => 'by_fixed', - 'sub_discount_amount' => '-5', ], [ 'Discount value should be 0 or greater.', - 'Discount value should be 0 or greater.', ] ], [ [ 'simple_action' => 'invalid action', 'discount_amount' => '12', - 'sub_is_enable' => '0', ], [ 'Unknown action.', diff --git a/app/code/Magento/CatalogRule/etc/module.xml b/app/code/Magento/CatalogRule/etc/module.xml index 19dfacb2cc3bd..868765ce17862 100644 --- a/app/code/Magento/CatalogRule/etc/module.xml +++ b/app/code/Magento/CatalogRule/etc/module.xml @@ -6,7 +6,7 @@ */ --> - + diff --git a/app/code/Magento/CatalogRule/view/adminhtml/templates/promo/js.phtml b/app/code/Magento/CatalogRule/view/adminhtml/templates/promo/js.phtml index a3604faa6d38c..1feb2f1cc693f 100644 --- a/app/code/Magento/CatalogRule/view/adminhtml/templates/promo/js.phtml +++ b/app/code/Magento/CatalogRule/view/adminhtml/templates/promo/js.phtml @@ -7,26 +7,6 @@ diff --git a/dev/tests/integration/testsuite/Magento/CatalogRule/Model/RuleTest.php b/dev/tests/integration/testsuite/Magento/CatalogRule/Model/RuleTest.php index 40ee3643f05ec..0bcea6e411fe9 100644 --- a/dev/tests/integration/testsuite/Magento/CatalogRule/Model/RuleTest.php +++ b/dev/tests/integration/testsuite/Magento/CatalogRule/Model/RuleTest.php @@ -51,7 +51,7 @@ public function testCalcProductPriceRule() ); $this->assertEquals($this->_object->calcProductPriceRule($product, 100), 45); $product->setParentId(true); - $this->assertEquals($this->_object->calcProductPriceRule($product, 50), 5); + $this->assertEquals($this->_object->calcProductPriceRule($product, 50), 50); } /** @@ -64,16 +64,12 @@ protected function _getCatalogRulesFixtures() return [ [ 'action_operator' => 'by_percent', - 'action_amount' => '10.0000', - 'sub_simple_action' => 'by_percent', - 'sub_discount_amount' => '90.0000', - 'action_stop' => '0', + 'action_amount' => '50.0000', + 'action_stop' => '0' ], [ 'action_operator' => 'by_percent', - 'action_amount' => '50.0000', - 'sub_simple_action' => '', - 'sub_discount_amount' => '0.0000', + 'action_amount' => '10.0000', 'action_stop' => '0' ] ]; From c25812983939960f3155533b1d60e4f4d09ecdf8 Mon Sep 17 00:00:00 2001 From: Vitalii Zabaznov Date: Wed, 16 Dec 2015 17:44:51 +0200 Subject: [PATCH 2/5] MAGETWO-40061: Subproduct discounts for Catalog Price Rules are useless -fix fixtures for setup --- setup/src/Magento/Setup/Fixtures/CatalogPriceRulesFixture.php | 3 --- 1 file changed, 3 deletions(-) diff --git a/setup/src/Magento/Setup/Fixtures/CatalogPriceRulesFixture.php b/setup/src/Magento/Setup/Fixtures/CatalogPriceRulesFixture.php index 3fd0e674ec200..31691c7b0be0c 100644 --- a/setup/src/Magento/Setup/Fixtures/CatalogPriceRulesFixture.php +++ b/setup/src/Magento/Setup/Fixtures/CatalogPriceRulesFixture.php @@ -94,9 +94,6 @@ public function execute() ], 'simple_action' => 'by_percent', 'discount_amount' => '15', - 'sub_is_enable' => '0', - 'sub_simple_action' => 'by_percent', - 'sub_discount_amount' => '0', 'stop_rules_processing' => '0', 'page' => '1', 'limit' => '20', From fc029ca400259503c4277ef8c266a117721cf01c Mon Sep 17 00:00:00 2001 From: Vitalii Zabaznov Date: Thu, 17 Dec 2015 13:23:32 +0200 Subject: [PATCH 3/5] MAGETWO-40061: Subproduct discounts for Catalog Price Rules are useless - fix Upgrade schema for catalogrule_product table --- .../CatalogRule/Setup/UpgradeSchema.php | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/app/code/Magento/CatalogRule/Setup/UpgradeSchema.php b/app/code/Magento/CatalogRule/Setup/UpgradeSchema.php index 0ce15041f5b4b..56b40d6c3115d 100644 --- a/app/code/Magento/CatalogRule/Setup/UpgradeSchema.php +++ b/app/code/Magento/CatalogRule/Setup/UpgradeSchema.php @@ -37,17 +37,22 @@ public function upgrade(SchemaSetupInterface $setup, ModuleContextInterface $con private function removeSubProductDiscounts(SchemaSetupInterface $setup) { $connection = $setup->getConnection(); - $fields = [ - 'table' => 'catalogrule', - 'columns' => [ + $data = [ + 'catalogrule' => [ 'sub_is_enable', 'sub_simple_action', - 'sub_discount_amount' - ] + 'sub_discount_amount', + ], + 'catalogrule_product' => [ + 'sub_simple_action', + 'sub_discount_amount', + ], ]; - foreach ($fields['columns'] as $filedInfo) { - $connection->dropColumn($setup->getTable($fields['table']), $filedInfo); + foreach ($data as $table=>$fields) { + foreach ($fields as $field){ + $connection->dropColumn($setup->getTable($table), $field); + } } } } From 7c8befbb1f659fe2dbf7a3e5be9923dc041a525d Mon Sep 17 00:00:00 2001 From: Vitalii Zabaznov Date: Thu, 17 Dec 2015 13:29:19 +0200 Subject: [PATCH 4/5] MAGETWO-40061: Subproduct discounts for Catalog Price Rules are useless - fix cs --- app/code/Magento/CatalogRule/Setup/UpgradeSchema.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/code/Magento/CatalogRule/Setup/UpgradeSchema.php b/app/code/Magento/CatalogRule/Setup/UpgradeSchema.php index 56b40d6c3115d..dab2a03a256fd 100644 --- a/app/code/Magento/CatalogRule/Setup/UpgradeSchema.php +++ b/app/code/Magento/CatalogRule/Setup/UpgradeSchema.php @@ -49,7 +49,7 @@ private function removeSubProductDiscounts(SchemaSetupInterface $setup) ], ]; - foreach ($data as $table=>$fields) { + foreach ($data as $table => $fields) { foreach ($fields as $field){ $connection->dropColumn($setup->getTable($table), $field); } From c49807c12f8fcb5aa771aa524fc592acfcc28fd4 Mon Sep 17 00:00:00 2001 From: Vitalii Zabaznov Date: Thu, 17 Dec 2015 13:31:53 +0200 Subject: [PATCH 5/5] MAGETWO-40061: Subproduct discounts for Catalog Price Rules are useless - fix cs --- app/code/Magento/CatalogRule/Setup/UpgradeSchema.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/code/Magento/CatalogRule/Setup/UpgradeSchema.php b/app/code/Magento/CatalogRule/Setup/UpgradeSchema.php index dab2a03a256fd..1decf934e476e 100644 --- a/app/code/Magento/CatalogRule/Setup/UpgradeSchema.php +++ b/app/code/Magento/CatalogRule/Setup/UpgradeSchema.php @@ -50,7 +50,7 @@ private function removeSubProductDiscounts(SchemaSetupInterface $setup) ]; foreach ($data as $table => $fields) { - foreach ($fields as $field){ + foreach ($fields as $field) { $connection->dropColumn($setup->getTable($table), $field); } }