Manufacturing / Repacking - BOM, Inheretance? vs. "automatic" unit conversions?

Quick Version Bulk goods in the warehouse, of about 1000 varieties, repackaged for retail, using different units of measure. (KG to grams, or ounces. SOMETIMES to “count”) - can I do this without needing thousands of BOMs, possibly with “variants?”

Longer Version Hi there! To start - I’m a beginner with ERPNext and ERP in general, but am a sysadmin, so at least a bit familiar with structured systems.

I’m testing out ERPNext for a propsal for a dry goods retail & wholesale company. To avoid being specific, I’ll use a fake example - nails, screws, nuts, bolts, washers, grommets!

The company buys nails/screws/etc in bulk - measured in the warehouse by KG. Then, they are packaged into smaller boxes (of several sizes) for sale. At first, I thought “repack” was the way to go, but it seems like BOM and manufacturing may be the best way. I imagine the following example “Items”

  • Warehouse / Raw
    • Steel Nails, Galvanized, by KG
    • Brass washers, size 040, by KG
    • Screws, machine, size 22, by KG
  • Retail
    • Steel Nails, galvanized
      • Steel Nails, gavanized: Box - 20 grams
      • Steel Nails, gavanized: Box - 100 grams
      • Steel Nails, gavanized: Box - 50 count
    • Brass Washers, size 040
      • Brass Washers, size 040: Box - 20 grams
      • Brass Washers, size 040: Box - 100 grams
      • Brass Washers, size 040: Box - 50 count

In the actual implementation, there would be maybe 1000 different items. (And unlike screws, etc, it wouldb’t be 20 variants of screw, it would be only a few variants of each, and probably 500 different base items)

So, as my first understanding of this is - to “repack” the raw Nails to be a box (measured in grams) - I’d want to use manufacturing, which means a BOM.

But, with ~1000 items, this would be ~1000 BOMs. What I’m wondering is: Can I create a “base” item for each, which would be like shown:

  • “Base Item:” Hardware, Raw (by KG)"
    • Variant: Nails, Raw (by KG)
    • Variant: Screws, Raw (by KG)
    • … (500 more of these)
  • “Base Item”: Hardware, Boxed for retail 20g
    • Variant: Nails, Boxed for retail 20g
    • Variant: Screws, Boxed for retail 20g
  • “Base Item”: Hardware, Boxed for retail 100g
    • Variant: Nails, Boxed for retail 100g
    • Variant: Screws, Boxed for retail 100g

In other words, could I do this and only have (for the above) 3 BOMs, for the three sizes of packaged good? But have “inhereted” items that used that BOM? So I don’t have to create ~1000 BOMs, each containing conversions from KG to gram, etc?

Or, is there another way to fairly simply implement this?

I’m happy to answer more questions or clarify?

Oh my! It looks like feature / issue #21262 (see github issue) is actually this functionality - but it looks like there’s no real documentation on this.

Also - it doesn’t seem to work as expected? Unit conversion seems broken, as well as a few other things. (I will give more details soon!) Is it possible for someone on v13 to test this, though, to see if I’m just doing stuff wrong?

You will have to be more specific about what’s being missed out:

https://docs.erpnext.com/docs/user/manual/en/manufacturing/bill-of-materials#34-bom-template

I think you have to step back and decide on how you want to structure your Item Master. So let’s look at one example: Steel Nails, Galvanized by KG and Steel Nails Galvanized Box - 20 Grams, 100 Grams and 50 Count.

Were you thinking of having a single item code for all of these and just adding different Units of Measure into the Item Master. No reason why you cannot do that, but users will not be able to just look at a report on ERPNext and decide whether the Steel Nail - Galvanized are in Bulk (KG) or in the Boxes - 20 Grams, 100 Grams or 50 Count.

