Business Case:-
Story :- Company will receive material from “Customer” and do some Operations on the material and send it back to the Customer and get paid for the operation performed.
Story Break down:-
1:- Company Receives Material from Customer “X”
2:- Company performs Operation let’s say “Surface Finishing” on received items
3:- Once Operation is performed Company will send the finished products to “X”
4:- Customers will pay the Company for the Operation once they receive the finished goods.
ERPNext Solution:-
Step 1 :- Go to “Item List” and Create Items as follows for an example
- Unsurfaced Item
- Surfaced Finished Item
Step 2 :- Go to Workstation & Workstation type and create
“Customer Subcon - Surface Finishing” - Workstation
“Incoming Subcontracting Works - Customer” - Workstation type
Step 3 :- Go to Operation and Create Operation as below and tag the Workstation
“Surface Finishing”
Step 4 :- Create a BOM for “Surfaced Finished Item” with Unsurfaced Item as raw material and tag the surface finishing operation in the BOM
Step 5 :- Go to Supplier and Create a Supplier Name same as Customer Name who is sending the materials to Company to do surface finishing Operations.
Step 6 :- To receive a Unsurfaced item either we can create a “Purchase Receipt” against the Supplier (who is indirectly our Customer) or We can create a Warehouse with that Customer name and directly do “Stock Entry” of type “Material Receive” to increase the stock of that Unsurfaced Item.
Step 7 :- Create Sales order for the “Surfaced Finished Item” with required Qty
Step 8 :- Create Work Order from Sales order for the “Surfaced Finished Item”
Step 9 :- Complete the Work order cycle to produce the “Surfaced Finished Item”
Step 10 :- Create “Delivery Note” against sales Order and proceed with Invoice for billing and payments.
I’m simply sharing my workaround approach for Customer Subcontracting. I understand that with development support, we can replicate the same feature as the existing Subcontracting for Supplier in ERPNext. However, for the time being, the following solution should suffice for all our needs. If anyone can offer suggestions to enhance it further or if I’ve overlooked anything, I would greatly appreciate it. Thank you!