Price List Setup

From ADempiere
Jump to: navigation, search
This Wiki is read-only for reference purposes to avoid broken links.

Table of Contents#System Administrator's Guide{{#if: Implementation| | Implementation }}{{#if: | | [[{{{3}}}]] }}{{#if: | | [[{{{4}}}]] }}{{#if: | | [[{{{5}}}]] }} | Price List Setup{{#if: Tax Setup| | Tax Setup }} ⇒

Before you can sell products and services using ADempiere, the products must be listed on a price list. For purchasing, a price list is not necessary but the job of completing the Purchase Orders is easier if a price list exists.

Introduction

A price list is a list of products and services and their associated pricing and discounts. You can prepare price lists for specific business partners or business partner groups. For example:

  • Cash Sale Price List - a price list for a single customer "Cash Sale", used to price items for sale at a POS where the personal identity of the customer is not recorded.
  • Customer Price List - a price list for direct sales to known customers.
  • Distributor Price List - a price list with deep discounts and volume breaks for use by distributors of your products.
  • Supplier Price Lists - price lists of commonly purchased products listing the purchase prices offered by the suppliers and only listing those product sold by the supplier.

The price list includes three prices: a List Price, a Standard Price and a Limit Price. The list price is the documented price. The standard price is the default price used on ADempiere documents such as sales orders. The limit price can be used to set a limit for sales staff who need to make adjustments for certain customers. The limit price is enforced through the users role. For a manufacturer selling through a distribution channel, the list price could be the MSRP or Manufacturer's Suggested Retail Price and the standard price would be the price provided to the distributor. The limit price could be the lower limit for internal staff selling direct to OEM customers.

In ADempiere, it helps to setup a hierarchy of pricing where formulas determine the prices and simplify the creation of multiple lists. Typically, the first price list to setup or import is the supplier price list where the prices are set by the suppliers. With the supplier price list as a base, the sales price list is determined by adding a markup to the supplier pricing. As well as a markup, the final prices can be rounded so they match the currency of the price list or specific rounding schemes such as ending in a 9 or 5, to the nearest dollar, 5 dollars or 10 dollars etc... Two things are required to make additional price lists. A base price list and a scheme that defines the markup, discounts that apply.

Since the price lists are often published, version control of the documents is important, so each price list has a version and only the most recent version is used. The versions can be prepared ahead of time with an effective date and will become active on that date.

Setup Price List

Before you setup your price lists, ensure you have imported or setup your products and business partners. See Product Setup and Business Partner Setup.

