How to incorporate textile print design/colour configurations?

I am looking to setup ERPNext for textile printing, and I have a questions about how to best represent our manufacturing process.

Each printing job is defined by:

  • Print length (any metre length ranging from 1 to 5000 metres).
  • Material (Linen, or Wallpaper)
  • Design (a label for the digital artwork used)
  • Colourway (a label defining the set of colours to use in the print)

I’ve identified a few possible ways of representing this, but none of them quite fit perfectly. Any advice would be much appreciated!

  1. Create item variants based on ‘design’ and ‘colourway’. The main problem with this is that there are many thousands of designs and colourways, and the list is constantly growing. It seems inefficient to have thousands of items which vary only based on some configuration like design/colourway, particularly because those item variants use the same physical print material.

  2. Add each ‘design’ and ‘colourway’ as its own item, to be included in manufacturing but not tracking stock (since these are not real objects, they are essentially ‘configurations’ on a print job). My main concerns about this are:

  • (I think?) I would have to create a new BOM for every specific print job. This seems inefficient since every print job uses the same physical material (linen or wallpaper), and only varies based on the print ‘configuration’ (design, colourway).
  • It’s unclear how to group together the design and colourway within quotes/invoices. e.g. suppose a customer wanted to print two separate designs. The invoice would just show all of the designs/colourways in one big list and it wouldn’t be clear which colourway is paired with which design.
  1. Create custom ‘Design’ and ‘Colourway’ fields in Lead/Quotation/Sales Order/Invoice items tables, which links to new Design and Colourway DocTypes. My concerns about this are:
  • It assumes that all items within a quote/invoice would have a design or colourway. We also sell other items which do not have a design or colourway.
  • I’m not sure how this design/colourway configuration would be conveyed in the Work Order so that the printers can see what design/colourway should be used in manufacturing.

If anyone has any alternative suggestions I would appreciate any input! Thank you very much!

Hi Peter,

Welcome to ERPNext. Hope you have a great experience here and with ERPNext.

What you are trying to accomplish is a tad complicated and I shall take a stab at the approach I’d take to address your need. The complexity is that while your offering is actually a service, you have to possibly deal with Stock Items to make a typical ERP work for you.

I think this could be your primary item. Set up the UOM as Nos, make it a serialized item, and add custom fields into the Serial Number document or create a separate DocType to capture the rest of the parameters. Such as Length, Material, Design and Colourway.

In your business dealing with BOMs is going to be fairly complex. I think you need to build a Product or Service Configurator that lists the various attributes of your offering and your users (or your sales people) input the various attributes that are necessary to record the estimate/order. Each attribute then has an underlying formula that translates that into input materials (or raw materials) and the quantities that are needed.

Your sales people (or the prospect) uses the Product Configurator to pick the attributes and to generate an estimate. The details of the estimate are recorded and when the Estimate fructifies into an Order, you go back to the Product Configurator record and use the Make Material Request button (a button that you will build) and click on it to make a request for the Materials that are required for you to deliver this order.

Then you use a Planning tool that you will build to order out the short input materials and grab the materials that are in stock.

You could use the Product Configurator record to consume the input materials when you finish “manufacturing” the item and then use the Product Configurator again to Make an Invoice and deliver your product/service to the client.

My approach (though heavy on customizations) works on the premise that while you have a gazillion possibilities, you end up getting orders for a manageable number of products. Generating a BOM for every estimate/order is too much of an overhead.

Hope this helps. If this sounds too far fetched and fancy, please do let me know and I will try and take a more grounded stab at it. :slight_smile:



Hi Jay, thank you very much for your reply. I think one problem with incorporating ‘length’ into this new DocType is that I wanted to use Pricing Rules to set pricing based on print length (e.g. 1-5metres has one rate, and 5-10 metres has a cheaper rate, etc). The way I was hoping to achieve that was to have the length of the order be given by the unit quantity (where UOM=metres). For example, let’s say I get an order for 25 metres of Linen. For this, I would have two Items:

  1. Printing service (UOM: metres) with a length-banded pricing rule
  2. Linen material (UOM: metres) with a single pricing rate

