Magento 2 Checkout – Uncheck Billing and Shipping Address Checkbox if Pickup Store Enabled

billing-addresscheckoutmagento2shipping-methods

I have installed a store pick up module.

So, I am trying to uncheck the checkbox of "My billing and shipping address are same" once the module is enabled.

I have refered the below link, this will uncheck the checkbox always regardless of which shipping method selected.

How to uncheck "My billing and shipping address are the same" checkbox during checkout? One Page/Magento2

Can we uncheck only when store pick up is selected as "Yes" or when the particular shipping method is selected during the checkout?

Can this be achieved? Please anyone look into this and update me your Answers.

Thanks in advance!!!

Best Answer

I've added the modification logic to the original code. Please check:

Copy the following file to your theme:

vendor/magento/module-checkout/view/frontend/web/js/model/checkout-data-resolver.js

applyBillingAddress: function () {
    var shippingAddress;

    if (quote.billingAddress()) {
        selectBillingAddress(quote.billingAddress());

        return;
    }
    shippingAddress = quote.shippingAddress();

    if (shippingAddress &&
        shippingAddress.canUseForBilling() &&
        (shippingAddress.isDefaultShipping() || !quote.isVirtual())
    ) {
        if(quote.shippingMethod()['method_code']=='store pick_up code'){
           //uncheck here
        }else{
           //check here
           selectBillingAddress(quote.shippingAddress());
        }
    }
}

And also copy the following file to your theme:

vendor/magento/module-checkout/view/frontend/web/js/model/shipping-save-processor/default.js

saveShippingInformation: function () {
    var payload;

    if (!quote.billingAddress()) {
        if(quote.shippingMethod()['method_code']=='store pick_up code'){
           //uncheck here
        }else{
           //check here
           selectBillingAddress(quote.shippingAddress());
        }
    }

    payload = {
        addressInformation: {
            'shipping_address': quote.shippingAddress(),
            'billing_address': quote.billingAddress(),
            'shipping_method_code': quote.shippingMethod()['method_code'],
            'shipping_carrier_code': quote.shippingMethod()['carrier_code']
        }
    };

    payloadExtender(payload);

    fullScreenLoader.startLoader();

    return storage.post(
        resourceUrlManager.getUrlForSetShippingInformation(quote),
        JSON.stringify(payload)
    ).done(
        function (response) {
            quote.setTotals(response.totals);
            paymentService.setPaymentMethods(methodConverter(response['payment_methods']));
            fullScreenLoader.stopLoader();
        }
    ).fail(
        function (response) {
            errorProcessor.process(response);
            fullScreenLoader.stopLoader();
        }
    );
}

Don't forget to run static-content:deploy and cache flush.

Related Topic