Anyone out there use the Calculate Min / Max / Safety feature in E10? We’re primarily interested in using it to calculate (suggest) safety stock levels for purchased parts. We do not have Minimums on purchased parts. Currently, we’ve manually entered safety stock levels, but they were all done manually.
Yes, it was based on a design that I built many years ago in an updatable dashboard, but then was put into base…
basically, the principal is that it calculates what your Min/Max/Safety values should be based on several factors:
historical usage
lead time
months of history to examine
Obviously, since this examines history, you cannot do the calculations until you have been live for a while on Epicor.
The calculation examines how much you have used in your history, then divides that out to how much you use within the lead-time… so if your lead-time is one month, and you examine 1 years worth, and you use 144 per year, it will figure that you use about 12 lead time (ie… if the lead time is 2 months, it will say you use 24 per lead-time).
It will use this value for the MINIMUM… the logic being that once you hit minimum, you still have enough to get you through till the next order arrives.
The maximum and safety are simply calculated from the minimum…
for example, you could set the maximum at 200% of Minimum, and safety at 10% of minimum, which would provide a safety buffer.
Tim,
Yes I’ve helped a few of my customers to use the Update Safety / Min / Max program.
Along with what @timshuwy shared, it is important to first practically understand how the Safety, Min & Max values affect MRP & PO Suggestion results. It’s hard to explain the differences, in a forum and it’s contextual to what your company needs to accomplish. So I usually take clients through changing each value in a test environment so they can see exactly how they work together.
Before you can use the Update Safety / Min / Max program you will need to set the values @timshuwy mentioned in Part Class Entry or per Part / Site in Part Maintenance.
Then when you run the calculations it will display historical usage values and recommended Safety / Min / Max values, which are editable and you can change before accepting the values. You can right click and copy the grid to Excel, apply additional calculations and then paste update back in the grid and post the results you want.
It’s best to play around with it in a Test environment so you can get comfortable with how it works. Just know, there are at least two steps, calculate and then post/accept changes.
What’s the best way to bring in a smaller subset than part class (and bigger than one part at a time)? We’ve got 600k parts in the Distributed Goods class, which bogs Min Max Safety Mass Update (it spins for hours!).
Would I be able to limit them with a QuickSearch (filter out inactive, those with a zero minimum, maybe do it by vendor, or add a seasonal UD field)?
Andris,
It doesn’t look like there is a good built in way to do that.
But looking at the trace during the search and pulling in records it’s using the GetMinMaxSafetyRecords from the MinMaxSfyMassUpd Object.
That Method has two parameters, classFilter and partFilter.
When I select two classes, the classFilter looks to be tilde delimited, so I suspect the PartFilter is too.
It might be possible to create a Pre Processing Method Directive on GetMinMaxSafetyRecords and after the Class is selected prompt the user with a BPM form for additional filters, which could return and populate the partFilter parameter (might need to clear out the classFilter, but you could first use the classFilter for your BPM query).
Maybe the BPM would only fire if only one Class is selected?
Just some thoughts. I might toy around with this cause that partFilter parameter hints at additional potential.
@askulte,
Did you figure this out? If so, I would be interested in where you ended up.
I had some time today to mess with this and I must say I am disappointed as I was not able to get the ‘filterPart’ parameter to do anything. Here is what I learned:
If I set filterPart to anything the Method returns nothing.
Clearing the filterClass is not a good idea as it then tries to return everything.
Only thing I could get to work was on the Post Process:
Create a Variable off of the MinMaxSfyMassUpdTableset
Use Fill Table By Query to apply my BPM Form filters and put the results in my TableSet variable.
Use UpdateTable by Query to set all rows in the ttMinMaxSfyMassUpdTableset to delete by setting the RowMod = ‘D’ (not sure ‘D’ is needed, since the RowMod is blank to begin with)
Use Fill Table By Query to then insert my variable TableSet into the ttMinMaxSfyMassUpdTableset.
So this seemed to work as my normal selection of a certain class was 1000 rows and this resulted in @ 600 rows. But this is just me fumbling around with the blackbox. I’m not even sure this dataset is stable since I did not check to see if the list is somehow refreshed. Good, bad or ugly, I wanted to follow up. If you came up with anything better, I’m all ears!
In your opinion, would you recommend using the Warehouse Replenishment Min/Max/Safety settings (Part>Sites>Warehouses>Detail) for shop floor /supply warehouses rather than the Min/Max/Safety settings (Part>Sites>Detail)?
warehouse replenishment will NOT drive MRP Suggestions to buy/make more parts… it will only force suggested moves or kanban completions.
Part/Site min/max WILL drive MRP suggestions… telling you to make or buy more parts.
So it depends on what you want to happen