public int Create(Model.UI.TradeInstance securityItem) { var dbCommand = _dbHelper.GetStoredProcCommand(SP_Create); _dbHelper.AddInParameter(dbCommand, "@InstanceCode", System.Data.DbType.String, securityItem.InstanceCode); _dbHelper.AddInParameter(dbCommand, "@PortfolioId", System.Data.DbType.Int32, securityItem.PortfolioId); _dbHelper.AddInParameter(dbCommand, "@MonitorUnitId", System.Data.DbType.Int32, securityItem.MonitorUnitId); _dbHelper.AddInParameter(dbCommand, "@TemplateId", System.Data.DbType.Int32, securityItem.TemplateId); _dbHelper.AddInParameter(dbCommand, "@StockDirection", System.Data.DbType.Int32, (int)securityItem.StockDirection); _dbHelper.AddInParameter(dbCommand, "@FuturesContract", System.Data.DbType.String, securityItem.FuturesContract); _dbHelper.AddInParameter(dbCommand, "@FuturesDirection", System.Data.DbType.Int32, (int)securityItem.FuturesDirection); _dbHelper.AddInParameter(dbCommand, "@OperationCopies", System.Data.DbType.Int32, securityItem.OperationCopies); _dbHelper.AddInParameter(dbCommand, "@StockPriceType", System.Data.DbType.Int32, (int)securityItem.StockPriceType); _dbHelper.AddInParameter(dbCommand, "@FuturesPriceType", System.Data.DbType.Int32, (int)securityItem.FuturesPriceType); _dbHelper.AddInParameter(dbCommand, "@Status", System.Data.DbType.Int32, (int)TradeInstanceStatus.Active); _dbHelper.AddInParameter(dbCommand, "@Owner", System.Data.DbType.Int32, (int)securityItem.Owner); _dbHelper.AddInParameter(dbCommand, "@CreatedDate", System.Data.DbType.DateTime, DateTime.Now); string notes = securityItem.Notes ?? string.Empty; _dbHelper.AddInParameter(dbCommand, "@Notes", System.Data.DbType.String, notes); _dbHelper.AddReturnParameter(dbCommand, "@return", System.Data.DbType.Int32); int ret = _dbHelper.ExecuteNonQuery(dbCommand); int instanceId = -1; if (ret > 0) { instanceId = (int)dbCommand.Parameters["@return"].Value; } return(instanceId); }
public TradeInstance(TradeInstance instance) { InstanceId = instance.InstanceId; InstanceCode = instance.InstanceCode; MonitorUnitId = instance.MonitorUnitId; TemplateId = instance.TemplateId; StockDirection = instance.StockDirection; FuturesContract = instance.FuturesContract; FuturesDirection = instance.FuturesDirection; OperationCopies = instance.OperationCopies; StockPriceType = instance.StockPriceType; FuturesPriceType = instance.FuturesPriceType; Status = instance.Status; Owner = instance.Owner; CreatedDate = instance.CreatedDate; ModifiedDate = instance.ModifiedDate; Notes = instance.Notes; MonitorUnitName = instance.MonitorUnitName; TemplateName = instance.TemplateName; PortfolioId = instance.PortfolioId; PortfolioCode = instance.PortfolioCode; PortfolioName = instance.PortfolioName; AccountCode = instance.AccountCode; AccountName = instance.AccountName; AssetNo = instance.AssetNo; AssetName = instance.AssetName; }
public int Update(Model.UI.TradeInstance tradeInstance, List <TradeInstanceSecurity> modifiedSecuItems, List <TradeInstanceSecurity> cancelSecuItems) { int userId = LoginManager.Instance.GetUserId(); if (_permissionManager.HasPermission(userId, tradeInstance.InstanceId, ResourceType.TradeInstance, PermissionMask.Edit)) { return(_tradeinstancetrandao.Update(tradeInstance, modifiedSecuItems, cancelSecuItems)); } else { return(-1); } }
public int UpdateTradeInstance(Model.UI.TradeInstance tradeInstance) { int userId = LoginManager.Instance.GetUserId(); if (_permissionManager.HasPermission(userId, tradeInstance.InstanceId, ResourceType.TradeInstance, PermissionMask.Edit)) { return(_tradeinstancedao.Update(tradeInstance)); } else { return(-1); } }
public int Update(Model.UI.TradeInstance tradeInstance, List <ClosePositionSecurityItem> secuItems) { int userId = LoginManager.Instance.GetUserId(); if (_permissionManager.HasPermission(userId, tradeInstance.InstanceId, ResourceType.TradeInstance, PermissionMask.Edit)) { var tradeinstSecus = GetTradingInstanceSecurities(tradeInstance.InstanceId, secuItems); return(_tradeinstancetrandao.Update(tradeInstance, tradeinstSecus)); } else { return(-1); } }
public Model.UI.TradeInstance ParseData(DbDataReader reader) { Model.UI.TradeInstance item = new Model.UI.TradeInstance(); item.InstanceId = (int)reader["InstanceId"]; item.InstanceCode = (string)reader["InstanceCode"]; item.StockDirection = (EntrustDirection)(int)reader["StockDirection"]; item.FuturesContract = (string)reader["FuturesContract"]; item.FuturesDirection = (EntrustDirection)(int)reader["FuturesDirection"]; item.OperationCopies = (int)reader["OperationCopies"]; item.StockPriceType = (StockPriceType)reader["StockPriceType"]; item.FuturesPriceType = (FuturesPriceType)reader["FuturesPriceType"]; item.Status = (TradeInstanceStatus)reader["Status"]; item.Owner = (int)reader["Owner"]; item.MonitorUnitId = (int)reader["MonitorUnitId"]; item.MonitorUnitName = (string)reader["MonitorUnitName"]; item.TemplateId = (int)reader["TemplateId"]; if (reader["TemplateName"] != null && reader["TemplateName"] != DBNull.Value) { item.TemplateName = (string)reader["TemplateName"]; } item.PortfolioId = (int)reader["PortfolioId"]; item.PortfolioCode = (string)reader["PortfolioCode"]; item.PortfolioName = (string)reader["PortfolioName"]; item.AccountCode = (string)reader["AccountCode"]; item.AccountName = (string)reader["AccountName"]; item.AssetNo = (string)reader["AssetNo"]; item.AssetName = (string)reader["AssetName"]; if (reader["CreatedDate"] != null && reader["CreatedDate"] != DBNull.Value) { item.CreatedDate = (DateTime)reader["CreatedDate"]; } if (reader["ModifiedDate"] != null && reader["ModifiedDate"] != DBNull.Value) { item.ModifiedDate = (DateTime)reader["ModifiedDate"]; } if (reader["Notes"] != null && reader["Notes"] != DBNull.Value) { item.Notes = (string)reader["Notes"]; } return(item); }
public int Update(Model.UI.TradeInstance securityItem) { var dbCommand = _dbHelper.GetStoredProcCommand(SP_Modify); _dbHelper.AddInParameter(dbCommand, "@InstanceId", System.Data.DbType.Int32, securityItem.InstanceId); _dbHelper.AddInParameter(dbCommand, "@InstanceCode", System.Data.DbType.String, securityItem.InstanceCode); _dbHelper.AddInParameter(dbCommand, "@MonitorUnitId", System.Data.DbType.Int32, securityItem.MonitorUnitId); _dbHelper.AddInParameter(dbCommand, "@TemplateId", System.Data.DbType.Int32, securityItem.TemplateId); _dbHelper.AddInParameter(dbCommand, "@ModifiedDate", System.Data.DbType.DateTime, DateTime.Now); string notes = securityItem.Notes ?? string.Empty; _dbHelper.AddInParameter(dbCommand, "@Notes", System.Data.DbType.String, notes); int ret = _dbHelper.ExecuteNonQuery(dbCommand); return(ret); }
public int Create(Model.UI.TradeInstance tradeInstance, List <OpenPositionSecurityItem> secuItems) { var tradeinstSecus = GetTradingInstanceSecurities(tradeInstance.InstanceId, secuItems); int ret = _tradeinstancetrandao.Create(tradeInstance, tradeinstSecus); if (ret > 0) { int userId = LoginManager.Instance.GetUserId(); var perms = _permissionManager.GetOwnerPermission(); _permissionManager.GrantPermission(userId, tradeInstance.InstanceId, ResourceType.TradeInstance, perms); return(tradeInstance.InstanceId); } else { return(-1); } }
public Model.UI.TradeInstance GetCombine(int instanceId) { var dbCommand = _dbHelper.GetStoredProcCommand(SP_GetCombine); _dbHelper.AddInParameter(dbCommand, "@InstanceId", System.Data.DbType.Int32, instanceId); Model.UI.TradeInstance item = new Model.UI.TradeInstance(); var reader = _dbHelper.ExecuteReader(dbCommand); if (reader.HasRows && reader.Read()) { item = ParseData(reader); } reader.Close(); _dbHelper.Close(dbCommand); return(item); }
public int Update(Model.UI.TradeInstance securityItem) { var dbCommand = _dbHelper.GetStoredProcCommand(SP_Modify); _dbHelper.AddInParameter(dbCommand, "@InstanceId", System.Data.DbType.Int32, securityItem.InstanceId); _dbHelper.AddInParameter(dbCommand, "@InstanceCode", System.Data.DbType.String, securityItem.InstanceCode); _dbHelper.AddInParameter(dbCommand, "@MonitorUnitId", System.Data.DbType.Int32, securityItem.MonitorUnitId); _dbHelper.AddInParameter(dbCommand, "@StockDirection", System.Data.DbType.Int32, (int)securityItem.StockDirection); _dbHelper.AddInParameter(dbCommand, "@FuturesContract", System.Data.DbType.String, securityItem.FuturesContract); _dbHelper.AddInParameter(dbCommand, "@FuturesDirection", System.Data.DbType.Int32, (int)securityItem.FuturesDirection); _dbHelper.AddInParameter(dbCommand, "@OperationCopies", System.Data.DbType.Int32, securityItem.OperationCopies); _dbHelper.AddInParameter(dbCommand, "@StockPriceType", System.Data.DbType.Int32, (int)securityItem.StockPriceType); _dbHelper.AddInParameter(dbCommand, "@FuturesPriceType", System.Data.DbType.Int32, (int)securityItem.FuturesPriceType); _dbHelper.AddInParameter(dbCommand, "@Status", System.Data.DbType.Int32, (int)securityItem.Status); _dbHelper.AddInParameter(dbCommand, "@Owner", System.Data.DbType.Int32, (int)securityItem.Owner); _dbHelper.AddInParameter(dbCommand, "@ModifiedDate", System.Data.DbType.DateTime, DateTime.Now); int ret = _dbHelper.ExecuteNonQuery(dbCommand); return(ret); }
public List <Model.UI.TradeInstance> GetCombineAll() { var dbCommand = _dbHelper.GetStoredProcCommand(SP_GetCombine); List <Model.UI.TradeInstance> items = new List <Model.UI.TradeInstance>(); var reader = _dbHelper.ExecuteReader(dbCommand); if (reader.HasRows) { while (reader.Read()) { Model.UI.TradeInstance item = ParseData(reader); items.Add(item); } } reader.Close(); _dbHelper.Close(dbCommand); return(items); }
public int Create(Model.UI.TradeInstance tradeInstance, List <TradeInstanceSecurity> tradeSecuItems) { var dbCommand = _dbHelper.GetCommand(); _dbHelper.Open(dbCommand); //use transaction to execute DbTransaction transaction = dbCommand.Connection.BeginTransaction(); dbCommand.Transaction = transaction; dbCommand.CommandType = System.Data.CommandType.StoredProcedure; int ret = -1; try { //delete all old one dbCommand.CommandText = SP_CreateTradeInstance; _dbHelper.AddInParameter(dbCommand, "@InstanceCode", System.Data.DbType.String, tradeInstance.InstanceCode); _dbHelper.AddInParameter(dbCommand, "@PortfolioId", System.Data.DbType.String, tradeInstance.PortfolioId); _dbHelper.AddInParameter(dbCommand, "@MonitorUnitId", System.Data.DbType.Int32, tradeInstance.MonitorUnitId); _dbHelper.AddInParameter(dbCommand, "@TemplateId", System.Data.DbType.Int32, tradeInstance.TemplateId); _dbHelper.AddInParameter(dbCommand, "@StockDirection", System.Data.DbType.Int32, (int)tradeInstance.StockDirection); _dbHelper.AddInParameter(dbCommand, "@FuturesContract", System.Data.DbType.String, tradeInstance.FuturesContract); _dbHelper.AddInParameter(dbCommand, "@FuturesDirection", System.Data.DbType.Int32, (int)tradeInstance.FuturesDirection); _dbHelper.AddInParameter(dbCommand, "@OperationCopies", System.Data.DbType.Int32, tradeInstance.OperationCopies); _dbHelper.AddInParameter(dbCommand, "@StockPriceType", System.Data.DbType.Int32, (int)tradeInstance.StockPriceType); _dbHelper.AddInParameter(dbCommand, "@FuturesPriceType", System.Data.DbType.Int32, (int)tradeInstance.FuturesPriceType); _dbHelper.AddInParameter(dbCommand, "@Status", System.Data.DbType.Int32, (int)TradeInstanceStatus.Active); _dbHelper.AddInParameter(dbCommand, "@Owner", System.Data.DbType.Int32, (int)tradeInstance.Owner); _dbHelper.AddInParameter(dbCommand, "@CreatedDate", System.Data.DbType.DateTime, DateTime.Now); string notes = tradeInstance.Notes ?? string.Empty; _dbHelper.AddInParameter(dbCommand, "@Notes", System.Data.DbType.String, notes); _dbHelper.AddReturnParameter(dbCommand, "@return", System.Data.DbType.Int32); ret = dbCommand.ExecuteNonQuery(); int instanceId = -1; if (ret > 0) { instanceId = (int)dbCommand.Parameters["@return"].Value; tradeInstance.InstanceId = instanceId; foreach (var tradeSecuItem in tradeSecuItems) { dbCommand.Parameters.Clear(); dbCommand.CommandText = SP_CreateTradeInstanceSecurity; _dbHelper.AddInParameter(dbCommand, "@InstanceId", System.Data.DbType.Int32, instanceId); _dbHelper.AddInParameter(dbCommand, "@SecuCode", System.Data.DbType.String, tradeSecuItem.SecuCode); _dbHelper.AddInParameter(dbCommand, "@SecuType", System.Data.DbType.Int32, (int)tradeSecuItem.SecuType); _dbHelper.AddInParameter(dbCommand, "@PositionType", System.Data.DbType.Int32, (int)tradeSecuItem.PositionType); _dbHelper.AddInParameter(dbCommand, "@InstructionPreBuy", System.Data.DbType.Int32, tradeSecuItem.InstructionPreBuy); _dbHelper.AddInParameter(dbCommand, "@InstructionPreSell", System.Data.DbType.Int32, tradeSecuItem.InstructionPreSell); _dbHelper.AddOutParameter(dbCommand, "@RowId", System.Data.DbType.String, 20); ret = dbCommand.ExecuteNonQuery(); string rowId = string.Empty; if (ret > 0) { rowId = (string)dbCommand.Parameters["@RowId"].Value; } } } transaction.Commit(); } catch (Exception ex) { transaction.Rollback(); //TODO: add log logger.Error(ex); ret = -1; throw; } finally { _dbHelper.Close(dbCommand); transaction.Dispose(); } return(ret); }
public int Update(Model.UI.TradeInstance tradeInstance, List <TradeInstanceSecurity> tradeSecuItems) { var dbCommand = _dbHelper.GetCommand(); _dbHelper.Open(dbCommand); //use transaction to execute DbTransaction transaction = dbCommand.Connection.BeginTransaction(); dbCommand.Transaction = transaction; dbCommand.CommandType = System.Data.CommandType.StoredProcedure; int ret = -1; try { //delete all old one dbCommand.CommandText = SP_ModifyTradeInstance; //The @PortfolioId MUST not been modified _dbHelper.AddInParameter(dbCommand, "@InstanceId", System.Data.DbType.String, tradeInstance.InstanceId); _dbHelper.AddInParameter(dbCommand, "@InstanceCode", System.Data.DbType.String, tradeInstance.InstanceCode); _dbHelper.AddInParameter(dbCommand, "@MonitorUnitId", System.Data.DbType.Int32, tradeInstance.MonitorUnitId); _dbHelper.AddInParameter(dbCommand, "@TemplateId", System.Data.DbType.Int32, tradeInstance.TemplateId); _dbHelper.AddInParameter(dbCommand, "@ModifiedDate", System.Data.DbType.DateTime, DateTime.Now); string notes = tradeInstance.Notes ?? string.Empty; _dbHelper.AddInParameter(dbCommand, "@Notes", System.Data.DbType.String, notes); _dbHelper.AddInParameter(dbCommand, "@FuturesContract", System.Data.DbType.String, tradeInstance.FuturesContract); _dbHelper.AddInParameter(dbCommand, "@FuturesDirection", System.Data.DbType.Int32, (int)tradeInstance.FuturesDirection); ret = dbCommand.ExecuteNonQuery(); if (ret > 0) { //TODO: FIXED if there is not secuitem, it will be error. foreach (var tradeSecuItem in tradeSecuItems) { dbCommand.Parameters.Clear(); dbCommand.CommandText = SP_ModifyTradeInstanceSecurityInsertOrUpdate; _dbHelper.AddInParameter(dbCommand, "@InstanceId", System.Data.DbType.Int32, tradeInstance.InstanceId); _dbHelper.AddInParameter(dbCommand, "@SecuCode", System.Data.DbType.String, tradeSecuItem.SecuCode); _dbHelper.AddInParameter(dbCommand, "@SecuType", System.Data.DbType.Int32, (int)tradeSecuItem.SecuType); _dbHelper.AddInParameter(dbCommand, "@PositionType", System.Data.DbType.Int32, (int)tradeSecuItem.PositionType); _dbHelper.AddInParameter(dbCommand, "@InstructionPreBuy", System.Data.DbType.Int32, tradeSecuItem.InstructionPreBuy); _dbHelper.AddInParameter(dbCommand, "@InstructionPreSell", System.Data.DbType.Int32, tradeSecuItem.InstructionPreSell); _dbHelper.AddOutParameter(dbCommand, "@RowId", System.Data.DbType.String, 20); ret = dbCommand.ExecuteNonQuery(); string rowId = string.Empty; if (ret > 0) { rowId = (string)dbCommand.Parameters["@RowId"].Value; } } } transaction.Commit(); } catch (Exception ex) { transaction.Rollback(); //TODO: add log logger.Error(ex); ret = -1; throw; } finally { _dbHelper.Close(dbCommand); transaction.Dispose(); } return(ret); }
public int Transfer(Model.UI.TradeInstance dest, Model.UI.TradeInstance src, List <SourceHoldingItem> transferItems) { List <TradeInstanceSecurity> srcNewItems = new List <TradeInstanceSecurity>(); List <TradeInstanceSecurity> destNewItems = new List <TradeInstanceSecurity>(); List <TradeInstanceAdjustmentItem> adjustItems = new List <TradeInstanceAdjustmentItem>(); //获取src中所有的持仓 var srcItems = Get(src.InstanceId); //获取dest中所有的持仓 var destItems = Get(dest.InstanceId); //对于src,减去划转部分 //对于dest,加入划转部分 foreach (var transferItem in transferItems) { //对源实例中的证券进行更新 TradeInstanceSecurity srcOutItem = new TradeInstanceSecurity { SecuCode = transferItem.SecuCode, SecuType = transferItem.SecuType, InstanceId = src.InstanceId, }; var srcOldItem = srcItems.Find(p => p.SecuCode.Equals(transferItem.SecuCode) && p.SecuType == transferItem.SecuType); if (srcOldItem != null) { srcOutItem.PositionAmount = srcOldItem.PositionAmount - transferItem.TransferedAmount; srcOutItem.PositionType = srcOldItem.PositionType; srcOutItem.SellToday = srcOldItem.SellToday; srcOutItem.SellBalance = srcOldItem.SellBalance; srcOutItem.DealFee = srcOldItem.DealFee; } else { //TODO: } srcNewItems.Add(srcOutItem); //对目标实例中的证券进行更新 TradeInstanceSecurity destInItem = new TradeInstanceSecurity { SecuCode = transferItem.SecuCode, SecuType = transferItem.SecuType, PositionType = transferItem.PositionType, InstanceId = dest.InstanceId, }; var destOldItem = destItems.Find(p => p.SecuCode.Equals(transferItem.SecuCode) && p.SecuType == transferItem.SecuType); if (destOldItem != null) { destInItem.PositionAmount = destOldItem.PositionAmount + transferItem.TransferedAmount; destInItem.PositionType = destOldItem.PositionType; destInItem.SellToday = destOldItem.SellToday; destInItem.SellBalance = destOldItem.SellBalance; destInItem.DealFee = destOldItem.DealFee; } else { destInItem.PositionAmount = transferItem.TransferedAmount; //TODO: if (transferItem.SecuType == Model.SecurityInfo.SecurityType.Stock) { destInItem.PositionType = PositionType.SpotLong; } else if (transferItem.SecuType == Model.SecurityInfo.SecurityType.Futures) { destInItem.PositionType = PositionType.FuturesShort; } } destNewItems.Add(destInItem); //对调整做记录 TradeInstanceAdjustmentItem adjustItem = new TradeInstanceAdjustmentItem { SourceInstanceId = src.InstanceId, SourcePortfolioCode = src.PortfolioCode, DestinationInstanceId = dest.InstanceId, DestinationPortfolioCode = dest.PortfolioCode, SecuCode = transferItem.SecuCode, SecuType = transferItem.SecuType, PositionType = PositionType.SpotLong, Price = transferItem.TransferedPrice, Amount = transferItem.TransferedAmount, AdjustType = AdjustmentType.Transfer, }; adjustItems.Add(adjustItem); } int result = -1; List <int> idList = _tradeInstanceAdjustBLL.CreateTran(adjustItems); if (idList.Count > 0 && idList.Count == adjustItems.Count) { //更新数据库,指向要更新变化部分即可,通过提交事务 result = _tradeinstsecudao.Transfer(destNewItems, srcNewItems); } return(result); }
public int Create(Model.UI.TradeInstance tradeInstance, List <TradeInstanceSecurity> tradeSecuItems) { return(_archivetradeinstancetransactiondao.Create(tradeInstance, tradeSecuItems)); }
/// <summary> /// Submit a new the TradeCommand to open the position. It will create a new row in the tradecommand table. /// It will check whether the tradeinstance is existed and it will create a new tradeinstance if there is no one. /// </summary> /// <param name="openItem">An object of OpenPositionItem contains some basic information, such as portfolio, /// monitor, instancecode, entrust direction. /// </param> /// <param name="secuItems">A list of detailed securities will be entrusted.</param> /// <param name="startDate">The trade command start date and time.</param> /// <param name="endDate">The trade command end date and time.</param> /// <returns>An integer value to indicate whether it is successful or fail. A positive value means success. /// Otherwise failure.</returns> public int SubmitOpenPosition(OpenPositionItem openItem, List <OpenPositionSecurityItem> secuItems, DateTime startDate, DateTime endDate) { int instanceId = -1; string instanceCode = openItem.InstanceCode; var instance = _tradeInstanceBLL.GetInstance(instanceCode); if (instance != null && !string.IsNullOrEmpty(instance.InstanceCode) && instance.InstanceCode.Equals(instanceCode)) { instanceId = instance.InstanceId; instance.OperationCopies += openItem.Copies; _tradeInstanceBLL.Update(instance, secuItems); } else { Model.UI.TradeInstance tradeInstance = new Model.UI.TradeInstance { InstanceCode = instanceCode, PortfolioId = openItem.PortfolioId, MonitorUnitId = openItem.MonitorId, TemplateId = openItem.TemplateId, StockDirection = EntrustDirection.BuySpot, FuturesContract = openItem.FuturesContract, FuturesDirection = EntrustDirection.SellOpen, OperationCopies = openItem.Copies, StockPriceType = StockPriceType.NoLimit, FuturesPriceType = FuturesPriceType.NoLimit, Status = TradeInstanceStatus.Active, }; tradeInstance.Owner = LoginManager.Instance.GetUserId(); instanceId = _tradeInstanceBLL.Create(tradeInstance, secuItems); } int ret = -1; if (instanceId > 0) { //success! Will send generate TradingCommand Model.Database.TradeCommand cmdItem = new Model.Database.TradeCommand { InstanceId = instanceId, ECommandType = CommandType.Arbitrage, EExecuteType = ExecuteType.OpenPosition, CommandNum = openItem.Copies, EStockDirection = EntrustDirection.BuySpot, EFuturesDirection = EntrustDirection.SellOpen, EEntrustStatus = EntrustStatus.NoExecuted, EDealStatus = DealStatus.NoDeal, ModifiedTimes = 1, DStartDate = startDate, DEndDate = endDate, Notes = openItem.Notes, }; var cmdSecuItems = GetSelectCommandSecurities(openItem.MonitorId, -1, secuItems); ret = SubmitInternal(cmdItem, cmdSecuItems); } else { //TODO: error message } return(ret); }