This topic provides examples for using the Episerver Commerce APIs to work with PriceType features.
Working with PriceType
Examples of how to work with PriceType, for example how to get price type definitions.
<SalePriceTypes>
<add key="NewCustomPriceType" value="3" description="New Custom Price Type" />
<add key="JurisdictionGroup" value="4" description="Jurisdiction Group"/>
</SalePriceTypes>
Adding custom price types
To add a new PriceType, add a new line within the SalePriceTypes section in the ecf.cataloconfigig file.
<SalePriceTypes>
<add key="NewCustomPriceType" value="3" description="New Custom Price Type" />
<add key="JurisdictionGroup" value="4" description="Jurisdiction Group"/>
</SalePriceTypes>
Note: The value must be unique and 3 or greater.
Getting 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
}
}
Adding your own 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.
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);
}
}
Last updated: Mar 15, 2021