The biggest challenge we found in implementing ERPNext for our textile printing operation is how to manage BOM’s when every produced item is unique. Our goal was to keep our workflow as vanilla as possible, with just enough customization to have a user-friendly workflow. I believe we have succeeded in this. This post is practice sharing, and seeing how others have solved the production workflow.
Starting with a bird’s eye view, we use various groupings by material type. A Cotton fabric uses a different BOM for the production process, as compared to a polyester, silk or viscose material. Unprocessed fabrics are stored as “raw materials” and processed printed fabrics are stored as products. BOM’s are stored as items created under Sub Assemblies.
Our solution: “Compound Items” for combining designs, fabrics, and BOM raw materials into finished products
We have a new DocType called Compound Item, where we combine 3 standard items:
- Fabric item (can be a customer provided item, or a stock item. We use 3 UoM’s, Meter, Yard and Square Meter. The Square Meter conversion factor is (currently) manually entered, based on the width. The Fabrics are Grouped as per the Item Group Tree, which enables us to automate the process of applying the relevant BOM.
- Process item for applying relevant Master BOM and Sub-BOM.
- Design item which is the design file name, and (usually) provided by the customer
Our interface for creating this “compound item” is below. Note, a default process code (or BOM) is selected based on the fabric type, but can be changed if needed.
This compound item is a standard ERPNext item. A background script runs to apply the BOM’s to this, and this item can be manufactured using ERPNext defaults.
We use a Master BOM (an item) which used sub-items to created a nested BOM. This enables us to make any changes, for example if we change a recipe or a supplier for a certain chemical without having to also edit the Master BOM. The Master BOM is applied per “meter of fabric” though we also have the option to use square-meters for higher accuracy (for the sake of simplicity, we decided to stay for linear meters).
The nested BOM uses quantities in Kg as most of our raw materials UoM is per weight.
The end result is that we are able to manage our Manufacturing Work Orders using 100% vanilla/standard/default ERPNext workflow with the only “custom module” is where we create this “Compound Item”.
We would also like to address the issue of discrete vs. process manufacturing, where ERPNext does not yet have an appropriate solution. In our case, we would like to issue a Fabric Raw Material as Work In Progress Stock in one go as a process, rather than issue it with every produced item. This would sync better with our actual workflow. We wait for a core solution for this.
This may answer some of the questions around textile printing and manufacturing from other posts here.
Thanks to our development partner @avaiskhatri who were are convincing to clean up the code and make it public as our contribution to ERPnext.