7
7
8
8
namespace Magento \Checkout \Model ;
9
9
10
- use Magento \Quote \Api \Data \AddressInterface ;
11
-
12
10
use Magento \Framework \Serialize \SerializerInterface ;
11
+ use Magento \Quote \Api \Data \AddressInterface ;
13
12
14
13
class AddressComparator implements AddressComparatorInterface
15
14
{
@@ -33,38 +32,36 @@ public function __construct(SerializerInterface $serializer)
33
32
*/
34
33
public function isEqual (?AddressInterface $ shippingAddress , ?AddressInterface $ billingAddress ): bool
35
34
{
35
+ if ($ shippingAddress === null || $ billingAddress === null ) {
36
+ return false ;
37
+ }
38
+
36
39
if ($ shippingAddress ->getCustomerAddressId () !== null &&
37
40
$ billingAddress ->getCustomerAddressId () !== null
38
41
) {
39
- $ sameAsBillingFlag = ((int )$ shippingAddress ->getCustomerAddressId () ===
42
+ return ((int )$ shippingAddress ->getCustomerAddressId () ===
40
43
(int )$ billingAddress ->getCustomerAddressId ());
41
44
} else {
42
- $ quoteShippingAddressData = $ shippingAddress ->getData ();
43
- $ billingAddressData = ($ billingAddress !== null ) ? $ billingAddress ->getData () : null ;
44
- if (!empty ($ quoteShippingAddressData ) && !empty ($ billingAddressData )) {
45
- $ billingKeys = array_flip (array_keys ($ billingAddressData ));
46
- $ shippingData = array_intersect_key ($ quoteShippingAddressData , $ billingKeys );
47
- $ removeKeys = ['region_code ' , 'save_in_address_book ' ];
48
- $ billingData = array_diff_key ($ billingAddressData , array_flip ($ removeKeys ));
49
- $ diff = array_udiff (
50
- $ billingData ,
51
- $ shippingData ,
52
- function ($ el1 , $ el2 ) {
53
- if (is_object ($ el1 )) {
54
- $ el1 = $ this ->serializer ->serialize ($ el1 );
55
- }
56
- if (is_object ($ el2 )) {
57
- $ el2 = $ this ->serializer ->serialize ($ el2 );
58
- }
59
- return strcmp ((string )$ el1 , (string )$ el2 );
45
+ $ shippingAddressData = $ shippingAddress ->getData ();
46
+ $ billingAddressData = $ billingAddress ->getData ();
47
+ $ billingKeys = array_flip (array_keys ($ billingAddressData ));
48
+ $ shippingData = array_intersect_key ($ shippingAddressData , $ billingKeys );
49
+ $ removeKeys = ['region_code ' , 'save_in_address_book ' ];
50
+ $ billingData = array_diff_key ($ billingAddressData , array_flip ($ removeKeys ));
51
+ $ diff = array_udiff (
52
+ $ billingData ,
53
+ $ shippingData ,
54
+ function ($ el1 , $ el2 ) {
55
+ if (is_object ($ el1 )) {
56
+ $ el1 = $ this ->serializer ->serialize ($ el1 );
57
+ }
58
+ if (is_object ($ el2 )) {
59
+ $ el2 = $ this ->serializer ->serialize ($ el2 );
60
60
}
61
- );
62
- $ sameAsBillingFlag = empty ($ diff );
63
- } else {
64
- $ sameAsBillingFlag = false ;
65
- }
61
+ return strcmp ((string )$ el1 , (string )$ el2 );
62
+ }
63
+ );
64
+ return empty ($ diff );
66
65
}
67
-
68
- return $ sameAsBillingFlag ;
69
66
}
70
67
}
0 commit comments