Files
Common-VS2019/SacsBusinessBase/Base/ReferenceData/SaReferenceDataMgr_UnitMeasure.cs
T

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;
}
//-------------------------------------------------------------------
}
//=======================================================================
}