230 lines
9.3 KiB
C#
230 lines
9.3 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
|
|
{
|
|
//=======================================================================
|
|
// Commodity Manager - Container.
|
|
//=======================================================================
|
|
partial class SbmCommodityMgr
|
|
{
|
|
//-------------------------------------------------------------------
|
|
// Utilities.
|
|
|
|
//-------------------------------------------------------------------
|
|
// Retrieve individual containers.
|
|
//-------------------------------------------------------------------
|
|
// Container exists.
|
|
public bool ContainerExistsById(SysId containerId)
|
|
{
|
|
ClearErrorState();
|
|
if (!SysId.IsValid(containerId)) return false;
|
|
SbmContainer.Params prmContainer = new SbmContainer.Params();
|
|
prmContainer.IdsIncluded.Add(containerId);
|
|
return GetContainerCount(prmContainer) == 1;
|
|
}
|
|
|
|
public bool ContainerExistsByReference(Sbm.ContainerCategory containerCategory, Sbm.ContainerType containerType, String reference)
|
|
{
|
|
ClearErrorState();
|
|
if ((int)containerCategory < 1 && (int)containerType < 1 && StringUtil.IsEmpty(reference)) return false;
|
|
SbmContainer.Params prmContainer = new SbmContainer.Params();
|
|
prmContainer.ContainerCategory = containerCategory;
|
|
prmContainer.ContainerType = containerType;
|
|
prmContainer.Reference = reference;
|
|
prmContainer.ContainerType = Sbm.ContainerType.Any;
|
|
return GetContainerCount(prmContainer) == 1;
|
|
}
|
|
|
|
//-------------------------------------------------------------------
|
|
// Get containers.
|
|
public abstract SbmContainer GetContainer(SbmContainer.Params prm);
|
|
|
|
public SbmContainer GetContainerById(SysId containerId)
|
|
{
|
|
ClearErrorState();
|
|
if (!SysId.IsValid(containerId)) return null;
|
|
SbmContainer.Params prmContainer = new SbmContainer.Params();
|
|
prmContainer.IdsIncluded.Add(containerId);
|
|
return GetContainer(prmContainer);
|
|
}
|
|
|
|
public SbmContainer GetContainerByReference(Sbm.ContainerCategory containerCategory, Sbm.ContainerType containerType, String reference)
|
|
{
|
|
ClearErrorState();
|
|
if ((int)containerCategory < 1 && (int)containerType < 1 && StringUtil.IsEmpty(reference)) return null;
|
|
SbmContainer.Params prmContainer = new SbmContainer.Params();
|
|
prmContainer.ContainerCategory = containerCategory;
|
|
prmContainer.ContainerType = containerType;
|
|
prmContainer.Reference = reference;
|
|
prmContainer.ContainerType = Sbm.ContainerType.Any;
|
|
return GetContainer(prmContainer);
|
|
}
|
|
|
|
//-------------------------------------------------------------------
|
|
// Create containers.
|
|
public abstract SbmContainer CreateContainer(Sbm.ContainerCategory containerCategory, Sbm.ContainerType containerType);
|
|
|
|
//-------------------------------------------------------------------
|
|
// Validate Container data.
|
|
public bool IsValidContainer(SbmContainer container)
|
|
{
|
|
ClearErrorState();
|
|
if (container == null) return SetErrorState(ErrorMessage.ItemNotSpecified);
|
|
return IsValidContainerData(container.GetData(), new SbmContainer.ErrField());
|
|
}
|
|
public virtual bool IsValidContainerData(SbmContainer.Data data, SbmContainer.ErrField errField)
|
|
{
|
|
ClearErrorState();
|
|
//Validate the identity.
|
|
if (!SysId.IsValid(data.AffiliateIdOwner))
|
|
{
|
|
errField.AffiliateIdOwner = SacsHierarchyItem.ValidValue.Invalid;
|
|
return SetErrorState("invalid owner");
|
|
}
|
|
if ((int)data.ContainerCategory < 1)
|
|
{
|
|
errField.ContainerCategory = SacsHierarchyItem.ValidValue.Invalid;
|
|
return SetErrorState("invalid category");
|
|
}
|
|
if ((int)data.ContainerType < 1)
|
|
{
|
|
errField.ContainerType = SacsHierarchyItem.ValidValue.Invalid;
|
|
return SetErrorState("invalid type");
|
|
}
|
|
if (!SysId.IsValid(data.AssIdSupplier))
|
|
{
|
|
errField.AssIdSupplier = SacsHierarchyItem.ValidValue.Invalid;
|
|
return SetErrorState("invalid association supplier");
|
|
}
|
|
if (!SysId.IsValid(data.AssIdCustomer))
|
|
{
|
|
errField.AssIdCustomer = SacsHierarchyItem.ValidValue.Invalid;
|
|
return SetErrorState("invalid association customer");
|
|
}
|
|
|
|
// Validate the text attributes.
|
|
if (errField.Reference != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Reference, "reference", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Container_Reference), true))
|
|
{
|
|
errField.Reference = SacsHierarchyItem.ValidValue.Invalid;
|
|
return false;
|
|
}
|
|
if (errField.DescBrief != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.DescBrief, "description brief", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Container_DescBrief), true))
|
|
{
|
|
errField.DescBrief = SacsHierarchyItem.ValidValue.Invalid;
|
|
return false;
|
|
}
|
|
if (errField.TagId != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.TagId.ToString(), "tag Id", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Container_TagId), true))
|
|
{
|
|
errField.TagId = SacsHierarchyItem.ValidValue.Invalid;
|
|
return SetErrorState("invalid TagId");
|
|
}
|
|
if (errField.Notes != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Notes, "notes", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Container_Notes)))
|
|
{
|
|
errField.Notes = SacsHierarchyItem.ValidValue.Invalid;
|
|
return false;
|
|
}
|
|
if (errField.Status != SacsHierarchyItem.ValidValue.Ignore)
|
|
{
|
|
if (!IsValidValue(data.StatusCode, "status", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Container_Status), true, true))
|
|
{
|
|
errField.Status = SacsHierarchyItem.ValidValue.Invalid;
|
|
return false;
|
|
}
|
|
if (!SbmContainer.ContainerStatuses.Contains(data.Status))
|
|
{
|
|
errField.Status = SacsHierarchyItem.ValidValue.Invalid;
|
|
return SetErrorState(ErrorMessage.InvalidStatus);
|
|
}
|
|
}
|
|
return true;
|
|
}
|
|
|
|
//-------------------------------------------------------------------
|
|
// Container database interface.
|
|
public abstract bool InsertContainer(SbmContainer container, DbUpdateInfo dbUpdateInfo);
|
|
public abstract bool UpdateContainer(SbmContainer container, DbUpdateInfo dbUpdateInfo);
|
|
public virtual bool ContainerCanBeDeleted(SbmContainer container)
|
|
{
|
|
ClearErrorState();
|
|
return true;
|
|
}
|
|
public abstract bool DeleteContainer(SbmContainer container, DbUpdateInfo dbUpdateInfo);
|
|
|
|
//-------------------------------------------------------------------
|
|
// Container list.
|
|
public abstract ColumnDfn GetContainerColumnDfn(SbmContainer.Column columnId, String caption = "", int width = 0);
|
|
public abstract List<String> GetContainerQueryFilter(SbmContainer.Params prm);
|
|
public abstract long GetContainerCount(SbmContainer.Params prm);
|
|
public abstract List<SbmContainer> GetContainerList(SbmContainer.Params prm);
|
|
public abstract DbResultSet ExecuteContainerQuery(List<ColumnDfn> columns, SbmContainer.Params prm);
|
|
|
|
//-------------------------------------------------------------------
|
|
// D a t a V a l u e s
|
|
//-------------------------------------------------------------------
|
|
/// <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 DataValue GetContainerDataValue(ColumnDfn column, NamedValue.Map values)
|
|
{
|
|
DataValue value = new DataValue();
|
|
switch ((SbmContainer.Column)column.Id)
|
|
{
|
|
//-----------------------------------------------------------
|
|
// Container TypeDesc.
|
|
case SbmContainer.Column.Type_Desc:
|
|
{
|
|
Sbm.ContainerType containerType = (Sbm.ContainerType)ContainerTypes.GetTypeForCode(values.GetValue(column.DataName).AsString());
|
|
value = new DataValue(ContainerTypes.GetDescForType(containerType, ((int)containerType).ToString()));
|
|
break;
|
|
}
|
|
|
|
// Container CategoryDesc.
|
|
case SbmContainer.Column.Category_Desc:
|
|
{
|
|
Sbm.ContainerCategory containerCategory = (Sbm.ContainerCategory)values.GetValue(column.DataName).AsLong();
|
|
value = new DataValue(ContainerCategories.GetDescForType(containerCategory, ((int)containerCategory).ToString()));
|
|
break;
|
|
}
|
|
|
|
//-----------------------------------------------------------
|
|
// Notes.
|
|
case SbmContainer.Column.Notes:
|
|
value = new DataValue(SacsHierarchyItem.FormatForDisplay(values.GetValue(column.DataName).ToString(), 200));
|
|
break;
|
|
|
|
// Status.
|
|
case SbmContainer.Column.Status_Desc:
|
|
case SbmContainer.Column.Status_Ind:
|
|
{
|
|
String statusCode = values.GetValue(column.DataName).ToString();
|
|
SaStatus status = SacsSystem.GetStatusForCode(statusCode);
|
|
if (column.Id == (int)SbmContainer.Column.Status_Desc)
|
|
value = new DataValue(SacsSystem.GetStatusDescForCode(statusCode));
|
|
else if (column.Id == (int)SbmContainer.Column.Status_Ind)
|
|
value = new DataValue(SbmContainer.GetStatusTriState(status));
|
|
break;
|
|
}
|
|
|
|
//-----------------------------------------------------------
|
|
default:
|
|
value = values.GetValue(column.DataName);
|
|
break;
|
|
|
|
}
|
|
return value;
|
|
}
|
|
|
|
//-------------------------------------------------------------------
|
|
}
|
|
//=======================================================================
|
|
}
|