I caught myself over-thinking and over-engineering this and I thought there might be easier approaches.
This is for a services-based implementation, where Items are not inventoried or stocked.
Each service is complex, unique in nature, and has its own attributes, so I have Child DocTypes representing each service. I had to make them Child DocTypes because the services are part of a Project. A Project DocType contains several Child DocTypes. (Yes, we can have multiple instances of the same Service for a single Project).
So far, so good. Everything is smooth.
The complexity/challenge comes when trying to implement the Buying processes, more specifically, the Request for Quotation and Supplier Quotation.
The basic attributes (description, quantity, UoM) are simply not enough, as each Item/Service has its own set of attributes.
In short: I want to replace the Item with Child DocType inside Quotation and RFQ. Of course, not just selecting the Child DocType, but entering its respective attributes as well.
I’m curious about potential alternatives or insights from anyone who has tackled a similar challenge.
If needed, I am willing to customize my Form View, if my database design is correct.
Accommodation {Hotel, Type, Service level, in- and out- times, etc.}
For an RFQ, selecting Flight Ticket alone is not enough (if I considered it as an Item), instead, all attributes have to be part of the RFQ/quotation/invoices/etc.
Best way to solve this is by creating a wrapper on top of item master.
Just like how item alternatives are managed in ERPNext.
Create a doctype called —> Item Configuration
Here you can use the item attribute doctype.
Select the item , and select its attributes.
For eg. - Flight tickets , is an item. And then Origin , Destination , type, can be item attributes.
Now, you have to customise all your transactional doctype and their item child table like SO, SI, PO , PI, RFQ .
Once a configurable item is selected, its configuration attributes and its fields will show up
Extended view where you can fill up your item.
PS - We worked on something similar for a client, but sadly the code is not open sourced by them.
Magento does it very beautifully and we got our motivation from there only.
But here you go, The complete structure and functional aspects. Now you can easily build it.