108 lines
5.5 KiB
C#
108 lines
5.5 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.BusinessMgr.Net.Standard.Base.Mgr;
|
|
using Sarand.BusinessMgr.Net.Standard.Dbas.Data;
|
|
using Sarand.Net.Standard.Base.App;
|
|
using Sarand.Net.Standard.Base.Bus;
|
|
using Sarand.Net.Standard.Base.CodeTypes;
|
|
using Sarand.Net.Standard.Base.Core;
|
|
using Sarand.Net.Standard.Base.Dbas;
|
|
using Sarand.Net.Standard.Base.Utils;
|
|
using Sarand.Net.Standard.Dbas.Base;
|
|
using Sarand.Net.Standard.Dbas.Data;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
|
|
namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
|
|
{
|
|
//=======================================================================
|
|
internal partial class SbmTransactionMgr_Dbas : SbmTransactionMgr
|
|
{
|
|
//-------------------------------------------------------------------
|
|
// Data members.
|
|
private SacsDatabase db = null;
|
|
private readonly SbmDbDataItem.SbmDatabaseInfo dbInfo;
|
|
private readonly int orderQuantityDecimals;
|
|
private readonly int weightDecimals;
|
|
|
|
bool locationIdListsPopulated = false;
|
|
private List<SysId> locationIds_All;
|
|
private List<SysId> locationIds_Calc;
|
|
private List<SysId> locationIds_Sales;
|
|
private List<SysId> locationIds_NonSales;
|
|
|
|
//-------------------------------------------------------------------
|
|
// Construction.
|
|
public SbmTransactionMgr_Dbas(ISbmUserContext_Core userContext) :
|
|
base(userContext)
|
|
{
|
|
db = (SbmGlobals.Application.GetBusMgrDatabase(SessionContext) as SacsDatabase);
|
|
dbInfo = new SbmDbDataItem.SbmDatabaseInfo(db.DatabaseName, db.GetTableDfns());
|
|
orderQuantityDecimals = UserContext.GetOwnerOption_NumericDecimals(Sbm.OrgOption_NumericDecimals.OrderQuantity);
|
|
weightDecimals = UserContext.GetOwnerOption_NumericDecimals(Sbm.OrgOption_NumericDecimals.CommodityWeight);
|
|
}
|
|
|
|
//-------------------------------------------------------------------
|
|
// Properties.
|
|
protected ISacsDatabase Database { get { return db; } }
|
|
protected SbmDbDataItem.SbmDatabaseInfo DbInfo { get { return dbInfo; } }
|
|
|
|
//-------------------------------------------------------------------
|
|
// Utilities.
|
|
|
|
//-------------------------------------------------------------------
|
|
// Retrieve the list of transactions types that reference the specified commodity code.
|
|
public override List<Sbm.TransactionType> GetTransactionTypesForCommodity(SysId commodityId, SbmTransaction.StatusCat statusCat = SbmTransaction.StatusCat.NotCancelled)
|
|
{
|
|
String fn = GetType().Name + ".GetTransactionTypesForCommodity";
|
|
List<Sbm.TransactionType> transactionTypes = new List<Sbm.TransactionType>();
|
|
if (!SysId.IsValid(commodityId)) return transactionTypes;
|
|
|
|
String aliasTrans = "aTrn";
|
|
String aliasReqnt = "aReq";
|
|
String colTransactionType = "TransType";
|
|
DbQuery qry = new DbQuery(Database.DbmsType);
|
|
// Transaction table.
|
|
qry.Tables.Add(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Transaction), aliasTrans);
|
|
qry.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Transaction_Type, aliasTrans), colTransactionType);
|
|
qry.DistinctRows = true;
|
|
// Transaction status.
|
|
if (statusCat == SbmTransaction.StatusCat.NotDeleted)
|
|
qry.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Transaction_Status, aliasTrans) + "<>'" + StatusDeleted + "'");
|
|
else if (statusCat == SbmTransaction.StatusCat.Completed)
|
|
qry.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Transaction_Status, aliasTrans) + "='" + StatusCompleted + "'");
|
|
else if (statusCat == SbmTransaction.StatusCat.NotClosed)
|
|
qry.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Transaction_StatusCat, aliasTrans) + "<>'" + TransactionStatusCats.GetCodeForType(SbmTransaction.StatusCat.Closed) + "'");
|
|
else if (statusCat == SbmTransaction.StatusCat.NotCancelled)
|
|
qry.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Transaction_Status, aliasTrans) + "<>'" + StatusCancelled + "'");
|
|
else if (!StringUtil.IsEmpty(TransactionStatusCats.GetCodeForType(statusCat)))
|
|
qry.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Transaction_StatusCat, aliasTrans) + "<>'" + TransactionStatusCats.GetCodeForType(statusCat) + "'");
|
|
// Join to Requirement table.
|
|
DbQueryJoin joinReqnt = new DbQueryJoin(DbJoinType.Inner);
|
|
joinReqnt.Table = new StringPair(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Requirement), aliasReqnt);
|
|
joinReqnt.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Requirement_TransId, aliasReqnt) + "=" + SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Transaction_Id, aliasTrans));
|
|
joinReqnt.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Requirement_CommodityId, aliasReqnt) + "=" + SysId.ToString(commodityId));
|
|
qry.Joins.Add(joinReqnt);
|
|
// Execute the query.
|
|
if (DebugMode) SaLogger.Debug(fn + " Query: " + qry.BuildQuery());
|
|
using (DbResultSet dbResultSet = DbResultSet_DataReader.ExecuteQuery(db, qry.ToString()))
|
|
{
|
|
while (!HasErrorState() && dbResultSet != null && dbResultSet.NextRecord())
|
|
{
|
|
NamedValue.Map values = dbResultSet.GetRecordValues();
|
|
Sbm.TransactionType transactionType = (Sbm.TransactionType)StringUtil.ToShort(values.GetValue(colTransactionType));
|
|
if (DebugMode) SaLogger.Debug(fn + " Transaction type: " + transactionType.ToString());
|
|
// Add this transaction type to the list.
|
|
if (!transactionTypes.Contains(transactionType))
|
|
transactionTypes.Add(transactionType);
|
|
}
|
|
}
|
|
return transactionTypes;
|
|
}
|
|
|
|
//-------------------------------------------------------------------
|
|
}
|
|
//=======================================================================
|
|
}
|