You can do that, by adding the context sensitivity of a virtual warehouse. Let’s assign Item Code SNG to this item Steel Nails Galvanized. And you could have Bulk, 20 Gram Boxes, 100 Gram Boxes and 50 Counts as Warehouses and you store the same Item, SNG. Depending upon where SNG is, your users would be able to say, okay in here in the Bulk Warehouse, the item is in Bulk, but over there in the 50 Counts warehouse, this Item is in a Box of 50 Counts. However you have to pick a single Stock UOM so the item will be seen as not 50 Count or Box in the 50 Count warehouse, but as X KG assuming your 50 Count translates into X Kg. This could be a disorienting to your users. You could of course build a small DocType that connects up the item and the UOM at a particular warehouse, like the DocType could have entries such as

Item | Warehouse | Report UOM | Stock UOM | Conversion Factor

SNG | Bulk | KG | KG | 1
SNG | 20 Gram | Box | KG | 0.02
SNG | 100 Gram | Box | KG | 0.1
SNG | 50 Count | Box | KG | X

And then you need to build a variant of the stock Balance report that will present the same item in the appropriate UOMs depending on which warehouse the quantities for an item are at.

To reduce errors, you can use this DocType and build in valiadations so that the Stock Entries that are made are stored with the correct UOM in the appropriate warehouse - Like it won’t let you enter KG as the UOM in the 20 Grams Warehouse.

While this does take a bit of customization, it’s easiest as all you have to do is make a Stock Transfer from one warehouse to the other. And if you are going to build the DocType, you can have the bare minimum number of warehouses necessary to achieve context sensitivity of Item in Warehouse (Like if different items have different Counts in boxes - like SNG has 50 Count but SSG has 25 Count and so on, you don’t need two warehouses 50 Count and 25 Count but with that customized DocType you can manage both in a single warehouse).

But once your users get used to this, it is super easy as you don’t have to maintain BOMs and all you have to do is transfer Items from one warehouse to the other.

If you don’t want too many warehouses:

One way to minimize the warehouse is to set up each item as a Batched Item and Have nomenclatures that people can easily remember Like SNG-Bulk as the batch for the item in Bulk, similarly for SNG-20g and SNG-100g and SNG-50Count.

You don’t need to maintain the Warehouse to UOM reference DocType for this, you don’t need the variant of the Stock Balance Report (the Batch Wise Balance Report will give you this information), but moving Items from one form (Bulk) to another (20g) is not a simple stock transfer. You will have to make a Manufacturing Entry to convert the Item from one batch to another. Wait! Since you cannot make a manufacturing entry to make the Same Item by consuming up the same item (which is necessary to convert Batch Number), you will with a bit of customization be able to use Stock Entry - Material Issue and Stock Entry - Material Receipt but make it look like a single transaction to users.

And if you have to make a manufacturing entry, your best bet is to have different item codes. Like SNG-Bulk, SNG-20g, SNG-100g and SNG-50Count. You could have a flat DocType (which is perhaps the BOM Template that somebody else referred to) that looks like this:

Transformed Item | Input Item | Quantity | UOM | Quantity | UOM
(Input Item) | (Transformed Item)
SNG-20G | SNG-Bulk | 0.02 | Kg | 1 | Box
SNG-100G | SNG-Bulk | 0.1 | Kg | 1 | Box
SNG-50Count | SNG-Bulk | X | Kg | 1 | Box

and with a little bit of customization/scripting you could pass the manufacturing entry to take care of this.

There are no easy solutions to what you plan to do. You have to make a trade off between simplicity and visibility.

With a bit of smart customization you should be able to make ERPNext work to your advantage. My recommendation in that order

Different Item Codes Option
Same Item Codes - Context Sensitive Warehouses
Same Item Codes Batch Numbers to indicate packaging

Anyway you look at it, you and your users have to deal with a certian level of complexity. Plus you will need a bit of customization.

Hope this helps.

Thanks

Jay

2 Likes

You’re right, I’m not sure how I missed this. (I think perhaps I was relying on google searches, and maybe that wasn’t indexed, or I hadn’t noticed it.)

This does help! At least, I think so - and I really appreciate your in-depth reply! I’m not following it 100%, but that’s OK - it is a place to start. It looks like I may need to do a bit more customization than I’m comfortable with so far. (Doctypes are a bit past my beginner level - I need to get a bit deeper into the fundamentals I think.)

I will revisit this soon - and, again, thank you!