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 Sarand.Net.Standard.Base.Utils; using System; using System.Collections.Generic; namespace Sarand.BusinessMgr.Net.Standard.Base.Mgr { //======================================================================= partial class SbmDataItemMgr { //******************************************************************* // I t e m B a t c h e s //******************************************************************* //------------------------------------------------------------------- // Utilities. //------------------------------------------------------------------- // Retrieve individual itemBatches. //------------------------------------------------------------------- // ItemBatch exists. public bool ItemBatchExistsById(SysId itemBatchId) { ClearErrorState(); if (!SysId.IsValid(itemBatchId)) return false; SbmItemBatch.Params prmItemBatch = new SbmItemBatch.Params(); prmItemBatch.IncludedIds.Add(itemBatchId); prmItemBatch.StatusCat = SbmItemBatch.StatusCat.Any; return GetItemBatchCount(prmItemBatch) == 1; } public bool ItemBatchExistsByRef(String refs) { ClearErrorState(); if (!StringUtil.IsEmpty(refs)) return false; SbmItemBatch.Params prmItemBatch = new SbmItemBatch.Params(); prmItemBatch.Ref = refs; prmItemBatch.StatusCat = SbmItemBatch.StatusCat.Any; return GetItemBatchCount(prmItemBatch) == 1; } //------------------------------------------------------------------- // Get itemBatches. public abstract SbmItemBatch GetItemBatch(SbmItemBatch.Params prm); public SbmItemBatch GetItemBatchById(SysId itemBatchId) { ClearErrorState(); if (!SysId.IsValid(itemBatchId)) return null; SbmItemBatch.Params prmItemBatch = new SbmItemBatch.Params(); prmItemBatch.IncludedIds.Add(itemBatchId); prmItemBatch.StatusCat = SbmItemBatch.StatusCat.Any; return GetItemBatch(prmItemBatch); } public SbmItemBatch GetItemBatchByRef(String refs) { ClearErrorState(); if (!StringUtil.IsEmpty(refs)) return null; SbmItemBatch.Params prmItemBatch = new SbmItemBatch.Params(); prmItemBatch.Ref = refs; prmItemBatch.StatusCat = SbmItemBatch.StatusCat.Any; return GetItemBatch(prmItemBatch); } //------------------------------------------------------------------- // Create itemBatches. public abstract SbmItemBatch CreateItemBatch(Sbm.ItemBatchType itemBatchType, String refs); //------------------------------------------------------------------- // Validate ItemBatch data. public bool IsValidItemBatch(SbmItemBatch itemBatch) { ClearErrorState(); if (itemBatch == null) return SetErrorState(ErrorMessage.ItemNotSpecified); return IsValidItemBatchData(itemBatch.GetData(), new SbmItemBatch.ErrField()); } public virtual bool IsValidItemBatchData(SbmItemBatch.Data data, SbmItemBatch.ErrField errField) { ClearErrorState(); // ItemBatch properties. if (errField.AffiliateIdOwner != SacsHierarchyItem.ValidValue.Ignore && SysId.ToInt(data.AffiliateIdOwner) < 1) { errField.AffiliateIdOwner = SacsHierarchyItem.ValidValue.Invalid; return SetErrorState("Aff Id Owner must be supplied"); } if (errField.ItemBatchType != SacsHierarchyItem.ValidValue.Ignore) { if ((int)data.ItemBatchType < 1) { errField.ItemBatchType = SacsHierarchyItem.ValidValue.Invalid; return SetErrorState("ItemBatch type must be supplied"); } } if (errField.Ref != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Ref, "reference", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.ItemBatch_Ref), true)) { errField.Ref = SacsHierarchyItem.ValidValue.Invalid; return false; } if (errField.DescBrief != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.DescBrief, "description brief", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.ItemBatch_DescBrief), true)) { errField.DescBrief = SacsHierarchyItem.ValidValue.Invalid; return false; } if (errField.ProcessType != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.ProcessType, "process type", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.ItemBatch_ProcessType), true)) { errField.ProcessType = SacsHierarchyItem.ValidValue.Invalid; return false; } // Common properties. if (!IsValidValue(data.Notes, "notes", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.ItemBatch_Notes))) { errField.Notes = SacsHierarchyItem.ValidValue.Invalid; return false; } if (errField.Status != SacsHierarchyItem.ValidValue.Ignore) { if (!IsValidValue(data.StatusCode, "status", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.ItemBatch_Status), true, true)) { errField.Status = SacsHierarchyItem.ValidValue.Invalid; return false; } if (!SbmItemBatch.ItemBatchStatuses.Contains(data.Status)) { errField.Status = SacsHierarchyItem.ValidValue.Invalid; return SetErrorState(ErrorMessage.InvalidStatus); } } return true; } //------------------------------------------------------------------- // ItemBatch database interface. public abstract bool InsertItemBatch(SbmItemBatch itemBatch, DbUpdateInfo dbUpdateInfo); public abstract bool UpdateItemBatch(SbmItemBatch itemBatch, DbUpdateInfo dbUpdateInfo); public virtual bool ItemBatchCanBeDeleted(SbmItemBatch itemBatch) { ClearErrorState(); if (itemBatch == null) return SetErrorState("item not specified"); return true; } public abstract bool DeleteItemBatch(SbmItemBatch itemBatch, DbUpdateInfo dbUpdateInfo); //------------------------------------------------------------------- // ItemBatch list. public abstract ColumnDfn GetItemBatchColumnDfn(SbmItemBatch.Column columnId, String caption = "", int width = 0); public abstract List GetItemBatchQueryFilter(SbmItemBatch.Params prm); public abstract long GetItemBatchCount(SbmItemBatch.Params prm); public abstract List GetItemBatchList(SbmItemBatch.Params prm); public abstract DbResultSet ExecuteItemBatchQuery(List columns, SbmItemBatch.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 GetItemBatchDataValue(ColumnDfn column, NamedValue.Map values) { DataValue value = new DataValue(); switch ((SbmItemBatch.Column)column.Id) { // Notes. case SbmItemBatch.Column.Notes: value = new DataValue(SacsHierarchyItem.FormatForDisplay(values.GetValue(column.DataName).ToString(), 200)); break; // Status. case SbmItemBatch.Column.Status_Desc: case SbmItemBatch.Column.Status_Ind: { String statusCode = values.GetValue(column.DataName).ToString(); SaStatus status = SacsSystem.GetStatusForCode(statusCode); if (column.Id == (int)SbmItemBatch.Column.Status_Desc) value = new DataValue(SacsSystem.GetStatusDescForCode(statusCode)); else if (column.Id == (int)SbmItemBatch.Column.Status_Ind) value = new DataValue(SbmItemBatch.GetStatusTriState(status)); } break; //----------------------------------------------------------- } return value; } //------------------------------------------------------------------- } //======================================================================= }