Positional parameters in same order.
The attribute hash reference is passed to the subroutine after the parameters as the last argument. This may mean that there are parameters not shown here.
Must pass named parameter interpolate=1 to cause interpolation.
Invalidates cache: no
Called Routine:
ASP/perl tag calls:
$Tag->price( { code => VALUE, } ) OR $Tag->price($code, $ATTRHASH);
code Product code/SKU base Only search in product table *base* quantity Price for a quantity discount If true(1), check discount coupons and apply noformat If true(1), don't apply currency formatting
Expands into the price of the product identified by code as found in the
products database. If there is more than one products file defined, they
will be searched in order unless constrained by the optional argument base. The optional argument quantity selects an entry from the quantity price list. To receive a raw number,
with no currency formatting, use the option noformat=1
.
MiniVend maintains a price in its database for every product. The price field is the one required field in the product database -- it is necessary to build the price routines.
For speed, MiniVend builds the code that is used to determine a product's price at catalog configuration time. If you choose to change a directive that affects product pricing you must reconfigure the catalog.
Quantity price breaks are configured by means of the CommonAdjust
directive. There are a number of CommonAdjust recipes which can be used;
the standard example in the demo calls for a separate pricing table called pricing
. Observe the following:
CommonAdjust pricing:q2,q5,q10,q25, ;products:price, ==size:pricing
This says to check quantity and find the applicable column in the pricing database and apply it. In this case, it would be:
2-4 Column *q2* 5-9 Column *q5* 10-24 Column *q10* 25 up Column *q25*
What happens if quantity is one? It ``falls back'' to the price that is in
the table products
, column price
.
After that, if there is a size attribute for the product, the column in the pricing database corresponding to that column is checked for additions or subtractions (or even percentage changes).
If you use this tag in the demo:
[price code=99-102 quantity=10 size=XL]
the price will be according to the q10
column, adjusted by what is in the
XL column. (The row is of course 99-102.) The
following entry in pricing:
code q2 q5 q10 q25 XL 99-102 10 9 8 7 .50
Would yield 8.50 for the price. Quantity of 10 in the q10
column, with 50 cents added for extra large
(XL).
Following are several examples based on the above entry as well as this the
entry in the products
table:
code description price size 99-102 T-Shirt 10.00 S=Small, M=Medium, L=Large*, XL=Extra Large
NOTE: The examples below assume a US locale with 2 decimal places, use of commas to separate, and a dollar sign ($) as the currency formatting.
TAG DISPLAYS ---------------------------------- --------------------------- [price 99-102] $10.00 [price code="99-102"] $10.00 [price code="99-102" quantity=1] $10.00 [price code="99-102" noformat=1] 10 [price code="99-102" quantity=5] $9.00 [price code="99-102" quantity=5 size=XL] $9.50 [price code="99-102" size=XL] $10.50 [price code="99-102" size=XL noformat=1] 10.5
Product discounts for specific products, all products, or the entire order can be configured with the [discount ...] tag. Discounts are applied on a per-user basis -- you can gate the discount based on membership in a club or other arbitrary means.
Adding [discount 99-102] $s
* .9[/discount] deducts 10% from
the price at checkout, but the price tag will not show that unless you add
the discount=1 parameter.
[price code="99-102"] --> $10.00 [price code="99-102" discount=1] --> $9.00
See Product Discounts.