Im working on a custom ERPNext implementation and I know that we need to add a custom module for our needs, but I don’t know how to address one part:
We sell audio electronic DIY Kits. We have many Models and each Model has many many variations (for example, you can order the Model X with the addition of one extra Volume control. Or you can leave out the Tone control) (i’m simplifying). Plus, the customer selects each Knob Color (up to 7 Knobs, with more than 30 Knob types/colors) and LEDs colors. (The permutations doesnt allow to use Item Variant, would be imposible to maintain)
We make and maintain stock of pre-PreparedKits (without Knobs and LEDs) for each model and some variations, but not all of them, because we would need to make stock of a LOT of different combinations. So we keep stock of the more standard ones and when we sell a small or unusual variation we have a document that tell us which PreparedKit to take and which components are needed to be added or removed.
Then we add the customized items (Knobs and LEDs)
My Plan so far:
One Item with its BOM for each standard/common PreparedKit. (E.g.: ModelXVariationY)
New DocType: CustomOrderType that stores, for each variation posible, which standard PreparedKit(Item) must be taken, the Items that can be selected to customize (Knobs and LEDs) and two lists of items: toAdd and toRemove.
New DocType: CustomOrder in which CustomOrderType is selected and based on that are populated the fields to select the Knobs (maybe 1, maybe 7) and LEDs. With the submission we can generate a ProductBundle with the PreparedKit, customized and toAdd components, a StockEntry for the “removed” items to return to stock and a WorkOrder to put together the final Kit. That ProductBundle is selected in the Sales Order.
Problems I see: (I Like ProductBundles because I can change them anytime)
- It doesnt look lean. Rollbacks of transactions could be complex.
- In the ProductBundle the PreparedKit doesnt reflect the removed components.
- For each Sale there is a NEW ProductBundle. Reporting could be affected?
I’m trying to really think it through to try to keep the original DocTypes untouched, so the app is compatible with future updates. Plus, we also sell components separately, so we cant lose the ERPNext standard stock/selling/items functionality.
Do you see a simpler way?