MES - Help Adding The Next Lot Feature to Report Quantity Menu

I’m trying to make the life of our production associates as easy as possible while working to get ready to do a “proof of concept” so to speak, to push for inventory management in Epicor.

Is it possible to basically add a “Next Lot” button (basically the button that exists in the Job Receipt to Inventory) to the Report Quantity screen, so when they report the quantity, they’ll select “Next Lot”, it’ll assign a lot number, then upon hitting OK do an auto receipt to inventory with that lot number assigned instead of the job number?

I tried disabling/enabling the Job auto receipt but that either puts parts into WIP, or puts them into Inventory (which is preferred, but assigns the lot number according to the job number.) I also disabled in company config and part setup to use the job number as lot number by default.

I was able to setup the label printing based on a button, (basically, it referenced the native epicor controls, assigned them to an index and writes it to a .csv, and then calls a print job, similar to the bartender config I came across)

Edit: I haven’t yet done a BPM, but I did a trace and came across this when I use the Next Lot transaction, but I wasn’t really sure where to look or how to go about setting something up with it:

Ice.Proxy.BO.ReportMonitorImpl
GetRowsKeepIdleTime

I’m pretty sure the lot defaults to the job num. If one was so inclined, I imagine you could pass a context value and in the BPM, change it before it hits the part tran. Sounds like shaky ground though.

The method you show from your trace is unrelated.

Thanks, Chris.

Do you know how I would go about figuring out how to pass the value?

I’m asking, because in the Job Receipt To Inventory, I was able to set up a “Print Label” button, and basically when it was clicked, it generated a lot number (I was only referncing the native control), and then printed the label. Afterwards, selecting OK would do the transaction with the lot number previously assigned. The only concern however was when entering the transaction quantity, and error always displays because that quantity is higher than the reported “Complete” quantity from the Report Quantity menu. (If I could disable that menu, that may work as well, I’m not sure though.)

I think I found the correct traces:

For the “Next Lot” button:

<businessObject>Erp.Proxy.BO.LotSelectUpdateImpl</businessObject>
  <methodName>GetNewPartLot</methodName>
  <parameters>
    <parameter name="ds" type="Erp.BO.LotSelectUpdateDataSet">
      <LotSelectUpdateDataSet xmlns="http://www.epicor.com/Ice/300/BO/LotSelectUpdate/LotSelectUpdate" />
    </parameter>
    <parameter name="partNum" type="System.String"><![CDATA[ALPART]]></parameter>
  </parameters>
</tracePacket>

For the ReportQty transaction:

<tracePacket>
  <businessObject>Erp.Proxy.BO.ReportQtyImpl</businessObject>
  <methodName>ReportQuantity</methodName>
  <parameters>
    <parameter name="hedSeq" type="System.Int32"><![CDATA[136005]]></parameter>
    <parameter name="dtlSeq" type="System.Int32"><![CDATA[988684]]></parameter>
    <parameter name="opMessage" type="System.String"><![CDATA[]]></parameter>
    <parameter name="ds" type="Erp.BO.ReportQtyDataSet">
      <ReportQtyDataSet xmlns="http://www.epicor.com/Ice/300/BO/ReportQty/ReportQty">
        <ReportQty>
          <JobNum>AL625181</JobNum>
          <AssemblySeq>0</AssemblySeq>
          <OprSeq>10</OprSeq>
          <ResourceID>Shrink 2</ResourceID>
          <CurrentQty>13.00000000</CurrentQty>
          <TotalQty>66.00000000</TotalQty>
          <NextAssemblySeq>0</NextAssemblySeq>
          <NextOprSeq>0</NextOprSeq>
          <ResourceGrpDesc></ResourceGrpDesc>
          <OprDescription></OprDescription>
          <EmpID>3000</EmpID>
          <ResourceGrpID>SHRINK</ResourceGrpID>
          <RequestMove>false</RequestMove>
          <EnableReqOprTag>true</EnableReqOprTag>
          <TagType>MFG-OPR</TagType>
          <TagPart>ALPART</TagPart>
          <TagRevisionNum>00</TagRevisionNum>
          <TagDescription>COMPPART</TagDescription>
          <TagIUM>EA</TagIUM>
          <TagInputWhse>Default</TagInputWhse>
          <TagInputBinNum>001</TagInputBinNum>
          <PrevQty>53.00000000</PrevQty>
          <ResourceIDDesc>Machine</ResourceIDDesc>
          <EnableCurrentQty>true</EnableCurrentQty>
          <EnableRequestMove>true</EnableRequestMove>
          <CurrentUOM>EA</CurrentUOM>
          <PrevUOM>EA</PrevUOM>
          <TotalUOM>EA</TotalUOM>
          <EnableInspection>false</EnableInspection>
          <Company>ACYT</Company>
          <EnableSN>false</EnableSN>
          <EnablePrintTagsList>false</EnablePrintTagsList>
          <ClockInDate>2018-06-25T00:00:00-05:00</ClockInDate>
          <ClockinTime>8.10</ClockinTime>
          <EnableNextOprSeq>false</EnableNextOprSeq>
          <CompletedQty>53.00000000</CompletedQty>
          <CompletedQtyUOM>EA</CompletedQtyUOM>
          <SysRowID>00000000-0000-0000-0000-000000000000</SysRowID>
          <RowMod>U</RowMod>
        </ReportQty>
      </ReportQtyDataSet>
    </parameter>
  </parameters>

