Skip to main content

Le Blog d'Olivier Steffen

Go Search
Home
  

Categories
Commerce Server

 Qui suis je ?

Mon nom est Olivier Steffen, j'ai 26 ans et je suis employé chez ezos depuis Juillet 2008.

Jeune diplômé, je travaille actuellement dans le domaine du e-commerce avec le logiciel Microsoft Commerce Server.

Egalement photographe amateur, j'expose mes créations sur le site DeviantArt http://ostefn.deviantart.com

who i am 

 

 

 

Commerce server "Mojave"- PDC2008

Tom Schultz et Kerry Havas viennent de faire une présentation de Commerce Server "Mojave" à la PDC 2008. La grande évolution réside dans l'intégration de Commerce Server dans Sharepoint (MOSS/WSS).

L'architecture de Commerce Server:

Commerce Server 2007 Commerce Server Mojave
CommerceServerToday CommerceServerMojave

 

Qu’est que Mojave ?

  • Création de boutique sur différent support (web, mobile, Live service)
  • 30 web parts dédiés à Commerce Server.
  • Des outils graphiques pour gérer les boutiques.
  • templates XSL.
  • ...

Video de la session PDC2008 - Commerce Server Mojave

Commerce Server 2007 - Catalogue - Moteur de recherche par critère
  1. Connection au CatalogContext du site

    CatalogContext ctx = CommerceContext.Current.CatalogSystem;

  2. Récupérer toutes les tailles de la propriété Clothing_size (cette propriété a été créée dans le "Catalog and Inventory Schema Manager").

    CatalogEnumerationProperty property =
                (
    CatalogEnumerationProperty)ctx.GetProperty("Clothing_size");

    On implémente ensuite un Array avec toutes les valeurs de la propriété en fonction de la langue de l'utilisateur.

          public static ArrayList ArrayPropertySearch(CatalogEnumerationProperty property)
            {
               
    ArrayList al = new ArrayList();
               
    foreach (DataRow row in property.EnumerationValues.EnumerationPropertyValues.Rows)
                {
                   
    if (row["language"].ToString() != "")
                    {
                       
    if (row["language"].ToString() == Thread.CurrentThread.CurrentUICulture.ToString())
                            al.Add(row[
    "value"]);
                    }
                   
    else
                    {
                        al.Add(row[
    "value"]);
                    }
                }
               
    return al;
            }

    La checkboxlist est ensuite créée avec toutes les valeurs "tailles" de la propriété du produit.

    critsearch

  3. Il suffit maintenant de récupérér les valeurs des checkbox sélectionnés et de créer ensuite une requête de recherche. Nous allons donc créer une clause de recherche "SqlWhereClause" pour les produits.

       // Exemple d'une structure SqlWhereClause
        // cs.SqlWhereClause =
        //         "[Clothing_Size] = '35' AND [Clothing_Size] ='30/32'";

    On crée la structure SqlWhereClause.

          if (!CheckBoxListColor.SelectedIndex.Equals(-1))
            {
               
    bool first = true;
               
    string strchklist = string.Empty;
               
    foreach (ListItem cblc in CheckBoxListColor.Items)
                {
                   
    if (cblc.Selected)
                    {
                       
    if (first) strchklist += "[Clothing_Size] ='" + cblc.Text + "' ";
                       
    else strchklist += "OR [Clothing_Size] ='" + cblc.Text + "' ";
                        first =
    false;
                    }
                }
            }

  4. Maintenant que nous avons notre structure SqlWhereClause, nous allons pouvoir afficher le résultat de la sélection.

          // On crée un objet CatalogSiteAgent pour se connecter à la BD du site
            CatalogSiteAgent catalogSiteAgent = new CatalogSiteAgent();
            catalogSiteAgent.SiteName =
    "CSharpSite";

           
    // Connection au CatalogContext du site
            CatalogContext cc = CatalogContext.Create(catalogSiteAgent);

           
    // On cr?e un objet  catalogsearch
            CatalogSearch cs = cc.GetCatalogSearch();

           
    // Nom du catalogue où la recherche sera effectuée
            cs.CatalogNames = "ClothingsAll";

           
    // Spécifier la langue ? récupérer
            cs.Language = Thread.CurrentThread.CurrentUICulture.ToString();

           
    // Spécifier quel type de classe on voudrait récupérer
            cs.SearchOptions.ClassTypes =
                                         
    CatalogClassTypes.ProductClass |
                                         
    CatalogClassTypes.ProductFamilyClass |
                                         
    CatalogClassTypes.ProductVariantClass |
                                         
    CatalogClassTypes.ProductFamilyForVariantsClass;

           
    // Spécifier quelles propriétés on voudrait retourner
            cs.SearchOptions.PropertiesToReturn =
                            
    "ProductId, VariantId, cy_list_price, DisplayName, Clothing_Size";

           
    // On utilise notre structure SqlWhereClause créée au point précédent
            cs.SqlWhereClause = strchklist;

           
    // On exécute notre objet Search dans un CatalogItemsDataSet
            CatalogItemsDataSet catalogItems = cs.Search();

           
    // On implémente une gridview
            GridView1.DataSource = catalogItems;
            GridView1.DataBind();

    critsearch2 


