Prices
This module answers a single question: what price goes into a document line. All of its objects are ways of setting that price so nobody has to type it in every time.
A price in ERPJS does not belong to the item. The item card only holds a base figure; the real price depends on who you are selling to and when — and that is what price lists, formulas and discounts describe.
Video walkthrough: Prices in ERPJS step by step — price lists, formulas, a promo and customer discounts.
The route: how a price is born in a line
Price list (who it applies to and when)
↓
Item price — either set by hand or calculated by a formula
↓
Customer discount or an item promotion
↓
The price in the document line
- Price list — the "cover" of the prices: a currency, the "VAT" switch (includes or excludes), and where needed a "Period" and the price list it "Replaces" for that time. The price list is entered on the customer card (or the customer's category) or on the user, and the document takes its prices from it.
- Prices — the figures themselves: one line per "price list + item" pair. The simplest way: a line saying "item — price".
- Price Forms — for when there are too many prices to type: "cost + 30%", "retail minus 10%". A formula is entered on a price list row — for an item or for a price group — and the Calculate Prices for Items service turns it into real numbers in Prices.
- Discount matrix — what reduces the price after it has been picked: by item, group or brand, with a validity period.
Once a price is in a document line, it stays there. Change the price list tomorrow and yesterday's orders are not rewritten.
What is worth understanding
A price list can live in time. A "Period" (start and end) is given to a price list that "Replaces" another: while the period runs, documents take prices from it, and items it does not contain from the main one; once the period is over, everything goes back to the main list. So "raise prices from the first" is not an edit of old prices but a new price list with a "Period" starting on that date.
VAT is a property of the price list, not of the item. The same item can be priced "VAT included" in the retail list and "net" in the wholesale one. Get this wrong and the document total is off by exactly the tax rate.
A formula does not store a price — it computes one. Until Calculate Prices for Items is run, the price list holds no new figures. That is deliberate: prices should be predictable rather than drifting every time cost moves.
A price group is not an item group. Item groups are about accounting and accounts (and the discount matrix gives its percentages by them); price groups serve only the price list formulas. One item can sit in the item group "Tools" and in the price group "Promotions".
Where to start in a new database
- Price list — at least one, the base one: currency and VAT (the base list needs no period — a period is only given to a list that replaces another).
- Prices — by hand for a small catalogue.
- With many items — price groups and formulas, then Calculate Prices for Items.
- Discount matrix — once promotions or personal terms appear.
Common tasks
| You need | Where to go |
|---|---|
| view or print the prices of a price list | Price List Report |
| raise prices from a given date | a new price list: "Replaces" — the previous one, "Period" — from that date |
| recalculate prices from formulas | Calculate Prices for Items |
| discount a brand until month end | Discount matrix |
| load prices in bulk | Xlsx Import |
| give one customer a personal price | a separate price list for them |
Everything in the module
References: price lists · prices · price forms · price groups · discount matrix · items
Reports: price list report
Maintenance: calculate prices for items · Xlsx Import · Xlsx Export
Where to look next
- Sales orders — where the price first enters a document.
- Sales ledger — where it turns into revenue.
- Stock — where the cost behind the formulas comes from.