diff --git a/app/code/Magento/Checkout/view/frontend/web/js/view/billing-address.js b/app/code/Magento/Checkout/view/frontend/web/js/view/billing-address.js index 2ca86001d726002b81df9f2c6adc83bac7443080..5f6dbfed0b8daf38953cd4d3b389fbe5668de728 100644 --- a/app/code/Magento/Checkout/view/frontend/web/js/view/billing-address.js +++ b/app/code/Magento/Checkout/view/frontend/web/js/view/billing-address.js @@ -18,7 +18,8 @@ define( function (ko, Component, customer, addressList, quote, createBillingAddress, selectBillingAddress, $t) { "use strict"; - var newAddressOption = { + var lastSelectedBillingAddress = null, + newAddressOption = { getAddressInline: function() { return $t('New Address'); }, @@ -71,6 +72,8 @@ define( selectBillingAddress(quote.shippingAddress()); this.isAddressDetailsVisible(true); } else { + lastSelectedBillingAddress = quote.billingAddress(); + quote.billingAddress(null); this.isAddressDetailsVisible(false); } return true; @@ -97,10 +100,13 @@ define( }, editAddress: function () { + lastSelectedBillingAddress = quote.billingAddress(); + quote.billingAddress(null); this.isAddressDetailsVisible(false); }, cancelAddressEdit: function () { + this.restoreBillingAddress(); if (quote.billingAddress()) { // restore 'Same As Shipping' checkbox state this.isAddressSameAsShipping( @@ -110,6 +116,12 @@ define( } }, + restoreBillingAddress: function() { + if (lastSelectedBillingAddress != null) { + selectBillingAddress(lastSelectedBillingAddress); + } + }, + onAddressChange: function (address) { this.isAddressFormVisible(address == newAddressOption); } diff --git a/app/code/Magento/Checkout/view/frontend/web/js/view/payment/default.js b/app/code/Magento/Checkout/view/frontend/web/js/view/payment/default.js index 7fa9e10b69a781d1f9afc86bc79ae7cc39c388d7..1734a79d09f5490d746e13a4d60eb524ba60f664 100644 --- a/app/code/Magento/Checkout/view/frontend/web/js/view/payment/default.js +++ b/app/code/Magento/Checkout/view/frontend/web/js/view/payment/default.js @@ -17,6 +17,7 @@ define( 'use strict'; return Component.extend({ redirectAfterPlaceOrder: true, + isPlaceOrderActionAllowed: ko.observable(true), /** * Initialize view. * @@ -24,6 +25,11 @@ define( */ initialize: function () { this._super().initChildren(); + + quote.billingAddress.subscribe(function(address) { + this.isPlaceOrderActionAllowed((address !== null)); + }, this); + return this; }, diff --git a/app/code/Magento/OfflinePayments/view/frontend/web/template/payment/banktransfer.html b/app/code/Magento/OfflinePayments/view/frontend/web/template/payment/banktransfer.html index dfcbf3131970749bfec9ab0537c3ef12f689fae7..66cf873c311eb639b8ce0bfba6e43228c5cb915e 100644 --- a/app/code/Magento/OfflinePayments/view/frontend/web/template/payment/banktransfer.html +++ b/app/code/Magento/OfflinePayments/view/frontend/web/template/payment/banktransfer.html @@ -29,7 +29,12 @@ <div class="primary"> <button class="action primary checkout" type="submit" - data-bind="click: placeOrder, attr: {'title': $t('Place Order')}, enable: (getCode() == isChecked())" + data-bind=" + click: placeOrder, + attr: {'title': $t('Place Order')}, + enable: (getCode() == isChecked()), + css: {disabled: !isPlaceOrderActionAllowed()} + " disabled> <span data-bind="text: $t('Place Order')"></span> </button> diff --git a/app/code/Magento/OfflinePayments/view/frontend/web/template/payment/cashondelivery.html b/app/code/Magento/OfflinePayments/view/frontend/web/template/payment/cashondelivery.html index 569d5b0a48eb368622fee51306a8d9c30b075cf7..10287d8090d4129e8ddc02880e42c704354478d3 100644 --- a/app/code/Magento/OfflinePayments/view/frontend/web/template/payment/cashondelivery.html +++ b/app/code/Magento/OfflinePayments/view/frontend/web/template/payment/cashondelivery.html @@ -29,7 +29,12 @@ <div class="primary"> <button class="action primary checkout" type="submit" - data-bind="click: placeOrder, attr: {title: $t('Place Order')}, enable: (getCode() == isChecked())" + data-bind=" + click: placeOrder, + attr: {title: $t('Place Order')}, + enable: (getCode() == isChecked()), + css: {disabled: !isPlaceOrderActionAllowed()} + " disabled> <span data-bind="text: $t('Place Order')"></span> </button> diff --git a/app/code/Magento/OfflinePayments/view/frontend/web/template/payment/checkmo.html b/app/code/Magento/OfflinePayments/view/frontend/web/template/payment/checkmo.html index 58f85845434792ab778b177461ac493a743d649d..ba6c374417b49b5477cf92a5c040e5c2ac732767 100644 --- a/app/code/Magento/OfflinePayments/view/frontend/web/template/payment/checkmo.html +++ b/app/code/Magento/OfflinePayments/view/frontend/web/template/payment/checkmo.html @@ -41,7 +41,12 @@ <div class="primary"> <button class="action primary checkout" type="submit" - data-bind="click: placeOrder, attr: {title: $t('Place Order')}, enable: (getCode() == isChecked())" + data-bind=" + click: placeOrder, + attr: {title: $t('Place Order')}, + css: {disabled: !isPlaceOrderActionAllowed()}, + enable: (getCode() == isChecked()) + " disabled> <span data-bind="text: $t('Place Order')"></span> </button> diff --git a/app/code/Magento/OfflinePayments/view/frontend/web/template/payment/purchaseorder-form.html b/app/code/Magento/OfflinePayments/view/frontend/web/template/payment/purchaseorder-form.html index 585d61feae7d7c7423285c3db12f5351adc2d385..ab531080cdfde2b2bc9173afc8e0e257033fce52 100644 --- a/app/code/Magento/OfflinePayments/view/frontend/web/template/payment/purchaseorder-form.html +++ b/app/code/Magento/OfflinePayments/view/frontend/web/template/payment/purchaseorder-form.html @@ -49,7 +49,12 @@ <div class="primary"> <button class="action primary checkout" type="submit" - data-bind="click: placeOrder, attr: {title: $t('Place Order')}, enable: (getCode() == isChecked())" + data-bind=" + click: placeOrder, + attr: {title: $t('Place Order')}, + enable: (getCode() == isChecked()), + css: {disabled: !isPlaceOrderActionAllowed()} + " data-role="review-save"> <span data-bind="text: $t('Place Order')"></span> </button> diff --git a/app/code/Magento/Payment/view/frontend/web/template/payment/free.html b/app/code/Magento/Payment/view/frontend/web/template/payment/free.html index fb33eafd3cfbb59e8fffe9983692fe3d2fad1050..483920bbe980eb903a4fadaba0dca5695f3d8189 100644 --- a/app/code/Magento/Payment/view/frontend/web/template/payment/free.html +++ b/app/code/Magento/Payment/view/frontend/web/template/payment/free.html @@ -27,7 +27,11 @@ <div class="primary"> <button class="action primary checkout" type="submit" - data-bind="click: placeOrder, attr: {title: $t('Place Order')}"> + data-bind=" + click: placeOrder, + attr: {title: $t('Place Order')}, + css: {disabled: !isPlaceOrderActionAllowed()} + "> <span data-bind="text: $t('Place Order')"></span> </button> </div> diff --git a/app/code/Magento/Payment/view/frontend/web/template/payment/iframe.html b/app/code/Magento/Payment/view/frontend/web/template/payment/iframe.html index 2fec488a491cb1787d622de53a3c4764c404c4c4..9e4d53bda7384775fecdc37eeecb63ba90664972 100644 --- a/app/code/Magento/Payment/view/frontend/web/template/payment/iframe.html +++ b/app/code/Magento/Payment/view/frontend/web/template/payment/iframe.html @@ -30,7 +30,9 @@ <div class="primary"> <button data-role="review-save" type="submit" data-bind="attr: {title: $t('Place order')}" - class="button action primary checkout"><span data-bind="text: $t('Place order')"></span></button> + class="button action primary checkout"> + <span data-bind="text: $t('Place order')"></span> + </button> <button type="submit" id="originalPlaceOrder" class="hidden" data-bind="click: originalPlaceOrder($parents[1])"></button> </div>