Files
BusinessMgr-2019/SaBusMgrStandardBase/Base/Mgr/SbmTransactionMgr.cs
T
2021-05-05 21:00:33 +01:00

109 lines
4.6 KiB
C#

using Sarand.BusinessMgr.Net.Standard.Base.App;
using Sarand.BusinessMgr.Net.Standard.Base.Bus;
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 : SbmItemMgr
{
//-------------------------------------------------------------------
// 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(SbmUserContext userContext) :
base(userContext)
{
}
protected override void Dispose(bool disposing)
{
if (disposing)
{
}
base.Dispose(disposing);
}
//-------------------------------------------------------------------
// Properties.
public List<TypeCodeDesc> TransactionTypes { get { return GetCodesOfType(Sbm.SystemCode.TransactionType); } }
public List<TypeCodeDesc> TransactionStatusCats { get { return GetCodesOfType(Sbm.SystemCode.TransactionStatusCat); } }
public List<TypeCodeDesc> AssociationTypes { get { return GetCodesOfType(Sbm.SystemCode.AssociationType); } }
public List<TypeCodeDesc> RequirementStatusCats { get { return GetCodesOfType(Sbm.SystemCode.RequirementStatusCat); } }
public List<TypeCodeDesc> ConstituentTypes { get { return GetCodesOfType(Sbm.SystemCode.ConstituentType); } }
public List<TypeCodeDesc> ConstituentStatusCats { get { return GetCodesOfType(Sbm.SystemCode.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");
}
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);
//-------------------------------------------------------------------
}
//=======================================================================
}