From 4c78f615a18de8eb1b667ff426fa9447f9a198ee Mon Sep 17 00:00:00 2001
From: Olexii Korshenko <okorshenko@ebay.com>
Date: Thu, 2 Jul 2015 09:36:42 +0300
Subject: [PATCH] MAGETWO-39051: Wrong behavior for required "Customer Address
 Attributes" during checkout

---
 app/code/Magento/Checkout/Block/Checkout/LayoutProcessor.php  | 2 +-
 app/code/Magento/Checkout/Controller/Onepage.php              | 4 ++--
 .../view/frontend/web/js/action/select-shipping-address.js    | 4 ++--
 3 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/app/code/Magento/Checkout/Block/Checkout/LayoutProcessor.php b/app/code/Magento/Checkout/Block/Checkout/LayoutProcessor.php
index 02e1f84c72b..688fd6e2ef4 100644
--- a/app/code/Magento/Checkout/Block/Checkout/LayoutProcessor.php
+++ b/app/code/Magento/Checkout/Block/Checkout/LayoutProcessor.php
@@ -48,7 +48,7 @@ class LayoutProcessor implements \Magento\Checkout\Block\Checkout\LayoutProcesso
         /** @var \Magento\Eav\Api\Data\AttributeInterface[] $attributes */
         $attributes = $this->attributeMetadataDataProvider->loadAttributesCollection(
             'customer_address',
-            'customer_register_address'
+            'customer_address_edit'
         );
 
         $elements = [];
diff --git a/app/code/Magento/Checkout/Controller/Onepage.php b/app/code/Magento/Checkout/Controller/Onepage.php
index 2257347e915..0830d37486b 100644
--- a/app/code/Magento/Checkout/Controller/Onepage.php
+++ b/app/code/Magento/Checkout/Controller/Onepage.php
@@ -180,14 +180,14 @@ class Onepage extends Action
     {
         $quote = $this->getOnepage()->getQuote();
         if (!$quote->hasItems() || $quote->getHasError() || !$quote->validateMinimumAmount()) {
-            return false;
+            return true;
         }
         $action = $this->getRequest()->getActionName();
         if ($this->_objectManager->get('Magento\Checkout\Model\Session')->getCartWasUpdated(true)
             &&
             !in_array($action, ['index', 'progress'])
         ) {
-            return false;
+            return true;
         }
 
         return false;
diff --git a/app/code/Magento/Checkout/view/frontend/web/js/action/select-shipping-address.js b/app/code/Magento/Checkout/view/frontend/web/js/action/select-shipping-address.js
index c2b34cbd331..a8d1e6d38be 100644
--- a/app/code/Magento/Checkout/view/frontend/web/js/action/select-shipping-address.js
+++ b/app/code/Magento/Checkout/view/frontend/web/js/action/select-shipping-address.js
@@ -14,8 +14,8 @@ define(
         });
         return function(shippingAddress) {
             quote.shippingAddress(shippingAddress);
-            //set billing address same as shipping by default
-            if (shippingAddress.canUseForBilling()) {
+            //set billing address same as shipping by default if it is not empty
+            if (shippingAddress.countryId != undefined && shippingAddress.canUseForBilling()) {
                 quote.billingAddress(shippingAddress);
             }
         };
-- 
GitLab