@@ -112,10 +112,11 @@ public function __construct(
112
112
* @param AbstractItem $item
113
113
* @param array $rules
114
114
* @param bool $skipValidation
115
+ * @param string $couponCodes
115
116
* @return array
116
117
* @SuppressWarnings(PHPMD.CyclomaticComplexity)
117
118
*/
118
- public function applyRules ($ item , $ rules , $ skipValidation )
119
+ public function applyRules ($ item , $ rules , $ skipValidation, array $ couponCodes = [] )
119
120
{
120
121
$ address = $ item ->getAddress ();
121
122
$ appliedRuleIds = [];
@@ -142,7 +143,7 @@ public function applyRules($item, $rules, $skipValidation)
142
143
}
143
144
}
144
145
145
- $ this ->applyRule ($ item , $ rule , $ address );
146
+ $ this ->applyRule ($ item , $ rule , $ address, $ couponCodes );
146
147
$ appliedRuleIds [$ rule ->getRuleId ()] = $ rule ->getRuleId ();
147
148
}
148
149
@@ -228,18 +229,19 @@ public function addShippingDiscountDescription(
228
229
*
229
230
* @param AbstractItem $item
230
231
* @param Rule $rule
231
- * @param \Magento\Quote\Model\Quote\Address $address
232
+ * @param Address $address
233
+ * @param string[] $couponCodes
232
234
* @return $this
233
235
*/
234
- protected function applyRule ($ item , $ rule , $ address )
236
+ protected function applyRule ($ item , $ rule , $ address, array $ couponCodes = [] )
235
237
{
236
238
if ($ item ->getChildren () && $ item ->isChildrenCalculated ()) {
237
239
$ cloneItem = clone $ item ;
238
240
239
241
$ applyToChildren = false ;
240
242
foreach ($ item ->getChildren () as $ childItem ) {
241
243
if ($ rule ->getActions ()->validate ($ childItem )) {
242
- $ discountData = $ this ->getDiscountData ($ childItem , $ rule , $ address );
244
+ $ discountData = $ this ->getDiscountData ($ childItem , $ rule , $ address, $ couponCodes );
243
245
$ this ->setDiscountData ($ discountData , $ childItem );
244
246
$ applyToChildren = true ;
245
247
}
@@ -248,15 +250,15 @@ protected function applyRule($item, $rule, $address)
248
250
* validate without children
249
251
*/
250
252
if (!$ applyToChildren && $ rule ->getActions ()->validate ($ cloneItem )) {
251
- $ discountData = $ this ->getDiscountData ($ item , $ rule , $ address );
253
+ $ discountData = $ this ->getDiscountData ($ item , $ rule , $ address, $ couponCodes );
252
254
$ this ->setDiscountData ($ discountData , $ item );
253
255
}
254
256
} else {
255
- $ discountData = $ this ->getDiscountData ($ item , $ rule , $ address );
257
+ $ discountData = $ this ->getDiscountData ($ item , $ rule , $ address, $ couponCodes );
256
258
$ this ->setDiscountData ($ discountData , $ item );
257
259
}
258
260
259
- $ this ->addDiscountDescription ($ address , $ rule );
261
+ $ this ->addDiscountDescription ($ address , $ rule, $ couponCodes );
260
262
$ this ->maintainAddressCouponCode ($ address , $ rule , $ address ->getQuote ()->getCouponCode ());
261
263
262
264
return $ this ;
@@ -267,10 +269,11 @@ protected function applyRule($item, $rule, $address)
267
269
*
268
270
* @param AbstractItem $item
269
271
* @param \Magento\SalesRule\Model\Rule $rule
270
- * @param \Magento\Quote\Model\Quote\Address $address
272
+ * @param Address $address
273
+ * @param string[] $couponCodes
271
274
* @return Data
272
275
*/
273
- protected function getDiscountData ($ item , $ rule , $ address )
276
+ protected function getDiscountData ($ item , $ rule , $ address, array $ couponCodes = [] )
274
277
{
275
278
$ qty = $ this ->validatorUtility ->getItemQty ($ item , $ rule );
276
279
@@ -279,7 +282,7 @@ protected function getDiscountData($item, $rule, $address)
279
282
$ discountData = $ discountCalculator ->calculate ($ rule , $ item , $ qty );
280
283
$ this ->eventFix ($ discountData , $ item , $ rule , $ qty );
281
284
$ this ->validatorUtility ->deltaRoundingFix ($ discountData , $ item );
282
- $ this ->setDiscountBreakdown ($ discountData , $ item , $ rule , $ address );
285
+ $ this ->setDiscountBreakdown ($ discountData , $ item , $ rule , $ address, $ couponCodes );
283
286
284
287
/**
285
288
* We can't use row total here because row total not include tax
@@ -297,10 +300,11 @@ protected function getDiscountData($item, $rule, $address)
297
300
* @param Data $discountData
298
301
* @param \Magento\Quote\Model\Quote\Item\AbstractItem $item
299
302
* @param \Magento\SalesRule\Model\Rule $rule
300
- * @param \Magento\Quote\Model\Quote\Address $address
303
+ * @param Address $address
304
+ * @param string[] $couponCodes
301
305
* @return $this
302
306
*/
303
- private function setDiscountBreakdown ($ discountData , $ item , $ rule , $ address )
307
+ private function setDiscountBreakdown ($ discountData , $ item , $ rule , $ address, array $ couponCodes = [] )
304
308
{
305
309
if ($ discountData ->getAmount () > 0 && $ item ->getExtensionAttributes ()) {
306
310
$ data = [
@@ -310,10 +314,9 @@ private function setDiscountBreakdown($discountData, $item, $rule, $address)
310
314
'base_original_amount ' => $ discountData ->getBaseOriginalAmount ()
311
315
];
312
316
$ itemDiscount = $ this ->discountDataInterfaceFactory ->create (['data ' => $ data ]);
313
- $ ruleLabel = $ rule ->getStoreLabel ($ address ->getQuote ()->getStore ()) ?: __ ('Discount ' );
314
317
$ data = [
315
318
'discount ' => $ itemDiscount ,
316
- 'rule ' => $ ruleLabel ,
319
+ 'rule ' => $ this -> getRuleLabel ( $ address , $ rule , $ couponCodes ) ,
317
320
'rule_id ' => $ rule ->getId (),
318
321
];
319
322
/** @var RuleDiscount $itemDiscount */
0 commit comments