@@ -112,10 +112,11 @@ public function __construct(
112112 * @param AbstractItem $item
113113 * @param array $rules
114114 * @param bool $skipValidation
115+ * @param string $couponCodes
115116 * @return array
116117 * @SuppressWarnings(PHPMD.CyclomaticComplexity)
117118 */
118- public function applyRules ($ item , $ rules , $ skipValidation )
119+ public function applyRules ($ item , $ rules , $ skipValidation, array $ couponCodes = [] )
119120 {
120121 $ address = $ item ->getAddress ();
121122 $ appliedRuleIds = [];
@@ -142,7 +143,7 @@ public function applyRules($item, $rules, $skipValidation)
142143 }
143144 }
144145
145- $ this ->applyRule ($ item , $ rule , $ address );
146+ $ this ->applyRule ($ item , $ rule , $ address, $ couponCodes );
146147 $ appliedRuleIds [$ rule ->getRuleId ()] = $ rule ->getRuleId ();
147148 }
148149
@@ -228,18 +229,19 @@ public function addShippingDiscountDescription(
228229 *
229230 * @param AbstractItem $item
230231 * @param Rule $rule
231- * @param \Magento\Quote\Model\Quote\Address $address
232+ * @param Address $address
233+ * @param string[] $couponCodes
232234 * @return $this
233235 */
234- protected function applyRule ($ item , $ rule , $ address )
236+ protected function applyRule ($ item , $ rule , $ address, array $ couponCodes = [] )
235237 {
236238 if ($ item ->getChildren () && $ item ->isChildrenCalculated ()) {
237239 $ cloneItem = clone $ item ;
238240
239241 $ applyToChildren = false ;
240242 foreach ($ item ->getChildren () as $ childItem ) {
241243 if ($ rule ->getActions ()->validate ($ childItem )) {
242- $ discountData = $ this ->getDiscountData ($ childItem , $ rule , $ address );
244+ $ discountData = $ this ->getDiscountData ($ childItem , $ rule , $ address, $ couponCodes );
243245 $ this ->setDiscountData ($ discountData , $ childItem );
244246 $ applyToChildren = true ;
245247 }
@@ -248,15 +250,15 @@ protected function applyRule($item, $rule, $address)
248250 * validate without children
249251 */
250252 if (!$ applyToChildren && $ rule ->getActions ()->validate ($ cloneItem )) {
251- $ discountData = $ this ->getDiscountData ($ item , $ rule , $ address );
253+ $ discountData = $ this ->getDiscountData ($ item , $ rule , $ address, $ couponCodes );
252254 $ this ->setDiscountData ($ discountData , $ item );
253255 }
254256 } else {
255- $ discountData = $ this ->getDiscountData ($ item , $ rule , $ address );
257+ $ discountData = $ this ->getDiscountData ($ item , $ rule , $ address, $ couponCodes );
256258 $ this ->setDiscountData ($ discountData , $ item );
257259 }
258260
259- $ this ->addDiscountDescription ($ address , $ rule );
261+ $ this ->addDiscountDescription ($ address , $ rule, $ couponCodes );
260262 $ this ->maintainAddressCouponCode ($ address , $ rule , $ address ->getQuote ()->getCouponCode ());
261263
262264 return $ this ;
@@ -267,10 +269,11 @@ protected function applyRule($item, $rule, $address)
267269 *
268270 * @param AbstractItem $item
269271 * @param \Magento\SalesRule\Model\Rule $rule
270- * @param \Magento\Quote\Model\Quote\Address $address
272+ * @param Address $address
273+ * @param string[] $couponCodes
271274 * @return Data
272275 */
273- protected function getDiscountData ($ item , $ rule , $ address )
276+ protected function getDiscountData ($ item , $ rule , $ address, array $ couponCodes = [] )
274277 {
275278 $ qty = $ this ->validatorUtility ->getItemQty ($ item , $ rule );
276279
@@ -279,7 +282,7 @@ protected function getDiscountData($item, $rule, $address)
279282 $ discountData = $ discountCalculator ->calculate ($ rule , $ item , $ qty );
280283 $ this ->eventFix ($ discountData , $ item , $ rule , $ qty );
281284 $ this ->validatorUtility ->deltaRoundingFix ($ discountData , $ item );
282- $ this ->setDiscountBreakdown ($ discountData , $ item , $ rule , $ address );
285+ $ this ->setDiscountBreakdown ($ discountData , $ item , $ rule , $ address, $ couponCodes );
283286
284287 /**
285288 * We can't use row total here because row total not include tax
@@ -297,10 +300,11 @@ protected function getDiscountData($item, $rule, $address)
297300 * @param Data $discountData
298301 * @param \Magento\Quote\Model\Quote\Item\AbstractItem $item
299302 * @param \Magento\SalesRule\Model\Rule $rule
300- * @param \Magento\Quote\Model\Quote\Address $address
303+ * @param Address $address
304+ * @param string[] $couponCodes
301305 * @return $this
302306 */
303- private function setDiscountBreakdown ($ discountData , $ item , $ rule , $ address )
307+ private function setDiscountBreakdown ($ discountData , $ item , $ rule , $ address, array $ couponCodes = [] )
304308 {
305309 if ($ discountData ->getAmount () > 0 && $ item ->getExtensionAttributes ()) {
306310 $ data = [
@@ -310,10 +314,9 @@ private function setDiscountBreakdown($discountData, $item, $rule, $address)
310314 'base_original_amount ' => $ discountData ->getBaseOriginalAmount ()
311315 ];
312316 $ itemDiscount = $ this ->discountDataInterfaceFactory ->create (['data ' => $ data ]);
313- $ ruleLabel = $ rule ->getStoreLabel ($ address ->getQuote ()->getStore ()) ?: __ ('Discount ' );
314317 $ data = [
315318 'discount ' => $ itemDiscount ,
316- 'rule ' => $ ruleLabel ,
319+ 'rule ' => $ this -> getRuleLabel ( $ address , $ rule , $ couponCodes ) ,
317320 'rule_id ' => $ rule ->getId (),
318321 ];
319322 /** @var RuleDiscount $itemDiscount */
0 commit comments