What I’m not understanding is the Report Quantity button does not update the Lot Number or anything, that I can see. Why is that?

These are relevant traces however… To answer your specific question, I dont think ReportQty actually reports. It sticks it in a bucket until you end activity. Even then, you have to recieve it from a job to inv (this is where you make lot/and inv for that matter). This is true if you are not using backflushing, but you cant do that with Lot Tracked parts anyway.

On the Mfg Receipts screen, already exists what you are looking for.

2 Likes

Surely Jose isn’t THAT bad?

:joy:

You’re correct in being that the Job Receipt to Inventory does what I’m wanting it to do, but my concern is making it as easy for the employees as possible.

@Chris_Conn
Is it possible to suppress the “Quantity exceeds the completed quantity” message when doing a Job Receipt to Inventory message? At that point, I think it’s possible to just use the job receipts to Inventory. Longer goals would be to add the “This Transaction” quantity to the Quantity completed once the Receipt is done.

Thank you for getting back with me and assisting so far.

Why would you be putting more into stock than you produced? I wouldn’t go that route.

Assuming your goal is to mass receive parts (with lot), My suggest would be to make a custom screen.

Screen would let you filter by part number.
Screen would show you all jobs running the part (and how much qty is in WIP)
Screen would let you select a lot (once)
Screen would allow you to say which jobs on the list produced what qty. (not exceeding WIP)

Then all numbers are correct, and your lot in enforced en masse.

Our lot numbers are (manually) controlled at the container level, and as far as I know, this isn’t implemented or complete in 10.2 yet.

The reason for issuing pieces is because of the level of control that is requested for traceability.

The problem is, how do we issue material once it is produce with a new lot?

For example, to produce an assembly that requires 3 material, we would issue those 3 material to the job.

Once those parts have filled a container, they would generate a label with a new lot and move it to the next location.

The job could be for 1000 pieces, but if each container has 200 pieces, that would require 5 different lot numbers under the same job.

That is the problem I am trying to solve, while keeping it relatively simple for our plant floor operators. :slight_smile:

Well, suppose you could make a custom label print solution that generated lots and printed labels with lots. Then for receipt from mfg, you could can that label which would have all your info: job,asm, part, qty, lot

You could even make a compound bar code for all that and use a single scan to report it to inv - at your WH door for example

Chris, this is what I’ve done for the Mfg receipts to Inventory screen.

This produces a label, and then upon hitting Okay, it does the transaction into Inventory, so I have that data.

If the plant floor operators are doing this however, they’ll always be prompted that the quantity they’re doing the transaction for is less than the completed quantity.

See here:

image

How will this effect if they end the activity and do/don’t report quantity?

If they report a quantity of 0, the production report will still show the job transactions but display 0 as the quantity completed.

They they report the quantity they used for the mfg receipts to inventory, how would that look before hitting GL?

Edit: @Chris_Conn Thanks again for your help so far, I’m just concerned with trying to make life easy for the production workers, and the inventory transactions being correct. I do like the idea of a compound barcode, though. That seems neat.

My assumption is that they are receiving from Mfg BEFORE EndingActivity in MES. EndingActivity is what reports the completed parts to WIP.

I dont what the best direction for you is. I dont like the idea of reporting to inv before production is report. Maybe have a look and see if the WIP for that job is going negative using job tracker. Then once you end activity, see if it clears out that negative.

Short of changing the way parts are recorded (MES ReportQty/EndActivity) to make them directly reported I dont know what you can do to get around that. The issue WITH changing that, is you will make loads more PARTTRAN records. One for each box reported, instead of one per day, etc

Sounds like we need an ops person in here to give some suggestions. I just wrangle code based on what ops guys tell me :stuck_out_tongue:

I may know a few… @bderuvo @Ernie Any thoughts/warnings on the matter?

Well, we have a clean slate of Epicor in a sense. Because we don’t track any parts through processes inside of Epicor. It’s all spreadsheets (which we’re trying to do away with. . .)

As an example, we have hundreds of thousands of child materials received IN to epicor, and our parts that we ship against are in the negatives hundreds of thousands. . .

I’m just trying to find the best/correct way that isn’t extremely labor intensive for our production associates at each machine receive in the material, produce the next assembly, and send it to the next process.

It appears the warning message is baked into that screen.

The only way around it is to write your own adapter calls. You can get a reference from:
UI.RcpToInvEntry.Dll in the Update(bool) function.

Specifically, I think passing false to pcNegInvAction will remove the message here:
this.recAdapter.ReceiveMfgPartToInventory(pdSerialNoQty, plNegQtyAction, out pcMessage, out str5, “RcptToInvEntry”);

image

LMAO

2 Likes

Keep in mind that for costing, when the parts are received to inventory they will transact with whatever costs are on them at the time of receipt. If the operator doesn’t report labor or quantity until AFTER the receipt to stock, those additional costs (labor and burden) will go straight to variance and won’t go to inventory.

3 Likes

So that I understand correctly,

Our Operators will need to report the quantity, and then from there do a Job receipt to Inventory to produce a label and lot number for the data and reports to be correct?

@AaronGDL to remove that message try this. Put a post processing BPM on “ReceiptsFromMfg.OnChangeActTranQty” that sets the pcMessage variable to string.Empty

Works like a charm… (though heed the other warnings regarding costs etc…)

See @Chris_Conn I’m not so bad…

1 Like

Good grief. another one joins the no code bandwagon :rofl:

1 Like

I’m more on the magic side…

4 Likes