Then an order of 25 metres would simply be an order of 25 units of ‘printing service’ + 25 units of ‘linen material’. For this I think I could just rely on one BOM which specifies that I use 1 metre of ‘linen material’ to make 1 metre of ‘printing service’.

The part I’m more confused about is how to add information about Design/Colourway to that order, in a way that I can incorporate that Design/Colourway into quotes/invoices and the Work Order. As I mentioned before, the problem with making each Design its own Item, is that it seems to require making another BOM for each print order. However I saw in a blog post about Engineer-to-order that it would be possible to use one single BOM for these different print jobs by setting “Backflush Raw Materials Based On” to “Material Transferred for Manufacture” in manufacturing settings. I don’t fully understand yet how this setting works, but I wonder if this is perhaps the right method then?

So in other words, the solution would be:

  • Use “Material Transferred for Manufacture” in manufacturing settings
  • Create one BOM
  • Each Design is one Item
  • Each Colourway is one Item
  • When a Work Order is created, somehow include the Design item and colourway Item.

Do you think this is feasible?

Thank you!

Hi Peter,

The trouble you will end up having is that if you use Meters as the UOM, ERPNext will sum up all the quantities of this item (for different clients that’s at your facility) and report it as, say, 550 meters. If that gives you actionable information, that’s great. This assumes that you will have a single item - were you planning on having as many items as the orders you receive?

So setting up the item as a Serialized Item (Serialized Items have to have the UOM as a whole number) and using the Serial Number DocType or other custom DocType(s) to record the attributes of this order could be optimal for your application.

I am really not sure if recent developments on ERPNext will help you deliver all of these with a single BOM. The BOM has to resolve into point Items to not just record consumption and costing, but also to reflect stock levels for actionable information by your people. Maybe other people can comment on this.

The Single BOM concept that you touched upon is the equivalent of my Product Configurator. Unless you hear back from others saying that ver 13 of ERPNext has some new features that help you use a Single BOM, I think you need to either:

  1. Do a separate BOM everytime you get an order
  2. Build the Product Configurator

Apologies if I sound obsessed about the Product Configurator. Matter of fact, I am :slight_smile:

Hope this helps.



Hi Jay, I will try to implement this in my own ERPNext instance and I’ll get back to you. Thank you!

I would like to share this thread.
Here is the ready solution as a custom app.

Suresh_Thakor: Thanks for the link I’ll look into it.

Jay: Okay I understand. I would like to avoid heavy customisation if possible. Would this reflect a good solution for you?

  • Create a new DocType called ‘Print configuration’ with fields: Design, Length, Colourway, Material. Each entry in the table defines the full specification for a print.
  • Create a single serialized item called ‘Print’ (UoM=Nos, tracking stock). Therefore each print has its own serial number. Have each serial number point to a specific row in ‘Print configuration’
  • Add the ‘Print configuration’ as a field to Work Order
  • Create a new BOM for each print job, defining how much raw material is required for each print

The only step I’m not 100% sure about is quoting/invoicing. For quoting since the print isn’t done, there is no unique serial number yet, but for invoicing there is. Perhaps your solution (using Product Configurator) would help although I’m a bit confused by this. I couldn’t find any mention of ‘Product configurator’ in the documentation.

Thanks for your help and patience with me!

Hi Peter,

Apologies for confusing you

There is no Product Configurator that exists. Its an idea.

Here’s how it would work:

You break up a Product to be manufactured/assembled into attributes.

So your products breaks up into the attributes, Design, Length, Colourway & Material.

Length is an user input (between 1 or 500 Meters. Or whatever) and is represented by L.
Material is an user selected Options List that includes Linen, Wallpaper
Design is a an input by user and can be broken up into child attributes as: Length, Width, Number of Colors, Surface Area of Print - I mean I am taking random shots here
Not sure what Colourway is.

