+1-888-365-2779
Try Now
More in this section

Forums / Ecommerce / Sitefinity 7.0 options to add multiple shipping address like Amazon

Sitefinity 7.0 options to add multiple shipping address like Amazon

5 posts, 0 answered
  1. Praneeth
    Praneeth avatar
    26 posts
    Registered:
    22 Jun 2012
    03 Sep 2014
    Link to this post

    Hi,

    I have a requirement to customize sitefinity such that logged in user can have option for adding/saving multiple shipping address. This option is similar to amazon.com of which I have attached the screen shot.

    Please let me know if there is a way to make it possible in Sitefinity 7.0.

    P.S : Duplicate post as sitefinity gives me weird 500 error whenever I do save changes.

    Thanks

    Praneeth

  2. Atanas Valchev
    Atanas Valchev avatar
    414 posts
    Registered:
    04 Jan 2016
    08 Sep 2014
    Link to this post
    Hi,

    Out of the box the sitefinity checkout does not have functionality to facilitate multiple addresses to choose from. However, the customer can have multiple addresses associated and the checkout with use the address marked as primary. You can create a widget that will allow the customer to add additional addresses by using the api:Creating customer addresses. On the checkout page itself, the primary address will be filled in when the user goes to checkout. You can add an auxiliary widget that will display all the addresses below the checkout. If the user chooses a different address, you can set it as primary and refresh the page, this will fill in the newly selected address.

    I hope this idea is helpful.

    Regards,
    Atanas Valchev
    Telerik
     
    Do you want to have your say in the Sitefinity development roadmap? Do you want to know when a feature you requested is added or when a bug fixed? Explore the Telerik Sitefinity CMS Ideas&Feedback Portal and vote to affect the priority of the items
     
  3. Praneeth
    Praneeth avatar
    26 posts
    Registered:
    22 Jun 2012
    08 Sep 2014 in reply to Atanas Valchev
    Link to this post

    Thank you for your reply. I did not understand by auxilary widget. Did you mean I create a new usercontrol/widget and update the checkout template for shipping and add the user control or is there any way to put a step in between checkout template and use the new widget.

    Thanks

    Praneeth

  4. Atanas Valchev
    Atanas Valchev avatar
    414 posts
    Registered:
    04 Jan 2016
    11 Sep 2014
    Link to this post
    Hi,

    My idea was to have a widget that is not part of the checkout widget itself. A better approach might be to create a custom checkout widget that will allow you to display all addresses for the user and even add  the option to add further addresses. This approach will allow you more control over this functionality and the checkout process. You can find a sample custom checkout on Github:https://github.com/esitefinity/Sitefinity-Custom-Checkout/tree/master/Telerik.Sitefinity.Samples.Ecommerce.Checkout

    Regards,
    Atanas Valchev
    Telerik
     
    Do you want to have your say in the Sitefinity development roadmap? Do you want to know when a feature you requested is added or when a bug fixed? Explore the Telerik Sitefinity CMS Ideas&Feedback Portal and vote to affect the priority of the items
     
  5. Praneeth
    Praneeth avatar
    26 posts
    Registered:
    22 Jun 2012
    12 Sep 2014 in reply to Atanas Valchev
    Link to this post

    Thank you for your reply. I ended up creating a widget and dropping inside the shipping method widget template and it works. 

     I could successfully acheived Edit, Delete address functionality. I could also acheive Deliver to this address functionality, except for the issue i.e. when user clicks on deliver to the address , the cart order address should be prepopulated and user should be sent to next screen. Code snippet is below:

      

     

     protected void rptCustomerAddress_OnItemCommand(object source, RepeaterCommandEventArgs e)
            {
                // ReSharper disable once AssignNullToNotNullAttribute
                Guid id = new Guid(e.CommandArgument as string);
                CustomerAddress custAdd = _customerAddresses.FirstOrDefault(a => a.Id == id);
               
                if (e.CommandName == "Deliver")
                {
                    GetShiipingAddressProperties(custAdd);              
                    RadMultiPage checkoutMultiPage = Parent.Parent.Parent.Parent.FindControl("checkoutMultiPage") as RadMultiPage;
                    if (checkoutMultiPage != null)
                    {
                        checkoutMultiPage.SelectedIndex = 1;

                        RadPageView shippingInformationPageView = Parent.Parent.Parent.Parent.FindControl("shippingInformationPageView") as RadPageView;
                        if (shippingInformationPageView != null)
                        {
                            shippingInformationPageView.Selected = false;
                        }

                        RadPageView shippingOptionsView = Parent.Parent.Parent.Parent.FindControl("shippingOptionsView") as RadPageView;
                        if (shippingOptionsView != null)
                        {
                            shippingOptionsView.Selected = true;
                        }

                    }

                    RadTabStrip radTabStrip = Parent.Parent.Parent.Parent.FindControl("checkoutTabStrip") as RadTabStrip;
                    if (radTabStrip != null)
                    {
                        // shipping options screen;
                        radTabStrip.Tabs[0].Selected = false;
                        radTabStrip.Tabs[0].PageView.Selected = false;
                        radTabStrip.SelectedIndex = 1;
                        radTabStrip.Tabs[1].Selected = true;
                        radTabStrip.Tabs[1].PageView.Selected = true;

                       // radTabStrip.DataBind();
                    }
                 }
                else if (e.CommandName == "Delete")
                {
                    DeleteCustomerAddress(id);
                    GetCustomerAddressandBindData();

                }
                else if (e.CommandName == "Edit")
                {
                    GetShiipingAddressProperties(custAdd);
                }
            }

     

5 posts, 0 answered