Price list item attributes

Pricing APIs compute list price for an item using price list lines. Price list line contains pricing information for a given SKU (ItemID, UOM), or SKU with differing pricing dates, or SKU with differing quantity tiers in Sterling Order Management System Software.

To use the attribute based unit price for an item, you need to enable the pricing organization rule, Enable Attribute Based Unit Price.

When enabled, this feature allows you to model a price list line to store list price, based on the mentioned parameters as well as on item attributes. Item attributes for a price list line can be an exact match to the item attributes, or non-overlapping ranges or combination of both. Item attributes can be numeric or alphabetic.

In attribute based pricing, list prices are determined using combination of item attributes and Item Id, UOM. The combination of item attributes can be an absolute string, or absolute decimal or range based decimal match.

For example, attribute tier based pricing can be setup as follows:

Use case 1

If a customer orders an item called Lenses, which has attribute "SphericalPower" with values between -15 and 15, the list price applied is $9.00. This use case can be modeled as a price list line with attributes as exact match and non-overlapping ranges as follows:
  • In the SBC UI, define the item attribute using Manage attributes option from the Products tab. The attribute in this example is a number attribute with allowed values specified as (15)-15.
    Note: Do not include a space or special characters in the AttributeID. Attributes with spaces in the AttributeID are not supported in this feature.

    From the SBC UI, define the values for these attributes using the attribute tiers.

  • You can also model this use case by forming the API input as follows:
    Sample API input for managePricelistLine API
    
    <PricelistLineList OrganizationCode="DEFAULT">
    		<PricelistLine ItemID="Lenses" PricingStatus="ACTIVE" SellerOrganizationCode="DEFAULT" UnitOfMeasure="EACH" 
    				ListPrice="10.5" StartDateActive="2018-03-15" EndDateActive="2025-03-15">
    			<PricelistHeader PricelistName="PL"/>
    			<PricelistLineAttrList>
    				<PricelistLineAttr LineAttributeID="SphericalPower" LineAttributeGroupID="Numbers" 
                                              LineAttributeDomain="ItemAttribute" 
    						GroupId="1" LineAttributeMinValue="1" LineAttributeMaxValue="1.25"
    						Operation="Manage" ListPrice="9"/>
    		    </PricelistLineAttrList>
    		</PricelistLine>
    </PricelistLineList> 
    
    Sample API input for getItemPrice API
    
        <ItemPrice Currency="USD" OrganizationCode="DEFAULT">
    		<LineItems>
    			<LineItem ItemID="Lenses" LineID="1" Quantity="1" UnitOfMeasure="EACH">
    				<LineItemAttributes SphericalPower="1.05" />
    			</LineItem>
    			<LineItem ItemID="Lenses" LineID="2" Quantity="1" UnitOfMeasure="EACH">
    			</LineItem>
    		</LineItems>
        </ItemPrice>
    
    Sample API input for getOrderPrice API
    
       <Order OrderReference="" OrganizationCode="DEFAULT" EnterpriseCode="DEFAULT" Currency="USD" >
    		<OrderLines>
    			<OrderLine ItemID="Lenses" UnitOfMeasure="EACH" Quantity="12" LineID="1"> 
    				<CustomAttributes SphericalPower="1.05" />
    		    </OrderLine>
    		</OrderLines>
      </Order>
    

Use case 2

If a customer orders an item called Lenses, which has the attribute "SphericalPower" with value equal to 2.50, the list price applied is $7.00. This use case can be modeled as a price list line with attributes as exact match as follows:
  • In the SBC UI, define the item attribute using Manage attributes option from the Products tab. The attribute in this example is a number attribute with allowed values specified as (15)-15. From the SBC UI, define the values for these attributes using the attribute tiers.
  • You can also model this use case by forming the API input as follows:
    Sample API input for managePricelistLine API
    
    <PricelistLineList OrganizationCode="DEFAULT">
    		<PricelistLine ItemID="Lenses" PricingStatus="ACTIVE" SellerOrganizationCode="DEFAULT" UnitOfMeasure="EACH" 
    			ListPrice="10.5" StartDateActive="2018-03-15" EndDateActive="2025-03-15">
    		<PricelistHeader PricelistName="PL"/>
    			<PricelistLineAttrList>
    				<PricelistLineAttr LineAttributeID="SphericalPower" 
    					LineAttributeGroupID="Numbers" LineAttributeDomain="ItemAttribute" 
                                       GroupId="2"  LineAttributeNumberValue="2.50"
    					Operation="Manage" ListPrice="7"/>
    			</PricelistLineAttrList>
    		</PricelistLine>
    </PricelistLineList>
    Sample API input for getItemPrice API
    
    <ItemPrice Currency="USD" OrganizationCode="DEFAULT" >
    		<LineItems>
    			<LineItem ItemID="Lenses" LineID="1" Quantity="1" UnitOfMeasure="EACH">
    				<LineItemAttributes SphericalPower="2.5"/>
    		    </LineItem>
    			<LineItem ItemID="Lenses" LineID="2" Quantity="1" UnitOfMeasure="EACH">
    			</LineItem>
    		</LineItems>
    </ItemPrice>
    
    Sample API input for getOrderPrice API
    
    <Order OrderReference="" OrganizationCode="DEFAULT" EnterpriseCode="DEFAULT" Currency="USD" >
    		<OrderLines>
    			<OrderLine ItemID="Lenses" UnitOfMeasure="EACH" Quantity="12" LineID="1"> 
    				<CustomAttributes SphericalPower="2.5"/>
    			</OrderLine>
    		</OrderLines>
    </Order>

