Best way to handle AML in Work Orders

Hi, new to ERPNext here, but not new to manufacturing. We’re evaluating ERPNext and trying to figure out what is the “best” way to handle an AML/AVL.

We have an internal part number, such as CS-2122, which can be many external part numbers (such as a Samsung part, or multiple different Yageo parts). Our current solution is to only track our internal part number internally and discard all differentiation between external part numbers. This works mostly okay, but we’d like to improve this as part of our migration to our next software solution.

The solutions we have thought of so far within ERPNext is to either

a) Make CS-2122 a template, with each of the manufacturer part numbers (MPNs) be variants.

b) Use batches for CS-2122 and have each MPN be a different batch

c) Include 0 inventory for CS-2122 but also have each MPN in the system added as an “alternate” for CS-2122

Here are our constraints:

When we issue a work order for the finished good, we should not have to declare up front which alternate will be used.

When using a subcontractor (which is most of the time but not all of the time), the subcontractor will not tell us which alternate is used until they report that the work order is completed or partially completed.

We need to do reporting on material availability without regard to which MPNs we have in stock.

What’s standard way to handle this in ERPNext?

BONUS QUESTION: when doing a goods transfer or selecting an alternate for a work order, what’s the easiest way of knowing which warehouse/alternate has inventory in stock? Our current solution shows inventory values for each choice as a tooltip when we are filling in our choice, is there something similar in ERPNext?

1 Like

Welcome @eedwardsSGS

This is a non-trivial set of requirements and seems like it would require some (but maybe not a lot) of customization.

Explore the docs regarding Item Alternative

There’s a doctype called Item Manufacturer, but it doesn’t exist in the docs and doesn’t have a lot of features around it. I’d be thinking about this as one building block for your approved list.

I don’t think batches will help but I don’t really understand where they’d land in your workflow. I think it’s more likely that leveraging an Inventory Dimension on Item Manufacturer will meet your needs.

We need to do reporting on material availability without regard to which MPNs we have in stock.
What’s standard way to handle this in ERPNext?

There isn’t reporting on this, but it would be pretty straightforward to build it if the Item Manufacturer data exists.

BONUS QUESTION: when doing a goods transfer or selecting an alternate for a work order, what’s the easiest way of knowing which warehouse/alternate has inventory in stock? Our current solution shows inventory values for each choice as a tooltip when we are filling in our choice, is there something similar in ERPNext?

You could write a custom query that has some preference logic built into it, but ultimately it will rely on the expertise of your users to select the “right” warehouse, especially given how ERPNext handles owned inventory in a subcontractor’s warehouse.

Yeah, I tried setting this up using template/variant using Item Manufacturer as a dimension, and ran into some weirdness. When I tried making a new work order from the BoM directly, it asked which variant I wanted to use… then on the work order listed both the template AND the variant.

Then I tried making a new work order from the new work order screen, and this time it ONLY had the template and never asked me to select a variant. Complete with trying to have me transfer the template item to WIP. I assume I’m doing something wrong.

As far as batches, if we went that way, then our part number would be the item part number, and the manufacturer part number would be the batch number.

So if our part was CS-2122 and our approved parts are Samsung 3982 and Yageo FEF898 (made up numbers of course), then they would be the two batches, so when we order the Samsung part, we add it to the Samsung batch and when we order the Yageo part we add it to the Yageo batch.

We’ve done it that way before in systems that have batches but not any other kind of alternative option and it worked okay-ish. All the reporting treated it as our part number (the part we cared about most) but we could dig into the batch number (the manufacturer part number) if we need to.

It’s a shame there isn’t a quick way to see how much each location has in stock (or how much stock there is of each variant) when filling out a work order. I guess the user would need to just keep another tab open viewing a report on inventory availability.

Depending on the environment the system is working in, these questions might not be solvable in the future without massively expanding the flow of data about the items, and that even across enterprise boundaries.

It makes me think about, for instance, sustainability goals and even many sub-goals of these, which might need to be modeled in software and then weighted according to different sets of matrixes (official requirements, business requirements, business direction, cultural parameters, and more) in order to be able, in an ever-changing environment of customers’ buying decisions, to make sufficiently informed business decisions with the support of ERP systems.

I don’t think variants are the correct solution for tracking this data, I would use an Inventory Dimension instead of variants, otherwise you are doubling the complexity.

The Manufacturer Part Number is not integral to the batch and should not be. Perhaps taking guidance from your knowledge of your previous software systems you seem exceptionally determined to make this more difficult than it needs to be.

This assumes the technician can evaluate the appropriateness of their selection.

Honestly, this sounds like a process problem more than than a software one. Why is an item / alternative stored in more than one physical location?

1 Like

No, you just said you did not understand how batches would land in the workflow and I explained it. I fully understand that this would be a hacky workaround, and is why I’m asking what the ‘correct’ way to do it would be. Using batches as a workaround they would not be true batches because that functionality is not really needed, but instead each batch would be a stand-in for an MPN. Based on what you are saying about inventory dimension though, is we can add a batch-like featureset and be able to call it what it actually is.

There’s two issues of availability notice here, warehouse and alternative. On the warehouse side of thing, we have operations in two different cities and sometimes it’s necessary to transfer from one location to the other. Also sometimes the pack size for a good is larger than is needed for a work order, so the goods may already be present in the WIP warehouse from an earlier order instead of needing to be pulled from the stock warehouse.

The other issue is alternative, if however this is achieved requires the operator to select which alternative is used, it would be useful to inform them what is in stock so they can use the one(s) needed to stock the order.

I’m sure at some point it would be better to script the decision to be made for the operator, but for us that will have to come later.

I’ll keep looking into this as a solution then. Variants mentions using “Item Manufacturer” as the dimension of variance so I thought this was related, but I guess I don’t understand it fully yet. It doesn’t have an equivalence in any previous software we’ve used.

Okay, so it seems like (walking through this here) if we add an inventory dimension, say call it MPN, and it asks for a doctype to base it on, so we use the Manufacturer doctype you mentioned, and set it to apply to all inventory documents… that doesn’t work because “A field with the name manufacturer already exists in Subcontracting Receipt Item”.

So I guess I need to either rename the doctype, edit the Subcontracting Receipt Item doctype, or create a new doctype for this. I’ll play around with it more, but any advice on which of those three has less peril?

Thanks for your help so far!

I would base the Inventory Dimension on Item Manufacturer instead. This is a join table between Item and Manufacturer, which means that it could be computed.

There’s an alternative path here that would allow you to track this data but allow Items to be supplied by multiples of them (assuming they meet your qualifications for form, fit and function) that’s included in our BEAM application available on GitHub and Frappe Cloud: Handling Units

We could add Manufacturer/ MPN columns to the included Traceability Report for better visibility.

Item Manufacturer, sorry, that’s exactly what you said before. I should have paid more attention.

Okay I set up an item dimension associated with Item Manufacturer, now to play with it and see how it interacts with various things (as in, how to set some items to have multiple MPNs and some not, how to define what MPNs are acceptable for a specific item, etc).

The documentation isn’t very detailed here, I’ll give it a swing.

Beam looks very cool, and handling units seem like it would apply a lot to electronics manufacturing (considering many goods are on distinct reels that can’t easily be consolidated).