2010-02-24

Alen Ziver Malhasoglu's New Microsoft Commerce Server Blog

CS 2009 Catalog System Design Guidelines

Design consideration for developing commerce server catalog system, By Ravi Kanth
---
Catalogset features in Commerce Server 2007, by Vinayak
---
Getting the most appropriate list of catalogs for the current user, by Vinayak
---

2010-02-23

Alen Ziver Malhasoglu's New Microsoft Commerce Server Blog

Discount orders in Commerce Server

Regarding my friend's question about CS 2002 discount interaction:
------------------------------------------------------------------------------
Order Subtotal Discount

The Order Subtotal Discount applies discounts to the order subtotal. An order subtotal discount is an order-level discount that applies to all products in a shopping basket. For example, free shipping is a type of order-level discount: you can give users free shipping for all products in their basket. Order-level discounts delivered with Commerce Server are free shipping, and a percentage or dollar amount off the total price. You cannot apply multiple discounts to an order-level discount. Order-level discounts have an implicit limit of 1.

To handle refunds properly, order-level discounts should be distributed across all line items. Commerce Server 2002 distributes percentage off discounts and dollar off discounts. For information about distributing order-level discounts see Distributing Order-level Discounts.

Note

If you want to restrict a particular item from participating in an order-level discount (for example, an item in high demand), see the "OrderLevelDiscountApply" component at :\Program Files\Microsoft Commerce Server 2002\SDK\Samples\Order Processing\OrderLevelDiscountComponents. This component allows you to specify the name of a key that specifies whether the item can receive an offer.
This feature does not apply to item-level discounts, but can be added with custom configuration work.

------------------------------------------------------------------------------
Multiple Discounts

Discount interaction policies are rules that determine whether an item can receive multiple discounts or multiple awards. Commerce Server 2002 supports four different discount interaction policies.

  • A condition item can be reused as another condition item. Instructs Commerce Server 2002 that a condition item used to qualify for an offer can be reused again to qualify for another offer.
  • A condition item can be reused as an award item. Instructs Commerce Server 2002 that an item used to qualify for a discount can still be eligible to receive an offer.
  • An award item can be reused as a condition item. Instructs Commerce Server 2002 that an item upon which an award was given can still be used to qualify for other offers.
  • An award item can be used as another award item. Instructs Commerce Server 2002 that an item upon which an award was given is eligible to receive additional offers, for example, an item can receive multiple awards.
------------------------------------------------------------------------------
Other links related to discounts
http://msdn.microsoft.com/en-us/library/ee785199(CS.20).aspx

2010-02-22

Alen Ziver Malhasoglu's New Microsoft Commerce Server Blog

Windows Mobile reloaded!

http://www.engadget.com/2010/02/15/windows-phone-7-series-hands-on-and-impressions/

Windows Mobile 7 User Experience demo is nice to see

A few mumblings about the future of WM7 and XNA integration...
=> Why not integrating Mobile Gaming experience with Commerce? Users like to play games on the train / underground, if they score high and get one of the highest scores, you may issue her a coupon code, in order to reward her with a discount. Thus two platforms, gaming and commerce, get in touch together.
=> Thus you PLAY something that affects your COMMERCE experience.

Also other way integration is possible. I have seen so many news that states one of the most popular games namely World of Warcraft, is a market for characters and/or weapons, shields, .. etc. People sell these items in the game's market.
=> Thus you BUY something that affects your GAME experience.

That is a fascinating idea, hope to see these kind of applications on Windows Mobile 7 soon.

2010-02-19

Alen Ziver Malhasoglu's New Microsoft Commerce Server Blog

BinaryFormatter for Net Compact Framework

Here is a forum thread
Here is a free implementation

Following ref proved that CF does not have OOB binaryFormatter
"Differences Between the .NET Compact Framework and the .NET Framework"

=> Have i said "sql ce rocks"? http://bit.ly/dcbYNC
download Sql2005CE

=> Sql Server 2008 CE info and download:

2010-02-18

Alen Ziver Malhasoglu's New Microsoft Commerce Server Blog

Google Docs API

http://code.google.com/apis/documents/code.html

