About custom products
In practice, it often happens that we have a refinement and/or addition of components to an existing item. Such item has increased price and a new bill of materials. Defining the parameters takes place at the very moment, while the customer is still present in our shop, at the cash register. Based on the item type, bought product can be refined immediately or subsequently. Almost every order (item) is unique.
Some software solutions call this option ‘configurator’, while such process is done through the “Custom products” in ERPAG. You can find more information on this link: https://www.erpag.com/news/custom-product-in-manufacturing
In this blog, we will take a jewelry manufacturing example. You can find basic information about using ERPAG in such business on this link: https://www.erpag.com/news/jewelry-manufacturing-software
Initial setup of custom products
First, we will create items from which we can produce the jewelry. In our case it’s a “Gold Bar” according to purity (karats).

Next – we will define parameters that define our custom product (weight, purity, custom application text, etc.). To setup parameters, go to admin > custom fields > quotation. More about custom fields setup: https://www.erpag.com/news/custom-fields-upgraded .

In our example, we will include the possibility of text engraving on jewelry. Of course, our employee will also need to know which text to engrave. For that purpose, we will create a ‘application text’ custom field, on the line item in quote.

In case we want to disable changes of the text, we can mark the field as “read only”.
In order to have precise cost, we will also add two work operations, with corresponding cost per hour.

3. Bill of materials (BOM) setup

Custom fields setup takes place through the Google Blockly script ( https://developers.google.com/blockly ).

First, we will create a condition for “Purity” (which material will be used in production). We are doing that through the “IF” blocks.


To form a BOM (Bill of materials) we are using block “Product SKU” from “ERP-Functions” part. This block adds to BOM an item with a corresponding SKU and quantity. We marked with a red arrow SKU “0001”, which is “Gold bar 18K” in our product & services list. Since the block is inserted in condition that the “Purity” = 18K, the corresponding material will be added to BOM. With blue arrow we marked the amount that’s added (the value of the custom field).
Now, we have to add the corresponding material to each “Purity” type.

To speed-up the process we can use “Duplicate” option (right click > duplicate) and just change the condition and SKU.

With this we defined “inputting” an item in the bill of materials (BOM). Now we have to define “Work Operations” in order to have more precise cost. We are doing this via block “Work Operation”.

Defining work operations
Let’s add a work operation “Hand made operation” (key “01” – marked with a red arrow in our example), which last an hour regardless of the entry parameters.
And another work operation, but only if there’s a request to engrave a custom text on our “Golden ring”.

We achieve this through the “IF” block where we compare whether there is “Application text” (the condition is not an empty text). And that work operation will last for 2 hours.
What can be useful here, is that on a generated item we also include the wanted application text. That way, the person that manufactures the “Golden ring’ also has that information.

We simply inserted a block in the condition (from “Generated item” menu) with which the “Product Application text” is set. That data is actually the custom field item type (that we defined at the beginning).
After we record the item, we can check how the generated BOM item would look like!

So, our generated BOM looks like this:

Price setup
Just as the components may vary based on the entry parameters, the price can vary as well. You can add markup/margin to your estimated cost, or calculate your price through the blockly script.
One of the ways is to do it through the variable. In our example. we will create a new variable “newprice” (through the option “Create variable” in the “Variables” section).

We will set up the initial value of the variable. We will set the block at the beginning of the script.

In our example the initial value is “default price” of our custom product. Based on your needs, you can set this up as a fixed value as well. But we recommend this due to eventual price changes (for example, the price of gold varies a lot on the market). Default price is a price per gram. Since the end product is in pieces, we have to multiply it with weight (which is our entry parameter).

Right below, in our blockly script we will put the multiplying option with “Gold Weight”. The price depends on “Purity” as well – It’s 10% more expensive for 18K, 20% for 21K, 30% for 22k and 50% for 24K. In “IF” blocks we can add multiplying with coefficients (10% more expensive is multiplying with coefficient 1.1).
Also, we charge additionally if we engrave a text. For example, if there is an application text, we will add $250 to the price.

At the end of the script, there should be a block that sets the selling price based on the value of the variable “newprice”.

Using in Point of Sale (POS)

In POS in ERPAG, when you select Custom Product, you will automatically get a pop-up window to enter the appropriate parameters. After confirmation, item will be placed in cart with a corresponding price.

You will also be able to select the parameters in ERPAG Mobile app as well!

The Sales Order will be generated after the payment is recorded:

In case you want to automate the process and generate the Work Order immediately as well – you can do that through a new blockly script.

Note: In order to prevent that newly generated items show up in POS, you can turn off the Search Scope for Point Of Sale in the default document settings.

Note 2: Since each generated product is unique, over the time the number of items in the product list will increase. We advise that from time to time set those products to inactive.
Recent Comments