Stop Negative On Hand

I have a BPM to stop negative on hand transactions, specifically with jobs.

It’s In-Transaction Data Directive

I created a condition
the ttPartBin.OnhandQty field of the updated row is less then the 0 expression.

Action is to Raise Exception.

This created an issue with quantity adjustments. We had a part with 4,000 on hand, tried to adjust out 1 and it throws the error from the BPM even though it doesn’t meet the condition.

What am I missing here?

Any help would be appreciated. Thanks!!!

KP

Not sure about your BOM, but cant you use part class. BF still will create a neg though

So is your DD on PartBin then?

Part classes are set to stop. However, our BOMs are set to BF.

Yes, the DD is on PartBin.

The BPM is skipping over the condition all the time. Tried to do a KanBan receipt for an item and all the raw materials have a sufficient quantity on hand, yet the BPM triggers the error message and stops the transaction.

If you didn’t have the materials, how did you complete the operation?

If you do stop the material transaction how to do you know to go back and issue the materials? (if it’s really just a timing thing, where someone completes the operation before the receipt or move is done, then if it goes negative and comes back to 0 you are where you need to be at the end of the process. If you stop the back flush, then you didn’t issue the material and your job will be short on cost, and when the receipt or move is finally done, your total on hand will be more than you really have)

Are you 100% sure that the materials were in the correct backflush bin?

Do you have any allocated inventory in that 4,000?

We physically have the materials, however, our physical inventory may not match what Epicor seems to think we have.

With the BPM, the KanBan job didn’t process anything, the transaction didn’t start, there wasn’t any material movement. In essence, nothing happened in Epicor. The user would need to determine what items have insufficient quantities on hand and handle those issues. When sufficient inventory levels are reached the user could then process the job.

This doesn’t happen to us all the time, but our accounting department is requesting we find a way to stop all items from going negative as it has an impact on the average cost of our parts.

I was hoping a BPM would be able to resolve the issue.

However, there was allocated inventory on the 4,000.

There is only one bin to pull from.

So when you do the quantity adjustment on the 4000, I’m pretty sure it doesn’t take into account the allocated inventory when doing the stop going negative out of the box. Are you sure that your error is coming from your BPM?

Yes, it’s the message that I created for the BPM.

I unallocated the inventory and was able to do the quantity adjustment.

1 Like

PartBin records are deleted when the OnHandQty goes to 0. So that record wouldn’t exist prior a Qty Adj of -1 in a bin with no QOH.

EDIT:

from the ICE Tools Users Guide

In-Transaction - Affects data before it is saved to the database. This directive type can only process one row at a time; it cannot process multiple dirty rows - rows that contain data not yet saved to the database. Multiple dirty rows are explained later in this chapter.

Perhaps the Qty Adj creates multiple dirty rows during the transaction.

1 Like

got it.

This BPM won’t stop parts from going negative anyway… it only applies if the part is already negative as my condition is only looking to throw the action if the current quantity on hand is below 0. Once I started reading this it dawned on me… Sorry

What I really need is for the BPM to not allow the job to process if the quantity the user is trying to produce is greater than the materials quantity on hand in the bin.

1 Like