public void InventoryTransfer(string epicorUserID, string epiorUserPassword, UriBuilder builder, Guid sessionId, List <InvTransfer> invTransfers)
        {
            var it = invTransfers.First();

            try
            {
                EndpointBindingType bindingType = EndpointBindingType.BasicHttp;

                builder.Path = $"{Conn.environment}/Erp/BO/InvTransfer.svc";
                svcInvTransfer.InvTransferSvcContractClient _svcInvTransfer = GetClient <svcInvTransfer.InvTransferSvcContractClient, svcInvTransfer.InvTransferSvcContract>(
                    builder.Uri.ToString(),
                    epicorUserID,
                    epiorUserPassword,
                    bindingType);

                _svcInvTransfer.Endpoint.EndpointBehaviors.Add(new HookServiceBehavior(sessionId, epicorUserID));

                svcInvTransfer.InvTransferTableset dsInvTransfer = new svcInvTransfer.InvTransferTableset();

                dsInvTransfer = _svcInvTransfer.GetTransferRecord(it.partNum, "");
                dsInvTransfer.InvTrans[0].RowMod = "U";
                _svcInvTransfer.ChangeUOM(ref dsInvTransfer);

                dsInvTransfer.InvTrans[0].FromWarehouseCode = it.frmWarehouse;
                _svcInvTransfer.ChangeFromWhse(ref dsInvTransfer);

                dsInvTransfer.InvTrans[0].FromBinNum = it.frmBinNum;
                _svcInvTransfer.ChangeFromBin(ref dsInvTransfer);

                dsInvTransfer.InvTrans[0].ToWarehouseCode = it.toWarehouse;
                _svcInvTransfer.ChangeToWhse(ref dsInvTransfer);

                dsInvTransfer.InvTrans[0].ToBinNum = it.toBinNum;
                _svcInvTransfer.ChangeToBin(ref dsInvTransfer);

                if (!string.IsNullOrEmpty(it.frmLotNum))
                {
                    dsInvTransfer.InvTrans[0].FromLotNumber = it.frmLotNum;
                }

                if (!string.IsNullOrEmpty(it.toLotNum))
                {
                    dsInvTransfer.InvTrans[0].ToLotNumber = it.toLotNum;
                }

                _svcInvTransfer.ChangeLot(ref dsInvTransfer);
                dsInvTransfer.InvTrans[0].TransferQty = it.qty;
                //dsInvTransfer.InvTrans[0].TranReference = "_svcInvTransfer: " + it.id;
                dsInvTransfer.InvTrans[0].TranReference = "HH->" + it.id;

                string partTranPKs = "", result = "";
                result = _svcInvTransfer.CommitTransfer(ref dsInvTransfer, out partTranPKs);
            }
            catch (Exception ex)
            {
                throw new Exception($"Epicor Error : {ex.Message.ToString()}");
            }
        }
        public string InventoryTransfer_TranPK(string epicorUserID, string epiorUserPassword, UriBuilder builder, Guid sessionId, List <InvTransfer> invTransfers, out string sErrMsg)
        {
            string sMsg = string.Empty;

            sErrMsg = string.Empty;
            var it = invTransfers.First();

            try
            {
                EndpointBindingType bindingType = EndpointBindingType.BasicHttp;

                builder.Path = $"{Conn.environment}/Erp/BO/InvTransfer.svc";
                svcInvTransfer.InvTransferSvcContractClient _svcInvTransfer = GetClient <svcInvTransfer.InvTransferSvcContractClient, svcInvTransfer.InvTransferSvcContract>(
                    builder.Uri.ToString(),
                    epicorUserID,
                    epiorUserPassword,
                    bindingType);

                _svcInvTransfer.Endpoint.EndpointBehaviors.Add(new HookServiceBehavior(sessionId, epicorUserID));

                svcInvTransfer.InvTransferTableset dsInvTransfer = new svcInvTransfer.InvTransferTableset();

                dsInvTransfer = _svcInvTransfer.GetTransferRecord(it.partNum, "");
                dsInvTransfer.InvTrans[0].RowMod = "U";
                _svcInvTransfer.ChangeUOM(ref dsInvTransfer);

                dsInvTransfer.InvTrans[0].FromWarehouseCode = it.frmWarehouse;
                _svcInvTransfer.ChangeFromWhse(ref dsInvTransfer);

                dsInvTransfer.InvTrans[0].FromBinNum = it.frmBinNum;
                _svcInvTransfer.ChangeFromBin(ref dsInvTransfer);

                dsInvTransfer.InvTrans[0].ToWarehouseCode = it.toWarehouse;
                _svcInvTransfer.ChangeToWhse(ref dsInvTransfer);

                dsInvTransfer.InvTrans[0].ToBinNum = it.toBinNum;
                _svcInvTransfer.ChangeToBin(ref dsInvTransfer);

                dsInvTransfer.InvTrans[0].FromLotNumber = it.frmLotNum;
                dsInvTransfer.InvTrans[0].ToLotNumber   = it.toLotNum;

                _svcInvTransfer.ChangeLot(ref dsInvTransfer);
                dsInvTransfer.InvTrans[0].TransferQty = it.qty;
                //dsInvTransfer.InvTrans[0].TranReference = "_svcInvTransfer: " + it.id;
                dsInvTransfer.InvTrans[0].TranReference = "HH->" + it.id; //need to extend id from int to string. Eg id = "FG Reduce"

                string partTranPKs = "";
                _svcInvTransfer.CommitTransfer(ref dsInvTransfer, out partTranPKs);
                sMsg = partTranPKs;
            }
            catch (Exception ex)
            {
                sErrMsg = ex.Message.ToString();
                //throw new Exception($"Epicor Error : {ex.Message.ToString()}");
            }
            return(sMsg);
        }