Products
The Products button is used to Add and modify products and their models When you select products in the dashboard a menu will pop-up of the available products, you can change these products but also add new ones.
This menu gives you the following options:
- New product model
- Edit product model
- Delete product.
Deleting a product will not delete all existing configurations made with the product. Note that deleting is permanent. Instead of deleting you are advised to archive inactive old products.
Clicking on the name of a product will redirect you to the configurator of that model.
Contents
Adding a new product model
When you wish to add a new product you first click the button labelled: New Product. This button can be found in the aforementioned menu.
Now you can add and edit the characteristics of the product model. The ID, Name, Description and the status. When this data has been put in you click the button ‘’Add Product’’ in the top left. You have now made the first step in adding a product model in Qmaze. At this point, you can ignore all the other fields. These will be explained later on in this manual.
ConfiguratorModel
When you click on ‘’products’’ in the dashboard and click on the name of a product the configurator of this product will be opened.* Now that the product data has been input a start can be made with the configurator model.
The productmodel will be shown in a tree structure and to the right of that you will see the buttons:
- Rules
- Pages
- Edit product
- Show in Qmaze
The branches BOM, Itemcode and Prices are optional, and only visible if the concerning module(s) are part of your license.
When you wish to add pages you click on ‘’add page’’ in the tree structure.*
When you use the mouse to click on the ‘’+’’ or ‘’-’’ sign the concerning item will be opened or closed.
By clicking on ‘’add variable’’ you can add variables.
More information about this will be given later. You can also add new parts by clicking on the ‘’insert’’ button which can be found above the menu.
Adding pages to product
A product model consists of several variables. See this as questions asked when configuring a product. They’re often called the Features of a product. All variables are grouped in pages. On the eventual website there will be pages that when clicked with the left mouse button on their respective icon the intended item will be selected which can be opened or closed using the ‘’+ and ‘’-’’ button.
The name is the description you’ll be able to see on website. The position decides the layout on the site. The sequence will decide the sequence in which the pages are shown. You can add all that here, but it’s also possible to drag products around in the product tree. Select visible to ensure that the page is visible on the website.
Variables of product
Following this we start adding variables. A variable is a characteristic of a product, for example: Colour, Length, Producttype. Etc. Features are added with a general characteristic. For example, multiple options can be given to a variable. You can choose from more than one colour, not just red. Also Blue, green and yellow to name a few. We start with added a variable. From within the producttree we select the desired page, press insert or click the rightmousebutton, the screen below will appear and then you can add a variable The VariableID is the unique identification of a variable and is done automatically by Qmaze. We can put in the values of:
- Naam: Short description of the variable. This is usually shown on the webpage.
- Alias: This is a short text that can be used as alternative to the variableID. It eases the reading of the rules. Try to give a meaningful but short description. The Alias is required to start with a normal character(no numbers) and is 16 characters long. The alias-code must be unique for the product. (the same alias can be used in other products)
- Position: The position of the page where the variable is placed.
- Description (long), Longer description of the variable. This can include HTML layout and can be made extremely long.
- Sidebar**
- Header navigation: Outputscript that decides the layout of the configurator. Usually is the same for every product/variable.
- Parent feature: See advanced, Models and Variables reuse.
- Valid between: The period between which a product is visible. The enddate is usually set to the 31st of December 2099.
- Price: Sales price.
- Cost: Costprice
- Image
- Help document. An URL to a helptext that explains the user about the variable.
- Width: Width of the variable screen within the browser. Standard value is 600 pixels.
- Onopen rule, The rule defined here is executed when a variable is opened.
- Onclose rule, The rule defined here is executed after a variable is closed.
- Minimum options valid: See chapter Variable control
- Maximum options invalid: See chapter Variable control
- User defined1 up to User defined 9. Description of the free to be named fields.
Options of variables
For each variable we can add one or several options. This option describes the possible answers of the variable. For example:
- With the Variable ‘’Colour’’ the values would be: Red, White, Blue and Orange.
- With the Variable ‘’Length’’ you require a number stated in mm.
- With the Variable ‘’Chromed’’ you would answer: Yes or No.
For every option we define what way the customer can put in the value or how it’s shown. You can see the thiis all using the ‘’Viewas’’ from your dashboard. The layout can be can be customised to your desires in Qmaze, more about that in Advanced. Here we will use the standard variables.
- Radio
- Checkbox
- Integer
- Text
- Dropdown
- Line
To add an option value, select add option at the desired variable in the productmodeltree. The option menu will be shown.
By typing in name a new value will be added. The value will be automatically put in. a new option is only saved when you click on ‘’Create option’’.
- The following Columns are available:
- Option Value
- - The option value is automatically decided by Qmaze choosing the first available number. Aslong as the value is not yet saved you can change this. After saving this value is no longer changeable.
- Name
- - Here you put the name of the variable option. When customerdata is put in, you can think about the name of the company, address, ZIP code for example.
- Alias
- -This is a short text that can be used as an alternative for the name.
- Value
- -The value here is decides the value of a variable option. With a radio still will be a 1 or a 0. When a 1 is the value, then the radio or checkbox will be turned on. With an integer you can add a number in advance.
- Configtext
- - Here you have the option to add a certain text to a variable option. Think about situations where the answer answer is almost the same, For example : Country, The Netherlands.
- Description
- - Give a description of the optionvalue. Here you can put in a normal text or complete HTML, including pictures and links to other pages.
- View as:**
Radio | A round selection button appears. For each variable only 1 radio button can be chosen. Think for example about the colour of a car: it can only be blue or red but never both at the same time. |
Dropdown ** | A selectionlist appears. From this list only 1 option can be selected. The possible options are put into the configtext, separated by a ‘’;’’. |
Combobox | A selectionlist appears. The values are placed in diffrent option lines.* |
Checkbox | A selection button appears. These can be selected or deselected independantly of eachother meaning you can make multiple choices. |
Integer | Here the user can input numbers. The min and max value can be set so that a certain amount can’t be surpassed. If the max is at 50 it won’t accept answers higher than 50. |
Text | Here you can put in text. The min and max values decide the amount of characters that need to be put in minimally and can be put in at a maximum. |
Button | A button will appear, when clicked the value will be put to 1, this allows the user to activate a certain functionality, think about a printing button or export button. |
Line | A textfield will appear, when the user clicks on it it gives calender options allowing the customer to select a date. |
Date | A selectionlist appears. The values are placed in diffrent option lines.* |
Widget | By adding this it is possible to open a small web page when selecting a variable option. This can be a direct link to an existing webpage or a widget made specificaly for this. Think for example about a colour picker. This is further explained later in the manual. |
Slide | A slide will make the options appear next to each other instead of below each other. Just lie a Radio only 1 option can be selected. A gray border will appear around the option to show it is selected. |
- Valid between:
- - This defines a period of time when the option is visible. Normally this option is set to december 31st 2099.
- Visible:
- - This determines whether an option is visible or not. This can be changed by the Rules.
- Readonly:
- - This value can’t be selected. The capability of selecting a specific value can be changed by the Rules.
- Tooltiptext:
- - When a specific variable option is chosen or filled in you can make a small message pop up on the screen. An example that you can use this for is that it allows you to tell if an option is put on when it is selected.
- Helpdoc:
- - For each variable option it’s possible to add an information or help button. The text in this field will be shown in the variable option when the help button is clicked.
- Image:
- - For each variable option it’s possible to show an image. Here you can put things like examples of the product or part. To show the desired image you put in the server location and the name of the image. For example: server1/images/bathtub3.jpg.
- Prices:
- - This is the price you sell the product at. This price will be multiplied by the amount the customer wishes to buy.
- Cost:
- - This is the price it costs to create a product. This cost will be multiplied by the amount of products sold.
- Discountgroup:
- - Certain items from a variable can be added to a discount group. This allows you to make certain products cheaper (in percentiles) for a certain period. This is tied to the price table.
- Pricecode:
- - For some time a pricecode can be added. An example is that for certain products diffrent prices (not in percentiles) are counted for a certain period of time. The pricecode is directly tied to the price table.
- VAT:
- -You can give VAT codes to certain items. Possible values are 0, L (low) and H (high).
- Min/Max:
- - The min/max value allows you to put possible values which you can’t go under or over, The amount of characters, the amount of selected options, etc. if the user does not follow these restrictions they will be prompted to change their input. If they follow them they can continue.
- Sequence:
- - This defines the sequence is which values are shown. This is customizable for each variable.
- Units of measure:
- - A unit of measure for an option. Think of, mm, cm, m, km, kg, dozen.
- InQuote:
- - This makes it possible to add the variable option (and the prices that come with it) to a BOM automatically.
- Udf 1-9:
- -Using the Udf fields it is possible to add extra characteristics to variables with a decimal value. Think for example about volume or mass. The names of Udf 1-9 can be changed per feature. The fields are all decimal and go 2 numbers below 0. For example: 23,49.
Testing the configuration.
Directly after adding the changes, pages and variables you can test the webpage. The changes are directly available in New configurations, This is important to realize.
If you click in the dashboard on Products and click on the button ‘’show in qmaze’’ then the model is opened and you can test it.
Product Rules
Rules determine the logic between the different parts within Qmaze. They are like the cement that holds the stones together.
A rule is a simple calculation rule that defines things as ... "if this happend, then do this'.
A simple example can be: IF = color red THEN = price 400 euro
A rule consists of two parts:
IF condition. | This checks if something is true or false.
It is true or not true, never partially true. (IF colour is red) |
THEN condition. | This activates the desired action when the IF condition is true.
(THEN price is 400 euro) |
IF conditie
An IF condition is a statement where a rule says whether something is true or false, if an IF condition is true, the corresponding THEN condition will be executed.
With an IF condition, certain operators can be used (value, configtext, cost, price, visible), just as with the THEN condition.
Some examples of an IF condition can be:
[6](3).value=1 | Is true if option 3 of variable 6 is selected
It is true or not true, never partially true. (IF colour is red) |
[33](0).value=1 AND [12](5).price>0 | Is true if [33](0).value is selected AND the price of [12](5) bigger than 0 is. |
[8](2).configtext=’abc’ | Is true if the filled in text at [8](2) is equal to abc. Do take note of the single quotation marks around abc! |
[3](1).value=1 AND ( [2](5).value=1 OR [60](9).value=1 ) | Is true if [3](1).value=1 AND [2](5).value1 OR [60](9).value=1). Note the () around the last two statements.. Only one of the two needs to be true. |
Do note: A condition works like this: [ featurenumber ]( optienumber ).operator
An equation is automatically made by Qmaze to see if the desired equation is true or false.
Instead of referencing to a specific optionvalue, we can also reference to all options inside a variable with a specific viewas type: [222].integer>0 this will return the optionvalue from variable 222 with viewastype 'integer' which has a value>0. (selection is calculated from stored function dbo.Q_ifconstraint and can be adjusted when neccessary)
Values can be compared with the following comparisons:
= | is equal to |
> | Bigger than |
< | Smaller than |
>= | Bigger than or equal to |
<= | Smaller than or equal to |
<> | Unequal to |
x AND y | True when x and y are both true |
x OR y | True when x or y are true |
THEN conditie
defining the logic
Through a ‘THEN-condition’ Qmaze can give values and information. Basically it says that certain values get a new definition, for example:
[10](3).visible=1
Feature 10 option 3 is now visible.
The following characteristics can be changed with the THEN rule.
- value
- name
- description
- visible
- configtext
- cost
- price
- udf1 t/m udf9
Functions
The functions below can be used in a ‘Then condition’. Every function has a separate description of how they work:
- -\*+ The basic mathematics signs
Do note: Always use parentheses () if you wish to use multiple values. The result of the calculation: 1+2*3 is unpredictable, and will give be 9, While 1+(2*3) will give you 7.
- IF
IF( [condition], [if condition is true], [if condition is false] ) In the THEN condition you can add another if-condition. For example: [1](2).price = if([3](1).value=1, 10000, 8000) The price of option [1](2) is 10000 if [3](1) is selected, otherwise it’s 8000.
- sql
sql( [query statement] ) Examples: [51](5).value=sql(select dbo.q_udf1([configurationid])) The stored procedure fucntion q_udf1 is executed with as only parameter the configuration-number. The return-value is removed in variable option [51](5) The function dbo.Q_udf1 is standard available in the SQL server database and give the sum of all udf1 * value, So it adds up all the udf1 values of the selected variables. See the definition below:
Another example:
[44](92).value= sql(select dbo.q_remainder([44](90).value, 4))
The stored procedure q_remainder is executed, this gives the residual value of the division between the first and second parameter ([44](90).value and 4) and this then removes in [44](92).value
The function dbo.q_remainder is recorded in the SQL server database. And looks as follows:
- sqlsp
- sqlsp( [stored procedure] )
- substring, retrieve a part of the text from another text.
- substring( [text], [startingnumber], [length] )
- [1](3).configtext = substring([1](4).configtext, 2,1
- sqrt, calculate the root of...
- [1](4).value = sqrt([1](5).value)
- min, determine the minimum value of a row of values
- min( [value ][, [value ][, [value ][, ..]]] )
- max, determine the maximum value of a row of values
- max( [value ][, [value ][, [value ][, ..]]] )
- tablelookup
- tablelookup( [tabelnummer], [parameter A], [parameter B], [parameter C], [parameter D] )
- Search the value out of the tablelookup table with the parameters A, B, C and D.
- Make a page visible/invisible: page(1).visible=1
- Goto
- Go to a specific variable for example in the follow variable 10: [10].goto
- Recordselection
In the rules you can also refer to data about the customer, configuration, article or the user. To for example use the customer’s name use the rule below:
[1](3).configtext = {customer.lastname}
- Configuration
- {configuration.salesreference}
- {configuration.configdate}
- {configuration.description}
- {configuration.status}
- {configuration.username}
- {configuration.language}
- {configuration.version}
- {configuration.datecreated}
- {configuration.datemodified}
- Customer
- {customer.id}
- {customer.firstname}
- {customer.middlename}
- {customer.lastname}
- {customer.address}
- {customer.zipcode}
- {customer.city}
- {customer.country}
- {customer.phone}
- Username
- {username.name}
- {username.email}
- {username.role}
- {username.phone}
- {username.language}
- Item
- {item.id}
- {item.name}
- {item.description}
- {item.cost}
- {item.price}
- {item.version}
Execution A rule can be executed on different moments. Before the configuration, after configuration or during the configuration.
Status | Action | Description |
10 | On first load | First time when the configuration is started. |
11 | On every load | Execute the rules everytime the configuration is started. |
20 | During execution | During the configuration. |
21 | During once | During the configuration, Last and only once maximal. |
30 | At saving | When the configuration is saved. |
99 | Disabled |
Inserting a rule
New rules can be added or created by clicking on the Rules button. After this you click on create rule.
Pages & rules
A configuration is usually divided over multiple ‘chapters’, We call them pages. During the configuring of a configuration it’s possible to visit different pages by using tabs. As has been said before a model will look something like the image below us to the end user.
We also have the possibility to influence the pages by using the rules, these rules are slightly different from the traditional Qmaze rules, for example: page(2).visible=1
With this we make the second page visible.
Wildcards
If we create a radio button with for example 10 options and depending on the chosen option we have to do something, we would have to create 10 rules. With the use of a wildcard rule we can do this a lot easier and quicker.
If variable 10 has a couple of radio buttons, with the values from 1 to 10 and the 5th option is chosen then [10](5).value=1
With the wildcard value this would be: [10](*).value=5. In short, variable 10 gets a value of 5.
Bill of Material (BOM)
We can generate a Bill of Material for a product based on the selected options of a configuration. For this reason we create a bill of material for the configurable item.
To create a Bill of Material. first select the main item, and press the BOM icon. We can add an unlimited number of bomlines to a generic item. The bomlines are identified by the main-item, a bomline and a sequence inside the bomline. The combination of item,bomline,sequence does not need to be unique, because Qmaze will automatically generate a unique ID to the line, but we advise to create these numbers unique. The component can be defined as a Qmaze item. This is not mandatory. Qmaze allows the component code to be unknown inside Qmaze.
To generate the BOM for a configuration we can execute the command generatebom() inside a rule or outputscript.
Qmaze will then run through the following steps:
- an existing Bill of Material for the configuration is deleted
- Qmaze will evaluate all Bomlines, sorted by bomline,sequence. For every bomline it will evaluate
- is the current date between the bomline start and enddate
- if an condition is defined, is the condition true
- if the bomline evaluates true, Qmaze will skip remaining lines with the same bomline number!
- By default the qty, component and description will be taken from the bomline.
- A thenconstraint can overrule the qty, component and description like in the examples below:
- then constraint: qty=[123](4).value or description=[123](4).configtext or component='newcomponentcode'
- if the component is defined as an item inside Qmaze with property 'Phantom'=true, Qmaze will 'blow through' the component, and will take the bill of material of the Phantom item to be added. The Phantom item can have bill of material lines with constraint rules who will be validated identical to the main item.
The Bill of Material is generated to the Qmaze table Configbom