Such attributes and child attributes are defined till you are able to resolve the attribute to a point input item (on the item master) and a formula to calculate the quantity of that item. The formula would use the Operands defined in the attributes/child attributes (for instance L for your Length).

Once you do that, you just are able to make an estimate, plan materials, transfer materials and consume materials for manufacture.

But, yes, this would require heavy customization that you are trying to avoid.

But having planted this idea in your mind, I am hopeful you will warm up to it over the next few hours, days and weeks. :slight_smile: Enough for you to want it.

But your plan as you describe in your mail sounds fine. You may be able to build a quick and dirty Product Configurator, which is actually a BOM (or many BOMs) with some custom scripts to resolve your attributes into point input items.

Hope this helps.



Hi Jay, thank you so much for your help! I really appreciate your suggestions. I will look into building this Product Configurator, slowly but surely. I’m excited to try getting ERPNext to work with this printing business.

I hope I can steal two more minutes of your brain power to ask 2 questions:

  1. Would a lot of this complexity be reduced if we created a new Item for every print order? The print attribute Length could be represented by Quantity (where UOM=metres), and the other attributes (Material, Design, Colourway) can be represented either in the Item Description or as custom fields added to Item DocType. I think this would mean having to create a new BOM for every order, however it would make it easier to generate quotations/invoices for a given print since the quote/invoice would contain this Description be default.

  2. We receive rolls of Linen from our suppliers, where each roll can contain an arbitrary length of Linen. How should we represent this in our stocks? My initial plan is to have an item ‘Unprocessed Linen’ (uom=metre, stock tracked), and then define Batches which group together the metres into rolls. However one aspect that is missing here is that two rolls of 500 metres fabric could not be used for a print job of 800 metres, despite the total being 500+500 = 1000metres. I suspect ERPNext’s default behaviour would be to suggest re-allocating ‘metres’ between batches, but it isn’t possible to add metres to a roll.

Kind regards

this custom app is more or less implemented the configurator feature, unfortunately it is still half baked, not yet fully tested, no one really used it. but I do think it can give you some reference.

here the git repo GitHub - szufisher/config_to_order: Config To Order, ERPNext's SAP variant configuration

Yes, it would. Then the Item Master can have custom fields for your attributes (or you may be able to use the existing Item Attributes feature) and fetching these attributes into transactions is a simple configuration and custom fields (in the transactions) issue. Making calculations off that would also be simple custom scripting. I think it’s enough to begin for now. And eliminates a lot of the complexity.

Yes, this is an issue. You have two options: Set it up as a batched item with the Stock UOM being Meters. As long as you assign a separate batch for each roll you are good. And with a bit of scripting you should be able to figure out the optimum combination of batches that you need to use. Yes, batches should solve the problem so long as you have a separate batch for each roll (It’s almost like a Serial Number but out of choice - ERPNext does not enforce separate Batch Numbers - you can reuse Batch Numbers. Plus you can make the primary UOM Meters. Serialized Items have to have the Stock UOM as a whole number). The other option is to setup each Fabric roll as a Serialized Item and capture the attributes in the Serial Number DocType. But really, using Separate Batch Numbers and writing a bit of script to ensure that you don’t repeat Batch Numbers at all even by accident will solve most of your issues.



Ah, yes, of course. I was wondering who I interacted with about this. Apologies, I didn’t get back. My prospect wasn’t ready to sign on for this feature.

@peterzh: You should really collaborate with @szufisher and finish the Product Configurator. It will be a great add on for ERPNext and for your business too.



@JayRam Great thank you

@szufisher this app looks very relevant for what we need. I’m still quite new to ERPNext so I’m figuring out how to setup these customisations. I will try doing it on my own VirtualBox instance and I’ll let you know how it goes!

Thanks both!

Thanks @JayRam Sir and @szufisher for good explanation.

@peterzh did you figure out a solution?

Hi @abidomar, in the end I found it too difficult to integrate these custom features into ERPNext in a way which retained the usefulness and power of ERPNext’s other features. I therefore instead opted for a completely custom app in Frappe which I’m slowly working on.

Would like to know the implementation details.