HomeDev GuideAPI Reference
Dev GuideAPI ReferenceUser GuideLegal TermsGitHubNuGetDev CommunityOptimizely AcademySubmit a ticketLog In
Dev Guide

PriceType examples

Describes how to use Optimizely Customized Commerce APIs to work with PriceType features.

Add custom price types

To add a new PriceType, add a new line within the SalePriceTypes of CatalogOptions in appsettings.json file.

"EPiServer": {
      "Commerce": {
        "CatalogOptions": {
          "SalePriceTypes": [
            {
              "Key": "NewCustomPriceType",
              "Value": "3",
              "Description": "New Custom Price Type"
            },
            {
              "Key": "JurisdictionGroup",
              "Value": "4",
              "Description": "Jurisdiction Group"
            }
          ]
        }
      }
    }

📘

Note

The value must be unique and 3 or greater.

Get all price types enumum and configuration

PriceTypeConfiguration.PriceTypeDefinitions returns all price types, including predefined price types and price types defined in the configuration.

namespace CodeSamples.Mediachase.Commerce.Pricing
      {
        public class PriceTypeConfigurationSample
          {
            #region GetPriceTypeFromEnumAndConfiguration
            public IDictionary<CustomerPricing.PriceType, PriceTypeDefinition> GetAllPriceTypeDefinitions()
              {
                 // Get all price types - included predefined and price types from configuration file.
                 var priceTypeDefinitions = PriceTypeConfiguration.Instance.PriceTypeDefinitions;
                 return priceTypeDefinitions;
              }
            #endregion
          }
      }

Add customer price group

Customer Price Group is a predefined price type that should be matched with a specific sale code. Options available to marketers are predefined as: Customer, Partner, and Distributor.

As a developer, you can add items to that list, to make your own customer price group available in the drop-down.

800

Populate the list by adding the code in the example below, and call that from your initialization module.

private void AddVIPCustomerPriceGroup()
      {
        var metaFieldType = DataContext.Current.MetaModel.RegisteredTypes["ContactGroup"];
        var metaEnumItems = MetaEnum.GetItems(metaFieldType);
        var hasVIPGroup = metaEnumItems.Any(item => string.Equals(item.Name, "VIP", StringComparison.InvariantCultureIgnoreCase));
        if (!hasVIPGroup)
          {
            var lastIndex = metaEnumItems.Count();
            MetaEnum.AddItem(metaFieldType, "VIP", ++lastIndex);
          }
      }