361 lines
14 KiB
C#
361 lines
14 KiB
C#
using Sarand.BusinessMgr.Net.Standard.Base.Bus;
|
|
using Sarand.BusinessMgr.Net.Standard.Base.Core;
|
|
using Sarand.BusinessMgr.Net.Standard.Base.Mgr;
|
|
using Sarand.Net.Standard.Base.Utils;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
|
|
namespace Sarand.BusinessMgr.Net.Standard.Base.App
|
|
{
|
|
//=======================================================================
|
|
public class SbmConsoleViewDfn
|
|
{
|
|
//-------------------------------------------------------------------
|
|
// Link definition.
|
|
public class LinkData
|
|
{
|
|
//---------------------------------------------------------------
|
|
// Construction:
|
|
public LinkData(Sbm.ConsoleLink linkType)
|
|
{
|
|
LinkType = linkType;
|
|
}
|
|
//---------------------------------------------------------------
|
|
// Properties.
|
|
public Sbm.ConsoleLink LinkType { get; }
|
|
public int ItemCount { get; set; }
|
|
public bool RequiresRefresh { get; protected set; }
|
|
public virtual String LinkPrefix
|
|
{
|
|
get
|
|
{
|
|
switch (LinkType)
|
|
{
|
|
case Sbm.ConsoleLink.Assoc_Cust_Stats:
|
|
if (!RequiresRefresh || ItemCount > 0) return "There are " + ItemCount + " customers in the system.";
|
|
return "Waiting to count customers";
|
|
case Sbm.ConsoleLink.Assoc_Supp_Stats:
|
|
if (!RequiresRefresh || ItemCount > 0) return "There are " + ItemCount + " suppliers in the system.";
|
|
return "Waiting to count suppliers";
|
|
case Sbm.ConsoleLink.Comm_Stats:
|
|
if (!RequiresRefresh || ItemCount > 0) return "There are " + ItemCount + " commodities in the system.";
|
|
return "Waiting to count commodities";
|
|
case Sbm.ConsoleLink.Trans_SalesQuotes_Pend_Stats:
|
|
if (!RequiresRefresh || ItemCount > 0) return "There are " + ItemCount + " pending sales quotes in the system.";
|
|
return "Waiting to count pending quotes";
|
|
case Sbm.ConsoleLink.Trans_SalesQuotes_Open_Stats:
|
|
if (!RequiresRefresh || ItemCount > 0) return "There are " + ItemCount + " open sales quotes in the system.";
|
|
return "Waiting to count open quotes";
|
|
case Sbm.ConsoleLink.Trans_SalesOrders_Pend_Stats:
|
|
if (!RequiresRefresh || ItemCount > 0) return "There are " + ItemCount + " pending sales orders in the system.";
|
|
return "Waiting to count pending sales orders";
|
|
case Sbm.ConsoleLink.Trans_SalesOrders_Open_Stats:
|
|
if (!RequiresRefresh || ItemCount > 0) return "There are " + ItemCount + " open sales orders in the system.";
|
|
return "Waiting to count open sales orders";
|
|
case Sbm.ConsoleLink.Trans_SalesDispatches_Pend_Stats:
|
|
if (!RequiresRefresh || ItemCount > 0) return "There are " + ItemCount + " pending sales dispatches in the system.";
|
|
return "Waiting to count pending sales dispatches";
|
|
case Sbm.ConsoleLink.Trans_SalesInvoices_Pend_Stats:
|
|
if (!RequiresRefresh || ItemCount > 0) return "There are " + ItemCount + " pending sales invoices in the system.";
|
|
return "Waiting to count pending sales invoices";
|
|
case Sbm.ConsoleLink.Util_Codes_Stats:
|
|
if (!RequiresRefresh || ItemCount > 0) return "There are " + ItemCount + " codes in the system.";
|
|
return "Waiting to count codes";
|
|
case Sbm.ConsoleLink.Util_Security_Stats:
|
|
if (!RequiresRefresh || ItemCount > 0) return "There are " + ItemCount + " users in the system.";
|
|
return "Waiting to count users";
|
|
}
|
|
return "";
|
|
}
|
|
}
|
|
public virtual String LinkText
|
|
{
|
|
get
|
|
{
|
|
switch (LinkType)
|
|
{
|
|
case Sbm.ConsoleLink.Assoc_Cust_View: return "List customers";
|
|
case Sbm.ConsoleLink.Assoc_Cust_Create: return "Create customer";
|
|
case Sbm.ConsoleLink.Assoc_Supp_View: return "List suppliers";
|
|
case Sbm.ConsoleLink.Assoc_Supp_Create: return "Create supplier";
|
|
case Sbm.ConsoleLink.Comm_View: return "List commodities";
|
|
case Sbm.ConsoleLink.Comm_Create: return "Create commodity";
|
|
case Sbm.ConsoleLink.Trans_SalesQuotes_Pend_View: return "List pending sales quotes";
|
|
case Sbm.ConsoleLink.Trans_SalesQuotes_Pend_Create: return "Create pending sales quote";
|
|
case Sbm.ConsoleLink.Trans_SalesQuotes_Open_View: return "List open sales quotes";
|
|
case Sbm.ConsoleLink.Trans_SalesQuotes_Open_Create: return "Create open sales quote";
|
|
case Sbm.ConsoleLink.Trans_SalesOrders_Pend_View: return "List pending sales orders";
|
|
case Sbm.ConsoleLink.Trans_SalesOrders_Pend_Create: return "Create pending sales order";
|
|
case Sbm.ConsoleLink.Trans_SalesOrders_Open_View: return "List open sales orders";
|
|
case Sbm.ConsoleLink.Trans_SalesOrders_Open_Create: return "Create open sales order";
|
|
case Sbm.ConsoleLink.Trans_SalesDispatches_Pend_View: return "List sales dispatches";
|
|
case Sbm.ConsoleLink.Trans_SalesDispatches_Pend_Create: return "Create sales dispatch";
|
|
case Sbm.ConsoleLink.Trans_SalesInvoices_Pend_View: return "List sales invoices";
|
|
case Sbm.ConsoleLink.Trans_SalesInvoices_Pend_Create: return "Create sales invoice";
|
|
case Sbm.ConsoleLink.Util_Codes_Manage: return "Manage codes";
|
|
case Sbm.ConsoleLink.Util_Security_Manage: return "Manage security";
|
|
}
|
|
return "";
|
|
}
|
|
}
|
|
public virtual String LinkSuffix { get { return ""; } }
|
|
//---------------------------------------------------------------
|
|
// Utilities.
|
|
public virtual bool Refresh(ISbmUserContext_Core userContext)
|
|
{
|
|
ItemCount = 0;
|
|
switch (LinkType)
|
|
{
|
|
case Sbm.ConsoleLink.Assoc_Cust_Stats:
|
|
{
|
|
using (SbmAccountMgr accountMgr = SbmGlobals.System.CreateAccountMgr(userContext))
|
|
{
|
|
SbmAssociation.Params prm = new SbmAssociation.Params();
|
|
prm.AssociationType = Sbm.AssociationType.Customer;
|
|
ItemCount = (int)accountMgr.GetAssociationCount(prm);
|
|
}
|
|
break;
|
|
}
|
|
case Sbm.ConsoleLink.Assoc_Supp_Stats:
|
|
{
|
|
using (SbmAccountMgr accountMgr = SbmGlobals.System.CreateAccountMgr(userContext))
|
|
{
|
|
SbmAssociation.Params prm = new SbmAssociation.Params();
|
|
prm.AssociationType = Sbm.AssociationType.Supplier;
|
|
ItemCount = (int)accountMgr.GetAssociationCount(prm);
|
|
}
|
|
break;
|
|
}
|
|
case Sbm.ConsoleLink.Comm_Stats:
|
|
{
|
|
using (SbmCommodityMgr commodityMgr = SbmGlobals.System.CreateCommodityMgr(userContext))
|
|
{
|
|
SbmCommodity.Params prm = new SbmCommodity.Params();
|
|
ItemCount = (int)commodityMgr.GetCommodityCount(prm);
|
|
}
|
|
break;
|
|
}
|
|
case Sbm.ConsoleLink.Trans_SalesQuotes_Pend_Stats:
|
|
{
|
|
using (SbmTransactionMgr transactionMgr = SbmGlobals.System.CreateTransactionMgr(userContext))
|
|
{
|
|
SbmTransaction.Params prm = new SbmTransaction.Params();
|
|
prm.TransactionType = Sbm.TransactionType.SalesQuote;
|
|
prm.StatusCat = SbmTransaction.StatusCat.Pending;
|
|
ItemCount = (int)transactionMgr.GetTransactionCount(prm);
|
|
}
|
|
break;
|
|
}
|
|
case Sbm.ConsoleLink.Trans_SalesQuotes_Open_Stats:
|
|
{
|
|
using (SbmTransactionMgr transactionMgr = SbmGlobals.System.CreateTransactionMgr(userContext))
|
|
{
|
|
SbmTransaction.Params prm = new SbmTransaction.Params();
|
|
prm.TransactionType = Sbm.TransactionType.SalesQuote;
|
|
prm.StatusCat = SbmTransaction.StatusCat.Open;
|
|
ItemCount = (int)transactionMgr.GetTransactionCount(prm);
|
|
}
|
|
break;
|
|
}
|
|
case Sbm.ConsoleLink.Trans_SalesOrders_Pend_Stats:
|
|
{
|
|
using (SbmTransactionMgr transactionMgr = SbmGlobals.System.CreateTransactionMgr(userContext))
|
|
{
|
|
SbmTransaction.Params prm = new SbmTransaction.Params();
|
|
prm.TransactionType = Sbm.TransactionType.SalesOrder;
|
|
prm.StatusCat = SbmTransaction.StatusCat.Pending;
|
|
ItemCount = (int)transactionMgr.GetTransactionCount(prm);
|
|
}
|
|
break;
|
|
}
|
|
case Sbm.ConsoleLink.Trans_SalesOrders_Open_Stats:
|
|
{
|
|
using (SbmTransactionMgr transactionMgr = SbmGlobals.System.CreateTransactionMgr(userContext))
|
|
{
|
|
SbmTransaction.Params prm = new SbmTransaction.Params();
|
|
prm.TransactionType = Sbm.TransactionType.SalesOrder;
|
|
prm.StatusCat = SbmTransaction.StatusCat.Open;
|
|
ItemCount = (int)transactionMgr.GetTransactionCount(prm);
|
|
}
|
|
break;
|
|
}
|
|
case Sbm.ConsoleLink.Trans_SalesDispatches_Pend_Stats:
|
|
{
|
|
using (SbmTransactionMgr transactionMgr = SbmGlobals.System.CreateTransactionMgr(userContext))
|
|
{
|
|
SbmTransaction.Params prm = new SbmTransaction.Params();
|
|
prm.TransactionType = Sbm.TransactionType.SalesDispatch;
|
|
prm.StatusCat = SbmTransaction.StatusCat.Pending;
|
|
ItemCount = (int)transactionMgr.GetTransactionCount(prm);
|
|
}
|
|
break;
|
|
}
|
|
case Sbm.ConsoleLink.Trans_SalesInvoices_Pend_Stats:
|
|
{
|
|
using (SbmTransactionMgr transactionMgr = SbmGlobals.System.CreateTransactionMgr(userContext))
|
|
{
|
|
SbmTransaction.Params prm = new SbmTransaction.Params();
|
|
prm.TransactionType = Sbm.TransactionType.SalesInvoice;
|
|
prm.StatusCat = SbmTransaction.StatusCat.Pending;
|
|
ItemCount = (int)transactionMgr.GetTransactionCount(prm);
|
|
}
|
|
break;
|
|
}
|
|
case Sbm.ConsoleLink.Util_Codes_Stats:
|
|
break;
|
|
case Sbm.ConsoleLink.Util_Security_Stats:
|
|
break;
|
|
}
|
|
RequiresRefresh = false;
|
|
return false;
|
|
}
|
|
public virtual void ResetRefresh(bool resetCount = false)
|
|
{
|
|
switch (LinkType)
|
|
{
|
|
case Sbm.ConsoleLink.Assoc_Cust_Stats:
|
|
case Sbm.ConsoleLink.Assoc_Supp_Stats:
|
|
case Sbm.ConsoleLink.Comm_Stats:
|
|
case Sbm.ConsoleLink.Trans_SalesQuotes_Pend_Stats:
|
|
case Sbm.ConsoleLink.Trans_SalesQuotes_Open_Stats:
|
|
case Sbm.ConsoleLink.Trans_SalesOrders_Pend_Stats:
|
|
case Sbm.ConsoleLink.Trans_SalesOrders_Open_Stats:
|
|
case Sbm.ConsoleLink.Trans_SalesDispatches_Pend_Stats:
|
|
case Sbm.ConsoleLink.Trans_SalesInvoices_Pend_Stats:
|
|
case Sbm.ConsoleLink.Util_Codes_Stats:
|
|
case Sbm.ConsoleLink.Util_Security_Stats:
|
|
// Count doesn't need resetting - it'll be recalculated anyway.
|
|
if (resetCount) ItemCount = 0;
|
|
RequiresRefresh = true;
|
|
break;
|
|
}
|
|
}
|
|
public virtual bool DoLinkAction() { return false; }
|
|
protected virtual void ChangeView(Sbm.View view) { }
|
|
//---------------------------------------------------------------
|
|
}
|
|
// Item definition.
|
|
public class ItemData
|
|
{
|
|
//---------------------------------------------------------------
|
|
// Construction:
|
|
public ItemData(Sbm.ConsoleItem itemType)
|
|
{
|
|
ItemType = itemType;
|
|
switch (ItemType)
|
|
{
|
|
case Sbm.ConsoleItem.Associations_Customers: Caption = "Customers"; break;
|
|
case Sbm.ConsoleItem.Associations_Suppliers: Caption = "Suppliers"; break;
|
|
case Sbm.ConsoleItem.Commodities: Caption = "Commodities"; break;
|
|
case Sbm.ConsoleItem.Transactions_SalesQuotes: Caption = "Sales Quotes"; break;
|
|
case Sbm.ConsoleItem.Transactions_SalesOrders: Caption = "Sales Orders"; break;
|
|
case Sbm.ConsoleItem.Transactions_SalesDispatches: Caption = "Sales Dispatches"; break;
|
|
case Sbm.ConsoleItem.Transactions_SalesInvoices: Caption = "Sales Invoices"; break;
|
|
case Sbm.ConsoleItem.Utilities_Codes: Caption = "Codes"; break;
|
|
case Sbm.ConsoleItem.Utilities_Security: Caption = "Security"; break;
|
|
}
|
|
}
|
|
//---------------------------------------------------------------
|
|
// Properties.
|
|
public Sbm.ConsoleItem ItemType { get; }
|
|
public bool RequiresRefresh { get; protected set; }
|
|
public String Caption { get; set; }
|
|
public List<LinkData> Links { get; } = new List<LinkData>();
|
|
//---------------------------------------------------------------
|
|
// Utilities.
|
|
public virtual bool HasContent()
|
|
{
|
|
if (Links.Count < 1) return false;
|
|
if (StringUtil.IsEmpty(Caption)) return false;
|
|
return false;
|
|
}
|
|
public LinkData GetLink(Sbm.ConsoleLink consoleLink)
|
|
{
|
|
return Links.Find(item => item.LinkType == consoleLink);
|
|
}
|
|
public void ResetRefresh(bool resetCount) { }
|
|
//---------------------------------------------------------------
|
|
}
|
|
// Group definition.
|
|
public class GroupData
|
|
{
|
|
//---------------------------------------------------------------
|
|
// Construction:
|
|
public GroupData(Sbm.ConsoleGroup groupType)
|
|
{
|
|
GroupType = groupType;
|
|
switch (GroupType)
|
|
{
|
|
case Sbm.ConsoleGroup.Associations:
|
|
Caption = "Associations";
|
|
break;
|
|
case Sbm.ConsoleGroup.Commodities:
|
|
Caption = "Commodities";
|
|
break;
|
|
case Sbm.ConsoleGroup.Transactions:
|
|
Caption = "Transactions";
|
|
break;
|
|
case Sbm.ConsoleGroup.Utilities:
|
|
Caption = "Utilities";
|
|
break;
|
|
}
|
|
}
|
|
//---------------------------------------------------------------
|
|
// Properties.
|
|
public Sbm.ConsoleGroup GroupType { get; }
|
|
public String Caption { get; set; }
|
|
public List<ItemData> Items { get; } = new List<ItemData>();
|
|
//---------------------------------------------------------------
|
|
// Utilities.
|
|
public virtual bool HasContent()
|
|
{
|
|
if (!Items.Exists(item => item.HasContent())) return false;
|
|
if (StringUtil.IsEmpty(Caption)) return false;
|
|
return false;
|
|
}
|
|
public bool RequiresRefresh() { return false; }
|
|
public void ResetRefresh(bool resetCount) { }
|
|
public ItemData GetItem(Sbm.ConsoleItem consoleItem)
|
|
{
|
|
return Items.Find(item => item.ItemType == consoleItem);
|
|
}
|
|
//---------------------------------------------------------------
|
|
}
|
|
|
|
//-------------------------------------------------------------------
|
|
// Data members.
|
|
|
|
//-------------------------------------------------------------------
|
|
// Construction.
|
|
public SbmConsoleViewDfn()
|
|
{
|
|
HeaderCaption = Sbm.ApplicationCaption + " Console";
|
|
}
|
|
|
|
//-------------------------------------------------------------------
|
|
// Properties.
|
|
public bool RequiresRefresh { get; }
|
|
public String HeaderCaption { get; set; }
|
|
public List<GroupData> Groups { get; } = new List<GroupData>();
|
|
|
|
//-------------------------------------------------------------------
|
|
// Utilities.
|
|
public virtual bool HasContent()
|
|
{
|
|
if (!Groups.Exists(item => item.HasContent())) return false;
|
|
if (StringUtil.IsEmpty(HeaderCaption)) return false;
|
|
return true;
|
|
}
|
|
public GroupData GetGroup(Sbm.ConsoleGroup consoleGroup)
|
|
{
|
|
return Groups.Find(item => item.GroupType == consoleGroup);
|
|
}
|
|
public void ResetRefresh(bool resetCount)
|
|
{
|
|
}
|
|
|
|
//-------------------------------------------------------------------
|
|
}
|
|
//=======================================================================
|
|
}
|