Files

121 lines
5.0 KiB
C#

using Sarand.BusinessMgr.Net.Standard.Base.App;
using Sarand.BusinessMgr.Net.Standard.Base.Bus;
using Sarand.BusinessMgr.Net.Standard.Base.Core;
using Sarand.Net.Standard.Base.Bus;
using Sarand.Net.Standard.Base.Core;
using System;
using System.Collections.Generic;
namespace Sarand.BusinessMgr.Net.Standard.Base.Mgr
{
//=======================================================================
public abstract partial class SbmTransactionMgr : SbmCoreMgr
{
//-------------------------------------------------------------------
// Data members.
// Code types.
private List<Sbm.ApplCodeType> supportedCodeTypes = new List<Sbm.ApplCodeType>()
{
Sbm.ApplCodeType.AccountHandler,
Sbm.ApplCodeType.AccountManager,
Sbm.ApplCodeType.ContactArea,
Sbm.ApplCodeType.DeliveryStatus,
Sbm.ApplCodeType.DeliveryType,
Sbm.ApplCodeType.DeliveryMethod,
Sbm.ApplCodeType.DeliveryCourier,
Sbm.ApplCodeType.DeliveryBookIn,
Sbm.ApplCodeType.StockPicker,
Sbm.ApplCodeType.CommodityMaterial,
Sbm.ApplCodeType.CommodityFinish,
Sbm.ApplCodeType.CommodityPromotion
};
//-------------------------------------------------------------------
// Construction.
protected SbmTransactionMgr(SbmInternals internals) :
base(internals)
{
}
protected SbmTransactionMgr(ISbmUserOrganisationContext userContext) :
base(userContext)
{
}
protected override void Dispose(bool disposing)
{
if (disposing)
{
}
base.Dispose(disposing);
}
//-------------------------------------------------------------------
// Properties.
public List<TypeCodeDesc> TransactionTypes { get { return GetSystemCodes(Sbm.ApplicationCode.TransactionType); } }
public List<TypeCodeDesc> TransactionStatusCats { get { return GetSystemCodes(Sbm.ApplicationCode.TransactionStatusCat); } }
public List<TypeCodeDesc> AssociationTypes { get { return GetSystemCodes(Sbm.ApplicationCode.AssociationType); } }
public List<TypeCodeDesc> RequirementStatusCats { get { return GetSystemCodes(Sbm.ApplicationCode.RequirementStatusCat); } }
public List<TypeCodeDesc> ConstituentTypes { get { return GetSystemCodes(Sbm.ApplicationCode.ConstituentType); } }
public List<TypeCodeDesc> ConstituentStatusCats { get { return GetSystemCodes(Sbm.ApplicationCode.ConstituentStatusCat); } }
// Code types.
public override List<Sbm.ApplCodeType> SupportedCodeTypes { get { return new List<Sbm.ApplCodeType>(supportedCodeTypes); } }
//-------------------------------------------------------------------
// Utilities.
public String GetTransactionTypeDesc(Sbm.TransactionType transactionType)
{
return TransactionTypes.GetDescForType(transactionType, "Transaction");
}
// Association types allowed for Transaction type.
public List<TypeCodeDesc> GetAssociationTypes(Sbm.TransactionType transactionType)
{
List<TypeCodeDesc> associationTypes = new List<TypeCodeDesc>();
switch (transactionType)
{
case Sbm.TransactionType.Unknown:
break;
case Sbm.TransactionType.Any:
associationTypes.AddRange(this.AssociationTypes);
break;
case Sbm.TransactionType.Project:
associationTypes.AddRange(this.AssociationTypes.FindAll(item => item.Type.Equals(Sbm.AssociationType.Internal)));
associationTypes.AddRange(this.AssociationTypes.FindAll(item => item.Type.Equals(Sbm.AssociationType.Associate)));
associationTypes.AddRange(this.AssociationTypes.FindAll(item => item.Type.Equals(Sbm.AssociationType.Member)));
break;
case Sbm.TransactionType.SalesLead:
case Sbm.TransactionType.SalesQuote:
case Sbm.TransactionType.SalesPO:
case Sbm.TransactionType.ProformaSalesOrder:
case Sbm.TransactionType.SalesOrder:
case Sbm.TransactionType.SalesDispatch:
case Sbm.TransactionType.ProformaSalesInvoice:
case Sbm.TransactionType.SalesInvoice:
associationTypes.AddRange(this.AssociationTypes.FindAll(item => item.Type.Equals(Sbm.AssociationType.Customer)));
break;
case Sbm.TransactionType.PurchaseQuote:
case Sbm.TransactionType.PurchaseSO:
case Sbm.TransactionType.ProformaPurchaseOrder:
case Sbm.TransactionType.PurchaseOrder:
case Sbm.TransactionType.PurchaseDelivery:
case Sbm.TransactionType.ProformaPurchaseInvoice:
case Sbm.TransactionType.PurchaseInvoice:
associationTypes.AddRange(this.AssociationTypes.FindAll(item => item.Type.Equals(Sbm.AssociationType.Supplier)));
break;
}
return associationTypes;
}
//-------------------------------------------------------------------
// Retrieve the list of transactions types that reference the specified commodity code.
public abstract List<Sbm.TransactionType> GetTransactionTypesForCommodity(SysId commodityId, SbmTransaction.StatusCat statusCat = SbmTransaction.StatusCat.NotCancelled);
//-------------------------------------------------------------------
// Job number.
public abstract bool TransactionItemsRequireJobNumber(Sbm.TransactionType transactionType);
//-------------------------------------------------------------------
}
//=======================================================================
}