using Sarand.BusinessMgr.Net.Standard.Base.App; using Sarand.BusinessMgr.Net.Standard.Base.Bus; using Sarand.BusinessMgr.Net.Standard.Dbas.Bus; using Sarand.BusinessMgr.Net.Standard.Dbas.Internal; using Sarand.BusinessMgr.Net.Standard.Dbas.UpdateLog; using Sarand.Net.Standard.Base.App; using Sarand.Net.Standard.Base.Bus; using Sarand.Net.Standard.Base.Core; using Sarand.Net.Standard.Base.Dbas; using Sarand.Net.Standard.Base.Utils; using Sarand.Net.Standard.Dbas.Data; using System; using System.Collections.Generic; using System.Data.Common; using System.Linq; namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr { //======================================================================= partial class SbmDataItemMgr_Dbas { //******************************************************************* // I t e m B a t c h e s //******************************************************************* // Data members. //------------------------------------------------------------------- // Utilities. private List GetLogProperties(SbmItemBatch itemBatch) { return new List() { new StringPair("Id",SysId.ToString(itemBatch.Id)), new StringPair("DescBrief",itemBatch.DescBrief), new StringPair("Status",itemBatch.StatusCode) }; } //------------------------------------------------------------------- // Get ItemBatch. public override SbmItemBatch GetItemBatch(SbmItemBatch.Params prm) { return GetItemBatch(GetItemBatchQueryFilter(prm).Concat(" AND ", "(", ")")); } private SbmItemBatch GetItemBatch(String filter) { ClearErrorState(); long count = GetItemBatchCount(filter); if (count == 0) return null; if (count != 1) { SetErrorState("Multiple Item Batches found"); return null; } SbmItemBatch itemBatch = null; // Query data. using (var dbConnection = Database.CreateConnection()) using (var dbCommand = dbConnection.CreateCommand()) { try { dbConnection.Open(); ItemBatch_Db dbItemBatch = new ItemBatch_Db(DbInfo); dbItemBatch.PopulateFrom(dbCommand, aliasItemBatch, filter); itemBatch = CreateItemBatch(dbItemBatch); } catch (Exception exc) { SetErrorState("Database query exception"); SaLogger.Warn($"{SysUtil.Fn}\n\tQuery: {dbCommand.CommandText}\n\t{ExceptionUtil.GetErrorStateMessage(exc)}"); } } return itemBatch; } //------------------------------------------------------------------- // Create ItemBatch. public override SbmItemBatch CreateItemBatch(Sbm.ItemBatchType itemBatchType, String refs) { ClearErrorState(); SbmItemBatch itemBatch = null; if (itemBatchType > 0) itemBatch = new SbmItemBatch_Dbas(Internals, new SysId(), AffiliateId_Owner, itemBatchType, refs, 0); else SetErrorState("Asset type not identified"); return itemBatch; } private SbmItemBatch_Dbas CreateItemBatch(ItemBatch_Db dbItemBatch) { ClearErrorState(); SbmItemBatch_Dbas itemBatch = new SbmItemBatch_Dbas(Internals, new SysId(dbItemBatch._Id), new SysId(dbItemBatch._AffIdOwner), (Sbm.ItemBatchType)dbItemBatch._Type, dbItemBatch._Ref, (ushort)dbItemBatch._Flags); PopulateFrom(dbItemBatch, itemBatch); return itemBatch; } //------------------------------------------------------------------- // Validate ItemBatch. public override bool IsValidItemBatchData(SbmItemBatch.Data data, SbmItemBatch.ErrField errField) { ClearErrorState(); if (!base.IsValidItemBatchData(data, errField)) return false; return true; } //------------------------------------------------------------------- // Insert ItemBatch. public override bool InsertItemBatch(SbmItemBatch itemBatch, DbUpdateInfo dbUpdateInfo) { ClearErrorState(); if (!IsValidItemBatch(itemBatch)) return false; if (SysId.IsValid(itemBatch.Id)) return SetErrorState(ErrorMessage.ValiditemId); using (var dbConnection = Database.CreateConnection()) using (var dbCommand = dbConnection.CreateCommand()) { try { dbConnection.Open(); ItemBatch_Db dbItemBatch = new ItemBatch_Db(DbInfo); PopulateTo(dbItemBatch, itemBatch, dbUpdateInfo); if (ItemBatch_Db.FieldsNonId.Contains("Id")) { // Generate next Id. dbItemBatch._Id = SysId.ToInt(Database.GetNextId("ItemBatch", dbUpdateInfo)); } dbItemBatch.ExecuteInsertCommand(dbCommand); itemBatch.Id = new SysId(dbItemBatch._Id); itemBatch.Changed = false; if (DebugMode) SaLogger.Debug($"{SysUtil.Fn} Inserted. " + GetLogProperties(itemBatch).Concat(": ").Concat("", "\n\t")); } catch (Exception exc) { SetErrorState(exc.Message); } } return !HasErrorState(); } //------------------------------------------------------------------- // Update ItemBatch. public override bool UpdateItemBatch(SbmItemBatch itemBatch, DbUpdateInfo dbUpdateInfo) { ClearErrorState(); if (!IsValidItemBatch(itemBatch)) return false; if (!SysId.IsValid(itemBatch.Id)) return SetErrorState(ErrorMessage.InvalidItemId); if (!itemBatch.Changed) { if (DebugMode) SaLogger.Debug($"{SysUtil.Fn} Data not changed. " + GetLogProperties(itemBatch).Concat(": ").Concat("", "\n\t")); return true; } using (var dbConnection = Database.CreateConnection()) using (var dbCommand = dbConnection.CreateCommand()) { try { // Retrieve ItemBatch. dbConnection.Open(); ItemBatch_Db dbItemBatch = new ItemBatch_Db(DbInfo); dbItemBatch.PopulateFrom(dbCommand, aliasItemBatch, "Id=" + SysId.ToString(itemBatch.Id)); SbmUpdateLogItemMonitor_ItemBatch updateLogMonitor = new SbmUpdateLogItemMonitor_ItemBatch(Internals, CreateItemBatch(dbItemBatch)); // Update properties. PopulateTo(dbItemBatch, itemBatch, dbUpdateInfo); dbItemBatch.ExecuteUpdateCommand(dbCommand); itemBatch.Changed = false; if (DebugMode) SaLogger.Debug($"{SysUtil.Fn} Updated. " + GetLogProperties(itemBatch).Concat(": ").Concat("", "\n\t")); // Record updates. updateLogMonitor.RecordUpdatedValues(itemBatch); updateLogMonitor.LogUpdates(); } catch (Exception exc) { SetErrorState(exc.Message); } } return !HasErrorState(); } //------------------------------------------------------------------- // Delete ItemBatch. public override bool ItemBatchCanBeDeleted(SbmItemBatch itemBatch) { ClearErrorState(); if (!base.ItemBatchCanBeDeleted(itemBatch)) return false; return true; } public override bool DeleteItemBatch(SbmItemBatch itemBatch, DbUpdateInfo dbUpdateInfo) { ClearErrorState(); if (!ItemBatchCanBeDeleted(itemBatch)) return false; using (var dbConnection = Database.CreateConnection()) using (var dbCommand = dbConnection.CreateCommand()) { try { // Retrieve ItemBatch. dbConnection.Open(); ItemBatch_Db dbItemBatch = new ItemBatch_Db(DbInfo); dbItemBatch.PopulateFrom(dbCommand, aliasItemBatch, "Id=" + itemBatch.Id.ToString()); // Delete ItemBatch. dbCommand.CommandType = System.Data.CommandType.Text; dbCommand.CommandText = "DELETE FROM " + SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.ItemBatch) + " WHERE Id=" + SysId.ToString(itemBatch.Id) + ";"; dbCommand.ExecuteNonQuery(); itemBatch.Changed = false; if (DebugMode) SaLogger.Debug($"{SysUtil.Fn} Deleted. " + GetLogProperties(itemBatch).Concat(": ").Concat("", "\n\t")); } catch (Exception exc) { SetErrorState(exc.Message); } } return !HasErrorState(); } //------------------------------------------------------------------- // Copy data properties to and from database. private void PopulateTo(ItemBatch_Db dbItemBatch, SbmItemBatch itemBatch, DbUpdateInfo dbUpdateInfo) { dbItemBatch._Id = itemBatch.Id.ToInt(); dbItemBatch._AffIdOwner = itemBatch.AffiliateIdOwner.ToInt(); dbItemBatch._Type = (short)itemBatch.ItemBatchType; dbItemBatch._Ref = itemBatch.Ref; dbItemBatch._DescBrief = itemBatch.DescBrief; dbItemBatch._ProcessType = itemBatch.ProcessType; // Common properties. dbItemBatch._Notes = itemBatch.Notes; dbItemBatch._Status = SacsSystem.GetStatusCode(itemBatch.Status); dbItemBatch._Flags = (short)itemBatch.Flags; if (!SysId.IsValid(itemBatch.Id)) { dbItemBatch._CreateOn = DateTime.UtcNow; dbItemBatch._CreateBy = dbUpdateInfo.UserId.ToInt(); dbItemBatch._CreateHost = dbUpdateInfo.Host; } dbItemBatch._UpdateOn = DateTime.UtcNow; dbItemBatch._UpdateBy = dbUpdateInfo.UserId.ToInt(); dbItemBatch._UpdateHost = dbUpdateInfo.Host; } private void PopulateFrom(ItemBatch_Db dbItemBatch, SbmItemBatch itemBatch) { //itemBatch.Id = new SysId(dbItemBatch._Id); itemBatch.AffiliateIdOwner = new SysId(dbItemBatch._AffIdOwner); itemBatch.ItemBatchType = (Sbm.ItemBatchType)(dbItemBatch._Type ?? 0); itemBatch.Ref = dbItemBatch._Ref; itemBatch.DescBrief = dbItemBatch._DescBrief; itemBatch.ProcessType = dbItemBatch._ProcessType; // Common properties. itemBatch.Notes = dbItemBatch._Notes; itemBatch.Status = SacsSystem.GetStatusForCode(dbItemBatch._Status); itemBatch.SetCreateStamp(dbItemBatch._CreateOn, new SysId(dbItemBatch._CreateBy), dbItemBatch._CreateHost); itemBatch.SetUpdateStamp(dbItemBatch._UpdateOn ?? default(DateTime), new SysId(dbItemBatch._UpdateBy ?? 0), dbItemBatch._UpdateHost); itemBatch.AcceptChanges(); } //------------------------------------------------------------------- // Column definitions. private static readonly String aliasItemBatch = "aItmBtch"; private static readonly String colnameTypeDesc = "TypeDesc"; private static readonly String datanameLinkCount = "LinkCount"; // Column definition population. private void SetItemBatchColDfn (ColumnDfn col, String caption, int width, SbmDbDfn.ColumnIdx dbCol, ColumnAlignment align = ColumnAlignment.Default, DataValue.DataType dataType = DataValue.DataType.String, String alias = "", String prefix = "") { if (String.IsNullOrEmpty(alias) && SbmDbDfn.GetTableForColumn(dbCol) == SbmDbDfn.TableIdx.ItemBatch) alias = aliasItemBatch; col.Set(caption, width, (int)dbCol, prefix + SbmDbDfn.GetColumnName(dbCol, false), SbmDbDfn.GetColumnNameQual(dbCol, alias), dataType, align); if (dataType == DataValue.DataType.String && dbCol != SbmDbDfn.ColumnIdx.Unknown) col.MaxLength = (int)SbmDbDfn.GetColTextLen(dbCol); } //------------------------------------------------------------------- // Getting ItemBatch column definition. public override ColumnDfn GetItemBatchColumnDfn(SbmItemBatch.Column columnId, string caption = "", int width = 0) { ColumnDfn columnDfn = new ColumnDfn((int)columnId, caption, width); switch (columnId) { // ItemBatch Properties. case SbmItemBatch.Column.Pos: SetItemBatchColDfn(columnDfn, "Pos", 45, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right); columnDfn.SortMode = ColumnDfn.ColumnSortMode.Off; columnDfn.ReadOnly = true; columnDfn.Resizable = false; break; case SbmItemBatch.Column.Id: SetItemBatchColDfn(columnDfn, "Id", 60, SbmDbDfn.ColumnIdx.ItemBatch_Id, ColumnAlignment.Right, DataValue.DataType.Long); columnDfn.ReadOnly = true; break; case SbmItemBatch.Column.Type: case SbmItemBatch.Column.TypeDesc: SetItemBatchColDfn(columnDfn, "Type", 70, SbmDbDfn.ColumnIdx.ItemBatch_Type, ColumnAlignment.Center, DataValue.DataType.Long); columnDfn.DataName = colnameTypeDesc; break; case SbmItemBatch.Column.Ref: SetItemBatchColDfn(columnDfn, "Ref", 80, SbmDbDfn.ColumnIdx.ItemBatch_Ref); break; case SbmItemBatch.Column.DescBrief: SetItemBatchColDfn(columnDfn, "Description", 140, SbmDbDfn.ColumnIdx.ItemBatch_DescBrief); break; // Common properties. case SbmItemBatch.Column.Notes: SetItemBatchColDfn(columnDfn, "Notes", 200, SbmDbDfn.ColumnIdx.ItemBatch_Notes); break; case SbmItemBatch.Column.Flag: SetItemBatchColDfn(columnDfn, "Flags", 40, SbmDbDfn.ColumnIdx.ItemBatch_Flags, ColumnAlignment.Center, DataValue.DataType.Long); break; case SbmItemBatch.Column.Status: SetItemBatchColDfn(columnDfn, "Status", 80, SbmDbDfn.ColumnIdx.ItemBatch_Status, ColumnAlignment.Center); break; case SbmItemBatch.Column.Status_Desc: SetItemBatchColDfn(columnDfn, "Status", 80, SbmDbDfn.ColumnIdx.ItemBatch_Status); break; case SbmItemBatch.Column.Status_Ind: SetItemBatchColDfn(columnDfn, "Status", 80, SbmDbDfn.ColumnIdx.ItemBatch_Status, ColumnAlignment.Center, DataValue.DataType.TriState); columnDfn.TriStateFormat = ColumnTriStateFormat.Lights; break; case SbmItemBatch.Column.CreateOn_Date: SetItemBatchColDfn(columnDfn, "Created", 80, SbmDbDfn.ColumnIdx.ItemBatch_CreateOn, ColumnAlignment.Center, DataValue.DataType.Date); columnDfn.DateFormat = "d-MMM-yy"; columnDfn.ReadOnly = true; break; case SbmItemBatch.Column.UpdateOn_Date: SetItemBatchColDfn(columnDfn, "Updated", 80, SbmDbDfn.ColumnIdx.ItemBatch_UpdateOn, ColumnAlignment.Center, DataValue.DataType.Date); columnDfn.DateFormat = "d-MMM-yy"; columnDfn.ReadOnly = true; break; } if (!String.IsNullOrEmpty(caption)) columnDfn.Caption = caption; if (width > 0) columnDfn.Width = width; return columnDfn; } //------------------------------------------------------------------- // ItemBatch query filter. public override List GetItemBatchQueryFilter(SbmItemBatch.Params prm) { List filter = new List(); // ItemBatch Id. String includedIds = prm.IdsIncluded.Concat(","); String colItemBatch_Id = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.ItemBatch_Id, aliasItemBatch); if (!includedIds.IsEmpty()) filter.Add(colItemBatch_Id + " IN (" + includedIds + ")"); String excludedIds = prm.IdsExcluded.Concat(","); if (!excludedIds.IsEmpty()) filter.Add(colItemBatch_Id + " NOT IN (" + excludedIds + ")"); // Affiliate Owner. filter.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.ItemBatch_AffIdOwner, aliasItemBatch) + "=" + AffiliateId_Owner.ToString()); // Type. if (prm.ItemBatchType > 0) filter.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.ItemBatch_Type, aliasItemBatch) + "=" + ((int)prm.ItemBatchType).ToString()); // Reference. if (!StringUtil.IsEmpty(prm.Ref)) filter.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.ItemBatch_Ref, aliasItemBatch) + "='" + DbQuery.FormatForCondition(prm.Ref) + "'"); else if (!StringUtil.IsEmpty(prm.RefPartial)) filter.Add(DbQuery.FormatFn_Left(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.ItemBatch_Ref, aliasItemBatch), prm.RefPartial.Length) + " ='" + DbQuery.FormatForCondition(prm.RefPartial) + "'"); // Status: if (prm.NotCompleted) { filter.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.ItemBatch_Status, aliasItemBatch) + "='" + StatusCompleted + "'"); filter.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.ItemBatch_Status, aliasItemBatch) + "='" + StatusCancelled + "'"); } if (filter.Count < 1 && prm.IncludeDefaultFilter) filter.Add("1=1"); return filter; } // ItemBatch sort columns. public List GetItemBatchSortColumns(SbmItemBatch.Params prm) { // Sort sequence: List sortColumnCodes = new List(); foreach (var columnDfn in prm.SortColumns) { // Need to ensure correct alias used for ItemBatch columns in case of conflict. String sortCol = String.Empty; if (SbmDbDfn.GetTableForColumn((SbmDbDfn.ColumnIdx)columnDfn.DbColumn) == SbmDbDfn.TableIdx.ItemBatch) { sortCol = SbmDbDfn.GetColumnNameQual((SbmDbDfn.ColumnIdx)columnDfn.DbColumn, aliasItemBatch); } else { sortCol = columnDfn.DataName; if (!StringUtil.IsEmpty(columnDfn.SortDataName)) sortCol = columnDfn.SortDataName; } if (!sortCol.IsEmpty()) { DbOrderByNullMode orderByNullMode = DbOrderByNullMode.Default; // eSaOrderByDemoteNulls, eSaOrderByPromoteNulls sortColumnCodes.Add(DbQuery.FormatForOrderBy(sortCol, columnDfn.SortAscending, orderByNullMode).Concat(", ")); } } sortColumnCodes.RemoveBlanks(); if (sortColumnCodes.IsEmpty()) { // Default sort columns: sortColumnCodes.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.ItemBatch_ProcessType, aliasItemBatch) + " ASC"); } return sortColumnCodes; } //------------------------------------------------------------------- // ItemBatch count. private long GetItemBatchCount(String filter) { ClearErrorState(); return Database.GetRowCount(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.ItemBatch) + " As " + aliasItemBatch, filter); } public override long GetItemBatchCount(SbmItemBatch.Params prm) { ClearErrorState(); return GetItemBatchCount(GetItemBatchQueryFilter(prm).Concat(" AND ", "(", ")")); } //------------------------------------------------------------------- // ItemBatch list. public override List GetItemBatchList(SbmItemBatch.Params prm) { ClearErrorState(); List itemBatches = new List(); DbQuery qry = new DbQuery(Database.DbmsType); qry.Tables.Add(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.ItemBatch), aliasItemBatch); ItemBatch_Db dbItemBatch = new ItemBatch_Db(DbInfo); qry.Columns.AddRange(dbItemBatch.ExistingColumnNames); qry.Filters.AddRange(GetItemBatchQueryFilter(prm)); qry.OrderBy.AddRange(GetItemBatchSortColumns(prm)); // Query data. using (var dbConnection = Database.CreateConnection()) using (var dbCommand = dbConnection.CreateCommand()) { try { dbConnection.Open(); dbCommand.CommandText = qry.BuildQuery(prm.ResultsPaging); using (DbDataReader dbDataReader = dbCommand.ExecuteReader()) { while (dbDataReader.Read()) { dbItemBatch = new ItemBatch_Db(DbInfo); dbItemBatch.PopulateFrom(dbDataReader); itemBatches.Add(CreateItemBatch(dbItemBatch)); } } } catch (Exception exc) { SetErrorState("Database query exception"); SaLogger.Warn($"{SysUtil.Fn}\n\tQuery: {dbCommand.CommandText}\n\t{ExceptionUtil.GetErrorStateMessage(exc)}"); } } return itemBatches; } //------------------------------------------------------------------- // ItemBatch query execution. public override DbResultSet ExecuteItemBatchQuery(List columns, SbmItemBatch.Params prm) { ClearErrorState(); //--------------------------------------------------------------------- // Construct build database query. DbQuery query = new DbQuery(Database.DbmsType); query.Tables.Add(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.ItemBatch), aliasItemBatch); // ItemBatch Properties - add columns as defined in query list. if (columns.HasId((int)SbmItemBatch.Column.Id)) query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.ItemBatch_Id, aliasItemBatch)); if (columns.HasId((int)SbmItemBatch.Column.Type)) query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.ItemBatch_Type, aliasItemBatch)); if (columns.HasId((int)SbmItemBatch.Column.Ref)) query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.ItemBatch_Ref, aliasItemBatch)); if (columns.HasId((int)SbmItemBatch.Column.DescBrief)) query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.ItemBatch_DescBrief, aliasItemBatch)); if (columns.HasId((int)SbmItemBatch.Column.ProcessType)) query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.ItemBatch_ProcessType, aliasItemBatch)); //--------------------------------------------------------------- - // Link count. bool countLinks = columns.HasId((int)SbmItemBatch.Column.LinkCount); if (countLinks) { // Build sub query to directly return the number of associated Links: String aliasLink = "aLnk"; DbQuery qryLinkCount = new DbQuery(Database.DbmsType); qryLinkCount.Tables.Add(new StringPair(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.SaPrice), aliasLink)); qryLinkCount.Columns.Add("Count(" + SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.SaPrice_CommodityId, aliasLink) + ")"); qryLinkCount.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.ItemLink_ItemTypeFrom, aliasLink) + "=" + ((int)Sbm.ItemType.ItemBatch).ToString()); qryLinkCount.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.ItemLink_ItemIdFrom, aliasLink) + "=" + SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.ItemBatch_Id, aliasItemBatch)); query.Columns.Add("(" + qryLinkCount.BuildQuery() + ")", datanameLinkCount); } // Common Properties if (columns.HasId((int)SbmItemBatch.Column.Notes)) query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.ItemBatch_Notes, aliasItemBatch)); if (columns.HasId((int)SbmItemBatch.Column.Flag)) query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.ItemBatch_Flags, aliasItemBatch)); if (columns.HasId((int)SbmItemBatch.Column.Status) || columns.HasId((int)SbmItemBatch.Column.Status_Desc) || columns.HasId((int)SbmItemBatch.Column.Status_Ind)) query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.ItemBatch_Status, aliasItemBatch)); if (columns.HasId((int)SbmItemBatch.Column.CreateOn_Date)) query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.ItemBatch_CreateOn, aliasItemBatch)); if (columns.HasId((int)SbmItemBatch.Column.UpdateOn_Date)) query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.ItemBatch_UpdateOn, aliasItemBatch)); //--------------------------------------------------------------------- // Populate filter. query.Filters.AddRange(GetItemBatchQueryFilter(prm)); if (prm.IdsIncluded.Count != 1) { // Configure sort sequence. foreach (String sortColumn in GetItemBatchSortColumns(prm)) query.OrderBy.Add(sortColumn); } //--------------------------------------------------------------------- //return new DbResultSet_DataTableReader(Database, query.BuildQuery()); return DbResultSet_DataReader.ExecuteQuery(Database, query.BuildQuery(prm.ResultsPaging)); } //------------------------------------------------------------------- } //======================================================================= }