How to set up an on-the-fly item

### Index Up << >>

## How to set up an on-the-fly item

If you enable the catalog directive OnFly, setting it to the name of a tag (possibly a UserTag) that can handle its calls, then MiniVend will add items to the basket that are not in the product database.

The `OnFly` directive accepts a tag name:

        OnFly  onfly

MiniVend supplies the `onfly` tag which will work with the descriptions below. If your item code is not to be named `mv_order_item` then you must perform a rename in the `Autoload` routine.

A basic link can be generated like:

        [area form="
                mv_todo=refresh
                mv_order_item=000101
                mv_order_fly=description=An on-the-fly item|price=100.01
        "]

The form parameter value `mv_order_fly` can contain any number of fields which will set corresponding parameters in the item attributes. The fields are separated by the pipe (`|`) character and contain value-parmeter pairs separated by an = sign. (These are URL-encoded by the [area ...] tag, of course.) You can set a size, color, or any other parameter. If you want to see what the actual URL will look like, put the above example in a page and study it.

The special attribute `mv_price` can be used in conjunction with the `CommonAdjust` atom `$` to set the price for checkout and display.

The `[item-list]` sub-tag `[item-description]`, when used with an item-list, will use the item attribute description to display in the basket.

If you wish to set up a UserTag to process on-the-fly items, it should accept a call of

        usertag(mv_item_code, mv_item_quantity, mv_order_fly)

The `mv_item_code` and `mv_order_fly` parameters are required to trigger MiniVend's `add_item` routine (along with mv_todo=refresh to set the action).

The item will always act as if `SeparateItems` or `mv_separate_items` is set.

Multiple items can be ordered at once by stacking the variables. If there is only one `mv_order_item` instance, however, you can stack the `mv_order_fly` variable so that all are concatenated together as with the `|` symbol. So the above example could be done as:

        [area form="
                mv_todo=refresh
                mv_order_item=000101
                mv_order_fly=description=An on-the-fly item
                mv_order_fly=price=100.00
        "]

Multiple items would need multiple instances of `mv_order_item` with a corresponding `mv_order_fly` for each `mv_order_item`. You can order both `000101` and `000101` as follows:

        [area form="
            mv_todo=refresh

            mv_order_item=000101
            mv_order_fly=description=An on-the-fly item|price=100.00

            mv_order_item=000102
            mv_order_fly=description=Another on-the-fly item|price=200.00
        "]

The following two forms correspond to the above two examples, in order, with the slight refinement of adding a quantity:

      <FORM ACTION="[area process]" METHOD=POST>
            <INPUT TYPE=hidden NAME=mv_todo VALUE="refresh">
            <INPUT TYPE=hidden NAME=mv_order_item VALUE="000101">
            Qty: <INPUT SIZE=2 NAME=mv_order_quantity VALUE="1">
            <INPUT TYPE=hidden NAME=mv_order_fly
                    VALUE="description=An on-the-fly item|price=100.00">
            <INPUT TYPE=submit VALUE="Order button">
        </FORM>

       <FORM ACTION="[area process]" METHOD=POST>
            <INPUT TYPE=hidden NAME=mv_todo VALUE="refresh">
            <INPUT TYPE=hidden NAME=mv_order_item VALUE="000101">
            Qty: <INPUT SIZE=2 NAME=mv_order_quantity VALUE="1"><BR>
            <INPUT TYPE=hidden NAME=mv_order_fly
                VALUE="description=An on-the-fly item|price=100.00">
            <INPUT TYPE=hidden NAME=mv_order_item VALUE="000102">
            Qty: <INPUT SIZE=2 NAME=mv_order_quantity VALUE="1"><BR>
            <INPUT TYPE=hidden NAME=mv_order_fly
                VALUE="description=Another on-the-fly item|price=200.00">
            <INPUT TYPE=submit VALUE="Order two different with a button">
        </FORM>

### Index Up << >>