I have a customization that uses InvTransfer.GetTransferRecord and in 10.1.400, the method only required 2 parameters (iPartNum and uomCode). In E10.2.300, the method now requires 5 parameters (sysRowID, iPartNum, iPCID, uomCode and rowAdded). I’m curious why the system now requires the additional parameters. Anyone have any detail on this?
No. I’m actually further behind now. I had been testing with 10.2.300.3 and was able to make the method work with an empty GUID (just for testing of course). Now with 10.2.300.5, it doesn’t work at all. No errors, but no transfer happens.
private void btnChange_Click(object sender, System.EventArgs args)
{
string whereClause = "";
PartAdapter adpPart = new PartAdapter(this.oTrans);
adpPart.BOConnect();
WhseBinAdapter adpWhseBin = new WhseBinAdapter(this.oTrans);
DataSet dsWhseBin = new DataSet();
adpWhseBin.BOConnect();
InvTransferAdapter adpInvTransfer = new InvTransferAdapter(this.oTrans);
InvTransferDataSet dsInvTransfer = new InvTransferDataSet();
adpInvTransfer.BOConnect();
string legalNumberMessage;
string partTranPKs;
bool requiresUserInput;
bool pages;
bool result;
string fromBin;
System.Guid sysRowID = new Guid();
bool rowAdded = false;
try
{
// Check to see if Bin is valid
whereClause = "WareHouseCode='FCIIMAIN' AND BinNum='" + txtBin.Text.ToUpper() + "' AND Inactive= false";
System.Collections.Hashtable wcHash = new System.Collections.Hashtable(1);
wcHash.Add(txtBin.Text.ToUpper(), whereClause);
SearchOptions so = new SearchOptions(SearchMode.AutoSearch);
so.DataSetMode = DataSetMode.RowsDataSet;
so.NamedSearch.WhereClauses.Add(wcHash, whereClause);
dsWhseBin = adpWhseBin.GetList(so, out pages);
if (dsWhseBin.Tables[0].Rows.Count == 0)
MessageBox.Show("Part Bin is not Valid!");
else
{
// Get part
adpPart.GetByID(txtPart.Text.ToString());
// Remember From Bin
fromBin = adpPart.PartData.PartWhse[0].PrimBinNum.ToString();
// Only execute change if Bin is actually different
if (string.Equals(fromBin.ToUpper(), txtBin.Text.ToUpper()))
MessageBox.Show("Bin Entered is Already the Primary Bin Location."+Environment.NewLine+"No Action has been Performed");
else
{
// Update Bin
adpPart.PartData.PartWhse[0].PrimBinNum = txtBin.Text.ToUpper();
adpPart.Update();
MessageBox.Show("Bin Location Updated.");
// If Move Quantity on Hand is true and there is quantity to move, perform a transfer as well
if (chkMoveQOH.Checked == true & Convert.ToSingle(adpPart.PartData.PartWhse[0].OnHandQty) > 0)
{
try
{
// Create template dataset for transfer (updated for E10.2.300.5)
adpInvTransfer.InvTransferData.Clear();
dsInvTransfer = adpInvTransfer.GetTransferRecord(sysRowID, adpPart.PartData.PartWhse[0].PartNum.ToString(), "", adpPart.PartData.Part[0].IUM.ToString(), out rowAdded);
adpInvTransfer.InvTransferData.Merge(dsInvTransfer);
adpInvTransfer.InvTransferData.AcceptChanges();
InvTransferDataSet.InvTransDataTable table = (InvTransferDataSet.InvTransDataTable)adpInvTransfer.InvTransferData.InvTrans;
if (table.Count != 0)
{
// Load dataset with specific transfer items
DataRow dr = table.Rows[0];
dr.BeginEdit();
dr["FromBinNum"] = fromBin;
dr["FromBinDesc"] = fromBin;
dr["FromOnHandQty"] = adpPart.PartData.PartWhse[0].OnHandQty;
dr["TransferQty"] = adpPart.PartData.PartWhse[0].OnHandQty;
dr["TrackingQty"] = adpPart.PartData.PartWhse[0].OnHandQty;
dr["ToBinNum"] = txtBin.Text.ToUpper();
dr.EndEdit();
// Perform the actual transfer
adpInvTransfer.PreCommitTransfer(dsInvTransfer, out requiresUserInput);
// Required now for E10.2.300.5
dr["RowMod"] = "A";
adpInvTransfer.CommitTransfer(out legalNumberMessage, out partTranPKs);
if (legalNumberMessage != "")
MessageBox.Show("Could not Move Quantity on Hand to New Bin!"+Environment.NewLine+"Please Perform an Inventory Move Manually.");
else
MessageBox.Show("On Hand Quantity has been Moved to New Bin Location.");
}
}
catch (Exception Ex)
{
MessageBox.Show("Could not Move Quantity on Hand to New Bin!"+Environment.NewLine+"Please Perform an Inventory Move Manually.");
}
}
}
}
}
catch (Exception Ex)
{
MessageBox.Show("Could not Update Bin Location! Please Check Part and Bin Number.");
}
// Cleanup
adpPart.Dispose();
adpWhseBin.Dispose();
dsWhseBin.Dispose();
adpInvTransfer.Dispose();
dsInvTransfer.Dispose();
}