====================================== Staff / Billing / Configurable options ====================================== Configurable options allow you to customize aspects of a product, like region deployment, additional storage space, or dedicated IP addresses. If the configurable option has all the billing cycles of a product, the configurable option may be associated with the product. If a billing cycle is later deleted from the configurable option and configurable option no longer has all cycles of a product it is associated with, the configurable option no longer shows in the order process. A configurable option is a field shown on the order form if the following conditions are met: * the config. option is :doc:`associated with a product ` * the config. option has **Status** **Public** * the config. option must have all the billing cycles that the product has * the product and the config. options have billing cycles with the same currency as client's default currency A configurable option cycle may be free, or you can define the price clients have to pay when choosing one of the values of the configurable option. The **Billing** > **Config. options** page lists all configurable options available that can be associated with products. .. image:: /_static/images/staff/billing/config_options/config_options_list.png .. note:: A configurable option is not shown on order if it does not have all the associated product's cycles defined. The configurable option price is defined globally and cannot be overwritten per service. However, you can overwrite the total price of a service. If you change the configurable option pricing, it will automatically reflect on all services having the configurable option associated. The change applies when a new cycle is (automatically) created for a pre-paid service. Pre-paid service cycles that are already created and already issued invoices are not changed when a related configurable option price is changed. Post-paid service (e.g. OpenStack) price is updated on each :ref:`process clients` task run, applying any configurable option price change to in-progress billing cycles. .. contents:: :local: :backlinks: none ------------------------------ Add / edit configurable option ------------------------------ .. image:: /_static/images/staff/billing/config_options/config_option_details.png All configurable options are required. The end-user must select a value when ordering a product associated with a config. option. To allow end-users to opt out from a configurable option, you must define values such as "0" or "none". The following fields are part of the add / edit configurable option form. The **Option display** field appears when ordering a product, in the cart, on the order form and on the invoice. **Internal name** is used programmatically by provisioning modules. The **Help text** is shown when configuring a product to be ordered. **Display widget** defines the type of field that is shown on order: * **Dropdown** shows a predefined list of options with or without an associated price. Only one option may be selected. * **Radio** shows all options as an HTML radio group. Only one option can be selected. * **Yes/No** shows a checkbox. * **Quantity input** shows a numeric input field, allowing the end-user to specify a number. If defined, price is multiplied with the filled in quantity. The filled in value must be between **Minimum value** and **Maximum value**, and must be a multiple of **Step value**. The **Status** field defines the configurable option availability as follows: * **Public**: the config. option is visible for the associate products if all the other conditions are met (see below) * **Private** will only allow staff members to associate an option with a product prior to setup * **Retired** helps by keeping old selected options associated without the ability to use them for new services Option choices -------------- For **Dropdown** and **Radio**, choices need to be defined and each choice will need to have billing cycles defined. Each choice has a **Label** and a **Choice value**. **Label** only has display purposes and will appear on invoices and shopping cart while the **Choice value** is usually used by code from provisioning modules. Once a choice is added, billing cycles with corresponding price can be created under it. Option billing cycles --------------------- Configurable option choices' billing cycle defines billing intervals and price. .. image:: /_static/images/staff/billing/config_options/billing_cycle_choices.png Billing cycle fields: * **Cycle**: select one of **One Time**, **Day**, **Month**, **Year** * **Cycle multiplier**: enter a number. For example, selecting **Month** and entering *3* as multiplier means every 3 months. * **Currency**: select the currency the prices will be expressed in. * **Auto calculate prices**: only available when a non-default currency is selected. If price for the default currency is already defined, the price is calculated automatically based on the exchange rate. * Use **Fixed price** to fill in an actual monetary value. Use **Percentage of product price** to define configurable option cycle price as percentage of the product price. If **Apply percentage to other configurable options price** is checked, the percentage applies to the product price plus product's other configurable options price. * **Setup fee**: is applied on initial order and on upgrade. Leave zero for no cost. -------------------------------------- Assign configurable option to products -------------------------------------- When a configurable option is assigned to a product, the config. option will show on order form, upgrade/downgrade form and when staff edits a service associated with that product. To assign a configurable option to a product, see :ref:`product details CONFIGURABLE OPTIONS tab`.