Sitefinity 7.0 options to add multiple shipping address like Amazon
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
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
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
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
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);