Skip to content

Commit 70bc27e

Browse files
committed
[*] refactoring ResetShippingAddress into UnselectShipping plugin
+ quote address assignment + method separation
1 parent 7ef3576 commit 70bc27e

File tree

4 files changed

+67
-47
lines changed

4 files changed

+67
-47
lines changed

src/Plugin/PreselectShipping.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,11 +22,11 @@ class PreselectShipping
2222
public function __construct(
2323
ShippingMethodManagement $methodManagement,
2424
AddressResetConditions $addressReset,
25-
AddressSetMockdata $addressSetMockdata,
25+
AddressSetMockdata $addressSetMockData,
2626
ShippingAddressAssignment $addressAssignment
2727
) {
2828
$this->methodManagement = $methodManagement;
29-
$this->addressSetMockData = $addressSetMockdata;
29+
$this->addressSetMockData = $addressSetMockData;
3030
$this->addressReset = $addressReset;
3131
$this->addressAssignment = $addressAssignment;
3232
}

src/Plugin/ResetShippingAddress.php

Lines changed: 0 additions & 44 deletions
This file was deleted.

src/Plugin/UnselectShipping.php

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
<?php
2+
declare(strict_types=1);
3+
4+
namespace IntegerNet\ShippingPreselection\Plugin;
5+
6+
use Magento\Checkout\Model\Session;
7+
use Magento\Quote\Model\Quote;
8+
use Magento\Quote\Model\Quote\Address;
9+
use Magento\Quote\Model\Quote\AddressFactory;
10+
use Magento\Quote\Model\ShippingAddressAssignment;
11+
use IntegerNet\ShippingPreselection\Service\AddressUnsetMockdata;
12+
use IntegerNet\ShippingPreselection\Service\AddressResetConditions;
13+
14+
class UnselectShipping
15+
{
16+
private AddressUnsetMockdata $addressUnsetMockData;
17+
private AddressResetConditions $addressReset;
18+
private ShippingAddressAssignment $addressAssignment;
19+
private AddressFactory $addressFactory;
20+
21+
public function __construct(
22+
AddressUnsetMockdata $addressUnsetMockdata,
23+
AddressResetConditions $addressReset,
24+
ShippingAddressAssignment $addressAssignment,
25+
AddressFactory $addressFactory
26+
) {
27+
$this->addressUnsetMockData = $addressUnsetMockdata;
28+
$this->addressReset = $addressReset;
29+
$this->addressAssignment = $addressAssignment;
30+
$this->addressFactory = $addressFactory;
31+
}
32+
33+
/**
34+
* @SuppressWarnings(PHPMD.UnusedFormalParameter)
35+
*/
36+
public function afterGetQuote(Session $subject, Quote $result): Quote
37+
{
38+
$isResetRequest = $this->addressReset->isAddressResetRequest();
39+
$quoteIsValid = !$result->getIsVirtual() && $result->getItemsCount();
40+
if (!$isResetRequest || !$quoteIsValid) {
41+
return $result;
42+
}
43+
44+
$address = $result->getShippingAddress();
45+
if ($this->addressUnsetMockData->isMockedAddress($address)) {
46+
$this->addressAssignment->setAddress($result, $this->getNewShippingAddress(), true); // deletion included
47+
} else {
48+
$this->addressUnsetMockData->checkForEmptyAddressFields($address);
49+
$this->unsetShippingMethod($address);
50+
$this->addressAssignment->setAddress($result, $address);
51+
}
52+
return $result;
53+
}
54+
55+
public function getNewShippingAddress(): Address
56+
{
57+
return $this->addressFactory->create()->setAddressType(Address::TYPE_SHIPPING);
58+
}
59+
60+
public function unsetShippingMethod(Address $address): void
61+
{
62+
$address->setShippingAmount(0)->setBaseShippingAmount(0)->setShippingMethod('')->setShippingDescription('');
63+
}
64+
}

src/etc/frontend/di.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,6 @@
55
<plugin name="integernet_shippingpreselection_preselectshippingmethod"
66
type="IntegerNet\ShippingPreselection\Plugin\PreselectShipping" sortOrder="20"/>
77
<plugin name="integernet_shippingpreselection_resetshippingaddress"
8-
type="IntegerNet\ShippingPreselection\Plugin\ResetShippingAddress" sortOrder="30"/>
8+
type="IntegerNet\ShippingPreselection\Plugin\UnselectShipping" sortOrder="30"/>
99
</type>
1010
</config>

0 commit comments

Comments
 (0)