207 lines
7.5 KiB
C#
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;
|
|
}
|
|
|
|
//-------------------------------------------------------------------
|
|
}
|
|
//=======================================================================
|
|
}
|