Backflush lot tracked material

Normally when part is set to track lots, the backflush setting is automatically become disable because Epicor logic require us to choose the lot number whenever inventory transaction happened for track lots part.

So is there any alternative to solve this or imitate the process so its done as if backflush (automatic issue based on MOM) without creating a different part number ?

Thanks !

Hi @bowie

Epicor doesn’t allow backflush on serial or lot tracked parts as at the point the material gets committed through the backflush operation input is required to confirm the serial/lot number. It is possible to allocate that info to the job in advance of the op which should allow you to backflush.



1 Like

Kanban receipt allows lot selection.

Vinay Kamboj


Are you wanting that when they report a quantity in MES that it backflushes and asks what Lot they used?


Hi thanks for reply, Yes, it seems right for Epicor to do that, but in this case the part is used in two different warehouse with different usage method but still with the same cost calculation later on. Maybe i need to customize in the operation but i’m still not sure.

Thanks for the advice, i have tried kanban receipt but i think it’s still not suitable for my process because need to entry inspection result configurator :sweat_smile:

Yes, i think it’s also related with @Matt_Belshaw solution , but how you do that? maybe i can try that

Cre8tive did an MES customization like this for us - we called it CIRQ - consolidated issue / report quantity. The Issue Quantity screen is automatically populated with the Quantity Per on the mtl seq from the MOM * the quantity being reported.

1 Like

You can use fulfillment workbench > actions > allocate to assign lot tracked material

1 Like

Here is sample VB code that accomplishes that. Basically get the part of the lot, calculate the issue required and on hand then perform the issue. I use the part.netweight which you don’t see in the code, but you can grab the data from JobMtl for that operation for the qty/parent. Ours is intentionally different based on yield. They scan the lot into the textbox after typing in quantity and the issue happens there.

Private Sub ValidateMtlPart
LotNum = epiTextBoxC1.Text
Dim JobMtl As EpiDataView = Ctype(oTrans.EpiDataViews(“JobMtl”),EpiDataView)
Dim QCHold As Boolean = False
Dim partNum As String = JobMtl.dataView(JobMtl.Row)(“PartNum”)
Dim ds As new DataSet
Dim adapterName As String
Dim opts As SearchOptions
Dim whereClauses As new system.collections.hashtable
whereClauses.Add(“PartLot”, “LotNum=’” + LotNum + “’”)
opts = SearchOptions.CreateRuntimeSearch(whereClauses,DataSetMode.RowsDataSet)
adapterName = “LotSelectUpdateAdapter”

ds = ProcessCaller.LaunchSearch(oTrans, adapterName, opts)

If ds.Tables("PartLot").Rows.Count > 0 Then
	 ScanPart = ds.Tables("PartLot").Rows(0)("PartNum")
	 QChold = ds.Tables("PartLot").Rows(0)("QCHold_c")

End If
End Sub

Private Sub IssueMtl
Dim RQ As EpiDataView = Ctype(oTrans.EpiDataViews(“RQ”),EpiDataView)

Dim JobNum As String = RQ.dataView(RQ.Row)(“JobNum”)

If blnConsumed = False
Dim sMessage As String = “”

Dim strGUID As String = "00000000-0000-0000-0000-000000000000"
Dim guid1 As System.GUID = new System.GUID(strGUID)
Dim imAdapter As IssueReturnAdapter = New IssueReturnAdapter([RQForm])
imAdapter.IssueReturnData.IssueReturn.Rows(0)("ToJobNum") = JobNum
imAdapter.IssueReturnData.IssueReturn.Rows(0)("LotNum") = lotNum
imAdapter.IssueReturnData.IssueReturn.Rows(0)("PartNum") = ScanPart
imAdapter.IssueReturnData.IssueReturn.Rows(0)("TranQty") = Format(IssueMtlQty, "####.##")
imAdapter.IssueReturnData.IssueReturn.Rows(0)("ToAssemblySeq") = 0
imAdapter.IssueReturnData.IssueReturn.Rows(0)("ToJobSeq") = 10
imAdapter.IssueReturnData.IssueReturn.Rows(0)("IssuedComplete") = False '//Add logic to determine if True or False
imAdapter.IssueReturnData.IssueReturn.Rows(0)("UM") = "LBS"
imAdapter.IssueReturnData.IssueReturn.Rows(0)("RequirementUOM") = "LBS"
imAdapter.IssueReturnData.IssueReturn.Rows(0)("FromBinNum") = "1"
imAdapter.IssueReturnData.IssueReturn.Rows(0)("FromWareHouseCode") = "Main"

End If
epiTextBoxC1.Text = “Scan Coil”
End Sub

Private Sub CalculateIssueQty
Dim OHQty As Decimal
Dim JobMtl As EpidataView = Ctype(oTrans.EpiDataViews(“JobMtl”),EpiDataView)
Dim lotNum As String = EpiTextBoxC1.Text
partNum = scanPart
Dim PartBinAdapt As PartBinSearchAdapter = New PartBinSearchAdapter([RQForm])
Dim PartBin As Erp.BO.PartBinSearchDataSet = PartBinAdapt.GetPartBinByLot(partNum, lotNum)
OHQty = PartBin.Tables(“PartBinSearch”).Rows(0)(“QtyOnHand”)
Catch ex As exception
blnConsumed = True
OHQty = 1
msgbox(“This Tag already Consumed”)
End Try
If OHQty < IssueQtyRequired Then
IssueMtlQty = OHQty
End If

If OHQty > IssueQtyRequired Then
	IssueMtlQty = IssueQtyRequired
End If

If IssueMtlQty < 1 Then
IssueMtlQty = 1
End If
IssueQtyRequired = IssueQtyRequired - IssueMtlQty

End Sub

1 Like

Hi All,

please help final solution whether we can use backflush with lot controlled part?

@Vinh_Van Welcome. No it is not possible to backflush a lot tracked part.

having any work-around solution?
because client buy the purchased item and receive with lot, and then issue to job without LOT? how they manage?

@Vinh_Van You can remove all inventory, change the part from lot tracked to not lot tracked and then issue to a job. All of that should be tracked in either part transactions or change logs.

@gpayne thanks very much for your guide.

In case, client want to track lot for RM if Finish Good having issue when it sold. How they can track?