Partial item receipt and Multiple batches/expiry dates for an item

We operate pharmaceuticals distribution and our business usually involves buying products from suppliers and reselling them.
It’s very common for suppliers to provide us with different batches (expiry dates) of the same product or even deliver half the purchased/requested quantity (then deliver the remaining later)…
I have researched the forums and people have mentioned that the only way to achieve partial item receipt and multiple batches per item is to actually DUPLICATE the item row in the purchase receipt, as adding a row would actually mess things up.
Now this method works, but it has high chances of errors and is also very slow (Purchase orders with 20+ items would take ages to do this)

I would like to know if that’s the only way of handling receipts as of V13 or is there a simpler and faster method to handle multiple batches and partial item receipts.

Our workflow is usually Purchase Order → Purchase Receipt → Purchase Invoice.


Hi Yamen,

Here are some suggestions:

  1. Use the Grid View settings to ensure that the Batch Number can be viewed in the Grid, without the user having to open the line, maneuvering to the Batch field and select the batch there. If the batch doesn’t exist, the user would have to create the batch which adds to the time.
  2. Instead of duplicating the line, just make one line in the Purchase Receipt per item, submit the Purchase Receipt and make another Purchase receipt for the second batches. And then the third and so on till the user has received all the items quantities and batches.

I will give you a few other options, but the user has to tell the system what batches and what quantities are being received. While my solutions may all not be very practical, it would help, if you forget ERPNext’s capabilities and limitations for a moment and describe what would be the optimum process from your users perspective. If you put that down simply (again without worrying about ERPNext capabilities and limitations) it would help people to suggest some simple solutions for you.

Now onto other options:

  1. Check if your manufacturers support API.s so that as soon as the document that lists your PO, the batches and the quantities is made on the manufacturer/principal/supplier’s system, you have an appropriately structured Purchase Receipt generated and saved int eh Draft mode with some custom field in the Purchase Receipt showing the status: To be Received
  2. Even if your manufacturer does not support you with API.s but allows you to access your account and download shipment details, you can populate the document from your supplier into an appropriately structured Google Sheet or Spreadsheet (which is way quicker and easier to manage than having to work with the Purchase Receipt directly) and then do an import
  3. Consider creating a new DocType (Called say, Purchase Receipt Lite), this document has just the bare information that is necessary - Like Item, Batches and Quantities and the document when completed can generate and submit an appropriately structured Purchase Receipt so that your Purchase Receipt and Purchase Order is reconciled appropriately.

Hope this helps.



Hello! Thanks for the great explanation. I think for small purchases we will manage to do them by splitting the purchase into multiple receipts.
For large purchases I would definately use the excel sheet as some of our suppliers are not very tech friendly.

I also feel like the doctype example you mentioned can be very useful however I did not exactly understand what the doctype will actually do, can you further explain this

The DocType is a new document that is structured along the lines of the Purchase Receipt, but just has the basic fields that are necessary to be captured. So, from the Purchase Order your users click on Make Purchase Receipt Lite. Imagine this document has just the following fields in the Grid (a child table for the items)


These are all in columns of course. If you receive more than 3 batches for an item, you may have to add Batch4, Qty4 but that may not fit into the Grid and user may have to open the line to key in Batch4 and Qty4.

Onc edone the Purchase Receipt Lite has a Make Purchase Receipt Button and it makes a standard ERPNext Purchase Receipt that perfectly reconciles the Purchase Order and the Purchase Receipt. I am guessing that there is some information (either the PO Number at the Purchase Receipt Item level. Or the database reference for the line and item in the Purchase Order that is needed to reconcile the Purchase Order and the Purchase Receipt) in the line that also needs to be copied when making a new line else the Purchase Order and the Purchase Receipt quantities don’t get reconciled. So the Purchase Receipt Lite fetches data from the Purchase Order, combines it with the data entered by the user in the Purchase Receipt Lite and pushes a Purchase Receipt that the user has to just Submit. Or maybe a background job can submit the Purchase Receipt automatically without any user intervention.

Hope this helps.



1 Like