tl;dr - What’s the best way to set up inventory for an Amazon-like experience?
Background
We are creating a demo using a fake company that assembles, manufactures, sells, and installs Solar Panels. This is an exercise to learn ERPNext as well as prepare to bring ERPNext more fully to the North American market.
SolrPanl.com, in case you want to follow along with the home game.
We have downloaded a spreadsheet with about 20,000 items, in four product classes: Solar Panels, Inverters, Controllers and Hardware.
Question
The question is, what’s the best way to configure ERPNext to support this use case?
What I’ve tried:
My intuition is to create four item templates, one each for panels, inverters, controllers, and hardware, since each has a distinctive set of attributes.
Solar Panels, for example, have four attributes: power rating, family, safety rating and material. I wrote some Python to massage the data into data import format. There are 17k+ records that look like this:
I set up an Item template called “Solar Panel” and checked the “Has Variants” flag, and added an attribute for Safety Certification, Nameplate Pmax, Family and Technology.
There are 17k+ Solar Panels and I am able to run the import, but that only results in 544 unique Solar Panel variants, and the rest are rejected because of duplicate variant settings.
Possible Approaches
Some experiments I’m going to run, and I welcome commentary on each approach:
- Make “Manufacturer” and possibly “Model” into variant attributes so that every solar panel has a unique set of attributes, but they are still variants of the “Solar Panel” template.
Can I define variant attributes so that they can contain any arbitrary value, not just a predefined list?
- Dig deeper in to ways of setting variants based on manufacturer.
If I base variants on Manufacturer, how do I store attributes? Docs are unclear about the use case, and how to specify the Manufacturer in the import file.
- Don’t use variants at all and create regular item (not a template item) for each Solar Panel.
How do you store custom attributes for those items? Creating a custom Item DocType for each kind of item (Solar Panel, Inverter…) doesn’t seem right, since you should be able to store all kinds of different items with different lists of attributes for each kind of item.
Eventually, I want to model the entire product lifecycle, including assembling product bundles, manufacturing products as well as reselling them on an e-commerce site.
I’m grateful in advance for any insight from the community.