SF v4.3.1873 Cosmetics
Hey,
I've come across some minor issues with the new release...
Taxation of non-shippable products goes off the reservation
When under Ecommerce >> StoreSettings TaxesSettings are set to include taxes (both manually+ automatically) and the selected tax from the dropdown is a Shipping tax, then 'non-shippable' products are incorrectly taxed. In the product listing and shoppingcart, the product is listed as it should, but as soon as you checkout, the checkout process switches to esxcluding tax and calculates 0% Tax.
When both a 'shippable' and a 'non-shippable' product are checked out, both products are taxed according to the tax set in TaxSettings.
After buying a non-shippable product the shippingcountry is not read back from profile.
To reproduce:
1. Buy a general product. Fill in different shipping & billing address. Finish the checkout process.
2. Buy a software product. (adress already filled in). Finish the checkout process.
3. Buy a general product. On the shipping adress fields, all fields are retrieved from step 1, except the country which is reset to Algeria (first in dropdown).
Hello Jochem,
Thank you for bringing these issues to our attention. And apologies for taking long to respond, I have logged tickets in PITS for these issues.
Hey Venkata,
No apologies needed for the delayed response, as the title already suggested it weren't important issues.
Well the 'inline update' is just a crummy description on my part, sorry for that.
What I meant to say was actually an addition to the '20111101 #5' issue. It opens a generated new page under a different url, but it looks like it 'just' updates the product result set. Instead of displaying for instance 1 detail set and 1 overview, it displays 2x the same product (see attached screenshots).
I reported this already, but the 'Buy Now' widget sometimes seems to be affected on some occasions as well. Haven't completely figured out yet which filter/sort combo does the trick, but wanted to mention it in case you guys are looking into it already. I'll post on update when I know the exact conditions of course...
Jochem.
Hello Jochem,
Thank you for clarifying the issue. I have logged a ticket in PITS for this issue. Here is the PITS link for the bug.
Greetings,Hey Grace,
Thanks! When I've got an update I'll relay it to the PITS issue aswell...
Jochem.
Thanks for that list, I just noticed the sort change when changing templates as well. I would like to add to this list though.... Can we have a way, possibly based on the single item templates, to change the template of the item selected in the Buy Now module? I have rearranged the single items to display better for me but I can't for the Buy Now items. Thanks!
Eric
Hi Eric,
Thank you for the suggestion. I have logged it as a feature request.
I also have a workaround for you the time being. If you want to modify just the visual appearance of your Buy it now control, you can simply create a custom template based on the default one we're using, and then map it to all instances of the widget throughout Sitefinity, or pass it to one widget on a page. For more information on mapping external templates to Sitefinity 4.x widgets, please check these resources:
Customizing Sitefinity 4 Controls with the ViewMap
Mapping External Templates for Sitefinity 4 Widgets
I have also included the CSS code of the Buy it now control if you wish to modify the Buy it now control.
<%@ Control Language=
"C#"
AutoEventWireup=
"true"
CodeBehind=
"BuyNowViewCustom.ascx.cs"
Inherits=
"SitefinityWebApp.BuyNowViewCustom"
%>
<%@ Register Assembly=
"Telerik.Sitefinity"
Namespace=
"Telerik.Sitefinity.Modules.Ecommerce.Orders.Web.UI"
TagPrefix=
"sfOrders"
%>
<%@ Register Assembly=
"Telerik.Sitefinity"
Namespace=
"Telerik.Sitefinity.Modules.Ecommerce.Catalog.Web.UI.Fields"
TagPrefix=
"sfCatalog"
%>
<%@ Register TagPrefix=
"sf"
Namespace=
"Telerik.Sitefinity.Web.UI.ContentUI"
Assembly=
"Telerik.Sitefinity"
%>
<%@ Register TagPrefix=
"sf"
Namespace=
"Telerik.Sitefinity.Web.UI"
Assembly=
"Telerik.Sitefinity"
%>
<%@ Register TagPrefix=
"sf"
Namespace=
"Telerik.Sitefinity.Web.UI.PublicControls.BrowseAndEdit"
Assembly=
"Telerik.Sitefinity"
%>
<%@ Register TagPrefix=
"telerik"
Namespace=
"Telerik.Web.UI"
Assembly=
"Telerik.Web.UI"
%>
<%@ Register TagPrefix=
"sf"
Namespace=
"Telerik.Sitefinity.Modules.Ecommerce.Catalog.Web.UI"
Assembly=
"Telerik.Sitefinity"
%>
<div id=
"widgetStatus"
runat=
"server"
visible=
"false"
class
=
"sfErrorSummary sfTopMsg"
>
<asp:Label ID=
"widgetStatusMessage"
runat=
"server"
/>
</div>
<div
class
=
"sfproductDetailsWrp"
>
<telerik:RadListView ID=
"SingleItemContainer"
ItemPlaceholderID=
"ItemContainer"
AllowPaging=
"False"
runat=
"server"
EnableEmbeddedSkins=
"false"
EnableEmbeddedBaseStylesheet=
"false"
>
<LayoutTemplate>
<div
class
=
"sfproductDetails sfproductBuyNow sfClearfix"
>
<asp:PlaceHolder ID=
"ItemContainer"
runat=
"server"
/>
</div>
</LayoutTemplate>
<ItemTemplate>
<div
class
=
"sfproductImgsWrp"
>
<div
class
=
"sfproductMainImgWrp"
>
<asp:HyperLink runat=
"server"
ID=
"productImage"
ImageUrl=
'<%# Eval("ThumbnailUrl") %>'
/>
</div>
</div>
<div
class
=
"sfproductInfoWrp"
>
<asp:Panel runat=
"server"
ID=
"productInformationPanel"
>
<h1
class
=
"sfproductTitle"
><asp:Literal ID=
"productTitle"
runat=
"server"
Text=
'<%# Eval("Title") %>'
/></h1>
<div
class
=
"sfproductPrice"
>
<sfCatalog:DisplayPriceField ID=
"DisplayPriceField1"
runat=
"server"
ObjectType=
"Product"
ObjectId=
'<%# Eval("Id") %>'
/>
</div>
<sf:ProductDynamicFields id=
"productDynamicFields"
runat=
"server"
ProductItem=
'<%# Page.GetDataItem() %>'
></sf:ProductDynamicFields>
<div
class
=
"sfproductDescription"
><asp:Literal ID=
"productDescription"
runat=
"server"
Text=
'<%# Eval("Description") %>'
/></div>
</asp:Panel>
</div>
</ItemTemplate>
</telerik:RadListView>
<div
class
=
"sfAddToCartWrp"
>
<asp:Button runat=
"server"
ID=
"buyNowButton"
Text=
"<%$Resources:OrdersResources, BuyNowButton %>"
CssClass=
"sfAddToCartBtn"
/>
</div>
</div>
Thank you very much, I found the template and modified it a little, but I can't move the Buy Now button to show up underneath the price. The following code works but shows two buttons. If I remove the bottom button it gives me the error:
01.
<%@ Control Language="C#" %>
02.
<%@ Register Assembly="Telerik.Sitefinity" Namespace="Telerik.Sitefinity.Modules.Ecommerce.Orders.Web.UI" TagPrefix="sfOrders" %>
03.
<%@ Register Assembly="Telerik.Sitefinity" Namespace="Telerik.Sitefinity.Modules.Ecommerce.Catalog.Web.UI.Fields" TagPrefix="sfCatalog" %>
04.
<%@ Register TagPrefix="sf" Namespace="Telerik.Sitefinity.Web.UI.ContentUI" Assembly="Telerik.Sitefinity" %>
05.
<%@ Register TagPrefix="sf" Namespace="Telerik.Sitefinity.Web.UI" Assembly="Telerik.Sitefinity" %>
06.
<%@ Register TagPrefix="sf" Namespace="Telerik.Sitefinity.Web.UI.PublicControls.BrowseAndEdit" Assembly="Telerik.Sitefinity" %>
07.
<%@ Register TagPrefix="telerik" Namespace="Telerik.Web.UI" Assembly="Telerik.Web.UI" %>
08.
<%@ Register TagPrefix="sf" Namespace="Telerik.Sitefinity.Modules.Ecommerce.Catalog.Web.UI" Assembly="Telerik.Sitefinity" %>
09.
10.
<
div
id
=
"widgetStatus"
runat
=
"server"
visible
=
"false"
class
=
"sfErrorSummary sfTopMsg"
>
11.
<
asp:Label
ID
=
"widgetStatusMessage"
runat
=
"server"
/>
12.
</
div
>
13.
<
div
class
=
"sfproductDetailsWrp"
>
14.
<
telerik:RadListView
ID
=
"SingleItemContainer"
ItemPlaceholderID
=
"ItemContainer"
AllowPaging
=
"False"
runat
=
"server"
EnableEmbeddedSkins
=
"false"
EnableEmbeddedBaseStylesheet
=
"false"
>
15.
<
LayoutTemplate
>
16.
<
div
class
=
"sfproductDetails sfproductBuyNow sfClearfix"
>
17.
<
asp:PlaceHolder
ID
=
"ItemContainer"
runat
=
"server"
/>
18.
</
div
>
19.
</
LayoutTemplate
>
20.
<
ItemTemplate
>
21.
<
h1
class
=
"sfproductTitle"
><
asp:Literal
ID
=
"productTitle"
runat
=
"server"
Text='<%# Eval("Title") %>' /></
h1
>
22.
<
div
class
=
"sfproductImgsWrp"
>
23.
<
div
class
=
"sfproductMainImgWrp"
>
24.
<
asp:HyperLink
runat
=
"server"
ID
=
"productImage"
ImageUrl='<%# Eval("ThumbnailUrl") %>' />
25.
26.
</
br
>
27.
</
br
>
28.
</
br
>
29.
<
div
class
=
"sfproductPrice"
>
30.
<
sfCatalog:DisplayPriceField
runat
=
"server"
ObjectType
=
"Product"
ObjectId='<%# Eval("Id") %>' />
31.
</
div
>
32.
33.
<
div
class
=
"sfAddToCartWrp"
>
34.
<
asp:Button
runat
=
"server"
ID
=
"buyNowButton"
Text="<%$Resources:OrdersResources, BuyNowButton %>" CssClass="sfAddToCartBtn" />
35.
</
div
>
36.
37.
38.
</
div
>
39.
40.
41.
42.
</
div
>
43.
44.
45.
46.
<
div
class
=
"sfproductInfoWrp"
>
47.
<
asp:Panel
runat
=
"server"
ID
=
"productInformationPanel"
>
48.
49.
50.
<
sf:ProductDynamicFields
id
=
"productDynamicFields"
runat
=
"server"
ProductItem='<%# Page.GetDataItem() %>'></
sf:ProductDynamicFields
>
51.
<
div
class
=
"sfproductDescription"
><
asp:Literal
ID
=
"productDescription"
runat
=
"server"
Text='<%# Eval("Description") %>' /></
div
>
52.
</
asp:Panel
>
53.
</
div
>
54.
</
ItemTemplate
>
55.
</
telerik:RadListView
>
56.
57.
<
div
class
=
"sfAddToCartWrp"
>
58.
<
asp:Button
runat
=
"server"
ID
=
"buyNowButton"
Text="<%$Resources:OrdersResources, BuyNowButton %>" CssClass="sfAddToCartBtn" />
59.
</
div
>
60.
61.
62.
</
div
>
I set visible="false" for the bottom button, but is there a better way?
Hi Eric,
My suggestion would be since the button is a required field but you want to hide the field would be to set the button to "style=display:none" in the CSS.
Please let us know if you have any more questions or concerns.
Kind regards,
Grace Hallwachs
the Telerik team
Ok, I assumed the bottom button would just disappear and the top one would work, but it does not. I assume this is because a working button must be outside of:
</
ItemTemplate
>
</
telerik:RadListView
>
Hi Eric,
My apologies for any inconvenience caused.
I have done some additional testing with the Buy it now widget. The Buy it now button does have to stay outside of the RadListView because the control is expecting to have the button declared outside the RadListView. The widget is a container and in that container there are several controls and some of these controls might have their own containers. The main container is expecting to find the Buy it now button in its own container but since the button was moved into another container, it will not be visible to the widget(container)
I have a workaround for you. I have rearranged the controls inside the ListView. Here is the code.
<%@ Control Language="C#" %>
<%@ Register Assembly="Telerik.Sitefinity" Namespace="Telerik.Sitefinity.Modules.Ecommerce.Orders.Web.UI" TagPrefix="sfOrders" %>
<%@ Register Assembly="Telerik.Sitefinity" Namespace="Telerik.Sitefinity.Modules.Ecommerce.Catalog.Web.UI.Fields" TagPrefix="sfCatalog" %>
<%@ Register TagPrefix="sf" Namespace="Telerik.Sitefinity.Web.UI.ContentUI" Assembly="Telerik.Sitefinity" %>
<%@ Register TagPrefix="sf" Namespace="Telerik.Sitefinity.Web.UI" Assembly="Telerik.Sitefinity" %>
<%@ Register TagPrefix="sf" Namespace="Telerik.Sitefinity.Web.UI.PublicControls.BrowseAndEdit" Assembly="Telerik.Sitefinity" %>
<%@ Register TagPrefix="telerik" Namespace="Telerik.Web.UI" Assembly="Telerik.Web.UI" %>
<%@ Register TagPrefix="sf" Namespace="Telerik.Sitefinity.Modules.Ecommerce.Catalog.Web.UI" Assembly="Telerik.Sitefinity" %>
<
div
id
=
"widgetStatus"
runat
=
"server"
visible
=
"false"
class
=
"sfErrorSummary sfTopMsg"
>
<
asp:Label
ID
=
"widgetStatusMessage"
runat
=
"server"
/>
</
div
>
<
div
class
=
"sfproductDetailsWrp"
>
<
telerik:RadListView
ID
=
"SingleItemContainer"
ItemPlaceholderID
=
"ItemContainer"
AllowPaging
=
"False"
runat
=
"server"
EnableEmbeddedSkins
=
"false"
EnableEmbeddedBaseStylesheet
=
"false"
>
<
LayoutTemplate
>
<
div
class
=
"sfproductDetails sfproductBuyNow sfClearfix"
>
<
asp:PlaceHolder
ID
=
"ItemContainer"
runat
=
"server"
/>
</
div
>
</
LayoutTemplate
>
<
ItemTemplate
>
<
div
class
=
"sfproductImgsWrp"
>
<
div
class
=
"sfproductMainImgWrp"
>
<
asp:HyperLink
runat
=
"server"
ID
=
"productImage"
ImageUrl='<%# Eval("ThumbnailUrl") %>' />
</
div
>
</
div
>
<
div
class
=
"sfproductInfoWrp"
>
<
asp:Panel
runat
=
"server"
ID
=
"productInformationPanel"
>
<
h1
class
=
"sfproductTitle"
><
asp:Literal
ID
=
"productTitle"
runat
=
"server"
Text='<%# Eval("Title") %>' /></
h1
>
<
div
class
=
"sfproductDescription"
><
asp:Literal
ID
=
"productDescription"
runat
=
"server"
Text='<%# Eval("Description") %>' /></
div
>
<
div
class
=
"sfproductPrice"
>
<
sfCatalog:DisplayPriceField
ID
=
"DisplayPriceField1"
runat
=
"server"
ObjectType
=
"Product"
ObjectId='<%# Eval("Id") %>' />
</
div
>
</
asp:Panel
>
</
div
>
</
ItemTemplate
>
</
telerik:RadListView
>
<
div
class
=
"sfAddToCartWrp"
>
<
asp:Button
runat
=
"server"
ID
=
"buyNowButton"
Text="<%$Resources:OrdersResources, BuyNowButton %>" CssClass="sfAddToCartBtn" />
</
div
>
</
div
>
<%@ Control Language="C#" %>
<%@ Register Assembly="Telerik.Sitefinity" Namespace="Telerik.Sitefinity.Modules.Ecommerce.Orders.Web.UI" TagPrefix="sfOrders" %>
<%@ Register Assembly="Telerik.Sitefinity" Namespace="Telerik.Sitefinity.Modules.Ecommerce.Catalog.Web.UI.Fields" TagPrefix="sfCatalog" %>
<%@ Register TagPrefix="sf" Namespace="Telerik.Sitefinity.Web.UI.ContentUI" Assembly="Telerik.Sitefinity" %>
<%@ Register TagPrefix="sf" Namespace="Telerik.Sitefinity.Web.UI" Assembly="Telerik.Sitefinity" %>
<%@ Register TagPrefix="sf" Namespace="Telerik.Sitefinity.Web.UI.PublicControls.BrowseAndEdit" Assembly="Telerik.Sitefinity" %>
<%@ Register TagPrefix="telerik" Namespace="Telerik.Web.UI" Assembly="Telerik.Web.UI" %>
<%@ Register TagPrefix="sf" Namespace="Telerik.Sitefinity.Modules.Ecommerce.Catalog.Web.UI" Assembly="Telerik.Sitefinity" %>
<
div
id
=
"widgetStatus"
runat
=
"server"
visible
=
"false"
class
=
"sfErrorSummary sfTopMsg"
>
<
asp:Label
ID
=
"widgetStatusMessage"
runat
=
"server"
/>
</
div
>
<
div
class
=
"sfproductDetailsWrp"
>
<
telerik:RadListView
ID
=
"SingleItemContainer"
ItemPlaceholderID
=
"ItemContainer"
AllowPaging
=
"False"
runat
=
"server"
EnableEmbeddedSkins
=
"false"
EnableEmbeddedBaseStylesheet
=
"false"
>
<
LayoutTemplate
>
<
div
class
=
"sfproductDetails sfproductBuyNow sfClearfix"
>
<
asp:PlaceHolder
ID
=
"ItemContainer"
runat
=
"server"
/>
</
div
>
</
LayoutTemplate
>
<
ItemTemplate
>
<
h1
class
=
"sfproductTitle"
><
asp:Literal
ID
=
"productTitle"
runat
=
"server"
Text='<%# Eval("Title") %>' /></
h1
>
<
div
class
=
"sfproductImgsWrp"
>
<
div
class
=
"sfproductMainImgWrp"
>
<
asp:HyperLink
runat
=
"server"
ID
=
"productImage"
ImageUrl='<%# Eval("ThumbnailUrl") %>' />
</
br
>
</
br
>
</
br
>
<
div
class
=
"sfproductPrice"
>
<
sfCatalog:DisplayPriceField
runat
=
"server"
ObjectType
=
"Product"
ObjectId='<%# Eval("Id") %>' />
</
div
>
<
div
class
=
"sfAddToCartWrp"
>
<
asp:Button
runat
=
"server"
ID
=
"buyNowButton"
Text="<%$Resources:OrdersResources, BuyNowButton %>" CssClass="sfAddToCartBtn" />
</
div
>
</
div
>
</
div
>
<
div
class
=
"sfproductInfoWrp"
>
<
asp:Panel
runat
=
"server"
ID
=
"productInformationPanel"
>
<
sf:ProductDynamicFields
id
=
"productDynamicFields"
runat
=
"server"
ProductItem='<%# Page.GetDataItem() %>'></
sf:ProductDynamicFields
>
<
div
class
=
"sfproductDescription"
><
asp:Literal
ID
=
"productDescription"
runat
=
"server"
Text='<%# Eval("Description") %>' /></
div
>
</
asp:Panel
>
</
div
>
</
ItemTemplate
>
</
telerik:RadListView
>
<
div
class
=
"sfAddToCartWrp"
>
<
asp:Button
runat
=
"server"
ID
=
"buyNowButton"
Text="<%$Resources:OrdersResources, BuyNowButton %>" CssClass="sfAddToCartBtn" />
</
div
>
</
div
>
Hi Eric,
Unfortunately this won't work the way you are trying to do it now. You can hide the original button, but the new button that you add in the RadListView templates isn't hoocked to any events, so this is why when you click it it just posts back. The original behaviour of the button is to add the product to the shopping cart and to redirect to the checkout page. This is the code that we use in the default Telerik.Sitefinity.Modules.Ecommerce.Catalog.Web.UI.Views.BuyNowView control:
IShoppingCartAdder shoppingCartAdder =
new
ShoppingCartAdder();
string
defaultCurrencyName = Config.Get<EcommerceConfig>().DefaultCurrency;
OptionsDetails optionsDetails =
new
OptionsDetails();
shoppingCartAdder.AddItemToShoppingCart(
this
, OrdersManager.GetManager(),
this
.Product, optionsDetails, 1, defaultCurrencyName);
void
AddItemToShoppingCart(IOrdersControl ordersControl, ICartOrderManager ordersManager, Product product, OptionsDetails optionDetails,
int
quantity,
string
currencyName);