727 lines
23 KiB
C#
727 lines
23 KiB
C#
using Sarand.BusinessMgr.Net.Standard.Base.App;
|
|
using Sarand.BusinessMgr.Net.Standard.Base.Core;
|
|
using Sarand.Net.Standard.Base.Bus;
|
|
using Sarand.Net.Standard.Base.Core;
|
|
using Sarand.Net.Standard.Base.Utils;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
|
|
namespace Sarand.BusinessMgr.Net.Standard.Base.Bus
|
|
{
|
|
//=======================================================================
|
|
public abstract class SbmConstituent : SbmHierarchyItem
|
|
{
|
|
//-------------------------------------------------------------------
|
|
// Columns.
|
|
public enum Column
|
|
{
|
|
Hidden,
|
|
Pos,
|
|
Id,
|
|
// Constituent.
|
|
AssocId, AffIdOwner, AffIdTarget,
|
|
TransId, ReqntId, ConstId,
|
|
AssetId, ProcessId,
|
|
Type, Type_Desc,
|
|
DescBrief, DescOutline, DescDetail,
|
|
Owner_Name, Target_Name, Assoc_Code, Assoc_Target_Name,
|
|
Trans_Ref, Trans_RefExt, Trans_DescBrief,
|
|
Reqnt_DescBrief,
|
|
Reqnt_JobNumber,
|
|
Reqnt_ProductCode,
|
|
Const_DescBrief,
|
|
Category,
|
|
Reference,
|
|
DueInd, // Due indicator - green, amber, red
|
|
Effective_Date,
|
|
Effective_Time,
|
|
Started_Date,
|
|
Started_DateFmt, // Using default date format: 'D-MMM-YYYY' //
|
|
Started_Time,
|
|
Started_Day,
|
|
Required_Date,
|
|
Required_DateFmt, // Using default date format: 'D-MMM-YYYY' //
|
|
Required_Time,
|
|
Required_CssClass, // overdue (<today), due (today or tomorrow), notdue (otherwise).
|
|
Required_Today, // Today, Tomorrow, This week, Last week, Next week, This month, Last month, 'MMM-YYYY' otherwise.
|
|
Completed_Date,
|
|
Completed_DateFmt, // Using default date format: 'D-MMM-YYYY' //
|
|
Completed_Time,
|
|
TaskNumber,
|
|
Priority,
|
|
Quantity,
|
|
Hours,
|
|
Uom_Single,
|
|
UnitCost,
|
|
AmountEst,
|
|
AmountNet,
|
|
TaxRate,
|
|
AmountTax,
|
|
AmountTot,
|
|
// Common Properties.
|
|
Notes,
|
|
Flag,
|
|
Status,
|
|
Status_Ind,
|
|
Status_Desc,
|
|
Status_Flag,
|
|
CreateOn_Date,
|
|
UpdateOn_Date,
|
|
}
|
|
|
|
//-------------------------------------------------------------------
|
|
/// <summary>Properties other than common.</summary>
|
|
public class DataProperties
|
|
{
|
|
public SysId AffiliateIdOwner { get; set; } = new SysId();
|
|
public SysId AffiliateIdTarget { get; set; } = new SysId();
|
|
public SysId AssociationId { get; set; } = new SysId();
|
|
public SysId TransactionId { get; set; } = new SysId();
|
|
public SysId RequirementId { get; set; } = new SysId();
|
|
public SysId ConstituentId { get; set; } = new SysId();
|
|
public SysId AssetId { get; set; } = new SysId();
|
|
public SysId ProcessId { get; set; } = new SysId();
|
|
public SysId AssociationIdContractor { get; set; } = new SysId();
|
|
//-------------------------------------------------------------------
|
|
public Sbm.ConstituentType ConstituentType { get; set; } = Sbm.ConstituentType.Unknown;
|
|
public String Ref { get; set; } = "";
|
|
public short Seq { get; set; } = 0;
|
|
public DateTime Effective { get; set; } = DateTime.MinValue;
|
|
public DateTime Required { get; set; } = DateTime.MinValue;
|
|
public DateTime Started { get; set; } = DateTime.MinValue;
|
|
public DateTime Completed { get; set; } = DateTime.MinValue;
|
|
public String DescBrief { get; set; } = "";
|
|
public String DescOutline { get; set; } = "";
|
|
public String DescDetail { get; set; } = "";
|
|
public String TaskNumber { get; set; } = "";
|
|
public short Priority { get; set; } = 0;
|
|
public String Category { get; set; } = "";
|
|
public String Reference { get; set; } = "";
|
|
public decimal Quantity { get; set; } = 0.0m;
|
|
public SysId UomId { get; set; } = new SysId();
|
|
public decimal UnitCost { get; set; } = 0.0m;
|
|
//-------------------------------------------------------------------
|
|
public decimal AmountEst { get; set; } = 0.0m;
|
|
public decimal AmountNet { get; set; } = 0.0m;
|
|
public SysId TaxCodeId { get; set; } = new SysId();
|
|
public decimal TaxRate { get; set; } = 0.0m;
|
|
public decimal AmountTax { get; set; } = 0.0m;
|
|
public decimal AmountTot { get; set; } = 0.0m;
|
|
public decimal TaxRateRebate { get; set; } = 0.0m;
|
|
public decimal AmountTaxRebate { get; set; } = 0.0m;
|
|
|
|
public StatusCat CategoryForStatus { get; set; }
|
|
}
|
|
|
|
// Data.
|
|
public new class Data : SacsHierarchyItem.Data
|
|
{
|
|
// Data members.
|
|
private readonly DataProperties data = new DataProperties();
|
|
// Construction.
|
|
public Data()
|
|
{
|
|
Status = DefaultStatus;
|
|
}
|
|
public SysId AffiliateIdOwner
|
|
{
|
|
get { return data.AffiliateIdOwner; }
|
|
set { CheckChanged(data.AffiliateIdOwner, value); data.AffiliateIdOwner = value; }
|
|
}
|
|
public SysId AffiliateIdTarget
|
|
{
|
|
get { return data.AffiliateIdTarget; }
|
|
set { CheckChanged(data.AffiliateIdTarget, value); data.AffiliateIdTarget = value; }
|
|
}
|
|
public SysId AssociationId
|
|
{
|
|
get { return data.AssociationId; }
|
|
set { CheckChanged(data.AssociationId, value); data.AssociationId = value; }
|
|
}
|
|
public SysId TransactionId
|
|
{
|
|
get { return data.TransactionId; }
|
|
set { CheckChanged(data.TransactionId, value); data.TransactionId = value; }
|
|
}
|
|
public SysId RequirementId
|
|
{
|
|
get { return data.RequirementId; }
|
|
set { CheckChanged(data.RequirementId, value); data.RequirementId = value; }
|
|
}
|
|
public SysId ConstituentId
|
|
{
|
|
get { return data.ConstituentId; }
|
|
set { CheckChanged(data.ConstituentId, value); data.ConstituentId = value; }
|
|
}
|
|
public SysId AssetId
|
|
{
|
|
get { return data.AssetId; }
|
|
set { CheckChanged(data.AssetId, value); data.AssetId = value; }
|
|
}
|
|
public SysId ProcessId
|
|
{
|
|
get { return data.ProcessId; }
|
|
set { CheckChanged(data.ProcessId, value); data.ProcessId = value; }
|
|
}
|
|
public SysId AssociationIdContractor
|
|
{
|
|
get { return data.AssociationIdContractor; }
|
|
set { CheckChanged(data.AssociationIdContractor, value); data.AssociationIdContractor = value; }
|
|
}
|
|
//-------------------------------------------------------------------
|
|
public Sbm.ConstituentType ConstituentType
|
|
{
|
|
get { return data.ConstituentType; }
|
|
set { CheckChanged((int)data.ConstituentType, (int)value); data.ConstituentType = value; }
|
|
}
|
|
public short Seq
|
|
{
|
|
get { return data.Seq; }
|
|
set { CheckChanged(data.Seq, value); data.Seq = value; }
|
|
}
|
|
public DateTime Effective
|
|
{
|
|
get { return data.Effective; }
|
|
set { CheckChanged(data.Effective, value); data.Effective = value; }
|
|
}
|
|
public DateTime Required
|
|
{
|
|
get { return data.Required; }
|
|
set { CheckChanged(data.Required, value); data.Required = value; }
|
|
}
|
|
public DateTime Started
|
|
{
|
|
get { return data.Started; }
|
|
set { CheckChanged(data.Started, value); data.Started = value; }
|
|
}
|
|
public DateTime Completed
|
|
{
|
|
get { return data.Completed; }
|
|
set { CheckChanged(data.Completed, value); data.Completed = value; }
|
|
}
|
|
public String DescBrief
|
|
{
|
|
get { return data.DescBrief; }
|
|
set { CheckChanged(data.DescBrief, value); data.DescBrief = value; }
|
|
}
|
|
public String DescOutline
|
|
{
|
|
get { return data.DescOutline; }
|
|
set { CheckChanged(data.DescOutline, value); data.DescOutline = value; }
|
|
}
|
|
public String DescDetail
|
|
{
|
|
get { return data.DescDetail; }
|
|
set { CheckChanged(data.DescDetail, value); data.DescDetail = value; }
|
|
}
|
|
public String TaskNumber
|
|
{
|
|
get { return data.TaskNumber; }
|
|
set { CheckChanged(data.TaskNumber, value); data.TaskNumber = value; }
|
|
}
|
|
public short Priority
|
|
{
|
|
get { return data.Priority; }
|
|
set { CheckChanged(data.Priority, value); data.Priority = value; }
|
|
}
|
|
public String Category
|
|
{
|
|
get { return data.Category; }
|
|
set { CheckChanged(data.Category, value); data.Category = value; }
|
|
}
|
|
public String Reference
|
|
{
|
|
get { return data.Reference; }
|
|
set { CheckChanged(data.Reference, value); data.Reference = value; }
|
|
}
|
|
public decimal Quantity
|
|
{
|
|
get { return data.Quantity; }
|
|
set { CheckChanged(data.Quantity, value); data.Quantity = value; }
|
|
}
|
|
public SysId UomId
|
|
{
|
|
get { return data.UomId; }
|
|
set { CheckChanged(data.UomId, value); data.UomId = value; }
|
|
}
|
|
public decimal UnitCost
|
|
{
|
|
get { return data.UnitCost; }
|
|
set { CheckChanged(data.UnitCost, value); data.UnitCost = value; }
|
|
}
|
|
//-------------------------------------------------------------------
|
|
public decimal AmountEst
|
|
{
|
|
get { return data.AmountEst; }
|
|
set { CheckChanged(data.AmountEst, value); data.AmountEst = value; }
|
|
}
|
|
public decimal AmountNet
|
|
{
|
|
get { return data.AmountNet; }
|
|
set { CheckChanged(data.AmountNet, value); data.AmountNet = value; }
|
|
}
|
|
public SysId TaxCodeId
|
|
{
|
|
get { return data.TaxCodeId; }
|
|
set { CheckChanged(data.TaxCodeId, value); data.TaxCodeId = value; }
|
|
}
|
|
public decimal TaxRate
|
|
{
|
|
get { return data.TaxRate; }
|
|
set { CheckChanged(data.TaxRate, value); data.TaxRate = value; }
|
|
}
|
|
public decimal AmountTax
|
|
{
|
|
get { return data.AmountTax; }
|
|
set { CheckChanged(data.AmountTax, value); data.AmountTax = value; }
|
|
}
|
|
public decimal AmountTot
|
|
{
|
|
get { return data.AmountTot; }
|
|
set { CheckChanged(data.AmountTot, value); data.AmountTot = value; }
|
|
}
|
|
public decimal TaxRateRebate
|
|
{
|
|
get { return data.TaxRateRebate; }
|
|
set { CheckChanged(data.TaxRateRebate, value); data.TaxRateRebate = value; }
|
|
}
|
|
public decimal AmountTaxRebate
|
|
{
|
|
get { return data.AmountTaxRebate; }
|
|
set { CheckChanged(data.AmountTaxRebate, value); data.AmountTaxRebate = value; }
|
|
}
|
|
|
|
public SbmConstituent.StatusCat CategoryForStatus(SaStatus saStatus)
|
|
{
|
|
SbmConstituent.StatusCat constStatusCat = SbmConstituent.StatusCat.Open;
|
|
switch (saStatus)
|
|
{
|
|
case SaStatus.Completed:
|
|
case SaStatus.Cancelled:
|
|
constStatusCat = SbmConstituent.StatusCat.Closed;
|
|
break;
|
|
}
|
|
return constStatusCat;
|
|
}
|
|
|
|
internal void PopulateFrom(Data data)
|
|
{
|
|
AffiliateIdOwner = data.AffiliateIdOwner;
|
|
AffiliateIdTarget = data.AffiliateIdTarget;
|
|
AssociationId = data.AssociationId;
|
|
TransactionId = data.TransactionId;
|
|
RequirementId = data.RequirementId;
|
|
ConstituentId = data.ConstituentId;
|
|
AssetId = data.AssetId;
|
|
ProcessId = data.ProcessId;
|
|
AssociationIdContractor = data.AssociationIdContractor;
|
|
ConstituentType = data.ConstituentType;
|
|
Seq = data.Seq;
|
|
Effective = data.Effective;
|
|
Required = data.Required;
|
|
Started = data.Started;
|
|
Completed = data.Completed;
|
|
DescBrief = data.DescBrief;
|
|
DescOutline = data.DescOutline;
|
|
DescDetail = data.DescDetail;
|
|
TaskNumber = data.TaskNumber;
|
|
Priority = data.Priority;
|
|
Category = data.Category;
|
|
Reference = data.Reference;
|
|
Quantity = data.Quantity;
|
|
UomId = data.UomId;
|
|
UnitCost = data.UnitCost;
|
|
AmountEst = data.AmountEst;
|
|
AmountNet = data.AmountNet;
|
|
TaxCodeId = data.TaxCodeId;
|
|
TaxRate = data.TaxRate;
|
|
AmountTax = data.AmountTax;
|
|
AmountTot = data.AmountTot;
|
|
TaxRateRebate = data.TaxRateRebate;
|
|
AmountTaxRebate = data.AmountTaxRebate;
|
|
}
|
|
public Data Clone()
|
|
{
|
|
Data data = new Data();
|
|
data.PopulateFrom(this);
|
|
return data;
|
|
}
|
|
}
|
|
|
|
public new class ErrField : SacsHierarchyItem.ErrField
|
|
{
|
|
// Identifies the field that has invalid data.
|
|
public ValidValue AffIdOwner { get; set; } = ValidValue.Valid;
|
|
public ValidValue AffIdTarget { get; set; } = ValidValue.Valid;
|
|
public ValidValue AssocId { get; set; } = ValidValue.Valid;
|
|
public ValidValue TransId { get; set; } = ValidValue.Valid;
|
|
public ValidValue ReqntId { get; set; } = ValidValue.Valid;
|
|
public ValidValue ConstId { get; set; } = ValidValue.Valid;
|
|
public ValidValue AssetId { get; set; } = ValidValue.Valid;
|
|
public ValidValue ProcessId { get; set; } = ValidValue.Valid;
|
|
public ValidValue AssociationIdContractor { get; set; } = ValidValue.Valid;
|
|
|
|
public ValidValue ConstituentType { get; set; } = ValidValue.Valid;
|
|
public ValidValue Seq { get; set; } = ValidValue.Valid;
|
|
public ValidValue Effective { get; set; } = ValidValue.Valid;
|
|
public ValidValue Required { get; set; } = ValidValue.Valid;
|
|
public ValidValue Started { get; set; } = ValidValue.Valid;
|
|
public ValidValue Completed { get; set; } = ValidValue.Valid;
|
|
public ValidValue DescBrief { get; set; } = ValidValue.Valid;
|
|
public ValidValue DescOutline { get; set; } = ValidValue.Valid;
|
|
public ValidValue DescDetail { get; set; } = ValidValue.Valid;
|
|
public ValidValue TaskNumber { get; set; } = ValidValue.Valid;
|
|
public ValidValue Priority { get; set; } = ValidValue.Valid;
|
|
public ValidValue Category { get; set; } = ValidValue.Valid;
|
|
public ValidValue Reference { get; set; } = ValidValue.Valid;
|
|
public ValidValue Quantity { get; set; } = ValidValue.Valid;
|
|
public ValidValue UomId { get; set; } = ValidValue.Valid;
|
|
public ValidValue UnitCost { get; set; } = ValidValue.Valid;
|
|
|
|
public ValidValue AmountEst { get; set; } = ValidValue.Valid;
|
|
public ValidValue AmountNet { get; set; } = ValidValue.Valid;
|
|
public ValidValue TaxCodeId { get; set; } = ValidValue.Valid;
|
|
public ValidValue TaxRate { get; set; } = ValidValue.Valid;
|
|
public ValidValue AmountTax { get; set; } = ValidValue.Valid;
|
|
public ValidValue AmountTot { get; set; } = ValidValue.Valid;
|
|
public ValidValue TaxRateRebate { get; set; } = ValidValue.Valid;
|
|
public ValidValue AmountTaxRebate { get; set; } = ValidValue.Valid;
|
|
}
|
|
|
|
//-------------------------------------------------------------------
|
|
// Data members.
|
|
private readonly Data data = new Data();
|
|
private enum ConstSort { ConstSortEffective };
|
|
|
|
//-------------------------------------------------------------------
|
|
// Construction.
|
|
protected SbmConstituent(ISbmUserContext userContext, SysId id, SysId affIdOwner, SysId assocId, Sbm.ConstituentType constituentType) : base(userContext)
|
|
{
|
|
base.SetData(data);
|
|
Id = id;
|
|
AffiliateIdOwner = affIdOwner;
|
|
AssociationId = assocId;
|
|
ConstituentType = constituentType;
|
|
Status = DefaultStatus;
|
|
}
|
|
|
|
//-------------------------------------------------------------------
|
|
// Constituent status.
|
|
private static readonly List<SaStatus> constituentStatuses = new List<SaStatus>()
|
|
{
|
|
SaStatus.Required,
|
|
/*SaStatus.Assigned,*/
|
|
SaStatus.Awaiting,
|
|
SaStatus.InProgress,
|
|
SaStatus.Completed,
|
|
SaStatus.Cancelled,
|
|
};
|
|
public static SaStatus DefaultStatus { get { return SaStatus.Current; } }
|
|
public static List<SaStatus> ConstituentStatuses { get { return new List<SaStatus>(constituentStatuses); } }
|
|
public static DataValue.TriStateType GetStatusTriState(SaStatus status)
|
|
{
|
|
switch (status)
|
|
{
|
|
case SaStatus.Completed:
|
|
return DataValue.TriStateType.Green;
|
|
case SaStatus.InProgress:
|
|
return DataValue.TriStateType.Amber;
|
|
case SaStatus.Cancelled:
|
|
return DataValue.TriStateType.Red;
|
|
case SaStatus.Deleted:
|
|
return DataValue.TriStateType.Purple;
|
|
}
|
|
return DataValue.TriStateType.Unknown;
|
|
}
|
|
|
|
//-------------------------------------------------------------------
|
|
// Utilities.
|
|
|
|
//-------------------------------------------------------------------
|
|
// Properties.
|
|
public Data GetData() { return data.Clone(); }
|
|
public void SetData(Data data)
|
|
{
|
|
// Properties that cannot be changed if previously specified.
|
|
if (SysId.IsValid(Id) && SysId.ToInt(Id) != SysId.ToInt(data.Id))
|
|
throw new NotSupportedException($"{SysUtil.Fn} Id cannot be changed");
|
|
// Populate individual properties to ensure that 'Changed' indicator is kept up to date.
|
|
this.data.PopulateFrom(data);
|
|
}
|
|
|
|
//-------------------------------------------------------------------
|
|
// Attributes.
|
|
public SysId AffiliateIdOwner
|
|
{
|
|
get { return data.AffiliateIdOwner; }
|
|
set { data.AffiliateIdOwner = value; }
|
|
}
|
|
public SysId AffiliateIdTarget
|
|
{
|
|
get { return data.AffiliateIdTarget; }
|
|
set { data.AffiliateIdTarget = value; }
|
|
}
|
|
public SysId AssociationId
|
|
{
|
|
get { return data.AssociationId; }
|
|
set { data.AssociationId = value; }
|
|
}
|
|
public SysId TransactionId
|
|
{
|
|
get { return data.TransactionId; }
|
|
set { data.TransactionId = value; }
|
|
}
|
|
public SysId RequirementId
|
|
{
|
|
get { return data.RequirementId; }
|
|
set { data.RequirementId = value; }
|
|
}
|
|
public SysId ConstituentId
|
|
{
|
|
get { return data.ConstituentId; }
|
|
set { data.ConstituentId = value; }
|
|
}
|
|
public SysId AssetId
|
|
{
|
|
get { return data.AssetId; }
|
|
set { data.AssetId = value; }
|
|
}
|
|
public SysId ProcessId
|
|
{
|
|
get { return data.ProcessId; }
|
|
set { data.ProcessId = value; }
|
|
}
|
|
public SysId AssociationIdContractor
|
|
{
|
|
get { return data.AssociationIdContractor; }
|
|
set { data.AssociationIdContractor = value; }
|
|
}
|
|
//-------------------------------------------------------------------
|
|
public Sbm.ConstituentType ConstituentType
|
|
{
|
|
get { return data.ConstituentType; }
|
|
set { data.ConstituentType = value; }
|
|
}
|
|
public short Seq
|
|
{
|
|
get { return data.Seq; }
|
|
set { data.Seq = value; }
|
|
}
|
|
public DateTime Effective
|
|
{
|
|
get { return data.Effective; }
|
|
set { data.Effective = value; }
|
|
}
|
|
public DateTime Required
|
|
{
|
|
get { return data.Required; }
|
|
set { data.Required = value; }
|
|
}
|
|
public DateTime Started
|
|
{
|
|
get { return data.Started; }
|
|
set { data.Started = value; }
|
|
}
|
|
public DateTime Completed
|
|
{
|
|
get { return data.Completed; }
|
|
set { data.Completed = value; }
|
|
}
|
|
public String DescBrief
|
|
{
|
|
get { return data.DescBrief; }
|
|
set { data.DescBrief = value; }
|
|
}
|
|
public String DescOutline
|
|
{
|
|
get { return data.DescOutline; }
|
|
set { data.DescOutline = value; }
|
|
}
|
|
public String DescDetail
|
|
{
|
|
get { return data.DescDetail; }
|
|
set { data.DescDetail = value; }
|
|
}
|
|
public String TaskNumber
|
|
{
|
|
get { return data.TaskNumber; }
|
|
set { data.TaskNumber = value; }
|
|
}
|
|
public short Priority
|
|
{
|
|
get { return data.Priority; }
|
|
set { data.Priority = value; }
|
|
}
|
|
public String Category
|
|
{
|
|
get { return data.Category; }
|
|
set { data.Category = value; }
|
|
}
|
|
public String Reference
|
|
{
|
|
get { return data.Reference; }
|
|
set { data.Reference = value; }
|
|
}
|
|
public decimal Quantity
|
|
{
|
|
get { return data.Quantity; }
|
|
set { data.Quantity = value; }
|
|
}
|
|
public SysId UomId
|
|
{
|
|
get { return data.UomId; }
|
|
set { data.UomId = value; }
|
|
}
|
|
public decimal UnitCost
|
|
{
|
|
get { return data.UnitCost; }
|
|
set { data.UnitCost = value; }
|
|
}
|
|
//-------------------------------------------------------------------
|
|
public decimal AmountEst
|
|
{
|
|
get { return data.AmountEst; }
|
|
set { data.AmountEst = value; }
|
|
}
|
|
public decimal AmountNet
|
|
{
|
|
get { return data.AmountNet; }
|
|
set { data.AmountNet = value; }
|
|
}
|
|
public SysId TaxCodeId
|
|
{
|
|
get { return data.TaxCodeId; }
|
|
set { data.TaxCodeId = value; }
|
|
}
|
|
public decimal TaxRate
|
|
{
|
|
get { return data.TaxRate; }
|
|
set { data.TaxRate = value; }
|
|
}
|
|
public decimal AmountTax
|
|
{
|
|
get { return data.AmountTax; }
|
|
set { data.AmountTax = value; }
|
|
}
|
|
public decimal AmountTot
|
|
{
|
|
get { return data.AmountTot; }
|
|
set { data.AmountTot = value; }
|
|
}
|
|
public decimal TaxRateRebate
|
|
{
|
|
get { return data.TaxRateRebate; }
|
|
set { data.TaxRateRebate = value; }
|
|
}
|
|
public decimal AmountTaxRebate
|
|
{
|
|
get { return data.AmountTaxRebate; }
|
|
set { data.AmountTaxRebate = value; }
|
|
}
|
|
|
|
public SbmConstituent.StatusCat CategoryForStatus(SaStatus saStatus)
|
|
{
|
|
SbmConstituent.StatusCat constStatusCat = SbmConstituent.StatusCat.Open;
|
|
switch (saStatus)
|
|
{
|
|
case SaStatus.Completed:
|
|
case SaStatus.Cancelled:
|
|
constStatusCat = SbmConstituent.StatusCat.Closed;
|
|
break;
|
|
}
|
|
return constStatusCat;
|
|
}
|
|
|
|
//-------------------------------------------------------------------
|
|
// A s s o c i a t e d D a t a E l e m e n t s
|
|
//-------------------------------------------------------------------
|
|
public abstract bool HasConstituents();
|
|
|
|
//-------------------------------------------------------------------
|
|
// P a r a m s
|
|
//-------------------------------------------------------------------
|
|
/// <summary>Parameters - used to define the filters that should be applied to a List of Constituent</summary>
|
|
// List parameters.
|
|
public enum StatusCat
|
|
{
|
|
Any = 0,
|
|
NotDeleted,
|
|
/// <summary>Database value: In progress.</summary>
|
|
Open,
|
|
/// <summary>Database value: Completed or Cancelled.</summary>
|
|
Closed,
|
|
/// <summary>Anything but 'Cancelled' status</summary>
|
|
NotCancelled,
|
|
Default = NotDeleted
|
|
}
|
|
/// <summary>
|
|
/// Item list parameters.
|
|
/// </summary>
|
|
public new class Params : SacsHierarchyItem.Params
|
|
{
|
|
// List filtering.
|
|
public List<SysId> IncludedIds { get; } = new List<SysId>();
|
|
public List<SysId> ExcludedIds { get; } = new List<SysId>();
|
|
// Constituent.
|
|
public Sbm.ConstituentType ConstituentType { get; set; } = Sbm.ConstituentType.Any;
|
|
public SysId AffIdTarget { get; set; }
|
|
public SysId AssocId { get; set; }
|
|
public SysId TransId { get; set; }
|
|
public SysId ReqntId { get; set; }
|
|
public SysId ConstId { get; set; }
|
|
public SysId AssetId { get; set; }
|
|
public String AssetSerialFull { get; set; }
|
|
public String AssetSerialPartial { get; set; }
|
|
public String Ref { get; set; }
|
|
public String DescBrief { get; set; }
|
|
public String DescBriefPartial { get; set; }
|
|
public DateTime EffectiveFrom { get; set; }
|
|
public DateTime EffectiveTo { get; set; }
|
|
public DateTime UpdatedSince { get; set; }
|
|
public bool UseJobNumber { get; set; }
|
|
/// <summary>Constituent status.</summary>
|
|
public StatusCat StatusCat { get; set; } = StatusCat.Any;
|
|
}
|
|
}
|
|
//=======================================================================
|
|
// C o n s t i t u e n t D a t a L i s t
|
|
//=======================================================================
|
|
public static class SbmConstituentList
|
|
{
|
|
/// <summary>Check whether currency exists/locate in list with specified Id.</summary>
|
|
public static int CompareEffectiveAscend(SbmConstituent constituent1, SbmConstituent constituent2)
|
|
{
|
|
if (constituent1 != null || constituent2 != null) return 0;
|
|
return constituent1.Effective.CompareTo(constituent2.Effective);
|
|
}
|
|
public static int CompareEffectiveDescend(SbmConstituent constituent1, SbmConstituent constituent2)
|
|
{
|
|
if (constituent1 != null || constituent2 != null) return 0;
|
|
return constituent1.Effective.CompareTo(constituent2.Effective) - -1;
|
|
}
|
|
|
|
public enum SortMode { ConstSoftEffective, };
|
|
|
|
public static void Sort(this List<SbmConstituent> values, SortMode constituentSort, bool ascending = true)
|
|
{
|
|
if (constituentSort == SortMode.ConstSoftEffective)
|
|
values.Sort
|
|
(
|
|
delegate (SbmConstituent constituent1, SbmConstituent constituent2)
|
|
{
|
|
return CompareEffectiveAscend(constituent1, constituent2);
|
|
}
|
|
);
|
|
else if (constituentSort == SortMode.ConstSoftEffective)
|
|
values.Sort
|
|
(
|
|
delegate (SbmConstituent constituent1, SbmConstituent constituent2)
|
|
{
|
|
return CompareEffectiveDescend(constituent1, constituent2);
|
|
}
|
|
);
|
|
}
|
|
}
|
|
//=======================================================================
|
|
}
|