Inspection Processing Search Override

Dears,

I’ve been tasked with editing the inspection processing screen to display only inventory nonconformance requests, I created a search that returns the SysRowID of the Inv. NonConf line and tried to use the following code in order to manually retrieve inspection processing records however it didn’t work.

object ret = ProcessCaller.InvokeAdapterMethod(oTrans.EpiBaseForm, "QuickSearchAdapter", "ShowQuickSearchForm", new object[] {oTrans.EpiBaseForm, "STPInspProcQS", false /* multi-select */, new DataTable() });
	if(ret == null) return;
	//this.oTrans.GetSelectedSerialNumbers(System.Guid.Parse(ret.ToString()));
	bool b = this.oTrans_inspAdapter.GetSelectedSerialNumbers(System.Guid.Parse(ret.ToString()));
	//bool b = this.oTrans_inspAdapter.GetByID(GetNonConformanceID(ret.ToString()));
	//string whereClause = "SysRowID = \'" + System.Guid.Parse(ret.ToString()) + "\'";
	//System.Collections.Hashtable whereClauses = new System.Collections.Hashtable(1);
	//whereClauses.Add("InspProcessing", whereClause);
	//SearchOptions searchOptions = SearchOptions.CreateRuntimeSearch(whereClauses, DataSetMode.RowsDataSet);
	//bool morePages = false;
	//bool b = false;
	//this.oTrans_inspAdapter.InvokeSearch(searchOptions);
	if(this.oTrans_inspAdapter.InspProcessingData.InspNonConf.Rows.Count > 0) b = true;
	if(b) {
		this.edvinvView.Notify(new EpiNotifyArgs(this.oTrans, this.edvinvView.Row, EpiTransaction.NotifyType.Initialize));
	} else {
		MessageBox.Show("Method returned false!");
	}

as you can see in the above code, I have tried multiple methods and many workarounds but to no avail.

Obviously now I need some experts help, what am I doing wrong in here? and what should I do?

Try with GetRows or GetList Post-Processing BPM by restricting only inventory Non-Conformance records.
Sample code to delete temp-table records:
ttUD05.RemoveAll(ttUD05_Row => ttUD05_Row.Company == Session.CompanyID && ttUD05_Row.Key3 != Session.PlantID);

The search is much more complex than just inventory records, that’s why it needed to become a quick search.

I have finished the quick search and did replace it in code such that the old search interface doesn’t appear, what is left is to use the method that takes the ID of the record, retrieves the values and presents them on the inspection processing form.

I have used GetRows, GetList, InvokeSearch, GetByID and GetSelectedSerialNumbers on both the “oTrans” Object and the “oTrans_inspAdapter” adapter.

The question here is what am I missing? is there any workaround that I haven’t tried?

Add the field SysRowID in the form and create a QuickSearch for that field. When the record is selected, Epicor will return that without any customization.

Add the field SysRowID in the form and create a QuickSearch for that field. When the record is selected, Epicor will return that without any customization.

Have you tried this before?

6 or 7 years before I tried it in PO Suggestion and it worked. I believe still it should work.

This can’t work, not in this screen at least, there has to be a method to get records or a key field to be validated.

I tried this today. I agree that Inspection Processing is very different as it merges data from multiple datasets like RMA, PO Receipt, First Article and Non Conformance. After Quick Search data selection, Epicor again calls GetRows. Typically Quick Search doesn’t work in Inspection Processing like other areas. One option I can think is to get selected value from your Quick Search and call GetRows by passing the parameter. I believe you need to work only with GetRows.

1 Like

Tried that and didn’t work, not just GetRows but other methods as well and still nothing.