189 lines
8.2 KiB
C#
189 lines
8.2 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using Sarand.Net.Standard.Base.App;
|
|
using Sarand.Net.Standard.Base.Core;
|
|
using Sarand.Net.Standard.Base.Bus;
|
|
using Sarand.Net.Standard.Base.Dbas;
|
|
|
|
namespace Sarand.Net.Standard.Base.ReferenceData
|
|
{
|
|
//=======================================================================
|
|
// Reference Data manager - Units of Measure.
|
|
//=======================================================================
|
|
public abstract partial class SaReferenceDataMgr : SacsItemMgr
|
|
{
|
|
//-------------------------------------------------------------------
|
|
// Utilities.
|
|
|
|
//-------------------------------------------------------------------
|
|
// Retrieve individual unitMeasures.
|
|
public abstract bool UnitMeasureExistsById(SysId id);
|
|
public abstract bool UnitMeasureExistsByCode(String code);
|
|
public abstract SaUnitMeasure GetUnitMeasureById(SysId id);
|
|
public abstract SaUnitMeasure GetUnitMeasureByCode(String code);
|
|
public abstract SaUnitMeasure GetUnitMeasure(SaUnitMeasure.Params prm);
|
|
|
|
// Create unitMeasure.
|
|
public abstract SaUnitMeasure CreateUnitMeasure();
|
|
|
|
//-------------------------------------------------------------------
|
|
// Validate unitMeasure data.
|
|
public bool IsValidUnitMeasure(SaUnitMeasure unitMeasure)
|
|
{
|
|
ClearErrorState();
|
|
if (unitMeasure == null) return SetErrorState(ErrorMessage.ItemNotSpecified);
|
|
return IsValidUnitMeasureData(unitMeasure.GetData(), new SaUnitMeasure.ErrField());
|
|
}
|
|
public virtual bool IsValidUnitMeasureData(SaUnitMeasure.Data data, SaUnitMeasure.ErrField errField)
|
|
{
|
|
ClearErrorState();
|
|
// UnitMeasure properties.
|
|
if (errField.Category != SacsHierarchyItem.ValidValue.Ignore && (short)data.Category < 1)
|
|
{
|
|
errField.Category = SacsHierarchyItem.ValidValue.Invalid;
|
|
return false;
|
|
}
|
|
if (errField.UnitType != SacsHierarchyItem.ValidValue.Ignore && (short)data.UnitType < 1)
|
|
{
|
|
if ((int)data.UnitType < 1)
|
|
{
|
|
errField.UnitType = SacsHierarchyItem.ValidValue.Invalid;
|
|
return SetErrorState("UnitMeasure type must be supplied");
|
|
}
|
|
}
|
|
if (errField.Code != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Code, "code", (long)SaReferenceDataDbDfn.GetColTextLen(SaReferenceDataDbDfn.ColumnIdx.UnitMeasure_Code), true))
|
|
{
|
|
errField.Code = SacsHierarchyItem.ValidValue.Invalid;
|
|
return false;
|
|
}
|
|
if (errField.Abbr != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Abbr, "abbr", (long)SaReferenceDataDbDfn.GetColTextLen(SaReferenceDataDbDfn.ColumnIdx.UnitMeasure_Abbr), true))
|
|
{
|
|
errField.Abbr = SacsHierarchyItem.ValidValue.Invalid;
|
|
return false;
|
|
}
|
|
if (errField.Single != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Single, "single", (long)SaReferenceDataDbDfn.GetColTextLen(SaReferenceDataDbDfn.ColumnIdx.UnitMeasure_Single), true))
|
|
{
|
|
errField.Single = SacsHierarchyItem.ValidValue.Invalid;
|
|
return false;
|
|
}
|
|
if (errField.Multiple != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Multiple, "multiple", (long)SaReferenceDataDbDfn.GetColTextLen(SaReferenceDataDbDfn.ColumnIdx.UnitMeasure_Multiple), true))
|
|
{
|
|
errField.Multiple = SacsHierarchyItem.ValidValue.Invalid;
|
|
return false;
|
|
}
|
|
if (errField.EquivalencyValue != SacsHierarchyItem.ValidValue.Ignore && data.EquivalencyValue < 1)
|
|
{
|
|
errField.EquivalencyValue = SacsHierarchyItem.ValidValue.Invalid;
|
|
return SetErrorState("UnitMeasure equal value must be supplied");
|
|
}
|
|
if (errField.UomIdEquivalency != SacsHierarchyItem.ValidValue.Ignore && data.UomIdEquivalency < 1)
|
|
{
|
|
errField.UomIdEquivalency = SacsHierarchyItem.ValidValue.Invalid;
|
|
return SetErrorState("UnitMeasure Id equal must be supplied");
|
|
}
|
|
if (errField.EquivalencyAlgorythm != SacsHierarchyItem.ValidValue.Ignore && data.EquivalencyAlgorythm < 1)
|
|
{
|
|
errField.EquivalencyAlgorythm = SacsHierarchyItem.ValidValue.Invalid;
|
|
return SetErrorState("UnitMeasure equal algorythm must be supplied");
|
|
}
|
|
if (errField.UomIdRef1 != SacsHierarchyItem.ValidValue.Ignore && data.UomIdRef1 < 1)
|
|
{
|
|
errField.UomIdRef1 = SacsHierarchyItem.ValidValue.Invalid;
|
|
return SetErrorState("UnitMeasure reference1 must be supplied");
|
|
}
|
|
if (errField.UomIdRef2 != SacsHierarchyItem.ValidValue.Ignore && data.UomIdRef2 < 1)
|
|
{
|
|
errField.UomIdRef2 = SacsHierarchyItem.ValidValue.Invalid;
|
|
return SetErrorState("UnitMeasure reference2 must be supplied");
|
|
}
|
|
if (errField.UomIdRef3 != SacsHierarchyItem.ValidValue.Ignore && data.UomIdRef3 < 1)
|
|
{
|
|
errField.UomIdRef3 = SacsHierarchyItem.ValidValue.Invalid;
|
|
return SetErrorState("UnitMeasure reference1 must be supplied");
|
|
}
|
|
// Common properties.
|
|
if (errField.Notes != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Notes, "notes", (long)SaReferenceDataDbDfn.GetColTextLen(SaReferenceDataDbDfn.ColumnIdx.UnitMeasure_Notes)))
|
|
{
|
|
errField.Notes = SacsHierarchyItem.ValidValue.Invalid;
|
|
return false;
|
|
}
|
|
if (errField.Status != SacsHierarchyItem.ValidValue.Ignore && !SaUnitMeasure.ValidStatuses.Contains(data.Status))
|
|
{
|
|
errField.Status = SacsHierarchyItem.ValidValue.Invalid;
|
|
return SetErrorState(ErrorMessage.InvalidStatus);
|
|
}
|
|
// Validate associated data.
|
|
/*
|
|
if (errField. != SacsHierarchyItem.ValidValue.Ignore && SysId.IsValid(data.UnitMeasureIdParent))
|
|
{
|
|
if (!UnitMeasureExistsById(data.UnitMeasureIdParent))
|
|
{
|
|
errField.UnitMeasureIdParent = SacsHierarchyItem.ValidValue.Invalid;
|
|
return SetErrorState("UnitMeasure's parent not found");
|
|
}
|
|
}
|
|
*/
|
|
return true;
|
|
}
|
|
|
|
//-------------------------------------------------------------------
|
|
// UnitMeasure database interface.
|
|
public abstract bool InsertUnitMeasure(SaUnitMeasure unitMeasure, DbUpdateInfo dbUpdateInfo);
|
|
public abstract bool UpdateUnitMeasure(SaUnitMeasure unitMeasure, DbUpdateInfo dbUpdateInfo);
|
|
public virtual bool UnitMeasureCanBeDeleted(SaUnitMeasure unitMeasure)
|
|
{
|
|
ClearErrorState();
|
|
if (unitMeasure.HasDependentUnitsOfMeasure()) return SetErrorState("Has dependent UOMs");
|
|
return true;
|
|
}
|
|
public abstract bool DeleteUnitMeasure(SaUnitMeasure unitMeasure, DbUpdateInfo dbUpdateInfo);
|
|
|
|
//-------------------------------------------------------------------
|
|
// UnitMeasure list.
|
|
public abstract ColumnDfn GetUnitMeasureColumnDfn(SaUnitMeasure.Column columnId, String caption = "", int width = 0);
|
|
public abstract List<String> GetUnitMeasureQueryFilter(SaUnitMeasure.Params prm);
|
|
public abstract long GetUnitMeasureCount(SaUnitMeasure.Params prm);
|
|
public abstract List<SaUnitMeasure> GetUnitMeasureList(SaUnitMeasure.Params prm);
|
|
public abstract DbResultSet ExecuteUnitMeasureQuery(List<ColumnDfn> columns, SaUnitMeasure.Params prm);
|
|
|
|
//-------------------------------------------------------------------
|
|
/// <summary>
|
|
/// Extract and format result set data value where specific handling is required.
|
|
/// <para>Where response is an invalid data value, format value using column.FormatValue(values).</para>
|
|
/// </summary>
|
|
public virtual DataValue GetUnitMeasureDataValue(ColumnDfn column, NamedValue.Map values)
|
|
{
|
|
DataValue value = new DataValue();
|
|
switch ((SaUnitMeasure.Column)column.Id)
|
|
{
|
|
|
|
//-----------------------------------------------------------
|
|
// Notes.
|
|
case SaUnitMeasure.Column.Notes:
|
|
value = new DataValue(SacsHierarchyItem.FormatForDisplay(values.GetValue(column.DataName).ToString(), 200));
|
|
break;
|
|
|
|
//-----------------------------------------------------------
|
|
// Status.
|
|
case SaUnitMeasure.Column.Status_Desc:
|
|
case SaUnitMeasure.Column.Status_Ind:
|
|
{
|
|
String statusCode = values.GetValue(column.DataName).ToString();
|
|
SaStatus status = SacsSystem.GetStatusForCode(statusCode);
|
|
if (column.Id == (int)SaUnitMeasure.Column.Status_Desc)
|
|
value = new DataValue(SacsSystem.GetStatusDescForCode(statusCode));
|
|
else if (column.Id == (int)SaUnitMeasure.Column.Status_Ind)
|
|
value = new DataValue(SaUnitMeasure.GetStatusTriState(status));
|
|
}
|
|
break;
|
|
|
|
//-----------------------------------------------------------
|
|
}
|
|
return value;
|
|
}
|
|
|
|
//-------------------------------------------------------------------
|
|
}
|
|
//=======================================================================
|
|
}
|