Commerce Server 2007 - Profile - Etendre la définition "User Object"

 

Le module profile permet la gestion des profils utilisateurs qu’ils soient identifiés ou anonymes.

L’intérêt de ce module est de pouvoir modifier des propriétés existantes à Microsoft Commerce Server ou d’en rajouter en étendant le modèle existant.

Par exemple, on pourrait rajouter un numéro de membre Delhaize si une société a un partenariat avec eux pour l’ajout de points de fidélité. Dans notre cas, on rajoutera un "gender" à la définition "User Object" qui sera visible dans le "Customer and Orders Manager" et sur le site.

Cet ajout se fera en plusieurs étapes :

  • Ajout d'un Site-Terms
  • Ajout d'une propriété
  • Configuration ProfilesWebService
  • Implémentation dans un site asp.net

Ajout d'un nouveau "Site Terms"

  1. Ouvrir Commerce Server Manager
  2. Placez vous dans le Dossier Site Terms
    (Global Resources/Profiles)
  3. Ajouter à la structure "User Site Terms" un nouveau Site Terms
    (Add -> Add a new site-term)

    newsiteterm

    Site Term Attributes
    Name: Gender
    Display name: Gender
    Terms
    Ajouter les terms Mr, Ms et Miss
  4. Sauvegarder

Ajout d'une propriété

  1. Placez vous dans le Dossier Profile Definitions
    (Global Resource/profiles/Profile catalog/Profile Definitions)
  2. Selectionner la définition User Object
  3. Ajouter une nouvelle propriété
    (Add -> Add a new property)

    newproperty

    Attributes
    Name: Gender
    Display name: Gender
    Type: Site Term
    Type reference: < Selectionner le Site Term que vous avez créé >
    Advanced Attributes
    Active: Yes
    Map to data: ProfileService_SQLSource -> User Oject -> Custom Property 1
    L'utilisateur peut créer lui-même des nouvelles colonnes dans table sql UserObject
  4. Sauvegarder

Configuration ProfilesWebService

  1. Ouvrir le fichier en_PresentationInfo.xml
  2. Ajouter le code suivant:

      <profile name="UserObject" displayName="User Object" description="User Object">
        <
    displayArea name="main" displayName="Main">
          <property name="gender" displayName="gender" description="Genfer for the user" />
        </
    displayArea>
      </
    profile>

    Ce code permet donc de rajouter le champ Gender dans le "Customer and Orders Manager"
  3. Sauvegarder

Pour que les changements soient actifs dans Microsoft Commerce Server, n'oubliez pas de faire un iisreset.exe

 

CustomerManager

 

Implémentation dans un site asp.net

  1. Récupération du Site Term Gender et l'implémenter dans un control "RadioButtonList"

        protected void Page_Load(object sender, EventArgs e)
        {
           
    // Get the profilContext
            ProfileContext pc = CommerceContext.Current.ProfileSystem;
           
    // Retrieve all the elements contained in a particular siteterm
            SiteTerm st = pc.GetSiteTerm("gender");
           
    ArrayList al = new ArrayList();
           
    if (st != null)
            {
               
    // Show all elements
                foreach (SiteTermElement ste in st.Elements)
                {
                    al.Add(ste.Name);
                }
                GenderRadioButtonList.DataSource = al;
                GenderRadioButtonList.DataBind();
            }
        }

  2. Création d'un nouveau profile avec la propriété gender

          // Create a new Profile GUID using the required format (Jeff Lynch)
            StringBuilder sb = new StringBuilder();
            sb.Append(
    "{");
            sb.Append(
    Guid.NewGuid().ToString());
            sb.Append(
    "}");
           
    // Create a new UserObject Profile
            Profile profile = CommerceContext.Current.ProfileSystem.CreateProfile(sb.ToString(), "UserObject");
            ...
            profile.Properties[
    "GeneralInfo.gender"].Value = Request.Form["GenderRadioButtonList"];
            ...
           
    //Update and save the profile
            profile.Update();

 

 

 ‭(Hidden)‬ Admin Links