using Sarand.BusinessMgr.Net.Standard.Base.App; using Sarand.BusinessMgr.Net.Standard.Base.Bus; 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 System; using System.Collections.Generic; namespace Sarand.BusinessMgr.Net.Standard.Base.Mgr { //======================================================================= partial class SbmCommodityMgr { //******************************************************************* // C o n t a i n e r s //******************************************************************* //------------------------------------------------------------------- // Utilities. public abstract String GetItemSource(Sbm.ItemType itemType, SysId itemId, bool brief = false); public abstract ushort GetMaxItemSeq(SysId containerId, Sbm.ItemType itemType, SysId itemId); //------------------------------------------------------------------- // Retrieve individual containers. //------------------------------------------------------------------- // ContainerItem exists. public bool ContainerItemExistsById(SysId containerItemId) { ClearErrorState(); if (!SysId.IsValid(containerItemId)) return false; SbmContainerItem.Params prmContainerItem = new SbmContainerItem.Params(); prmContainerItem.IncludedIds.Add(containerItemId); return GetContainerItemCount(prmContainerItem) == 1; } //------------------------------------------------------------------- // Get containers. public abstract SbmContainerItem GetContainerItem(SbmContainerItem.Params prm); public SbmContainerItem GetContainerItemById(SysId containerItemId) { ClearErrorState(); if (!SysId.IsValid(containerItemId)) return null; SbmContainerItem.Params prmContainerItem = new SbmContainerItem.Params(); prmContainerItem.IncludedIds.Add(containerItemId); return GetContainerItem(prmContainerItem); } //------------------------------------------------------------------- // Create containers. public abstract SbmContainerItem CreateContainerItem(SysId containerId, Sbm.ItemType itemType, SysId itemId); //------------------------------------------------------------------- // Validate ContainerItem data. public bool IsValidContainerItem(SbmContainerItem container) { ClearErrorState(); if (container == null) return SetErrorState(ErrorMessage.ItemNotSpecified); return IsValidContainerItemData(container.GetData(), new SbmContainerItem.ErrField()); } public virtual bool IsValidContainerItemData(SbmContainerItem.Data data, SbmContainerItem.ErrField errField) { ClearErrorState(); //Validate the identity. if (!SysId.IsValid(data.ContainerItemId)) { errField.ContainerItemId = SacsHierarchyItem.ValidValue.Invalid; return SetErrorState("invalid containerItem id"); } if (!SysId.IsValid(data.ContainerId)) { errField.ContainerId = SacsHierarchyItem.ValidValue.Invalid; return SetErrorState("invalid container id"); } if (errField.ItemType != SacsHierarchyItem.ValidValue.Ignore && (short)data.ItemType < 1) { if ((int)data.ItemType < 1) { errField.ItemType = SacsHierarchyItem.ValidValue.Invalid; return SetErrorState("Item type must be supplied"); } } if (!SysId.IsValid(data.ItemId)) { errField.ItemId = SacsHierarchyItem.ValidValue.Invalid; return SetErrorState("invalid item id"); } if (errField.ItemSeq != SacsHierarchyItem.ValidValue.Ignore && data.ItemSeq < 1) { errField.ItemSeq = SacsHierarchyItem.ValidValue.Invalid; return false; } if (errField.ItemTypeSource != SacsHierarchyItem.ValidValue.Ignore) { if ((int)data.ItemTypeSource < 1) { errField.ItemTypeSource = SacsHierarchyItem.ValidValue.Invalid; return SetErrorState("item type source must be supplied"); } } if (!SysId.IsValid(data.ItemIdSource)) { errField.ItemId = SacsHierarchyItem.ValidValue.Invalid; return SetErrorState("invalid item id"); } if (errField.Quantity != SacsHierarchyItem.ValidValue.Ignore && data.Quantity < 1) { if (data.Quantity < 1) { errField.Quantity = SacsHierarchyItem.ValidValue.Invalid; return SetErrorState("Quantity must be supplied"); } } if (errField.Notes != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Notes, "notes", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.ContainerItem_Notes))) { errField.Notes = SacsHierarchyItem.ValidValue.Invalid; return false; } if (errField.Status != SacsHierarchyItem.ValidValue.Ignore) { if (!IsValidValue(data.StatusCode, "status", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.ContainerItem_Status), true, true)) { errField.Status = SacsHierarchyItem.ValidValue.Invalid; return false; } if (!SbmContainerItem.ContainerItemStatuses.Contains(data.Status)) { errField.Status = SacsHierarchyItem.ValidValue.Invalid; return SetErrorState(ErrorMessage.InvalidStatus); } } return true; } //------------------------------------------------------------------- // ContainerItem database interface. public abstract bool InsertContainerItem(SbmContainerItem container, DbUpdateInfo dbUpdateInfo); public abstract bool UpdateContainerItem(SbmContainerItem container, DbUpdateInfo dbUpdateInfo); public virtual bool ContainerItemCanBeDeleted(SbmContainerItem container) { ClearErrorState(); return true; } public abstract bool DeleteContainerItem(SbmContainerItem container, DbUpdateInfo dbUpdateInfo); //------------------------------------------------------------------- // ContainerItem list. public abstract ColumnDfn GetContainerItemColumnDfn(SbmContainerItem.Column columnId, String caption = "", int width = 0); public abstract List GetContainerItemQueryFilter(SbmContainerItem.Params prm); public abstract long GetContainerItemCount(SbmContainerItem.Params prm); public abstract List GetContainerItemList(SbmContainerItem.Params prm); public abstract DbResultSet ExecuteContainerItemQuery(List columns, SbmContainerItem.Params prm); //------------------------------------------------------------------- // D a t a V a l u e s //------------------------------------------------------------------- /// /// Extract and format result set data value where specific handling is required. /// Where response is an invalid data value, format value using column.FormatValue(values). /// public DataValue GetContainerItemDataValue(ColumnDfn column, NamedValue.Map values) { DataValue value = new DataValue(); switch ((SbmContainerItem.Column)column.Id) { //--------------------------------------------------------------- // Notes. case SbmContainerItem.Column.Notes: value = new DataValue(SacsHierarchyItem.FormatForDisplay(values.GetValue(column.DataName).ToString(), 200)); break; // Status. case SbmContainerItem.Column.Status_Desc: case SbmContainerItem.Column.Status_Ind: { String statusCode = values.GetValue(column.DataName).ToString(); SaStatus status = SacsSystem.GetStatusForCode(statusCode); if (column.Id == (int)SbmContainerItem.Column.Status_Desc) value = new DataValue(SacsSystem.GetStatusDescForCode(statusCode)); else if (column.Id == (int)SbmContainerItem.Column.Status_Ind) value = new DataValue(SbmContainerItem.GetStatusTriState(status)); break; } //----------------------------------------------------------- } return value; } //------------------------------------------------------------------- } //======================================================================= }