Sql Server Editions and Comparison

Sql Server 2005 Editions Comparison

Sql Server 2008 Editions Comparison

Compare Editions–Compact and Express for 2008


Sample usage of SQLCE

Entity Framework can be used with Sql Server CE !

2010-02-17

Alen Ziver Malhasoglu's New Microsoft Commerce Server Blog

Windows Azure Services

Windows Azure Platform Offer Comparison Table
http://www.microsoft.com/windowsazure/offers/popup.aspx?lang=en&locale=en-US&offer=COMPARE_PUBLIC

2010-02-16

Alen Ziver Malhasoglu's New Microsoft Commerce Server Blog

Sharepoint Outlook Connector

My brother's fascinating tool which is used to archive and share emails among your company using Sharepoint:

FireFox's FireBug sometimes cause double postbacks

FireBug's double postback bug
"Thanks for the great responses here. In my case it turn out to be FireBug (version 1.05) with FireFox 2.0.0.20. Once I switched off the FireBug Add-in, the double posts stopped."

User Agent strings


http://www.cloudfour.com/mobile/summary.php?sort=DATE&last_agent=6311#row6311


Events in ASP.NET Master and Content Pages

2010-02-12

Alen Ziver Malhasoglu's New Microsoft Commerce Server Blog

Online Advertising jargon

http://en.wikipedia.org/wiki/Click_Through_Rate

Usage share of web browsers

http://www.w3schools.com/browsers/browsers_stats.asp

2010IE8IE7IE6FirefoxChromeSafariOpera
January14.3%11.7%10.2%46.3%10.8%3.7%2.2%
2009IE8IE7IE6FirefoxChromeSafariOpera
December13.5%12.8%10.9%46.4%9.8%3.6%2.3%
November13.3%13.3%11.1%47.0%8.5%3.8%2.3%

2010-02-09

Alen Ziver Malhasoglu's New Microsoft Commerce Server Blog

Misc links for MS CS 2009

Commerce Server Dev Wiki

Microsoft Commerce Server R2 CTP ready to download

http://www.microsoft.com/downloads/details.aspx?FamilyID=d6cb6769-6c5e-46c2-a72a-a9911823ffd9&displaylang=en#filelist

System Requirements

  • Supported Operating Systems: Windows Server 2008; Windows Server 2008 R2
Single-server deployments are supported, which consists of running all the Commerce Server 2009 "R2" components and software requirements (including Microsoft Windows and Microsoft SQL Server) on a single computer. The single-server deployment uses the following software products:
  • Microsoft Windows Server 2008 (64-bit) or Microsoft Windows Server 2008 R2 (64-bit) and Microsoft Windows critical updates
  • IIS 7.0
  • Microsoft SQL Server 2008 Standard or Enterprise (64-bit)
  • Microsoft .NET Framework 3.5 with SP1
  • Microsoft Windows SharePoint Services 3.0 (WSS) SP2 or Microsoft Office SharePoint Server 2007 (MOSS) SP2

Note: this pre-release has only been tested on English platforms. Future versions will be verified on localized platforms.

2010-02-08

Alen Ziver Malhasoglu's New Microsoft Commerce Server Blog

When using RegisterClientScript do not use this.GetType() ...

Quoted from: http://blogs.ipona.com/james/archive/2006/10/03/6710.aspx

Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "Script", scriptText);
This is not good. Why not? Well, this.GetType() is a way of getting the runtime type of an object. That's not necessarily the same type as the one in which this bit of code is being declared.

So what? Does that actually make any difference? Well, yes, if anyone ever writes a control that inherits from your control.

If I create a control called Widget that calls RegisterClientScriptBlock() passing this.GetType(), then whenever I put a few Widget controls on the page, the script block will be registered once, and only once. That's great.

Then later on, I develop a SpecialisedWidget control that inherits from Widget. I drop it onto the page, and suddenly, RegisterClientScriptBlock is getting called with the same script, but two different types - Widget, and SpecialisedWidget. The script block ends up appearing on the page twice. Cue tricky hard to track JavaScript bugs that take ages to find...

