Files
BusinessMgr-2019/SaBusMgrStandardBase/Base/Mgr/SbmStockMgr_StockLevel.cs
T

207 lines
7.5 KiB
C#

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
{
//=======================================================================
// Stock manager - Stock Levels.
//=======================================================================
partial class SbmStockMgr
{
//-------------------------------------------------------------------
// Utilities.
//-------------------------------------------------------------------
// item exists.
public bool StockLevelExistsById(SysId stockLevelId)
{
ClearErrorState();
if (!SysId.IsValid(stockLevelId)) return false;
SbmStockLevel.Params prmStockLevel = new SbmStockLevel.Params();
prmStockLevel.IdsIncluded.Add(stockLevelId);
return GetStockLevelCount(prmStockLevel) == 1;
}
//-------------------------------------------------------------------
// Get item.
public SbmStockLevel GetStockLevelById(SysId stockLevelId)
{
ClearErrorState();
if (!SysId.IsValid(stockLevelId)) return null;
SbmStockLevel.Params prmStockLevel = new SbmStockLevel.Params();
prmStockLevel.IdsIncluded.Add(stockLevelId);
return GetStockLevel(prmStockLevel);
}
public abstract SbmStockLevel GetStockLevel(SbmStockLevel.Params prm);
//-------------------------------------------------------------------
// Create item.
public abstract SbmStockLevel CreateStockLevel(SysId idCommodity, SysId idLocation, Sbm.StockLevelType type, Sbm.StockLevelSource source);
//-------------------------------------------------------------------
// Validate item data.
public bool IsValidStockLevel(SbmStockLevel stockLevel)
{
ClearErrorState();
if (stockLevel == null) return SetErrorState(ErrorMessage.ItemNotSpecified);
return IsValidStockLevelData(stockLevel.GetData(), new SbmStockLevel.ErrField());
}
public virtual bool IsValidStockLevelData(SbmStockLevel.Data data, SbmStockLevel.ErrField errField)
{
ClearErrorState();
// Commodity.
if (!SysId.IsValid(data.CommodityId))
{
errField.CommodityId = SacsHierarchyItem.ValidValue.Invalid;
return SetErrorState("invalid commodity id");
}
// Location.
if (!SysId.IsValid(data.LocationId))
{
errField.LocationId = SacsHierarchyItem.ValidValue.Invalid;
return SetErrorState("invalid location id");
}
// Stock Level Type.
if ((int)data.Type < 1)
{
errField.Type = SacsHierarchyItem.ValidValue.Invalid;
return SetErrorState("invalid type");
}
// Stock Level Source.
if ((int)data.Source < 1)
{
errField.Source = SacsHierarchyItem.ValidValue.Invalid;
return SetErrorState("invalid source");
}
// Bays.
if (errField.Bay1 != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Bay1, "bay 1", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.StockLevel_Bay1)))
{
errField.Bay1 = SacsHierarchyItem.ValidValue.Invalid;
return false;
}
if (errField.Bay2 != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Bay2, "bay 2", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.StockLevel_Bay2)))
{
errField.Bay2 = SacsHierarchyItem.ValidValue.Invalid;
return false;
}
if (errField.Bay3 != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Bay3, "bay 3", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.StockLevel_Bay3)))
{
errField.Bay3 = SacsHierarchyItem.ValidValue.Invalid;
return false;
}
// Notes.
if (errField.Notes != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Notes, "notes", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.StockLevel_Notes)))
{
errField.Notes = SacsHierarchyItem.ValidValue.Invalid;
return false;
}
if (errField.Status != SacsHierarchyItem.ValidValue.Ignore)
{
if (!IsValidValue(data.StatusCode, "status", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.StockLevel_Status), true, true))
{
errField.Status = SacsHierarchyItem.ValidValue.Invalid;
return false;
}
if (!SbmStockLevel.GetValidStatusesByType(data.Type).Contains(data.Status))
{
errField.Status = SacsHierarchyItem.ValidValue.Invalid;
return SetErrorState(ErrorMessage.InvalidStatus);
}
}
return true;
}
//-------------------------------------------------------------------
// Item database interface.
public abstract bool InsertStockLevel(SbmStockLevel stockLevel, DbUpdateInfo dbUpdateInfo);
public abstract bool UpdateStockLevel(SbmStockLevel stockLevel, DbUpdateInfo dbUpdateInfo);
public virtual bool StockLevelCanBeDeleted(SbmStockLevel stockLevel)
{
ClearErrorState();
return true;
}
public abstract bool DeleteStockLevel(SbmStockLevel stockLevel, DbUpdateInfo dbUpdateInfo);
//-------------------------------------------------------------------
// Item list.
public abstract ColumnDfn GetStockLevelColumnDfn(SbmStockLevel.Column columnId, String caption = "", int width = 0);
public abstract List<String> GetStockLevelQueryFilter(SbmStockLevel.Params prm);
public abstract long GetStockLevelCount(SbmStockLevel.Params prm);
public abstract List<SbmStockLevel> GetStockLevelList(SbmStockLevel.Params prm);
public abstract DbResultSet ExecuteStockLevelQuery(List<ColumnDfn> columns, SbmStockLevel.Params prm);
//-------------------------------------------------------------------
// Data values.
public DataValue GetStockLevelDataValue(ColumnDfn column, NamedValue.Map values)
{
DataValue value = new DataValue();
switch ((SbmStockLevel.Column)column.Id)
{
//-----------------------------------------------------------
// Type Desc.
case SbmStockLevel.Column.Type_Desc:
{
Sbm.StockLevelType type = (Sbm.StockLevelType)values.GetLong(column.DataName);
value = new DataValue(Internals.GetSystemCodes(Sbm.SystemCode.StockLevelType).GetDescForType(type, $"{type}"));
break;
}
//-----------------------------------------------------------
// Source Desc.
case SbmStockLevel.Column.Source_Desc:
{
Sbm.StockLevelSource source = (Sbm.StockLevelSource)values.GetLong(column.DataName);
value = new DataValue(Internals.GetSystemCodes(Sbm.SystemCode.StockLevelSource).GetDescForType(source, $"{source}"));
break;
}
//-----------------------------------------------------------
// Notes.
case SbmStockLevel.Column.Notes:
value = new DataValue(SacsHierarchyItem.FormatForDisplay(values.GetValue(column.DataName).ToString(), 200));
break;
// Status.
case SbmStockLevel.Column.Status_Desc:
case SbmStockLevel.Column.Status_Ind:
{
String statusCode = values.GetValue(column.DataName).ToString();
SaStatus status = SacsSystem.GetStatusForCode(statusCode);
if (column.Id == (int)SbmStockLevel.Column.Status_Desc)
value = new DataValue(SacsSystem.GetStatusDescForCode(statusCode));
else if (column.Id == (int)SbmStockLevel.Column.Status_Ind)
value = new DataValue(SbmStockLevel.GetStatusTriState(status));
break;
}
//-----------------------------------------------------------
default:
value = values.GetValue(column.DataName);
break;
}
return value;
}
//-------------------------------------------------------------------
}
//=======================================================================
}