Files
Common-VS2019/SacsStandardBase/Base/ReferenceData/SaReferenceDataMgr_Currency.cs
T
2021-05-05 15:36:28 +01:00

154 lines
6.4 KiB
C#

using System;
using System.Collections.Generic;
using Sarand.Net.Standard.Base.Core;
using Sarand.Net.Standard.Base.Bus;
using Sarand.Net.Standard.Base.Dbas;
namespace Sarand.Net.Standard.Base.ReferenceData
{
//=======================================================================
public abstract partial class SaReferenceDataMgr : SacsItemMgr
{
//*******************************************************************
// C u r r e n c i e s
//*******************************************************************
// Create currency.
public abstract SaCurrency CreateCurrency ();
// Retrieve individual currencies.
public abstract bool CurrencyExistsById (SysId id);
public abstract bool CurrencyExistsByCode (String code);
public abstract SaCurrency GetCurrencyById (SysId id);
public abstract SaCurrency GetCurrencyByCode (String code);
public abstract SaCurrency GetCurrency (SaCurrency.Params prm);
//-------------------------------------------------------------------
// Validate currency data.
public bool IsValidCurrency (SaCurrency currency)
{
ClearErrorState();
if (currency == null) return SetErrorState(ErrorMessage.ItemNotSpecified);
return IsValidCurrencyData(currency.GetData(), new SaCurrency.ErrField());
}
public virtual bool IsValidCurrencyData (SaCurrency.Data data, SaCurrency.ErrField errField)
{
ClearErrorState();
// Currency properties.
if (errField.Code != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Code, "code", (long)SaReferenceDataDbDfn.GetColTextLen(SaReferenceDataDbDfn.ColumnIdx.Currency_Code), true))
{
errField.Code = SacsHierarchyItem.ValidValue.Invalid;
return false;
}
if (errField.Name != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Name, "name", (long)SaReferenceDataDbDfn.GetColTextLen(SaReferenceDataDbDfn.ColumnIdx.Currency_Name), true))
{
errField.Name = SacsHierarchyItem.ValidValue.Invalid;
return false;
}
if (errField.Division != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Division, "division", (long)SaReferenceDataDbDfn.GetColTextLen(SaReferenceDataDbDfn.ColumnIdx.Currency_Division)))
{
errField.Division = SacsHierarchyItem.ValidValue.Invalid;
return false;
}
if (errField.Symbol != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Symbol, "symbol", (long)SaReferenceDataDbDfn.GetColTextLen(SaReferenceDataDbDfn.ColumnIdx.Currency_Symbol), true))
{
errField.Symbol = SacsHierarchyItem.ValidValue.Invalid;
return false;
}
if (errField.Decimals != SacsHierarchyItem.ValidValue.Ignore && (data.Decimals < 0 || data.Decimals > 4))
{
errField.Decimals = SacsHierarchyItem.ValidValue.Invalid;
return SetErrorState("Currency decimals must be between 0 and 4");
}
// Validate associated data.
if (errField.RegionId != SacsHierarchyItem.ValidValue.Ignore && SysId.IsValid(data.RegionId))
{
if (!RegionExistsById(data.RegionId))
{
errField.RegionId = SacsHierarchyItem.ValidValue.Invalid;
return SetErrorState("Currency's region not found");
}
}
if (errField.CurrencyIdPrimary != SacsHierarchyItem.ValidValue.Ignore && SysId.IsValid(data.CurrencyIdPrimary))
{
if (!CurrencyExistsById(data.CurrencyIdPrimary))
{
errField.CurrencyIdPrimary = SacsHierarchyItem.ValidValue.Invalid;
return SetErrorState("Currency's primary not found");
}
}
return true;
}
//-------------------------------------------------------------------
// Currency database interface.
public abstract bool InsertCurrency (SaCurrency currency, DbUpdateInfo dbUpdateInfo);
public abstract bool UpdateCurrency (SaCurrency currency, DbUpdateInfo dbUpdateInfo);
public virtual bool CurrencyCanBeDeleted (SaCurrency currency)
{
ClearErrorState();
if (currency == null) return SetErrorState("Item not specified");
if (currency.HasDependentCurrencies()) return SetErrorState("Has dependent currencies");
return true;
}
public abstract bool DeleteCurrency (SaCurrency currency, DbUpdateInfo dbUpdateInfo);
//-------------------------------------------------------------------
// Currency list.
public abstract ColumnDfn GetCurrencyColumnDfn (SaCurrency.Column columnId, String caption = "", int width = 0);
public abstract List<String> GetCurrencyQueryFilter (SaCurrency.Params prm);
public abstract long GetCurrencyCount (SaCurrency.Params prm);
public abstract List<SaCurrency> GetCurrencyList (SaCurrency.Params prm);
public abstract DbResultSet ExecuteCurrencyQuery (List<ColumnDfn> columns, SaCurrency.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 GetCurrencyDataValue (ColumnDfn column, NamedValue.Map values)
{
DataValue value = new DataValue();
/*
switch ((SaCurrency.Column)column.Id)
{
//-----------------------------------------------------------
// Notes.
case SaCurrency.Column.Notes:
value = new DataValue(SacsHierarchyItem.FormatForDisplay(values.GetValue(column.DataName).ToString(), 200));
break;
//-----------------------------------------------------------
// Status.
case SaCurrency.Column.Status_Desc:
case SaCurrency.Column.Status_Ind:
{
String statusCode = values.GetValue(column.DataName).ToString();
SaStatus status = SacsSystem.GetStatusForCode(statusCode);
if (column.Id == (int)SaCurrency.Column.Status_Desc)
{
String statusDesc = SacsSystem.GetStatusDescForCode(statusCode);
value = new DataValue(statusDesc);
}
else if (column.Id == (int)SaCurrency.Column.Status_Ind)
{
DataValue.TriStateType triState = DataValue.TriStateType.Unknown;
if (status == SaStatus.Active)
triState = DataValue.TriStateType.Green;
else if (status == SaStatus.Inactive)
triState = DataValue.TriStateType.Red;
value = new DataValue(triState);
}
}
break;
//-----------------------------------------------------------
}
*/
return value;
}
//-------------------------------------------------------------------
}
//=======================================================================
}