To setup price lists, navigate to Material Management{{#if: Material Management Rules |  » Material Management Rules }}{{#if: |  »  }}{{#if: |  »  }}{{#if: |  »  }} and click on Icon mWorkFlow.png Price List Setup. The following workflow will appear in the workflow tab.

 

PriceListSetup.png

 

The workflow includes the following windows:

  • {{#if: Price List Schema|Price List Schema|PriceListSchema }} Window - The Price List Schema defines the calculation rules used in the price lists.
  • {{#if: Price List|Price List|PriceList }} Window - The Price List Window allows you to generate product price lists for your Business Partners. Price lists determine currency and tax treatment. Price list versions allow you to maintain parallel lists for different date ranges. The most current price list version is used based on the document date. All price lists have three prices: List, Standard and Limit. The first step is to create a base price list. You can manually add products and enter the prices or create them automatically. The base price list is often the purchase price list with list price ('official' retail price), the standard price (your purchase price). The limit price can be used to check your final purchase costs after discounts, rebates, etc. Price lists can be calculated and copied. To speed up the calculation, the parameters are stored and used when creating a new price list version.
  • {{#if: Discount Schema|Discount Schema|DiscountSchema }} Window - Trade discount schema calculates the trade discount percentage
  • {{#if: Business Partner|Business Partner|BusinessPartner }} Window - Revisit business partners to assign specific price lists to specific business partners. Most will likely be able to use the default price lists.

Price List Schema

The Price List Schema is the key to understanding how the price lists are generated. A price list can be generated in any currency. It can be created based on an existing price list in a different currency or purchase orders in multiple currencies.

In the {{#if: |{{{3}}}|Schema Line }} Tab there are fields to set the values that will determine the new pricing. The formula used is:

NewPrice = (Convert(BasePrice) + Surcharge) * (100-Discount) / 100;

where:

  • NewPrice is the new List, Standard or Limit price on the new price list.
  • BasePrice is a price on the base price list or the price on the most recent purchase order if no base price list is defined. When a Purchase Order is the source for the BasePrice, the List and Standard prices come from the Purchase Order List Price field. The Limit price is set to the Purchase Order Price - the logic being that one should not sell a product for less than its purchase price. The schema can also select the BasePrice to be:
    • A fixed price
    • The list price on the base price list
    • The standard price on the base price list
    • The limit (or PO) price on the base price list
  • Convert() is a function to convert the base price currency into the new price list currency using the Currency Type in the schema line.
  • Surcharge is a fixed amount added to the converted base price
  • Discount is the discount amount on the schema for the type of the NewPrice. A positive discount % will reduce the NewPrice, a negative % will increase it.

The result can also be rounded to a convenient style of number ($9.99).

Note.gif Note:

The Schema Line tab refers to a minimum and maximum margin as an amount. In the software, these fields are not used to determine the prices.

The schema can be applied to all products or to specific products defined by the following categories/groups:

  • by specific Product,
  • by Product Category,
  • by specific Business Partner,
  • by Business Partner Group, or
  • by Product Groups (Group1 or Group2 on the {{#if: |{{{2}}}|Product }} Window).

The Price List Schema Lines are applied to the price list in ascending order of the Sequence field. Higher sequence numbers will overwrite the results of lower numbers. For that reason, the Schema should be set up with generic entries (all products from all categories) having lower sequence numbers than specific entries. The resulting price list will have a single line per product with the three prices.

Price Lists

The {{#if: Price List|Price List|PriceList }} Window defines the price lists. The price list has a name and description and uses a certain currency with a defines precision. The price list can be marked as a sales price list, as including taxes in the prices, or as to whether or not the price limit should be enforced.

The {{#if: |{{{3}}}|Version }} Tab defines the versions of the price list. The Valid From date determines the earliest date that the price list will be used. Each version must have a Price List Schema defined. If the pricing is based on an existing price list version, that version can be selected as the Base Price List.

The button "Create Price List" will use the schema information to create the price list details as mentioned above. If no Base Price List is defined, the creation process will generate pricing based on purchase order history. Otherwise, the Base Price List version will be used.

Clicking the Create Price List button will open a dialog where you can elect to delete all the existing prices in the price list. If you do not delete all entries, only those existing entries that match the schema will be updated and new entries will be added. You might find this useful if you want to combine price list schemas by creating the price list with one schema related to specific products and then recreating the price list with another that references other products. (You could do something similar with a single schema using multiple schema lines.)

Once the creation process is complete, the price list can be viewed and edited in the {{#if: Product Price|Product Price|ProductPrice }} Tab. The prices can be manually updated. You can also manage prices from the {{#if: |{{{2}}}|Product }} Window on the {{#if: |{{{3}}}|Price }} Tab by changing the prices for the correct price list version.

The {{#if: Product Price Break|Product Price Break|ProductPriceBreak }} Tab provides a way to define a price break point for a specific product and business partner. It is not generic in application so the Discount Schema approach mentioned below may be more useful.

Discount Schema

To add price breaks by volume or flat discounts to a price list, create a Discount Schema in the {{#if: Discount Schema|Discount Schema|DiscountSchema }} Window. The discount schema created is applied to Business Partners in the {{#if: Business Partner|Business Partner|BusinessPartner }} Window on the {{#if: |{{{3}}}|Customer }} Tab or {{#if: |{{{3}}}|Vendor }} Tab.

Importing Price List Data

Before attempting to import price list data, please read the Data Import page.

Importing price list data is straight forward. Before you can import price lists, a default price list schema is required. The schema will not be used during the import but the ID of the schema will be used to complete the mandatory Price List Schema field in the Price List Version table. Products and Business Partners (if used) must also exists in the database.

The import process will use the following defaults if no other data is supplied:

  • AD_Client_ID = <User's Client ID>
  • AD_Org_ID = 0
  • IsActive = 'Y'
  • Created = Sysdate
  • CreatedBy = 0
  • Updated = Sysdate
  • UpdatedBy = 0
  • EnforcePriceLimit = 'N'
  • IsSOPriceList = 'N'
  • IsTaxIncluded = 'N'
  • PricePrecision = 2
  • C_Currency_ID to the Client default currency

The following fields are mandatory:

  • Price List Name or Price List ID
  • Price List Version Valid From date or Price List Version ID
  • Product Value or Product ID
  • Break Value if a Business Partner Value is supplied.

The import process will attempt to fill the following fields based on the data supplied:

  • C_BPartner_ID based on the BPartner_Value field (optional). Null values will be ignored. An error message will be created if a non-null BPartner_Value can not be matched with an existing Business Partner. The import process will not create Business Partners.
  • M_Product_ID based on the ProductValue field. An error will occur if no product match exists.
  • M_PriceList_ID based on the Price List Name field. If there is no match, a new price list will be created.
  • M_PriceListVersion_ID based on the Valid From date. If there is no match, a new version will added to the Price List
  • C_Currency_ID based on the defaults for the organization if the ISO_Code is null or the ISO_CODE if it is non-hull

When the Import Price List button is clicked, a dialog will appear with the following parameters:

  • the Client to use - defaults to the current client.
  • Delete old imported records - useful if the import has many records and a history is not required.
  • Import List Price
  • Import Standard Price
  • Import Limit Price

The last three options are useful in cases where a single price on the list is updated while leaving the other prices as they were.

For Developers

The software that controls the creation of price lists is contained in

  • base/src
    • org.compiere.process.M_PriceList_Create.java

The import process is in

  • base/src
    • org.adempiere.process.ImportPriceList.java