77
88namespace Magento \Checkout \Model ;
99
10- use Magento \Quote \Api \Data \AddressInterface ;
11-
1210use Magento \Framework \Serialize \SerializerInterface ;
11+ use Magento \Quote \Api \Data \AddressInterface ;
1312
1413class AddressComparator implements AddressComparatorInterface
1514{
@@ -33,38 +32,36 @@ public function __construct(SerializerInterface $serializer)
3332 */
3433 public function isEqual (?AddressInterface $ shippingAddress , ?AddressInterface $ billingAddress ): bool
3534 {
35+ if ($ shippingAddress === null || $ billingAddress === null ) {
36+ return false ;
37+ }
38+
3639 if ($ shippingAddress ->getCustomerAddressId () !== null &&
3740 $ billingAddress ->getCustomerAddressId () !== null
3841 ) {
39- $ sameAsBillingFlag = ((int )$ shippingAddress ->getCustomerAddressId () ===
42+ return ((int )$ shippingAddress ->getCustomerAddressId () ===
4043 (int )$ billingAddress ->getCustomerAddressId ());
4144 } 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 );
6060 }
61- );
62- $ sameAsBillingFlag = empty ($ diff );
63- } else {
64- $ sameAsBillingFlag = false ;
65- }
61+ return strcmp ((string )$ el1 , (string )$ el2 );
62+ }
63+ );
64+ return empty ($ diff );
6665 }
67-
68- return $ sameAsBillingFlag ;
6966 }
7067}
0 commit comments