6
6
namespace Magento \SalesRule \Model \Quote ;
7
7
8
8
use Magento \Framework \App \ObjectManager ;
9
- use Magento \SalesRule \Api \Data \RuleDiscountInterfaceFactory ;
9
+ use Magento \Framework \Event \ManagerInterface ;
10
+ use Magento \Framework \Pricing \PriceCurrencyInterface ;
11
+ use Magento \Quote \Api \Data \AddressInterface ;
12
+ use Magento \Quote \Api \Data \ShippingAssignmentInterface ;
13
+ use Magento \Quote \Model \Quote ;
14
+ use Magento \Quote \Model \Quote \Address \Total ;
15
+ use Magento \Quote \Model \Quote \Address \Total \AbstractTotal ;
16
+ use Magento \Quote \Model \Quote \Item ;
17
+ use Magento \Quote \Model \Quote \Item \AbstractItem ;
18
+ use Magento \SalesRule \Api \Data \DiscountDataInterface ;
10
19
use Magento \SalesRule \Api \Data \DiscountDataInterfaceFactory ;
20
+ use Magento \SalesRule \Api \Data \RuleDiscountInterfaceFactory ;
21
+ use Magento \SalesRule \Model \Data \RuleDiscount ;
22
+ use Magento \SalesRule \Model \Discount \PostProcessorFactory ;
23
+ use Magento \SalesRule \Model \Validator ;
24
+ use Magento \Store \Model \StoreManagerInterface ;
11
25
12
26
/**
13
27
* Discount totals calculation model.
28
+ *
29
+ * @SuppressWarnings(PHPMD.CouplingBetweenObjects)
14
30
*/
15
- class Discount extends \ Magento \ Quote \ Model \ Quote \ Address \ Total \ AbstractTotal
31
+ class Discount extends AbstractTotal
16
32
{
17
33
const COLLECTOR_TYPE_CODE = 'discount ' ;
18
34
19
35
/**
20
36
* Discount calculation object
21
37
*
22
- * @var \Magento\SalesRule\Model\ Validator
38
+ * @var Validator
23
39
*/
24
40
protected $ calculator ;
25
41
26
42
/**
27
43
* Core event manager proxy
28
44
*
29
- * @var \Magento\Framework\Event\ ManagerInterface
45
+ * @var ManagerInterface
30
46
*/
31
47
protected $ eventManager = null ;
32
48
33
49
/**
34
- * @var \Magento\Store\Model\ StoreManagerInterface
50
+ * @var StoreManagerInterface
35
51
*/
36
52
protected $ storeManager ;
37
53
38
54
/**
39
- * @var \Magento\Framework\Pricing\ PriceCurrencyInterface
55
+ * @var PriceCurrencyInterface
40
56
*/
41
57
protected $ priceCurrency ;
42
58
@@ -51,18 +67,18 @@ class Discount extends \Magento\Quote\Model\Quote\Address\Total\AbstractTotal
51
67
private $ discountDataInterfaceFactory ;
52
68
53
69
/**
54
- * @param \Magento\Framework\Event\ ManagerInterface $eventManager
55
- * @param \Magento\Store\Model\ StoreManagerInterface $storeManager
56
- * @param \Magento\SalesRule\Model\ Validator $validator
57
- * @param \Magento\Framework\Pricing\ PriceCurrencyInterface $priceCurrency
70
+ * @param ManagerInterface $eventManager
71
+ * @param StoreManagerInterface $storeManager
72
+ * @param Validator $validator
73
+ * @param PriceCurrencyInterface $priceCurrency
58
74
* @param RuleDiscountInterfaceFactory|null $discountInterfaceFactory
59
75
* @param DiscountDataInterfaceFactory|null $discountDataInterfaceFactory
60
76
*/
61
77
public function __construct (
62
- \ Magento \ Framework \ Event \ ManagerInterface $ eventManager ,
63
- \ Magento \ Store \ Model \ StoreManagerInterface $ storeManager ,
64
- \ Magento \ SalesRule \ Model \ Validator $ validator ,
65
- \ Magento \ Framework \ Pricing \ PriceCurrencyInterface $ priceCurrency ,
78
+ ManagerInterface $ eventManager ,
79
+ StoreManagerInterface $ storeManager ,
80
+ Validator $ validator ,
81
+ PriceCurrencyInterface $ priceCurrency ,
66
82
RuleDiscountInterfaceFactory $ discountInterfaceFactory = null ,
67
83
DiscountDataInterfaceFactory $ discountDataInterfaceFactory = null
68
84
) {
@@ -80,17 +96,17 @@ public function __construct(
80
96
/**
81
97
* Collect address discount amount
82
98
*
83
- * @param \Magento\Quote\Model\ Quote $quote
84
- * @param \Magento\Quote\Api\Data\ ShippingAssignmentInterface $shippingAssignment
85
- * @param \Magento\Quote\Model\Quote\Address\ Total $total
99
+ * @param Quote $quote
100
+ * @param ShippingAssignmentInterface $shippingAssignment
101
+ * @param Total $total
86
102
* @return $this
87
103
* @SuppressWarnings(PHPMD.CyclomaticComplexity)
88
104
* @SuppressWarnings(PHPMD.NPathComplexity)
89
105
*/
90
106
public function collect (
91
- \ Magento \ Quote \ Model \ Quote $ quote ,
92
- \ Magento \ Quote \ Api \ Data \ ShippingAssignmentInterface $ shippingAssignment ,
93
- \ Magento \ Quote \ Model \ Quote \ Address \ Total $ total
107
+ Quote $ quote ,
108
+ ShippingAssignmentInterface $ shippingAssignment ,
109
+ Total $ total
94
110
) {
95
111
parent ::collect ($ quote , $ shippingAssignment , $ total );
96
112
@@ -122,7 +138,7 @@ public function collect(
122
138
$ address ->getExtensionAttributes ()->setDiscounts ([]);
123
139
$ addressDiscountAggregator = [];
124
140
125
- /** @var \Magento\Quote\Model\Quote\ Item $item */
141
+ /** @var Item $item */
126
142
foreach ($ items as $ item ) {
127
143
if ($ item ->getNoDiscount () || !$ this ->calculator ->canApplyDiscount ($ item )) {
128
144
$ item ->setDiscountAmount (0 );
@@ -147,7 +163,6 @@ public function collect(
147
163
148
164
if ($ item ->getHasChildren () && $ item ->isChildrenCalculated ()) {
149
165
$ this ->calculator ->process ($ item );
150
- $ this ->distributeDiscount ($ item );
151
166
foreach ($ item ->getChildren () as $ child ) {
152
167
$ eventArgs ['item ' ] = $ child ;
153
168
$ this ->eventManager ->dispatch ('sales_quote_address_discount_item ' , $ eventArgs );
@@ -175,13 +190,13 @@ public function collect(
175
190
/**
176
191
* Aggregate item discount information to total data and related properties
177
192
*
178
- * @param \Magento\Quote\Model\Quote\Item\ AbstractItem $item
179
- * @param \Magento\Quote\Model\Quote\Address\ Total $total
193
+ * @param AbstractItem $item
194
+ * @param Total $total
180
195
* @return $this
181
196
*/
182
197
protected function aggregateItemDiscount (
183
- \ Magento \ Quote \ Model \ Quote \ Item \ AbstractItem $ item ,
184
- \ Magento \ Quote \ Model \ Quote \ Address \ Total $ total
198
+ AbstractItem $ item ,
199
+ Total $ total
185
200
) {
186
201
$ total ->addTotalAmount ($ this ->getCode (), -$ item ->getDiscountAmount ());
187
202
$ total ->addBaseTotalAmount ($ this ->getCode (), -$ item ->getBaseDiscountAmount ());
@@ -191,10 +206,12 @@ protected function aggregateItemDiscount(
191
206
/**
192
207
* Distribute discount at parent item to children items
193
208
*
194
- * @param \Magento\Quote\Model\Quote\Item\ AbstractItem $item
209
+ * @param AbstractItem $item
195
210
* @return $this
211
+ * @deprecated No longer used.
212
+ * @see \Magento\SalesRule\Model\RulesApplier::applyRule()
196
213
*/
197
- protected function distributeDiscount (\ Magento \ Quote \ Model \ Quote \ Item \ AbstractItem $ item )
214
+ protected function distributeDiscount (AbstractItem $ item )
198
215
{
199
216
$ parentBaseRowTotal = $ item ->getBaseRowTotal ();
200
217
$ keys = [
@@ -230,12 +247,12 @@ protected function distributeDiscount(\Magento\Quote\Model\Quote\Item\AbstractIt
230
247
/**
231
248
* Add discount total information to address
232
249
*
233
- * @param \Magento\Quote\Model\ Quote $quote
234
- * @param \Magento\Quote\Model\Quote\Address\ Total $total
250
+ * @param Quote $quote
251
+ * @param Total $total
235
252
* @return array|null
236
253
* @SuppressWarnings(PHPMD.UnusedFormalParameter)
237
254
*/
238
- public function fetch (\ Magento \ Quote \ Model \ Quote $ quote , \ Magento \ Quote \ Model \ Quote \ Address \ Total $ total )
255
+ public function fetch (Quote $ quote , Total $ total )
239
256
{
240
257
$ result = null ;
241
258
$ amount = $ total ->getDiscountAmount ();
@@ -254,25 +271,25 @@ public function fetch(\Magento\Quote\Model\Quote $quote, \Magento\Quote\Model\Qu
254
271
/**
255
272
* Aggregates discount per rule
256
273
*
257
- * @param \Magento\Quote\Model\Quote\Item\ AbstractItem $item
258
- * @param \Magento\Quote\Api\Data\ AddressInterface $address
274
+ * @param AbstractItem $item
275
+ * @param AddressInterface $address
259
276
* @param array $addressDiscountAggregator
260
277
* @return void
261
278
*/
262
279
private function aggregateDiscountPerRule (
263
- \ Magento \ Quote \ Model \ Quote \ Item \ AbstractItem $ item ,
264
- \ Magento \ Quote \ Api \ Data \ AddressInterface $ address ,
280
+ AbstractItem $ item ,
281
+ AddressInterface $ address ,
265
282
array &$ addressDiscountAggregator
266
283
) {
267
284
$ discountBreakdown = $ item ->getExtensionAttributes ()->getDiscounts ();
268
285
if ($ discountBreakdown ) {
269
286
foreach ($ discountBreakdown as $ value ) {
270
- /* @var \Magento\SalesRule\Api\Data\ DiscountDataInterface $discount */
287
+ /* @var DiscountDataInterface $discount */
271
288
$ discount = $ value ->getDiscountData ();
272
289
$ ruleLabel = $ value ->getRuleLabel ();
273
290
$ ruleID = $ value ->getRuleID ();
274
291
if (isset ($ addressDiscountAggregator [$ ruleID ])) {
275
- /** @var \Magento\SalesRule\Model\Data\ RuleDiscount $cartDiscount */
292
+ /** @var RuleDiscount $cartDiscount */
276
293
$ cartDiscount = $ addressDiscountAggregator [$ ruleID ];
277
294
$ discountData = $ cartDiscount ->getDiscountData ();
278
295
$ discountData ->setBaseAmount ($ discountData ->getBaseAmount ()+$ discount ->getBaseAmount ());
@@ -294,12 +311,12 @@ private function aggregateDiscountPerRule(
294
311
'rule ' => $ ruleLabel ,
295
312
'rule_id ' => $ ruleID ,
296
313
];
297
- /** @var \Magento\SalesRule\Model\Data\ RuleDiscount $cartDiscount */
314
+ /** @var RuleDiscount $cartDiscount */
298
315
$ cartDiscount = $ this ->discountInterfaceFactory ->create (['data ' => $ data ]);
299
316
$ addressDiscountAggregator [$ ruleID ] = $ cartDiscount ;
300
317
}
301
318
}
302
319
}
303
- $ address ->getExtensionAttributes ()->setDiscounts (array_values ($ addressDiscountAggregator ));
320
+ $ address ->getExtensionAttributes ()->setDiscounts (array_values ($ addressDiscountAggregator ));
304
321
}
305
322
}
0 commit comments