Use case 3

If a customer orders an item called Lenses, which has attribute "SphericalPower" with a value between -15.0 and 15.0, the list price applied is $8.00. This use case can be modeled as a price list line with attributes as exact match and non-overlapping ranges as follows:
  • In the SBC UI, define the item attribute using Manage attributes option from the Products tab. The attribute in this example is a number attribute with allowed values specified as (15)-15. From the SBC UI, define the values for these attributes using the attribute tiers.
  • You can also model this use case by forming the API input as follows:
    Sample API input for managePricelistLine API
    
    <PricelistLineList OrganizationCode="DEFAULT">
    		<PricelistLine ItemID="Lenses" 
    			PricingStatus="ACTIVE" SellerOrganizationCode="DEFAULT" UnitOfMeasure="EACH" 
    			ListPrice="10.5" StartDateActive="2018-03-15" EndDateActive="2025-03-15">
    			<PricelistHeader PricelistName="PL"/>
    			<PricelistLineAttrList>
    				<PricelistLineAttr LineAttributeID="SphericalPower" 
    					LineAttributeGroupID="Numbers" LineAttributeDomain="ItemAttribute" 
                                       GroupId="3" LineAttributeMinValue="1.5" 
    					LineAttributeMaxValue="2.15" Operation="Manage" ListPrice="8"/>
    			</PricelistLineAttrList>
    		</PricelistLine>
        </PricelistLineList>
    
    Sample API input for getItemPrice API
       <ItemPrice Currency="USD" OrganizationCode="DEFAULT" >
    		<LineItems>
    			<LineItem ItemID="Lenses" LineID="1" Quantity="1" UnitOfMeasure="EACH" >
    				<LineItemAttributes SphericalPower="1.5"/>
    			</LineItem>
    			<LineItem ItemID="Lenses" LineID="2" Quantity="1" UnitOfMeasure="EACH" >
    			</LineItem>
    		</LineItems>
        </ItemPrice>
    Sample API input for getOrderPrice API
    
       <Order OrderReference="" OrganizationCode="DEFAULT" EnterpriseCode="DEFAULT" 
    		Currency="USD">
    		<OrderLines>
    			<OrderLine ItemID="Lenses" UnitOfMeasure="EACH" Quantity="12" LineID="1"> 
    				<CustomAttributes SphericalPower="1.5"/>
    			</OrderLine>
    		</OrderLines>
        </Order>

Use case 4

If a customer orders an item called Lenses, which has an attribute "SphericalPower" with a value that does not fall in any range category, the system defaults to base list price.
  • In the SBC UI, define the item attribute using Manage attributes option from the Products tab. The attribute in this example is a number attribute with allowed values specified as (15)-15. From the SBC UI, define the values for these attributes using the attribute tiers.
  • You can also model this use case by forming the API input as follows:

    In this use case, for a given ItemID and UOM there is no list price which matches the data range. Hence, the default list price is used for this line item, since there is no record for this combination in the database.

    Sample API input for getItemPrice API
    
    <ItemPrice Currency="USD" OrganizationCode="DEFAULT">
                     <LineItems>
                          <LineItem ItemID="Lenses" LineID="2" Quantity="1" UnitOfMeasure="EACH" >
                           <LineItemAttribute SphericalPower=”3”/>
                           </LineItem>
                           <LineItem ItemID="Lenses" LineID="1" Quantity="1" UnitOfMeasure="EACH" >
                           </LineItem> 
                      </LineItems>
    </ItemPrice>
    
    Sample API input for getOrderPrice API
    
    <Order OrderReference="" OrganizationCode="DEFAULT" EnterpriseCode="DEFAULT" Currency="USD">
    		<OrderLines>
    			<OrderLine ItemID="Lenses" UnitOfMeasure="EACH" Quantity="12" LineID="1"> 
    				<CustomAttributes SphericalPower="1.5"/>
    	           </OrderLine>
    		</OrderLines>
    </Order>

The following table illustrates these use cases:

Product ID List price Quantity ordered Attribute value New List price
Lenses/Each $10.00 1 SphericalPower: +1.05 $9.00
Lenses/Each $10.00 1 SphericalPower: +2.50 $8.00
Lenses/Each $10.00 1 SphericalPower: 1.5 $7.00
Lenses/Each $10.00 1 SphericalPower: 3 $10.00
What to do next
  • Enable the pricing organization rule, Enable Attribute Based Unit Price. .
  • Create attribute tiers for a price list item.
  • Testing the pricing setup with item attributes.