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 supportedCodeTypes = new List() { 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 TransactionTypes { get { return GetSystemCodes(Sbm.ApplicationCode.TransactionType); } } public List TransactionStatusCats { get { return GetSystemCodes(Sbm.ApplicationCode.TransactionStatusCat); } } public List AssociationTypes { get { return GetSystemCodes(Sbm.ApplicationCode.AssociationType); } } public List RequirementStatusCats { get { return GetSystemCodes(Sbm.ApplicationCode.RequirementStatusCat); } } public List ConstituentTypes { get { return GetSystemCodes(Sbm.ApplicationCode.ConstituentType); } } public List ConstituentStatusCats { get { return GetSystemCodes(Sbm.ApplicationCode.ConstituentStatusCat); } } // Code types. public override List SupportedCodeTypes { get { return new List(supportedCodeTypes); } } //------------------------------------------------------------------- // Utilities. public String GetTransactionTypeDesc(Sbm.TransactionType transactionType) { return TransactionTypes.GetDescForType(transactionType, "Transaction"); } // Association types allowed for Transaction type. public List GetAssociationTypes(Sbm.TransactionType transactionType) { List associationTypes = new List(); 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 GetTransactionTypesForCommodity(SysId commodityId, SbmTransaction.StatusCat statusCat = SbmTransaction.StatusCat.NotCancelled); //------------------------------------------------------------------- // Job number. public abstract bool TransactionItemsRequireJobNumber(Sbm.TransactionType transactionType); //------------------------------------------------------------------- } //======================================================================= }