diff --git a/app/code/Magento/SalesRule/Model/ResourceModel/Coupon/Usage.php b/app/code/Magento/SalesRule/Model/ResourceModel/Coupon/Usage.php
index d8fe830718ce1..8680a91a9acc4 100644
--- a/app/code/Magento/SalesRule/Model/ResourceModel/Coupon/Usage.php
+++ b/app/code/Magento/SalesRule/Model/ResourceModel/Coupon/Usage.php
@@ -74,11 +74,11 @@ public function loadByCustomerCoupon(\Magento\Framework\DataObject $object, $cus
$select = $connection->select()->from(
$this->getMainTable()
)->where(
- 'customer_id =:customet_id'
+ 'customer_id =:customer_id'
)->where(
'coupon_id = :coupon_id'
);
- $data = $connection->fetchRow($select, [':coupon_id' => $couponId, ':customet_id' => $customerId]);
+ $data = $connection->fetchRow($select, [':coupon_id' => $couponId, ':customer_id' => $customerId]);
if ($data) {
$object->setData($data);
}
diff --git a/app/code/Magento/SalesRule/Observer/AssignCouponDataAfterOrderCustomerAssignObserver.php b/app/code/Magento/SalesRule/Observer/AssignCouponDataAfterOrderCustomerAssignObserver.php
new file mode 100644
index 0000000000000..d9699d334ff6a
--- /dev/null
+++ b/app/code/Magento/SalesRule/Observer/AssignCouponDataAfterOrderCustomerAssignObserver.php
@@ -0,0 +1,52 @@
+updateCouponUsages = $updateCouponUsages;
+ }
+
+ /**
+ * @inheritDoc
+ */
+ public function execute(Observer $observer)
+ {
+ $event = $observer->getEvent();
+ /** @var OrderInterface $order */
+ $order = $event->getData(self::EVENT_KEY_ORDER);
+
+ if ($order->getCustomerId()) {
+ $this->updateCouponUsages->execute($order, true);
+ }
+ }
+}
diff --git a/app/code/Magento/SalesRule/Test/Mftf/ActionGroup/AdminCartPriceRuleActionGroup.xml b/app/code/Magento/SalesRule/Test/Mftf/ActionGroup/AdminCartPriceRuleActionGroup.xml
index b9efe4e51a51c..9152016e709e5 100644
--- a/app/code/Magento/SalesRule/Test/Mftf/ActionGroup/AdminCartPriceRuleActionGroup.xml
+++ b/app/code/Magento/SalesRule/Test/Mftf/ActionGroup/AdminCartPriceRuleActionGroup.xml
@@ -6,13 +6,13 @@
*/
-->
+ xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/actionGroupSchema.xsd">
-
+
diff --git a/app/code/Magento/SalesRule/Test/Mftf/ActionGroup/AdminEditCartPriceRuleActionGroup.xml b/app/code/Magento/SalesRule/Test/Mftf/ActionGroup/AdminEditCartPriceRuleActionGroup.xml
new file mode 100644
index 0000000000000..0f18819e3ed1e
--- /dev/null
+++ b/app/code/Magento/SalesRule/Test/Mftf/ActionGroup/AdminEditCartPriceRuleActionGroup.xml
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/code/Magento/SalesRule/Test/Mftf/ActionGroup/AdminFilterCartPriceRuleActionGroup.xml b/app/code/Magento/SalesRule/Test/Mftf/ActionGroup/AdminFilterCartPriceRuleActionGroup.xml
new file mode 100644
index 0000000000000..2c44fdf3e900f
--- /dev/null
+++ b/app/code/Magento/SalesRule/Test/Mftf/ActionGroup/AdminFilterCartPriceRuleActionGroup.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/code/Magento/SalesRule/Test/Mftf/ActionGroup/ApplyCartRuleOnStorefrontActionGroup.xml b/app/code/Magento/SalesRule/Test/Mftf/ActionGroup/ApplyCartRuleOnStorefrontActionGroup.xml
index d3930a2767b0d..c800053fb1d2b 100644
--- a/app/code/Magento/SalesRule/Test/Mftf/ActionGroup/ApplyCartRuleOnStorefrontActionGroup.xml
+++ b/app/code/Magento/SalesRule/Test/Mftf/ActionGroup/ApplyCartRuleOnStorefrontActionGroup.xml
@@ -22,4 +22,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/code/Magento/SalesRule/Test/Mftf/ActionGroup/StorefrontSalesRuleActionGroup.xml b/app/code/Magento/SalesRule/Test/Mftf/ActionGroup/StorefrontSalesRuleActionGroup.xml
new file mode 100644
index 0000000000000..35feabc8d9fbe
--- /dev/null
+++ b/app/code/Magento/SalesRule/Test/Mftf/ActionGroup/StorefrontSalesRuleActionGroup.xml
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/code/Magento/SalesRule/Test/Mftf/Data/CouponData.xml b/app/code/Magento/SalesRule/Test/Mftf/Data/CouponData.xml
index d06903d5fd5d9..8810157092d97 100644
--- a/app/code/Magento/SalesRule/Test/Mftf/Data/CouponData.xml
+++ b/app/code/Magento/SalesRule/Test/Mftf/Data/CouponData.xml
@@ -15,4 +15,11 @@
0
false
+
+
+
+ couponCode
+ 1
+ 0
+
diff --git a/app/code/Magento/SalesRule/Test/Mftf/Data/SalesRuleData.xml b/app/code/Magento/SalesRule/Test/Mftf/Data/SalesRuleData.xml
index 28d61e34339ef..4f3dd3b374b7d 100644
--- a/app/code/Magento/SalesRule/Test/Mftf/Data/SalesRuleData.xml
+++ b/app/code/Magento/SalesRule/Test/Mftf/Data/SalesRuleData.xml
@@ -7,7 +7,7 @@
-->
+ xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/dataProfileSchema.xsd">
salesRule
Sales Rule Descritpion
@@ -56,7 +56,7 @@
SimpleSalesRule
- Sales Rule Descritpion
+ Sales Rule Description
- 1
@@ -85,4 +85,87 @@
100
+
+ salesRule
+ Sales Rule Descritpion
+
+ - 1
+
+
+ - 0
+ - 1
+ - 3
+
+ 0
+ true
+ true
+ true
+ 0
+ by_percent
+ 50
+ 0
+ 0
+ false
+ 0
+ true
+ NO_COUPON
+ false
+ 0
+ 0
+
+
+ salesRule
+ Sales Rule Descritpion
+
+ - 1
+
+
+ - 0
+ - 1
+ - 3
+
+ 0
+ true
+ true
+ true
+ 0
+ by_percent
+ 50
+ 0
+ 0
+ false
+ 0
+ true
+ NO_COUPON
+ false
+ 0
+ 0
+
+
+
+ SimpleSalesRule
+ Sales Rule Description
+
+ - 1
+
+
+ - 1
+
+ 10
+ true
+ false
+ true
+ 1
+ cart_fixed
+ 10
+ 10
+ 0
+ false
+ 0
+ false
+ SPECIFIC_COUPON
+ false
+ 10
+ 1
+
diff --git a/app/code/Magento/SalesRule/Test/Mftf/Data/SalesRuleProductConditionsData.xml b/app/code/Magento/SalesRule/Test/Mftf/Data/SalesRuleProductConditionsData.xml
new file mode 100644
index 0000000000000..8af7ac0fdd99a
--- /dev/null
+++ b/app/code/Magento/SalesRule/Test/Mftf/Data/SalesRuleProductConditionsData.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+ Magento\SalesRule\Model\Rule\Condition\Product|quote_item_price
+ Magento\SalesRule\Model\Rule\Condition\Product|quote_item_qty
+ Magento\SalesRule\Model\Rule\Condition\Product|quote_item_row_total
+
+
diff --git a/app/code/Magento/SalesRule/Test/Mftf/Metadata/coupon-meta.xml b/app/code/Magento/SalesRule/Test/Mftf/Metadata/coupon-meta.xml
index dda402ed6436d..9bec2ecd006cf 100644
--- a/app/code/Magento/SalesRule/Test/Mftf/Metadata/coupon-meta.xml
+++ b/app/code/Magento/SalesRule/Test/Mftf/Metadata/coupon-meta.xml
@@ -9,7 +9,7 @@
-
+
application/json