5
5
*/
6
6
namespace Magento \Quote \Model \ResourceModel \Quote \Address \Rate ;
7
7
8
+ use Magento \Quote \Model \ResourceModel \Quote \Address \Rate ;
9
+
8
10
/**
9
11
* Quote addresses shipping rates collection
10
12
*
11
- * @author Magento Core Team <core@magentocommerce.com>
13
+ * @SuppressWarnings(PHPMD.CouplingBetweenObjects)
12
14
*/
13
15
class Collection extends \Magento \Framework \Model \ResourceModel \Db \VersionControl \Collection
14
16
{
@@ -24,15 +26,21 @@ class Collection extends \Magento\Framework\Model\ResourceModel\Db\VersionContro
24
26
*/
25
27
private $ _carrierFactory ;
26
28
29
+ /**
30
+ * @var Delete
31
+ */
32
+ private Delete $ deleteRates ;
33
+
27
34
/**
28
35
* @param \Magento\Framework\Data\Collection\EntityFactory $entityFactory
29
36
* @param \Psr\Log\LoggerInterface $logger
30
37
* @param \Magento\Framework\Data\Collection\Db\FetchStrategyInterface $fetchStrategy
31
38
* @param \Magento\Framework\Event\ManagerInterface $eventManager
32
39
* @param \Magento\Framework\Model\ResourceModel\Db\VersionControl\Snapshot $entitySnapshot
33
40
* @param \Magento\Shipping\Model\CarrierFactoryInterface $carrierFactory
34
- * @param \Magento\Framework\DB\Adapter\AdapterInterface $connection
35
- * @param \Magento\Framework\Model\ResourceModel\Db\AbstractDb $resource
41
+ * @param Delete $deleteRates
42
+ * @param \Magento\Framework\DB\Adapter\AdapterInterface|null $connection
43
+ * @param \Magento\Framework\Model\ResourceModel\Db\AbstractDb|null $resource
36
44
*/
37
45
public function __construct (
38
46
\Magento \Framework \Data \Collection \EntityFactory $ entityFactory ,
@@ -41,8 +49,9 @@ public function __construct(
41
49
\Magento \Framework \Event \ManagerInterface $ eventManager ,
42
50
\Magento \Framework \Model \ResourceModel \Db \VersionControl \Snapshot $ entitySnapshot ,
43
51
\Magento \Shipping \Model \CarrierFactoryInterface $ carrierFactory ,
52
+ Delete $ deleteRates ,
44
53
\Magento \Framework \DB \Adapter \AdapterInterface $ connection = null ,
45
- \Magento \Framework \Model \ResourceModel \Db \AbstractDb $ resource = null
54
+ \Magento \Framework \Model \ResourceModel \Db \AbstractDb $ resource = null ,
46
55
) {
47
56
parent ::__construct (
48
57
$ entityFactory ,
@@ -53,6 +62,7 @@ public function __construct(
53
62
$ connection ,
54
63
$ resource
55
64
);
65
+ $ this ->deleteRates = $ deleteRates ;
56
66
$ this ->_carrierFactory = $ carrierFactory ;
57
67
}
58
68
@@ -112,4 +122,27 @@ public function addItem(\Magento\Framework\DataObject $rate)
112
122
}
113
123
return parent ::addItem ($ rate );
114
124
}
125
+
126
+ /**
127
+ * @inheritdoc
128
+ */
129
+ public function save ()
130
+ {
131
+ $ itemsToDelete = [];
132
+ $ itemsToSave = [];
133
+ /** @var Rate $item */
134
+ foreach ($ this ->getItems () as $ item ) {
135
+ if ($ item ->isDeleted ()) {
136
+ $ itemsToDelete [] = $ item ;
137
+ } else {
138
+ $ itemsToSave [] = $ item ;
139
+ }
140
+ }
141
+ $ this ->deleteRates ->execute ($ itemsToDelete );
142
+ /** @var Rate $item */
143
+ foreach ($ itemsToSave as $ item ) {
144
+ $ item ->save ();
145
+ }
146
+ return $ this ;
147
+ }
115
148
}
0 commit comments