Now, if Widget had originally registered that script block passing typeof (Widget) as the type argument instead of this.GetType(), the whole problem wouldn't arise, because even when the SpecialisedWidgets are registering script on the page, the script is registered with the type qualifier of Widget. And as a side bonus, the IL will be more efficient, because typeof (Widget) is a kind of type literal, which the compiler can embed right into the code, rather than a runtime dispatched method call to a reflection API.

Using a Validator to Validate a Check Box


I. If you are using static, page written, ebcontrols..::..

1) add a check box to the page named "chkTandCs"

2)
<script language="javascript" type="text/javascript">
function ValidateTandCs(source, args)
{
args.IsValid = document.getElementById('<%= chkTandCs.ClientID %>').checked;
}
<script>

3)
<asp:customvalidator id="valTandCs" clientvalidationfunction="ValidateTandCs" runat="server" errormessage="Please accept Terms and Conditions before submitting."><asp:CustomValidator>


II. If you are using Dynamic WebControls that are generated on the fly ..::..

2010-02-04

Alen Ziver Malhasoglu's New Microsoft Commerce Server Blog

When generating webcontrols on the fly, keep in mind...

Hi,
I have been working on a code snippet that was rendering ASP.NET server side webcontrols such as TextBox, DropDownList, Validators, ... etc . The problem was there was a bug that prevented regularExpression validators not to be rendered even they have been added to the page at runtime.

I was added two kinds of webserver controls, one was requiredFieldValidator control, and the other was RegularExpressionValidator control. These two kinds of validators were added in the codebehind, but i could only see the requiredFieldValidator controls on the rendered page.

I saw that requiredFieldValidators were added to a TableCell just after their creation. I thought that if that cell was started to be rendered any other element may not be seen on the cell. Thus after adding requiredFieldValidators i was adding RegularExpressionValidators, as i have added to tableCell's controls collection.

The problem was solved by creating an array of controls namely "List ValiadtorList" and i have added each validator control to the list. After filling the list, i have added all the validator controls to a TableCell in a foreach loop that was working on the Validator List controlList.

Just to cut the long story short, see the code segment below:


BEFORE: The problem was requiredFieldValidators were rendered, but regExValidator weren't
-------------------------------------------------------------------------------------------
RequiredFieldValidator rfv = new RequiredFieldValidator();
rfv.ControlToValidate = cont.Value.ID;
rfv.ErrorMessage ="REQUIRED";
rfv.Display = ValidatorDisplay.Dynamic;
TableCell cellValidator=new TableCell();
cellValidator.Controls.Add(rfv);

RegularExpressionValidator regExValidator = new RegularExpressionValidator();
regExValidator.ControlToValidate = cont.Value.ID;
regExValidator.ValidationExpression = inheritedTypeDataValidatorRegEx;
regExValidator.ErrorMessage ="INVALID INPUT";
regExValidator.Display = ValidatorDisplay.Dynamic;
cellValidator.Controls.Add(regExValidator);
-------------------------------------------------------------------------------------------


AFTER: By collectIng all the valIdators In a LIst, and addIngthem to the TableCell dIrectly, bulk add to the tableCell, solved the problem.
-------------------------------------------------------------------------------------------
List ValidatorsList = new List();

RequiredFieldValidator rfv = new RequiredFieldValidator();
rfv.ControlToValidate = cont.Value.ID;
rfv.ErrorMessage ="reUIRED";
rfv.Display = ValidatorDisplay.Dynamic;
TableCell cellValidator=new TableCell();
// cellValidator.Controls.Add(rfv);
ValıdatorLıst .Add(rfv);

RegularExpressionValidator regExValidator = new RegularExpressionValidator();
regExValidator.ControlToValidate = cont.Value.ID;
regExValidator.ValidationExpression = inheritedTypeDataValidatorRegEx;
regExValidator.ErrorMessage ="INVALID INPUT";
regExValidator.Display = ValidatorDisplay.Dynamic;
// cellValidator.Controls.Add(regExValidator);
ValıdatorLıst .Add(regExValıdator);

foreach(Control c in ValidatorList){
cellValidator.Add(c);
}
-------------------------------------------------------------------------------------------


Also have a look at the link below: