Subcontracting Job Work Flow for Scrap Pipe Grinding — Item Selection and PO Issues in ERPNext 16

ERPNext Version: ERPNext 16

Module: Subcontracting / Buying

Background:

We are a plastic pipe manufacturer. We send HDPE pipe scrap to a vendor for grinding (job work). The vendor grinds the scrap and returns HDPE grinding material to us. We want to track this job work in ERPNext 16.

What We Have Done:

Created Item HDPE Pipe Scrap (Stock Item) — raw material sent to vendor

Created Item HDPE Grinding Scrap (Stock Item, Is Sub-Contracted = Yes, Default BOM assigned) — finished output received back

Created Subcontracting BOM — 1 kg HDPE Grinding Scrap = 1 kg HDPE Pipe Scrap

Done Stock Entry (Send to Subcontractor) — material transferred to supplier warehouse successfully

Created Grinding Charges as a Non-Stock Service Item for PO

Problems Faced:

Problem 1 — Regular Purchase Order (Is Subcontracted = Yes):

When trying to select HDPE Grinding Scrap in the PO items table, ERPNext throws error:

“Item must be a Non-Stock Item”

Problem 2 — Subcontracting Order:

Subcontracting Order requires a linked Purchase Order mandatorily. But the PO does not allow stock items. This creates a circular dependency — cannot create PO, cannot create Subcontracting Order.

Problem 3 — Stock Entry for Return:

When trying to receive material back via Stock Entry, the purpose filter does not show “Subcontracting Return” as an option.

Questions:

What is the correct end-to-end flow for vendor job work (send raw material → vendor processes → receive finished material back) in ERPNext 16?

Is the Subcontracting Order the right document, and if yes, how do we handle the mandatory PO requirement?

Should the PO be created with the Grinding Charges (Non-Stock) service item, and then Subcontracting Order linked to it?

How do we correctly receive processed material back from vendor and close the subcontracting cycle?

Expected Flow We Are Trying to Achieve:

HDPE Pipe Scrap (our stock)

Send to Vendor Warehouse (Stock Entry - Send to Subcontractor) :white_check_mark:

Vendor does grinding job work

Receive HDPE Grinding Scrap back into our warehouse

Pay vendor for grinding charges

Any guidance on the correct ERPNext 16 subcontracting workflow would be very helpful.

Hi,

A subcontracting Purchase Order takes two item codes. A non stock item for which the supplier will bill you (grinding in your case) and the final good “HDPE grinding material” that the supplier will give to you once he completes his operations.

So your item_code will be “Grinding” and fg_item_code will be “HDPE grinding material”. “Grinding” will be non stock item in your case.

Search for a doctype subcontracting receipt to bring back into your warehouse