6
6
7
7
namespace Magento \SalesRule \Model \ResourceModel \Report \Rule ;
8
8
9
+ use Magento \Framework \Model \ResourceModel \Db \Context ;
10
+ use Magento \Framework \Stdlib \DateTime \DateTime ;
11
+ use Magento \Framework \Stdlib \DateTime \Timezone \Validator ;
12
+ use Magento \Framework \Stdlib \DateTime \TimezoneInterface ;
13
+ use Magento \Reports \Model \FlagFactory ;
14
+ use Magento \Tax \Model \Config ;
15
+ use Psr \Log \LoggerInterface ;
16
+
9
17
/**
10
18
* Rule report resource model with aggregation by created at
11
19
*/
12
20
class Createdat extends \Magento \Reports \Model \ResourceModel \Report \AbstractReport
13
21
{
22
+ /**
23
+ * @param Context $context
24
+ * @param LoggerInterface $logger
25
+ * @param TimezoneInterface $localeDate
26
+ * @param FlagFactory $reportsFlagFactory
27
+ * @param Validator $timezoneValidator
28
+ * @param DateTime $dateTime
29
+ * @param Config $taxConfig
30
+ * @param string|null $connectionName
31
+ */
32
+ public function __construct (
33
+ private readonly Context $ context ,
34
+ private readonly LoggerInterface $ logger ,
35
+ private readonly TimezoneInterface $ localeDate ,
36
+ private readonly FlagFactory $ reportsFlagFactory ,
37
+ private readonly Validator $ timezoneValidator ,
38
+ DateTime $ dateTime ,
39
+ private Config $ taxConfig ,
40
+ string $ connectionName = null
41
+ ) {
42
+ parent ::__construct (
43
+ $ context ,
44
+ $ logger ,
45
+ $ localeDate ,
46
+ $ reportsFlagFactory ,
47
+ $ timezoneValidator ,
48
+ $ dateTime ,
49
+ $ connectionName
50
+ );
51
+ }
52
+
14
53
/**
15
54
* Resource Report Rule constructor
16
55
*
@@ -65,6 +104,13 @@ protected function _aggregateByOrder($aggregationField, $from, $to)
65
104
$ this ->getStoreTZOffsetQuery ($ sourceTable , $ aggregationField , $ from , $ to , null , $ salesAdapter )
66
105
);
67
106
107
+ $ subtotalAmountFiled = 'base_subtotal ' ;
108
+ $ subtotalAmountActualFiled = 'base_subtotal_invoiced ' ;
109
+ if ($ this ->taxConfig ->displaySalesSubtotalInclTax ()) {
110
+ $ subtotalAmountFiled = 'base_subtotal_incl_tax ' ;
111
+ $ subtotalAmountActualFiled = 'base_subtotal_incl_tax ' ;
112
+ }
113
+
68
114
$ columns = [
69
115
'period ' => $ periodExpr ,
70
116
'store_id ' => 'store_id ' ,
@@ -73,7 +119,7 @@ protected function _aggregateByOrder($aggregationField, $from, $to)
73
119
'rule_name ' => 'coupon_rule_name ' ,
74
120
'coupon_uses ' => 'COUNT(entity_id) ' ,
75
121
'subtotal_amount ' => $ connection ->getIfNullSql (
76
- 'SUM((base_subtotal - ' . $ connection ->getIfNullSql (
122
+ 'SUM(( ' . $ subtotalAmountFiled . ' - ' . $ connection ->getIfNullSql (
77
123
'base_subtotal_canceled ' ,
78
124
0
79
125
) . ') * base_to_global_rate) ' ,
@@ -110,7 +156,7 @@ protected function _aggregateByOrder($aggregationField, $from, $to)
110
156
0
111
157
),
112
158
'subtotal_amount_actual ' => $ connection ->getIfNullSql (
113
- 'SUM((base_subtotal_invoiced - ' . $ connection ->getIfNullSql (
159
+ 'SUM(( ' . $ subtotalAmountActualFiled . ' - ' . $ connection ->getIfNullSql (
114
160
'base_subtotal_refunded ' ,
115
161
0
116
162
) . ') * base_to_global_rate) ' ,
0 commit comments