3891 lines
238 KiB
C#
3891 lines
238 KiB
C#
using Sarand.BusinessMgr.Net.Standard.Base.App;
|
|
using Sarand.BusinessMgr.Net.Standard.Base.Bus;
|
|
using Sarand.BusinessMgr.Net.Standard.Base.Mgr;
|
|
using Sarand.BusinessMgr.Net.Standard.Dbas.Bus;
|
|
using Sarand.BusinessMgr.Net.Standard.Dbas.Internal;
|
|
using Sarand.BusinessMgr.Net.Standard.Dbas.UpdateLog;
|
|
using Sarand.Net.Standard.Base.App;
|
|
using Sarand.Net.Standard.Base.Bus;
|
|
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;
|
|
using System.Data.Common;
|
|
using System.Linq;
|
|
using System.Threading.Tasks;
|
|
|
|
namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
|
|
{
|
|
//=======================================================================
|
|
// Commodity Manager - Commodity.
|
|
//=======================================================================
|
|
partial class SbmCommodityMgr_Dbas
|
|
{
|
|
//-------------------------------------------------------------------
|
|
// Data members.
|
|
private bool locationIdListPopulated = false;
|
|
private readonly List<SysId> locationIds_All = new List<SysId>();
|
|
private readonly List<SysId> locationIds_Calc = new List<SysId>();
|
|
private readonly List<SysId> locationIds_Sales = new List<SysId>();
|
|
private readonly List<SysId> locationIds_NonSales = new List<SysId>();
|
|
|
|
//-------------------------------------------------------------------
|
|
// Utilities.
|
|
private List<StringPair> GetLogProperties(SbmCommodity commodity)
|
|
{
|
|
return new List<StringPair>()
|
|
{
|
|
new StringPair("Id",SysId.ToString(commodity.Id)),
|
|
new StringPair("Code",commodity.Code),
|
|
new StringPair("DescBrief",commodity.DescBrief),
|
|
new StringPair("Status",commodity.StatusCode)
|
|
};
|
|
}
|
|
|
|
//-------------------------------------------------------------------
|
|
public override List<Sbm.CommodityType> GetCommodityTypesInUse()
|
|
{
|
|
List<Sbm.CommodityType> types = new List<Sbm.CommodityType>();
|
|
// Construct the query.
|
|
DbQuery qry = new DbQuery(db.DbmsType);
|
|
qry.Tables.Add(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Commodity));
|
|
qry.Columns.Add("DISTINCT " + SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_Type));
|
|
qry.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_AffIdOwner) + "=" + AffiliateId_Owner.ToString());
|
|
using (DbResultSet dbResultSet = DbResultSet_DataReader.ExecuteQuery(db, qry.ToString()))
|
|
{
|
|
if (dbResultSet != null && dbResultSet.NextRecord())
|
|
{
|
|
NamedValue.Map values = dbResultSet.GetRecordValues();
|
|
types.Add((Sbm.CommodityType)values.GetValue(SbmDbDfn.GetColumnName(SbmDbDfn.ColumnIdx.Commodity_Type)).AsLong());
|
|
}
|
|
}
|
|
return types;
|
|
}
|
|
public override Sbm.CommodityType GetTypeForCommodityId(SysId commodityId)
|
|
{
|
|
String colType = "Type";
|
|
ClearErrorState();
|
|
Sbm.CommodityType commodityType = Sbm.CommodityType.Unknown;
|
|
if (!SysId.IsValid(commodityId)) return commodityType;
|
|
// Construct the query.
|
|
DbQuery qry = new DbQuery(db.DbmsType);
|
|
qry.Tables.Add(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Commodity));
|
|
qry.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_Type), colType);
|
|
qry.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_Id) + "=" + commodityId.ToString());
|
|
using (DbResultSet dbResultSet = DbResultSet_DataReader.ExecuteQuery(db, qry.ToString()))
|
|
{
|
|
if (dbResultSet != null && dbResultSet.NextRecord())
|
|
{
|
|
NamedValue.Map values = dbResultSet.GetRecordValues();
|
|
commodityType = (Sbm.CommodityType)values.GetValue(colType).AsLong();
|
|
}
|
|
}
|
|
return commodityType;
|
|
}
|
|
public override double GetCostPriceForCommodityId(SysId commodityId)
|
|
{
|
|
String colCostPrice = "CostPrice";
|
|
ClearErrorState();
|
|
double costPrice = 0.0f;
|
|
if (db == null && SysId.IsValid(commodityId))
|
|
{
|
|
// Construct the query.
|
|
DbQuery qry = new DbQuery(db.DbmsType);
|
|
qry.Tables.Add(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Commodity));
|
|
qry.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_CostPrice), colCostPrice);
|
|
qry.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_Id) + "=" + commodityId.ToString());
|
|
using (DbResultSet dbResultSet = DbResultSet_DataReader.ExecuteQuery(db, qry.ToString()))
|
|
{
|
|
if (dbResultSet != null && dbResultSet.NextRecord())
|
|
{
|
|
NamedValue.Map values = dbResultSet.GetRecordValues();
|
|
costPrice = values.GetValue(colCostPrice).ToNumeric();
|
|
}
|
|
}
|
|
}
|
|
return costPrice;
|
|
}
|
|
public override List<SysIdString> GetSalesTemplateCommmodities()
|
|
{
|
|
List<SysIdString> commodities = new List<SysIdString>();
|
|
|
|
String aliasCommodity = "aCmd";
|
|
String aliasCommodityTemplate = "aCmdTmpl";
|
|
|
|
// Construct the query.
|
|
DbQuery qry = new DbQuery(db.DbmsType);
|
|
qry.DistinctRows = true;
|
|
qry.Tables.Add(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Commodity), aliasCommodity);
|
|
qry.Tables.Add(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Commodity), aliasCommodityTemplate);
|
|
qry.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_Id, aliasCommodityTemplate));
|
|
qry.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_Code, aliasCommodityTemplate));
|
|
qry.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_CommodityIdSalesProj, aliasCommodity) + "=" + SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_Id, aliasCommodityTemplate));
|
|
qry.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_AffIdOwner, aliasCommodityTemplate) + "=" + AffiliateId_Owner.ToString());
|
|
qry.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_AffIdOwner, aliasCommodity) + "=" + AffiliateId_Owner.ToString());
|
|
using (DbResultSet dbResultSet = DbResultSet_DataReader.ExecuteQuery(db, qry.ToString()))
|
|
{
|
|
if (dbResultSet != null && dbResultSet.NextRecord())
|
|
{
|
|
NamedValue.Map values = dbResultSet.GetRecordValues();
|
|
commodities.Add(new SysIdString(new SysId((int)values.GetValue(SbmDbDfn.GetColumnName(SbmDbDfn.ColumnIdx.Commodity_Id)).AsLong()),
|
|
values.GetValue(SbmDbDfn.GetColumnName(SbmDbDfn.ColumnIdx.Commodity_Code)).ToString()));
|
|
}
|
|
}
|
|
return commodities;
|
|
}
|
|
public override bool UpdateReferencesToSalesTemplate(SbmCommodity commodity)
|
|
{
|
|
ClearErrorState();
|
|
if (commodity == null) return SetErrorState("item not specified");
|
|
|
|
// Build update query to refresh all commodities that refer to this template.
|
|
List<String> filters = new List<String>();
|
|
filters.Add(SbmDbDfn.GetColumnName(SbmDbDfn.ColumnIdx.Commodity_CommodityIdSalesProj) + "=" + commodity.Id.ToString());
|
|
|
|
// Calculate monthly sales proportions.
|
|
String salesProjMonthlyProp = "";
|
|
double totalSalesProp = 0.0f;
|
|
double[] salesProp = new double[12];
|
|
int i = 0;
|
|
for (i = 0; i < 12; i++)
|
|
{
|
|
salesProp[i] = (double)commodity.GetSalesProp(i + 1);
|
|
salesProjMonthlyProp += (i > 0 ? "," : "") + StringUtil.FormatNumeric(salesProp[i], 2);
|
|
totalSalesProp += salesProp[i];
|
|
}
|
|
for (i = 0; i < 12; i++)
|
|
{
|
|
// Spread the projected sales evenly if the total proportion is invalid.
|
|
if (totalSalesProp <= 0)
|
|
salesProp[i] = 1 / 12;
|
|
else
|
|
// Otherwise, calculate the actual proportion to apply.
|
|
salesProp[i] /= totalSalesProp;
|
|
}
|
|
|
|
// Build the list of columns to update to bring each commodity into line with this template.
|
|
int propDecimals = 5;
|
|
int ordQtyDecimals = UserContext.GetOwnerOption_NumericDecimals(Sbm.OrgOption_NumericDecimals.OrderQuantity);
|
|
List<StringPair> value = new List<StringPair>();
|
|
SacsDatabase.AddValuePair(value, SbmDbDfn.GetColumnName(SbmDbDfn.ColumnIdx.Commodity_SalesProjMonthlyProp), salesProjMonthlyProp, true);
|
|
SacsDatabase.AddValuePair(value, SbmDbDfn.GetColumnName(SbmDbDfn.ColumnIdx.Commodity_SalesProjMonth01), DbQuery.FormatFn_Round(SbmDbDfn.GetColumnName(SbmDbDfn.ColumnIdx.Commodity_SalesProjAnnual) + "*" + StringUtil.FormatNumeric(salesProp[0], (ushort)propDecimals), ordQtyDecimals), false);
|
|
SacsDatabase.AddValuePair(value, SbmDbDfn.GetColumnName(SbmDbDfn.ColumnIdx.Commodity_SalesProjMonth02), DbQuery.FormatFn_Round(SbmDbDfn.GetColumnName(SbmDbDfn.ColumnIdx.Commodity_SalesProjAnnual) + "*" + StringUtil.FormatNumeric(salesProp[1], (ushort)propDecimals), ordQtyDecimals), false);
|
|
SacsDatabase.AddValuePair(value, SbmDbDfn.GetColumnName(SbmDbDfn.ColumnIdx.Commodity_SalesProjMonth03), DbQuery.FormatFn_Round(SbmDbDfn.GetColumnName(SbmDbDfn.ColumnIdx.Commodity_SalesProjAnnual) + "*" + StringUtil.FormatNumeric(salesProp[2], (ushort)propDecimals), ordQtyDecimals), false);
|
|
SacsDatabase.AddValuePair(value, SbmDbDfn.GetColumnName(SbmDbDfn.ColumnIdx.Commodity_SalesProjMonth04), DbQuery.FormatFn_Round(SbmDbDfn.GetColumnName(SbmDbDfn.ColumnIdx.Commodity_SalesProjAnnual) + "*" + StringUtil.FormatNumeric(salesProp[3], (ushort)propDecimals), ordQtyDecimals), false);
|
|
SacsDatabase.AddValuePair(value, SbmDbDfn.GetColumnName(SbmDbDfn.ColumnIdx.Commodity_SalesProjMonth05), DbQuery.FormatFn_Round(SbmDbDfn.GetColumnName(SbmDbDfn.ColumnIdx.Commodity_SalesProjAnnual) + "*" + StringUtil.FormatNumeric(salesProp[4], (ushort)propDecimals), ordQtyDecimals), false);
|
|
SacsDatabase.AddValuePair(value, SbmDbDfn.GetColumnName(SbmDbDfn.ColumnIdx.Commodity_SalesProjMonth06), DbQuery.FormatFn_Round(SbmDbDfn.GetColumnName(SbmDbDfn.ColumnIdx.Commodity_SalesProjAnnual) + "*" + StringUtil.FormatNumeric(salesProp[5], (ushort)propDecimals), ordQtyDecimals), false);
|
|
SacsDatabase.AddValuePair(value, SbmDbDfn.GetColumnName(SbmDbDfn.ColumnIdx.Commodity_SalesProjMonth07), DbQuery.FormatFn_Round(SbmDbDfn.GetColumnName(SbmDbDfn.ColumnIdx.Commodity_SalesProjAnnual) + "*" + StringUtil.FormatNumeric(salesProp[6], (ushort)propDecimals), ordQtyDecimals), false);
|
|
SacsDatabase.AddValuePair(value, SbmDbDfn.GetColumnName(SbmDbDfn.ColumnIdx.Commodity_SalesProjMonth08), DbQuery.FormatFn_Round(SbmDbDfn.GetColumnName(SbmDbDfn.ColumnIdx.Commodity_SalesProjAnnual) + "*" + StringUtil.FormatNumeric(salesProp[7], (ushort)propDecimals), ordQtyDecimals), false);
|
|
SacsDatabase.AddValuePair(value, SbmDbDfn.GetColumnName(SbmDbDfn.ColumnIdx.Commodity_SalesProjMonth09), DbQuery.FormatFn_Round(SbmDbDfn.GetColumnName(SbmDbDfn.ColumnIdx.Commodity_SalesProjAnnual) + "*" + StringUtil.FormatNumeric(salesProp[8], (ushort)propDecimals), ordQtyDecimals), false);
|
|
SacsDatabase.AddValuePair(value, SbmDbDfn.GetColumnName(SbmDbDfn.ColumnIdx.Commodity_SalesProjMonth10), DbQuery.FormatFn_Round(SbmDbDfn.GetColumnName(SbmDbDfn.ColumnIdx.Commodity_SalesProjAnnual) + "*" + StringUtil.FormatNumeric(salesProp[9], (ushort)propDecimals), ordQtyDecimals), false);
|
|
SacsDatabase.AddValuePair(value, SbmDbDfn.GetColumnName(SbmDbDfn.ColumnIdx.Commodity_SalesProjMonth11), DbQuery.FormatFn_Round(SbmDbDfn.GetColumnName(SbmDbDfn.ColumnIdx.Commodity_SalesProjAnnual) + "*" + StringUtil.FormatNumeric(salesProp[10], (ushort)propDecimals), ordQtyDecimals), false);
|
|
SacsDatabase.AddValuePair(value, SbmDbDfn.GetColumnName(SbmDbDfn.ColumnIdx.Commodity_SalesProjMonth12), DbQuery.FormatFn_Round(SbmDbDfn.GetColumnName(SbmDbDfn.ColumnIdx.Commodity_SalesProjAnnual) + "*" + StringUtil.FormatNumeric(salesProp[11], (ushort)propDecimals), ordQtyDecimals), false);
|
|
|
|
// Perform the update:
|
|
db.ExecuteUpdate(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Commodity), value, filters.Concat(" AND ", "(", ")"));
|
|
if (db.HasErrorState())
|
|
SetErrorState($"{db.ErrorStateMessage}");
|
|
|
|
return !HasErrorState();
|
|
}
|
|
|
|
//-------------------------------------------------------------------
|
|
// Building the DateTime Query methods.
|
|
|
|
//---------------------------------------------------------------
|
|
// Sales Quantity Query.
|
|
public String BuildSalesQuantityQuery(DateTime earliest, DateTime latest, bool completeOrders, String tableAliasCommodity)
|
|
{
|
|
tableAliasCommodity = StringUtil.OnEmpty(tableAliasCommodity, aliasCommodity);
|
|
// Calculate the quantity against sales orders for this commodity.
|
|
// Filter:
|
|
// Requirements for the commodity.
|
|
// Requirement is not cancelled.
|
|
// Orders created between the two dates.
|
|
// Order is not cancelled.
|
|
|
|
// Common definitions.
|
|
String alias_Transaction = "SQT";
|
|
String alias_Requirement = "SQR";
|
|
String colTrans_AffIdOwner = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Transaction_AffIdOwner, alias_Transaction);
|
|
String colTrans_Raised = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Transaction_Raised, alias_Transaction);
|
|
String colTrans_Closed = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Transaction_Closed, alias_Transaction);
|
|
String colTrans_Type = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Transaction_Type, alias_Transaction);
|
|
String colTrans_Status = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Transaction_Status, alias_Transaction);
|
|
String colReqnt_CmdId = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Requirement_CommodityId, alias_Requirement);
|
|
String colReqnt_Status = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Requirement_Status, alias_Requirement);
|
|
|
|
// Requirements for this commodity:
|
|
DbQuery qryReq = new DbQuery(db.DbmsType);
|
|
qryReq.Tables.Add(new StringPair(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Transaction), alias_Transaction));
|
|
qryReq.Tables.Add(new StringPair(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Requirement), alias_Requirement));
|
|
qryReq.Columns.Add("SUM(" + SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Requirement_Quantity, alias_Requirement) + ")");
|
|
qryReq.Filters.Add(colTrans_AffIdOwner + "=" + AffiliateId_Owner.ToString());
|
|
qryReq.Filters.Add(colTrans_Type + "=" + ((int)Sbm.TransactionType.SalesOrder).ToString());
|
|
if (completeOrders)
|
|
{
|
|
if (DateUtil.IsValid(earliest)) qryReq.Filters.Add(colTrans_Closed + ">=" + DbQuery.FormatDateForCondition(earliest));
|
|
if (DateUtil.IsValid(latest)) qryReq.Filters.Add(colTrans_Closed + "<" + DbQuery.FormatDateForCondition(DateUtil.IncrementDate(latest, 1)));
|
|
}
|
|
else
|
|
{
|
|
if (earliest.IsValid()) qryReq.Filters.Add(colTrans_Raised + ">=" + DbQuery.FormatDateForCondition(earliest));
|
|
if (latest.IsValid()) qryReq.Filters.Add(colTrans_Raised + "<" + DbQuery.FormatDateForCondition(DateUtil.IncrementDate(latest, 1)));
|
|
}
|
|
qryReq.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Transaction_Id, alias_Transaction) + "=" + SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Requirement_TransId, alias_Requirement));
|
|
qryReq.Filters.Add(colReqnt_CmdId + "=" + SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_Id, tableAliasCommodity));
|
|
if (completeOrders)
|
|
qryReq.Filters.Add(colTrans_Status + "='" + StatusCompleted + "'");
|
|
else
|
|
qryReq.Filters.Add(colTrans_Status + "<>'" + StatusCancelled + "'");
|
|
qryReq.Filters.Add(colReqnt_Status + "<>'" + StatusCancelled + "'");
|
|
return qryReq.BuildQuery();
|
|
}
|
|
|
|
//---------------------------------------------------------------
|
|
// Allocated Stock Query.
|
|
public String BuildAllocatedStockQuery(List<SysId> locIds)
|
|
{
|
|
// Calculate the pending movements sourced to sales order requirements.
|
|
String tableAliasMov = "StkAllMov";
|
|
DbQuery qryAll = new DbQuery(db.DbmsType);
|
|
qryAll.Tables.Add(new StringPair(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Movement), tableAliasMov));
|
|
qryAll.Columns.Add("SUM(" + SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Movement_Quantity, tableAliasMov) + ")");
|
|
qryAll.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Movement_ItemType, tableAliasMov) + "=" + ((int)Sbm.ItemType.Commodity).ToString());
|
|
qryAll.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Movement_ItemId, tableAliasMov) + "=" + SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_Id, aliasCommodity));
|
|
qryAll.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Movement_LocationIdFrom, tableAliasMov) + " IN (" + locIds.Concat(",") + ")");
|
|
qryAll.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Movement_ItemTypeSource, tableAliasMov) + "=" + ((int)Sbm.ItemType.Requirement).ToString());
|
|
qryAll.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Movement_Status, tableAliasMov) + "='" + StatusAwaiting + "'");
|
|
return qryAll.BuildQuery();
|
|
}
|
|
|
|
//---------------------------------------------------------------
|
|
// Currency Stock Query.
|
|
public String BuildCurrentStockQuery(List<SysId> locIds)
|
|
{
|
|
// Calculate the current stock level.
|
|
String aliasStockLevel = "aCmdStkLvl";
|
|
DbQuery qryLvl = new DbQuery(db.DbmsType);
|
|
qryLvl.Tables.Add(new StringPair(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.StockLevel), aliasStockLevel));
|
|
qryLvl.Columns.Add("SUM(" + SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.StockLevel_Quantity, aliasStockLevel) + ")");
|
|
qryLvl.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.StockLevel_Type, aliasStockLevel) + "=" + (int)Sbm.StockLevelType.CurrentLevel);
|
|
qryLvl.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.StockLevel_CommodityId, aliasStockLevel) + "=" + SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_Id, aliasCommodity));
|
|
qryLvl.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.StockLevel_LocationId, aliasStockLevel) + " IN (" + locIds.Concat(",") + ")");
|
|
qryLvl.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.StockLevel_Status, aliasStockLevel) + "='" + StatusCurrent + "'");
|
|
return qryLvl.BuildQuery();
|
|
}
|
|
|
|
//---------------------------------------------------------------
|
|
// Planned stock movements.
|
|
public class PlannedStockMovements_Params
|
|
{
|
|
public PlannedStockMovements_Params()
|
|
{
|
|
earliest = DateTime.MinValue;
|
|
latest = DateTime.MinValue;
|
|
moveCol = PlanStockMoveCol.ItemQuanity;
|
|
intoStock = true;
|
|
provisionalContainersOnly = false;
|
|
excludeAwaitingContainers = false;
|
|
tableAliasCommodity = aliasCommodity;
|
|
}
|
|
|
|
public DateTime earliest;
|
|
public DateTime latest;
|
|
public SbmCommodity.Params prmCmd;
|
|
public enum PlanStockMoveCol { ItemQuanity, MovementDate, };
|
|
public PlanStockMoveCol moveCol;
|
|
public bool intoStock;
|
|
public bool provisionalContainersOnly;
|
|
public bool excludeAwaitingContainers;
|
|
public String tableAliasCommodity;
|
|
public String commodityIdCol;
|
|
}
|
|
|
|
// Stock Movements Query.
|
|
public String BuildPlannedStockMovementsQuery(DateTime earliest, DateTime latest, SbmCommodity.Params prmCmd, bool intoStock, bool provisional, String tableAliasCommodity)
|
|
{
|
|
PlannedStockMovements_Params prm = new PlannedStockMovements_Params();
|
|
prm.earliest = earliest;
|
|
prm.latest = latest;
|
|
prm.prmCmd = prmCmd;
|
|
prm.intoStock = intoStock;
|
|
prm.provisionalContainersOnly = provisional;
|
|
prm.tableAliasCommodity = StringUtil.OnEmpty(tableAliasCommodity, aliasCommodity);
|
|
return BuildPlannedStockMovementsQuery(prm);
|
|
}
|
|
/// <summary> Calculate the quantity due to arrive into stock in the next month. This includes:
|
|
/// <para>~ Planned movements to stock locations (from non-stock locations) for > The commodity itself which Containers that include the commodity and then take away.</para>
|
|
/// <para>~ Planned movements from stock locations (to non-stock locations) for > The commodity itself which Containers that include the commodity.</para>
|
|
/// </summary>
|
|
public String BuildPlannedStockMovementsQuery(PlannedStockMovements_Params prm)
|
|
{
|
|
|
|
// In case this routine is called in isolation (eg. from Requirement manager).
|
|
PopulateLocationIdLists();
|
|
DbmsType dbmsType = db.DbmsType;
|
|
// Common definitions.
|
|
String alias_ContainerItem = "M1CI";
|
|
String alias_Container = "M1C";
|
|
String alias_Movement = "M1M";
|
|
String colMov_Movement = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Movement_Movement, alias_Movement);
|
|
String colMov_LocationIdFrom = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Movement_LocationIdFrom, alias_Movement);
|
|
String colMov_LocationIdTo = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Movement_LocationIdTo, alias_Movement);
|
|
String colMov_ItemType = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Movement_ItemType, alias_Movement);
|
|
String colMov_ItemId = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Movement_ItemId, alias_Movement);
|
|
String colMov_Type = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Movement_Type, alias_Movement);
|
|
String colMov_Status = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Movement_Status, alias_Movement);
|
|
|
|
// Commodity identity column.
|
|
String commodityIdCol = prm.commodityIdCol;
|
|
if (StringUtil.IsEmpty(commodityIdCol)) commodityIdCol = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_Id, prm.tableAliasCommodity);
|
|
|
|
// Stock locations.
|
|
SysId locStockId = prm.prmCmd.LocationIdStock;
|
|
List<SysId> LocStockIds = new List<SysId>();
|
|
if (prm.prmCmd.StockLocationFilter == Sbm.LocationFilter.All)
|
|
LocStockIds = locationIds_All;
|
|
else if (prm.prmCmd.StockLocationFilter == Sbm.LocationFilter.Calc)
|
|
LocStockIds = locationIds_Calc;
|
|
else if (!SysId.IsValid(locStockId))
|
|
LocStockIds = locationIds_Sales;
|
|
String stringLocStockIds = LocStockIds.Concat(",");
|
|
|
|
//---------------------------------------------------------------
|
|
// Planned stock movements for this commodity.
|
|
DbQuery qryMov1 = new DbQuery(db.DbmsType);
|
|
qryMov1.Tables.Add(new StringPair(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Movement), alias_Movement));
|
|
qryMov1.Filters.Add(colMov_ItemType + "=" + ((int)Sbm.ItemType.Commodity).ToString());
|
|
qryMov1.Filters.Add(colMov_ItemId + "=" + commodityIdCol);
|
|
qryMov1.Filters.Add(colMov_Type + "=" + ((int)Sbm.MovementType.StockTransfer).ToString() + " OR " + colMov_Type + "=" + ((int)Sbm.MovementType.SalesAllocation).ToString());
|
|
if (prm.earliest.IsValid())
|
|
qryMov1.Filters.Add(colMov_Movement + ">=" + DbQuery.FormatDateForCondition(prm.earliest));
|
|
if (prm.latest.IsValid())
|
|
qryMov1.Filters.Add(colMov_Movement + "<" + DbQuery.FormatDateForCondition(DateUtil.IncrementDate(prm.latest, 1)));
|
|
if (prm.intoStock)
|
|
{
|
|
if (SysId.IsValid(locStockId))
|
|
{
|
|
qryMov1.Filters.Add(colMov_LocationIdTo + "=" + locStockId.ToString());
|
|
}
|
|
else if (!stringLocStockIds.IsEmpty())
|
|
{
|
|
qryMov1.Filters.Add(colMov_LocationIdFrom + " NOT IN (" + stringLocStockIds + ")");
|
|
qryMov1.Filters.Add(colMov_LocationIdTo + " IN (" + stringLocStockIds + ")");
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (SysId.IsValid(locStockId))
|
|
{
|
|
qryMov1.Filters.Add(colMov_LocationIdFrom + "=" + locStockId.ToString());
|
|
}
|
|
else if (!stringLocStockIds.IsEmpty())
|
|
{
|
|
qryMov1.Filters.Add(colMov_LocationIdFrom + " IN (" + stringLocStockIds + ")");
|
|
qryMov1.Filters.Add(colMov_LocationIdTo + " NOT IN (" + stringLocStockIds + ")");
|
|
}
|
|
}
|
|
if (prm.provisionalContainersOnly)
|
|
// There won't be any commodity movements with status 'provisional', at least no functionality for this at the moment!
|
|
// But this keeps the logic in the method clean and consistent (just a bit of Db I/O overhead).
|
|
qryMov1.Filters.Add(colMov_Status + "='" + StatusProvisional + "'");
|
|
else
|
|
qryMov1.Filters.Add(colMov_Status + "='" + StatusAwaiting + "'");
|
|
|
|
// Need 2 versions of the query.
|
|
// a. To count the records.
|
|
// b. To retrieve the quantity sum (when there is at least 1 record).
|
|
// This avoids getting a null value for the sum when there are no matching records.
|
|
qryMov1.Columns.Clear();
|
|
qryMov1.Columns.Add("Count(1)");
|
|
String qryMov1a = qryMov1.BuildQuery();
|
|
qryMov1.Columns.Clear();
|
|
if (prm.moveCol == PlannedStockMovements_Params.PlanStockMoveCol.MovementDate)
|
|
qryMov1.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Movement_Movement, alias_Movement));
|
|
else
|
|
qryMov1.Columns.Add("SUM(" + SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Movement_Quantity, alias_Movement) + ")");
|
|
String qryMov1b = qryMov1.BuildQuery();
|
|
|
|
//---------------------------------------------------------------
|
|
// Planned stock movements for containers that include this commodity.
|
|
String qryMov2a = ""; String qryMov2b = "";
|
|
if (db.TableExists(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Container)))
|
|
{
|
|
DbQuery qryMov2 = new DbQuery(db.DbmsType);
|
|
qryMov2.Tables.Add(new StringPair(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.ContainerItem), alias_ContainerItem));
|
|
qryMov2.Tables.Add(new StringPair(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Container), alias_Container));
|
|
qryMov2.Tables.Add(new StringPair(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Movement), alias_Movement));
|
|
|
|
// Container.
|
|
qryMov2.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Container_Id, alias_Container) + "=" + SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.ContainerItem_ContainerId, alias_ContainerItem));
|
|
//qryMov2.Filters.Add= SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Container_AffIdOwner,alias_Container)+"="+AffiliateId_Owner.ToString());
|
|
if (prm.provisionalContainersOnly)
|
|
qryMov2.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Container_Status, alias_Container) + " IN ('" + StatusProvisional + "')");
|
|
else if (prm.excludeAwaitingContainers)
|
|
qryMov2.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Container_Status, alias_Container) + " NOT IN ('" + StatusAwaiting + "','" + StatusProvisional + "','" + StatusDisabled + "','" + StatusCancelled + "','" + StatusDeleted + "')");
|
|
else
|
|
qryMov2.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Container_Status, alias_Container) + " NOT IN ('" + StatusProvisional + "','" + StatusDisabled + "','" + StatusCancelled + "','" + StatusDeleted + "')");
|
|
|
|
// Container item must identify the Commodity.
|
|
qryMov2.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.ContainerItem_ItemType, alias_ContainerItem) + "=" + ((int)Sbm.ItemType.Commodity).ToString());
|
|
qryMov2.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.ContainerItem_ItemId, alias_ContainerItem) + "=" + commodityIdCol);
|
|
qryMov2.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.ContainerItem_Status, alias_ContainerItem) + " NOT IN('" + StatusCancelled + "','" + StatusDisabled + "','" + StatusDeleted + "')");
|
|
|
|
// Movement.
|
|
qryMov2.Filters.Add(colMov_ItemType + "=" + (((int)Sbm.ItemType.Container).ToString()).ToString());
|
|
qryMov2.Filters.Add(colMov_ItemId + "=" + SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Container_Id, alias_Container));
|
|
qryMov2.Filters.Add(colMov_Type + "=" + ((int)Sbm.MovementType.StockTransfer).ToString() + " OR " + colMov_Type + "=" + ((int)Sbm.MovementType.SalesAllocation).ToString());
|
|
if (prm.earliest.IsValid())
|
|
qryMov2.Filters.Add(colMov_Movement + ">=" + DbQuery.FormatDateForCondition(prm.earliest));
|
|
if (prm.latest.IsValid())
|
|
qryMov2.Filters.Add(colMov_Movement + "<" + DbQuery.FormatDateForCondition(DateUtil.IncrementDate(prm.latest, 1)));
|
|
if (prm.intoStock)
|
|
{
|
|
if (SysId.IsValid(locStockId))
|
|
qryMov2.Filters.Add(colMov_LocationIdTo + "=" + locStockId.ToString());
|
|
else if (!stringLocStockIds.IsEmpty())
|
|
{
|
|
qryMov2.Filters.Add(colMov_LocationIdFrom + " NOT IN (" + stringLocStockIds + ")");
|
|
qryMov2.Filters.Add(colMov_LocationIdTo + " IN (" + stringLocStockIds + ")");
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (SysId.IsValid(locStockId))
|
|
qryMov2.Filters.Add(colMov_LocationIdFrom + "=" + locStockId.ToString());
|
|
else if (!stringLocStockIds.IsEmpty())
|
|
{
|
|
qryMov2.Filters.Add(colMov_LocationIdFrom + " IN (" + stringLocStockIds + ")");
|
|
qryMov2.Filters.Add(colMov_LocationIdTo + " NOT IN (" + stringLocStockIds + ")");
|
|
}
|
|
}
|
|
qryMov2.Filters.Add(colMov_Status + "='" + StatusAwaiting + "'");
|
|
|
|
// Need 2 versions of the query (as above).
|
|
qryMov2.Columns.Clear();
|
|
qryMov2.Columns.Add("Count(1)");
|
|
qryMov2a = qryMov2.BuildQuery();
|
|
qryMov2.Columns.Clear();
|
|
if (prm.moveCol == PlannedStockMovements_Params.PlanStockMoveCol.MovementDate)
|
|
qryMov2.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Movement_Movement, alias_Movement));
|
|
else
|
|
qryMov2.Columns.Add("SUM(" + SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.ContainerItem_Quantity, alias_ContainerItem) + ")");
|
|
qryMov2b = qryMov2.BuildQuery();
|
|
}
|
|
|
|
//---------------------------------------------------------------
|
|
// If the movement date is requested, union the commodity and container movement queries to return a single list of dates.
|
|
if (prm.moveCol == PlannedStockMovements_Params.PlanStockMoveCol.MovementDate)
|
|
{
|
|
if (!StringUtil.IsEmpty(qryMov2a) && !StringUtil.IsEmpty(qryMov2b))
|
|
return "(" + qryMov1b + ") UNION (" + qryMov2b + ")";
|
|
else
|
|
return qryMov1b;
|
|
}
|
|
|
|
String sQry;
|
|
if (dbmsType == DbmsType.MsSql)
|
|
{
|
|
// MS SQL syntax:
|
|
if (!qryMov2a.IsEmpty() && !qryMov2b.IsEmpty())
|
|
sQry = "IsNull((" + qryMov1b + "),0) + IsNull((" + qryMov2b + "),0)";
|
|
else
|
|
sQry = "IsNull((" + qryMov1b + "),0)";
|
|
}
|
|
else
|
|
{
|
|
// Calculate the total (MS Access version).
|
|
// NB The 'nz' function supplies an alternative value to use when the first parameter is null.
|
|
// This is required as the sub-queries will return null if there are no matching rows to sum:
|
|
if (!qryMov2a.IsEmpty() && !qryMov2b.IsEmpty())
|
|
sQry = "iif((" + qryMov1a + ")=0,0,(" + qryMov1b + "))+iif((" + qryMov2a + ")=0,0,(" + qryMov2b + "))";
|
|
else
|
|
sQry = "iif((" + qryMov1a + ")=0,0,(" + qryMov1b + "))";
|
|
}
|
|
return sQry;
|
|
|
|
//---------------------------------------------------------------
|
|
}
|
|
//-------------------------------------------------------------------
|
|
// Populate LocationId Lists.
|
|
public void PopulateLocationIdLists()
|
|
{
|
|
// Verify that the location table exists.
|
|
String tableLocation = SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Location);
|
|
if (!db.TableExists(tableLocation)) return;
|
|
|
|
locationIdListPopulated = true;
|
|
String colLocation_Id = SbmDbDfn.GetColumnName(SbmDbDfn.ColumnIdx.Location_Id);
|
|
String colLocation_AffIdOwner = SbmDbDfn.GetColumnName(SbmDbDfn.ColumnIdx.Location_AffIdOwner);
|
|
String colLocation_Flags = SbmDbDfn.GetColumnName(SbmDbDfn.ColumnIdx.Location_Flags);
|
|
String colLocation_Status = SbmDbDfn.GetColumnName(SbmDbDfn.ColumnIdx.Location_Status);
|
|
|
|
// Stock locations.
|
|
DbQuery qryLoc = new DbQuery(db.DbmsType);
|
|
qryLoc.Tables.Add(tableLocation);
|
|
qryLoc.Columns.Add(colLocation_Id);
|
|
qryLoc.Columns.Add(colLocation_Flags);
|
|
qryLoc.Columns.Add(colLocation_Status);
|
|
qryLoc.Filters.Add(colLocation_AffIdOwner + "=" + AffiliateId_Owner.ToString());
|
|
using (DbResultSet dbResultSet = DbResultSet_DataReader.ExecuteQuery(db, qryLoc.BuildQuery()))
|
|
{
|
|
while (dbResultSet != null && dbResultSet.NextRecord())
|
|
{
|
|
NamedValue.Map values = dbResultSet.GetRecordValues();
|
|
SysId locationId = new SysId((int)values.GetValue(colLocation_Id).AsLong());
|
|
short flags = values.GetValue(colLocation_Flags).ToString().ToShort();
|
|
SaStatus status = SacsSystem.GetStatusForCode(values.GetValue(colLocation_Status).ToString());
|
|
if (status == SaStatus.Active)
|
|
{
|
|
locationIds_All.Add(locationId);
|
|
if (SacsHierarchyItem.GetFlag((ushort)flags, SbmLocation.Flag_CalculateStock))
|
|
locationIds_Calc.Add(locationId);
|
|
if (SacsHierarchyItem.GetFlag((ushort)flags, SbmLocation.Flag_SalesStock))
|
|
locationIds_Sales.Add(locationId);
|
|
else
|
|
locationIds_NonSales.Add(locationId);
|
|
}
|
|
}
|
|
}
|
|
if (locationIds_Sales.Count > 0)
|
|
{
|
|
// Assume that all locations are for sales.
|
|
locationIds_Sales.Clear();
|
|
locationIds_Sales.AddIds(locationIds_NonSales);
|
|
locationIds_NonSales.Clear();
|
|
}
|
|
}
|
|
|
|
//-------------------------------------------------------------------
|
|
// Get Commodity.
|
|
public override SbmCommodity GetCommodity(SbmCommodity.Params prm)
|
|
{
|
|
return GetCommodity(GetCommodityQueryFilter(prm).Concat(" AND ", "(", ")"));
|
|
}
|
|
private SbmCommodity GetCommodity(String filter)
|
|
{
|
|
ClearErrorState();
|
|
long count = GetCommodityCount(filter);
|
|
if (count == 0) return null;
|
|
if (count != 1)
|
|
{
|
|
SetErrorState("Multiple Commodities found");
|
|
return null;
|
|
}
|
|
SbmCommodity commodity = null;
|
|
// Query data.
|
|
using (var dbConnection = db.CreateConnection())
|
|
using (var dbCommand = dbConnection.CreateCommand())
|
|
{
|
|
try
|
|
{
|
|
dbConnection.Open();
|
|
Commodity_Db dbCommodity = new Commodity_Db(DbInfo);
|
|
dbCommodity.PopulateFrom(dbCommand, aliasCommodity, filter);
|
|
commodity = CreateCommodity(dbCommodity);
|
|
}
|
|
catch (Exception exc)
|
|
{
|
|
SetErrorState("Database query exception");
|
|
SaLogger.Warn($"{SysUtil.Fn}\n\tQuery: {dbCommand.CommandText}\n\t{ExceptionUtil.GetErrorStateMessage(exc)}");
|
|
}
|
|
}
|
|
return commodity;
|
|
}
|
|
|
|
//-------------------------------------------------------------------
|
|
// Create Commodity.
|
|
public override SbmCommodity CreateCommodity(Sbm.CommodityType commodityType, String code)
|
|
{
|
|
return new SbmCommodity_Dbas(Internals, null, AffiliateId_Owner, commodityType, code, 0);
|
|
}
|
|
private SbmCommodity_Dbas CreateCommodity(Commodity_Db dbCommodity)
|
|
{
|
|
ClearErrorState();
|
|
SbmCommodity_Dbas commodity = new SbmCommodity_Dbas(Internals, new SysId(dbCommodity._Id), new SysId(dbCommodity._AffIdOwner), (Sbm.CommodityType)dbCommodity._Type, dbCommodity._Code, (ushort)dbCommodity._Flags);
|
|
PopulateFrom(dbCommodity, commodity);
|
|
return commodity;
|
|
}
|
|
|
|
//-------------------------------------------------------------------
|
|
// Validate Commodity.
|
|
public override bool IsValidCommodityData(SbmCommodity.Data data, SbmCommodity.ErrField errField)
|
|
{
|
|
ClearErrorState();
|
|
if (!base.IsValidCommodityData(data, errField)) return false;
|
|
return true;
|
|
}
|
|
|
|
//-------------------------------------------------------------------
|
|
// Insert Commodity.
|
|
public override bool InsertCommodity(SbmCommodity commodity, DbUpdateInfo dbUpdateInfo)
|
|
{
|
|
ClearErrorState();
|
|
if (!IsValidCommodity(commodity)) return false;
|
|
if (SysId.IsValid(commodity.Id)) return SetErrorState(ErrorMessage.ValiditemId);
|
|
using (var dbConnection = db.CreateConnection())
|
|
using (var dbCommand = dbConnection.CreateCommand())
|
|
{
|
|
try
|
|
{
|
|
dbConnection.Open();
|
|
Commodity_Db dbCommodity = new Commodity_Db(DbInfo);
|
|
PopulateTo(dbCommodity, commodity, dbUpdateInfo);
|
|
if (Commodity_Db.FieldsNonId.Contains("Id"))
|
|
{
|
|
// Generate next Id.
|
|
dbCommodity._Id = SysId.ToInt(db.GetNextId("Commodity", dbUpdateInfo));
|
|
}
|
|
dbCommodity.ExecuteInsertCommand(dbCommand);
|
|
commodity.Id = new SysId(dbCommodity._Id);
|
|
commodity.Changed = false;
|
|
if (DebugMode) SaLogger.Debug($"{SysUtil.Fn} Inserted. " + GetLogProperties(commodity).Concat(": ").Concat("", "\n\t"));
|
|
}
|
|
catch (Exception exc) { SetErrorState(exc.Message); }
|
|
}
|
|
return !HasErrorState();
|
|
}
|
|
|
|
//-------------------------------------------------------------------
|
|
// Update Commodity.
|
|
public override bool UpdateCommodity(SbmCommodity commodity, DbUpdateInfo dbUpdateInfo)
|
|
{
|
|
ClearErrorState();
|
|
if (!IsValidCommodity(commodity)) return false;
|
|
if (!SysId.IsValid(commodity.Id)) return SetErrorState(ErrorMessage.InvalidItemId);
|
|
if (!commodity.Changed)
|
|
{
|
|
if (DebugMode) SaLogger.Debug($"{SysUtil.Fn} Data not changed. " + GetLogProperties(commodity).Concat(": ").Concat("", "\n\t"));
|
|
return true;
|
|
}
|
|
using (var dbConnection = db.CreateConnection())
|
|
using (var dbCommand = dbConnection.CreateCommand())
|
|
{
|
|
try
|
|
{
|
|
// Retrieve commodity.
|
|
dbConnection.Open();
|
|
Commodity_Db dbCommodity = new Commodity_Db(DbInfo);
|
|
dbCommodity.PopulateFrom(dbCommand, aliasCommodity, "Id=" + SysId.ToString(commodity.Id));
|
|
SbmUpdateLogItemMonitor_Commodity updateLogMonitor = new SbmUpdateLogItemMonitor_Commodity(Internals, CreateCommodity(dbCommodity));
|
|
|
|
// Update properties.
|
|
PopulateTo(dbCommodity, commodity, dbUpdateInfo);
|
|
dbCommodity.ExecuteUpdateCommand(dbCommand);
|
|
commodity.Changed = false;
|
|
if (DebugMode) SaLogger.Debug($"{SysUtil.Fn} Updated. " + GetLogProperties(commodity).Concat(": ").Concat("", "\n\t"));
|
|
|
|
// Record updates.
|
|
updateLogMonitor.RecordUpdatedValues(commodity);
|
|
updateLogMonitor.LogUpdates();
|
|
}
|
|
catch (Exception exc) { SetErrorState(exc.Message); }
|
|
}
|
|
return !HasErrorState();
|
|
}
|
|
|
|
//-------------------------------------------------------------------
|
|
// Delete Commodity.
|
|
public override bool CommodityCanBeDeleted(SbmCommodity commodity)
|
|
{
|
|
ClearErrorState();
|
|
if (!base.CommodityCanBeDeleted(commodity)) return false;
|
|
return true;
|
|
}
|
|
public override bool DeleteCommodity(SbmCommodity commodity, DbUpdateInfo dbUpdateInfo)
|
|
{
|
|
ClearErrorState();
|
|
if (!CommodityCanBeDeleted(commodity)) return false;
|
|
using (var dbConnection = db.CreateConnection())
|
|
using (var dbCommand = dbConnection.CreateCommand())
|
|
{
|
|
try
|
|
{
|
|
// Retrieve Commodity.
|
|
dbConnection.Open();
|
|
Commodity_Db dbCommodity = new Commodity_Db(DbInfo);
|
|
dbCommodity.PopulateFrom(dbCommand, aliasCommodity, "Id=" + commodity.Id.ToString());
|
|
// Delete Commodity.
|
|
dbCommand.CommandType = System.Data.CommandType.Text;
|
|
dbCommand.CommandText = "DELETE FROM " + SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Commodity) + " WHERE Id=" + SysId.ToString(commodity.Id) + ";";
|
|
dbCommand.ExecuteNonQuery();
|
|
commodity.Changed = false;
|
|
if (DebugMode) SaLogger.Debug($"{SysUtil.Fn} Deleted. " + GetLogProperties(commodity).Concat(": ").Concat("", "\n\t"));
|
|
}
|
|
catch (Exception exc) { SetErrorState(exc.Message); }
|
|
}
|
|
return !HasErrorState();
|
|
}
|
|
|
|
//-------------------------------------------------------------------
|
|
// Copy data properties to and from database.
|
|
private void PopulateTo(Commodity_Db dbCommodity, SbmCommodity commodity, DbUpdateInfo dbUpdateInfo)
|
|
{
|
|
dbCommodity._Id = commodity.Id.ToInt();
|
|
dbCommodity._AffIdOwner = commodity.AffiliateIdOwner.ToInt();
|
|
dbCommodity._Type = (short)commodity.CommodityType;
|
|
dbCommodity._Code = commodity.Code;
|
|
dbCommodity._DescBrief = commodity.DescBrief;
|
|
dbCommodity._DescOrder = commodity.DescOrder;
|
|
dbCommodity._DescDetail = commodity.DescDetail;
|
|
dbCommodity._DrawingNo = commodity.DrawingNumber;
|
|
dbCommodity._DrawingIssue = commodity.DrawingIssue;
|
|
dbCommodity._AssetCatId = commodity.AssetCatId.ToInt();
|
|
dbCommodity._ImagePath = commodity.ImagePath;
|
|
dbCommodity._Category = commodity.Category1;
|
|
dbCommodity._Category2 = commodity.Category2;
|
|
dbCommodity._Category3 = commodity.Category3;
|
|
dbCommodity._Location = commodity.Location;
|
|
dbCommodity._Department = commodity.Department;
|
|
dbCommodity._CatalogRef = commodity.CatalogRef;
|
|
dbCommodity._Weight = commodity.Weight;
|
|
dbCommodity._UomIdWeight = commodity.UomIdWeight.ToInt();
|
|
dbCommodity._Length = commodity.Length;
|
|
dbCommodity._UomIdLength = commodity.UomIdLength.ToInt();
|
|
dbCommodity._Volume = commodity.Volume;
|
|
dbCommodity._UomIdVolume = commodity.UomIdVolume.ToInt();
|
|
dbCommodity._Density = commodity.Density;
|
|
dbCommodity._UomIdDensity = commodity.UomIdDensity.ToInt();
|
|
dbCommodity._BoxQuantity = commodity.BoxQuantity;
|
|
dbCommodity._UomIdBox = commodity.UomIdBox.ToInt();
|
|
dbCommodity._Dimensions = commodity.Dimensions;
|
|
dbCommodity._SpecSummary = commodity.SpecSummary;
|
|
dbCommodity._RangeCode = commodity.RangeCode;
|
|
dbCommodity._ColourCode = commodity.ColourCode;
|
|
dbCommodity._SourceCode = commodity.SourceCode;
|
|
dbCommodity._SupplyMethodCode = commodity.SupplyMethodCode;
|
|
dbCommodity._HandlingCode = commodity.HandlingCode;
|
|
dbCommodity._DeliveryCode = commodity.DeliveryCode;
|
|
dbCommodity._MaterialCode = commodity.MaterialCode;
|
|
dbCommodity._FinishCode = commodity.FinishCode;
|
|
dbCommodity._PromotionCode = commodity.PromotionCode;
|
|
dbCommodity._NominalCode = commodity.NominalCode;
|
|
dbCommodity._NominalCodePurchase = commodity.NominalCodePurchase;
|
|
dbCommodity._ICNTariffCode = commodity.ICNTariffCode;
|
|
dbCommodity._TimeProd = commodity.TimeProd;
|
|
dbCommodity._UomIdTimeProd = commodity.UomIdTimeProd.ToInt();
|
|
dbCommodity._AssIdSupplier = commodity.AssociationIdSupplier.ToInt();
|
|
dbCommodity._SupplierRef = commodity.SupplierRef;
|
|
dbCommodity._CostPrice = commodity.CostPrice;
|
|
dbCommodity._PlaceOfOrigin = commodity.PlaceOfOrigin;
|
|
dbCommodity._MaterialCost = commodity.MaterialCost;
|
|
dbCommodity._CurrencyIdMaterial = commodity.CurrencyIdMaterial.ToInt();
|
|
dbCommodity._ExWorksCost = commodity.ExWorksCost;
|
|
dbCommodity._CurrencyIdExWorks = commodity.CurrencyIdExWorks.ToInt();
|
|
dbCommodity._ReorderLevel = commodity.ReorderLevel;
|
|
dbCommodity._ReorderQty = commodity.ReorderQty;
|
|
dbCommodity._QtyOnOrder = commodity.QtyOnOrder;
|
|
dbCommodity._AssIdCustomer = commodity.AssociationIdCustomer.ToInt();
|
|
dbCommodity._SalesPrice = commodity.SalesPrice;
|
|
dbCommodity._RetailPrice = commodity.RetailPrice;
|
|
dbCommodity._RetailPricePlanned = commodity.RetailPricePlanned;
|
|
dbCommodity._UomIdSale = commodity.UomIdSale.ToInt();
|
|
dbCommodity._CarriageCostIndicative = commodity.CarriageCostIndicative;
|
|
dbCommodity._MinOrderQty = commodity.MinOrderQty;
|
|
dbCommodity._PackQty = commodity.PackQtySale;
|
|
dbCommodity._TaxCodeId = commodity.TaxCodeId.ToInt();
|
|
dbCommodity._LastOrderDate = commodity.LastOrderDate;
|
|
dbCommodity._LastOrderQty = commodity.LastOrderQty;
|
|
dbCommodity._QtyInStock = commodity.QtyInStock;
|
|
dbCommodity._QtyAllocated = commodity.QtyAllocated;
|
|
dbCommodity._FreeStock = commodity.FreeStock;
|
|
dbCommodity._StockTakeDate = commodity.StockTakeDate;
|
|
dbCommodity._StockTakeQty = commodity.StockTakeQty;
|
|
dbCommodity._CommodityIdSalesProj = commodity.CommodityIdSalesProj.ToInt();
|
|
dbCommodity._SalesProjAnnual = commodity.SalesProjAnnual;
|
|
dbCommodity._SalesProjMonth01 = commodity.SalesProjMonth01;
|
|
dbCommodity._SalesProjMonth02 = commodity.SalesProjMonth02;
|
|
dbCommodity._SalesProjMonth03 = commodity.SalesProjMonth03;
|
|
dbCommodity._SalesProjMonth04 = commodity.SalesProjMonth04;
|
|
dbCommodity._SalesProjMonth05 = commodity.SalesProjMonth05;
|
|
dbCommodity._SalesProjMonth06 = commodity.SalesProjMonth06;
|
|
dbCommodity._SalesProjMonth07 = commodity.SalesProjMonth07;
|
|
dbCommodity._SalesProjMonth08 = commodity.SalesProjMonth08;
|
|
dbCommodity._SalesProjMonth09 = commodity.SalesProjMonth09;
|
|
dbCommodity._SalesProjMonth10 = commodity.SalesProjMonth10;
|
|
dbCommodity._SalesProjMonth11 = commodity.SalesProjMonth11;
|
|
dbCommodity._SalesProjMonth12 = commodity.SalesProjMonth12;
|
|
// Common properties.
|
|
dbCommodity._Notes = commodity.Notes;
|
|
dbCommodity._Status = SacsSystem.GetStatusCode(commodity.Status);
|
|
dbCommodity._Flags = (short)commodity.Flags;
|
|
if (!SysId.IsValid(commodity.Id))
|
|
{
|
|
dbCommodity._CreateOn = DateTime.UtcNow;
|
|
dbCommodity._CreateBy = dbUpdateInfo.UserId.ToInt();
|
|
dbCommodity._CreateHost = dbUpdateInfo.Host;
|
|
}
|
|
dbCommodity._UpdateOn = DateTime.UtcNow;
|
|
dbCommodity._UpdateBy = dbUpdateInfo.UserId.ToInt();
|
|
dbCommodity._UpdateHost = dbUpdateInfo.Host;
|
|
}
|
|
private void PopulateFrom(Commodity_Db dbCommodity, SbmCommodity commodity)
|
|
{
|
|
//commodity.Id = new SysId(dbCommodity._Id);
|
|
commodity.AffiliateIdOwner = new SysId(dbCommodity._AffIdOwner);
|
|
commodity.CommodityType = (Sbm.CommodityType)dbCommodity._Type;
|
|
commodity.Code = dbCommodity._Code;
|
|
commodity.DescBrief = dbCommodity._DescBrief;
|
|
commodity.DescOrder = dbCommodity._DescOrder;
|
|
commodity.DescDetail = dbCommodity._DescDetail;
|
|
commodity.DrawingNumber = dbCommodity._DrawingNo;
|
|
commodity.DrawingIssue = dbCommodity._DrawingIssue;
|
|
commodity.AssetCatId = new SysId(dbCommodity._AssetCatId);
|
|
commodity.ImagePath = dbCommodity._ImagePath;
|
|
commodity.Category1 = dbCommodity._Category;
|
|
commodity.Category2 = dbCommodity._Category2;
|
|
commodity.Category3 = dbCommodity._Category3;
|
|
commodity.Location = dbCommodity._Location;
|
|
commodity.Department = dbCommodity._Department;
|
|
commodity.CatalogRef = dbCommodity._CatalogRef;
|
|
commodity.Weight = dbCommodity._Weight;
|
|
commodity.UomIdWeight = new SysId(dbCommodity._UomIdWeight);
|
|
commodity.Length = dbCommodity._Length;
|
|
commodity.UomIdLength = new SysId(dbCommodity._UomIdLength);
|
|
commodity.Volume = dbCommodity._Volume;
|
|
commodity.UomIdVolume = new SysId(dbCommodity._UomIdVolume);
|
|
commodity.Density = dbCommodity._Density;
|
|
commodity.UomIdDensity = new SysId(dbCommodity._UomIdDensity);
|
|
commodity.BoxQuantity = dbCommodity._BoxQuantity;
|
|
commodity.UomIdBox = new SysId(dbCommodity._UomIdBox);
|
|
commodity.Dimensions = dbCommodity._Dimensions;
|
|
commodity.SpecSummary = dbCommodity._SpecSummary;
|
|
commodity.RangeCode = dbCommodity._RangeCode;
|
|
commodity.ColourCode = dbCommodity._ColourCode;
|
|
commodity.SourceCode = dbCommodity._SourceCode;
|
|
commodity.SupplyMethodCode = dbCommodity._SupplyMethodCode;
|
|
commodity.HandlingCode = dbCommodity._HandlingCode;
|
|
commodity.DeliveryCode = dbCommodity._DeliveryCode;
|
|
commodity.MaterialCode = dbCommodity._MaterialCode;
|
|
commodity.FinishCode = dbCommodity._FinishCode;
|
|
commodity.PromotionCode = dbCommodity._PromotionCode;
|
|
commodity.NominalCode = dbCommodity._NominalCode;
|
|
commodity.NominalCodePurchase = dbCommodity._NominalCodePurchase;
|
|
commodity.ICNTariffCode = dbCommodity._ICNTariffCode;
|
|
commodity.TimeProd = dbCommodity._TimeProd;
|
|
commodity.UomIdTimeProd = new SysId(dbCommodity._UomIdTimeProd);
|
|
commodity.AssociationIdSupplier = new SysId(dbCommodity._AssIdSupplier);
|
|
commodity.SupplierRef = dbCommodity._SupplierRef;
|
|
commodity.CostPrice = dbCommodity._CostPrice;
|
|
commodity.PlaceOfOrigin = dbCommodity._PlaceOfOrigin;
|
|
commodity.MaterialCost = dbCommodity._MaterialCost;
|
|
commodity.CurrencyIdMaterial = new SysId(dbCommodity._CurrencyIdMaterial);
|
|
commodity.ExWorksCost = dbCommodity._ExWorksCost;
|
|
commodity.CurrencyIdExWorks = new SysId(dbCommodity._CurrencyIdExWorks);
|
|
commodity.ReorderLevel = dbCommodity._ReorderLevel;
|
|
commodity.ReorderQty = dbCommodity._ReorderQty;
|
|
commodity.QtyOnOrder = dbCommodity._QtyOnOrder;
|
|
commodity.AssociationIdCustomer = new SysId(dbCommodity._AssIdCustomer);
|
|
commodity.SalesPrice = dbCommodity._SalesPrice;
|
|
commodity.RetailPrice = dbCommodity._RetailPrice;
|
|
commodity.RetailPricePlanned = dbCommodity._RetailPricePlanned;
|
|
commodity.UomIdSale = new SysId(dbCommodity._UomIdSale);
|
|
commodity.CarriageCostIndicative = dbCommodity._CarriageCostIndicative;
|
|
commodity.MinOrderQty = dbCommodity._MinOrderQty;
|
|
commodity.PackQtySale = dbCommodity._PackQty;
|
|
commodity.TaxCodeId = new SysId(dbCommodity._TaxCodeId);
|
|
commodity.LastOrderDate = dbCommodity._LastOrderDate;
|
|
commodity.LastOrderQty = dbCommodity._LastOrderQty;
|
|
commodity.QtyInStock = dbCommodity._QtyInStock;
|
|
commodity.QtyAllocated = dbCommodity._QtyAllocated;
|
|
commodity.FreeStock = dbCommodity._FreeStock;
|
|
commodity.StockTakeDate = dbCommodity._StockTakeDate;
|
|
commodity.StockTakeQty = dbCommodity._StockTakeQty;
|
|
commodity.CommodityIdSalesProj = new SysId(dbCommodity._CommodityIdSalesProj);
|
|
commodity.SalesProjAnnual = dbCommodity._SalesProjAnnual;
|
|
commodity.SalesProjMonth01 = dbCommodity._SalesProjMonth01;
|
|
commodity.SalesProjMonth02 = dbCommodity._SalesProjMonth02;
|
|
commodity.SalesProjMonth03 = dbCommodity._SalesProjMonth03;
|
|
commodity.SalesProjMonth04 = dbCommodity._SalesProjMonth04;
|
|
commodity.SalesProjMonth05 = dbCommodity._SalesProjMonth05;
|
|
commodity.SalesProjMonth06 = dbCommodity._SalesProjMonth06;
|
|
commodity.SalesProjMonth07 = dbCommodity._SalesProjMonth07;
|
|
commodity.SalesProjMonth08 = dbCommodity._SalesProjMonth08;
|
|
commodity.SalesProjMonth09 = dbCommodity._SalesProjMonth09;
|
|
commodity.SalesProjMonth10 = dbCommodity._SalesProjMonth10;
|
|
commodity.SalesProjMonth11 = dbCommodity._SalesProjMonth11;
|
|
commodity.SalesProjMonth12 = dbCommodity._SalesProjMonth12;
|
|
// Common properties.
|
|
commodity.Notes = dbCommodity._Notes;
|
|
commodity.Status = SacsSystem.GetStatusForCode(dbCommodity._Status);
|
|
commodity.SetCreateStamp(dbCommodity._CreateOn, new SysId(dbCommodity._CreateBy), dbCommodity._CreateHost);
|
|
commodity.SetUpdateStamp(dbCommodity._UpdateOn, new SysId(dbCommodity._UpdateBy), dbCommodity._UpdateHost);
|
|
commodity.AcceptChanges();
|
|
}
|
|
|
|
//-------------------------------------------------------------------
|
|
// Column definitions.
|
|
private static readonly String aliasCommodity = "aCmd";
|
|
private static String aliasCommodity_CmdCustomer = "Cmd_CmdCust";
|
|
private static String prefixCommodity_CmdCustomer = aliasCommodity_CmdCustomer + "_";
|
|
private static String aliasCommodity_AssocationSupplier = "Cmd_AssSupp";
|
|
private static String prefixCommodity_AssocationSupplier = aliasCommodity_AssocationSupplier + "_";
|
|
private static String aliasCommodity_AffiliateSupplier = "Cmd_AffSupp";
|
|
private static String prefixCommodity_AffiliateSupplier = aliasCommodity_AffiliateSupplier + "_";
|
|
private static String aliasCommodity_AssocationCustomer = "Cmd_AsCust";
|
|
private static String prefixCommodity_AssocationCustomer = aliasCommodity_AssocationCustomer + "_";
|
|
private static String aliasCommodity_AffiliateCustomer = "Cmd_AffCust";
|
|
private static String prefixCommodity_AffiliateCustomer = aliasCommodity_AffiliateCustomer + "_";
|
|
private static String aliasCommodity_UomSale = "Cmd_UomSale";
|
|
private static String prefixCommodity_UomSale = aliasCommodity_UomSale + "_";
|
|
private static String aliasCommodity_CurrencyMaterial = "Cmd_CurMat";
|
|
private static String prefixCommodity_CurrencyMaterial = aliasCommodity_CurrencyMaterial + "_";
|
|
private static String aliasCommodity_CurrencyExWorks = "Cmd_CurExw";
|
|
private static String prefixCommodity_CurrencyExWorks = aliasCommodity_CurrencyExWorks + "_";
|
|
private static String aliasCommodity_TaxCode_Sale = "Cmd_TxcSale";
|
|
private static String prefixCommodity_TaxCode_Sale = aliasCommodity_TaxCode_Sale + "_";
|
|
private static String prefixCommodity_Uom = "Uom_";
|
|
|
|
// Column names.
|
|
private static String dataNameUomSale = "Uom_Sale";
|
|
private static String dataNameGrossPrice = "GrPrc";
|
|
private static String dataNameRequirement_AmtUnitEarlId = "ReqntAmtUnitEarlId";
|
|
private static String dataNameRequirement_AmtUnitEarlCode = "ReqntAmtUnitEarlCode";
|
|
private static String dataNameLastStockTake = "LstStkTk";
|
|
private static String dataNameCommodityCustomerCount = "CmdCustCount";
|
|
private static String dataNameCommoditySupplierCount = "CmdSuppCount";
|
|
private static String dataNameProcessCount = "CmdProcCount";
|
|
private static String dataNamePortfolioItemCount = "PrtItmCount";
|
|
private static String dataNameSales_YtdFinancial = "SalesYtdFin";
|
|
private static String dataNameSales_YtdCalendar = "SalesYtdCal";
|
|
private static String dataNameSales_PyFinancial = "SalesPyFin";
|
|
private static String dataNameSales_PyCalendar = "SalesPyCal";
|
|
private static String dataNameSales_MthCurrent = "SalesMthCurr";
|
|
private static String dataNameSales_Mth01 = "SalesMth01";
|
|
private static String dataNameSales_Mth02 = "SalesMth02";
|
|
private static String dataNameSales_Mth03 = "SalesMth03";
|
|
private static String dataNameSales_Mth04 = "SalesMth04";
|
|
private static String dataNameSales_Mth05 = "SalesMth05";
|
|
private static String dataNameSales_Mth06 = "SalesMth06";
|
|
private static String dataNameSales_Mth07 = "SalesMth07";
|
|
private static String dataNameSales_Mth08 = "SalesMth08";
|
|
private static String dataNameSales_Mth09 = "SalesMth09";
|
|
private static String dataNameSales_Mth10 = "SalesMth10";
|
|
private static String dataNameSales_Mth11 = "SalesMth11";
|
|
private static String dataNameSales_Mth12 = "SalesMth12";
|
|
private static String dataNameStockSold_Period = "StkSolPrd";
|
|
private static String dataNameStkLvl_Allocated = "StkLvl_Allo";
|
|
private static String dataNameStkLvl_Allocated_Sales = "StkLvl_AlloS";
|
|
private static String dataNameStkLvl_Allocated_Calc = "StkLvl_AlloC";
|
|
private static String dataNameStkLvl_Allocated_All = "StkLvl_AlloA";
|
|
private static String dataNameStkLvl_Current = "StkLvl_Curr";
|
|
private static String dataNameStkLvl_Current_Sales = "StkLvl_CurrS";
|
|
private static String dataNameStkLvl_Current_Calc = "StkLvl_CurrC";
|
|
private static String dataNameStkLvl_Current_All = "StkLvl_CurrA";
|
|
private static String dataNameStkLvl_Bays = "StkLvl_Bays";
|
|
private static String dataNameStkLvl_Bay1 = "StkLvl_Bay1";
|
|
private static String dataNameStkLvl_Bay2 = "StkLvl_Bay2";
|
|
private static String dataNameStkLvl_Bay3 = "StkLvl_Bay3";
|
|
private static String dataNameStkDue_NextCmdStkDate = "StkDue_NextCmdDate"; // Date next commodity movement expected.
|
|
private static String dataNameStkDue_NextCmdStkQty = "StkDue_NextCmdQty"; // Quantity on next expected commodity movement.
|
|
private static String dataNameStkDue_NextCntStkDate = "StkDue_NextCntDate"; // Date next container movement expected.
|
|
private static String dataNameStkDue_NextCntStkQty = "StkDue_NextCntQty"; // Quantity on next expected container movement.
|
|
private static String dataNameStkDue_Imminent = "StkLvl_Immi";
|
|
private static String dataNameStkDue_Week1 = "StkDue_Wk1"; // Stock due in by future weeks.
|
|
private static String dataNameStkDue_Week2 = "StkDue_Wk2";
|
|
private static String dataNameStkDue_Week3 = "StkDue_Wk3";
|
|
private static String dataNameStkDue_Week4 = "StkDue_Wk4";
|
|
private static String dataNameStkDue_Week5 = "StkDue_Wk5";
|
|
private static String dataNameStkDue_Week6 = "StkDue_Wk6";
|
|
private static String dataNameStkDue_Week7 = "StkDue_Wk7";
|
|
private static String dataNameStkDue_Week8 = "StkDue_Wk8";
|
|
private static String dataNameStkDue_Week9 = "StkDue_Wk9";
|
|
private static String dataNameStkDue_Week10 = "StkDue_Wk10";
|
|
private static String dataNameStkDue_Week11 = "StkDue_Wk11";
|
|
private static String dataNameStkDue_Week12 = "StkDue_Wk12";
|
|
private static String dataNameStkDue_Week1To2 = "StkDue_Wk1To2";
|
|
private static String dataNameStkDue_Week3To4 = "StkDue_Wk3To4";
|
|
private static String dataNameStkDue_Week5To6 = "StkDue_Wk5To6";
|
|
private static String dataNameStkDue_Week7To8 = "StkDue_Wk7To8";
|
|
private static String dataNameStkDue_Week9To10 = "StkDue_Wk9To10";
|
|
private static String dataNameStkDue_Week11To12 = "StkDue_Wk11To12";
|
|
private static String dataNameStkDue_Week7On = "StkDue_Wk7On";
|
|
private static String dataNameStkDue_Week13On = "StkDue_Wk13On";
|
|
private static String dataNameStkDue_MonthCurr = "StkDue_MthCurr";
|
|
private static String dataNameStkDue_Month01 = "StkDue_Mth01";
|
|
private static String dataNameStkDue_Month02 = "StkDue_Mth02";
|
|
private static String dataNameStkDue_Month03 = "StkDue_Mth03";
|
|
private static String dataNameStkDue_Month04 = "StkDue_Mth04";
|
|
private static String dataNameStkDue_Month05 = "StkDue_Mth05";
|
|
private static String dataNameStkDue_Month06 = "StkDue_Mth06";
|
|
private static String dataNameStkDue_Month07 = "StkDue_Mth07";
|
|
private static String dataNameStkDue_Month08 = "StkDue_Mth08";
|
|
private static String dataNameStkDue_Month09 = "StkDue_Mth09";
|
|
private static String dataNameStkDue_Month10 = "StkDue_Mth10";
|
|
private static String dataNameStkDue_Month11 = "StkDue_Mth11";
|
|
private static String dataNameStkDue_Month12 = "StkDue_Mth12";
|
|
private static String dataNameStkDue_MonthTo03 = "StkDue_MthTo3";
|
|
private static String dataNameStkDue_MonthTo06 = "StkDue_MthTo6";
|
|
private static String dataNameStkDue_MonthTo09 = "StkDue_MthTo9";
|
|
private static String dataNameStkDue_MonthTo12 = "StkDue_MthTo12";
|
|
private static String dataNameStkDue_Month04To06 = "StkDue_Mth4To6";
|
|
private static String dataNameStkDue_Month07To09 = "StkDue_Mth7To9";
|
|
private static String dataNameStkDue_Month10To12 = "StkDue_Mth10To12";
|
|
private static String dataNameStkDue_Month07To12 = "StkDue_Mth7To12";
|
|
private static String dataNameStkDue_Month04On = "StkDue_Mth4On";
|
|
private static String dataNameStkDue_Month05On = "StkDue_Mth5On";
|
|
private static String dataNameStkDue_Month06On = "StkDue_Mth6On";
|
|
private static String dataNameStkDue_Month07On = "StkDue_Mth7On";
|
|
private static String dataNameStkDue_Month13On = "StkDue_Mth13On";
|
|
private static String dataNameStkDue_Provisional = "StkDue_Prov";
|
|
private static String dataNameStkAll_Week1 = "StkAll_Wk1"; // Stock allocated by future weeks.
|
|
private static String dataNameStkAll_Week2 = "StkAll_Wk2";
|
|
private static String dataNameStkAll_Week3To4 = "StkAll_Wk3To4";
|
|
private static String dataNameStkAll_Week5To6 = "StkAll_Wk5To6";
|
|
private static String dataNameStkAll_Week7To8 = "StkAll_Wk7To8";
|
|
private static String dataNameStkAll_Week9To10 = "StkAll_Wk9To10";
|
|
private static String dataNameStkAll_Week11To12 = "StkAll_Wk11To12";
|
|
private static String dataNameStkAll_Week13On = "StkAll_Wk13On";
|
|
private static String dataNameStkAll_MonthCurr = "StkAll_MthCurr"; // Stock allocated by month.
|
|
private static String dataNameStkAll_Month01 = "StkAll_Mth01"; // Stock allocated by future month.
|
|
private static String dataNameStkAll_Month02 = "StkAll_Mth02";
|
|
private static String dataNameStkAll_Month03 = "StkAll_Mth03";
|
|
private static String dataNameStkAll_Month04 = "StkAll_Mth04";
|
|
private static String dataNameStkAll_Month05 = "StkAll_Mth05";
|
|
private static String dataNameStkAll_Month06 = "StkAll_Mth06";
|
|
private static String dataNameStkAll_Month07 = "StkAll_Mth07";
|
|
private static String dataNameStkAll_Month08 = "StkAll_Mth08";
|
|
private static String dataNameStkAll_Month09 = "StkAll_Mth09";
|
|
private static String dataNameStkAll_Month10 = "StkAll_Mth10";
|
|
private static String dataNameStkAll_Month11 = "StkAll_Mth11";
|
|
private static String dataNameStkAll_Month12 = "StkAll_Mth12";
|
|
|
|
// Column definition population.
|
|
private void SetCommodityColDfn
|
|
(ColumnDfn col, String caption, int width, SbmDbDfn.ColumnIdx dbCol,
|
|
ColumnAlignment align = ColumnAlignment.Default, DataValue.DataType dataType = DataValue.DataType.String,
|
|
String alias = "", String prefix = "")
|
|
{
|
|
if (String.IsNullOrEmpty(alias) && SbmDbDfn.GetTableForColumn(dbCol) == SbmDbDfn.TableIdx.Commodity)
|
|
alias = aliasCommodity;
|
|
col.Set(caption, width, (int)dbCol, prefix + SbmDbDfn.GetColumnName(dbCol, false), SbmDbDfn.GetColumnNameQual(dbCol, alias), dataType, align);
|
|
if (dataType == DataValue.DataType.String && dbCol != SbmDbDfn.ColumnIdx.Unknown)
|
|
col.MaxLength = (int)SbmDbDfn.GetColTextLen(dbCol);
|
|
}
|
|
//-------------------------------------------------------------------
|
|
// Getting Commodity column definition.
|
|
public override ColumnDfn GetCommodityColumnDfn(SbmCommodity.Column columnId, string caption = "", int width = 0)
|
|
{
|
|
bool canViewSalesFinancials = UserContext.SecurityProfile_Core.UserCanViewFinancials(Sbm.FinancialType.CommoditySales);
|
|
bool canViewSupplyFinancials = UserContext.SecurityProfile_Core.UserCanViewFinancials(Sbm.FinancialType.CommoditySupply);
|
|
|
|
ColumnDfn columnDfn = new ColumnDfn((int)columnId, caption, width);
|
|
switch (columnId)
|
|
{
|
|
case SbmCommodity.Column.Pos:
|
|
SetCommodityColDfn(columnDfn, "Pos", 45, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right);
|
|
columnDfn.SortMode = ColumnDfn.ColumnSortMode.Off;
|
|
columnDfn.ReadOnly = true;
|
|
columnDfn.Resizable = false;
|
|
break;
|
|
case SbmCommodity.Column.Id:
|
|
SetCommodityColDfn(columnDfn, "Id", 60, SbmDbDfn.ColumnIdx.Commodity_Id, ColumnAlignment.Right, DataValue.DataType.Long);
|
|
columnDfn.ReadOnly = true;
|
|
break;
|
|
// Commodity Properties.
|
|
case SbmCommodity.Column.Type:
|
|
SetCommodityColDfn(columnDfn, "Type", 70, SbmDbDfn.ColumnIdx.Commodity_Type, ColumnAlignment.Center, DataValue.DataType.Long);
|
|
break;
|
|
case SbmCommodity.Column.Type_Code:
|
|
SetCommodityColDfn(columnDfn, "Type", 70, SbmDbDfn.ColumnIdx.Commodity_Type, ColumnAlignment.Center);
|
|
break;
|
|
case SbmCommodity.Column.Type_Desc:
|
|
SetCommodityColDfn(columnDfn, "Type", 90, SbmDbDfn.ColumnIdx.Commodity_Type, ColumnAlignment.Center);
|
|
break;
|
|
case SbmCommodity.Column.Code:
|
|
SetCommodityColDfn(columnDfn, "Code", 120, SbmDbDfn.ColumnIdx.Commodity_Code);
|
|
if (SessionConsole != null && AllowConfigOption(Sbm.ConfigOption.CommodityDoubleColumnWidth))
|
|
columnDfn.Width = columnDfn.Width * (int)1.25;
|
|
break;
|
|
case SbmCommodity.Column.DescBrief:
|
|
SetCommodityColDfn(columnDfn, "Desc", 120, SbmDbDfn.ColumnIdx.Commodity_DescBrief);
|
|
if (SessionConsole != null && AllowConfigOption(Sbm.ConfigOption.CommodityDoubleColumnWidth))
|
|
columnDfn.Width = columnDfn.Width * (int)1.25;
|
|
break;
|
|
case SbmCommodity.Column.DescOrder:
|
|
SetCommodityColDfn(columnDfn, "Desc order", 120, SbmDbDfn.ColumnIdx.Commodity_DescOrder);
|
|
break;
|
|
case SbmCommodity.Column.DescDetail:
|
|
SetCommodityColDfn(columnDfn, "Desc detail", 240, SbmDbDfn.ColumnIdx.Commodity_DescDetail);
|
|
break;
|
|
case SbmCommodity.Column.DrawingNo:
|
|
SetCommodityColDfn(columnDfn, "Drawing", 86, SbmDbDfn.ColumnIdx.Commodity_DrawingNo, ColumnAlignment.Center);
|
|
break;
|
|
case SbmCommodity.Column.DrawingIssue:
|
|
SetCommodityColDfn(columnDfn, "Issue", 40, SbmDbDfn.ColumnIdx.Commodity_DrawingIssue, ColumnAlignment.Center);
|
|
break;
|
|
case SbmCommodity.Column.ImagePath:
|
|
SetCommodityColDfn(columnDfn, "Image file", 140, SbmDbDfn.ColumnIdx.Commodity_ImagePath, ColumnAlignment.Center);
|
|
break;
|
|
case SbmCommodity.Column.Image:
|
|
SetCommodityColDfn(columnDfn, "Image", 160, SbmDbDfn.ColumnIdx.Commodity_ImagePath, ColumnAlignment.Center);
|
|
break;
|
|
case SbmCommodity.Column.Category1Code:
|
|
SetCommodityColDfn(columnDfn, "Category 1", 65, SbmDbDfn.ColumnIdx.Commodity_Category, ColumnAlignment.Center);
|
|
break;
|
|
case SbmCommodity.Column.Category1_Desc:
|
|
SetCommodityColDfn(columnDfn, "Category 1", 80, SbmDbDfn.ColumnIdx.Commodity_Category);
|
|
break;
|
|
case SbmCommodity.Column.Category2Code:
|
|
SetCommodityColDfn(columnDfn, "Category 2", 65, SbmDbDfn.ColumnIdx.Commodity_Category2, ColumnAlignment.Center);
|
|
break;
|
|
case SbmCommodity.Column.Category2_Desc:
|
|
SetCommodityColDfn(columnDfn, "Category 2", 80, SbmDbDfn.ColumnIdx.Commodity_Category2);
|
|
break;
|
|
case SbmCommodity.Column.Category3Code:
|
|
SetCommodityColDfn(columnDfn, "Category 3", 65, SbmDbDfn.ColumnIdx.Commodity_Category3, ColumnAlignment.Center);
|
|
break;
|
|
case SbmCommodity.Column.Category3_Desc:
|
|
SetCommodityColDfn(columnDfn, "Category 3", 80, SbmDbDfn.ColumnIdx.Commodity_Category3);
|
|
break;
|
|
case SbmCommodity.Column.Location:
|
|
SetCommodityColDfn(columnDfn, "Location", 80, SbmDbDfn.ColumnIdx.Commodity_Location, ColumnAlignment.Center);
|
|
break;
|
|
case SbmCommodity.Column.Department:
|
|
SetCommodityColDfn(columnDfn, "Department", 80, SbmDbDfn.ColumnIdx.Commodity_Department, ColumnAlignment.Center);
|
|
break;
|
|
case SbmCommodity.Column.CatalogRef:
|
|
{
|
|
String label = GetAttributeCaption(SbmDbDfn.ColumnIdx.Commodity_CatalogRef, "Catalog ref");
|
|
SetCommodityColDfn(columnDfn, label, 80, SbmDbDfn.ColumnIdx.Commodity_CatalogRef, ColumnAlignment.Center);
|
|
break;
|
|
}
|
|
//---------------------------------------------------------------
|
|
// Specification.
|
|
case SbmCommodity.Column.Weight:
|
|
SetCommodityColDfn(columnDfn, "Weight", 70, SbmDbDfn.ColumnIdx.Commodity_Weight, ColumnAlignment.Right, DataValue.DataType.Decimal);
|
|
columnDfn.NumDecimals = (byte)WeightDecimals;
|
|
break;
|
|
case SbmCommodity.Column.Weight_UomId:
|
|
SetCommodityColDfn(columnDfn, "Weight uomId", 70, SbmDbDfn.ColumnIdx.Commodity_UomIdWeight, ColumnAlignment.Right, DataValue.DataType.Long);
|
|
break;
|
|
case SbmCommodity.Column.Weight_Unit:
|
|
SetCommodityColDfn(columnDfn, "Weight unit", 80, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Center);
|
|
break;
|
|
case SbmCommodity.Column.Weight_ValueUnits:
|
|
SetCommodityColDfn(columnDfn, "Weight UOM #", 80, SbmDbDfn.ColumnIdx.Commodity_UomIdWeight, ColumnAlignment.Center, DataValue.DataType.Long);
|
|
break;
|
|
case SbmCommodity.Column.Length:
|
|
SetCommodityColDfn(columnDfn, "Length", 70, SbmDbDfn.ColumnIdx.Commodity_Length, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.NumDecimals = (byte)LengthDecimals;
|
|
break;
|
|
case SbmCommodity.Column.Length_UomId:
|
|
SetCommodityColDfn(columnDfn, "Length UOM #", 70, SbmDbDfn.ColumnIdx.Commodity_UomIdWeight, ColumnAlignment.Right, DataValue.DataType.Long);
|
|
break;
|
|
case SbmCommodity.Column.Length_Unit:
|
|
SetCommodityColDfn(columnDfn, "Length unit", 80, SbmDbDfn.ColumnIdx.Commodity_Length, ColumnAlignment.Center);
|
|
break;
|
|
case SbmCommodity.Column.Length_ValueUnits:
|
|
SetCommodityColDfn(columnDfn, "Length valueunit", 80, SbmDbDfn.ColumnIdx.Commodity_Length, ColumnAlignment.Right);
|
|
break;
|
|
case SbmCommodity.Column.Volume:
|
|
SetCommodityColDfn(columnDfn, "Volume", 70, SbmDbDfn.ColumnIdx.Commodity_Length, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.NumDecimals = (byte)VolumeDecimals;
|
|
break;
|
|
case SbmCommodity.Column.Volume_UomId:
|
|
SetCommodityColDfn(columnDfn, "Volume uomId", 70, SbmDbDfn.ColumnIdx.Commodity_Length, ColumnAlignment.Center);
|
|
break;
|
|
case SbmCommodity.Column.Volume_Unit:
|
|
SetCommodityColDfn(columnDfn, "Volume unit", 80, SbmDbDfn.ColumnIdx.Commodity_Length, ColumnAlignment.Center);
|
|
break;
|
|
case SbmCommodity.Column.Volume_ValueUnits:
|
|
SetCommodityColDfn(columnDfn, "Volume valueunit", 80, SbmDbDfn.ColumnIdx.Commodity_Length, ColumnAlignment.Right);
|
|
break;
|
|
case SbmCommodity.Column.Density:
|
|
SetCommodityColDfn(columnDfn, "Density", 70, SbmDbDfn.ColumnIdx.Commodity_Length, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.NumDecimals = (byte)DensityDecimals;
|
|
break;
|
|
case SbmCommodity.Column.Density_UomId:
|
|
SetCommodityColDfn(columnDfn, "Length uomId", 70, SbmDbDfn.ColumnIdx.Commodity_Length, ColumnAlignment.Center);
|
|
break;
|
|
case SbmCommodity.Column.Density_Unit:
|
|
SetCommodityColDfn(columnDfn, "Length unit", 80, SbmDbDfn.ColumnIdx.Commodity_Length, ColumnAlignment.Center);
|
|
break;
|
|
case SbmCommodity.Column.Density_ValueUnits:
|
|
SetCommodityColDfn(columnDfn, "Density valueunit", 80, SbmDbDfn.ColumnIdx.Commodity_Length, ColumnAlignment.Right);
|
|
break;
|
|
case SbmCommodity.Column.BoxQuantity:
|
|
SetCommodityColDfn(columnDfn, "Box qty", 70, SbmDbDfn.ColumnIdx.Commodity_Length, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
break;
|
|
case SbmCommodity.Column.BoxQuantity_UomId:
|
|
SetCommodityColDfn(columnDfn, "Box qty uomId", 70, SbmDbDfn.ColumnIdx.Commodity_Length, ColumnAlignment.Center);
|
|
break;
|
|
case SbmCommodity.Column.BoxQuantity_Unit:
|
|
SetCommodityColDfn(columnDfn, "Box qty unit", 80, SbmDbDfn.ColumnIdx.Commodity_Length, ColumnAlignment.Center);
|
|
break;
|
|
case SbmCommodity.Column.BoxQuantity_ValueUnits:
|
|
SetCommodityColDfn(columnDfn, "Box qty valueunit", 80, SbmDbDfn.ColumnIdx.Commodity_Length, ColumnAlignment.Right);
|
|
break;
|
|
case SbmCommodity.Column.Dimensions:
|
|
{
|
|
String label = GetAttributeCaption(SbmDbDfn.ColumnIdx.Commodity_Dimensions, "Dimensions");
|
|
SetCommodityColDfn(columnDfn, label, 100, SbmDbDfn.ColumnIdx.Commodity_Dimensions, ColumnAlignment.Center);
|
|
break;
|
|
}
|
|
case SbmCommodity.Column.SpecSummary:
|
|
{
|
|
String label = GetAttributeCaption(SbmDbDfn.ColumnIdx.Commodity_SpecSummary, "Specification");
|
|
SetCommodityColDfn(columnDfn, label, 100, SbmDbDfn.ColumnIdx.Commodity_SpecSummary, ColumnAlignment.Center);
|
|
break;
|
|
}
|
|
case SbmCommodity.Column.ICNTariffCode:
|
|
{
|
|
String label = GetAttributeCaption(SbmDbDfn.ColumnIdx.Commodity_ICNTariffCode, "ICN tariff");
|
|
SetCommodityColDfn(columnDfn, label, 100, SbmDbDfn.ColumnIdx.Commodity_ICNTariffCode, ColumnAlignment.Center);
|
|
break;
|
|
}
|
|
//---------------------------------------------------------------
|
|
// Codings.
|
|
case SbmCommodity.Column.RangeCode:
|
|
SetCommodityColDfn(columnDfn, "Range", 80, SbmDbDfn.ColumnIdx.Commodity_RangeCode, ColumnAlignment.Center);
|
|
break;
|
|
case SbmCommodity.Column.RangeDesc:
|
|
SetCommodityColDfn(columnDfn, "Range", 90, SbmDbDfn.ColumnIdx.Commodity_RangeCode, ColumnAlignment.Left);
|
|
break;
|
|
case SbmCommodity.Column.ColourCode:
|
|
SetCommodityColDfn(columnDfn, "Colour", 80, SbmDbDfn.ColumnIdx.Commodity_ColourCode, ColumnAlignment.Center);
|
|
break;
|
|
case SbmCommodity.Column.ColourDesc:
|
|
SetCommodityColDfn(columnDfn, "Colour", 90, SbmDbDfn.ColumnIdx.Commodity_ColourCode, ColumnAlignment.Left);
|
|
break;
|
|
case SbmCommodity.Column.SourceCode:
|
|
SetCommodityColDfn(columnDfn, "Source", 80, SbmDbDfn.ColumnIdx.Commodity_SourceCode, ColumnAlignment.Center);
|
|
break;
|
|
case SbmCommodity.Column.SourceDesc:
|
|
SetCommodityColDfn(columnDfn, "Source", 90, SbmDbDfn.ColumnIdx.Commodity_SourceCode, ColumnAlignment.Left);
|
|
break;
|
|
case SbmCommodity.Column.SupplyMethodCode:
|
|
SetCommodityColDfn(columnDfn, "Supply", 80, SbmDbDfn.ColumnIdx.Commodity_SupplyMethodCode, ColumnAlignment.Center);
|
|
break;
|
|
case SbmCommodity.Column.SupplyMethodDesc:
|
|
SetCommodityColDfn(columnDfn, "Supply", 90, SbmDbDfn.ColumnIdx.Commodity_SupplyMethodCode, ColumnAlignment.Left);
|
|
break;
|
|
case SbmCommodity.Column.HandlingCode:
|
|
SetCommodityColDfn(columnDfn, "Handling", 80, SbmDbDfn.ColumnIdx.Commodity_HandlingCode, ColumnAlignment.Center);
|
|
break;
|
|
case SbmCommodity.Column.HandlingDesc:
|
|
SetCommodityColDfn(columnDfn, "Handling", 90, SbmDbDfn.ColumnIdx.Commodity_HandlingCode, ColumnAlignment.Left);
|
|
break;
|
|
case SbmCommodity.Column.DeliveryCode:
|
|
SetCommodityColDfn(columnDfn, "Delivery", 80, SbmDbDfn.ColumnIdx.Commodity_DeliveryCode, ColumnAlignment.Center);
|
|
break;
|
|
case SbmCommodity.Column.DeliveryDesc:
|
|
SetCommodityColDfn(columnDfn, "Delivery", 90, SbmDbDfn.ColumnIdx.Commodity_DeliveryCode, ColumnAlignment.Left);
|
|
break;
|
|
case SbmCommodity.Column.MaterialCode:
|
|
{
|
|
String label = GetAttributeCaption(SbmDbDfn.ColumnIdx.Commodity_MaterialCode, "Material");
|
|
SetCommodityColDfn(columnDfn, label, 80, SbmDbDfn.ColumnIdx.Commodity_MaterialCode, ColumnAlignment.Center);
|
|
break;
|
|
}
|
|
case SbmCommodity.Column.MaterialDesc:
|
|
{
|
|
String label = GetAttributeCaption(SbmDbDfn.ColumnIdx.Commodity_MaterialCode, "Material");
|
|
SetCommodityColDfn(columnDfn, label, 90, SbmDbDfn.ColumnIdx.Commodity_MaterialCode, ColumnAlignment.Left);
|
|
break;
|
|
}
|
|
case SbmCommodity.Column.FinishCode:
|
|
{
|
|
String label = GetAttributeCaption(SbmDbDfn.ColumnIdx.Commodity_FinishCode, "Finish");
|
|
SetCommodityColDfn(columnDfn, label, 80, SbmDbDfn.ColumnIdx.Commodity_FinishCode, ColumnAlignment.Center);
|
|
break;
|
|
}
|
|
case SbmCommodity.Column.FinishDesc:
|
|
{
|
|
String label = GetAttributeCaption(SbmDbDfn.ColumnIdx.Commodity_FinishCode, "Finish");
|
|
SetCommodityColDfn(columnDfn, label, 90, SbmDbDfn.ColumnIdx.Commodity_FinishCode, ColumnAlignment.Left);
|
|
break;
|
|
}
|
|
case SbmCommodity.Column.PromotionCode:
|
|
{
|
|
String label = GetAttributeCaption(SbmDbDfn.ColumnIdx.Commodity_PromotionCode, "Promotion");
|
|
SetCommodityColDfn(columnDfn, label, 80, SbmDbDfn.ColumnIdx.Commodity_PromotionCode, ColumnAlignment.Center);
|
|
break;
|
|
}
|
|
case SbmCommodity.Column.PromotionDesc:
|
|
{
|
|
String label = GetAttributeCaption(SbmDbDfn.ColumnIdx.Commodity_PromotionCode, "Promotion");
|
|
SetCommodityColDfn(columnDfn, label, 90, SbmDbDfn.ColumnIdx.Commodity_PromotionCode, ColumnAlignment.Left);
|
|
break;
|
|
}
|
|
case SbmCommodity.Column.NominalCode:
|
|
SetCommodityColDfn(columnDfn, "Sales nominal", 80, SbmDbDfn.ColumnIdx.Commodity_NominalCode, ColumnAlignment.Center);
|
|
break;
|
|
case SbmCommodity.Column.NominalCodePurchase:
|
|
SetCommodityColDfn(columnDfn, "Purchase nominal", 80, SbmDbDfn.ColumnIdx.Commodity_NominalCodePurchase, ColumnAlignment.Center);
|
|
break;
|
|
//-----------------------------------------------------------
|
|
// Purchasing.
|
|
case SbmCommodity.Column.Supplier_Name:
|
|
SetCommodityColDfn(columnDfn, "Supplier", 120, SbmDbDfn.ColumnIdx.Affiliate_Name, ColumnAlignment.Default, DataValue.DataType.String, aliasCommodity_AffiliateSupplier, prefixCommodity_AffiliateSupplier);
|
|
break;
|
|
case SbmCommodity.Column.Supplier_Ref:
|
|
SetCommodityColDfn(columnDfn, "Part number", 90, SbmDbDfn.ColumnIdx.Commodity_SupplierRef, ColumnAlignment.Center);
|
|
break;
|
|
case SbmCommodity.Column.CostPrice:
|
|
if (canViewSupplyFinancials)
|
|
{
|
|
String label = GetAttributeCaption(SbmDbDfn.ColumnIdx.Commodity_CostPrice, "Cost price");
|
|
SetCommodityColDfn(columnDfn, label, 70, SbmDbDfn.ColumnIdx.Commodity_CostPrice, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.NumDecimals = CurrencyDecimalsDefault;
|
|
columnDfn.ShowZeroValues = false;
|
|
}
|
|
break;
|
|
case SbmCommodity.Column.CostPrice_Fmt:
|
|
if (canViewSupplyFinancials)
|
|
{
|
|
String label = GetAttributeCaption(SbmDbDfn.ColumnIdx.Commodity_CostPrice, "Cost price");
|
|
SetCommodityColDfn(columnDfn, label, 70, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right);
|
|
columnDfn.ShowZeroValues = false;
|
|
}
|
|
break;
|
|
case SbmCommodity.Column.PlaceOfOrigin:
|
|
SetCommodityColDfn(columnDfn, "Place of origin", 90, SbmDbDfn.ColumnIdx.Commodity_PlaceOfOrigin);
|
|
break;
|
|
case SbmCommodity.Column.MaterialCost:
|
|
if (canViewSupplyFinancials)
|
|
{
|
|
String label = GetAttributeCaption(SbmDbDfn.ColumnIdx.Commodity_MaterialCost, "Material cost");
|
|
SetCommodityColDfn(columnDfn, label, 80, SbmDbDfn.ColumnIdx.Commodity_MaterialCost, ColumnAlignment.Right, DataValue.DataType.Double, aliasCommodity_CurrencyMaterial, prefixCommodity_CurrencyMaterial);
|
|
columnDfn.NumDecimals = 2; // Unknown currency.
|
|
columnDfn.ShowZeroValues = false;
|
|
}
|
|
break;
|
|
case SbmCommodity.Column.MaterialCost_Fmt:
|
|
if (canViewSupplyFinancials)
|
|
{
|
|
String label = GetAttributeCaption(SbmDbDfn.ColumnIdx.Commodity_MaterialCost, "Material cost");
|
|
SetCommodityColDfn(columnDfn, label, 90, SbmDbDfn.ColumnIdx.Commodity_MaterialCost, ColumnAlignment.Right, DataValue.DataType.String, aliasCommodity_CurrencyMaterial, prefixCommodity_CurrencyMaterial);
|
|
}
|
|
break;
|
|
case SbmCommodity.Column.MaterialCurrencyId:
|
|
{
|
|
String label = GetAttributeCaption(SbmDbDfn.ColumnIdx.Commodity_CurrencyIdMaterial, "Material curr #");
|
|
SetCommodityColDfn(columnDfn, label, 80, SbmDbDfn.ColumnIdx.Commodity_CurrencyIdMaterial, ColumnAlignment.Right, DataValue.DataType.Long, aliasCommodity_CurrencyMaterial, prefixCommodity_CurrencyMaterial);
|
|
break;
|
|
}
|
|
case SbmCommodity.Column.MaterialCurrency_Code:
|
|
{
|
|
String label = GetAttributeCaption(SbmDbDfn.ColumnIdx.Commodity_CurrencyIdMaterial, "Material currency code");
|
|
SetCommodityColDfn(columnDfn, label, 100, SbmDbDfn.ColumnIdx.Commodity_CurrencyIdMaterial, ColumnAlignment.Center, DataValue.DataType.String, aliasCommodity_CurrencyMaterial, prefixCommodity_CurrencyMaterial);
|
|
break;
|
|
}
|
|
case SbmCommodity.Column.MaterialCurrency_Symbol:
|
|
{
|
|
String label = GetAttributeCaption(SbmDbDfn.ColumnIdx.Commodity_CurrencyIdMaterial, "Material currency");
|
|
SetCommodityColDfn(columnDfn, label, 100, SbmDbDfn.ColumnIdx.Commodity_CurrencyIdMaterial, ColumnAlignment.Center, DataValue.DataType.String, aliasCommodity_CurrencyMaterial, prefixCommodity_CurrencyMaterial);
|
|
break;
|
|
}
|
|
case SbmCommodity.Column.ExWorksCost:
|
|
{
|
|
String label = GetAttributeCaption(SbmDbDfn.ColumnIdx.Commodity_ExWorksCost, "Ex-works cost");
|
|
SetCommodityColDfn(columnDfn, label, 80, SbmDbDfn.ColumnIdx.Commodity_ExWorksCost, ColumnAlignment.Right, DataValue.DataType.Double, aliasCommodity_CurrencyExWorks, prefixCommodity_CurrencyExWorks);
|
|
columnDfn.NumDecimals = 2; // Unknown currency.
|
|
columnDfn.ShowZeroValues = false;
|
|
break;
|
|
}
|
|
case SbmCommodity.Column.ExWorksCost_Fmt:
|
|
{
|
|
String label = GetAttributeCaption(SbmDbDfn.ColumnIdx.Commodity_ExWorksCost, "Ex-works cost");
|
|
SetCommodityColDfn(columnDfn, label, 90, SbmDbDfn.ColumnIdx.Commodity_ExWorksCost, ColumnAlignment.Right, DataValue.DataType.String, aliasCommodity_CurrencyExWorks, prefixCommodity_CurrencyExWorks);
|
|
break;
|
|
}
|
|
case SbmCommodity.Column.ExWorksCurrencyId:
|
|
{
|
|
String label = GetAttributeCaption(SbmDbDfn.ColumnIdx.Commodity_CurrencyIdExWorks, "Ex-works currency #");
|
|
SetCommodityColDfn(columnDfn, label, 80, SbmDbDfn.ColumnIdx.Commodity_CurrencyIdExWorks, ColumnAlignment.Right, DataValue.DataType.Long, aliasCommodity_CurrencyExWorks, prefixCommodity_CurrencyExWorks);
|
|
break;
|
|
}
|
|
case SbmCommodity.Column.ExWorksCurrency_Code:
|
|
{
|
|
String label = GetAttributeCaption(SbmDbDfn.ColumnIdx.Commodity_CurrencyIdExWorks, "Ex-works currency");
|
|
SetCommodityColDfn(columnDfn, label, 100, SbmDbDfn.ColumnIdx.Commodity_CurrencyIdExWorks, ColumnAlignment.Center, DataValue.DataType.String, aliasCommodity_CurrencyExWorks, prefixCommodity_CurrencyExWorks);
|
|
break;
|
|
}
|
|
case SbmCommodity.Column.ExWorksCurrency_Symbol:
|
|
{
|
|
String label = GetAttributeCaption(SbmDbDfn.ColumnIdx.Commodity_CurrencyIdExWorks, "Ex-works currency code");
|
|
SetCommodityColDfn(columnDfn, label, 100, SbmDbDfn.ColumnIdx.Commodity_CurrencyIdExWorks, ColumnAlignment.Center, DataValue.DataType.String, aliasCommodity_CurrencyExWorks, prefixCommodity_CurrencyExWorks);
|
|
break;
|
|
}
|
|
case SbmCommodity.Column.ReorderLevel:
|
|
SetCommodityColDfn(columnDfn, "Reorder level", 90, SbmDbDfn.ColumnIdx.Commodity_ReorderLevel, ColumnAlignment.Center, DataValue.DataType.Double);
|
|
columnDfn.NumDecimals = (byte)OrderQuantityDecimals;
|
|
break;
|
|
case SbmCommodity.Column.ReorderQty:
|
|
SetCommodityColDfn(columnDfn, "Reorder qty", 90, SbmDbDfn.ColumnIdx.Commodity_ReorderQty, ColumnAlignment.Center, DataValue.DataType.Double);
|
|
columnDfn.NumDecimals = (byte)OrderQuantityDecimals;
|
|
break;
|
|
case SbmCommodity.Column.QtyOnOrder:
|
|
SetCommodityColDfn(columnDfn, "Qty on Order", 90, SbmDbDfn.ColumnIdx.Commodity_QtyOnOrder, ColumnAlignment.Center, DataValue.DataType.Double);
|
|
columnDfn.NumDecimals = (byte)OrderQuantityDecimals;
|
|
break;
|
|
//---------------------------------------------------------------
|
|
// Sales:
|
|
case SbmCommodity.Column.Customer_Name:
|
|
SetCommodityColDfn(columnDfn, "Customer", 100, SbmDbDfn.ColumnIdx.Affiliate_Name);
|
|
break;
|
|
case SbmCommodity.Column.SalesPrice:
|
|
if (canViewSalesFinancials)
|
|
{
|
|
SetCommodityColDfn(columnDfn, "Sales price", 80, SbmDbDfn.ColumnIdx.Commodity_SalesPrice, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.NumDecimals = CurrencyDecimalsDefault;
|
|
columnDfn.ShowZeroValues = false;
|
|
}
|
|
break;
|
|
case SbmCommodity.Column.SalesPrice_Fmt:
|
|
if (canViewSalesFinancials)
|
|
{
|
|
SetCommodityColDfn(columnDfn, "Sales price", 90, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.String);
|
|
columnDfn.ShowZeroValues = false;
|
|
}
|
|
break;
|
|
case SbmCommodity.Column.RetailPrice:
|
|
if (canViewSalesFinancials)
|
|
{
|
|
SetCommodityColDfn(columnDfn, "RRP", 80, SbmDbDfn.ColumnIdx.Commodity_RetailPrice, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.NumDecimals = CurrencyDecimalsDefault;
|
|
columnDfn.ShowZeroValues = false;
|
|
}
|
|
break;
|
|
case SbmCommodity.Column.RetailPrice_Fmt:
|
|
if (canViewSalesFinancials)
|
|
{
|
|
SetCommodityColDfn(columnDfn, "RRP", 90, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.String);
|
|
columnDfn.ShowZeroValues = false;
|
|
}
|
|
break;
|
|
case SbmCommodity.Column.RetailPricePlanned:
|
|
if (canViewSalesFinancials)
|
|
{
|
|
SetCommodityColDfn(columnDfn, "Planned RRP", 80, SbmDbDfn.ColumnIdx.Commodity_RetailPricePlanned, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.NumDecimals = CurrencyDecimalsDefault;
|
|
columnDfn.ShowZeroValues = false;
|
|
}
|
|
break;
|
|
case SbmCommodity.Column.RetailPricePlanned_Fmt:
|
|
if (canViewSalesFinancials)
|
|
{
|
|
SetCommodityColDfn(columnDfn, "Planned RRP", 90, SbmDbDfn.ColumnIdx.Commodity_RetailPricePlanned, ColumnAlignment.Right, DataValue.DataType.String);
|
|
columnDfn.ShowZeroValues = false;
|
|
}
|
|
break;
|
|
case SbmCommodity.Column.GrossPrice:
|
|
if (canViewSalesFinancials)
|
|
{
|
|
SetCommodityColDfn(columnDfn, "Gross price", 80, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.NumDecimals = CurrencyDecimalsDefault;
|
|
columnDfn.ShowZeroValues = false;
|
|
}
|
|
break;
|
|
case SbmCommodity.Column.GrossPrice_Fmt:
|
|
if (canViewSalesFinancials)
|
|
{
|
|
SetCommodityColDfn(columnDfn, "Gross price", 90, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.String);
|
|
columnDfn.ShowZeroValues = false;
|
|
}
|
|
break;
|
|
// Sales UOM.
|
|
case SbmCommodity.Column.UomIdSale:
|
|
SetCommodityColDfn(columnDfn, "Sales UOM Id", 80, SbmDbDfn.ColumnIdx.Commodity_UomIdSale, ColumnAlignment.Center, DataValue.DataType.Long);
|
|
columnDfn.ShowZeroValues = false;
|
|
break;
|
|
case SbmCommodity.Column.UnitOfSale:
|
|
SetCommodityColDfn(columnDfn, "Unit of Sale", 100, SbmDbDfn.ColumnIdx.UnitMeasure_Single, ColumnAlignment.Center);
|
|
break;
|
|
case SbmCommodity.Column.CarriageCostIndicative:
|
|
if (canViewSalesFinancials)
|
|
{
|
|
SetCommodityColDfn(columnDfn, "Carriage cost (ind)", 80, SbmDbDfn.ColumnIdx.Commodity_CarriageCostIndicative, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.NumDecimals = CurrencyDecimalsDefault;
|
|
columnDfn.ShowZeroValues = false;
|
|
}
|
|
break;
|
|
case SbmCommodity.Column.CarriageCostIndicative_Fmt:
|
|
if (canViewSalesFinancials)
|
|
{
|
|
SetCommodityColDfn(columnDfn, "Carriage cost (ind)", 90, SbmDbDfn.ColumnIdx.Commodity_CarriageCostIndicative, ColumnAlignment.Right, DataValue.DataType.String);
|
|
columnDfn.ShowZeroValues = false;
|
|
}
|
|
break;
|
|
case SbmCommodity.Column.MinOrderQty:
|
|
SetCommodityColDfn(columnDfn, "Min Order Qty", 100, SbmDbDfn.ColumnIdx.Commodity_MinOrderQty, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.NumDecimals = (byte)OrderQuantityDecimals;
|
|
columnDfn.ShowZeroValues = false;
|
|
break;
|
|
case SbmCommodity.Column.PackQtySale:
|
|
SetCommodityColDfn(columnDfn, "Pack Qty - sale", 80, SbmDbDfn.ColumnIdx.Commodity_PackQty, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.NumDecimals = (byte)OrderQuantityDecimals;
|
|
columnDfn.ShowZeroValues = false;
|
|
break;
|
|
// Sales tax code.
|
|
case SbmCommodity.Column.TaxCode:
|
|
SetCommodityColDfn(columnDfn, "Tax code", 90, SbmDbDfn.ColumnIdx.TaxCode_Code, ColumnAlignment.Center, DataValue.DataType.String, aliasCommodity_TaxCode_Sale, prefixCommodity_TaxCode_Sale);
|
|
columnDfn.ReadOnly = true;
|
|
break;
|
|
case SbmCommodity.Column.TaxRate:
|
|
SetCommodityColDfn(columnDfn, "Tax %", 80, SbmDbDfn.ColumnIdx.TaxCode_TaxRate, ColumnAlignment.Center, DataValue.DataType.Decimal, aliasCommodity_TaxCode_Sale, prefixCommodity_TaxCode_Sale);
|
|
columnDfn.NumDecimals = 2;
|
|
columnDfn.ReadOnly = true;
|
|
break;
|
|
// Last order.
|
|
case SbmCommodity.Column.LastOrderDate:
|
|
SetCommodityColDfn(columnDfn, "Last order date", 100, SbmDbDfn.ColumnIdx.Commodity_LastOrderDate, ColumnAlignment.Center);
|
|
columnDfn.ReadOnly = true;
|
|
break;
|
|
case SbmCommodity.Column.LastOrderQty:
|
|
SetCommodityColDfn(columnDfn, "Last order qty", 100, SbmDbDfn.ColumnIdx.Commodity_LastOrderQty, ColumnAlignment.Center);
|
|
columnDfn.ReadOnly = true;
|
|
break;
|
|
//---------------------------------------------------------------
|
|
// Customer definition.
|
|
case SbmCommodity.Column.Cust_ProductCode:
|
|
SetCommodityColDfn(columnDfn, "Customer product code", 100, SbmDbDfn.ColumnIdx.CommodityCustomer_ProductCode, ColumnAlignment.Center, DataValue.DataType.String, aliasCommodity_CmdCustomer, prefixCommodity_CmdCustomer);
|
|
break;
|
|
case SbmCommodity.Column.Cust_AmountRetail:
|
|
SetCommodityColDfn(columnDfn, "Customer retail", 100, SbmDbDfn.ColumnIdx.CommodityCustomer_AmountRetail, ColumnAlignment.Right, DataValue.DataType.Double, aliasCommodity_CmdCustomer, prefixCommodity_CmdCustomer);
|
|
break;
|
|
case SbmCommodity.Column.Cust_AmountRetail_Fmt:
|
|
SetCommodityColDfn(columnDfn, "Customer retail", 100, SbmDbDfn.ColumnIdx.CommodityCustomer_AmountRetail, ColumnAlignment.Right, DataValue.DataType.String, aliasCommodity_CmdCustomer, prefixCommodity_CmdCustomer);
|
|
break;
|
|
case SbmCommodity.Column.Cust_CurrencyIdRetail:
|
|
SetCommodityColDfn(columnDfn, "Customer currency#", 60, SbmDbDfn.ColumnIdx.CommodityCustomer_CurrencyIdRetail, ColumnAlignment.Right, DataValue.DataType.String, aliasCommodity_CmdCustomer, prefixCommodity_CmdCustomer);
|
|
break;
|
|
case SbmCommodity.Column.Cust_CurrencyIdRetail_Code:
|
|
SetCommodityColDfn(columnDfn, "Customer currency", 80, SbmDbDfn.ColumnIdx.CommodityCustomer_CurrencyIdRetail, ColumnAlignment.Center, DataValue.DataType.String, aliasCommodity_CmdCustomer, prefixCommodity_CmdCustomer);
|
|
break;
|
|
case SbmCommodity.Column.Cust_CurrencyIdRetail_Symbol:
|
|
SetCommodityColDfn(columnDfn, "Customer currency", 80, SbmDbDfn.ColumnIdx.CommodityCustomer_CurrencyIdRetail, ColumnAlignment.Center, DataValue.DataType.String, aliasCommodity_CmdCustomer, prefixCommodity_CmdCustomer);
|
|
break;
|
|
case SbmCommodity.Column.Cust_PromotionCode:
|
|
SetCommodityColDfn(columnDfn, "Customer promotion", 100, SbmDbDfn.ColumnIdx.CommodityCustomer_PromotionCode, ColumnAlignment.Center, DataValue.DataType.String, aliasCommodity_CmdCustomer, prefixCommodity_CmdCustomer);
|
|
break;
|
|
case SbmCommodity.Column.Cust_PromotionDesc:
|
|
SetCommodityColDfn(columnDfn, "Customer promotion", 120, SbmDbDfn.ColumnIdx.CommodityCustomer_PromotionCode, ColumnAlignment.Center, DataValue.DataType.String, aliasCommodity_CmdCustomer, prefixCommodity_CmdCustomer);
|
|
break;
|
|
//---------------------------------------------------------------
|
|
// Stock:
|
|
case SbmCommodity.Column.QtyInStock:
|
|
SetCommodityColDfn(columnDfn, "Qty in Stock", 80, SbmDbDfn.ColumnIdx.Commodity_QtyInStock, ColumnAlignment.Right);
|
|
break;
|
|
case SbmCommodity.Column.QtyAllocated:
|
|
SetCommodityColDfn(columnDfn, "Qty allocated", 100, SbmDbDfn.ColumnIdx.Commodity_QtyAllocated, ColumnAlignment.Center);
|
|
break;
|
|
case SbmCommodity.Column.StockTakeDate:
|
|
SetCommodityColDfn(columnDfn, "Stock take date", 100, SbmDbDfn.ColumnIdx.Commodity_StockTakeDate, ColumnAlignment.Center);
|
|
break;
|
|
case SbmCommodity.Column.StockTakeQty:
|
|
SetCommodityColDfn(columnDfn, "Stock take qty", 100, SbmDbDfn.ColumnIdx.Commodity_StockTakeQty, ColumnAlignment.Center);
|
|
break;
|
|
case SbmCommodity.Column.FreeStock:
|
|
SetCommodityColDfn(columnDfn, "Free stock", 100, SbmDbDfn.ColumnIdx.Commodity_FreeStock, ColumnAlignment.Center);
|
|
break;
|
|
|
|
//---------------------------------------------------------------
|
|
// Stock take date.
|
|
case SbmCommodity.Column.StockTake_Date:
|
|
SetCommodityColDfn(columnDfn, "Last stock take", 80, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Center, DataValue.DataType.Date);
|
|
columnDfn.DataName = dataNameLastStockTake;
|
|
break;
|
|
|
|
//---------------------------------------------------------------
|
|
// Sales budget.
|
|
case SbmCommodity.Column.SalesProj_Annual:
|
|
SetCommodityColDfn(columnDfn, "Budget (annual)", 75, SbmDbDfn.ColumnIdx.Commodity_SalesProjAnnual, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.NumDecimals = (byte)OrderQuantityDecimals;
|
|
break;
|
|
case SbmCommodity.Column.SalesProj_Jan:
|
|
SetCommodityColDfn(columnDfn, "Budget (Jan)", 75, SbmDbDfn.ColumnIdx.Commodity_SalesProjMonth01, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.NumDecimals = (byte)OrderQuantityDecimals;
|
|
break;
|
|
case SbmCommodity.Column.SalesProj_Feb:
|
|
SetCommodityColDfn(columnDfn, "Budget (Feb)", 75, SbmDbDfn.ColumnIdx.Commodity_SalesProjMonth02, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.NumDecimals = (byte)OrderQuantityDecimals;
|
|
break;
|
|
case SbmCommodity.Column.SalesProj_Mar:
|
|
SetCommodityColDfn(columnDfn, "Budget (Mar)", 75, SbmDbDfn.ColumnIdx.Commodity_SalesProjMonth03, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.NumDecimals = (byte)OrderQuantityDecimals;
|
|
break;
|
|
case SbmCommodity.Column.SalesProj_Apr:
|
|
SetCommodityColDfn(columnDfn, "Budget (Apr)", 75, SbmDbDfn.ColumnIdx.Commodity_SalesProjMonth04, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.NumDecimals = (byte)OrderQuantityDecimals;
|
|
break;
|
|
case SbmCommodity.Column.SalesProj_May:
|
|
SetCommodityColDfn(columnDfn, "Budget (May)", 75, SbmDbDfn.ColumnIdx.Commodity_SalesProjMonth05, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.NumDecimals = (byte)OrderQuantityDecimals;
|
|
break;
|
|
case SbmCommodity.Column.SalesProj_Jun:
|
|
SetCommodityColDfn(columnDfn, "Budget (Jun)", 75, SbmDbDfn.ColumnIdx.Commodity_SalesProjMonth06, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.NumDecimals = (byte)OrderQuantityDecimals;
|
|
break;
|
|
case SbmCommodity.Column.SalesProj_Jul:
|
|
SetCommodityColDfn(columnDfn, "Budget (Jul)", 75, SbmDbDfn.ColumnIdx.Commodity_SalesProjMonth07, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.NumDecimals = (byte)OrderQuantityDecimals;
|
|
break;
|
|
case SbmCommodity.Column.SalesProj_Aug:
|
|
SetCommodityColDfn(columnDfn, "Budget (Aug)", 75, SbmDbDfn.ColumnIdx.Commodity_SalesProjMonth08, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.NumDecimals = (byte)OrderQuantityDecimals;
|
|
break;
|
|
case SbmCommodity.Column.SalesProj_Sep:
|
|
SetCommodityColDfn(columnDfn, "Budget (Sep)", 75, SbmDbDfn.ColumnIdx.Commodity_SalesProjMonth09, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.NumDecimals = (byte)OrderQuantityDecimals;
|
|
break;
|
|
case SbmCommodity.Column.SalesProj_Oct:
|
|
SetCommodityColDfn(columnDfn, "Budget (Oct)", 75, SbmDbDfn.ColumnIdx.Commodity_SalesProjMonth10, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.NumDecimals = (byte)OrderQuantityDecimals;
|
|
break;
|
|
case SbmCommodity.Column.SalesProj_Nov:
|
|
SetCommodityColDfn(columnDfn, "Budget (Nov)", 75, SbmDbDfn.ColumnIdx.Commodity_SalesProjMonth11, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.NumDecimals = (byte)OrderQuantityDecimals;
|
|
break;
|
|
case SbmCommodity.Column.SalesProj_Dec:
|
|
SetCommodityColDfn(columnDfn, "Budget (Dec)", 75, SbmDbDfn.ColumnIdx.Commodity_SalesProjMonth12, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.NumDecimals = (byte)OrderQuantityDecimals;
|
|
break;
|
|
case SbmCommodity.Column.SalesProj_Period:
|
|
SetCommodityColDfn(columnDfn, "Budget (period)", 90, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.NumDecimals = (byte)OrderQuantityDecimals;
|
|
break;
|
|
//---------------------------------------------------------------
|
|
// Sales Orders:
|
|
case SbmCommodity.Column.SalesYtdFinancial:
|
|
SetCommodityColDfn(columnDfn, "Sales FYTD", 90, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.NumDecimals = (byte)OrderQuantityDecimals;
|
|
break;
|
|
case SbmCommodity.Column.SalesYtdCalendar:
|
|
SetCommodityColDfn(columnDfn, "Sales CYTD", 90, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.NumDecimals = (byte)OrderQuantityDecimals;
|
|
break;
|
|
case SbmCommodity.Column.SalesPyFinancial:
|
|
SetCommodityColDfn(columnDfn, "Sales PFY", 90, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.NumDecimals = (byte)OrderQuantityDecimals;
|
|
break;
|
|
case SbmCommodity.Column.SalesPyCalendar:
|
|
SetCommodityColDfn(columnDfn, "Sales PCY", 90, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.NumDecimals = (byte)OrderQuantityDecimals;
|
|
break;
|
|
case SbmCommodity.Column.SalesMonthCurrent:
|
|
SetCommodityColDfn(columnDfn, "Sales Mth curr", 90, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.NumDecimals = (byte)OrderQuantityDecimals;
|
|
break;
|
|
case SbmCommodity.Column.SalesMonthPast01:
|
|
SetCommodityColDfn(columnDfn, "Sales Mth -1", 90, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.NumDecimals = (byte)OrderQuantityDecimals;
|
|
break;
|
|
case SbmCommodity.Column.SalesMonthPast02:
|
|
SetCommodityColDfn(columnDfn, "Sales Mth -2", 90, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.NumDecimals = (byte)OrderQuantityDecimals;
|
|
break;
|
|
case SbmCommodity.Column.SalesMonthPast03:
|
|
SetCommodityColDfn(columnDfn, "Sales Mth -3", 90, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.NumDecimals = (byte)OrderQuantityDecimals;
|
|
break;
|
|
case SbmCommodity.Column.SalesMonthPast04:
|
|
SetCommodityColDfn(columnDfn, "Sales Mth -4", 90, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.NumDecimals = (byte)OrderQuantityDecimals;
|
|
break;
|
|
case SbmCommodity.Column.SalesMonthPast05:
|
|
SetCommodityColDfn(columnDfn, "Sales Mth -5", 90, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.NumDecimals = (byte)OrderQuantityDecimals;
|
|
break;
|
|
case SbmCommodity.Column.SalesMonthPast06:
|
|
SetCommodityColDfn(columnDfn, "Sales Mth -6", 90, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.NumDecimals = (byte)OrderQuantityDecimals;
|
|
break;
|
|
case SbmCommodity.Column.SalesMonthPast07:
|
|
SetCommodityColDfn(columnDfn, "Sales Mth -7", 90, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.NumDecimals = (byte)OrderQuantityDecimals;
|
|
break;
|
|
case SbmCommodity.Column.SalesMonthPast08:
|
|
SetCommodityColDfn(columnDfn, "Sales Mth -8", 90, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.NumDecimals = (byte)OrderQuantityDecimals;
|
|
break;
|
|
case SbmCommodity.Column.SalesMonthPast09:
|
|
SetCommodityColDfn(columnDfn, "Sales Mth -9", 90, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.NumDecimals = (byte)OrderQuantityDecimals;
|
|
break;
|
|
case SbmCommodity.Column.SalesMonthPast10:
|
|
SetCommodityColDfn(columnDfn, "Sales Mth -10", 90, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.NumDecimals = (byte)OrderQuantityDecimals;
|
|
break;
|
|
case SbmCommodity.Column.SalesMonthPast11:
|
|
SetCommodityColDfn(columnDfn, "Sales Mth -11", 90, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.NumDecimals = (byte)OrderQuantityDecimals;
|
|
break;
|
|
case SbmCommodity.Column.SalesMonthPast12:
|
|
SetCommodityColDfn(columnDfn, "Sales Mth -12", 90, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.NumDecimals = (byte)OrderQuantityDecimals;
|
|
break;
|
|
//---------------------------------------------------------------
|
|
// Stock sold:
|
|
case SbmCommodity.Column.StockSold_Period:
|
|
SetCommodityColDfn(columnDfn, "Sold during period", 90, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.NumDecimals = (byte)OrderQuantityDecimals;
|
|
break;
|
|
//---------------------------------------------------------------
|
|
// Stock Levels:
|
|
case SbmCommodity.Column.Stock_Allocated:
|
|
SetCommodityColDfn(columnDfn, "Allocated", 80, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.NumDecimals = (byte)OrderQuantityDecimals;
|
|
break;
|
|
case SbmCommodity.Column.Stock_Allocated_Sales:
|
|
SetCommodityColDfn(columnDfn, "Allocated (sales)", 80, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.NumDecimals = (byte)OrderQuantityDecimals;
|
|
break;
|
|
case SbmCommodity.Column.Stock_Allocated_Calc:
|
|
SetCommodityColDfn(columnDfn, "Allocated (calc)", 80, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.NumDecimals = (byte)OrderQuantityDecimals;
|
|
break;
|
|
case SbmCommodity.Column.Stock_Allocated_All:
|
|
SetCommodityColDfn(columnDfn, "Allocated (all)", 80, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.NumDecimals = (byte)OrderQuantityDecimals;
|
|
break;
|
|
case SbmCommodity.Column.Stock_CurrentLevel:
|
|
SetCommodityColDfn(columnDfn, "Stock", 80, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.NumDecimals = (byte)OrderQuantityDecimals;
|
|
break;
|
|
case SbmCommodity.Column.Stock_CurrentLevel_Sales:
|
|
SetCommodityColDfn(columnDfn, "Stock (sales)", 80, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.NumDecimals = (byte)OrderQuantityDecimals;
|
|
break;
|
|
case SbmCommodity.Column.Stock_CurrentLevel_Calc:
|
|
SetCommodityColDfn(columnDfn, "Stock (calc)", 80, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.NumDecimals = (byte)OrderQuantityDecimals;
|
|
break;
|
|
case SbmCommodity.Column.Stock_CurrentLevel_All:
|
|
SetCommodityColDfn(columnDfn, "Stock (all)", 80, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.NumDecimals = (byte)OrderQuantityDecimals;
|
|
break;
|
|
case SbmCommodity.Column.Stock_ImminentLevel:
|
|
SetCommodityColDfn(columnDfn, "Stock (imminent)", 80, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.NumDecimals = (byte)OrderQuantityDecimals;
|
|
break;
|
|
case SbmCommodity.Column.Stock_Available:
|
|
SetCommodityColDfn(columnDfn, "Avail", 80, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.NumDecimals = (byte)OrderQuantityDecimals;
|
|
columnDfn.ShowZeroValues = false;
|
|
break;
|
|
case SbmCommodity.Column.Stock_Available_MinZero:
|
|
SetCommodityColDfn(columnDfn, "Avail", 80, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.NumDecimals = (byte)OrderQuantityDecimals;
|
|
columnDfn.ShowZeroValues = false;
|
|
break;
|
|
case SbmCommodity.Column.Stock_Available_Sales:
|
|
SetCommodityColDfn(columnDfn, "Avail (sales)", 80, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.NumDecimals = (byte)OrderQuantityDecimals;
|
|
columnDfn.ShowZeroValues = false;
|
|
break;
|
|
case SbmCommodity.Column.Stock_Available_Sales_MinZero:
|
|
SetCommodityColDfn(columnDfn, "Avail (sales)", 80, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.NumDecimals = (byte)OrderQuantityDecimals;
|
|
columnDfn.ShowZeroValues = false;
|
|
break;
|
|
case SbmCommodity.Column.Stock_ImminentAvailable:
|
|
SetCommodityColDfn(columnDfn, "Avail (imminent)", 80, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.NumDecimals = (byte)OrderQuantityDecimals;
|
|
columnDfn.ShowZeroValues = false;
|
|
break;
|
|
case SbmCommodity.Column.Stock_CurrentVsReorder:
|
|
SetCommodityColDfn(columnDfn, "Current-v-Reorder", 80, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.NumDecimals = (byte)OrderQuantityDecimals;
|
|
columnDfn.ShowZeroValues = false;
|
|
break;
|
|
case SbmCommodity.Column.Stock_ImminentVsReorder:
|
|
SetCommodityColDfn(columnDfn, "Imminent-v-Reorder", 80, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.NumDecimals = (byte)OrderQuantityDecimals;
|
|
columnDfn.ShowZeroValues = false;
|
|
break;
|
|
case SbmCommodity.Column.Stock_AvailVsReorder:
|
|
SetCommodityColDfn(columnDfn, "Avail-v-Reorder", 80, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.NumDecimals = (byte)OrderQuantityDecimals;
|
|
columnDfn.ShowZeroValues = false;
|
|
break;
|
|
case SbmCommodity.Column.Stock_ImminentAvailVsReorder:
|
|
SetCommodityColDfn(columnDfn, "Avail(imm)-v-Reorder", 80, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.NumDecimals = (byte)OrderQuantityDecimals;
|
|
columnDfn.ShowZeroValues = false;
|
|
break;
|
|
|
|
//---------------------------------------------------------------
|
|
// Stock bays by location.
|
|
case SbmCommodity.Column.Stock_Bays:
|
|
SetCommodityColDfn(columnDfn, "Stock bays", 90, SbmDbDfn.ColumnIdx.Unknown);
|
|
break;
|
|
case SbmCommodity.Column.Stock_Bay1:
|
|
SetCommodityColDfn(columnDfn, GetAttributeCaption(SbmDbDfn.ColumnIdx.StockLevel_Bay1, "Bay 1"), 80, SbmDbDfn.ColumnIdx.Unknown);
|
|
break;
|
|
case SbmCommodity.Column.Stock_Bay2:
|
|
SetCommodityColDfn(columnDfn, GetAttributeCaption(SbmDbDfn.ColumnIdx.StockLevel_Bay2, "Bay 2"), 80, SbmDbDfn.ColumnIdx.Unknown);
|
|
break;
|
|
case SbmCommodity.Column.Stock_Bay3:
|
|
SetCommodityColDfn(columnDfn, GetAttributeCaption(SbmDbDfn.ColumnIdx.StockLevel_Bay3, "Bay 3"), 80, SbmDbDfn.ColumnIdx.Unknown);
|
|
break;
|
|
|
|
//---------------------------------------------------------------
|
|
// Stock due next date:
|
|
case SbmCommodity.Column.Stock_NextDue_Date: // Date next movement arrival expected.
|
|
SetCommodityColDfn(columnDfn, "Stk next due", 85, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Center, DataValue.DataType.Date);
|
|
columnDfn.DateFormat = "d-MMM-yy";
|
|
break;
|
|
case SbmCommodity.Column.Stock_NextDue_Quantity: // Quantity next movement arrival expected.
|
|
SetCommodityColDfn(columnDfn, "Stk next due qty", 85, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Center, DataValue.DataType.Date);
|
|
columnDfn.NumDecimals = (byte)OrderQuantityDecimals;
|
|
break;
|
|
case SbmCommodity.Column.Stock_NextDue_Commodity_Date: // Date next commodity movement arrival expected.
|
|
SetCommodityColDfn(columnDfn, "Cmd next due", 85, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Center, DataValue.DataType.Date);
|
|
columnDfn.DateFormat = "d-MMM-yy";
|
|
break;
|
|
case SbmCommodity.Column.Stock_NextDue_Commodity_Quantity: // Quantity next commodity movement arrival expected.
|
|
SetCommodityColDfn(columnDfn, "Cmd next due qty", 85, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Center, DataValue.DataType.Date);
|
|
columnDfn.NumDecimals = (byte)OrderQuantityDecimals;
|
|
break;
|
|
case SbmCommodity.Column.Stock_NextDue_Container_Date: // Date next container movement arrival expected.
|
|
SetCommodityColDfn(columnDfn, "Cont next due", 85, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Center, DataValue.DataType.Date);
|
|
columnDfn.DateFormat = "d-MMM-yy";
|
|
break;
|
|
case SbmCommodity.Column.Stock_NextDue_Container_Quantity: // Quantity next container movement arrival expected.
|
|
SetCommodityColDfn(columnDfn, "Cont next due qty", 85, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Center, DataValue.DataType.Date);
|
|
columnDfn.NumDecimals = (byte)OrderQuantityDecimals;
|
|
break;
|
|
|
|
// Stock due in imminently - under organisation configuration control:
|
|
case SbmCommodity.Column.Stock_Due_Imminently:
|
|
SetCommodityColDfn(columnDfn, "Due imminently", 80, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.NumDecimals = (byte)OrderQuantityDecimals;
|
|
break;
|
|
|
|
// Stock due in by future weeks:
|
|
case SbmCommodity.Column.Stock_DueIn_Week1:
|
|
SetCommodityColDfn(columnDfn, "Due in wk1", 80, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.NumDecimals = (byte)OrderQuantityDecimals;
|
|
break;
|
|
case SbmCommodity.Column.Stock_DueIn_Week2:
|
|
SetCommodityColDfn(columnDfn, "Due in wk2", 80, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.NumDecimals = (byte)OrderQuantityDecimals;
|
|
break;
|
|
case SbmCommodity.Column.Stock_DueIn_Week3:
|
|
SetCommodityColDfn(columnDfn, "Due in wk3", 80, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.NumDecimals = (byte)OrderQuantityDecimals;
|
|
break;
|
|
case SbmCommodity.Column.Stock_DueIn_Week4:
|
|
SetCommodityColDfn(columnDfn, "Due in wk4", 80, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.NumDecimals = (byte)OrderQuantityDecimals;
|
|
break;
|
|
case SbmCommodity.Column.Stock_DueIn_Week5:
|
|
SetCommodityColDfn(columnDfn, "Due in wk5", 80, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.NumDecimals = (byte)OrderQuantityDecimals;
|
|
break;
|
|
case SbmCommodity.Column.Stock_DueIn_Week6:
|
|
SetCommodityColDfn(columnDfn, "Due in wk6", 80, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.NumDecimals = (byte)OrderQuantityDecimals;
|
|
break;
|
|
case SbmCommodity.Column.Stock_DueIn_Week7:
|
|
SetCommodityColDfn(columnDfn, "Due in wk7", 80, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.NumDecimals = (byte)OrderQuantityDecimals;
|
|
break;
|
|
case SbmCommodity.Column.Stock_DueIn_Week8:
|
|
SetCommodityColDfn(columnDfn, "Due in wk8", 80, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.NumDecimals = (byte)OrderQuantityDecimals;
|
|
break;
|
|
case SbmCommodity.Column.Stock_DueIn_Week9:
|
|
SetCommodityColDfn(columnDfn, "Due in wk9", 80, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.NumDecimals = (byte)OrderQuantityDecimals;
|
|
break;
|
|
case SbmCommodity.Column.Stock_DueIn_Week10:
|
|
SetCommodityColDfn(columnDfn, "Due in wk10", 80, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.NumDecimals = (byte)OrderQuantityDecimals;
|
|
break;
|
|
case SbmCommodity.Column.Stock_DueIn_Week11:
|
|
SetCommodityColDfn(columnDfn, "Due in wk11", 80, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.NumDecimals = (byte)OrderQuantityDecimals;
|
|
break;
|
|
case SbmCommodity.Column.Stock_DueIn_Week12:
|
|
SetCommodityColDfn(columnDfn, "Due in wk12", 80, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.NumDecimals = (byte)OrderQuantityDecimals;
|
|
break;
|
|
case SbmCommodity.Column.Stock_DueIn_Week1To2:
|
|
SetCommodityColDfn(columnDfn, "Due in wk1-2", 80, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.NumDecimals = (byte)OrderQuantityDecimals;
|
|
break;
|
|
case SbmCommodity.Column.Stock_DueIn_Week3To4:
|
|
SetCommodityColDfn(columnDfn, "Due in wk3-4", 80, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.NumDecimals = (byte)OrderQuantityDecimals;
|
|
break;
|
|
case SbmCommodity.Column.Stock_DueIn_Week5To6:
|
|
SetCommodityColDfn(columnDfn, "Due in wk5-6", 80, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.NumDecimals = (byte)OrderQuantityDecimals;
|
|
break;
|
|
case SbmCommodity.Column.Stock_DueIn_Week7To8:
|
|
SetCommodityColDfn(columnDfn, "Due in wk7-8", 80, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.NumDecimals = (byte)OrderQuantityDecimals;
|
|
break;
|
|
case SbmCommodity.Column.Stock_DueIn_Week9To10:
|
|
SetCommodityColDfn(columnDfn, "Due in wk9-10", 80, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.NumDecimals = (byte)OrderQuantityDecimals;
|
|
break;
|
|
case SbmCommodity.Column.Stock_DueIn_Week11To12:
|
|
SetCommodityColDfn(columnDfn, "Due in wk11-12", 80, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.NumDecimals = (byte)OrderQuantityDecimals;
|
|
break;
|
|
case SbmCommodity.Column.Stock_DueIn_Week7On:
|
|
SetCommodityColDfn(columnDfn, "Due in wk7 on", 80, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.NumDecimals = (byte)OrderQuantityDecimals;
|
|
break;
|
|
case SbmCommodity.Column.Stock_DueIn_Week13On:
|
|
SetCommodityColDfn(columnDfn, "Due in wk13 on", 80, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.NumDecimals = (byte)OrderQuantityDecimals;
|
|
break;
|
|
|
|
// Stock allocated by future weeks.
|
|
case SbmCommodity.Column.Stock_Allocated_Week1:
|
|
SetCommodityColDfn(columnDfn, "Alloc wk1", 80, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.NumDecimals = (byte)OrderQuantityDecimals;
|
|
break;
|
|
case SbmCommodity.Column.Stock_Allocated_Week2:
|
|
SetCommodityColDfn(columnDfn, "Alloc wk2", 80, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.NumDecimals = (byte)OrderQuantityDecimals;
|
|
break;
|
|
case SbmCommodity.Column.Stock_Allocated_Week3To4:
|
|
SetCommodityColDfn(columnDfn, "Alloc wk3-4", 80, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.NumDecimals = (byte)OrderQuantityDecimals;
|
|
break;
|
|
case SbmCommodity.Column.Stock_Allocated_Week5To6:
|
|
SetCommodityColDfn(columnDfn, "Alloc wk5-6", 80, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.NumDecimals = (byte)OrderQuantityDecimals;
|
|
break;
|
|
case SbmCommodity.Column.Stock_Allocated_Week7To8:
|
|
SetCommodityColDfn(columnDfn, "Alloc wk7-8", 80, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.NumDecimals = (byte)OrderQuantityDecimals;
|
|
break;
|
|
case SbmCommodity.Column.Stock_Allocated_Week9To10:
|
|
SetCommodityColDfn(columnDfn, "Alloc wk9-10", 80, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.NumDecimals = (byte)OrderQuantityDecimals;
|
|
break;
|
|
case SbmCommodity.Column.Stock_Allocated_Week11To12:
|
|
SetCommodityColDfn(columnDfn, "Alloc wk11-12", 80, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.NumDecimals = (byte)OrderQuantityDecimals;
|
|
break;
|
|
case SbmCommodity.Column.Stock_Allocated_Week13On:
|
|
SetCommodityColDfn(columnDfn, "Alloc wk13 on", 80, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.NumDecimals = (byte)OrderQuantityDecimals;
|
|
break;
|
|
|
|
//---------------------------------------------------------------
|
|
// Stock allocated in current and following months.
|
|
case SbmCommodity.Column.Stock_Allocated_MonthCurrent:
|
|
SetCommodityColDfn(columnDfn, "Alloc " + DateUtil.Format(today, "MMM-yy"), 80, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.NumDecimals = (byte)OrderQuantityDecimals;
|
|
break;
|
|
case SbmCommodity.Column.Stock_Allocated_Month01:
|
|
SetCommodityColDfn(columnDfn, "Alloc " + DateUtil.Format(today.AddMonths(1), "MMM-yy"), 80, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.NumDecimals = (byte)OrderQuantityDecimals;
|
|
break;
|
|
case SbmCommodity.Column.Stock_Allocated_Month02:
|
|
SetCommodityColDfn(columnDfn, "Alloc " + DateUtil.Format(today.AddMonths(2), "MMM-yy"), 80, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.NumDecimals = (byte)OrderQuantityDecimals;
|
|
break;
|
|
case SbmCommodity.Column.Stock_Allocated_Month03:
|
|
SetCommodityColDfn(columnDfn, "Alloc " + DateUtil.Format(today.AddMonths(3), "MMM-yy"), 80, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.NumDecimals = (byte)OrderQuantityDecimals;
|
|
break;
|
|
case SbmCommodity.Column.Stock_Allocated_Month04:
|
|
SetCommodityColDfn(columnDfn, "Alloc " + DateUtil.Format(today.AddMonths(4), "MMM-yy"), 80, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.NumDecimals = (byte)OrderQuantityDecimals;
|
|
break;
|
|
case SbmCommodity.Column.Stock_Allocated_Month05:
|
|
SetCommodityColDfn(columnDfn, "Alloc " + DateUtil.Format(today.AddMonths(5), "MMM-yy"), 80, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.NumDecimals = (byte)OrderQuantityDecimals;
|
|
break;
|
|
case SbmCommodity.Column.Stock_Allocated_Month06:
|
|
SetCommodityColDfn(columnDfn, "Alloc " + DateUtil.Format(today.AddMonths(6), "MMM-yy"), 80, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.NumDecimals = (byte)OrderQuantityDecimals;
|
|
break;
|
|
case SbmCommodity.Column.Stock_Allocated_Month07:
|
|
SetCommodityColDfn(columnDfn, "Alloc " + DateUtil.Format(today.AddMonths(7), "MMM-yy"), 80, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.NumDecimals = (byte)OrderQuantityDecimals;
|
|
break;
|
|
case SbmCommodity.Column.Stock_Allocated_Month08:
|
|
SetCommodityColDfn(columnDfn, "Alloc " + DateUtil.Format(today.AddMonths(8), "MMM-yy"), 80, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.NumDecimals = (byte)OrderQuantityDecimals;
|
|
break;
|
|
case SbmCommodity.Column.Stock_Allocated_Month09:
|
|
SetCommodityColDfn(columnDfn, "Alloc " + DateUtil.Format(today.AddMonths(9), "MMM-yy"), 80, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.NumDecimals = (byte)OrderQuantityDecimals;
|
|
break;
|
|
case SbmCommodity.Column.Stock_Allocated_Month10:
|
|
SetCommodityColDfn(columnDfn, "Alloc " + DateUtil.Format(today.AddMonths(10), "MMM-yy"), 80, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.NumDecimals = (byte)OrderQuantityDecimals;
|
|
break;
|
|
case SbmCommodity.Column.Stock_Allocated_Month11:
|
|
SetCommodityColDfn(columnDfn, "Alloc " + DateUtil.Format(today.AddMonths(11), "MMM-yy"), 80, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.NumDecimals = (byte)OrderQuantityDecimals;
|
|
break;
|
|
case SbmCommodity.Column.Stock_Allocated_Month12:
|
|
SetCommodityColDfn(columnDfn, "Alloc " + DateUtil.Format(today.AddMonths(12), "MMM-yy"), 80, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.NumDecimals = (byte)OrderQuantityDecimals;
|
|
break;
|
|
|
|
//---------------------------------------------------------------
|
|
// Stock level at end of current and following months [derived].
|
|
case SbmCommodity.Column.Stock_EndOfMonth_Current:
|
|
SetCommodityColDfn(columnDfn, "EOM Stock " + DateUtil.Format(today, "MMM-yy"), 80, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.NumDecimals = (byte)OrderQuantityDecimals;
|
|
break;
|
|
case SbmCommodity.Column.Stock_EndOfMonth_01:
|
|
SetCommodityColDfn(columnDfn, "EOM Stock " + DateUtil.Format(today.AddMonths(1), "MMM-yy"), 80, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.NumDecimals = (byte)OrderQuantityDecimals;
|
|
break;
|
|
case SbmCommodity.Column.Stock_EndOfMonth_02:
|
|
SetCommodityColDfn(columnDfn, "EOM Stock " + DateUtil.Format(today.AddMonths(2), "MMM-yy"), 80, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.NumDecimals = (byte)OrderQuantityDecimals;
|
|
break;
|
|
case SbmCommodity.Column.Stock_EndOfMonth_03:
|
|
SetCommodityColDfn(columnDfn, "EOM Stock " + DateUtil.Format(today.AddMonths(3), "MMM-yy"), 80, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.NumDecimals = (byte)OrderQuantityDecimals;
|
|
break;
|
|
case SbmCommodity.Column.Stock_EndOfMonth_04:
|
|
SetCommodityColDfn(columnDfn, "EOM Stock " + DateUtil.Format(today.AddMonths(4), "MMM-yy"), 80, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.NumDecimals = (byte)OrderQuantityDecimals;
|
|
break;
|
|
case SbmCommodity.Column.Stock_EndOfMonth_05:
|
|
SetCommodityColDfn(columnDfn, "EOM Stock " + DateUtil.Format(today.AddMonths(5), "MMM-yy"), 80, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.NumDecimals = (byte)OrderQuantityDecimals;
|
|
break;
|
|
case SbmCommodity.Column.Stock_EndOfMonth_06:
|
|
SetCommodityColDfn(columnDfn, "EOM Stock " + DateUtil.Format(today.AddMonths(6), "MMM-yy"), 80, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.NumDecimals = (byte)OrderQuantityDecimals;
|
|
break;
|
|
case SbmCommodity.Column.Stock_EndOfMonth_07:
|
|
SetCommodityColDfn(columnDfn, "EOM Stock " + DateUtil.Format(today.AddMonths(7), "MMM-yy"), 80, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.NumDecimals = (byte)OrderQuantityDecimals;
|
|
break;
|
|
case SbmCommodity.Column.Stock_EndOfMonth_08:
|
|
SetCommodityColDfn(columnDfn, "EOM Stock " + DateUtil.Format(today.AddMonths(8), "MMM-yy"), 80, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.NumDecimals = (byte)OrderQuantityDecimals;
|
|
break;
|
|
case SbmCommodity.Column.Stock_EndOfMonth_09:
|
|
SetCommodityColDfn(columnDfn, "EOM Stock " + DateUtil.Format(today.AddMonths(9), "MMM-yy"), 80, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.NumDecimals = (byte)OrderQuantityDecimals;
|
|
break;
|
|
case SbmCommodity.Column.Stock_EndOfMonth_10:
|
|
SetCommodityColDfn(columnDfn, "EOM Stock " + DateUtil.Format(today.AddMonths(10), "MMM-yy"), 80, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.NumDecimals = (byte)OrderQuantityDecimals;
|
|
break;
|
|
case SbmCommodity.Column.Stock_EndOfMonth_11:
|
|
SetCommodityColDfn(columnDfn, "EOM Stock " + DateUtil.Format(today.AddMonths(11), "MMM-yy"), 80, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.NumDecimals = (byte)OrderQuantityDecimals;
|
|
break;
|
|
case SbmCommodity.Column.Stock_EndOfMonth_12:
|
|
SetCommodityColDfn(columnDfn, "EOM Stock " + DateUtil.Format(today.AddMonths(12), "MMM-yy"), 80, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.NumDecimals = (byte)OrderQuantityDecimals;
|
|
break;
|
|
//---------------------------------------------------------------
|
|
// Stock due in by future months.
|
|
case SbmCommodity.Column.Stock_DueIn_MonthCurrent:
|
|
SetCommodityColDfn(columnDfn, "Due " + DateUtil.Format(new DateTime(), "MMM-yy"), 70, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.NumDecimals = (byte)OrderQuantityDecimals;
|
|
break;
|
|
case SbmCommodity.Column.Stock_DueIn_Month01:
|
|
SetCommodityColDfn(columnDfn, "Due " + DateUtil.Format(new DateTime().AddMonths(1), "MMM-yy"), 70, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.NumDecimals = (byte)OrderQuantityDecimals;
|
|
break;
|
|
case SbmCommodity.Column.Stock_DueIn_Month02:
|
|
SetCommodityColDfn(columnDfn, "Due " + DateUtil.Format(new DateTime().AddMonths(2), "MMM-yy"), 70, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.NumDecimals = (byte)OrderQuantityDecimals;
|
|
break;
|
|
case SbmCommodity.Column.Stock_DueIn_Month03:
|
|
SetCommodityColDfn(columnDfn, "Due " + DateUtil.Format(new DateTime().AddMonths(3), "MMM-yy"), 70, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.NumDecimals = (byte)OrderQuantityDecimals;
|
|
break;
|
|
case SbmCommodity.Column.Stock_DueIn_Month04:
|
|
SetCommodityColDfn(columnDfn, "Due " + DateUtil.Format(new DateTime().AddMonths(4), "MMM-yy"), 70, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.NumDecimals = (byte)OrderQuantityDecimals;
|
|
break;
|
|
case SbmCommodity.Column.Stock_DueIn_Month05:
|
|
SetCommodityColDfn(columnDfn, "Due " + DateUtil.Format(new DateTime().AddMonths(5), "MMM-yy"), 70, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.NumDecimals = (byte)OrderQuantityDecimals;
|
|
break;
|
|
case SbmCommodity.Column.Stock_DueIn_Month06:
|
|
SetCommodityColDfn(columnDfn, "Due " + DateUtil.Format(new DateTime().AddMonths(6), "MMM-yy"), 70, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.NumDecimals = (byte)OrderQuantityDecimals;
|
|
break;
|
|
case SbmCommodity.Column.Stock_DueIn_Month07:
|
|
SetCommodityColDfn(columnDfn, "Due " + DateUtil.Format(new DateTime().AddMonths(7), "MMM-yy"), 70, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.NumDecimals = (byte)OrderQuantityDecimals;
|
|
break;
|
|
case SbmCommodity.Column.Stock_DueIn_Month08:
|
|
SetCommodityColDfn(columnDfn, "Due " + DateUtil.Format(new DateTime().AddMonths(8), "MMM-yy"), 70, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.NumDecimals = (byte)OrderQuantityDecimals;
|
|
break;
|
|
case SbmCommodity.Column.Stock_DueIn_Month09:
|
|
SetCommodityColDfn(columnDfn, "Due " + DateUtil.Format(new DateTime().AddMonths(9), "MMM-yy"), 70, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.NumDecimals = (byte)OrderQuantityDecimals;
|
|
break;
|
|
case SbmCommodity.Column.Stock_DueIn_Month10:
|
|
SetCommodityColDfn(columnDfn, "Due " + DateUtil.Format(new DateTime().AddMonths(10), "MMM-yy"), 70, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.NumDecimals = (byte)OrderQuantityDecimals;
|
|
break;
|
|
case SbmCommodity.Column.Stock_DueIn_Month11:
|
|
SetCommodityColDfn(columnDfn, "Due " + DateUtil.Format(new DateTime().AddMonths(11), "MMM-yy"), 70, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.NumDecimals = (byte)OrderQuantityDecimals;
|
|
break;
|
|
case SbmCommodity.Column.Stock_DueIn_Month12:
|
|
SetCommodityColDfn(columnDfn, "Due " + DateUtil.Format(new DateTime().AddMonths(12), "MMM-yy"), 70, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.NumDecimals = (byte)OrderQuantityDecimals;
|
|
break;
|
|
// Up to 3 months in future.
|
|
case SbmCommodity.Column.Stock_DueIn_MonthTo03:
|
|
SetCommodityColDfn(columnDfn, "Due to " + DateUtil.Format(new DateTime().AddMonths(3), "MMM-yy"), 100, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.NumDecimals = (byte)OrderQuantityDecimals;
|
|
break;
|
|
case SbmCommodity.Column.Stock_DueIn_MonthTo06:
|
|
SetCommodityColDfn(columnDfn, "Due to " + DateUtil.Format(new DateTime().AddMonths(6), "MMM-yy"), 100, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.NumDecimals = (byte)OrderQuantityDecimals;
|
|
break;
|
|
case SbmCommodity.Column.Stock_DueIn_MonthTo09:
|
|
SetCommodityColDfn(columnDfn, "Due to " + DateUtil.Format(new DateTime().AddMonths(9), "MMM-yy"), 100, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.NumDecimals = (byte)OrderQuantityDecimals;
|
|
break;
|
|
case SbmCommodity.Column.Stock_DueIn_MonthTo12:
|
|
SetCommodityColDfn(columnDfn, "Due to " + DateUtil.Format(new DateTime().AddMonths(12), "MMM-yy"), 100, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.NumDecimals = (byte)OrderQuantityDecimals;
|
|
break;
|
|
case SbmCommodity.Column.Stock_DueIn_Month04To06:
|
|
SetCommodityColDfn(columnDfn, "Due " + DateUtil.Format(new DateTime().AddMonths(4), "MMM-yy") + ":" + DateUtil.Format(new DateTime().AddMonths(6), "MMM-yy"), 100, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.NumDecimals = (byte)OrderQuantityDecimals;
|
|
break;
|
|
case SbmCommodity.Column.Stock_DueIn_Month07To09:
|
|
SetCommodityColDfn(columnDfn, "Due " + DateUtil.Format(new DateTime().AddMonths(7), "MMM-yy") + ":" + DateUtil.Format(new DateTime().AddMonths(9), "MMM-yy"), 100, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.NumDecimals = (byte)OrderQuantityDecimals;
|
|
break;
|
|
case SbmCommodity.Column.Stock_DueIn_Month10To12:
|
|
SetCommodityColDfn(columnDfn, "Due " + DateUtil.Format(new DateTime().AddMonths(10), "MMM-yy") + ":" + DateUtil.Format(new DateTime().AddMonths(12), "MMM-yy"), 100, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.NumDecimals = (byte)OrderQuantityDecimals;
|
|
break;
|
|
case SbmCommodity.Column.Stock_DueIn_Month07To12:
|
|
SetCommodityColDfn(columnDfn, "Due " + DateUtil.Format(new DateTime().AddMonths(7), "MMM-yy") + ":" + DateUtil.Format(new DateTime().AddMonths(12), "MMM-yy"), 100, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.NumDecimals = (byte)OrderQuantityDecimals;
|
|
break;
|
|
case SbmCommodity.Column.Stock_DueIn_Month04On:
|
|
SetCommodityColDfn(columnDfn, "Due " + DateUtil.Format(new DateTime().AddMonths(4), "MMM-yy") + " on", 90, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.NumDecimals = (byte)OrderQuantityDecimals;
|
|
break;
|
|
case SbmCommodity.Column.Stock_DueIn_Month05On:
|
|
SetCommodityColDfn(columnDfn, "Due " + DateUtil.Format(new DateTime().AddMonths(5), "MMM-yy") + " on", 90, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.NumDecimals = (byte)OrderQuantityDecimals;
|
|
break;
|
|
case SbmCommodity.Column.Stock_DueIn_Month06On:
|
|
SetCommodityColDfn(columnDfn, "Due " + DateUtil.Format(new DateTime().AddMonths(6), "MMM-yy") + " on", 90, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.NumDecimals = (byte)OrderQuantityDecimals;
|
|
break;
|
|
case SbmCommodity.Column.Stock_DueIn_Month07On:
|
|
SetCommodityColDfn(columnDfn, "Due " + DateUtil.Format(new DateTime().AddMonths(7), "MMM-yy") + " on", 90, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.NumDecimals = (byte)OrderQuantityDecimals;
|
|
break;
|
|
case SbmCommodity.Column.Stock_DueIn_Month13On:
|
|
SetCommodityColDfn(columnDfn, "Due " + DateUtil.Format(new DateTime().AddMonths(13), "MMM-yy") + " on", 90, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.NumDecimals = (byte)OrderQuantityDecimals;
|
|
break;
|
|
// Stock provisionally due in.
|
|
case SbmCommodity.Column.Stock_DueIn_Provisional:
|
|
SetCommodityColDfn(columnDfn, "Due (provisional)", 90, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.NumDecimals = (byte)OrderQuantityDecimals;
|
|
break;
|
|
//-----------------------------------------------------------------
|
|
// Requirements.
|
|
case SbmCommodity.Column.Reqnt_AmountUnit_Earliest_ById:
|
|
SetCommodityColDfn(columnDfn, "Earliest item amount", 80, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.NumDecimals = CurrencyDecimalsDefault;
|
|
break;
|
|
case SbmCommodity.Column.Reqnt_AmountUnit_Earliest_ByCode:
|
|
SetCommodityColDfn(columnDfn, "Earliest item amount", 80, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.NumDecimals = CurrencyDecimalsDefault;
|
|
break;
|
|
//-----------------------------------------------------------------
|
|
// Associated data.
|
|
case SbmCommodity.Column.CommodityCustomer_Count:
|
|
SetCommodityColDfn(columnDfn, "Customer items", 80, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.Long);
|
|
columnDfn.DataName = dataNameCommodityCustomerCount;
|
|
columnDfn.ReadOnly = true;
|
|
break;
|
|
case SbmCommodity.Column.CommoditySupplier_Count:
|
|
SetCommodityColDfn(columnDfn, "Supplier items", 80, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.Long);
|
|
columnDfn.DataName = dataNameCommoditySupplierCount;
|
|
columnDfn.ReadOnly = true;
|
|
break;
|
|
case SbmCommodity.Column.Process_Count:
|
|
SetCommodityColDfn(columnDfn, "Processes", 50, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.Long);
|
|
columnDfn.DataName = dataNameProcessCount;
|
|
columnDfn.ReadOnly = true;
|
|
break;
|
|
case SbmCommodity.Column.PortfolioItem_Count:
|
|
SetCommodityColDfn(columnDfn, "Portfolio items", 85, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Center, DataValue.DataType.Long);
|
|
columnDfn.DataName = dataNamePortfolioItemCount;
|
|
columnDfn.ReadOnly = true;
|
|
break;
|
|
//-------------------------------------------------------------------
|
|
// Barcode image.
|
|
case SbmCommodity.Column.BarcodeImagePath:
|
|
SetCommodityColDfn(columnDfn, "Barcode image file", 140, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Center);
|
|
break;
|
|
case SbmCommodity.Column.BarcodeImage:
|
|
SetCommodityColDfn(columnDfn, "Barcode image", 320, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Center);
|
|
break;
|
|
|
|
// Common properties.
|
|
case SbmCommodity.Column.Notes:
|
|
SetCommodityColDfn(columnDfn, "Notes", 200, SbmDbDfn.ColumnIdx.Commodity_Notes);
|
|
break;
|
|
case SbmCommodity.Column.Status:
|
|
SetCommodityColDfn(columnDfn, "Status", 50, SbmDbDfn.ColumnIdx.Commodity_Status, ColumnAlignment.Center);
|
|
break;
|
|
case SbmCommodity.Column.Status_Desc:
|
|
SetCommodityColDfn(columnDfn, "Status", 50, SbmDbDfn.ColumnIdx.Commodity_Status, ColumnAlignment.Center);
|
|
break;
|
|
case SbmCommodity.Column.Status_Ind:
|
|
SetCommodityColDfn(columnDfn, "Status", 50, SbmDbDfn.ColumnIdx.Commodity_Status, ColumnAlignment.Center, DataValue.DataType.TriState);
|
|
columnDfn.TriStateFormat = ColumnTriStateFormat.Lights;
|
|
break;
|
|
case SbmCommodity.Column.Status_Current_Y:
|
|
case SbmCommodity.Column.Status_Current_X:
|
|
SetCommodityColDfn(columnDfn, "Current", 60, SbmDbDfn.ColumnIdx.Commodity_Status, ColumnAlignment.Center, DataValue.DataType.String);
|
|
break;
|
|
case SbmCommodity.Column.Status_Current_Tick:
|
|
SetCommodityColDfn(columnDfn, "Current", 60, SbmDbDfn.ColumnIdx.Commodity_Status, ColumnAlignment.Center, DataValue.DataType.Bool);
|
|
columnDfn.BoolFormat = ColumnBoolFormat.Tick;
|
|
break;
|
|
case SbmCommodity.Column.CreateOn_Date:
|
|
SetCommodityColDfn(columnDfn, "Created", 80, SbmDbDfn.ColumnIdx.Commodity_CreateOn, ColumnAlignment.Center, DataValue.DataType.Date);
|
|
columnDfn.ReadOnly = true;
|
|
break;
|
|
case SbmCommodity.Column.UpdateOn_Date:
|
|
SetCommodityColDfn(columnDfn, "Updated", 80, SbmDbDfn.ColumnIdx.Commodity_UpdateOn, ColumnAlignment.Center, DataValue.DataType.Date);
|
|
columnDfn.ReadOnly = true;
|
|
break;
|
|
}
|
|
if (!String.IsNullOrEmpty(caption))
|
|
columnDfn.Caption = caption;
|
|
if (width > 0)
|
|
columnDfn.Width = width;
|
|
return columnDfn;
|
|
}
|
|
|
|
//-------------------------------------------------------------------
|
|
// Commodity query filter.
|
|
public override List<string> GetCommodityQueryFilter(SbmCommodity.Params prm)
|
|
{
|
|
List<String> filter = new List<String>();
|
|
|
|
//---------------------------------------------------------------
|
|
// Common columns.
|
|
String colCommodity_Id = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_Id, aliasCommodity);
|
|
String colCommodity_AffIdOwner = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_AffIdOwner, aliasCommodity);
|
|
String colCommodity_Type = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_Type, aliasCommodity);
|
|
String colCommodity_Code = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_Code, aliasCommodity);
|
|
String colCommodity_DescBrief = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_DescBrief, aliasCommodity);
|
|
String colCommodity_DescDetail = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_DescDetail, aliasCommodity);
|
|
String colCommodity_SpecSummary = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_SpecSummary, aliasCommodity);
|
|
String colCommodity_DrawingNo = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_DrawingNo, aliasCommodity);
|
|
String colCommodity_DrawingIssue = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_DrawingIssue, aliasCommodity);
|
|
|
|
//---------------------------------------------------------------
|
|
// Commodity Id.
|
|
String includedIds = prm.IdsIncluded.Concat(",");
|
|
if (!includedIds.IsEmpty()) filter.Add(colCommodity_Id + " IN (" + includedIds + ")");
|
|
String excludedIds = prm.IdsExcluded.Concat(",");
|
|
if (!excludedIds.IsEmpty()) filter.Add(colCommodity_Id + " NOT IN (" + excludedIds + ")");
|
|
|
|
//---------------------------------------------------------------
|
|
// Organisation.
|
|
// Must filter by organisation if insufficient alternative filetrs.
|
|
if (!prm.IdsIncluded.HasValidIds() && !prm.PriceSetIdsIncluded.HasValidIds() && !SysId.IsValid(prm.AssociationIdCustomer) && !SysId.IsValid(prm.AssociationIdCommodityCustomer))
|
|
{
|
|
if (!SysId.IsValid(AffiliateId_Owner)) throw new NotSupportedException("Commodity query filter - Organisation Id must be specified");
|
|
filter.Add(colCommodity_AffIdOwner + "=" + SysId.ToLong(AffiliateId_Owner));
|
|
}
|
|
|
|
//---------------------------------------------------------------
|
|
// Type.
|
|
if (prm.CommodityType == Sbm.CommodityType.AnyProduct)
|
|
filter.Add(colCommodity_Type + " In (" + ((int)Sbm.CommodityType.Stock).ToString() + "," + ((int)Sbm.CommodityType.NonStock).ToString() + ")");
|
|
else if ((int)prm.CommodityType > 0)
|
|
filter.Add(colCommodity_Type + "=" + ((int)prm.CommodityType).ToString());
|
|
if (prm.StockItemsOnly)
|
|
filter.Add(colCommodity_Type + " IN (" + ((int)Sbm.CommodityType.Stock).ToString() + ")");
|
|
|
|
//---------------------------------------------------------------
|
|
// Code.
|
|
if (!StringUtil.IsEmpty(prm.CodeFull))
|
|
filter.Add(colCommodity_Code + "='" + DbQuery.FormatForCondition(prm.CodeFull) + "'");
|
|
else if (!StringUtil.IsEmpty(prm.CodePartial))
|
|
{
|
|
if (SessionConsole != null && AllowConfigOption(Sbm.ConfigOption.CommodityPartialCodeFilter))
|
|
filter.Add(colCommodity_Code + " LIKE '%" + DbQuery.FormatForLike(prm.CodePartial) + "%'");
|
|
else filter.Add(DbQuery.FormatFn_Left(colCommodity_Code, prm.CodePartial.Length) + "='" + DbQuery.FormatForCondition(prm.CodePartial) + "'");
|
|
}
|
|
|
|
//---------------------------------------------------------------
|
|
// Brief Desc.
|
|
bool allowEmbeddedTextSearch = true;
|
|
bool allowFullTextSearch = true;
|
|
if (!StringUtil.IsEmpty(prm.DescBriefFull))
|
|
filter.Add(colCommodity_DescBrief + "='" + DbQuery.FormatForCondition(prm.DescBriefFull) + "'");
|
|
else if (!StringUtil.IsEmpty(prm.DescBriefPartial))
|
|
{
|
|
List<String> filterDesc = new List<String>();
|
|
filterDesc.Add(DbQuery.FormatFn_Left(colCommodity_DescBrief, prm.DescBriefPartial.Length) + "='" + DbQuery.FormatForLike(prm.DescBriefPartial) + "'");
|
|
if (allowEmbeddedTextSearch)
|
|
{
|
|
filterDesc.Add(colCommodity_DescBrief + " LIKE '%" + DbQuery.FormatForLike(prm.DescBriefPartial) + "%'");
|
|
if (allowFullTextSearch)
|
|
{
|
|
// Split the description into words:
|
|
}
|
|
}
|
|
filter.Add(filterDesc.Concat(" OR ", "(", ")"));
|
|
}
|
|
|
|
//---------------------------------------------------------------
|
|
// DrawingNumber.
|
|
if (!StringUtil.IsEmpty(prm.DrawingNoFull))
|
|
{
|
|
filter.Add(colCommodity_DrawingNo + "='" + DbQuery.FormatForCondition(prm.DrawingNoFull) + "'");
|
|
}
|
|
else if (!StringUtil.IsEmpty(prm.DrawingNoPartial))
|
|
{
|
|
filter.Add(DbQuery.FormatFn_Left(colCommodity_DrawingNo, prm.DrawingNoPartial.Length) + "='" + DbQuery.FormatForCondition(prm.DrawingNoPartial) + "'");
|
|
}
|
|
|
|
// DrawingIssue.
|
|
if (!StringUtil.IsEmpty(prm.DrawingIssueFull))
|
|
filter.Add(colCommodity_DrawingIssue + "='" + DbQuery.FormatForCondition(prm.DrawingIssueFull) + "'");
|
|
else if (!StringUtil.IsEmpty(prm.DrawingIssuePartial))
|
|
filter.Add(DbQuery.FormatFn_Left(colCommodity_DrawingIssue, prm.DrawingIssuePartial.Length) + "='" + DbQuery.FormatForCondition(prm.DrawingIssuePartial) + "'");
|
|
|
|
//---------------------------------------------------------------
|
|
// Generic search.
|
|
if (!StringUtil.IsEmpty(prm.Search))
|
|
{
|
|
List<String> searchFilter = new List<string>();
|
|
foreach (String rawSearchValue in prm.Search.Split(new char[] { ' ', ',', ';' }))
|
|
{
|
|
String searchValue = DbQuery.FormatForLike(StringUtil.TrimAll(rawSearchValue));
|
|
if (StringUtil.IsEmpty(searchValue)) continue;
|
|
List<String> searchValueFilter = new List<string>();
|
|
searchValueFilter.Add(colCommodity_Code + " LIKE '%" + searchValue + "%'");
|
|
searchValueFilter.Add(colCommodity_DescBrief + " LIKE '%" + searchValue + "%'");
|
|
searchValueFilter.Add(colCommodity_DescDetail + " LIKE '%" + searchValue + "%'");
|
|
searchValueFilter.Add(colCommodity_SpecSummary + " LIKE '%" + searchValue + "%'");
|
|
searchValueFilter.Add(colCommodity_DrawingNo + " LIKE '%" + searchValue + "%'");
|
|
searchFilter.Add(searchValueFilter.Concat(" OR ", "(", ")"));
|
|
}
|
|
filter.AddRange(searchFilter);
|
|
}
|
|
|
|
//---------------------------------------------------------------
|
|
// Catalog.
|
|
String colCommodity_CatalogRef = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_CatalogRef, aliasCommodity);
|
|
if (!StringUtil.IsEmpty(prm.CatalogRefPartial))
|
|
filter.Add(DbQuery.FormatFn_Left(colCommodity_CatalogRef, prm.CatalogRefPartial.Length) + "='" + DbQuery.FormatForCondition(prm.CatalogRefPartial) + "'");
|
|
|
|
//---------------------------------------------------------------
|
|
// Category.
|
|
String categoryList = prm.Categories.Concat(",", "'", "'", true, true);
|
|
if (!StringUtil.IsEmpty(categoryList))
|
|
{
|
|
List<String> filterCategory = new List<String>();
|
|
filterCategory.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_Category, aliasCommodity) + " IN(" + categoryList + ")");
|
|
if (ColumnExists(SbmDbDfn.ColumnIdx.Commodity_Category2))
|
|
filterCategory.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_Category2, aliasCommodity) + " IN(" + categoryList + ")");
|
|
if (ColumnExists(SbmDbDfn.ColumnIdx.Commodity_Category3))
|
|
filterCategory.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_Category3, aliasCommodity) + " IN(" + categoryList + ")");
|
|
filter.Add(filterCategory.Concat(" OR ", "(", ")"));
|
|
}
|
|
|
|
//---------------------------------------------------------------
|
|
// Coding.
|
|
String Commodity_RangeCode = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_RangeCode, aliasCommodity);
|
|
if (!StringUtil.IsEmpty(prm.RangeCode))
|
|
filter.Add(Commodity_RangeCode + "='" + DbQuery.FormatForCondition(prm.RangeCode) + "'");
|
|
String colCommodity_ColourCode = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_ColourCode, aliasCommodity);
|
|
if (!StringUtil.IsEmpty(prm.ColourCode))
|
|
filter.Add(colCommodity_ColourCode + "='" + DbQuery.FormatForCondition(prm.ColourCode) + "'");
|
|
String colCommodity_SourceCode = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_SourceCode, aliasCommodity);
|
|
if (!StringUtil.IsEmpty(prm.SourceCode))
|
|
filter.Add(colCommodity_SourceCode + "='" + DbQuery.FormatForCondition(prm.SourceCode) + "'");
|
|
String colCommodity_SupplyMethodCode = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_SupplyMethodCode, aliasCommodity);
|
|
if (!StringUtil.IsEmpty(prm.SupplyMethodCode))
|
|
filter.Add(colCommodity_SupplyMethodCode + "='" + DbQuery.FormatForCondition(prm.SupplyMethodCode) + "'");
|
|
String colCommodity_HandlingCode = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_HandlingCode, aliasCommodity);
|
|
if (!StringUtil.IsEmpty(prm.HandlingCode))
|
|
filter.Add(colCommodity_HandlingCode + "='" + DbQuery.FormatForCondition(prm.HandlingCode) + "'");
|
|
String colCommodity_DeliveryCode = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_DeliveryCode, aliasCommodity);
|
|
if (!StringUtil.IsEmpty(prm.DeliveryCode))
|
|
filter.Add(colCommodity_DeliveryCode + "='" + DbQuery.FormatForCondition(prm.DeliveryCode) + "'");
|
|
String colCommodity_MaterialCode = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_MaterialCode, aliasCommodity);
|
|
if (!StringUtil.IsEmpty(prm.MaterialCode))
|
|
filter.Add(colCommodity_MaterialCode + "='" + DbQuery.FormatForCondition(prm.MaterialCode) + "'");
|
|
String colCommodity_FinishCode = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_FinishCode, aliasCommodity);
|
|
if (!StringUtil.IsEmpty(prm.FinishCode))
|
|
filter.Add(colCommodity_FinishCode + "='" + DbQuery.FormatForCondition(prm.FinishCode) + "'");
|
|
String colCommodity_PromotionCode = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_PromotionCode, aliasCommodity);
|
|
if (!StringUtil.IsEmpty(prm.PromotionCode))
|
|
filter.Add(colCommodity_PromotionCode + "='" + DbQuery.FormatForCondition(prm.PromotionCode) + "'");
|
|
|
|
//---------------------------------------------------------------
|
|
// Stock level.
|
|
if (prm.StockLevelMin > decimal.MinValue || prm.StockLevelMax > decimal.MinValue)
|
|
{
|
|
// Prepare list of locations to be queried for current stock.
|
|
PopulateLocationIdLists();
|
|
List<SysId> locactionIdsStock = new List<SysId>();
|
|
if (prm.StockLocationFilter == Sbm.LocationFilter.All) locactionIdsStock = locationIds_All;
|
|
else if (prm.StockLocationFilter == Sbm.LocationFilter.Calc) locactionIdsStock = locationIds_Calc;
|
|
else if (!SysId.IsValid(prm.LocationIdStock)) locactionIdsStock = locationIds_Sales;
|
|
String stringLocactionStockId = locactionIdsStock.Concat(",");
|
|
// Query the current stock level.
|
|
String aliasStockLevel = "aCmdStkLvl";
|
|
DbQuery qryLvl = new DbQuery(db.DbmsType);
|
|
qryLvl.Tables.Add(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.StockLevel), aliasStockLevel);
|
|
qryLvl.Columns.Add("SUM(" + SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.StockLevel_Quantity, aliasStockLevel) + ")");
|
|
qryLvl.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.StockLevel_Type, aliasStockLevel) + "=" + (int)Sbm.StockLevelType.CurrentLevel);
|
|
qryLvl.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.StockLevel_CommodityId, aliasStockLevel) + "=" + SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_Id, aliasCommodity));
|
|
if (SysId.IsValid(prm.LocationIdStock))
|
|
qryLvl.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.StockLevel_LocationId, aliasStockLevel) + "=" + SysId.ToString(prm.LocationIdStock));
|
|
else
|
|
qryLvl.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.StockLevel_LocationId, aliasStockLevel) + " IN (" + stringLocactionStockId + ")");
|
|
qryLvl.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.StockLevel_Status, aliasStockLevel) + "='" + StatusCurrent + "'");
|
|
if (prm.StockLevelMin > decimal.MinValue)
|
|
{
|
|
filter.Add("(" + qryLvl.BuildQuery() + ") >= " + StringUtil.FormatNumeric(prm.StockLevelMin, 2));
|
|
}
|
|
if (prm.StockLevelMax > decimal.MinValue)
|
|
{
|
|
filter.Add("(" + qryLvl.BuildQuery() + ") <= " + StringUtil.FormatNumeric(prm.StockLevelMax, 2));
|
|
}
|
|
|
|
}
|
|
//---------------------------------------------------------------
|
|
// Price set.
|
|
if (prm.PriceSetIdsIncluded.HasValidIds())
|
|
{
|
|
// Restrict to commodities that belong to the specified price sets.
|
|
String aliasPrice = "aCmdPrc";
|
|
DbQuery qryPriceSet = new DbQuery(db.DbmsType);
|
|
qryPriceSet.Tables.Add(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.SaPrice), aliasPrice);
|
|
qryPriceSet.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.SaPrice_CommodityId, aliasPrice));
|
|
qryPriceSet.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.SaPrice_PriceSetId, aliasPrice) + " In (" + prm.PriceSetIdsIncluded.Concat(",") + ")");
|
|
filter.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_Id, aliasCommodity) + " In (" + qryPriceSet.BuildQuery() + ")");
|
|
}
|
|
if (prm.PriceSetIdsExcluded.HasValidIds())
|
|
{
|
|
// Restrict to commodities that do not belong to the specified price sets.
|
|
String aliasPrice = "aCmdPrc";
|
|
DbQuery qryPriceSet = new DbQuery(db.DbmsType);
|
|
qryPriceSet.Tables.Add(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.SaPrice), aliasPrice);
|
|
qryPriceSet.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.SaPrice_CommodityId, aliasPrice));
|
|
qryPriceSet.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.SaPrice_PriceSetId, aliasPrice) + " Not In (" + prm.PriceSetIdsIncluded.Concat(",") + ")");
|
|
filter.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_Id, aliasCommodity) + " Not In (" + qryPriceSet.BuildQuery() + ")");
|
|
}
|
|
|
|
//---------------------------------------------------------------
|
|
// Customer.
|
|
if (SysId.IsValid(prm.AssociationIdCustomer))
|
|
{
|
|
List<String> filterCustId = new List<String>();
|
|
filterCustId.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_AssIdCustomer, aliasCommodity) + "=0");
|
|
filterCustId.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_AssIdCustomer, aliasCommodity) + "=" + prm.AssociationIdCustomer.ToString());
|
|
filter.Add(filterCustId.Concat(" OR "));
|
|
}
|
|
else if (!StringUtil.IsEmpty(prm.CustomerName))
|
|
{
|
|
// Partial or complete match on customer name:
|
|
String filterAffiliate_CustomerName = "FltCustNameAff";
|
|
String filterAssociation_CustomerName = "FltCustNameAss";
|
|
// Build query to filter on customer name:
|
|
DbQuery qryCustName = new DbQuery(db.DbmsType);
|
|
qryCustName.Tables.Add(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Affiliate), filterAffiliate_CustomerName);
|
|
qryCustName.Tables.Add(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Association), filterAssociation_CustomerName);
|
|
qryCustName.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_Id, filterAssociation_CustomerName));
|
|
qryCustName.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_Type, filterAssociation_CustomerName) + "=" + Sbm.AssociationType.Customer.ToString());
|
|
qryCustName.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Affiliate_Id, filterAffiliate_CustomerName) + "=" + SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_AffIdTarget, filterAssociation_CustomerName));
|
|
String colAffiliate_CustomerName = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Affiliate_Name, filterAffiliate_CustomerName);
|
|
qryCustName.Filters.Add(DbQuery.FormatFn_Left(colAffiliate_CustomerName, prm.CustomerName.Length) + "='" + DbQuery.FormatForCondition(prm.CustomerName) + "'");
|
|
// Add the customer name filter to the main filter list.
|
|
List<String> filterCustName = new List<String>();
|
|
filterCustName.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_AssIdCustomer, aliasCommodity) + "=0");
|
|
filterCustName.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_AssIdCustomer, aliasCommodity) + " IN (" + qryCustName.BuildQuery() + ")");
|
|
filter.Add(filterCustName.Concat(" OR "));
|
|
}
|
|
|
|
//---------------------------------------------------------------
|
|
// Supplier.
|
|
if (!StringUtil.IsEmpty(prm.SupplierName))
|
|
{
|
|
// Partial or complete match on Supplier name.
|
|
String filterAffiliate_SupplierName = "FltSuppNameAff";
|
|
String filterAssocation_SupplierName = "FltSuppNameAss";
|
|
// Build query to filter on Supplier name.
|
|
DbQuery qrySuppName = new DbQuery(db.DbmsType);
|
|
qrySuppName.Tables.Add(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Affiliate), filterAffiliate_SupplierName);
|
|
qrySuppName.Tables.Add(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Association), filterAssocation_SupplierName);
|
|
qrySuppName.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_Id, filterAssocation_SupplierName));
|
|
qrySuppName.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_Type, filterAssocation_SupplierName) + "=" + Sbm.AssociationType.Supplier.ToString());
|
|
qrySuppName.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Affiliate_Id, filterAffiliate_SupplierName) + "=" + SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_AffIdTarget, filterAssocation_SupplierName));
|
|
String colAffiliate_SupplierName = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Affiliate_Name, filterAffiliate_SupplierName);
|
|
qrySuppName.Filters.Add(DbQuery.FormatFn_Left(colAffiliate_SupplierName, prm.SupplierName.Length) + "='" + DbQuery.FormatForCondition(prm.SupplierName) + "'");
|
|
// Add the Supplier name filter to the main filter list.
|
|
List<String> filterSupplierName = new List<String>();
|
|
filterSupplierName.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_AssIdSupplier, aliasCommodity) + "=0");
|
|
filterSupplierName.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_AssIdSupplier, aliasCommodity) + " IN (" + qrySuppName.BuildQuery() + ")");
|
|
filter.Add(filterSupplierName.Concat(" OR "));
|
|
}
|
|
|
|
//---------------------------------------------------------------
|
|
// Transaction.
|
|
bool linkRequirement = false;
|
|
bool linkTransaction = !StringUtil.IsEmpty(prm.OrderRef);
|
|
if (linkRequirement || linkTransaction)
|
|
{
|
|
String aliasCommodity_Transaction = "aCmdTrn";
|
|
String aliasCommodity_Requirement = "aCmdReq";
|
|
DbQuery qryReqnt = new DbQuery(db.DbmsType);
|
|
qryReqnt.Tables.Add(new StringPair(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Requirement), aliasCommodity_Requirement));
|
|
qryReqnt.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Requirement_Id, aliasCommodity_Requirement));
|
|
qryReqnt.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Requirement_AffIdOwner, aliasCommodity_Requirement) + "=" + AffiliateId_Owner.ToString());
|
|
qryReqnt.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Requirement_CommodityId, aliasCommodity_Requirement) + "=" + SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_Id, aliasCommodity));
|
|
if (linkTransaction)
|
|
{
|
|
qryReqnt.Tables.Add(new StringPair(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Transaction), aliasCommodity_Transaction));
|
|
qryReqnt.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Requirement_TransId, aliasCommodity_Requirement) + "=" + SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Transaction_Id, aliasCommodity_Transaction));
|
|
qryReqnt.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Transaction_Type, aliasCommodity_Transaction) + "=" + Sbm.TransactionType.SalesOrder.ToString());
|
|
if (!StringUtil.IsEmpty(prm.OrderRef))
|
|
qryReqnt.Filters.Add(DbQuery.FormatFn_Left(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Transaction_Ref, aliasCommodity_Transaction), prm.OrderRef.Length) + "='" + DbQuery.FormatForCondition(prm.OrderRef) + "'");
|
|
}
|
|
filter.Add("EXISTS(" + qryReqnt.BuildQuery() + ")");
|
|
}
|
|
|
|
//---------------------------------------------------------------
|
|
// Commodities defined by Customer.
|
|
if (SysId.IsValid(prm.AssociationIdCommodityCustomer) || !StringUtil.IsEmpty(prm.AccountCodeCommodityCustomer))
|
|
{
|
|
if (CanManageCommodityCustomers())
|
|
{
|
|
DbQuery qryCmdCust = new DbQuery(db.DbmsType);
|
|
qryCmdCust.Tables.Add(new StringPair(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.CommodityCustomer), aliasCommodity_CmdCustomer));
|
|
qryCmdCust.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.CommodityCustomer_CommodityId, aliasCommodity_CmdCustomer));
|
|
if (SysId.IsValid(prm.AssociationIdCommodityCustomer))
|
|
{
|
|
qryCmdCust.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.CommodityCustomer_AssocIdCustomer, aliasCommodity_CmdCustomer) + "=" + prm.AssociationIdCommodityCustomer.ToString());
|
|
}
|
|
if (!StringUtil.IsEmpty(prm.AccountCodeCommodityCustomer))
|
|
{
|
|
// To match the customer account code, must also join to the association table:
|
|
String aliasCommodity_CmdCustAssoc = "aCmdCmdCustAss";
|
|
DbQueryJoin joinCmdCustAssoc = new DbQueryJoin(DbJoinType.Inner);
|
|
joinCmdCustAssoc.Table = new StringPair(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Association), aliasCommodity_CmdCustAssoc);
|
|
joinCmdCustAssoc.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_Id, aliasCommodity_CmdCustAssoc) + "=" + SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.CommodityCustomer_AssocIdCustomer, aliasCommodity_CmdCustomer));
|
|
joinCmdCustAssoc.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_Code, aliasCommodity_CmdCustAssoc) + "='" + DbQuery.FormatForCondition(prm.AccountCodeCommodityCustomer) + "'");
|
|
qryCmdCust.Joins.Add(joinCmdCustAssoc);
|
|
}
|
|
filter.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_Id, aliasCommodity) + " IN (" + qryCmdCust.BuildQuery() + ")");
|
|
}
|
|
else SaLogger.Error($"{SysUtil.Fn} CmdCust filter specified and CmdCust management not allowed");
|
|
}
|
|
|
|
//---------------------------------------------------------------
|
|
// Status.
|
|
String colCommodity_Status = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_Status, aliasCommodity);
|
|
if (prm.StatusCat == SbmCommodity.StatusCat.NotDeleted)
|
|
filter.Add(colCommodity_Status + "<>'" + StatusDeleted + "'");
|
|
else if (prm.StatusCat == SbmCommodity.StatusCat.Current)
|
|
filter.Add(colCommodity_Status + "='" + StatusCurrent + "'");
|
|
|
|
if (filter.Count < 1 && prm.IncludeDefaultFilter) filter.Add("1=1");
|
|
return filter;
|
|
}
|
|
|
|
//-------------------------------------------------------------------
|
|
// Commodity sort columns.
|
|
public List<String> GetCommoditySortColumns(SbmCommodity.Params prm)
|
|
{
|
|
// Sort sequence:
|
|
List<String> sortColumnNames = new List<String>();
|
|
foreach (var columnDfn in prm.SortColumns)
|
|
{
|
|
// Need to ensure correct alias used for Commodity columns in case of conflict.
|
|
String sortCol = String.Empty;
|
|
if (SbmDbDfn.GetTableForColumn((SbmDbDfn.ColumnIdx)columnDfn.DbColumn) == SbmDbDfn.TableIdx.Commodity)
|
|
{
|
|
sortCol = SbmDbDfn.GetColumnNameQual((SbmDbDfn.ColumnIdx)columnDfn.DbColumn, aliasCommodity);
|
|
}
|
|
else
|
|
{
|
|
sortCol = columnDfn.DataName;
|
|
if (!StringUtil.IsEmpty(columnDfn.SortDataName))
|
|
sortCol = columnDfn.SortDataName;
|
|
}
|
|
if (!sortCol.IsEmpty())
|
|
{
|
|
DbOrderByNullMode orderByNullMode = DbOrderByNullMode.Default; // eSaOrderByDemoteNulls, eSaOrderByPromoteNulls
|
|
sortColumnNames.Add(DbQuery.FormatForOrderBy(sortCol, columnDfn.SortAscending, orderByNullMode).Concat(", "));
|
|
}
|
|
}
|
|
sortColumnNames.RemoveBlanks();
|
|
if (sortColumnNames.IsEmpty())
|
|
{
|
|
// Default sort columns.
|
|
sortColumnNames.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_Code, aliasCommodity) + " ASC");
|
|
}
|
|
return sortColumnNames;
|
|
}
|
|
|
|
//-------------------------------------------------------------------
|
|
// Commodity count.
|
|
private long GetCommodityCount(String filter)
|
|
{
|
|
ClearErrorState();
|
|
return db.GetRowCount(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Commodity) + " As " + aliasCommodity, filter);
|
|
}
|
|
public override long GetCommodityCount(SbmCommodity.Params prm)
|
|
{
|
|
ClearErrorState();
|
|
return GetCommodityCount(GetCommodityQueryFilter(prm).Concat(" AND ", "(", ")"));
|
|
}
|
|
|
|
//-------------------------------------------------------------------
|
|
// Commodity list.
|
|
public override List<SbmCommodity> GetCommodityList(SbmCommodity.Params prm)
|
|
{
|
|
ClearErrorState();
|
|
List<SbmCommodity> commodities = new List<SbmCommodity>();
|
|
DbQuery qry = new DbQuery(db.DbmsType);
|
|
qry.Tables.Add(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Commodity), aliasCommodity);
|
|
Commodity_Db dbCommodity = new Commodity_Db(DbInfo);
|
|
qry.Columns.AddRange(dbCommodity.ExistingColumnNames);
|
|
qry.Filters.AddRange(GetCommodityQueryFilter(prm));
|
|
qry.OrderBy.AddRange(GetCommoditySortColumns(prm));
|
|
// Query data.
|
|
using (var dbConnection = db.CreateConnection())
|
|
using (var dbCommand = dbConnection.CreateCommand())
|
|
{
|
|
try
|
|
{
|
|
dbConnection.Open();
|
|
dbCommand.CommandText = qry.BuildQuery(prm.ResultsPaging);
|
|
using (DbDataReader dbDataReader = dbCommand.ExecuteReader())
|
|
{
|
|
while (dbDataReader.Read())
|
|
{
|
|
dbCommodity = new Commodity_Db(DbInfo);
|
|
dbCommodity.PopulateFrom(dbDataReader);
|
|
commodities.Add(CreateCommodity(dbCommodity));
|
|
}
|
|
}
|
|
}
|
|
catch (Exception exc)
|
|
{
|
|
SetErrorState("Database query exception");
|
|
SaLogger.Warn($"{SysUtil.Fn}\n\tQuery: {dbCommand.CommandText}\n\t{ExceptionUtil.GetErrorStateMessage(exc)}");
|
|
}
|
|
}
|
|
return commodities;
|
|
}
|
|
|
|
//-------------------------------------------------------------------
|
|
// Commodity query execution.
|
|
public override DbResultSet ExecuteCommodityQuery(List<ColumnDfn> columns, SbmCommodity.Params prm)
|
|
{
|
|
ClearErrorState();
|
|
DbQuery query = CompileCommodityQuery(columns, prm);
|
|
return DbResultSet_DataReader.ExecuteQuery(db, query.BuildQuery(prm.ResultsPaging));
|
|
}
|
|
public override async Task<DbResultSet> ExecuteCommodityQueryAsync(List<ColumnDfn> columns, SbmCommodity.Params prm)
|
|
{
|
|
ClearErrorState();
|
|
DbQuery query = CompileCommodityQuery(columns, prm);
|
|
return await DbResultSet_DataReader.ExecuteQueryAsync(db, query.BuildQuery(prm.ResultsPaging)) as DbResultSet;
|
|
}
|
|
private DbQuery CompileCommodityQuery(List<ColumnDfn> columns, SbmCommodity.Params prm)
|
|
{
|
|
ClearErrorState();
|
|
PopulateLocationIdLists();
|
|
bool canViewSupplyFinancials = UserContext.SecurityProfile_Core.UserCanViewFinancials(Sbm.FinancialType.CommoditySupply);
|
|
bool canViewSalesFinancials = UserContext.SecurityProfile_Core.UserCanViewFinancials(Sbm.FinancialType.CommoditySales);
|
|
|
|
//---------------------------------------------------------------
|
|
// Construct query.
|
|
DbQuery query = new DbQuery(db.DbmsType);
|
|
query.Tables.Add(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Commodity), aliasCommodity);
|
|
|
|
|
|
// Stock locations.
|
|
SysId locationStockId = null;
|
|
List<SysId> locationStockIds = new List<SysId>();
|
|
if (prm.StockLocationFilter == Sbm.LocationFilter.All)
|
|
locationStockIds = locationIds_All;
|
|
else if (prm.StockLocationFilter == Sbm.LocationFilter.Calc)
|
|
locationStockIds = locationIds_Calc;
|
|
else if (SysId.IsValid(locationStockId))
|
|
locationStockIds.Add(locationStockId);
|
|
else
|
|
locationStockIds = locationIds_Sales;
|
|
String stringLocactionStockId = locationStockIds.Concat(",");
|
|
|
|
//---------------------------------------------------------------
|
|
// Commodity Properties - add columns as defined in query list.
|
|
if (columns.HasId(SbmCommodity.Column.Id))
|
|
query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_Id, aliasCommodity));
|
|
if (columns.HasId(SbmCommodity.Column.Type) || columns.HasId(SbmCommodity.Column.Type_Code) || columns.HasId(SbmCommodity.Column.Type_Desc))
|
|
query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_Type, aliasCommodity));
|
|
if (columns.HasId(SbmCommodity.Column.Code)) query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_Code, aliasCommodity));
|
|
if (columns.HasId(SbmCommodity.Column.DescBrief)) query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_DescBrief, aliasCommodity));
|
|
if (columns.HasId(SbmCommodity.Column.DescDetail)) query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_DescDetail, aliasCommodity));
|
|
if (columns.HasId(SbmCommodity.Column.DrawingNo)) query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_DrawingNo, aliasCommodity));
|
|
if (columns.HasId(SbmCommodity.Column.DrawingIssue)) query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_DrawingIssue, aliasCommodity));
|
|
if (columns.HasId(SbmCommodity.Column.ImagePath) || columns.HasId(SbmCommodity.Column.Image)) query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_ImagePath, aliasCommodity));
|
|
if (columns.HasId(SbmCommodity.Column.Category1Code) || columns.HasId(SbmCommodity.Column.Category1_Desc)) query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_Category, aliasCommodity));
|
|
if ((columns.HasId(SbmCommodity.Column.Category2Code) || columns.HasId(SbmCommodity.Column.Category2_Desc)) && ColumnExists(SbmDbDfn.ColumnIdx.Commodity_Category2))
|
|
query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_Category2, aliasCommodity));
|
|
if ((columns.HasId(SbmCommodity.Column.Category3Code) || columns.HasId(SbmCommodity.Column.Category3_Desc)) && ColumnExists(SbmDbDfn.ColumnIdx.Commodity_Category3))
|
|
query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_Category3, aliasCommodity));
|
|
if (columns.HasId(SbmCommodity.Column.Location)) query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_Location, aliasCommodity));
|
|
if (columns.HasId(SbmCommodity.Column.Department)) query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_Department, aliasCommodity));
|
|
if (columns.HasId(SbmCommodity.Column.CatalogRef)) query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_CatalogRef, aliasCommodity));
|
|
if (columns.HasId(SbmCommodity.Column.Weight) || columns.HasId(SbmCommodity.Column.Weight_ValueUnits)) query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_Weight, aliasCommodity));
|
|
if (columns.HasId(SbmCommodity.Column.Weight_UomId) || columns.HasId(SbmCommodity.Column.Weight_Unit) || columns.HasId(SbmCommodity.Column.Weight_ValueUnits))
|
|
query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_UomIdWeight, aliasCommodity));
|
|
if (columns.HasId(SbmCommodity.Column.Length) || columns.HasId(SbmCommodity.Column.Length_ValueUnits)) query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_Length, aliasCommodity));
|
|
if (columns.HasId(SbmCommodity.Column.Length_UomId) || columns.HasId(SbmCommodity.Column.Length_Unit) || columns.HasId(SbmCommodity.Column.Length_ValueUnits))
|
|
query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_UomIdLength, aliasCommodity));
|
|
if (columns.HasId(SbmCommodity.Column.Volume) || columns.HasId(SbmCommodity.Column.Volume_ValueUnits)) query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_Volume, aliasCommodity));
|
|
if (columns.HasId(SbmCommodity.Column.Volume_UomId) || columns.HasId(SbmCommodity.Column.Volume_Unit) || columns.HasId(SbmCommodity.Column.Volume_ValueUnits))
|
|
query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_UomIdVolume, aliasCommodity));
|
|
if (columns.HasId(SbmCommodity.Column.Density) || columns.HasId(SbmCommodity.Column.Density_ValueUnits)) query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_Density, aliasCommodity));
|
|
if (columns.HasId(SbmCommodity.Column.Density_UomId) || columns.HasId(SbmCommodity.Column.Density_Unit) || columns.HasId(SbmCommodity.Column.Density_ValueUnits))
|
|
query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_UomIdDensity, aliasCommodity));
|
|
if (columns.HasId(SbmCommodity.Column.BoxQuantity) || columns.HasId(SbmCommodity.Column.BoxQuantity_ValueUnits)) query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_BoxQuantity, aliasCommodity));
|
|
if (columns.HasId(SbmCommodity.Column.BoxQuantity_UomId) || columns.HasId(SbmCommodity.Column.BoxQuantity_Unit) || columns.HasId(SbmCommodity.Column.BoxQuantity_ValueUnits))
|
|
query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_UomIdBox, aliasCommodity));
|
|
if (columns.HasId(SbmCommodity.Column.Dimensions)) query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_Dimensions, aliasCommodity));
|
|
if (columns.HasId(SbmCommodity.Column.SpecSummary)) query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_SpecSummary, aliasCommodity));
|
|
if (columns.HasId(SbmCommodity.Column.ICNTariffCode)) query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_ICNTariffCode, aliasCommodity));
|
|
if (columns.HasId(SbmCommodity.Column.RangeCode) || columns.HasId(SbmCommodity.Column.RangeDesc)) query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_RangeCode, aliasCommodity));
|
|
if (columns.HasId(SbmCommodity.Column.ColourCode) || columns.HasId(SbmCommodity.Column.ColourDesc)) query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_ColourCode, aliasCommodity));
|
|
if (columns.HasId(SbmCommodity.Column.SourceCode) || columns.HasId(SbmCommodity.Column.SourceDesc)) query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_SourceCode, aliasCommodity));
|
|
if (columns.HasId(SbmCommodity.Column.SupplyMethodCode) || columns.HasId(SbmCommodity.Column.SupplyMethodDesc)) query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_SupplyMethodCode, aliasCommodity));
|
|
if (columns.HasId(SbmCommodity.Column.HandlingCode) || columns.HasId(SbmCommodity.Column.HandlingDesc)) query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_HandlingCode, aliasCommodity));
|
|
if (columns.HasId(SbmCommodity.Column.DeliveryCode) || columns.HasId(SbmCommodity.Column.DeliveryDesc)) query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_DeliveryCode, aliasCommodity));
|
|
if (columns.HasId(SbmCommodity.Column.MaterialCode) || columns.HasId(SbmCommodity.Column.MaterialDesc)) query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_MaterialCode, aliasCommodity));
|
|
if (columns.HasId(SbmCommodity.Column.FinishCode) || columns.HasId(SbmCommodity.Column.FinishDesc)) query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_FinishCode, aliasCommodity));
|
|
if (columns.HasId(SbmCommodity.Column.PromotionCode) || columns.HasId(SbmCommodity.Column.PromotionDesc)) query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_PromotionCode, aliasCommodity));
|
|
if (columns.HasId(SbmCommodity.Column.NominalCode)) query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_NominalCode, aliasCommodity));
|
|
if (columns.HasId(SbmCommodity.Column.NominalCodePurchase)) query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_NominalCodePurchase, aliasCommodity));
|
|
//---------------------------------------------------------------
|
|
// Currency (to come).
|
|
if ((canViewSupplyFinancials && (columns.HasId(SbmCommodity.Column.CostPrice_Fmt))) ||
|
|
(canViewSalesFinancials && (columns.HasId(SbmCommodity.Column.SalesPrice_Fmt) || columns.HasId(SbmCommodity.Column.RetailPrice_Fmt) || columns.HasId(SbmCommodity.Column.RetailPricePlanned_Fmt) || columns.HasId(SbmCommodity.Column.GrossPrice_Fmt) || columns.HasId(SbmCommodity.Column.CarriageCostIndicative_Fmt))))
|
|
{
|
|
}
|
|
//---------------------------------------------------------------
|
|
// Purchasing.
|
|
if (columns.HasId(SbmCommodity.Column.Supplier_Ref)) query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_SupplierRef, aliasCommodity));
|
|
if (canViewSupplyFinancials && (columns.HasId(SbmCommodity.Column.CostPrice) ||
|
|
columns.HasId(SbmCommodity.Column.CostPrice_Fmt))) query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_CostPrice, aliasCommodity));
|
|
if (columns.HasId(SbmCommodity.Column.PlaceOfOrigin)) query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_PlaceOfOrigin, aliasCommodity));
|
|
if (columns.HasId(SbmCommodity.Column.MaterialCost) || columns.HasId(SbmCommodity.Column.MaterialCost_Fmt)) query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_MaterialCost, aliasCommodity));
|
|
if (columns.HasId(SbmCommodity.Column.MaterialCost_Fmt) ||
|
|
columns.HasId(SbmCommodity.Column.MaterialCurrencyId) ||
|
|
columns.HasId(SbmCommodity.Column.MaterialCurrency_Code) ||
|
|
columns.HasId(SbmCommodity.Column.MaterialCurrency_Symbol)) query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_CurrencyIdMaterial, aliasCommodity));
|
|
if (columns.HasId(SbmCommodity.Column.ExWorksCost) || columns.HasId(SbmCommodity.Column.ExWorksCost_Fmt)) query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_ExWorksCost, aliasCommodity));
|
|
if (columns.HasId(SbmCommodity.Column.ExWorksCost_Fmt) ||
|
|
columns.HasId(SbmCommodity.Column.ExWorksCurrencyId) ||
|
|
columns.HasId(SbmCommodity.Column.ExWorksCurrency_Code) ||
|
|
columns.HasId(SbmCommodity.Column.ExWorksCurrency_Symbol)) query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_CurrencyIdExWorks, aliasCommodity));
|
|
if (columns.HasId(SbmCommodity.Column.ReorderLevel)) query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_ReorderLevel, aliasCommodity));
|
|
if (columns.HasId(SbmCommodity.Column.ReorderQty)) query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_ReorderQty, aliasCommodity));
|
|
if (columns.HasId(SbmCommodity.Column.QtyOnOrder)) query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_QtyOnOrder, aliasCommodity));
|
|
//---------------------------------------------------------------
|
|
// Sales.
|
|
if (canViewSalesFinancials && (columns.HasId(SbmCommodity.Column.SalesPrice) ||
|
|
columns.HasId(SbmCommodity.Column.SalesPrice_Fmt) ||
|
|
columns.HasId(SbmCommodity.Column.GrossPrice) || columns.HasId(SbmCommodity.Column.GrossPrice_Fmt))) query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_SalesPrice, aliasCommodity));
|
|
if (canViewSalesFinancials && (columns.HasId(SbmCommodity.Column.RetailPrice) ||
|
|
columns.HasId(SbmCommodity.Column.RetailPrice_Fmt))) query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_RetailPrice, aliasCommodity));
|
|
if (canViewSalesFinancials && (columns.HasId(SbmCommodity.Column.RetailPricePlanned) ||
|
|
columns.HasId(SbmCommodity.Column.RetailPricePlanned_Fmt))) query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_RetailPricePlanned, aliasCommodity));
|
|
if (columns.HasId(SbmCommodity.Column.CarriageCostIndicative) ||
|
|
columns.HasId(SbmCommodity.Column.CarriageCostIndicative_Fmt)) query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_CarriageCostIndicative, aliasCommodity));
|
|
if (columns.HasId(SbmCommodity.Column.MinOrderQty)) query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_MinOrderQty, aliasCommodity));
|
|
if (columns.HasId(SbmCommodity.Column.UomIdSale)) query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_UomIdSale, aliasCommodity));
|
|
if (columns.HasId(SbmCommodity.Column.PackQtySale)) query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_PackQty, aliasCommodity));
|
|
if (columns.HasId(SbmCommodity.Column.LastOrderDate)) query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_LastOrderDate, aliasCommodity));
|
|
if (columns.HasId(SbmCommodity.Column.LastOrderQty)) query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_LastOrderQty, aliasCommodity));
|
|
//---------------------------------------------------------------
|
|
// Sales budget.
|
|
if (columns.HasId(SbmCommodity.Column.SalesProj_Annual)) query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_SalesProjAnnual, aliasCommodity));
|
|
if (columns.HasId(SbmCommodity.Column.SalesProj_Jan) || columns.HasId(SbmCommodity.Column.SalesProj_Period)) query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_SalesProjMonth01, aliasCommodity));
|
|
if (columns.HasId(SbmCommodity.Column.SalesProj_Feb) || columns.HasId(SbmCommodity.Column.SalesProj_Period)) query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_SalesProjMonth02, aliasCommodity));
|
|
if (columns.HasId(SbmCommodity.Column.SalesProj_Mar) || columns.HasId(SbmCommodity.Column.SalesProj_Period)) query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_SalesProjMonth03, aliasCommodity));
|
|
if (columns.HasId(SbmCommodity.Column.SalesProj_Apr) || columns.HasId(SbmCommodity.Column.SalesProj_Period)) query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_SalesProjMonth04, aliasCommodity));
|
|
if (columns.HasId(SbmCommodity.Column.SalesProj_May) || columns.HasId(SbmCommodity.Column.SalesProj_Period)) query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_SalesProjMonth05, aliasCommodity));
|
|
if (columns.HasId(SbmCommodity.Column.SalesProj_Jun) || columns.HasId(SbmCommodity.Column.SalesProj_Period)) query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_SalesProjMonth06, aliasCommodity));
|
|
if (columns.HasId(SbmCommodity.Column.SalesProj_Jul) || columns.HasId(SbmCommodity.Column.SalesProj_Period)) query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_SalesProjMonth07, aliasCommodity));
|
|
if (columns.HasId(SbmCommodity.Column.SalesProj_Aug) || columns.HasId(SbmCommodity.Column.SalesProj_Period)) query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_SalesProjMonth08, aliasCommodity));
|
|
if (columns.HasId(SbmCommodity.Column.SalesProj_Sep) || columns.HasId(SbmCommodity.Column.SalesProj_Period)) query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_SalesProjMonth09, aliasCommodity));
|
|
if (columns.HasId(SbmCommodity.Column.SalesProj_Oct) || columns.HasId(SbmCommodity.Column.SalesProj_Period)) query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_SalesProjMonth10, aliasCommodity));
|
|
if (columns.HasId(SbmCommodity.Column.SalesProj_Nov) || columns.HasId(SbmCommodity.Column.SalesProj_Period)) query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_SalesProjMonth11, aliasCommodity));
|
|
if (columns.HasId(SbmCommodity.Column.SalesProj_Dec) || columns.HasId(SbmCommodity.Column.SalesProj_Period)) query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_SalesProjMonth12, aliasCommodity));
|
|
// Stock.
|
|
if (columns.HasId(SbmCommodity.Column.QtyInStock)) query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_QtyInStock, aliasCommodity));
|
|
if (columns.HasId(SbmCommodity.Column.QtyAllocated)) query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_QtyAllocated, aliasCommodity));
|
|
if (columns.HasId(SbmCommodity.Column.FreeStock)) query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_FreeStock, aliasCommodity));
|
|
// Common Properties
|
|
if (columns.HasId(SbmCommodity.Column.Notes))
|
|
query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_Notes, aliasCommodity));
|
|
if (columns.HasId(SbmCommodity.Column.Status) || columns.HasId(SbmCommodity.Column.Status_Desc) || columns.HasId(SbmCommodity.Column.Status_Ind) || columns.HasId(SbmCommodity.Column.Status_Current_Y) || columns.HasId(SbmCommodity.Column.Status_Current_X) || columns.HasId(SbmCommodity.Column.Status_Current_Tick))
|
|
query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_Status, aliasCommodity));
|
|
if (columns.HasId(SbmCommodity.Column.CreateOn_Date))
|
|
query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_CreateOn, aliasCommodity));
|
|
if (columns.HasId(SbmCommodity.Column.UpdateOn_Date))
|
|
query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_UpdateOn, aliasCommodity));
|
|
|
|
//---------------------------------------------------------------
|
|
// Supplier.
|
|
bool hasSupplierName = columns.HasId(SbmCommodity.Column.Supplier_Name);
|
|
if (hasSupplierName)
|
|
{
|
|
// Join to the association (owner) table.
|
|
DbQueryJoin joinAssSupplier = new DbQueryJoin(DbJoinType.LeftOuter);
|
|
joinAssSupplier.Table = new StringPair(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Association), aliasCommodity_AssocationSupplier);
|
|
joinAssSupplier.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_Id, aliasCommodity_AssocationSupplier) + "=" + SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_AssIdSupplier, aliasCommodity));
|
|
query.Joins.Add(joinAssSupplier);
|
|
// Join to the affiliate (Supplier) table.
|
|
DbQueryJoin joinAffSupplier = new DbQueryJoin(DbJoinType.LeftOuter);
|
|
joinAffSupplier.Table = new StringPair(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Affiliate), aliasCommodity_AffiliateSupplier);
|
|
joinAffSupplier.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Affiliate_Id, aliasCommodity_AffiliateSupplier) + "=" + SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_AffIdTarget, aliasCommodity_AssocationSupplier));
|
|
query.Joins.Add(joinAffSupplier);
|
|
// Supplier Affiliate columns.
|
|
List<SbmDbDfn.ColumnIdx> cmdSupplierAffiliateCols = new List<SbmDbDfn.ColumnIdx>()
|
|
{
|
|
SbmDbDfn.ColumnIdx.Affiliate_Name
|
|
};
|
|
foreach (SbmDbDfn.ColumnIdx dbColumn in cmdSupplierAffiliateCols)
|
|
query.Columns.Add(SbmDbDfn.GetColumnNameQual(dbColumn, aliasCommodity_AffiliateSupplier), prefixCommodity_AffiliateSupplier + SbmDbDfn.GetColumnName(dbColumn, false));
|
|
}
|
|
|
|
//---------------------------------------------------------------
|
|
// Customer.
|
|
bool hasCustomerName = columns.HasId(SbmCommodity.Column.Customer_Name);
|
|
if (hasCustomerName)
|
|
{
|
|
// Join to the association (owner table).
|
|
DbQueryJoin joinAssCustomer = new DbQueryJoin(DbJoinType.LeftOuter);
|
|
joinAssCustomer.Table = new StringPair(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Association), aliasCommodity_AssocationCustomer);
|
|
joinAssCustomer.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_Id, aliasCommodity_AssocationCustomer) + "=" + SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_AssIdCustomer, aliasCommodity));
|
|
query.Joins.Add(joinAssCustomer);
|
|
// Join to the affiliate (customer) table.
|
|
DbQueryJoin joinAffCustomer = new DbQueryJoin(DbJoinType.LeftOuter);
|
|
joinAffCustomer.Table = new StringPair(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Affiliate), aliasCommodity_AffiliateCustomer);
|
|
joinAffCustomer.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Affiliate_Id, aliasCommodity_AffiliateCustomer) + "=" + SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_AffIdTarget, aliasCommodity_AssocationCustomer));
|
|
query.Joins.Add(joinAffCustomer);
|
|
// Customer Affiliate columns.
|
|
List<SbmDbDfn.ColumnIdx> cmdCustomerAffiliateCols = new List<SbmDbDfn.ColumnIdx>()
|
|
{
|
|
SbmDbDfn.ColumnIdx.Affiliate_Name
|
|
};
|
|
foreach (SbmDbDfn.ColumnIdx dbColumn in cmdCustomerAffiliateCols)
|
|
query.Columns.Add(SbmDbDfn.GetColumnNameQual(dbColumn, aliasCommodity_AffiliateCustomer), prefixCommodity_AffiliateCustomer + SbmDbDfn.GetColumnName(dbColumn, false));
|
|
}
|
|
|
|
//---------------------------------------------------------------
|
|
// Customer definition.
|
|
if (CanManageCommodityCustomers())
|
|
{
|
|
bool hasCmdCustField = false;
|
|
if (!hasCmdCustField) hasCmdCustField = columns.HasId(SbmCommodity.Column.Cust_ProductCode);
|
|
if (!hasCmdCustField) hasCmdCustField = columns.HasId(SbmCommodity.Column.Cust_AmountRetail);
|
|
if (!hasCmdCustField) hasCmdCustField = columns.HasId(SbmCommodity.Column.Cust_AmountRetail_Fmt);
|
|
if (!hasCmdCustField) hasCmdCustField = columns.HasId(SbmCommodity.Column.Cust_CurrencyIdRetail);
|
|
if (!hasCmdCustField) hasCmdCustField = columns.HasId(SbmCommodity.Column.Cust_CurrencyIdRetail_Code);
|
|
if (!hasCmdCustField) hasCmdCustField = columns.HasId(SbmCommodity.Column.Cust_CurrencyIdRetail_Symbol);
|
|
if (!hasCmdCustField) hasCmdCustField = columns.HasId(SbmCommodity.Column.Cust_PromotionCode);
|
|
if (!hasCmdCustField) hasCmdCustField = columns.HasId(SbmCommodity.Column.Cust_PromotionDesc);
|
|
if (hasCmdCustField && (SysId.IsValid(prm.AssociationIdCommodityCustomer) || !StringUtil.IsEmpty(prm.AccountCodeCommodityCustomer)))
|
|
{
|
|
// Join to the commodity customer.
|
|
DbQueryJoin joinCmdCust = new DbQueryJoin(DbJoinType.LeftOuter);
|
|
joinCmdCust.Table = new StringPair(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.CommodityCustomer), aliasCommodity_CmdCustomer);
|
|
joinCmdCust.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.CommodityCustomer_CommodityId, aliasCommodity_CmdCustomer) + "=" + SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_Id, aliasCommodity));
|
|
if (SysId.IsValid(prm.AssociationIdCommodityCustomer))
|
|
{
|
|
// Filter by the Customer's association Id.
|
|
joinCmdCust.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.CommodityCustomer_AssocIdCustomer, aliasCommodity_CmdCustomer) + "=" + prm.AssociationIdCommodityCustomer.ToString());
|
|
}
|
|
query.Joins.Add(joinCmdCust);
|
|
if (!StringUtil.IsEmpty(prm.AccountCodeCommodityCustomer))
|
|
{
|
|
// Join to the Association to filter by the Customer's account code.
|
|
}
|
|
// Add the CmdCust columns.
|
|
List<SbmDbDfn.ColumnIdx> cmdCustCols = new List<SbmDbDfn.ColumnIdx>()
|
|
{
|
|
SbmDbDfn.ColumnIdx.CommodityCustomer_ProductCode,
|
|
SbmDbDfn.ColumnIdx.CommodityCustomer_AmountRetail,
|
|
SbmDbDfn.ColumnIdx.CommodityCustomer_CurrencyIdRetail,
|
|
SbmDbDfn.ColumnIdx.CommodityCustomer_PromotionCode
|
|
};
|
|
foreach (SbmDbDfn.ColumnIdx dbColumn in cmdCustCols)
|
|
query.Columns.Add(SbmDbDfn.GetColumnNameQual(dbColumn, aliasCommodity_CmdCustomer), prefixCommodity_CmdCustomer + SbmDbDfn.GetColumnName(dbColumn, false));
|
|
}
|
|
}
|
|
|
|
//---------------------------------------------------------------
|
|
// Uom Sale.
|
|
if (columns.HasId(SbmCommodity.Column.UnitOfSale))
|
|
{
|
|
// Join to the Unit of Measure table:
|
|
DbQueryJoin joinUom = new DbQueryJoin(DbJoinType.LeftOuter);
|
|
joinUom.Table = new StringPair(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.UnitMeasure), aliasCommodity_UomSale);
|
|
joinUom.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.UnitMeasure_Id, aliasCommodity_UomSale) + "=" + SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_UomIdSale, aliasCommodity));
|
|
query.Joins.Add(joinUom);
|
|
// Add the UomSales columns.
|
|
List<SbmDbDfn.ColumnIdx> uomSalesCols = new List<SbmDbDfn.ColumnIdx>()
|
|
{
|
|
SbmDbDfn.ColumnIdx.UnitMeasure_Single
|
|
};
|
|
foreach (SbmDbDfn.ColumnIdx dbColumn in uomSalesCols)
|
|
query.Columns.Add(SbmDbDfn.GetColumnNameQual(dbColumn, aliasCommodity_UomSale), prefixCommodity_UomSale + SbmDbDfn.GetColumnName(dbColumn, false));
|
|
}
|
|
|
|
//---------------------------------------------------------------
|
|
// Material Currency.
|
|
if (columns.HasId(SbmCommodity.Column.MaterialCost_Fmt) ||
|
|
columns.HasId(SbmCommodity.Column.MaterialCurrency_Code) ||
|
|
columns.HasId(SbmCommodity.Column.MaterialCurrency_Symbol))
|
|
{
|
|
// Join to the Currency table.
|
|
DbQueryJoin joinCur = new DbQueryJoin(DbJoinType.LeftOuter);
|
|
joinCur.Table = new StringPair(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Currency), aliasCommodity_CurrencyMaterial);
|
|
joinCur.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Currency_Id, aliasCommodity_CurrencyMaterial) + "=" + SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_CurrencyIdMaterial, aliasCommodity));
|
|
query.Joins.Add(joinCur);
|
|
// Add the Currency columns.
|
|
List<SbmDbDfn.ColumnIdx> currencyMaterialCols = new List<SbmDbDfn.ColumnIdx>();
|
|
currencyMaterialCols.Add(SbmDbDfn.ColumnIdx.Currency_Code);
|
|
currencyMaterialCols.Add(SbmDbDfn.ColumnIdx.Currency_Name);
|
|
currencyMaterialCols.Add(SbmDbDfn.ColumnIdx.Currency_Symbol);
|
|
currencyMaterialCols.Add(SbmDbDfn.ColumnIdx.Currency_Suffix);
|
|
foreach (SbmDbDfn.ColumnIdx dbColumn in currencyMaterialCols)
|
|
query.Columns.Add(SbmDbDfn.GetColumnNameQual(dbColumn, aliasCommodity_CurrencyMaterial), prefixCommodity_CurrencyMaterial + SbmDbDfn.GetColumnName(dbColumn, false));
|
|
}
|
|
|
|
//---------------------------------------------------------------
|
|
// ExWorks currency.
|
|
if (columns.HasId(SbmCommodity.Column.ExWorksCost_Fmt) ||
|
|
columns.HasId(SbmCommodity.Column.ExWorksCurrency_Code) ||
|
|
columns.HasId(SbmCommodity.Column.ExWorksCurrency_Symbol))
|
|
{
|
|
// Join to the Currency table.
|
|
DbQueryJoin joinCur = new DbQueryJoin(DbJoinType.LeftOuter);
|
|
joinCur.Table = new StringPair(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Currency), aliasCommodity_CurrencyExWorks);
|
|
joinCur.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Currency_Id, aliasCommodity_CurrencyExWorks) + "=" + SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_CurrencyIdExWorks, aliasCommodity));
|
|
query.Joins.Add(joinCur);
|
|
// Add the Currency columns.
|
|
List<SbmDbDfn.ColumnIdx> currencyExWorksCols = new List<SbmDbDfn.ColumnIdx>();
|
|
currencyExWorksCols.Add(SbmDbDfn.ColumnIdx.Currency_Code);
|
|
currencyExWorksCols.Add(SbmDbDfn.ColumnIdx.Currency_Name);
|
|
currencyExWorksCols.Add(SbmDbDfn.ColumnIdx.Currency_Symbol);
|
|
currencyExWorksCols.Add(SbmDbDfn.ColumnIdx.Currency_Suffix);
|
|
foreach (SbmDbDfn.ColumnIdx dbColumn in currencyExWorksCols)
|
|
query.Columns.Add(SbmDbDfn.GetColumnNameQual(dbColumn, aliasCommodity_CurrencyExWorks), prefixCommodity_CurrencyExWorks + SbmDbDfn.GetColumnName(dbColumn, false));
|
|
}
|
|
|
|
//---------------------------------------------------------------
|
|
// Tax code.
|
|
if (columns.HasId(SbmCommodity.Column.TaxCode) || columns.HasId(SbmCommodity.Column.TaxRate) || columns.HasId(SbmCommodity.Column.GrossPrice))
|
|
{
|
|
// Join to the Tax Code table.
|
|
DbQueryJoin joinTxc = new DbQueryJoin(DbJoinType.LeftOuter);
|
|
joinTxc.Table = new StringPair(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.TaxCode), aliasCommodity_TaxCode_Sale);
|
|
joinTxc.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.TaxCode_Id, aliasCommodity_TaxCode_Sale) + "=" + SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_TaxCodeId, aliasCommodity));
|
|
query.Joins.Add(joinTxc);
|
|
query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.TaxCode_Code, aliasCommodity_TaxCode_Sale), prefixCommodity_TaxCode_Sale + SbmDbDfn.GetColumnName(SbmDbDfn.ColumnIdx.TaxCode_Code, false));
|
|
query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.TaxCode_TaxRate, aliasCommodity_TaxCode_Sale), prefixCommodity_TaxCode_Sale + SbmDbDfn.GetColumnName(SbmDbDfn.ColumnIdx.TaxCode_TaxRate, false));
|
|
}
|
|
if (canViewSalesFinancials && columns.HasId(SbmCommodity.Column.GrossPrice))
|
|
{
|
|
// Calculate RRP: SalesPrice + TaxRate%
|
|
String colCommodity_SalesPrice = "(" + SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_SalesPrice, aliasCommodity) + "*(1.0+(" + prefixCommodity_TaxCode_Sale + SbmDbDfn.GetColumnName(SbmDbDfn.ColumnIdx.TaxCode_TaxRate, false) + "/100.0)))";
|
|
query.Columns.Add(colCommodity_SalesPrice, dataNameGrossPrice);
|
|
}
|
|
|
|
//---------------------------------------------------------------
|
|
// Last stock take.
|
|
if (columns.HasId(SbmCommodity.Column.StockTake_Date))
|
|
{
|
|
SysId locationIdSales = UserContext.GetOwnerOption_StockLocation(Sbm.OrgOption_StockLocation.SalesOrderDefault);
|
|
if (SysId.IsValid(locationStockId)) locationIdSales = locationStockId;
|
|
if (SysId.IsValid(locationIdSales))
|
|
{
|
|
// Join to the stock movements to identify the most recent stock take at the default sales location.
|
|
String aliasCommodity_LastStockTake = "aCmdLST";
|
|
DbQuery qryStTk = new DbQuery(db.DbmsType);
|
|
qryStTk.Tables.Add(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.StockLevel), aliasCommodity_LastStockTake);
|
|
qryStTk.Columns.Add("MAX(" + SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.StockLevel_Recorded, aliasCommodity_LastStockTake) + ")");
|
|
qryStTk.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.StockLevel_CommodityId, aliasCommodity_LastStockTake) + "=" + SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_Id, aliasCommodity));
|
|
qryStTk.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.StockLevel_LocationId, aliasCommodity_LastStockTake) + "=" + locationIdSales.ToString());
|
|
qryStTk.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.StockLevel_Type, aliasCommodity_LastStockTake) + "=" + ((int)Sbm.StockLevelType.StockTake).ToString());
|
|
qryStTk.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.StockLevel_Status, aliasCommodity_LastStockTake) + "='" + StatusCompleted + "'");
|
|
query.Columns.Add("(" + qryStTk.BuildQuery() + ")", dataNameLastStockTake);
|
|
}
|
|
}
|
|
|
|
//---------------------------------------------------------------
|
|
// Sales.
|
|
if (columns.HasId(SbmCommodity.Column.SalesYtdCalendar))
|
|
{
|
|
// Current calendar year.
|
|
DateTime earliest = new DateTime(DateTime.Today.Year, 1, 1);
|
|
DateTime latest = DateTime.MinValue;
|
|
query.Columns.Add("(" + BuildSalesQuantityQuery(earliest, latest, false, null) + ")", dataNameSales_YtdCalendar);
|
|
//if (DebugMode) SaLogger.Trace("BuildSalesQuantityQuery: " + BuildSalesQuantityQuery(earliest, latest, false, null));
|
|
}
|
|
if (columns.HasId(SbmCommodity.Column.SalesPyCalendar))
|
|
{
|
|
// Previous calendar year.
|
|
DateTime earliest = new DateTime(DateTime.Today.Year, 1, 1);
|
|
DateTime latest = new DateTime(DateTime.Today.Year - 1, 12, 31);
|
|
query.Columns.Add("(" + BuildSalesQuantityQuery(earliest, latest, false, null) + ")", dataNameSales_PyCalendar);
|
|
}
|
|
if (columns.HasId(SbmCommodity.Column.SalesMonthCurrent))
|
|
{
|
|
// Sales - current month.
|
|
DateTime earliest = DateTime.Today.StartOfMonth();
|
|
DateTime latest = earliest.EndOfMonth();
|
|
query.Columns.Add("(" + BuildSalesQuantityQuery(earliest, latest, false, null) + ")", dataNameSales_MthCurrent);
|
|
}
|
|
if (columns.HasId(SbmCommodity.Column.SalesMonthPast01))
|
|
{
|
|
// Sales - part month 1:
|
|
DateTime earliest = DateTime.Today.StartOfMonth().AddMonths(-1);
|
|
DateTime latest = earliest.EndOfMonth();
|
|
query.Columns.Add("(" + BuildSalesQuantityQuery(earliest, latest, false, null) + ")", dataNameSales_Mth01);
|
|
}
|
|
if (columns.HasId(SbmCommodity.Column.SalesMonthPast02))
|
|
{
|
|
// Sales - part month 2:
|
|
DateTime earliest = DateTime.Today.StartOfMonth().AddMonths(-2);
|
|
DateTime latest = earliest.EndOfMonth();
|
|
query.Columns.Add("(" + BuildSalesQuantityQuery(earliest, latest, false, null) + ")", dataNameSales_Mth02);
|
|
}
|
|
if (columns.HasId(SbmCommodity.Column.SalesMonthPast03))
|
|
{
|
|
// Sales - part month 3:
|
|
DateTime earliest = DateTime.Today.StartOfMonth().AddMonths(-3);
|
|
DateTime latest = earliest.EndOfMonth();
|
|
query.Columns.Add("(" + BuildSalesQuantityQuery(earliest, latest, false, null) + ")", dataNameSales_Mth03);
|
|
}
|
|
if (columns.HasId(SbmCommodity.Column.SalesMonthPast04))
|
|
{
|
|
// Sales - part month 4:
|
|
DateTime earliest = DateTime.Today.StartOfMonth().AddMonths(-4);
|
|
DateTime latest = earliest.EndOfMonth();
|
|
query.Columns.Add("(" + BuildSalesQuantityQuery(earliest, latest, false, null) + ")", dataNameSales_Mth04);
|
|
}
|
|
if (columns.HasId(SbmCommodity.Column.SalesMonthPast05))
|
|
{
|
|
// Sales - part month 5:
|
|
DateTime earliest = DateTime.Today.StartOfMonth().AddMonths(-5);
|
|
DateTime latest = earliest.EndOfMonth();
|
|
query.Columns.Add("(" + BuildSalesQuantityQuery(earliest, latest, false, null) + ")", dataNameSales_Mth05);
|
|
}
|
|
if (columns.HasId(SbmCommodity.Column.SalesMonthPast06))
|
|
{
|
|
// Sales - part month 6:
|
|
DateTime earliest = DateTime.Today.StartOfMonth().AddMonths(-6);
|
|
DateTime latest = earliest.EndOfMonth();
|
|
query.Columns.Add("(" + BuildSalesQuantityQuery(earliest, latest, false, null) + ")", dataNameSales_Mth06);
|
|
}
|
|
if (columns.HasId(SbmCommodity.Column.SalesMonthPast07))
|
|
{
|
|
// Sales - part month 7:
|
|
DateTime earliest = DateTime.Today.StartOfMonth().AddMonths(-7);
|
|
DateTime latest = earliest.EndOfMonth();
|
|
query.Columns.Add("(" + BuildSalesQuantityQuery(earliest, latest, false, null) + ")", dataNameSales_Mth07);
|
|
}
|
|
if (columns.HasId(SbmCommodity.Column.SalesMonthPast08))
|
|
{
|
|
// Sales - part month 8:
|
|
DateTime earliest = DateTime.Today.StartOfMonth().AddMonths(-8);
|
|
DateTime latest = earliest.EndOfMonth();
|
|
query.Columns.Add("(" + BuildSalesQuantityQuery(earliest, latest, false, null) + ")", dataNameSales_Mth08);
|
|
}
|
|
if (columns.HasId(SbmCommodity.Column.SalesMonthPast09))
|
|
{
|
|
// Sales - part month 9:
|
|
DateTime earliest = DateTime.Today.StartOfMonth().AddMonths(-9);
|
|
DateTime latest = earliest.EndOfMonth();
|
|
query.Columns.Add("(" + BuildSalesQuantityQuery(earliest, latest, false, null) + ")", dataNameSales_Mth09);
|
|
}
|
|
if (columns.HasId(SbmCommodity.Column.SalesMonthPast10))
|
|
{
|
|
// Sales - part month 10:
|
|
DateTime earliest = DateTime.Today.StartOfMonth().AddMonths(-10);
|
|
DateTime latest = earliest.EndOfMonth();
|
|
query.Columns.Add("(" + BuildSalesQuantityQuery(earliest, latest, false, null) + ")", dataNameSales_Mth10);
|
|
}
|
|
if (columns.HasId(SbmCommodity.Column.SalesMonthPast11))
|
|
{
|
|
// Sales - part month 11:
|
|
DateTime earliest = DateTime.Today.StartOfMonth().AddMonths(-11);
|
|
DateTime latest = earliest.EndOfMonth();
|
|
query.Columns.Add("(" + BuildSalesQuantityQuery(earliest, latest, false, null) + ")", dataNameSales_Mth11);
|
|
}
|
|
if (columns.HasId(SbmCommodity.Column.SalesMonthPast12))
|
|
{
|
|
// Sales - part month 12:
|
|
DateTime earliest = DateTime.Today.StartOfMonth().AddMonths(-12);
|
|
DateTime latest = earliest.EndOfMonth();
|
|
query.Columns.Add("(" + BuildSalesQuantityQuery(earliest, latest, false, null) + ")", dataNameSales_Mth12);
|
|
}
|
|
if (columns.HasId(SbmCommodity.Column.StockSold_Period))
|
|
{
|
|
// Stock sold during specified period.
|
|
query.Columns.Add("(" + BuildSalesQuantityQuery(prm.StockSoldFrom, prm.StockSoldTo, false, null) + ")", dataNameStockSold_Period);
|
|
}
|
|
|
|
//---------------------------------------------------------------
|
|
// Allocated stock.
|
|
if ((columns.HasId(SbmCommodity.Column.Stock_Allocated) || columns.HasId(SbmCommodity.Column.Stock_Available) || columns.HasId(SbmCommodity.Column.Stock_Available_MinZero)) && locationStockIds.Count > 0)
|
|
{
|
|
query.Columns.Add("(" + BuildAllocatedStockQuery(locationStockIds) + ")", dataNameStkLvl_Allocated);
|
|
}
|
|
if ((columns.HasId(SbmCommodity.Column.Stock_Allocated_Sales) || columns.HasId(SbmCommodity.Column.Stock_Available_Sales) || columns.HasId(SbmCommodity.Column.Stock_Available_Sales_MinZero)) && locationIds_Sales.Count > 0)
|
|
{
|
|
query.Columns.Add("(" + BuildAllocatedStockQuery(locationIds_Sales) + ")", dataNameStkLvl_Allocated_Sales);
|
|
}
|
|
if (columns.HasId(SbmCommodity.Column.Stock_Allocated_Calc) && locationIds_Calc.Count > 0)
|
|
{
|
|
query.Columns.Add("(" + BuildAllocatedStockQuery(locationIds_Calc) + ")", dataNameStkLvl_Allocated_Calc);
|
|
}
|
|
if (columns.HasId(SbmCommodity.Column.Stock_Allocated_All) && locationIds_All.Count > 0)
|
|
{
|
|
query.Columns.Add("(" + BuildAllocatedStockQuery(locationIds_All) + ")", dataNameStkLvl_Allocated_All);
|
|
}
|
|
|
|
//---------------------------------------------------------------
|
|
// Current stock level.
|
|
if ((columns.HasId(SbmCommodity.Column.Stock_CurrentLevel) || columns.HasId(SbmCommodity.Column.Stock_ImminentLevel) || columns.HasId(SbmCommodity.Column.Stock_Available) || columns.HasId(SbmCommodity.Column.Stock_Available_Sales)) && locationStockIds.Count > 0)
|
|
{
|
|
query.Columns.Add("(" + BuildCurrentStockQuery(locationStockIds) + ")", dataNameStkLvl_Current);
|
|
}
|
|
if ((columns.HasId(SbmCommodity.Column.Stock_CurrentLevel_Sales) || columns.HasId(SbmCommodity.Column.Stock_Available_Sales) || columns.HasId(SbmCommodity.Column.Stock_Available_Sales_MinZero)) && locationIds_Sales.Count > 0)
|
|
{
|
|
query.Columns.Add("(" + BuildCurrentStockQuery(locationIds_Sales) + ")", dataNameStkLvl_Current_Sales);
|
|
}
|
|
if (columns.HasId(SbmCommodity.Column.Stock_CurrentLevel_Calc) && locationIds_Calc.Count > 0)
|
|
{
|
|
query.Columns.Add("(" + BuildCurrentStockQuery(locationIds_Calc) + ")", dataNameStkLvl_Current_Calc);
|
|
}
|
|
if (columns.HasId(SbmCommodity.Column.Stock_CurrentLevel_All) && locationIds_All.Count > 0)
|
|
{
|
|
query.Columns.Add("(" + BuildCurrentStockQuery(locationIds_All) + ")", dataNameStkLvl_Current_All);
|
|
}
|
|
|
|
//---------------------------------------------------------------
|
|
// Stock bays.
|
|
if (columns.HasId(SbmCommodity.Column.Stock_Bays))
|
|
{
|
|
// Join to current stock level for the specified location to retrieve the bays.
|
|
String aliasCommodity_StockBays = "aCmdStkBays";
|
|
DbQueryJoin joinStkBay = new DbQueryJoin(DbJoinType.LeftOuter);
|
|
String sTblStkBays =
|
|
(String)"(Select CommodityId, Min(IsNull(Bay1,'')+','+IsNull(Bay2,'')+','+IsNull(Bay3,'')) 'Bays' " +
|
|
"From StockLevel " +
|
|
"Where Type=10 And Status='CUR' And Len(Bay1)>0 " + // Type.eSapStockLevelType_CurrentLevel=10
|
|
(SysId.IsValid(prm.LocationIdStock) ? " And LocationId=" + prm.LocationIdStock.ToString() + " " : "") +
|
|
"Group By CommodityId)";
|
|
joinStkBay.Table = new StringPair(sTblStkBays, aliasCommodity_StockBays);
|
|
joinStkBay.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.StockLevel_CommodityId, aliasCommodity_StockBays) + "=" + SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_Id, aliasCommodity));
|
|
query.Columns.Add(aliasCommodity_StockBays + ".Bays", dataNameStkLvl_Bays);
|
|
query.Joins.Add(joinStkBay);
|
|
}
|
|
if ((columns.HasId(SbmCommodity.Column.Stock_Bay1) || columns.HasId(SbmCommodity.Column.Stock_Bay2) || columns.HasId(SbmCommodity.Column.Stock_Bay3)) && SysId.IsValid(prm.LocationIdStock))
|
|
{
|
|
// Join to current stock level for the specified location to retrieve the bays.
|
|
String aliasCommodity_StkBay = "aCmdStkBay";
|
|
DbQueryJoin joinStkBay = new DbQueryJoin(DbJoinType.LeftOuter);
|
|
joinStkBay.Table = new StringPair(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.StockLevel), aliasCommodity_StkBay);
|
|
joinStkBay.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.StockLevel_Type, aliasCommodity_StkBay) + "=" + Sbm.StockLevelType.CurrentLevel.ToString());
|
|
joinStkBay.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.StockLevel_CommodityId, aliasCommodity_StkBay) + "=" + SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_Id, aliasCommodity));
|
|
joinStkBay.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.StockLevel_LocationId, aliasCommodity_StkBay) + "=" + prm.LocationIdStock.ToString());
|
|
joinStkBay.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.StockLevel_Status, aliasCommodity_StkBay) + "='" + StatusCurrent + "'");
|
|
query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.StockLevel_Bay1, aliasCommodity_StkBay), dataNameStkLvl_Bay1);
|
|
query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.StockLevel_Bay2, aliasCommodity_StkBay), dataNameStkLvl_Bay2);
|
|
query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.StockLevel_Bay3, aliasCommodity_StkBay), dataNameStkLvl_Bay3);
|
|
query.Joins.Add(joinStkBay);
|
|
}
|
|
|
|
//---------------------------------------------------------------
|
|
// Stock Due - Commodity and Container movements.
|
|
bool bHasStockNextDueCols =
|
|
(columns.HasId(SbmCommodity.Column.Stock_NextDue_Date) ||
|
|
columns.HasId(SbmCommodity.Column.Stock_NextDue_Quantity));
|
|
bool bHasCmdStockNextDueCols =
|
|
(columns.HasId(SbmCommodity.Column.Stock_NextDue_Commodity_Date) ||
|
|
columns.HasId(SbmCommodity.Column.Stock_NextDue_Commodity_Quantity));
|
|
bool bHasContStockNextDueCols =
|
|
(columns.HasId(SbmCommodity.Column.Stock_NextDue_Container_Date) ||
|
|
columns.HasId(SbmCommodity.Column.Stock_NextDue_Container_Quantity));
|
|
if ((bHasStockNextDueCols || bHasCmdStockNextDueCols) && (SysId.IsValid(locationStockId) || !stringLocactionStockId.IsEmpty()))
|
|
{
|
|
// When is the next commodity stock movement due and the associated quantity:
|
|
String aliasCommodity_StockCommodity = "aCmdStkCmd";
|
|
String aliasCommodity_StockCommodityDate = "aCmdStkCmdDate";
|
|
// Sub query form join to consolidate commodity movements by date:
|
|
DbQuery qryStkCmd = new DbQuery(db.DbmsType);
|
|
qryStkCmd.Tables.Add(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Movement), aliasCommodity_StockCommodity);
|
|
qryStkCmd.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Movement_ItemId, aliasCommodity_StockCommodity));
|
|
qryStkCmd.Columns.Add("Min(" + SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Movement_Movement, aliasCommodity_StockCommodity) + ")", dataNameStkDue_NextCmdStkDate);
|
|
qryStkCmd.GroupBy.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Movement_ItemId, aliasCommodity_StockCommodity));
|
|
qryStkCmd.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Movement_ItemType, aliasCommodity_StockCommodity) + "=" + ((int)Sbm.ItemType.Commodity).ToString());
|
|
qryStkCmd.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Movement_Type, aliasCommodity_StockCommodity) + "=" + ((int)Sbm.MovementType.StockTransfer).ToString());
|
|
if (SysId.IsValid(locationStockId))
|
|
qryStkCmd.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Movement_LocationIdTo, aliasCommodity_StockCommodity) + "=" + locationStockId.ToString());
|
|
else
|
|
{
|
|
qryStkCmd.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Movement_LocationIdTo, aliasCommodity_StockCommodity) + " IN (" + stringLocactionStockId + ")");
|
|
qryStkCmd.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Movement_LocationIdFrom, aliasCommodity_StockCommodity) + " NOT IN (" + stringLocactionStockId + ")");
|
|
}
|
|
qryStkCmd.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Movement_Status, aliasCommodity_StockCommodity) + "='" + StatusAwaiting + "'");
|
|
// Join main query to the commodity movements to get earliest expected movement date:
|
|
DbQueryJoin joinStkCmd = new DbQueryJoin(DbJoinType.LeftOuter);
|
|
joinStkCmd.Table = new StringPair("(" + qryStkCmd.BuildQuery() + ")", aliasCommodity_StockCommodityDate);
|
|
joinStkCmd.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Movement_ItemId, aliasCommodity_StockCommodityDate) + "=" + SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_Id, aliasCommodity));
|
|
query.Joins.Add(joinStkCmd);
|
|
query.Columns.Add(aliasCommodity_StockCommodityDate + "." + dataNameStkDue_NextCmdStkDate, dataNameStkDue_NextCmdStkDate);
|
|
|
|
if (columns.HasId(SbmCommodity.Column.Stock_NextDue_Quantity) || columns.HasId(SbmCommodity.Column.Stock_NextDue_Commodity_Quantity))
|
|
{
|
|
// Join to the commodity movements again and restrict to the date identified above.
|
|
String aliasCommodity_StkCmdQty = "aStkCmdQty";
|
|
// Start with the same sub-query as above, but group by movement date as well as commodity Id and sum the quantities.
|
|
qryStkCmd.Columns.Clear();
|
|
qryStkCmd.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Movement_ItemId, aliasCommodity_StockCommodity));
|
|
qryStkCmd.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Movement_Movement, aliasCommodity_StockCommodity));
|
|
qryStkCmd.Columns.Add("Sum(" + SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Movement_Quantity, aliasCommodity_StockCommodity) + ")", dataNameStkDue_NextCmdStkQty);
|
|
qryStkCmd.GroupBy.Clear();
|
|
qryStkCmd.GroupBy.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Movement_ItemId, aliasCommodity_StockCommodity));
|
|
qryStkCmd.GroupBy.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Movement_Movement, aliasCommodity_StockCommodity));
|
|
// Join main query to the commodity movements to get quantity for earliest expected movement date:
|
|
DbQueryJoin joinStkCmdQty = new DbQueryJoin(DbJoinType.LeftOuter);
|
|
joinStkCmdQty.Table = new StringPair("(" + qryStkCmd.BuildQuery() + ")", aliasCommodity_StkCmdQty);
|
|
joinStkCmdQty.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Movement_ItemId, aliasCommodity_StkCmdQty) + "=" + SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_Id));
|
|
joinStkCmdQty.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Movement_Movement, aliasCommodity_StkCmdQty) + "=" + aliasCommodity_StockCommodityDate + "." + dataNameStkDue_NextCmdStkDate);
|
|
query.Joins.Add(joinStkCmdQty);
|
|
query.Columns.Add(aliasCommodity_StkCmdQty + "." + dataNameStkDue_NextCmdStkQty, dataNameStkDue_NextCmdStkQty);
|
|
}
|
|
}
|
|
if (StockControlConfig.AllowStockContainers() && db.TableExists(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Container)) && (bHasStockNextDueCols || bHasContStockNextDueCols) && (SysId.IsValid(locationStockId) || !stringLocactionStockId.IsEmpty()))
|
|
{
|
|
// When is the next container stock movement due that includes this commodity.
|
|
// Sub query form join to consolidate commodity movements by date:
|
|
String aliasCommodity_StockContainer_Movement = "aStkCntMov";
|
|
String aliasCommodity_StockContainer_Container = "aStkCntCnt";
|
|
String aliasCommodity_StkCntCit = "aStkCntCit";
|
|
DbQuery qryStkCnt = new DbQuery(db.DbmsType);
|
|
qryStkCnt.Tables.Add(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Movement), aliasCommodity_StockContainer_Movement);
|
|
qryStkCnt.Tables.Add(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Container), aliasCommodity_StockContainer_Container);
|
|
qryStkCnt.Tables.Add(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.ContainerItem), aliasCommodity_StkCntCit);
|
|
qryStkCnt.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.ContainerItem_ItemId, aliasCommodity_StkCntCit));
|
|
qryStkCnt.Columns.Add("MIN(" + SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Movement_Movement, aliasCommodity_StockContainer_Movement) + ")", dataNameStkDue_NextCntStkDate);
|
|
qryStkCnt.GroupBy.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.ContainerItem_ItemId, aliasCommodity_StkCntCit));
|
|
qryStkCnt.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Movement_Type, aliasCommodity_StockContainer_Movement) + "=" + ((int)Sbm.MovementType.StockTransfer).ToString());
|
|
qryStkCnt.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Movement_ItemType, aliasCommodity_StockContainer_Movement) + "=" + (((int)Sbm.ItemType.Container).ToString()).ToString());
|
|
qryStkCnt.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Container_Id, aliasCommodity_StockContainer_Container) + "=" + SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Movement_ItemId, aliasCommodity_StockContainer_Movement));
|
|
qryStkCnt.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.ContainerItem_ContainerId, aliasCommodity_StkCntCit) + "=" + SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Container_Id, aliasCommodity_StockContainer_Container));
|
|
qryStkCnt.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.ContainerItem_ItemType, aliasCommodity_StkCntCit) + "=" + ((int)Sbm.ItemType.Commodity).ToString());
|
|
if (SysId.IsValid(locationStockId))
|
|
qryStkCnt.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Movement_LocationIdTo, aliasCommodity_StockContainer_Movement) + "=" + locationStockId.ToString());
|
|
else
|
|
{
|
|
qryStkCnt.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Movement_LocationIdTo, aliasCommodity_StockContainer_Movement) + " IN (" + stringLocactionStockId + ")");
|
|
qryStkCnt.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Movement_LocationIdFrom, aliasCommodity_StockContainer_Movement) + " NOT IN (" + stringLocactionStockId + ")");
|
|
}
|
|
qryStkCnt.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Movement_Status, aliasCommodity_StockContainer_Movement) + "='" + StatusAwaiting + "'");
|
|
qryStkCnt.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Container_Status, aliasCommodity_StockContainer_Container) + "<>'" + StatusCancelled + "'");
|
|
// Join main query to the container movements to get earliest expected movement date:
|
|
String aliasCommodity_StockContainerDate = "aStkCntDate";
|
|
DbQueryJoin joinStkCnt = new DbQueryJoin(DbJoinType.LeftOuter);
|
|
joinStkCnt.Table = new StringPair("(" + qryStkCnt.BuildQuery() + ")", aliasCommodity_StockContainerDate);
|
|
joinStkCnt.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.ContainerItem_ItemId, aliasCommodity_StockContainerDate) + "=" + SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_Id, aliasCommodity));
|
|
query.Joins.Add(joinStkCnt);
|
|
query.Columns.Add(aliasCommodity_StockContainerDate + "." + dataNameStkDue_NextCntStkDate, dataNameStkDue_NextCntStkDate);
|
|
|
|
if (columns.HasId(SbmCommodity.Column.Stock_NextDue_Quantity) || columns.HasId(SbmCommodity.Column.Stock_NextDue_Container_Quantity))
|
|
{
|
|
// Join to the commodity movements again and restrict to the date identified above.
|
|
String aliasCommodity_StockContainer_Quality = "aStkCntQty";
|
|
// Start with the same sub-query as above, but group by movement date as well as commodity Id and sum the quantities.
|
|
qryStkCnt.Columns.Clear();
|
|
qryStkCnt.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.ContainerItem_ItemId, aliasCommodity_StkCntCit));
|
|
qryStkCnt.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Movement_Movement, aliasCommodity_StockContainer_Movement));
|
|
qryStkCnt.Columns.Add("SUM(" + SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.ContainerItem_Quantity, aliasCommodity_StkCntCit) + ")", dataNameStkDue_NextCntStkQty);
|
|
qryStkCnt.GroupBy.Clear();
|
|
qryStkCnt.GroupBy.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.ContainerItem_ItemId, aliasCommodity_StkCntCit));
|
|
qryStkCnt.GroupBy.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Movement_Movement, aliasCommodity_StockContainer_Movement));
|
|
// Join main query to the container movements to get quantity for the earliest expected movement date.
|
|
DbQueryJoin joinStkCntQty = new DbQueryJoin(DbJoinType.LeftOuter);
|
|
joinStkCntQty.Table = new StringPair("(" + qryStkCnt.BuildQuery() + ")", aliasCommodity_StockContainer_Quality);
|
|
joinStkCntQty.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.ContainerItem_ItemId, aliasCommodity_StockContainer_Quality) + "=" + SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_Id, aliasCommodity));
|
|
joinStkCntQty.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Movement_Movement, aliasCommodity_StockContainer_Quality) + "=" + aliasCommodity_StockContainerDate + "." + dataNameStkDue_NextCntStkDate);
|
|
query.Joins.Add(joinStkCntQty);
|
|
query.Columns.Add(aliasCommodity_StockContainer_Quality + "." + dataNameStkDue_NextCntStkQty, dataNameStkDue_NextCntStkQty);
|
|
}
|
|
}
|
|
|
|
//---------------------------------------------------------------
|
|
// Imminent stock level.
|
|
if ((columns.HasId(SbmCommodity.Column.Stock_Due_Imminently) || columns.HasId(SbmCommodity.Column.Stock_ImminentLevel)) && (SysId.IsValid(locationStockId) || !stringLocactionStockId.IsEmpty()))
|
|
{
|
|
// Calculate the imminent stock level:
|
|
if (UserContext.GetOwnerOption_AllowOption(Sbm.OrgOption_AllowOption.ImminentStock))
|
|
{
|
|
PlannedStockMovements_Params prmPSM = new PlannedStockMovements_Params();
|
|
prmPSM.prmCmd = prm;
|
|
prmPSM.excludeAwaitingContainers = !UserContext.GetOwnerOption_AllowOption(Sbm.OrgOption_AllowOption.AwaitingContainersInImminentStock);
|
|
int weeksImminentStock = Math.Max(0, Math.Min(12, UserContext.GetOwnerOption_UpdateLimit(Sbm.OrgOption_PeriodWeeks.ImminentStockDue, 0)));
|
|
prmPSM.latest = DateTime.Today.StartOfWorkingWeek().AddDays(weeksImminentStock * 7);
|
|
query.Columns.Add(BuildPlannedStockMovementsQuery(prmPSM), dataNameStkDue_Imminent);
|
|
}
|
|
}
|
|
|
|
//---------------------------------------------------------------
|
|
// Stock movements
|
|
if (SysId.IsValid(locationStockId) || !StringUtil.IsEmpty(stringLocactionStockId))
|
|
{
|
|
// Stock due in by future weeks.
|
|
if (columns.HasId(SbmCommodity.Column.Stock_DueIn_Week1))
|
|
{
|
|
DateTime earliest = DateTime.MinValue;// No earliest date - to pick up any past planned movements.
|
|
DateTime latest = DateTime.Today.StartOfWorkingWeek().AddDays(4); // End of this week (Monday + 4 = Friday).
|
|
query.Columns.Add(BuildPlannedStockMovementsQuery(earliest, latest, prm, true, false, null), dataNameStkDue_Week1);
|
|
}
|
|
if (columns.HasId(SbmCommodity.Column.Stock_DueIn_Week2))
|
|
{
|
|
DateTime earliest = DateTime.Today.StartOfWorkingWeek().AddDays((2 * 7) - 9);// From the Saturday following week 1.
|
|
DateTime latest = earliest.AddDays(6);// End of that week.
|
|
query.Columns.Add(BuildPlannedStockMovementsQuery(earliest, latest, prm, true, false, null), dataNameStkDue_Week2);
|
|
}
|
|
if (columns.HasId(SbmCommodity.Column.Stock_DueIn_Week3))
|
|
{
|
|
DateTime earliest = DateTime.Today.StartOfWorkingWeek().AddDays((3 * 7) - 9);// From the Saturday following week 2.
|
|
DateTime latest = earliest.AddDays(6);// End of that week.
|
|
query.Columns.Add(BuildPlannedStockMovementsQuery(earliest, latest, prm, true, false, null), dataNameStkDue_Week3);
|
|
}
|
|
if (columns.HasId(SbmCommodity.Column.Stock_DueIn_Week4))
|
|
{
|
|
DateTime earliest = DateTime.Today.StartOfWorkingWeek().AddDays((4 * 7) - 9);// From the Saturday following week 3.
|
|
DateTime latest = earliest.AddDays(6);// End of that week.
|
|
query.Columns.Add(BuildPlannedStockMovementsQuery(earliest, latest, prm, true, false, null), dataNameStkDue_Week4);
|
|
}
|
|
if (columns.HasId(SbmCommodity.Column.Stock_DueIn_Week5))
|
|
{
|
|
DateTime earliest = DateTime.Today.StartOfWorkingWeek().AddDays((5 * 7) - 9);// From the Saturday following week 4.
|
|
DateTime latest = earliest.AddDays(6);// End of that week.
|
|
query.Columns.Add(BuildPlannedStockMovementsQuery(earliest, latest, prm, true, false, null), dataNameStkDue_Week5);
|
|
}
|
|
if (columns.HasId(SbmCommodity.Column.Stock_DueIn_Week6))
|
|
{
|
|
DateTime earliest = DateTime.Today.StartOfWorkingWeek().AddDays((6 * 7) - 9);// From the Saturday following week 5.
|
|
DateTime latest = earliest.AddDays(6);// End of that week.
|
|
query.Columns.Add(BuildPlannedStockMovementsQuery(earliest, latest, prm, true, false, null), dataNameStkDue_Week6);
|
|
}
|
|
if (columns.HasId(SbmCommodity.Column.Stock_DueIn_Week7))
|
|
{
|
|
DateTime earliest = DateTime.Today.StartOfWorkingWeek().AddDays((7 * 7) - 9);// From the Saturday following week 6.
|
|
DateTime latest = earliest.AddDays(6);// End of that week.
|
|
query.Columns.Add(BuildPlannedStockMovementsQuery(earliest, latest, prm, true, false, null), dataNameStkDue_Week7);
|
|
}
|
|
if (columns.HasId(SbmCommodity.Column.Stock_DueIn_Week8))
|
|
{
|
|
DateTime earliest = DateTime.Today.StartOfWorkingWeek().AddDays((8 * 7) - 9);// From the Saturday following week 7.
|
|
DateTime latest = earliest.AddDays(6);// End of that week.
|
|
query.Columns.Add(BuildPlannedStockMovementsQuery(earliest, latest, prm, true, false, null), dataNameStkDue_Week8);
|
|
}
|
|
if (columns.HasId(SbmCommodity.Column.Stock_DueIn_Week9))
|
|
{
|
|
DateTime earliest = DateTime.Today.StartOfWorkingWeek().AddDays((9 * 7) - 9);// From the Saturday following week 8.
|
|
DateTime latest = earliest.AddDays(6);// End of that week.
|
|
query.Columns.Add(BuildPlannedStockMovementsQuery(earliest, latest, prm, true, false, null), dataNameStkDue_Week9);
|
|
}
|
|
if (columns.HasId(SbmCommodity.Column.Stock_DueIn_Week10))
|
|
{
|
|
DateTime earliest = DateTime.Today.StartOfWorkingWeek().AddDays((10 * 7) - 9); // From the Saturday following week 9.
|
|
DateTime latest = earliest.AddDays(6);// End of that week.
|
|
query.Columns.Add(BuildPlannedStockMovementsQuery(earliest, latest, prm, true, false, null), dataNameStkDue_Week10);
|
|
}
|
|
if (columns.HasId(SbmCommodity.Column.Stock_DueIn_Week11))
|
|
{
|
|
DateTime earliest = DateTime.Today.StartOfWorkingWeek().AddDays((11 * 7) - 9); // From the Saturday following week 10.
|
|
DateTime latest = earliest.AddDays(6);// End of that week.
|
|
query.Columns.Add(BuildPlannedStockMovementsQuery(earliest, latest, prm, true, false, null), dataNameStkDue_Week11);
|
|
}
|
|
if (columns.HasId(SbmCommodity.Column.Stock_DueIn_Week12))
|
|
{
|
|
DateTime earliest = DateTime.Today.StartOfWorkingWeek().AddDays((12 * 7) - 9); // From the Saturday following week 11.
|
|
DateTime latest = earliest.AddDays(6);// End of that week.
|
|
query.Columns.Add(BuildPlannedStockMovementsQuery(earliest, latest, prm, true, false, null), dataNameStkDue_Week12);
|
|
}
|
|
if (columns.HasId(SbmCommodity.Column.Stock_DueIn_Week1To2))
|
|
{
|
|
DateTime earliest = DateTime.MinValue;// No earliest date - to pick up any overdue movements.
|
|
DateTime latest = DateTime.Today.StartOfWorkingWeek().AddDays(11); // End of the following week (Monday + 11 = Friday).
|
|
query.Columns.Add(BuildPlannedStockMovementsQuery(earliest, latest, prm, true, false, null), dataNameStkDue_Week1To2);
|
|
}
|
|
if (columns.HasId(SbmCommodity.Column.Stock_DueIn_Week3To4))
|
|
{
|
|
DateTime earliest = DateTime.Today.StartOfWorkingWeek().AddDays(12); // From the Saturday following week 2.
|
|
DateTime latest = earliest.AddDays(13);// End of the following week.
|
|
query.Columns.Add(BuildPlannedStockMovementsQuery(earliest, latest, prm, true, false, null), dataNameStkDue_Week3To4);
|
|
}
|
|
if (columns.HasId(SbmCommodity.Column.Stock_DueIn_Week5To6))
|
|
{
|
|
DateTime earliest = DateTime.Today.StartOfWorkingWeek().AddDays(26); // From the Saturday following week 4.
|
|
DateTime latest = earliest.AddDays(13);// End of the following week.
|
|
query.Columns.Add(BuildPlannedStockMovementsQuery(earliest, latest, prm, true, false, null), dataNameStkDue_Week5To6);
|
|
}
|
|
if (columns.HasId(SbmCommodity.Column.Stock_DueIn_Week7To8))
|
|
{
|
|
DateTime earliest = DateTime.Today.StartOfWorkingWeek().AddDays(40); // From the Saturday following week 6.
|
|
DateTime latest = earliest.AddDays(13);// End of the following week.
|
|
query.Columns.Add(BuildPlannedStockMovementsQuery(earliest, latest, prm, true, false, null), dataNameStkDue_Week7To8);
|
|
}
|
|
if (columns.HasId(SbmCommodity.Column.Stock_DueIn_Week9To10))
|
|
{
|
|
DateTime earliest = DateTime.Today.StartOfWorkingWeek().AddDays(54); // From the Saturday following week 8.
|
|
DateTime latest = earliest.AddDays(13);// End of the following week.
|
|
query.Columns.Add(BuildPlannedStockMovementsQuery(earliest, latest, prm, true, false, null), dataNameStkDue_Week9To10);
|
|
}
|
|
if (columns.HasId(SbmCommodity.Column.Stock_DueIn_Week11To12))
|
|
{
|
|
DateTime earliest = DateTime.Today.StartOfWorkingWeek().AddDays(68); // From the Saturday following week 10.
|
|
DateTime latest = earliest.AddDays(13);// End of the following week.
|
|
query.Columns.Add(BuildPlannedStockMovementsQuery(earliest, latest, prm, true, false, null), dataNameStkDue_Week11To12);
|
|
}
|
|
if (columns.HasId(SbmCommodity.Column.Stock_DueIn_Week7On))
|
|
{
|
|
DateTime earliest = DateTime.Today.StartOfWorkingWeek().AddDays(40); // From the Saturday following week 6.
|
|
DateTime latest = DateTime.MinValue;
|
|
query.Columns.Add(BuildPlannedStockMovementsQuery(earliest, latest, prm, true, false, null), dataNameStkDue_Week7On);
|
|
}
|
|
if (columns.HasId(SbmCommodity.Column.Stock_DueIn_Week13On))
|
|
{
|
|
DateTime earliest = DateTime.Today.StartOfWorkingWeek().AddDays(82); // From the Saturday following week 12.
|
|
DateTime latest = DateTime.MinValue;
|
|
query.Columns.Add(BuildPlannedStockMovementsQuery(earliest, latest, prm, true, false, null), dataNameStkDue_Week13On);
|
|
}
|
|
|
|
//---------------------------------------------------------------
|
|
// Stock due in future months:
|
|
if (columns.HasId(SbmCommodity.Column.Stock_DueIn_MonthCurrent))
|
|
{
|
|
DateTime earliest = DateTime.MinValue; // No earliest date - to pick up any past planned movements.
|
|
DateTime latest = DateTime.Today.EndOfMonth(); // Movements to end of current month.
|
|
query.Columns.Add(BuildPlannedStockMovementsQuery(earliest, latest, prm, true, false, null), dataNameStkDue_MonthCurr);
|
|
}
|
|
if (columns.HasId(SbmCommodity.Column.Stock_DueIn_Month01))
|
|
{
|
|
DateTime earliest = DateTime.Today.StartOfMonth().AddMonths(1);// First day of month 1.
|
|
DateTime latest = earliest.EndOfMonth();// Last day of month.
|
|
query.Columns.Add(BuildPlannedStockMovementsQuery(earliest, latest, prm, true, false, null), dataNameStkDue_Month01);
|
|
}
|
|
if (columns.HasId(SbmCommodity.Column.Stock_DueIn_Month02))
|
|
{
|
|
DateTime earliest = DateTime.Today.StartOfMonth().AddMonths(2);
|
|
DateTime latest = earliest.EndOfMonth();
|
|
query.Columns.Add(BuildPlannedStockMovementsQuery(earliest, latest, prm, true, false, null), dataNameStkDue_Month02);
|
|
}
|
|
if (columns.HasId(SbmCommodity.Column.Stock_DueIn_Month03))
|
|
{
|
|
DateTime earliest = DateTime.Today.StartOfMonth().AddMonths(3);
|
|
DateTime latest = earliest.EndOfMonth();
|
|
query.Columns.Add(BuildPlannedStockMovementsQuery(earliest, latest, prm, true, false, null), dataNameStkDue_Month03);
|
|
}
|
|
if (columns.HasId(SbmCommodity.Column.Stock_DueIn_Month04))
|
|
{
|
|
DateTime earliest = DateTime.Today.StartOfMonth().AddMonths(4);
|
|
DateTime latest = earliest.EndOfMonth();
|
|
query.Columns.Add(BuildPlannedStockMovementsQuery(earliest, latest, prm, true, false, null), dataNameStkDue_Month04);
|
|
}
|
|
if (columns.HasId(SbmCommodity.Column.Stock_DueIn_Month05))
|
|
{
|
|
DateTime earliest = DateTime.Today.StartOfMonth().AddMonths(5);
|
|
DateTime latest = earliest.EndOfMonth();
|
|
query.Columns.Add(BuildPlannedStockMovementsQuery(earliest, latest, prm, true, false, null), dataNameStkDue_Month05);
|
|
}
|
|
if (columns.HasId(SbmCommodity.Column.Stock_DueIn_Month06))
|
|
{
|
|
DateTime earliest = DateTime.Today.StartOfMonth().AddMonths(6);
|
|
DateTime latest = earliest.EndOfMonth();
|
|
query.Columns.Add(BuildPlannedStockMovementsQuery(earliest, latest, prm, true, false, null), dataNameStkDue_Month06);
|
|
}
|
|
if (columns.HasId(SbmCommodity.Column.Stock_DueIn_Month07))
|
|
{
|
|
DateTime earliest = DateTime.Today.StartOfMonth().AddMonths(7);
|
|
DateTime latest = earliest.EndOfMonth();
|
|
query.Columns.Add(BuildPlannedStockMovementsQuery(earliest, latest, prm, true, false, null), dataNameStkDue_Month07);
|
|
}
|
|
if (columns.HasId(SbmCommodity.Column.Stock_DueIn_Month08))
|
|
{
|
|
DateTime earliest = DateTime.Today.StartOfMonth().AddMonths(8);
|
|
DateTime latest = earliest.EndOfMonth();
|
|
query.Columns.Add(BuildPlannedStockMovementsQuery(earliest, latest, prm, true, false, null), dataNameStkDue_Month08);
|
|
}
|
|
if (columns.HasId(SbmCommodity.Column.Stock_DueIn_Month09))
|
|
{
|
|
DateTime earliest = DateTime.Today.StartOfMonth().AddMonths(9);
|
|
DateTime latest = earliest.EndOfMonth();
|
|
query.Columns.Add(BuildPlannedStockMovementsQuery(earliest, latest, prm, true, false, null), dataNameStkDue_Month09);
|
|
}
|
|
if (columns.HasId(SbmCommodity.Column.Stock_DueIn_Month10))
|
|
{
|
|
DateTime earliest = DateTime.Today.StartOfMonth().AddMonths(10);
|
|
DateTime latest = earliest.EndOfMonth();
|
|
query.Columns.Add(BuildPlannedStockMovementsQuery(earliest, latest, prm, true, false, null), dataNameStkDue_Month10);
|
|
}
|
|
if (columns.HasId(SbmCommodity.Column.Stock_DueIn_Month11))
|
|
{
|
|
DateTime earliest = DateTime.Today.StartOfMonth().AddMonths(11);
|
|
DateTime latest = earliest.EndOfMonth();
|
|
query.Columns.Add(BuildPlannedStockMovementsQuery(earliest, latest, prm, true, false, null), dataNameStkDue_Month11);
|
|
}
|
|
if (columns.HasId(SbmCommodity.Column.Stock_DueIn_Month12))
|
|
{
|
|
DateTime earliest = DateTime.Today.StartOfMonth().AddMonths(12);
|
|
DateTime latest = earliest.EndOfMonth();
|
|
query.Columns.Add(BuildPlannedStockMovementsQuery(earliest, latest, prm, true, false, null), dataNameStkDue_Month12);
|
|
}
|
|
if (columns.HasId(SbmCommodity.Column.Stock_DueIn_MonthTo03))
|
|
{
|
|
// Up to 3 months in future.
|
|
DateTime earliest = DateTime.MinValue;
|
|
DateTime latest = DateTime.Today.StartOfMonth().AddMonths(3).EndOfMonth();
|
|
query.Columns.Add(BuildPlannedStockMovementsQuery(earliest, latest, prm, true, false, null), dataNameStkDue_MonthTo03);
|
|
}
|
|
if (columns.HasId(SbmCommodity.Column.Stock_DueIn_MonthTo06))
|
|
{
|
|
// Up to 6 months in future.
|
|
DateTime earliest = DateTime.MinValue;
|
|
DateTime latest = DateTime.Today.StartOfMonth().AddMonths(6).EndOfMonth();
|
|
query.Columns.Add(BuildPlannedStockMovementsQuery(earliest, latest, prm, true, false, null), dataNameStkDue_MonthTo06);
|
|
}
|
|
if (columns.HasId(SbmCommodity.Column.Stock_DueIn_MonthTo09))
|
|
{
|
|
// Up to 9 months in future.
|
|
DateTime earliest = DateTime.MinValue;
|
|
DateTime latest = DateTime.Today.StartOfMonth().AddMonths(9).EndOfMonth();
|
|
query.Columns.Add(BuildPlannedStockMovementsQuery(earliest, latest, prm, true, false, null), dataNameStkDue_MonthTo09);
|
|
}
|
|
if (columns.HasId(SbmCommodity.Column.Stock_DueIn_MonthTo12))
|
|
{
|
|
// Up to 12 months in future.
|
|
DateTime earliest = DateTime.MinValue;
|
|
DateTime latest = DateTime.Today.StartOfMonth().AddMonths(12).EndOfMonth();
|
|
query.Columns.Add(BuildPlannedStockMovementsQuery(earliest, latest, prm, true, false, null), dataNameStkDue_MonthTo12);
|
|
}
|
|
if (columns.HasId(SbmCommodity.Column.Stock_DueIn_Month04To06))
|
|
{
|
|
DateTime earliest = DateTime.Today.StartOfMonth().AddMonths(4);
|
|
DateTime latest = earliest.AddMonths(2).EndOfMonth();
|
|
query.Columns.Add(BuildPlannedStockMovementsQuery(earliest, latest, prm, true, false, null), dataNameStkDue_Month04To06);
|
|
}
|
|
if (columns.HasId(SbmCommodity.Column.Stock_DueIn_Month07To09))
|
|
{
|
|
DateTime earliest = DateTime.Today.StartOfMonth().AddMonths(7);
|
|
DateTime latest = earliest.AddMonths(2).EndOfMonth();
|
|
query.Columns.Add(BuildPlannedStockMovementsQuery(earliest, latest, prm, true, false, null), dataNameStkDue_Month07To09);
|
|
}
|
|
if (columns.HasId(SbmCommodity.Column.Stock_DueIn_Month10To12))
|
|
{
|
|
DateTime earliest = DateTime.Today.StartOfMonth().AddMonths(10);
|
|
DateTime latest = earliest.AddMonths(2).EndOfMonth();
|
|
query.Columns.Add(BuildPlannedStockMovementsQuery(earliest, latest, prm, true, false, null), dataNameStkDue_Month10To12);
|
|
}
|
|
if (columns.HasId(SbmCommodity.Column.Stock_DueIn_Month07To12))
|
|
{
|
|
DateTime earliest = DateTime.Today.StartOfMonth().AddMonths(7);
|
|
DateTime latest = earliest.AddMonths(5).EndOfMonth();
|
|
query.Columns.Add(BuildPlannedStockMovementsQuery(earliest, latest, prm, true, false, null), dataNameStkDue_Month07To12);
|
|
}
|
|
if (columns.HasId(SbmCommodity.Column.Stock_DueIn_Month04On))
|
|
{
|
|
DateTime earliest = DateTime.Today.StartOfMonth().AddMonths(4);
|
|
DateTime latest = DateTime.MinValue;
|
|
query.Columns.Add(BuildPlannedStockMovementsQuery(earliest, latest, prm, true, false, null), dataNameStkDue_Month04On);
|
|
}
|
|
if (columns.HasId(SbmCommodity.Column.Stock_DueIn_Month05On))
|
|
{
|
|
DateTime earliest = DateTime.Today.StartOfMonth().AddMonths(5);
|
|
DateTime latest = DateTime.MinValue;
|
|
query.Columns.Add(BuildPlannedStockMovementsQuery(earliest, latest, prm, true, false, null), dataNameStkDue_Month05On);
|
|
}
|
|
if (columns.HasId(SbmCommodity.Column.Stock_DueIn_Month06On))
|
|
{
|
|
DateTime earliest = DateTime.Today.StartOfMonth().AddMonths(6);
|
|
DateTime latest = DateTime.MinValue;
|
|
query.Columns.Add(BuildPlannedStockMovementsQuery(earliest, latest, prm, true, false, null), dataNameStkDue_Month06On);
|
|
}
|
|
if (columns.HasId(SbmCommodity.Column.Stock_DueIn_Month07On))
|
|
{
|
|
DateTime earliest = DateTime.Today.StartOfMonth().AddMonths(7);
|
|
DateTime latest = DateTime.MinValue;
|
|
query.Columns.Add(BuildPlannedStockMovementsQuery(earliest, latest, prm, true, false, null), dataNameStkDue_Month07On);
|
|
}
|
|
if (columns.HasId(SbmCommodity.Column.Stock_DueIn_Month13On))
|
|
{
|
|
DateTime earliest = DateTime.Today.StartOfMonth().AddMonths(13);
|
|
DateTime latest = DateTime.MinValue;
|
|
query.Columns.Add(BuildPlannedStockMovementsQuery(earliest, latest, prm, true, false, null), dataNameStkDue_Month13On);
|
|
}
|
|
|
|
//---------------------------------------------------------------
|
|
// Stock provisionally due in:
|
|
if (columns.HasId(SbmCommodity.Column.Stock_DueIn_Provisional))
|
|
{
|
|
DateTime earliest = DateTime.MinValue;
|
|
DateTime latest = DateTime.MinValue;
|
|
query.Columns.Add(BuildPlannedStockMovementsQuery(earliest, latest, prm, true, false, null), dataNameStkDue_Provisional);
|
|
}
|
|
|
|
//---------------------------------------------------------------
|
|
// Stock allocated by future weeks.
|
|
if (columns.HasId(SbmCommodity.Column.Stock_Allocated_Week1))
|
|
{
|
|
DateTime earliest = DateTime.MinValue; // No earliest date - to pick up any past planned movements.
|
|
DateTime latest = DateTime.Today.StartOfWorkingWeek().AddDays(4); // End of this week (Monday + 4 = Friday).
|
|
query.Columns.Add(BuildPlannedStockMovementsQuery(earliest, latest, prm, true, false, null), dataNameStkAll_Week1);
|
|
}
|
|
if (columns.HasId(SbmCommodity.Column.Stock_Allocated_Week2))
|
|
{
|
|
DateTime earliest = DateTime.Today.StartOfWorkingWeek().AddDays(5); // From the Saturday following week 1.
|
|
DateTime latest = earliest.AddDays(6); // End of that week.
|
|
query.Columns.Add(BuildPlannedStockMovementsQuery(earliest, latest, prm, true, false, null), dataNameStkAll_Week2);
|
|
}
|
|
if (columns.HasId(SbmCommodity.Column.Stock_Allocated_Week3To4))
|
|
{
|
|
DateTime earliest = DateTime.Today.StartOfWorkingWeek().AddDays(12); // From the Saturday following week 2.
|
|
DateTime latest = earliest.AddDays(13);// End of the following week.
|
|
query.Columns.Add(BuildPlannedStockMovementsQuery(earliest, latest, prm, true, false, null), dataNameStkAll_Week3To4);
|
|
}
|
|
if (columns.HasId(SbmCommodity.Column.Stock_Allocated_Week5To6))
|
|
{
|
|
DateTime earliest = DateTime.Today.StartOfWorkingWeek().AddDays(26); // From the Saturday following week 4.
|
|
DateTime latest = earliest.AddDays(13);// End of the following week.
|
|
query.Columns.Add(BuildPlannedStockMovementsQuery(earliest, latest, prm, true, false, null), dataNameStkAll_Week5To6);
|
|
}
|
|
if (columns.HasId(SbmCommodity.Column.Stock_Allocated_Week7To8))
|
|
{
|
|
DateTime earliest = DateTime.Today.StartOfWorkingWeek().AddDays(40); // From the Saturday following week 6.
|
|
DateTime latest = earliest.AddDays(13);// End of the following week.
|
|
query.Columns.Add(BuildPlannedStockMovementsQuery(earliest, latest, prm, true, false, null), dataNameStkAll_Week7To8);
|
|
}
|
|
if (columns.HasId(SbmCommodity.Column.Stock_Allocated_Week9To10))
|
|
{
|
|
DateTime earliest = DateTime.Today.StartOfWorkingWeek().AddDays(54); // From the Saturday following week 8.
|
|
DateTime latest = earliest.AddDays(13);// End of the following week.
|
|
query.Columns.Add(BuildPlannedStockMovementsQuery(earliest, latest, prm, true, false, null), dataNameStkAll_Week9To10);
|
|
}
|
|
if (columns.HasId(SbmCommodity.Column.Stock_Allocated_Week11To12))
|
|
{
|
|
DateTime earliest = DateTime.Today.StartOfWorkingWeek().AddDays(68); // From the Saturday following week 10.
|
|
DateTime latest = earliest.AddDays(13);// End of the following week.
|
|
query.Columns.Add(BuildPlannedStockMovementsQuery(earliest, latest, prm, true, false, null), dataNameStkAll_Week11To12);
|
|
}
|
|
if (columns.HasId(SbmCommodity.Column.Stock_Allocated_Week13On))
|
|
{
|
|
DateTime earliest = DateTime.Today.StartOfWorkingWeek().AddDays(82); // From the Saturday following week 12.
|
|
DateTime latest = DateTime.MinValue;
|
|
query.Columns.Add(BuildPlannedStockMovementsQuery(earliest, latest, prm, true, false, null), dataNameStkAll_Week13On);
|
|
}
|
|
|
|
// Stock allocations by month:
|
|
if (columns.HasId(SbmCommodity.Column.Stock_Allocated_MonthCurrent))
|
|
{
|
|
DateTime earliest = DateTime.MinValue;
|
|
DateTime latest = DateTime.Today.StartOfMonth().EndOfMonth(); // End of current month.
|
|
query.Columns.Add(BuildPlannedStockMovementsQuery(earliest, latest, prm, true, false, null), dataNameStkAll_MonthCurr);
|
|
}
|
|
if (columns.HasId(SbmCommodity.Column.Stock_Allocated_Month01))
|
|
{
|
|
DateTime earliest = DateTime.Today.StartOfMonth().AddMonths(1); // Start of next month.
|
|
DateTime latest = earliest.EndOfMonth(); // End of next month.
|
|
query.Columns.Add(BuildPlannedStockMovementsQuery(earliest, latest, prm, true, false, null), dataNameStkAll_Month01);
|
|
}
|
|
if (columns.HasId(SbmCommodity.Column.Stock_Allocated_Month02))
|
|
{
|
|
DateTime earliest = DateTime.Today.StartOfMonth().AddMonths(2);
|
|
DateTime latest = earliest.EndOfMonth();
|
|
query.Columns.Add(BuildPlannedStockMovementsQuery(earliest, latest, prm, true, false, null), dataNameStkAll_Month02);
|
|
}
|
|
if (columns.HasId(SbmCommodity.Column.Stock_Allocated_Month03))
|
|
{
|
|
DateTime earliest = DateTime.Today.StartOfMonth().AddMonths(3);
|
|
DateTime latest = earliest.EndOfMonth();
|
|
query.Columns.Add(BuildPlannedStockMovementsQuery(earliest, latest, prm, true, false, null), dataNameStkAll_Month03);
|
|
}
|
|
if (columns.HasId(SbmCommodity.Column.Stock_Allocated_Month04))
|
|
{
|
|
DateTime earliest = DateTime.Today.StartOfMonth().AddMonths(4);
|
|
DateTime latest = earliest.EndOfMonth();
|
|
query.Columns.Add(BuildPlannedStockMovementsQuery(earliest, latest, prm, true, false, null), dataNameStkAll_Month04);
|
|
}
|
|
if (columns.HasId(SbmCommodity.Column.Stock_Allocated_Month05))
|
|
{
|
|
DateTime earliest = DateTime.Today.StartOfMonth().AddMonths(5);
|
|
DateTime latest = earliest.EndOfMonth();
|
|
query.Columns.Add(BuildPlannedStockMovementsQuery(earliest, latest, prm, true, false, null), dataNameStkAll_Month05);
|
|
}
|
|
if (columns.HasId(SbmCommodity.Column.Stock_Allocated_Month06))
|
|
{
|
|
DateTime earliest = DateTime.Today.StartOfMonth().AddMonths(6);
|
|
DateTime latest = earliest.EndOfMonth();
|
|
query.Columns.Add(BuildPlannedStockMovementsQuery(earliest, latest, prm, true, false, null), dataNameStkAll_Month06);
|
|
}
|
|
if (columns.HasId(SbmCommodity.Column.Stock_Allocated_Month07))
|
|
{
|
|
DateTime earliest = DateTime.Today.StartOfMonth().AddMonths(7);
|
|
DateTime latest = earliest.EndOfMonth();
|
|
query.Columns.Add(BuildPlannedStockMovementsQuery(earliest, latest, prm, true, false, null), dataNameStkAll_Month07);
|
|
}
|
|
if (columns.HasId(SbmCommodity.Column.Stock_Allocated_Month08))
|
|
{
|
|
DateTime earliest = DateTime.Today.StartOfMonth().AddMonths(8);
|
|
DateTime latest = earliest.EndOfMonth();
|
|
query.Columns.Add(BuildPlannedStockMovementsQuery(earliest, latest, prm, true, false, null), dataNameStkAll_Month08);
|
|
}
|
|
if (columns.HasId(SbmCommodity.Column.Stock_Allocated_Month09))
|
|
{
|
|
DateTime earliest = DateTime.Today.StartOfMonth().AddMonths(9);
|
|
DateTime latest = earliest.EndOfMonth();
|
|
query.Columns.Add(BuildPlannedStockMovementsQuery(earliest, latest, prm, true, false, null), dataNameStkAll_Month09);
|
|
}
|
|
if (columns.HasId(SbmCommodity.Column.Stock_Allocated_Month10))
|
|
{
|
|
DateTime earliest = DateTime.Today.StartOfMonth().AddMonths(10);
|
|
DateTime latest = earliest.EndOfMonth();
|
|
query.Columns.Add(BuildPlannedStockMovementsQuery(earliest, latest, prm, true, false, null), dataNameStkAll_Month10);
|
|
}
|
|
if (columns.HasId(SbmCommodity.Column.Stock_Allocated_Month11))
|
|
{
|
|
DateTime earliest = DateTime.Today.StartOfMonth().AddMonths(11);
|
|
DateTime latest = earliest.EndOfMonth();
|
|
query.Columns.Add(BuildPlannedStockMovementsQuery(earliest, latest, prm, true, false, null), dataNameStkAll_Month11);
|
|
}
|
|
if (columns.HasId(SbmCommodity.Column.Stock_Allocated_Month12))
|
|
{
|
|
DateTime earliest = DateTime.Today.StartOfMonth().AddMonths(12);
|
|
DateTime latest = earliest.EndOfMonth();
|
|
query.Columns.Add(BuildPlannedStockMovementsQuery(earliest, latest, prm, true, false, null), dataNameStkAll_Month12);
|
|
}
|
|
}
|
|
|
|
//---------------------------------------------------------------
|
|
// Requirements.
|
|
if (columns.HasId(SbmCommodity.Column.Reqnt_AmountUnit_Earliest_ById))
|
|
{
|
|
String qry =
|
|
"Select req3.AmountUnit " +
|
|
"From (Select Min(req1.Id) 'IdMin' From Requirement req1 Where req1.CommodityId=Commodity.Id Group By CommodityId) req2 " +
|
|
"Inner Join Requirement req3 on req3.Id=req2.IdMin";
|
|
query.Columns.Add("(" + qry + ")", dataNameRequirement_AmtUnitEarlId);
|
|
}
|
|
if (columns.HasId(SbmCommodity.Column.Reqnt_AmountUnit_Earliest_ByCode))
|
|
{
|
|
String sQry =
|
|
"Select req3.AmountUnit " +
|
|
"From (Select Min(req1.Id) 'IdMin' From Requirement req1 Where req1.ProductCode=Commodity.Code Group By ProductCode) req2 " +
|
|
"Inner Join Requirement req3 on req3.Id=req2.IdMin";
|
|
query.Columns.Add("(" + sQry + ")", dataNameRequirement_AmtUnitEarlCode);
|
|
}
|
|
|
|
//---------------------------------------------------------------
|
|
// Commodity Customer count.
|
|
if (columns.HasId(SbmCommodity.Column.CommodityCustomer_Count) && db.TableExists(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.CommodityCustomer)))
|
|
{
|
|
// Count the Customer items for this Commodity.
|
|
String aliasCommodityCustomerCount = "aCmdCust";
|
|
DbQuery qryProc = new DbQuery(db.DbmsType);
|
|
qryProc.Tables.Add(new StringPair(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.CommodityCustomer), aliasCommodityCustomerCount));
|
|
qryProc.Columns.Add("COUNT(*)");
|
|
qryProc.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.CommodityCustomer_CommodityId, aliasCommodityCustomerCount) + "=" + SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_Id, aliasCommodity));
|
|
qryProc.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.CommodityCustomer_Status, aliasCommodityCustomerCount) + " Not In ('" + StatusDeleted + "')");
|
|
query.Columns.Add("(" + qryProc.BuildQuery() + ")", dataNameCommodityCustomerCount);
|
|
}
|
|
// Commodity Supplier count.
|
|
if (columns.HasId(SbmCommodity.Column.CommoditySupplier_Count) && db.TableExists(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.CommoditySupplier)))
|
|
{
|
|
// Count the Supplier items for this Commodity.
|
|
String aliasCommoditySupplierCount = "aCmdCust";
|
|
DbQuery qryProc = new DbQuery(db.DbmsType);
|
|
qryProc.Tables.Add(new StringPair(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.CommoditySupplier), aliasCommoditySupplierCount));
|
|
qryProc.Columns.Add("COUNT(*)");
|
|
qryProc.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.CommoditySupplier_CommodityId, aliasCommoditySupplierCount) + "=" + SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_Id, aliasCommodity));
|
|
qryProc.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.CommoditySupplier_Status, aliasCommoditySupplierCount) + " Not In ('" + StatusDeleted + "')");
|
|
query.Columns.Add("(" + qryProc.BuildQuery() + ")", dataNameCommoditySupplierCount);
|
|
}
|
|
|
|
//---------------------------------------------------------------
|
|
// Process count.
|
|
if (columns.HasId(SbmCommodity.Column.Process_Count))
|
|
{
|
|
// Count the processes for this commodity (in the ItemLink table):
|
|
String aliasProcessCount = "aProc";
|
|
DbQuery qryProc = new DbQuery(db.DbmsType);
|
|
qryProc.Tables.Add(new StringPair(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.ItemLink), aliasProcessCount));
|
|
qryProc.Columns.Add("COUNT(*)");
|
|
qryProc.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.ItemLink_ItemTypeFrom, aliasProcessCount) + "=" + ((int)Sbm.ItemType.Commodity).ToString());
|
|
qryProc.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.ItemLink_ItemIdFrom, aliasProcessCount) + "=" + SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_Id, aliasCommodity));
|
|
qryProc.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.ItemLink_ItemTypeTo, aliasProcessCount) + "=" + ((int)Sbm.ItemType.Process).ToString());
|
|
query.Columns.Add("(" + qryProc.BuildQuery() + ")", dataNameProcessCount);
|
|
}
|
|
|
|
//---------------------------------------------------------------
|
|
// Portfolio item count.
|
|
if (columns.HasId(SbmCommodity.Column.PortfolioItem_Count))
|
|
{
|
|
// Count the portfolio items for this commodity.
|
|
String aliasPortfolioItemCount = "CmdPrtItm";
|
|
DbQuery qryPrtItm = new DbQuery(db.DbmsType);
|
|
qryPrtItm.Tables.Add(new StringPair(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.PortfolioItem), aliasPortfolioItemCount));
|
|
qryPrtItm.Columns.Add("COUNT(*)");
|
|
//qryPrtItm.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.PortfolioItem_ItemType,aliasCommodity_PortfolioItem)+"="+String(eSapItemTypeCommodity));
|
|
qryPrtItm.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.PortfolioItem_CommodityId, aliasPortfolioItemCount) + "=" + SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_Id, aliasCommodity));
|
|
query.Columns.Add("(" + qryPrtItm.BuildQuery() + ")", dataNamePortfolioItemCount);
|
|
}
|
|
|
|
//---------------------------------------------------------------
|
|
// Populate filter.
|
|
query.Filters.AddRange(GetCommodityQueryFilter(prm));
|
|
|
|
if (prm.IdsIncluded.Count != 1)
|
|
{
|
|
// Configure sort sequence.
|
|
foreach (String sortColumn in GetCommoditySortColumns(prm))
|
|
query.OrderBy.Add(sortColumn);
|
|
}
|
|
|
|
//---------------------------------------------------------------
|
|
return query;
|
|
}
|
|
|
|
//-------------------------------------------------------------------
|
|
}
|
|
//=======================================================================
|
|
}
|