InvTransfer.GetTransferRecord method changed in E10.2.300 from E10.1.400

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?

Tim

Have you made any progress on this? I am in the exact same predicament. I don’t understand why the method now wants a sysrowid guid.

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.

I have altered my custom code from 10.1.600 to work in testing version of 10.2.300.10.

What errors are you seeing? My GetTransferRecord works, can post code if you like when I’m in front of proper PC not tablet.

I have an issue to solve on NegativeInventoryTest method, doesn’t seem to work at present.

I worked with @bfraseraepl to get around this same issue.

Thank you, but I was able to work through the issue. I found I had to include RowMod=“A” with the dataset.

Having this issue now with the new parameters for upgrade test from 10.1.600 to 10.2.500.32.
Can you post the code you have to get past this issue?

More than you probably need, but here you go.

	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();
	}