3201 lines
222 KiB
C#
3201 lines
222 KiB
C#
using Sarand.BusinessMgr.Net.Standard.Base.App;
|
|
using Sarand.BusinessMgr.Net.Standard.Base.Bus;
|
|
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.ReferenceData;
|
|
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;
|
|
|
|
namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
|
|
{
|
|
//=======================================================================
|
|
partial class SbmTransactionMgr_Dbas
|
|
{
|
|
//*******************************************************************
|
|
// R e q u i r e m e n t
|
|
//*******************************************************************
|
|
// Utilities.
|
|
private List<StringPair> GetLogProperties(SbmRequirement requirement)
|
|
{
|
|
return new List<StringPair>()
|
|
{
|
|
new StringPair("Id",SysId.ToString(requirement.Id)),
|
|
new StringPair("DescBrief",requirement.DescBrief),
|
|
new StringPair("Status",requirement.StatusCode)
|
|
};
|
|
}
|
|
public override SbmRequirement CloneRequirement(SbmRequirement reqntSource, bool copyAddDescs)
|
|
{
|
|
SbmRequirement.Data data = CloneRequirement(reqntSource.GetData(), copyAddDescs);
|
|
SbmRequirement requirement = CreateRequirement(data.AssociationId, data.TransactionId, data.RequirementType);
|
|
requirement.SetData(data);
|
|
return requirement;
|
|
}
|
|
public override SbmRequirement.Data CloneRequirement(SbmRequirement.Data reqntSource, bool copyAddDescs)
|
|
{
|
|
ClearErrorState();
|
|
SbmRequirement.Data requirement = null;
|
|
if (reqntSource != null && SysId.IsValid(AffiliateId_Owner))
|
|
requirement = new SbmRequirement.Data();
|
|
else SetErrorState("owner not selected");
|
|
if (requirement != null)
|
|
{
|
|
requirement.AffiliateIdOwner = AffiliateId_Owner;
|
|
requirement.RequirementType = reqntSource.RequirementType;
|
|
requirement.Flags = reqntSource.Flags;
|
|
requirement.Seq = 0;
|
|
requirement.Required = reqntSource.Required;
|
|
requirement.Started = reqntSource.Started;
|
|
requirement.Completed = reqntSource.Completed;
|
|
requirement.AssociationIdSubContract = reqntSource.AssociationIdSubContract;
|
|
requirement.CommodityId = reqntSource.CommodityId;
|
|
requirement.ProductCode = reqntSource.ProductCode;
|
|
requirement.DescBrief = reqntSource.DescBrief;
|
|
if (copyAddDescs)
|
|
{
|
|
requirement.DescIntro = reqntSource.DescBrief;
|
|
requirement.DescOutline = reqntSource.DescOutline;
|
|
requirement.DescDetail = reqntSource.DescDetail;
|
|
}
|
|
requirement.Quantity = reqntSource.Quantity;
|
|
requirement.UomId = reqntSource.UomId;
|
|
requirement.QuantityProd = reqntSource.QuantityProd;
|
|
requirement.MaterialSourceCode = reqntSource.MaterialSourceCode;
|
|
requirement.AmountUnit = reqntSource.AmountUnit;
|
|
requirement.AmountAct = reqntSource.AmountAct;
|
|
requirement.AmountDisc = reqntSource.AmountDisc;
|
|
requirement.AmountNet = reqntSource.AmountNet;
|
|
requirement.TaxCodeId = reqntSource.TaxCodeId;
|
|
requirement.TaxRate = reqntSource.TaxRate;
|
|
requirement.AmountTax = reqntSource.AmountTax;
|
|
requirement.AmountTot = reqntSource.AmountTot;
|
|
requirement.TimeEst = reqntSource.TimeEst;
|
|
requirement.TimeAct = reqntSource.TimeAct;
|
|
//requirement.TimeTot = reqntSource.TimeTot;
|
|
requirement.Notes = reqntSource.Notes;
|
|
requirement.Status = reqntSource.Status;
|
|
}
|
|
return requirement;
|
|
}
|
|
|
|
public override bool CostColumnsAreAvailable()
|
|
{
|
|
if (!ColumnExists(SbmDbDfn.ColumnIdx.Requirement_PromotionCode)) return false;
|
|
if (!ColumnExists(SbmDbDfn.ColumnIdx.Requirement_UomIdWeight)) return false;
|
|
if (!ColumnExists(SbmDbDfn.ColumnIdx.Requirement_Weight)) return false;
|
|
if (!ColumnExists(SbmDbDfn.ColumnIdx.Requirement_TimeEstChunks)) return false; //Requirement_TimeEstChunks or TimeEst
|
|
if (!ColumnExists(SbmDbDfn.ColumnIdx.Requirement_TimeActChunks)) return false; //Requirement_TimeActChunks or TimAct
|
|
if (!ColumnExists(SbmDbDfn.ColumnIdx.Requirement_CostLabourHours)) return false;
|
|
if (!ColumnExists(SbmDbDfn.ColumnIdx.Requirement_CostLabourRateHour)) return false;
|
|
if (!ColumnExists(SbmDbDfn.ColumnIdx.Requirement_CostLabour)) return false;
|
|
if (!ColumnExists(SbmDbDfn.ColumnIdx.Requirement_CostCommodity)) return false;
|
|
if (!ColumnExists(SbmDbDfn.ColumnIdx.Requirement_CostPurchase)) return false;
|
|
if (!ColumnExists(SbmDbDfn.ColumnIdx.Requirement_CostProcess)) return false;
|
|
if (!ColumnExists(SbmDbDfn.ColumnIdx.Requirement_CostAdditional)) return false;
|
|
if (!ColumnExists(SbmDbDfn.ColumnIdx.Requirement_CostTotal)) return false;
|
|
if (!ColumnExists(SbmDbDfn.ColumnIdx.Requirement_CostCalculated)) return false;
|
|
return true;
|
|
}
|
|
|
|
//-------------------------------------------------------------------
|
|
// Associated data.
|
|
public override bool RequirementHasAssociatedRequirements(SysId requirementId)
|
|
{
|
|
ClearErrorState();
|
|
if (!SysId.IsValid(requirementId)) return SetErrorState("Invalid item specified");
|
|
String filter = SbmDbDfn.GetColumnName(SbmDbDfn.ColumnIdx.Requirement_ReqntIdSource) + "=" + SysId.ToString(requirementId);
|
|
long rowCount = Database.GetRowCount(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Requirement), filter);
|
|
SetErrorState(Database.ErrorStateMessage);
|
|
return rowCount > 0;
|
|
}
|
|
public override bool RequirementHasConstituents(SysId requirementId, Sbm.ConstituentType constituentType)
|
|
{
|
|
ClearErrorState();
|
|
List<String> filter = new List<String> { SbmDbDfn.GetColumnName(SbmDbDfn.ColumnIdx.Constituent_ReqntId) + "=" + SysId.ToString(requirementId) };
|
|
if (constituentType > 0)
|
|
filter.Add(SbmDbDfn.GetColumnName(SbmDbDfn.ColumnIdx.Constituent_Type) + "=" + ((int)constituentType).ToString());
|
|
long rowCount = Database.GetRowCount(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Constituent), filter.Concat(" AND ", "(", ")"));
|
|
SetErrorState(Database.ErrorStateMessage);
|
|
return rowCount > 0;
|
|
}
|
|
public override bool ClearRequirementDependentData(SysId requirementId, SysId commodityId)
|
|
{
|
|
ClearErrorState();
|
|
if (!SysId.IsValid(requirementId)) return SetErrorState("Invalid item specified");
|
|
// Clear any references to this requirement from other requirements.
|
|
if (!HasErrorState())
|
|
ClearRequirementAssociatedRequirements(requirementId);
|
|
// Delete any constituents that belong to this requirement.
|
|
if (!HasErrorState())
|
|
{
|
|
String filter = SbmDbDfn.GetColumnName(SbmDbDfn.ColumnIdx.Constituent_ReqntId) + "=" + SysId.ToString(requirementId);
|
|
int rowsDeleted = Database.ExecuteDelete(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Constituent), filter);
|
|
if (Database.HasErrorState())
|
|
{
|
|
String msg = "Failed to clear requirement constituents";
|
|
SaLogger.Warn($"{SysUtil.Fn} {msg}: {Database.ErrorStateMessage}. RequirentId: {SysId.ToString(requirementId)}.");
|
|
SetErrorState(msg);
|
|
}
|
|
}
|
|
// Clear stock movements.
|
|
if (!HasErrorState())
|
|
{
|
|
if (StockMgr.ClearMovementsForSourceItem(Sbm.ItemType.Requirement, requirementId))
|
|
{
|
|
// ToDo need to create CalculateStockLevels method in stockMgr
|
|
// StockMgr.CalculateStockLevels(commodityId);
|
|
}
|
|
}
|
|
// Delete any associated items links.
|
|
if (!HasErrorState())
|
|
{
|
|
if (DataItemMgr.ClearDataItem(Sbm.ItemType.Requirement, requirementId))
|
|
{
|
|
String msg = "failed to clear requirement item links";
|
|
SaLogger.Warn($"{SysUtil.Fn} {msg}: {DataItemMgr.ErrorStateMessage}. RequirentId: {requirementId}.");
|
|
SetErrorState(msg);
|
|
}
|
|
}
|
|
return !HasErrorState();
|
|
}
|
|
public override bool ClearRequirementAssociatedRequirements(SysId requirementId)
|
|
{
|
|
// Clear ReqntIdSource for any requirements that reference this one.
|
|
ClearErrorState();
|
|
if (!SysId.IsValid(requirementId)) return SetErrorState("Invalid item specified");
|
|
String filter = SbmDbDfn.GetColumnName(SbmDbDfn.ColumnIdx.Requirement_ReqntIdSource) + "=" + SysId.ToString(requirementId);
|
|
List<StringPair> values = new List<StringPair>();
|
|
SacsDatabase.AddValuePair(values, SbmDbDfn.GetColumnName(SbmDbDfn.ColumnIdx.Requirement_ReqntIdSource), "0", false);
|
|
Database.ExecuteUpdate(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Requirement), values, filter);
|
|
if (Database.HasErrorState())
|
|
SetErrorState("Failed to clear requirement references");
|
|
return !HasErrorState();
|
|
}
|
|
|
|
//-------------------------------------------------------------------
|
|
public override bool CalculateTotal(SbmRequirement.Data requirement)
|
|
{
|
|
ClearErrorState();
|
|
if (requirement == null) return SetErrorState("item not specified");
|
|
int decimalsCurrency = 2;
|
|
|
|
// Calculate intermediate amounts.
|
|
if (requirement.AmountAct == 0.0m)
|
|
requirement.AmountAct = Math.Round(requirement.AmountUnit * requirement.Quantity, decimalsCurrency);
|
|
if (requirement.AmountNet == 0.0m)
|
|
requirement.AmountNet = Math.Round(requirement.AmountAct - requirement.AmountDisc, decimalsCurrency);
|
|
|
|
// Calculate tax amount.
|
|
decimal amountNet = requirement.AmountNet;
|
|
decimal rateTax = 0.0m;
|
|
decimal amountTax = 0.0m;
|
|
if (Math.Abs(amountNet) > 0.001m && SysId.IsValid(requirement.TaxCodeId)) // Aug14 AWH Was 'if (fAmountNet > 0.0 && ...)'.
|
|
{
|
|
SaTaxCode taxCodeCalculate = FindTaxCodeById(requirement.TaxCodeId);
|
|
if (taxCodeCalculate != null)
|
|
{
|
|
// Calculate tax amount:
|
|
rateTax = taxCodeCalculate.TaxRate;
|
|
amountTax = amountNet * rateTax / 100.0m;
|
|
// Round the tax amount:
|
|
amountTax = Math.Round(amountTax, decimalsCurrency);
|
|
}
|
|
}
|
|
// Calculate total amount:
|
|
decimal amountTot = amountNet + amountTax;
|
|
requirement.TaxRate = rateTax;
|
|
requirement.AmountTax = Math.Round(amountTax, decimalsCurrency);
|
|
requirement.AmountTot = Math.Round(amountTot, decimalsCurrency);
|
|
return !HasErrorState();
|
|
}
|
|
|
|
//-------------------------------------------------------------------
|
|
// C o s t E s t i m a t e s
|
|
//-------------------------------------------------------------------
|
|
public override List<SbmCostEstimate> GetRequirementCostEstimates(SbmRequirement.Data requirement)
|
|
{
|
|
List<SbmCostEstimate> costEstimates = new List<SbmCostEstimate>();
|
|
if (!SysId.IsValid(requirement.Id)) return costEstimates;
|
|
|
|
SbmItemLink.Params prmConstituentItemLink = new SbmItemLink.Params
|
|
{
|
|
ItemLinkType = Sbm.ItemLinkType.Requirement_CostEstimate,
|
|
ItemTypeFrom = Sbm.ItemType.Requirement,
|
|
ItemIdFrom = requirement.Id
|
|
};
|
|
List<SbmItemLink> itemLinks = DataItemMgr.GetItemLinkList(prmConstituentItemLink);
|
|
if (itemLinks != null)
|
|
{
|
|
foreach (SbmItemLink itemLink in itemLinks)
|
|
{
|
|
if (itemLinks == null) continue;
|
|
SbmCostEstimate costEstimate = new SbmCostEstimate(UserContext, itemLink.DataContent);
|
|
costEstimate.Notes = itemLink.Notes;
|
|
costEstimate.Changed = false;
|
|
costEstimates.Add(costEstimate);
|
|
}
|
|
// Clean-up:
|
|
itemLinks.Clear();
|
|
}
|
|
costEstimates.Sort();
|
|
return costEstimates;
|
|
}
|
|
|
|
//-------------------------------------------------------------------
|
|
// P r o c e s s e s
|
|
//-------------------------------------------------------------------
|
|
public override List<SbmItemProcess> GetRequirementItemProcesses(SbmRequirement.Data requirement)
|
|
{
|
|
List<SbmItemProcess> itemProcesses = new List<SbmItemProcess>();
|
|
if (SysId.IsValid(requirement.Id))
|
|
{
|
|
// Requirement processes are held as constituents against the requirement.
|
|
SbmConstituent.Params prmConstituent = new SbmConstituent.Params();
|
|
prmConstituent.ConstituentType = Sbm.ConstituentType.Process;
|
|
prmConstituent.ReqntId = requirement.Id;
|
|
foreach (SbmConstituent constituent in TransactionMgr.GetConstituentList(prmConstituent))
|
|
{
|
|
// ToDo need to create SbmProcessMgr_Dbas-ItemProcess for CreateItemProcess
|
|
SbmItemProcess itemProcess = ProcessMgr.CreateItemProcessForConstituent(constituent);
|
|
// Verify that the process is not already in the list.
|
|
itemProcess = itemProcesses.Find(item => item.ProcessId.Equals(constituent.ProcessId));
|
|
if (itemProcess != null)
|
|
itemProcesses.Add(itemProcess);
|
|
}
|
|
itemProcesses.Sort();
|
|
}
|
|
return itemProcesses;
|
|
}
|
|
|
|
//-------------------------------------------------------------------
|
|
public override void PopulateLocationIdLists()
|
|
{
|
|
if (locationIdListsPopulated) return;
|
|
|
|
// Verify that the location table exists.
|
|
String locationTable = SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Location);
|
|
if (!Database.TableExists(locationTable)) return;
|
|
|
|
locationIdListsPopulated = 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 qryLoc1 = new DbQuery(Database.DbmsType);
|
|
qryLoc1.Tables.Add(locationTable);
|
|
qryLoc1.Columns.Add(colLocation_Id);
|
|
qryLoc1.Columns.Add(colLocation_Flags);
|
|
qryLoc1.Columns.Add(colLocation_Status);
|
|
qryLoc1.Filters.Add(colLocation_AffIdOwner + "=" + AffiliateId_Owner.ToString());
|
|
using (DbResultSet dbResultSet = DbResultSet_DataReader.ExecuteQuery(Database, qryLoc1.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 > 1)
|
|
{
|
|
// Assume that all locations are for sales.
|
|
locationIds_Sales = new HashSet<SysId>(locationIds_NonSales);
|
|
locationIds_NonSales.Clear();
|
|
}
|
|
}
|
|
// Set the correct tax code corresponding with the date specified:
|
|
public override bool SetTaxCode(SbmRequirement requirement, DateTime effective)
|
|
{
|
|
ClearErrorState();
|
|
if (requirement == null) return SetErrorState("item not specified");
|
|
if (!effective.IsValid()) return SetErrorState("invalid effective date specified");
|
|
|
|
// Locate the specified tax code in the list:
|
|
String taxCode = SaReferenceDataConsole.GetTaxCode(SaTaxCodeType.Std);
|
|
SysId taxCodeId = requirement.TaxCodeId;
|
|
if (SysId.IsValid(taxCodeId))
|
|
{
|
|
SaTaxCode taxCodeById = FindTaxCodeById(taxCodeId);
|
|
if (taxCodeById != null)
|
|
taxCode = taxCodeById.Code;
|
|
}
|
|
SaTaxCode taxCodeApplicable = null;
|
|
if (!taxCode.IsEmpty())
|
|
{
|
|
taxCodeApplicable = FindTaxCodeEffectiveOn(taxCode, effective);
|
|
if (taxCodeApplicable == null)
|
|
SetErrorState("No effective tax code available for '" + taxCode + "'");
|
|
}
|
|
if (taxCodeApplicable != null)
|
|
requirement.TaxCodeId = taxCodeApplicable.Id;
|
|
return !HasErrorState();
|
|
}
|
|
|
|
//-------------------------------------------------------------------
|
|
// Exists Requirement.
|
|
public override bool RequirementsExistByParams(SbmRequirement.Params prmRequirement)
|
|
{
|
|
ClearErrorState();
|
|
String filter = GetRequirementQueryFilter(prmRequirement).Concat(" AND ", "(", ")");
|
|
return Database.GetRowCount(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Requirement), filter) > 0;
|
|
}
|
|
|
|
//-------------------------------------------------------------------
|
|
// Get Requirement.
|
|
public override SbmRequirement GetRequirement(SbmRequirement.Params prm)
|
|
{
|
|
return GetRequirement(GetRequirementQueryFilter(prm).Concat(" AND ", "(", ")"));
|
|
}
|
|
private SbmRequirement GetRequirement(String filter)
|
|
{
|
|
ClearErrorState();
|
|
long count = GetRequirementCount(filter);
|
|
if (count == 0) return null;
|
|
if (count != 1)
|
|
{
|
|
SetErrorState("Multiple Requirements found");
|
|
return null;
|
|
}
|
|
SbmRequirement prmRequirement = null;
|
|
// Query data.
|
|
using (var dbConnection = Database.CreateConnection())
|
|
using (var dbCommand = dbConnection.CreateCommand())
|
|
{
|
|
try
|
|
{
|
|
dbConnection.Open();
|
|
Requirement_Db dbRequirement = new Requirement_Db(DbInfo);
|
|
dbRequirement.PopulateFrom(dbCommand, aliasRequirement, filter);
|
|
prmRequirement = CreateRequirement(dbRequirement);
|
|
}
|
|
catch (Exception exc)
|
|
{
|
|
SetErrorState("Database query exception");
|
|
SaLogger.Warn($"{SysUtil.Fn}\n\tQuery: {dbCommand.CommandText}\n\t{ExceptionUtil.GetErrorStateMessage(exc)}");
|
|
}
|
|
}
|
|
return prmRequirement;
|
|
}
|
|
|
|
//-------------------------------------------------------------------
|
|
// Create Requirement.
|
|
public override SbmRequirement CreateRequirement(SysId assocId, SysId transId, Sbm.RequirementType requirementType)
|
|
{
|
|
ClearErrorState();
|
|
SbmRequirement requirement = null;
|
|
if (SysId.IsValid(assocId) && SysId.IsValid(transId) && requirementType > 0)
|
|
requirement = new SbmRequirement_Dbas(Internals, new SysId(), AffiliateId_Owner, assocId, transId, requirementType, 0);
|
|
else SetErrorState("Asset type not identified");
|
|
return requirement;
|
|
}
|
|
private SbmRequirement_Dbas CreateRequirement(Requirement_Db dbRequirement)
|
|
{
|
|
ClearErrorState();
|
|
SbmRequirement_Dbas requirement = new SbmRequirement_Dbas(Internals, new SysId(dbRequirement._Id), new SysId(dbRequirement._AffIdOwner), new SysId(dbRequirement._AssocId ?? 0), new SysId(dbRequirement._TransId ?? 0), (Sbm.RequirementType)dbRequirement._Type, (ushort)dbRequirement._Flags);
|
|
PopulateFrom(dbRequirement, requirement);
|
|
return requirement;
|
|
}
|
|
|
|
//-------------------------------------------------------------------
|
|
// Validate Requirement.
|
|
public override bool IsValidRequirementData(SbmRequirement.Data data, SbmRequirement.ErrField errField)
|
|
{
|
|
ClearErrorState();
|
|
if (!base.IsValidRequirementData(data, errField)) return false;
|
|
return true;
|
|
}
|
|
|
|
//-------------------------------------------------------------------
|
|
// Insert Requirement.
|
|
public override bool InsertRequirement(SbmRequirement requirement, DbUpdateInfo dbUpdateInfo)
|
|
{
|
|
ClearErrorState();
|
|
if (!IsValidRequirement(requirement)) return false;
|
|
if (SysId.IsValid(requirement.Id)) return SetErrorState(ErrorMessage.ValiditemId);
|
|
using (var dbConnection = Database.CreateConnection())
|
|
using (var dbCommand = dbConnection.CreateCommand())
|
|
{
|
|
try
|
|
{
|
|
dbConnection.Open();
|
|
Requirement_Db dbRequirement = new Requirement_Db(DbInfo);
|
|
PopulateTo(dbRequirement, requirement, dbUpdateInfo);
|
|
if (Requirement_Db.FieldsNonId.Contains("Id"))
|
|
{
|
|
// Generate next Id.
|
|
dbRequirement._Id = SysId.ToInt(Database.GetNextId("Requirement", dbUpdateInfo));
|
|
}
|
|
dbRequirement.ExecuteInsertCommand(dbCommand);
|
|
requirement.Id = new SysId(dbRequirement._Id);
|
|
requirement.Changed = false;
|
|
if (DebugMode) SaLogger.Debug($"{SysUtil.Fn} Inserted. " + GetLogProperties(requirement).Concat(": ").Concat("", "\n\t"));
|
|
}
|
|
catch (Exception exc) { SetErrorState(exc.Message); }
|
|
}
|
|
return !HasErrorState();
|
|
}
|
|
|
|
//-------------------------------------------------------------------
|
|
// Update Requirement.
|
|
public override bool UpdateRequirement(SbmRequirement requirement, DbUpdateInfo dbUpdateInfo)
|
|
{
|
|
ClearErrorState();
|
|
if (!IsValidRequirement(requirement)) return false;
|
|
if (!SysId.IsValid(requirement.Id)) return SetErrorState(ErrorMessage.InvalidItemId);
|
|
if (!requirement.Changed)
|
|
{
|
|
if (DebugMode) SaLogger.Debug($"{SysUtil.Fn} Data not changed. " + GetLogProperties(requirement).Concat(": ").Concat("", "\n\t"));
|
|
return true;
|
|
}
|
|
using (var dbConnection = Database.CreateConnection())
|
|
using (var dbCommand = dbConnection.CreateCommand())
|
|
{
|
|
try
|
|
{
|
|
// Retrieve Requirement.
|
|
dbConnection.Open();
|
|
Requirement_Db dbRequirement = new Requirement_Db(DbInfo);
|
|
dbRequirement.PopulateFrom(dbCommand, aliasRequirement, "Id=" + SysId.ToString(requirement.Id));
|
|
SbmUpdateLogItemMonitor_Requirement updateLogMonitor = new SbmUpdateLogItemMonitor_Requirement(Internals, CreateRequirement(dbRequirement));
|
|
|
|
// Update properties.
|
|
PopulateTo(dbRequirement, requirement, dbUpdateInfo);
|
|
dbRequirement.ExecuteUpdateCommand(dbCommand);
|
|
requirement.Changed = false;
|
|
if (DebugMode) SaLogger.Debug($"{SysUtil.Fn} Updated. " + GetLogProperties(requirement).Concat(": ").Concat("", "\n\t"));
|
|
|
|
// Record updates.
|
|
updateLogMonitor.RecordUpdatedValues(requirement);
|
|
updateLogMonitor.LogUpdates();
|
|
}
|
|
catch (Exception exc) { SetErrorState(exc.Message); }
|
|
}
|
|
return !HasErrorState();
|
|
}
|
|
|
|
//-------------------------------------------------------------------
|
|
// Delete Requirement.
|
|
public override bool RequirementCanBeDeleted(SbmRequirement.Data requirement, Sbm.TransactionType transactionType)
|
|
{
|
|
if (!base.RequirementCanBeDeleted(requirement, transactionType)) return false;
|
|
return true;
|
|
}
|
|
public override bool DeleteRequirement(SbmRequirement requirement, Sbm.TransactionType transactionType, DbUpdateInfo dbUpdateInfo)
|
|
{
|
|
ClearErrorState();
|
|
if (!RequirementCanBeDeleted(requirement, transactionType)) return false;
|
|
using (var dbConnection = Database.CreateConnection())
|
|
using (var dbCommand = dbConnection.CreateCommand())
|
|
{
|
|
try
|
|
{
|
|
// Retrieve prmRequirement.
|
|
dbConnection.Open();
|
|
Requirement_Db dbRequirement = new Requirement_Db(DbInfo);
|
|
dbRequirement.PopulateFrom(dbCommand, aliasRequirement, "Id=" + requirement.Id.ToString());
|
|
// Delete prmRequirement.
|
|
dbCommand.CommandType = System.Data.CommandType.Text;
|
|
dbCommand.CommandText = "DELETE FROM " + SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Requirement) + " WHERE Id=" + SysId.ToString(requirement.Id) + ";";
|
|
dbCommand.ExecuteNonQuery();
|
|
requirement.Changed = false;
|
|
if (DebugMode) SaLogger.Debug($"{SysUtil.Fn} Deleted. " + GetLogProperties(requirement).Concat(": ").Concat("", "\n\t"));
|
|
}
|
|
catch (Exception exc) { SetErrorState(exc.Message); }
|
|
}
|
|
return !HasErrorState();
|
|
}
|
|
|
|
//-------------------------------------------------------------------
|
|
// Copy data properties to and from database.
|
|
private void PopulateTo(Requirement_Db dbRequirement, SbmRequirement requirement, DbUpdateInfo dbUpdateInfo)
|
|
{
|
|
dbRequirement._Id = requirement.Id.ToInt();
|
|
dbRequirement._AffIdOwner = requirement.AffiliateIdOwner.ToInt();
|
|
dbRequirement._AssocId = requirement.AssociationId.ToInt();
|
|
dbRequirement._TransId = requirement.TransactionId.ToInt();
|
|
dbRequirement._Type = (short)requirement.RequirementType;
|
|
dbRequirement._Seq = requirement.Seq;
|
|
dbRequirement._ReqntIdSource = requirement.RequirementIdSource.ToInt();
|
|
dbRequirement._Required = requirement.Required;
|
|
dbRequirement._Started = requirement.Started;
|
|
dbRequirement._Completed = requirement.Completed;
|
|
dbRequirement._JobNumber = requirement.JobNumber;
|
|
dbRequirement._AssIdSubcontract = requirement.AssociationIdSubContract.ToInt();
|
|
dbRequirement._CommodityId = requirement.CommodityId.ToInt();
|
|
dbRequirement._ProductCode = requirement.ProductCode;
|
|
dbRequirement._AssetId = requirement.AssetId.ToInt();
|
|
dbRequirement._DescBrief = requirement.DescBrief;
|
|
dbRequirement._DescIntro = requirement.DescIntro;
|
|
dbRequirement._DescOutline = requirement.DescOutline;
|
|
dbRequirement._DescDetail = requirement.DescDetail;
|
|
dbRequirement._PromotionCode = requirement.PromotionCode;
|
|
dbRequirement._NominalCode = requirement.NominalCode;
|
|
dbRequirement._Quantity = requirement.Quantity;
|
|
dbRequirement._QuantityProd = requirement.QuantityProd;
|
|
dbRequirement._UomId = requirement.UomId.ToInt();
|
|
dbRequirement._MaterialSourceCode = requirement.MaterialSourceCode;
|
|
dbRequirement._AmountUnit = requirement.AmountUnit;
|
|
dbRequirement._AmountAct = requirement.AmountAct;
|
|
dbRequirement._AmountDisc = requirement.AmountDisc;
|
|
dbRequirement._AmountNet = requirement.AmountNet;
|
|
dbRequirement._TaxCodeId = requirement.TaxCodeId.ToInt();
|
|
dbRequirement._TaxRate = requirement.TaxRate;
|
|
dbRequirement._AmountTax = requirement.AmountTax;
|
|
dbRequirement._AmountTot = requirement.AmountTot;
|
|
dbRequirement._TimeEst = requirement.TimeEst;
|
|
dbRequirement._TimeAct = requirement.TimeAct;
|
|
dbRequirement._TimeTot = requirement.TimeTot;
|
|
dbRequirement._LocationIdStock = requirement.LocationIdStock.ToInt();
|
|
dbRequirement._CostLabourHours = requirement.CostLabourHours;
|
|
dbRequirement._CostLabourRateHour = requirement.CostLabourRateHour;
|
|
dbRequirement._CostLabour = requirement.CostLabour;
|
|
dbRequirement._CostCommodity = requirement.CostCommodity;
|
|
dbRequirement._CostPurchase = requirement.CostPurchase;
|
|
dbRequirement._CostProcess = requirement.CostProcess;
|
|
dbRequirement._CostAdditional = requirement.CostAdditional;
|
|
dbRequirement._CostTotal = requirement.CostTotal;
|
|
dbRequirement._CostCalculated = requirement.CostCalculated;
|
|
// Common properties.
|
|
dbRequirement._Notes = requirement.Notes;
|
|
dbRequirement._Status = SacsSystem.GetStatusCode(requirement.Status);
|
|
dbRequirement._Flags = (short)requirement.Flags;
|
|
if (!SysId.IsValid(requirement.Id))
|
|
{
|
|
dbRequirement._CreateOn = DateTime.UtcNow;
|
|
dbRequirement._CreateBy = dbUpdateInfo.UserId.ToInt();
|
|
dbRequirement._CreateHost = dbUpdateInfo.Host;
|
|
}
|
|
dbRequirement._UpdateOn = DateTime.UtcNow;
|
|
dbRequirement._UpdateBy = dbUpdateInfo.UserId.ToInt();
|
|
dbRequirement._UpdateHost = dbUpdateInfo.Host;
|
|
}
|
|
private void PopulateFrom(Requirement_Db dbRequirement, SbmRequirement requirement)
|
|
{
|
|
//requirement.Id = new SysId(dbRequirement._Id);
|
|
requirement.AffiliateIdOwner = new SysId(dbRequirement._AffIdOwner);
|
|
requirement.AssociationId = new SysId(dbRequirement._AssocId ?? 0);
|
|
requirement.TransactionId = new SysId(dbRequirement._TransId ?? 0);
|
|
requirement.RequirementType = (Sbm.RequirementType)(dbRequirement._Type ?? 0);
|
|
requirement.Seq = dbRequirement._Seq ?? 0;
|
|
requirement.RequirementIdSource = new SysId(dbRequirement._ReqntIdSource ?? 0);
|
|
requirement.Required = dbRequirement._Required ?? default(DateTime);
|
|
requirement.Started = dbRequirement._Started ?? default(DateTime);
|
|
requirement.Completed = dbRequirement._Completed ?? default(DateTime);
|
|
requirement.JobNumber = dbRequirement._JobNumber;
|
|
requirement.AssociationIdSubContract = new SysId(dbRequirement._AssIdSubcontract ?? 0);
|
|
requirement.CommodityId = new SysId(dbRequirement._CommodityId ?? 0);
|
|
requirement.ProductCode = dbRequirement._ProductCode;
|
|
requirement.AssetId = new SysId(dbRequirement._AssetId ?? 0);
|
|
requirement.DescBrief = dbRequirement._DescBrief;
|
|
requirement.DescIntro = dbRequirement._DescIntro;
|
|
requirement.DescOutline = dbRequirement._DescOutline;
|
|
requirement.DescDetail = dbRequirement._DescDetail;
|
|
requirement.PromotionCode = dbRequirement._PromotionCode;
|
|
requirement.NominalCode = dbRequirement._NominalCode;
|
|
requirement.Quantity = (decimal)dbRequirement._Quantity;
|
|
requirement.QuantityProd = (decimal)dbRequirement._QuantityProd;
|
|
requirement.UomId = new SysId(dbRequirement._UomId ?? 0);
|
|
requirement.MaterialSourceCode = dbRequirement._MaterialSourceCode;
|
|
requirement.AmountNet = (decimal)dbRequirement._AmountNet;
|
|
requirement.TaxCodeId = new SysId(dbRequirement._TaxCodeId ?? 0);
|
|
requirement.TaxRate = (decimal)dbRequirement._TaxRate;
|
|
requirement.AmountTax = (decimal)dbRequirement._AmountTax;
|
|
requirement.AmountTot = (decimal)dbRequirement._AmountTot;
|
|
requirement.TimeEst = (decimal)dbRequirement._TimeEst;
|
|
requirement.TimeAct = (decimal)dbRequirement._TimeAct;
|
|
requirement.TimeTot = (decimal)dbRequirement._TimeTot;
|
|
requirement.LocationIdStock = new SysId(dbRequirement._LocationIdStock ?? 0);
|
|
requirement.CostLabourHours = dbRequirement._CostLabourHours ?? 0.0m;
|
|
requirement.CostLabourRateHour = dbRequirement._CostLabourRateHour ?? 0.0m;
|
|
requirement.CostLabour = dbRequirement._CostLabour ?? 0.0m;
|
|
requirement.CostCommodity = dbRequirement._CostCommodity ?? 0.0m;
|
|
requirement.CostPurchase = dbRequirement._CostPurchase ?? 0.0m;
|
|
requirement.CostProcess = dbRequirement._CostProcess ?? 0.0m;
|
|
requirement.CostAdditional = dbRequirement._CostAdditional ?? 0.0m;
|
|
requirement.CostTotal = dbRequirement._CostTotal ?? 0.0m;
|
|
requirement.CostCalculated = dbRequirement._CostCalculated ?? default(DateTime);
|
|
// Common properties.
|
|
requirement.Notes = dbRequirement._Notes;
|
|
requirement.Status = SacsSystem.GetStatusForCode(dbRequirement._Status);
|
|
requirement.SetCreateStamp(dbRequirement._CreateOn ?? default(DateTime), new SysId(dbRequirement._CreateBy ?? 0), dbRequirement._CreateHost);
|
|
requirement.SetUpdateStamp(dbRequirement._UpdateOn ?? default(DateTime), new SysId(dbRequirement._UpdateBy ?? 0), dbRequirement._UpdateHost);
|
|
requirement.AcceptChanges();
|
|
}
|
|
|
|
//-------------------------------------------------------------------
|
|
// Column definitions.
|
|
private static readonly String aliasRequirement = "aReqnt";
|
|
private static readonly String aliasRequirement_AffiliateOwner = "Req_AffOwn";
|
|
private static readonly String prefixRequirement_AffiliateOwner = aliasRequirement_AffiliateOwner + "_";
|
|
private static readonly String aliasRequirement_AssAffTarget = "Req_AssTgt";
|
|
private static readonly String prefixRequirement_AssAffTarget = aliasRequirement_AssAffTarget + "_";
|
|
private static readonly String aliasRequirement_AffiliateTarget = "Req_AffTgt";
|
|
private static readonly String prefixRequirement_AffiliateTarget = aliasRequirement_AffiliateTarget + "_";
|
|
private static readonly String aliasRequirement_AddressTarget = "Req_AddTgt";
|
|
private static readonly String prefixRequirement_AddressTarget = aliasRequirement_AddressTarget + "_";
|
|
private static readonly String aliasRequirement_Association = "Req_Ass";
|
|
private static readonly String prefixRequirement_Association = aliasRequirement_Association + "_";
|
|
private static readonly String aliasRequirement_Transaction = "Req_Tra";
|
|
private static readonly String prefixRequirement_Transaction = aliasRequirement_Transaction + "_";
|
|
private static readonly String aliasRequirement_SourceTransaction = "Req_SrcTra";
|
|
private static readonly String prefixRequirement_SourceTransaction = aliasRequirement_SourceTransaction + "_";
|
|
private static readonly String aliasRequirement_DeliveryTaxcode = "Req_DelTxc";
|
|
private static readonly String prefixRequirement_DeliveryTaxcode = aliasRequirement_DeliveryTaxcode + "_";
|
|
private static readonly String aliasRequirement_Currency = "Req_Cur";
|
|
private static readonly String prefixRequirement_Currency = aliasRequirement_Currency + "_";
|
|
private static readonly String aliasRequirement_DeliveryAddress = "Req_DelAdd";
|
|
private static readonly String prefixRequirement_DeliveryAddress = aliasRequirement_DeliveryAddress + "_";
|
|
private static readonly String aliasRequirement_SourceRequirement = "Req_SrcReqnt";
|
|
private static readonly String prefixRequirement_SourceRequirement = aliasRequirement_SourceRequirement + "_";
|
|
private static readonly String aliasRequirement_SourceRequirementTransaction = "Req_SrcReqntTrans";
|
|
private static readonly String prefixRequirement_SourceRequirementTransaction = aliasRequirement_SourceRequirementTransaction + "_";
|
|
private static readonly String aliasRequirement_UnitOfMeasure = "Req_Uom";
|
|
private static readonly String prefixRequirement_UnitOfMeasure = aliasRequirement_UnitOfMeasure + "_";
|
|
private static readonly String aliasRequirement_Taxcode = "Req_Txc";
|
|
private static readonly String prefixRequirement_Taxcode = aliasRequirement_Taxcode + "_";
|
|
private static readonly String aliasRequirement_Commodity = "Req_Cmd";
|
|
private static readonly String prefixRequirement_Commodity = aliasRequirement_Commodity + "_";
|
|
private static readonly String aliasRequirement_CommodityCustomer = "Req_CmdCust";
|
|
private static readonly String prefixRequirement_CommodityCustomer = aliasRequirement_CommodityCustomer + "_";
|
|
private static readonly String aliasRequirement_Process = "Req_Proc";
|
|
private static readonly String prefixRequirement_Process = aliasRequirement_Process + "_";
|
|
private static readonly String aliasRequirment_ContainerItem = "Req_CntItm";
|
|
private static readonly String prefixRequirement_ContainerItem = aliasRequirment_ContainerItem + "_";
|
|
private static readonly String aliasAssociated_ItemLink = "Req_AssItmLnk";
|
|
private static readonly String prefixAssociated_ItemLink = aliasAssociated_ItemLink + "_";
|
|
private static readonly String aliasAssociated_Requirement = "Req_AssReq";
|
|
private static readonly String prefixAssociated_Requirement = aliasAssociated_Requirement + "_";
|
|
private static readonly String aliasAssociated_Requirement_Transaction = "aAssReqTra";
|
|
private static readonly String prefixAssociated_Requirement_Transaction = aliasAssociated_Requirement_Transaction + "_";
|
|
private static readonly String aliasAssociated_Requirement_Transaction_Association = "aAssReqTraAssoc";
|
|
private static readonly String prefixAssociated_Requirement_Transaction_Association = aliasAssociated_Requirement_Transaction_Association + "_";
|
|
private static readonly String aliasAssociated_Requirement_Transaction_AffiliateTarget = "aAssReqTraAffTgt";
|
|
private static readonly String prefixAssociated_Requirement_Transaction_AffiliateTarget = aliasAssociated_Requirement_Transaction_AffiliateTarget + "_";
|
|
private static readonly String aliasRequirment_ConstituentTime = "Req_ConTim";
|
|
private static readonly String prefixRequirement_ConstituentTime = aliasRequirment_ConstituentTime + "_";
|
|
private static readonly String aliasRequirment_ConstituentTime_AffiliateTarget = "Req_ConTimAffTgt";
|
|
private static readonly String prefixRequirement_ConstituentTime_AffiliateTarget = aliasRequirment_ConstituentTime_AffiliateTarget + "_";
|
|
private static readonly String aliasRequirment_SourceRequirementInvoice = "Req_SrcReqntInv";
|
|
private static readonly String aliasRequirment_SourceRequirementDispatched = "Req_SrcReqntDisp";
|
|
private static readonly String aliasRequirment_ConstProc = "Req_ConstProc";
|
|
private static readonly String prefixRequirement_LinkProcess = "ReqLnkPrc_";
|
|
|
|
// Column definition population.
|
|
private void SetRequirementColDfn
|
|
(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.Requirement)
|
|
alias = aliasRequirement;
|
|
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 Requirement column definition.
|
|
private static string transCostTotal = "TraReqCount";
|
|
private static string transReqntCount = "TraReqCount";
|
|
private static string quantityTotalByCmd = "QtyTotalByCmd";
|
|
private static string quantityDispatch = "QtyDisp";
|
|
private static string quantityInvoice = "QtyInv";
|
|
private static string cntItmCount = "CntItmCount";
|
|
private static string reqStockCurrent = "StkCurr";
|
|
private static string reqStockSalesLoc01 = "StkSalLoc01";
|
|
private static string reqStockSalesLoc02 = "StkSalLoc02";
|
|
private static string reqStockSalesLoc03 = "StkSalLoc03";
|
|
private static string reqStockDueImmin = "StkDueImm";
|
|
private static string reqStockAllocated = "StkAlloc";
|
|
private static string assocReqntRefCount = "AssReqRefCount";
|
|
|
|
public override ColumnDfn GetRequirementColumnDfn(SbmRequirement.Column column, string caption = "", int width = 0)
|
|
{
|
|
bool canViewSupplyFinancials = UserCanViewCommoditySupplyFinancials();
|
|
bool canViewSalesFinancials = UserCanViewCommoditySalesFinancials();
|
|
ColumnDfn columnDfn = new ColumnDfn((int)column, caption, width);
|
|
switch (column)
|
|
{
|
|
case SbmRequirement.Column.Pos:
|
|
SetRequirementColDfn(columnDfn, "Pos", 45, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right);
|
|
columnDfn.SortMode = ColumnDfn.ColumnSortMode.Off;
|
|
columnDfn.ReadOnly = true;
|
|
columnDfn.Resizable = false;
|
|
break;
|
|
case SbmRequirement.Column.Id:
|
|
SetRequirementColDfn(columnDfn, "Id", 60, SbmDbDfn.ColumnIdx.Requirement_Id, ColumnAlignment.Right, DataValue.DataType.Long);
|
|
columnDfn.ReadOnly = true;
|
|
break;
|
|
|
|
// Requirement Properties.
|
|
case SbmRequirement.Column.TransId:
|
|
SetRequirementColDfn(columnDfn, "Trans Id", 80, SbmDbDfn.ColumnIdx.Requirement_TransId, ColumnAlignment.Right, DataValue.DataType.Long);
|
|
break;
|
|
case SbmRequirement.Column.Seq:
|
|
SetRequirementColDfn(columnDfn, "Seq", 50, SbmDbDfn.ColumnIdx.Requirement_Seq, ColumnAlignment.Right, DataValue.DataType.String);
|
|
break;
|
|
case SbmRequirement.Column.Started:
|
|
SetRequirementColDfn(columnDfn, "Started", 65, SbmDbDfn.ColumnIdx.Requirement_Started, ColumnAlignment.Center, DataValue.DataType.Date);
|
|
columnDfn.DateFormat = "d-MMM-yy";
|
|
break;
|
|
case SbmRequirement.Column.StartedTime:
|
|
SetRequirementColDfn(columnDfn, "at", 60, SbmDbDfn.ColumnIdx.Requirement_Started, ColumnAlignment.Center, DataValue.DataType.Time);
|
|
columnDfn.TimeFormat = "HH-d-MM";
|
|
break;
|
|
case SbmRequirement.Column.Started_Day:
|
|
SetRequirementColDfn(columnDfn, "on", 60, SbmDbDfn.ColumnIdx.Requirement_Started, ColumnAlignment.Center, DataValue.DataType.Date);
|
|
columnDfn.TimeFormat = "WWW";
|
|
break;
|
|
case SbmRequirement.Column.Required:
|
|
SetRequirementColDfn(columnDfn, "Required", 65, SbmDbDfn.ColumnIdx.Requirement_Required, ColumnAlignment.Center, DataValue.DataType.Date);
|
|
columnDfn.DateFormat = "d-MMM-yy";
|
|
break;
|
|
case SbmRequirement.Column.RequiredTime:
|
|
SetRequirementColDfn(columnDfn, "at", 60, SbmDbDfn.ColumnIdx.Requirement_Required, ColumnAlignment.Center, DataValue.DataType.Time);
|
|
columnDfn.TimeFormat = "HH-d-MM";
|
|
break;
|
|
case SbmRequirement.Column.Required_Fmt:
|
|
SetRequirementColDfn(columnDfn, "Required", 100, SbmDbDfn.ColumnIdx.Requirement_Required, ColumnAlignment.Center, DataValue.DataType.String);
|
|
columnDfn.DateFormat = "dd-MMM-yyyy";
|
|
break;
|
|
case SbmRequirement.Column.Completed:
|
|
SetRequirementColDfn(columnDfn, "Completed", 65, SbmDbDfn.ColumnIdx.Requirement_Completed, ColumnAlignment.Center, DataValue.DataType.Date);
|
|
columnDfn.DateFormat = "d-MMM-yy";
|
|
break;
|
|
case SbmRequirement.Column.CompletedTime:
|
|
SetRequirementColDfn(columnDfn, "at", 60, SbmDbDfn.ColumnIdx.Requirement_Completed, ColumnAlignment.Center, DataValue.DataType.Time);
|
|
columnDfn.TimeFormat = "HH-d-MM";
|
|
break;
|
|
case SbmRequirement.Column.JobNumber:
|
|
SetRequirementColDfn(columnDfn, "Job no", 65, SbmDbDfn.ColumnIdx.Requirement_JobNumber, ColumnAlignment.Center, DataValue.DataType.String);
|
|
break;
|
|
case SbmRequirement.Column.CommodityId:
|
|
SetRequirementColDfn(columnDfn, "CmdId", 60, SbmDbDfn.ColumnIdx.Requirement_CommodityId, ColumnAlignment.Right, DataValue.DataType.Long);
|
|
break;
|
|
case SbmRequirement.Column.ProductCode:
|
|
SetRequirementColDfn(columnDfn, "Code", 120, SbmDbDfn.ColumnIdx.Requirement_ProductCode);
|
|
if (SessionConsole != null && AllowConfigOption(Sbm.ConfigOption.CommodityDoubleColumnWidth))
|
|
columnDfn.Width = columnDfn.Width * 2;
|
|
break;
|
|
case SbmRequirement.Column.DescBrief:
|
|
SetRequirementColDfn(columnDfn, "Description", 140, SbmDbDfn.ColumnIdx.Requirement_DescBrief);
|
|
if (SessionConsole != null && AllowConfigOption(Sbm.ConfigOption.CommodityDoubleColumnWidth))
|
|
columnDfn.Width = columnDfn.Width * 2;
|
|
break;
|
|
case SbmRequirement.Column.DescOutline:
|
|
SetRequirementColDfn(columnDfn, "Outline", 140, SbmDbDfn.ColumnIdx.Requirement_DescOutline);
|
|
break;
|
|
case SbmRequirement.Column.DescDetail:
|
|
SetRequirementColDfn(columnDfn, "Detail", 200, SbmDbDfn.ColumnIdx.Requirement_DescDetail);
|
|
break;
|
|
case SbmRequirement.Column.PromotionCode:
|
|
SetRequirementColDfn(columnDfn, "Promotion", 80, SbmDbDfn.ColumnIdx.Requirement_PromotionCode, ColumnAlignment.Center);
|
|
break;
|
|
case SbmRequirement.Column.PromotionDesc:
|
|
SetRequirementColDfn(columnDfn, "Promotion", 120, SbmDbDfn.ColumnIdx.Requirement_PromotionCode);
|
|
break;
|
|
case SbmRequirement.Column.Promotion_AltText:
|
|
SetRequirementColDfn(columnDfn, "Promo alt", 120, SbmDbDfn.ColumnIdx.Unknown);
|
|
break;
|
|
case SbmRequirement.Column.NominalCode:
|
|
SetRequirementColDfn(columnDfn, "Nominal", 80, SbmDbDfn.ColumnIdx.Requirement_NominalCode, ColumnAlignment.Center);
|
|
break;
|
|
case SbmRequirement.Column.Quantity:
|
|
SetRequirementColDfn(columnDfn, "Quantity", 70, SbmDbDfn.ColumnIdx.Requirement_Quantity, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.NumDecimals = (byte)orderQuantityDecimals;
|
|
break;
|
|
case SbmRequirement.Column.Quantity_TotalByCommodity:
|
|
SetRequirementColDfn(columnDfn, "Quantity", 70, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.DataName = quantityTotalByCmd;
|
|
columnDfn.NumDecimals = (byte)orderQuantityDecimals;
|
|
break;
|
|
case SbmRequirement.Column.QuantityProd:
|
|
SetRequirementColDfn(columnDfn, "Qty (prod)", 70, SbmDbDfn.ColumnIdx.Requirement_QuantityProd, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.NumDecimals = (byte)orderQuantityDecimals;
|
|
break;
|
|
case SbmRequirement.Column.Allocation_Ind:
|
|
SetRequirementColDfn(columnDfn, "Alloc", 45, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Center, DataValue.DataType.TriState);
|
|
columnDfn.TriStateFormat = ColumnTriStateFormat.Lights;
|
|
break;
|
|
case SbmRequirement.Column.AllocationInd_YP:
|
|
SetRequirementColDfn(columnDfn, "Alloc", 45, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Center, DataValue.DataType.String);
|
|
break;
|
|
case SbmRequirement.Column.QuantityDispatched:
|
|
SetRequirementColDfn(columnDfn, "Qty (disp)", 64, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.DataName = quantityDispatch;
|
|
columnDfn.NumDecimals = (byte)orderQuantityDecimals;
|
|
break;
|
|
case SbmRequirement.Column.QuantityInvoiced:
|
|
SetRequirementColDfn(columnDfn, "Qty (inv)", 64, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.DataName = quantityInvoice;
|
|
columnDfn.NumDecimals = (byte)orderQuantityDecimals;
|
|
break;
|
|
case SbmRequirement.Column.AmountUnit:
|
|
if (canViewSalesFinancials)
|
|
{
|
|
SetRequirementColDfn(columnDfn, "Unit", 62, SbmDbDfn.ColumnIdx.Requirement_AmountUnit, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.NumDecimals = CurrencyDecimalsDefault;
|
|
}
|
|
break;
|
|
case SbmRequirement.Column.AmountUnit_Fmt:
|
|
if (canViewSalesFinancials)
|
|
SetRequirementColDfn(columnDfn, "Unit", 80, SbmDbDfn.ColumnIdx.Requirement_AmountUnit, ColumnAlignment.Right, DataValue.DataType.String);
|
|
break;
|
|
case SbmRequirement.Column.AmountAct:
|
|
if (canViewSalesFinancials)
|
|
{
|
|
SetRequirementColDfn(columnDfn, "Estimate", 62, SbmDbDfn.ColumnIdx.Requirement_AmountAct, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.NumDecimals = CurrencyDecimalsDefault;
|
|
}
|
|
break;
|
|
case SbmRequirement.Column.AmountAct_Fmt:
|
|
if (canViewSalesFinancials)
|
|
SetRequirementColDfn(columnDfn, "Estimate", 80, SbmDbDfn.ColumnIdx.Requirement_AmountAct, ColumnAlignment.Right, DataValue.DataType.String);
|
|
break;
|
|
case SbmRequirement.Column.AmountUnitNet:
|
|
if (canViewSalesFinancials)
|
|
{
|
|
SetRequirementColDfn(columnDfn, "Unit", 62, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.NumDecimals = CurrencyDecimalsDefault;
|
|
}
|
|
break;
|
|
case SbmRequirement.Column.AmountUnitNet_Fmt:
|
|
if (canViewSalesFinancials)
|
|
SetRequirementColDfn(columnDfn, "Unit", 80, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.String);
|
|
break;
|
|
case SbmRequirement.Column.AmountNet:
|
|
if (canViewSalesFinancials)
|
|
{
|
|
SetRequirementColDfn(columnDfn, "Net", 60, SbmDbDfn.ColumnIdx.Requirement_AmountNet, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.NumDecimals = CurrencyDecimalsDefault;
|
|
}
|
|
break;
|
|
case SbmRequirement.Column.AmountNet_Fmt:
|
|
if (canViewSalesFinancials)
|
|
SetRequirementColDfn(columnDfn, "Net", 80, SbmDbDfn.ColumnIdx.Requirement_AmountNet, ColumnAlignment.Right, DataValue.DataType.String);
|
|
break;
|
|
case SbmRequirement.Column.TaxCodeId:
|
|
SetRequirementColDfn(columnDfn, "Tax Id", 32, SbmDbDfn.ColumnIdx.Requirement_TaxCodeId, ColumnAlignment.Right, DataValue.DataType.Long);
|
|
break;
|
|
case SbmRequirement.Column.TaxCode_Code:
|
|
SetRequirementColDfn(columnDfn, "Tax Code", 50, SbmDbDfn.ColumnIdx.TaxCode_Code, ColumnAlignment.Center, DataValue.DataType.String, aliasRequirement_Taxcode, prefixRequirement_Taxcode);
|
|
break;
|
|
case SbmRequirement.Column.TaxRate:
|
|
SetRequirementColDfn(columnDfn, "Tax%", 50, SbmDbDfn.ColumnIdx.Requirement_TaxRate, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
break;
|
|
case SbmRequirement.Column.AmountTax:
|
|
if (canViewSalesFinancials)
|
|
{
|
|
SetRequirementColDfn(columnDfn, "Tax", 60, SbmDbDfn.ColumnIdx.Requirement_AmountTax, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.NumDecimals = CurrencyDecimalsDefault;
|
|
}
|
|
break;
|
|
case SbmRequirement.Column.AmountTax_Fmt:
|
|
if (canViewSalesFinancials)
|
|
SetRequirementColDfn(columnDfn, "Tax", 80, SbmDbDfn.ColumnIdx.Requirement_AmountTax, ColumnAlignment.Right, DataValue.DataType.String);
|
|
break;
|
|
case SbmRequirement.Column.AmountTot:
|
|
if (canViewSalesFinancials)
|
|
{
|
|
SetRequirementColDfn(columnDfn, "Total", 60, SbmDbDfn.ColumnIdx.Requirement_AmountTot, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.NumDecimals = CurrencyDecimalsDefault;
|
|
}
|
|
break;
|
|
case SbmRequirement.Column.AmountTot_Fmt:
|
|
if (canViewSalesFinancials)
|
|
SetRequirementColDfn(columnDfn, "Total", 80, SbmDbDfn.ColumnIdx.Requirement_AmountTot, ColumnAlignment.Right, DataValue.DataType.String);
|
|
break;
|
|
//-----------------------------------------------------------------
|
|
// Derived discounts:
|
|
case SbmRequirement.Column.PercentDiscountBySalesPrice:
|
|
if (canViewSalesFinancials)
|
|
{
|
|
SetRequirementColDfn(columnDfn, "Discount % by price", 100, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.NumDecimals = 1;
|
|
}
|
|
break;
|
|
case SbmRequirement.Column.PercentDiscountByRetailPrice:
|
|
if (canViewSalesFinancials)
|
|
{
|
|
SetRequirementColDfn(columnDfn, "Discount % by RRP", 100, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.NumDecimals = 1;
|
|
}
|
|
break;
|
|
//-----------------------------------------------------------------
|
|
// Item times:
|
|
case SbmRequirement.Column.TimeEst:
|
|
case SbmRequirement.Column.TimeEstMins:
|
|
case SbmRequirement.Column.TimeEstWithMins:
|
|
SetRequirementColDfn(columnDfn, "Time (est)", 75, SbmDbDfn.ColumnIdx.Requirement_TimeEst, ColumnAlignment.Right);
|
|
if (column == SbmRequirement.Column.TimeEst) columnDfn.DataType = DataValue.DataType.Double;
|
|
else if (column == SbmRequirement.Column.TimeEstMins) columnDfn.DataType = DataValue.DataType.Long;
|
|
break;
|
|
case SbmRequirement.Column.TimeEstUnit:
|
|
case SbmRequirement.Column.TimeEstUnitMins:
|
|
case SbmRequirement.Column.TimeEstUnitWithMins:
|
|
SetRequirementColDfn(columnDfn, "Unit time (est)", 90, SbmDbDfn.ColumnIdx.Requirement_TimeEst, ColumnAlignment.Right);
|
|
if (column == SbmRequirement.Column.TimeEstUnit) columnDfn.DataType = DataValue.DataType.Double;
|
|
else if (column == SbmRequirement.Column.TimeEstUnitMins) columnDfn.DataType = DataValue.DataType.Long;
|
|
break;
|
|
case SbmRequirement.Column.TimeAct:
|
|
case SbmRequirement.Column.TimeActMins:
|
|
case SbmRequirement.Column.TimeActWithMins:
|
|
SetRequirementColDfn(columnDfn, "Time (act)", 75, SbmDbDfn.ColumnIdx.Requirement_TimeAct, ColumnAlignment.Right);
|
|
if (column == SbmRequirement.Column.TimeAct) columnDfn.DataType = DataValue.DataType.Double;
|
|
else if (column == SbmRequirement.Column.TimeActMins) columnDfn.DataType = DataValue.DataType.Long;
|
|
break;
|
|
case SbmRequirement.Column.TimeActUnit:
|
|
case SbmRequirement.Column.TimeActUnitMins:
|
|
case SbmRequirement.Column.TimeActUnitWithMins:
|
|
SetRequirementColDfn(columnDfn, "Unit time (act)", 90, SbmDbDfn.ColumnIdx.Requirement_TimeAct, ColumnAlignment.Right);
|
|
if (column == SbmRequirement.Column.TimeActUnit) columnDfn.DataType = DataValue.DataType.Double;
|
|
else if (column == SbmRequirement.Column.TimeActUnitMins) columnDfn.DataType = DataValue.DataType.Long;
|
|
break;
|
|
case SbmRequirement.Column.TimeTot:
|
|
case SbmRequirement.Column.TimeTotMins:
|
|
case SbmRequirement.Column.TimeTotWithMins:
|
|
SetRequirementColDfn(columnDfn, "Time (tot)", 60, SbmDbDfn.ColumnIdx.Requirement_TimeTot, ColumnAlignment.Right);
|
|
if (column == SbmRequirement.Column.TimeTot) columnDfn.DataType = DataValue.DataType.Double;
|
|
else if (column == SbmRequirement.Column.TimeTotMins) columnDfn.DataType = DataValue.DataType.Long;
|
|
break;
|
|
// Job costing.
|
|
case SbmRequirement.Column.CostTotal:
|
|
if (canViewSupplyFinancials)
|
|
SetRequirementColDfn(columnDfn, "Cost", 80, SbmDbDfn.ColumnIdx.Requirement_CostTotal, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
break;
|
|
case SbmRequirement.Column.CostTotal_Fmt:
|
|
if (canViewSupplyFinancials)
|
|
SetRequirementColDfn(columnDfn, "Cost", 90, SbmDbDfn.ColumnIdx.Requirement_CostTotal, ColumnAlignment.Right);
|
|
break;
|
|
case SbmRequirement.Column.CostCalculated:
|
|
if (canViewSupplyFinancials)
|
|
SetRequirementColDfn(columnDfn, "Cost calcuated", 90, SbmDbDfn.ColumnIdx.Requirement_CostCalculated, ColumnAlignment.Center, DataValue.DataType.Date);
|
|
break;
|
|
case SbmRequirement.Column.AmountMargin:
|
|
if (canViewSupplyFinancials && canViewSalesFinancials)
|
|
{
|
|
SetRequirementColDfn(columnDfn, "Margin", 80, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.ShowZeroValues = true;
|
|
}
|
|
break;
|
|
case SbmRequirement.Column.AmountMargin_Fmt:
|
|
if (canViewSupplyFinancials && canViewSalesFinancials)
|
|
{
|
|
SetRequirementColDfn(columnDfn, "Margin", 90, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right);
|
|
columnDfn.ShowZeroValues = true;
|
|
}
|
|
break;
|
|
case SbmRequirement.Column.PercentMargin:
|
|
if (canViewSupplyFinancials && canViewSalesFinancials)
|
|
{
|
|
SetRequirementColDfn(columnDfn, "% Margin", 80, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.ShowZeroValues = true;
|
|
}
|
|
break;
|
|
case SbmRequirement.Column.PercentMargin_Fmt:
|
|
if (canViewSupplyFinancials && canViewSalesFinancials)
|
|
{
|
|
SetRequirementColDfn(columnDfn, "% Margin", 90, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right);
|
|
columnDfn.ShowZeroValues = true;
|
|
}
|
|
break;
|
|
case SbmRequirement.Column.ResearchDevelopment_YN:
|
|
case SbmRequirement.Column.ResearchDevelopment_YBlank:
|
|
SetRequirementColDfn(columnDfn, "RandD", 60, SbmDbDfn.ColumnIdx.Requirement_Flags, ColumnAlignment.Center);
|
|
break;
|
|
//-----------------------------------------------------------------
|
|
// Association details.
|
|
case SbmRequirement.Column.Owner_Name:
|
|
SetRequirementColDfn(columnDfn, "Owner", 100, SbmDbDfn.ColumnIdx.Affiliate_Name, ColumnAlignment.Left, DataValue.DataType.String, aliasRequirement_AffiliateOwner, prefixRequirement_AffiliateOwner);
|
|
break;
|
|
case SbmRequirement.Column.Assoc_Code:
|
|
SetRequirementColDfn(columnDfn, "Code", 80, SbmDbDfn.ColumnIdx.Association_Code, ColumnAlignment.Left, DataValue.DataType.String, aliasRequirement_Association, prefixRequirement_Association);
|
|
break;
|
|
case SbmRequirement.Column.Assoc_AccountManagerCode:
|
|
case SbmRequirement.Column.Assoc_AccountManagerDesc:
|
|
{
|
|
String colLabel = GetAttributeCaption(SbmDbDfn.ColumnIdx.Association_AccountManagerCode, "Acc.Mgr.");
|
|
SetRequirementColDfn(columnDfn, colLabel, 80, SbmDbDfn.ColumnIdx.Association_AccountManagerCode, ColumnAlignment.Center, DataValue.DataType.String, aliasRequirement_Association, prefixRequirement_Association);
|
|
break;
|
|
}
|
|
case SbmRequirement.Column.Assoc_AccountHandlerCode:
|
|
case SbmRequirement.Column.Assoc_AccountHandlerDesc:
|
|
{
|
|
String colLabel = GetAttributeCaption(SbmDbDfn.ColumnIdx.Association_AccountHandlerCode, "Acc.Hndlr");
|
|
SetRequirementColDfn(columnDfn, colLabel, 80, SbmDbDfn.ColumnIdx.Association_AccountHandlerCode, ColumnAlignment.Center, DataValue.DataType.String, aliasRequirement_Association, prefixRequirement_Association);
|
|
break;
|
|
}
|
|
case SbmRequirement.Column.Assoc_Target_Name:
|
|
SetRequirementColDfn(columnDfn, "Target", 130, SbmDbDfn.ColumnIdx.Affiliate_Name, ColumnAlignment.Left, DataValue.DataType.String, aliasRequirement_AssAffTarget, prefixRequirement_AssAffTarget);
|
|
break;
|
|
case SbmRequirement.Column.Assoc_Target_PhoneMain:
|
|
SetRequirementColDfn(columnDfn, "Phone", 75, SbmDbDfn.ColumnIdx.Affiliate_PhoneMain, ColumnAlignment.Left, DataValue.DataType.String, aliasRequirement_AssAffTarget, prefixRequirement_AssAffTarget);
|
|
break;
|
|
case SbmRequirement.Column.Assoc_Target_PhoneAlt:
|
|
SetRequirementColDfn(columnDfn, "Phone (alt)", 75, SbmDbDfn.ColumnIdx.Affiliate_PhoneAlt, ColumnAlignment.Left, DataValue.DataType.String, aliasRequirement_AssAffTarget, prefixRequirement_AssAffTarget);
|
|
break;
|
|
//-----------------------------------------------------------------
|
|
// Transaction details.
|
|
case SbmRequirement.Column.Trans_TypeDesc:
|
|
SetRequirementColDfn(columnDfn, "Trans type", 70, SbmDbDfn.ColumnIdx.Transaction_Type, ColumnAlignment.Left, DataValue.DataType.String, aliasRequirement_Transaction, prefixRequirement_Transaction);
|
|
break;
|
|
case SbmRequirement.Column.Trans_Ref:
|
|
SetRequirementColDfn(columnDfn, "Ref", 80, SbmDbDfn.ColumnIdx.Transaction_Ref, ColumnAlignment.Left, DataValue.DataType.String, aliasRequirement_Transaction, prefixRequirement_Transaction);
|
|
break;
|
|
case SbmRequirement.Column.Trans_RefExt:
|
|
SetRequirementColDfn(columnDfn, "Ext. ref", 80, SbmDbDfn.ColumnIdx.Transaction_RefExt, ColumnAlignment.Left, DataValue.DataType.String, aliasRequirement_Transaction, prefixRequirement_Transaction);
|
|
break;
|
|
case SbmRequirement.Column.Trans_DescBrief:
|
|
SetRequirementColDfn(columnDfn, "Transaction", 150, SbmDbDfn.ColumnIdx.Transaction_DescBrief, ColumnAlignment.Left, DataValue.DataType.String, aliasRequirement_Transaction, prefixRequirement_Transaction);
|
|
break;
|
|
case SbmRequirement.Column.Trans_ContactName:
|
|
SetRequirementColDfn(columnDfn, "Contact", 120, SbmDbDfn.ColumnIdx.Transaction_ContactName, ColumnAlignment.Left, DataValue.DataType.String, aliasRequirement_Transaction, prefixRequirement_Transaction);
|
|
break;
|
|
case SbmRequirement.Column.Trans_Raised:
|
|
SetRequirementColDfn(columnDfn, "Raised", 65, SbmDbDfn.ColumnIdx.Transaction_Raised, ColumnAlignment.Center, DataValue.DataType.Date, aliasRequirement_Transaction, prefixRequirement_Transaction);
|
|
columnDfn.DateFormat = "d-MMM-yy";
|
|
break;
|
|
case SbmRequirement.Column.Trans_Required:
|
|
SetRequirementColDfn(columnDfn, "Required", 65, SbmDbDfn.ColumnIdx.Transaction_Required, ColumnAlignment.Center, DataValue.DataType.Date, aliasRequirement_Transaction, prefixRequirement_Transaction);
|
|
columnDfn.DateFormat = "d-MMM-yy";
|
|
break;
|
|
case SbmRequirement.Column.Trans_InProgress:
|
|
SetRequirementColDfn(columnDfn, "InProgress", 65, SbmDbDfn.ColumnIdx.Transaction_InProgress, ColumnAlignment.Center, DataValue.DataType.Date, aliasRequirement_Transaction, prefixRequirement_Transaction);
|
|
columnDfn.DateFormat = "d-MMM-yy";
|
|
break;
|
|
case SbmRequirement.Column.Trans_Closed:
|
|
SetRequirementColDfn(columnDfn, "Closed", 65, SbmDbDfn.ColumnIdx.Transaction_Closed, ColumnAlignment.Center, DataValue.DataType.Date, aliasRequirement_Transaction, prefixRequirement_Transaction);
|
|
columnDfn.DateFormat = "d-MMM-yy";
|
|
break;
|
|
case SbmRequirement.Column.Trans_ContactAreaCode:
|
|
case SbmRequirement.Column.Trans_ContactArea:
|
|
{
|
|
String colLabel = GetAttributeCaption(SbmDbDfn.ColumnIdx.Association_ContactAreaCode, column == SbmRequirement.Column.Trans_ContactAreaCode ? "Cont.Area" : "ContactArea");
|
|
int colWidth = column == SbmRequirement.Column.Trans_ContactAreaCode ? 60 : 120;
|
|
SetRequirementColDfn(columnDfn, colLabel, colWidth, SbmDbDfn.ColumnIdx.Transaction_ContactAreaCode, ColumnAlignment.Center, DataValue.DataType.String, aliasRequirement_Transaction, prefixRequirement_Transaction);
|
|
break;
|
|
}
|
|
case SbmRequirement.Column.Trans_BoxCount:
|
|
SetRequirementColDfn(columnDfn, "Box count", 80, SbmDbDfn.ColumnIdx.Transaction_BoxCount, ColumnAlignment.Center, DataValue.DataType.String, aliasRequirement_Transaction, prefixRequirement_Transaction);
|
|
break;
|
|
case SbmRequirement.Column.Trans_DeliveryStatusCode:
|
|
case SbmRequirement.Column.Trans_DeliveryStatus:
|
|
{
|
|
String colLabel = column == SbmRequirement.Column.Trans_DeliveryStatusCode ? "Del.Stat" : "Delivery status";
|
|
int colWidth = column == SbmRequirement.Column.Trans_DeliveryStatusCode ? 60 : 120;
|
|
SetRequirementColDfn(columnDfn, colLabel, colWidth, SbmDbDfn.ColumnIdx.Transaction_DeliveryStatusCode, ColumnAlignment.Center, DataValue.DataType.String, aliasRequirement_Transaction, prefixRequirement_Transaction);
|
|
break;
|
|
}
|
|
case SbmRequirement.Column.Trans_DeliveryTypeCode:
|
|
case SbmRequirement.Column.Trans_DeliveryType:
|
|
{
|
|
String colLabel = column == SbmRequirement.Column.Trans_DeliveryTypeCode ? "Del.Type" : "Delivery type";
|
|
int colWidth = column == SbmRequirement.Column.Trans_DeliveryTypeCode ? 60 : 120;
|
|
SetRequirementColDfn(columnDfn, colLabel, colWidth, SbmDbDfn.ColumnIdx.Transaction_DeliveryTypeCode, ColumnAlignment.Center, DataValue.DataType.String, aliasRequirement_Transaction, prefixRequirement_Transaction);
|
|
break;
|
|
}
|
|
case SbmRequirement.Column.Trans_DeliveryMethodCode:
|
|
case SbmRequirement.Column.Trans_DeliveryMethod:
|
|
{
|
|
String colLabel = column == SbmRequirement.Column.Trans_DeliveryMethodCode ? "Del.Meth." : "Delivery Method";
|
|
int colWidth = column == SbmRequirement.Column.Trans_DeliveryMethodCode ? 60 : 120;
|
|
SetRequirementColDfn(columnDfn, colLabel, colWidth, SbmDbDfn.ColumnIdx.Transaction_DeliveryMethodCode, ColumnAlignment.Center, DataValue.DataType.String, aliasRequirement_Transaction, prefixRequirement_Transaction);
|
|
break;
|
|
}
|
|
case SbmRequirement.Column.Trans_DeliveryCourierCode:
|
|
case SbmRequirement.Column.Trans_DeliveryCourier:
|
|
{
|
|
String colLabel = column == SbmRequirement.Column.Trans_DeliveryCourierCode ? "Del.Cour." : "Delivery Courier";
|
|
int colWidth = column == SbmRequirement.Column.Trans_DeliveryCourierCode ? 60 : 120;
|
|
SetRequirementColDfn(columnDfn, colLabel, colWidth, SbmDbDfn.ColumnIdx.Transaction_DeliveryCourierCode, ColumnAlignment.Center, DataValue.DataType.String, aliasRequirement_Transaction, prefixRequirement_Transaction);
|
|
break;
|
|
}
|
|
case SbmRequirement.Column.Trans_DeliveryBookInCode:
|
|
case SbmRequirement.Column.Trans_DeliveryBookIn:
|
|
{
|
|
String colLabel = column == SbmRequirement.Column.Trans_DeliveryBookInCode ? "Del.BookIn" : "Delivery BookIn";
|
|
int colWidth = column == SbmRequirement.Column.Trans_DeliveryBookInCode ? 60 : 120;
|
|
SetRequirementColDfn(columnDfn, colLabel, colWidth, SbmDbDfn.ColumnIdx.Transaction_DeliveryBookInCode, ColumnAlignment.Center, DataValue.DataType.String, aliasRequirement_Transaction, prefixRequirement_Transaction);
|
|
break;
|
|
}
|
|
case SbmRequirement.Column.Trans_StockPickerCode:
|
|
case SbmRequirement.Column.Trans_StockPicker:
|
|
{
|
|
String colLabel = column == SbmRequirement.Column.Trans_StockPickerCode ? "Del.BookIn" : "Delivery BookIn";
|
|
int colWidth = column == SbmRequirement.Column.Trans_StockPickerCode ? 60 : 120;
|
|
SetRequirementColDfn(columnDfn, colLabel, colWidth, SbmDbDfn.ColumnIdx.Transaction_StockPickerCode, ColumnAlignment.Center, DataValue.DataType.String, aliasRequirement_Transaction, prefixRequirement_Transaction);
|
|
break;
|
|
}
|
|
case SbmRequirement.Column.Trans_DeliveryAmountNet:
|
|
if (canViewSalesFinancials)
|
|
SetRequirementColDfn(columnDfn, "Delivery net.amt", 90, SbmDbDfn.ColumnIdx.Transaction_DeliveryAmountNet, ColumnAlignment.Right, DataValue.DataType.Double, aliasRequirement_Transaction, prefixRequirement_Transaction);
|
|
break;
|
|
case SbmRequirement.Column.Trans_DeliveryAmountNet_Fmt:
|
|
if (canViewSalesFinancials)
|
|
SetRequirementColDfn(columnDfn, "Delivery net.amt", 100, SbmDbDfn.ColumnIdx.Transaction_DeliveryAmountNet, ColumnAlignment.Right, DataValue.DataType.String, aliasRequirement_Transaction, prefixRequirement_Transaction);
|
|
break;
|
|
case SbmRequirement.Column.Trans_DeliveryTaxCodeId:
|
|
{
|
|
SetRequirementColDfn(columnDfn, "Delivery TxcId", 80, SbmDbDfn.ColumnIdx.Transaction_TaxCodeId, ColumnAlignment.Right, DataValue.DataType.Long, aliasRequirement_Transaction, prefixRequirement_Transaction);
|
|
break;
|
|
}
|
|
case SbmRequirement.Column.Trans_DeliveryTaxCode_Code:
|
|
{
|
|
SetRequirementColDfn(columnDfn, "Delivery tax code", 90, SbmDbDfn.ColumnIdx.TaxCode_Code, ColumnAlignment.Center, DataValue.DataType.String, aliasRequirement_DeliveryTaxcode, prefixRequirement_DeliveryTaxcode);
|
|
break;
|
|
}
|
|
case SbmRequirement.Column.Trans_DeliveryTaxCode_Rate:
|
|
{
|
|
SetRequirementColDfn(columnDfn, "Delivery tax code", 90, SbmDbDfn.ColumnIdx.TaxCode_TaxRate, ColumnAlignment.Center, DataValue.DataType.Double, aliasRequirement_DeliveryTaxcode, prefixRequirement_DeliveryTaxcode);
|
|
break;
|
|
}
|
|
case SbmRequirement.Column.Trans_DeliveryAmountTax:
|
|
if (canViewSalesFinancials)
|
|
SetRequirementColDfn(columnDfn, "Delivery tax.amt", 90, SbmDbDfn.ColumnIdx.Transaction_DeliveryAmountTax, ColumnAlignment.Right, DataValue.DataType.Double, aliasRequirement_Transaction, prefixRequirement_Transaction);
|
|
break;
|
|
case SbmRequirement.Column.Trans_DeliveryAmountTax_Fmt:
|
|
if (canViewSalesFinancials)
|
|
SetRequirementColDfn(columnDfn, "Delivery tax.amt", 100, SbmDbDfn.ColumnIdx.Transaction_DeliveryAmountTax, ColumnAlignment.Right, DataValue.DataType.String, aliasRequirement_Transaction, prefixRequirement_Transaction);
|
|
break;
|
|
case SbmRequirement.Column.Trans_DeliveryAmountTot:
|
|
if (canViewSalesFinancials)
|
|
SetRequirementColDfn(columnDfn, "Delivery tot.amt", 90, SbmDbDfn.ColumnIdx.Transaction_DeliveryAmountTot, ColumnAlignment.Right, DataValue.DataType.Double, aliasRequirement_Transaction, prefixRequirement_Transaction);
|
|
break;
|
|
case SbmRequirement.Column.Trans_DeliveryAmountTot_Fmt:
|
|
if (canViewSalesFinancials)
|
|
SetRequirementColDfn(columnDfn, "Delivery tot.amt", 100, SbmDbDfn.ColumnIdx.Transaction_DeliveryAmountTot, ColumnAlignment.Right, DataValue.DataType.String, aliasRequirement_Transaction, prefixRequirement_Transaction);
|
|
break;
|
|
case SbmRequirement.Column.Trans_DeliveryNominalCode:
|
|
{
|
|
SetRequirementColDfn(columnDfn, "Delivery nominal", 90, SbmDbDfn.ColumnIdx.Transaction_DeliveryNominalCode, ColumnAlignment.Center, DataValue.DataType.String, aliasRequirement_Transaction, prefixRequirement_Transaction);
|
|
break;
|
|
}
|
|
case SbmRequirement.Column.Trans_DeliveryDepartment:
|
|
{
|
|
SetRequirementColDfn(columnDfn, "Delivery dept", 90, SbmDbDfn.ColumnIdx.Transaction_Department, ColumnAlignment.Center, DataValue.DataType.String, aliasRequirement_Transaction, prefixRequirement_Transaction);
|
|
break;
|
|
}
|
|
case SbmRequirement.Column.Trans_ReqntCount:
|
|
SetRequirementColDfn(columnDfn, "Reqs", 70, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.Long);
|
|
columnDfn.DataName = transReqntCount;
|
|
columnDfn.SortDataName = transReqntCount; // Will this work?
|
|
break;
|
|
//-------------------------------------------------------------------
|
|
// Transaction financials.
|
|
case SbmRequirement.Column.Trans_CurrencyId:
|
|
SetRequirementColDfn(columnDfn, "Currency #", 60, SbmDbDfn.ColumnIdx.Transaction_CurrencyId, ColumnAlignment.Right, DataValue.DataType.Long, aliasRequirement_Transaction, prefixRequirement_Transaction);
|
|
break;
|
|
case SbmRequirement.Column.Trans_Currency_Code:
|
|
SetRequirementColDfn(columnDfn, "Currency", 80, SbmDbDfn.ColumnIdx.Currency_Code, ColumnAlignment.Center, DataValue.DataType.String, aliasRequirement_Currency, prefixRequirement_Currency);
|
|
break;
|
|
case SbmRequirement.Column.Trans_Currency_Symbol:
|
|
SetRequirementColDfn(columnDfn, "Currency", 80, SbmDbDfn.ColumnIdx.Currency_Symbol, ColumnAlignment.Center, DataValue.DataType.String, aliasRequirement_Currency, prefixRequirement_Currency);
|
|
break;
|
|
case SbmRequirement.Column.Trans_AmountEst:
|
|
if (canViewSalesFinancials)
|
|
SetRequirementColDfn(columnDfn, "Trans £ (est)", 80, SbmDbDfn.ColumnIdx.Transaction_AmountEst, ColumnAlignment.Right, DataValue.DataType.Double, aliasRequirement_Transaction, prefixRequirement_Transaction);
|
|
break;
|
|
case SbmRequirement.Column.Trans_AmountEst_Fmt:
|
|
if (canViewSalesFinancials)
|
|
SetRequirementColDfn(columnDfn, "Trans £ (est)", 90, SbmDbDfn.ColumnIdx.Transaction_AmountEst, ColumnAlignment.Right, DataValue.DataType.String, aliasRequirement_Transaction, prefixRequirement_Transaction);
|
|
break;
|
|
case SbmRequirement.Column.Trans_AmountMax:
|
|
if (canViewSalesFinancials)
|
|
SetRequirementColDfn(columnDfn, "Trans £ (max)", 80, SbmDbDfn.ColumnIdx.Transaction_AmountMax, ColumnAlignment.Right, DataValue.DataType.Double, aliasRequirement_Transaction, prefixRequirement_Transaction);
|
|
break;
|
|
case SbmRequirement.Column.Trans_AmountMax_Fmt:
|
|
if (canViewSalesFinancials)
|
|
SetRequirementColDfn(columnDfn, "Trans £ (max)", 90, SbmDbDfn.ColumnIdx.Transaction_AmountMax, ColumnAlignment.Right, DataValue.DataType.String, aliasRequirement_Transaction, prefixRequirement_Transaction);
|
|
break;
|
|
case SbmRequirement.Column.Trans_AmountNet:
|
|
if (canViewSalesFinancials)
|
|
SetRequirementColDfn(columnDfn, "Trans £ (net)", 80, SbmDbDfn.ColumnIdx.Transaction_AmountNet, ColumnAlignment.Right, DataValue.DataType.Double, aliasRequirement_Transaction, prefixRequirement_Transaction);
|
|
break;
|
|
case SbmRequirement.Column.Trans_AmountNet_Fmt:
|
|
if (canViewSalesFinancials)
|
|
SetRequirementColDfn(columnDfn, "Trans £ (net)", 90, SbmDbDfn.ColumnIdx.Transaction_AmountNet, ColumnAlignment.Right, DataValue.DataType.String, aliasRequirement_Transaction, prefixRequirement_Transaction);
|
|
break;
|
|
case SbmRequirement.Column.Trans_AmountTax:
|
|
if (canViewSalesFinancials)
|
|
SetRequirementColDfn(columnDfn, "Trans £ (tax)", 80, SbmDbDfn.ColumnIdx.Transaction_AmountTax, ColumnAlignment.Right, DataValue.DataType.Double, aliasRequirement_Transaction, prefixRequirement_Transaction);
|
|
break;
|
|
case SbmRequirement.Column.Trans_AmountTax_Fmt:
|
|
if (canViewSalesFinancials)
|
|
SetRequirementColDfn(columnDfn, "Trans £ (tax)", 90, SbmDbDfn.ColumnIdx.Transaction_AmountTax, ColumnAlignment.Right, DataValue.DataType.String, aliasRequirement_Transaction, prefixRequirement_Transaction);
|
|
break;
|
|
case SbmRequirement.Column.Trans_AmountTot:
|
|
if (canViewSalesFinancials)
|
|
SetRequirementColDfn(columnDfn, "Trans £ (tot)", 80, SbmDbDfn.ColumnIdx.Transaction_AmountTot, ColumnAlignment.Right, DataValue.DataType.Double, aliasRequirement_Transaction, prefixRequirement_Transaction);
|
|
break;
|
|
case SbmRequirement.Column.Trans_AmountTot_Fmt:
|
|
if (canViewSalesFinancials)
|
|
SetRequirementColDfn(columnDfn, "Trans £ (tot)", 90, SbmDbDfn.ColumnIdx.Transaction_AmountTot, ColumnAlignment.Right, DataValue.DataType.String, aliasRequirement_Transaction, prefixRequirement_Transaction);
|
|
break;
|
|
case SbmRequirement.Column.Trans_TimeEst:
|
|
SetRequirementColDfn(columnDfn, "Trans time (est)", 80, SbmDbDfn.ColumnIdx.Transaction_TimeEst, ColumnAlignment.Right, DataValue.DataType.Double, aliasRequirement_Transaction, prefixRequirement_Transaction);
|
|
break;
|
|
case SbmRequirement.Column.Trans_TimeAct:
|
|
SetRequirementColDfn(columnDfn, "Trans time (act)", 80, SbmDbDfn.ColumnIdx.Transaction_TimeAct, ColumnAlignment.Right, DataValue.DataType.Double, aliasRequirement_Transaction, prefixRequirement_Transaction);
|
|
break;
|
|
case SbmRequirement.Column.Trans_TimeTot:
|
|
SetRequirementColDfn(columnDfn, "Trans time (tot)", 80, SbmDbDfn.ColumnIdx.Transaction_TimeTot, ColumnAlignment.Right, DataValue.DataType.Double, aliasRequirement_Transaction, prefixRequirement_Transaction);
|
|
break;
|
|
case SbmRequirement.Column.Trans_Notes:
|
|
SetRequirementColDfn(columnDfn, "Trans Notes", 200, SbmDbDfn.ColumnIdx.Transaction_Notes, ColumnAlignment.Left, DataValue.DataType.String, aliasRequirement_Transaction, prefixRequirement_Transaction);
|
|
break;
|
|
case SbmRequirement.Column.Trans_Flags:
|
|
SetRequirementColDfn(columnDfn, "Trans flags", 60, SbmDbDfn.ColumnIdx.Transaction_Flags, ColumnAlignment.Center, DataValue.DataType.Long, aliasRequirement_Transaction, prefixRequirement_Transaction);
|
|
break;
|
|
case SbmRequirement.Column.Trans_AllocationInd:
|
|
SetRequirementColDfn(columnDfn, "Trans alloc", 60, SbmDbDfn.ColumnIdx.Transaction_Flags, ColumnAlignment.Center, DataValue.DataType.TriState, aliasRequirement_Transaction, prefixRequirement_Transaction);
|
|
columnDfn.TriStateFormat = ColumnTriStateFormat.Lights;
|
|
break;
|
|
case SbmRequirement.Column.Trans_AllocationInd_YP:
|
|
SetRequirementColDfn(columnDfn, "Trans alloc", 60, SbmDbDfn.ColumnIdx.Transaction_Flags, ColumnAlignment.Center, DataValue.DataType.String, aliasRequirement_Transaction, prefixRequirement_Transaction);
|
|
break;
|
|
case SbmRequirement.Column.Trans_ReplacementOrder_Tick:
|
|
SetRequirementColDfn(columnDfn, "Replacement", 80, SbmDbDfn.ColumnIdx.Transaction_Flags, ColumnAlignment.Center, DataValue.DataType.Bool, aliasRequirement_Transaction, prefixRequirement_Transaction);
|
|
columnDfn.BoolFormat = ColumnBoolFormat.Tick;
|
|
break;
|
|
case SbmRequirement.Column.Trans_ReplacementOrder_Y:
|
|
SetRequirementColDfn(columnDfn, "Replacement", 80, SbmDbDfn.ColumnIdx.Transaction_Flags, ColumnAlignment.Center, DataValue.DataType.String, aliasRequirement_Transaction, prefixRequirement_Transaction);
|
|
break;
|
|
case SbmRequirement.Column.Trans_StatusDesc:
|
|
SetRequirementColDfn(columnDfn, "Trans Status", 50, SbmDbDfn.ColumnIdx.Transaction_Status, ColumnAlignment.Left, DataValue.DataType.String, aliasRequirement_Transaction, prefixRequirement_Transaction);
|
|
break;
|
|
case SbmRequirement.Column.Trans_StatusInd:
|
|
SetRequirementColDfn(columnDfn, "Trans stat", 50, SbmDbDfn.ColumnIdx.Transaction_Status, ColumnAlignment.Center, DataValue.DataType.TriState, aliasRequirement_Transaction, prefixRequirement_Transaction);
|
|
columnDfn.TriStateFormat = ColumnTriStateFormat.Lights;
|
|
break;
|
|
case SbmRequirement.Column.Trans_Status_OnHold_Tick:
|
|
SetRequirementColDfn(columnDfn, "Hold", 60, SbmDbDfn.ColumnIdx.Transaction_Status, ColumnAlignment.Center, DataValue.DataType.Bool, aliasRequirement_Transaction, prefixRequirement_Transaction);
|
|
columnDfn.BoolFormat = ColumnBoolFormat.Tick;
|
|
break;
|
|
case SbmRequirement.Column.Trans_Status_OnHold_Cross:
|
|
SetRequirementColDfn(columnDfn, "Hold", 60, SbmDbDfn.ColumnIdx.Transaction_Status, ColumnAlignment.Center, DataValue.DataType.Bool, aliasRequirement_Transaction, prefixRequirement_Transaction);
|
|
columnDfn.BoolFormat = ColumnBoolFormat.Cross_Inv;
|
|
break;
|
|
case SbmRequirement.Column.Trans_Status_OnHold_Y:
|
|
SetRequirementColDfn(columnDfn, "Hold", 60, SbmDbDfn.ColumnIdx.Transaction_Status, ColumnAlignment.Center, DataValue.DataType.String, aliasRequirement_Transaction, prefixRequirement_Transaction);
|
|
break;
|
|
//-----------------------------------------------------------------
|
|
// Transaction cost.
|
|
case SbmRequirement.Column.Trans_CostLabourRateHour:
|
|
if (canViewSupplyFinancials)
|
|
SetRequirementColDfn(columnDfn, "Trans labour rate", 80, SbmDbDfn.ColumnIdx.Transaction_CostLabourRateHour, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
break;
|
|
case SbmRequirement.Column.Trans_CostTotal:
|
|
if (canViewSupplyFinancials)
|
|
{
|
|
SetRequirementColDfn(columnDfn, "Trans cost", 80, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.DataName = transCostTotal;
|
|
}
|
|
break;
|
|
case SbmRequirement.Column.Trans_CostTotal_Fmt:
|
|
if (canViewSupplyFinancials)
|
|
SetRequirementColDfn(columnDfn, "Trans cost", 90, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right);
|
|
break;
|
|
case SbmRequirement.Column.Trans_AmountMargin:
|
|
if (canViewSupplyFinancials && canViewSalesFinancials)
|
|
{
|
|
SetRequirementColDfn(columnDfn, "Trans margin", 80, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.ShowZeroValues = true;
|
|
}
|
|
break;
|
|
case SbmRequirement.Column.Trans_AmountMargin_Fmt:
|
|
if (canViewSupplyFinancials && canViewSalesFinancials)
|
|
{
|
|
SetRequirementColDfn(columnDfn, "Trans margin", 90, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right);
|
|
columnDfn.ShowZeroValues = true;
|
|
}
|
|
break;
|
|
case SbmRequirement.Column.Trans_PercentMargin:
|
|
if (canViewSupplyFinancials && canViewSalesFinancials)
|
|
{
|
|
SetRequirementColDfn(columnDfn, "Trans % Margin", 80, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.ShowZeroValues = true;
|
|
}
|
|
break;
|
|
case SbmRequirement.Column.Trans_PercentMargin_Fmt:
|
|
if (canViewSupplyFinancials && canViewSalesFinancials)
|
|
{
|
|
SetRequirementColDfn(columnDfn, "Trans % Margin", 90, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right);
|
|
columnDfn.ShowZeroValues = true;
|
|
}
|
|
break;
|
|
//-----------------------------------------------------------------
|
|
// Target's primary address:
|
|
case SbmRequirement.Column.Trans_AssocTarget_Address:
|
|
SetRequirementColDfn(columnDfn, "Account address", 180, SbmDbDfn.ColumnIdx.Unknown);
|
|
break;
|
|
case SbmRequirement.Column.Trans_AssocTarget_Address_Name:
|
|
SetRequirementColDfn(columnDfn, "Name (acc)", 120, SbmDbDfn.ColumnIdx.Address_Name, ColumnAlignment.Left, DataValue.DataType.String, aliasRequirement_AddressTarget, prefixRequirement_AddressTarget);
|
|
break;
|
|
case SbmRequirement.Column.Trans_AssocTarget_Address_Line1:
|
|
SetRequirementColDfn(columnDfn, "Line 1 (acc)", 120, SbmDbDfn.ColumnIdx.Address_Line1, ColumnAlignment.Left, DataValue.DataType.String, aliasRequirement_AddressTarget, prefixRequirement_AddressTarget);
|
|
break;
|
|
case SbmRequirement.Column.Trans_AssocTarget_Address_Line2:
|
|
SetRequirementColDfn(columnDfn, "Line 2 (acc)", 120, SbmDbDfn.ColumnIdx.Address_Line2, ColumnAlignment.Left, DataValue.DataType.String, aliasRequirement_AddressTarget, prefixRequirement_AddressTarget);
|
|
break;
|
|
case SbmRequirement.Column.Trans_AssocTarget_Address_Line3:
|
|
SetRequirementColDfn(columnDfn, "Line 3 (acc)", 120, SbmDbDfn.ColumnIdx.Address_Line3, ColumnAlignment.Left, DataValue.DataType.String, aliasRequirement_AddressTarget, prefixRequirement_AddressTarget);
|
|
break;
|
|
case SbmRequirement.Column.Trans_AssocTarget_Address_City:
|
|
SetRequirementColDfn(columnDfn, "City (acc)", 120, SbmDbDfn.ColumnIdx.Address_City, ColumnAlignment.Left, DataValue.DataType.String, aliasRequirement_AddressTarget, prefixRequirement_AddressTarget);
|
|
break;
|
|
case SbmRequirement.Column.Trans_AssocTarget_Address_Province:
|
|
SetRequirementColDfn(columnDfn, "Province (acc)", 120, SbmDbDfn.ColumnIdx.Address_Province, ColumnAlignment.Left, DataValue.DataType.String, aliasRequirement_AddressTarget, prefixRequirement_AddressTarget);
|
|
break;
|
|
case SbmRequirement.Column.Trans_AssocTarget_Address_Postcode:
|
|
SetRequirementColDfn(columnDfn, "DescBrief (acc)", 90, SbmDbDfn.ColumnIdx.Address_DescBrief, ColumnAlignment.Left, DataValue.DataType.String, aliasRequirement_AddressTarget, prefixRequirement_AddressTarget);
|
|
break;
|
|
//-----------------------------------------------------------------
|
|
// Delivery address:
|
|
case SbmRequirement.Column.Trans_DeliveryAddress:
|
|
SetRequirementColDfn(columnDfn, "Delivery address", 320, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Left, DataValue.DataType.String);
|
|
break;
|
|
case SbmRequirement.Column.Trans_DeliveryAddress_Name:
|
|
SetRequirementColDfn(columnDfn, "Delivery name", 120, SbmDbDfn.ColumnIdx.Address_Name, ColumnAlignment.Left, DataValue.DataType.String, aliasRequirement_DeliveryAddress, prefixRequirement_DeliveryAddress);
|
|
break;
|
|
case SbmRequirement.Column.Trans_DeliveryAddress_Line1:
|
|
SetRequirementColDfn(columnDfn, "Line 1 (del)", 120, SbmDbDfn.ColumnIdx.Address_Line1, ColumnAlignment.Left, DataValue.DataType.String, aliasRequirement_DeliveryAddress, prefixRequirement_DeliveryAddress);
|
|
break;
|
|
case SbmRequirement.Column.Trans_DeliveryAddress_Line2:
|
|
SetRequirementColDfn(columnDfn, "Line 2 (del)", 120, SbmDbDfn.ColumnIdx.Address_Line2, ColumnAlignment.Left, DataValue.DataType.String, aliasRequirement_DeliveryAddress, prefixRequirement_DeliveryAddress);
|
|
break;
|
|
case SbmRequirement.Column.Trans_DeliveryAddress_Line3:
|
|
SetRequirementColDfn(columnDfn, "Line 3 (del)", 120, SbmDbDfn.ColumnIdx.Address_Line3, ColumnAlignment.Left, DataValue.DataType.String, aliasRequirement_DeliveryAddress, prefixRequirement_DeliveryAddress);
|
|
break;
|
|
case SbmRequirement.Column.Trans_DeliveryAddress_City:
|
|
SetRequirementColDfn(columnDfn, "City (del)", 120, SbmDbDfn.ColumnIdx.Address_City, ColumnAlignment.Left, DataValue.DataType.String, aliasRequirement_DeliveryAddress, prefixRequirement_DeliveryAddress);
|
|
break;
|
|
case SbmRequirement.Column.Trans_DeliveryAddress_Province:
|
|
SetRequirementColDfn(columnDfn, "Province (del)", 120, SbmDbDfn.ColumnIdx.Address_Province, ColumnAlignment.Left, DataValue.DataType.String, aliasRequirement_DeliveryAddress, prefixRequirement_DeliveryAddress);
|
|
break;
|
|
case SbmRequirement.Column.Trans_DeliveryAddress_Postcode:
|
|
SetRequirementColDfn(columnDfn, "DescBrief (del)", 90, SbmDbDfn.ColumnIdx.Address_DescBrief, ColumnAlignment.Left, DataValue.DataType.String, aliasRequirement_DeliveryAddress, prefixRequirement_DeliveryAddress);
|
|
break;
|
|
case SbmRequirement.Column.Trans_DeliveryAddress_Phone:
|
|
SetRequirementColDfn(columnDfn, "Phone (del)", 120, SbmDbDfn.ColumnIdx.Address_Phone, ColumnAlignment.Left, DataValue.DataType.String, aliasRequirement_DeliveryAddress, prefixRequirement_DeliveryAddress);
|
|
break;
|
|
case SbmRequirement.Column.Trans_DeliveryAddress_Email:
|
|
SetRequirementColDfn(columnDfn, "Email (del)", 200, SbmDbDfn.ColumnIdx.Address_Email, ColumnAlignment.Left, DataValue.DataType.String, aliasRequirement_DeliveryAddress, prefixRequirement_DeliveryAddress);
|
|
break;
|
|
case SbmRequirement.Column.Trans_SourceTrans_Ref:
|
|
SetRequirementColDfn(columnDfn, "Source trans ref", 120, SbmDbDfn.ColumnIdx.Transaction_Ref, ColumnAlignment.Default, DataValue.DataType.String, aliasRequirement_SourceTransaction, prefixRequirement_SourceTransaction);
|
|
break;
|
|
//-----------------------------------------------------------------
|
|
// Unit of measure:
|
|
case SbmRequirement.Column.UomDesc:
|
|
SetRequirementColDfn(columnDfn, "Unit", 80, SbmDbDfn.ColumnIdx.UnitMeasure_Single, ColumnAlignment.Center, DataValue.DataType.String, aliasRequirement_UnitOfMeasure, prefixRequirement_UnitOfMeasure);
|
|
break;
|
|
//-----------------------------------------------------------------
|
|
// Source requirement:
|
|
case SbmRequirement.Column.SourceReqnt_DescBrief:
|
|
SetRequirementColDfn(columnDfn, "Requirement", 120, SbmDbDfn.ColumnIdx.Requirement_DescBrief, ColumnAlignment.Left, DataValue.DataType.String, aliasRequirement_SourceRequirement, prefixRequirement_SourceRequirement);
|
|
break;
|
|
case SbmRequirement.Column.SourceReqnt_JobNumber:
|
|
SetRequirementColDfn(columnDfn, "Job number", 80, SbmDbDfn.ColumnIdx.Requirement_JobNumber, ColumnAlignment.Center, DataValue.DataType.String, aliasRequirement_SourceRequirement, prefixRequirement_SourceRequirement);
|
|
break;
|
|
case SbmRequirement.Column.SourceReqnt_TransRef:
|
|
SetRequirementColDfn(columnDfn, "Src Trans Ref", 80, SbmDbDfn.ColumnIdx.Transaction_Ref, ColumnAlignment.Left, DataValue.DataType.String, aliasRequirement_SourceRequirementTransaction, prefixRequirement_SourceRequirementTransaction);
|
|
break;
|
|
case SbmRequirement.Column.SourceReqnt_TransRefExt:
|
|
SetRequirementColDfn(columnDfn, "Src Trans Ref Ext", 90, SbmDbDfn.ColumnIdx.Transaction_RefExt, ColumnAlignment.Left, DataValue.DataType.String, aliasRequirement_SourceRequirementTransaction, prefixRequirement_SourceRequirementTransaction);
|
|
break;
|
|
// Order or source order info:
|
|
case SbmRequirement.Column.OrderItem_JobNumber:
|
|
SetRequirementColDfn(columnDfn, "Job number", 80, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Center, DataValue.DataType.String, aliasRequirement_SourceRequirement, prefixRequirement_SourceRequirement);
|
|
break;
|
|
//-----------------------------------------------------------------
|
|
// Commodity.
|
|
case SbmRequirement.Column.Cmd_DrawingNo:
|
|
SetRequirementColDfn(columnDfn, "Drawing", 90, SbmDbDfn.ColumnIdx.Commodity_DrawingNo, ColumnAlignment.Center, DataValue.DataType.String, aliasRequirement_Commodity, prefixRequirement_Commodity);
|
|
break;
|
|
case SbmRequirement.Column.Cmd_DrawingIssue:
|
|
SetRequirementColDfn(columnDfn, "Issue", 50, SbmDbDfn.ColumnIdx.Commodity_DrawingIssue, ColumnAlignment.Center, DataValue.DataType.String, aliasRequirement_Commodity, prefixRequirement_Commodity);
|
|
break;
|
|
case SbmRequirement.Column.Cmd_ImagePath:
|
|
case SbmRequirement.Column.Cmd_Image:
|
|
SetRequirementColDfn(columnDfn, "Image path", 120, SbmDbDfn.ColumnIdx.Commodity_ImagePath, ColumnAlignment.Default, DataValue.DataType.String, aliasRequirement_Commodity, prefixRequirement_Commodity);
|
|
break;
|
|
case SbmRequirement.Column.Cmd_Category:
|
|
SetRequirementColDfn(columnDfn, "Category", 80, SbmDbDfn.ColumnIdx.Commodity_Category, ColumnAlignment.Center, DataValue.DataType.String, aliasRequirement_Commodity, prefixRequirement_Commodity);
|
|
break;
|
|
case SbmRequirement.Column.Cmd_Location:
|
|
SetRequirementColDfn(columnDfn, "Location", 80, SbmDbDfn.ColumnIdx.Commodity_Location, ColumnAlignment.Center, DataValue.DataType.String, aliasRequirement_Commodity, prefixRequirement_Commodity);
|
|
break;
|
|
case SbmRequirement.Column.Cmd_Department:
|
|
SetRequirementColDfn(columnDfn, "Department", 80, SbmDbDfn.ColumnIdx.Commodity_Department, ColumnAlignment.Center, DataValue.DataType.String, aliasRequirement_Commodity, prefixRequirement_Commodity);
|
|
break;
|
|
case SbmRequirement.Column.Cmd_CatalogRef:
|
|
SetRequirementColDfn(columnDfn, "Catalog ref", 90, SbmDbDfn.ColumnIdx.Commodity_CatalogRef, ColumnAlignment.Center, DataValue.DataType.String, aliasRequirement_Commodity, prefixRequirement_Commodity);
|
|
break;
|
|
case SbmRequirement.Column.Cmd_Weight:
|
|
SetRequirementColDfn(columnDfn, "Weight", 80, SbmDbDfn.ColumnIdx.Commodity_Weight, ColumnAlignment.Right, DataValue.DataType.Double, aliasRequirement_Commodity, prefixRequirement_Commodity);
|
|
columnDfn.NumDecimals = (byte)weightDecimals;
|
|
break;
|
|
case SbmRequirement.Column.Cmd_WeightUnit:
|
|
SetRequirementColDfn(columnDfn, "Weight unit#", 80, SbmDbDfn.ColumnIdx.Commodity_UomIdWeight, ColumnAlignment.Right, DataValue.DataType.Long, aliasRequirement_Commodity, prefixRequirement_Commodity);
|
|
break;
|
|
case SbmRequirement.Column.Cmd_Weight_ValueUnits:
|
|
SetRequirementColDfn(columnDfn, "Weight", 90, SbmDbDfn.ColumnIdx.Commodity_Weight, ColumnAlignment.Left, DataValue.DataType.String, aliasRequirement_Commodity, prefixRequirement_Commodity);
|
|
break;
|
|
case SbmRequirement.Column.Cmd_Length:
|
|
SetRequirementColDfn(columnDfn, "Length", 80, SbmDbDfn.ColumnIdx.Commodity_Length, ColumnAlignment.Right, DataValue.DataType.Double, aliasRequirement_Commodity, prefixRequirement_Commodity);
|
|
break;
|
|
case SbmRequirement.Column.Cmd_Width:
|
|
break;
|
|
case SbmRequirement.Column.Cmd_Height:
|
|
break;
|
|
case SbmRequirement.Column.Cmd_LengthUnit:
|
|
SetRequirementColDfn(columnDfn, "Length unit#", 80, SbmDbDfn.ColumnIdx.Commodity_UomIdLength, ColumnAlignment.Right, DataValue.DataType.Long, aliasRequirement_Commodity, prefixRequirement_Commodity);
|
|
break;
|
|
case SbmRequirement.Column.Cmd_Length_ValueUnits:
|
|
SetRequirementColDfn(columnDfn, "Length", 90, SbmDbDfn.ColumnIdx.Commodity_Length, ColumnAlignment.Left, DataValue.DataType.String, aliasRequirement_Commodity, prefixRequirement_Commodity);
|
|
break;
|
|
case SbmRequirement.Column.Cmd_Volume:
|
|
SetRequirementColDfn(columnDfn, "Volume", 80, SbmDbDfn.ColumnIdx.Commodity_Volume, ColumnAlignment.Right, DataValue.DataType.Double, aliasRequirement_Commodity, prefixRequirement_Commodity);
|
|
break;
|
|
case SbmRequirement.Column.Cmd_VolumeUnit:
|
|
SetRequirementColDfn(columnDfn, "Volume unit#", 80, SbmDbDfn.ColumnIdx.Commodity_UomIdVolume, ColumnAlignment.Right, DataValue.DataType.Long, aliasRequirement_Commodity, prefixRequirement_Commodity);
|
|
break;
|
|
case SbmRequirement.Column.Cmd_Volume_ValueUnits:
|
|
SetRequirementColDfn(columnDfn, "Volume", 90, SbmDbDfn.ColumnIdx.Commodity_Volume, ColumnAlignment.Left, DataValue.DataType.String, aliasRequirement_Commodity, prefixRequirement_Commodity);
|
|
break;
|
|
case SbmRequirement.Column.Cmd_Density:
|
|
SetRequirementColDfn(columnDfn, "Density", 80, SbmDbDfn.ColumnIdx.Commodity_Density, ColumnAlignment.Right, DataValue.DataType.Double, aliasRequirement_Commodity, prefixRequirement_Commodity);
|
|
break;
|
|
case SbmRequirement.Column.Cmd_DensityUnit:
|
|
SetRequirementColDfn(columnDfn, "Density unit#", 80, SbmDbDfn.ColumnIdx.Commodity_UomIdDensity, ColumnAlignment.Right, DataValue.DataType.Long, aliasRequirement_Commodity, prefixRequirement_Commodity);
|
|
break;
|
|
case SbmRequirement.Column.Cmd_Density_ValueUnits:
|
|
SetRequirementColDfn(columnDfn, "Density", 90, SbmDbDfn.ColumnIdx.Commodity_Density, ColumnAlignment.Left, DataValue.DataType.String, aliasRequirement_Commodity, prefixRequirement_Commodity);
|
|
break;
|
|
case SbmRequirement.Column.Cmd_MinOrderQty:
|
|
SetRequirementColDfn(columnDfn, "Min order qty", 80, SbmDbDfn.ColumnIdx.Commodity_MinOrderQty, ColumnAlignment.Right, DataValue.DataType.Double, aliasRequirement_Commodity, prefixRequirement_Commodity);
|
|
break;
|
|
case SbmRequirement.Column.Cmd_PackQtySale:
|
|
SetRequirementColDfn(columnDfn, "Pack qty - sale", 80, SbmDbDfn.ColumnIdx.Commodity_PackQty, ColumnAlignment.Right, DataValue.DataType.Double, aliasRequirement_Commodity, prefixRequirement_Commodity);
|
|
break;
|
|
case SbmRequirement.Column.Cmd_BoxQuantity:
|
|
SetRequirementColDfn(columnDfn, "Box qty", 80, SbmDbDfn.ColumnIdx.Commodity_BoxQuantity, ColumnAlignment.Right, DataValue.DataType.Double, aliasRequirement_Commodity, prefixRequirement_Commodity);
|
|
break;
|
|
case SbmRequirement.Column.Cmd_BoxUnit:
|
|
SetRequirementColDfn(columnDfn, "Box qtyunit#", 80, SbmDbDfn.ColumnIdx.Commodity_UomIdBox, ColumnAlignment.Right, DataValue.DataType.Long, aliasRequirement_Commodity, prefixRequirement_Commodity);
|
|
break;
|
|
case SbmRequirement.Column.Cmd_BoxQuantity_ValueUnits:
|
|
SetRequirementColDfn(columnDfn, "Box qty", 90, SbmDbDfn.ColumnIdx.Commodity_BoxQuantity, ColumnAlignment.Left, DataValue.DataType.String, aliasRequirement_Commodity, prefixRequirement_Commodity);
|
|
break;
|
|
case SbmRequirement.Column.Cmd_Dimensions:
|
|
SetRequirementColDfn(columnDfn, GetAttributeCaption(SbmDbDfn.ColumnIdx.Commodity_Dimensions, "Dimensions"), 100, SbmDbDfn.ColumnIdx.Commodity_Dimensions, ColumnAlignment.Left, DataValue.DataType.String, aliasRequirement_Commodity, prefixRequirement_Commodity);
|
|
break;
|
|
case SbmRequirement.Column.Cmd_SpecSummary:
|
|
SetRequirementColDfn(columnDfn, "Spec. summary", 120, SbmDbDfn.ColumnIdx.Commodity_SpecSummary, ColumnAlignment.Left, DataValue.DataType.String, aliasRequirement_Commodity, prefixRequirement_Commodity);
|
|
break;
|
|
case SbmRequirement.Column.Cmd_ICNTariffCode:
|
|
SetRequirementColDfn(columnDfn, GetAttributeCaption(SbmDbDfn.ColumnIdx.Commodity_ICNTariffCode, "ICN tariff"), 100, SbmDbDfn.ColumnIdx.Commodity_ICNTariffCode, ColumnAlignment.Left, DataValue.DataType.String, aliasRequirement_Commodity, prefixRequirement_Commodity);
|
|
break;
|
|
case SbmRequirement.Column.Cmd_RangeCode:
|
|
SetRequirementColDfn(columnDfn, "Range", 80, SbmDbDfn.ColumnIdx.Commodity_RangeCode, ColumnAlignment.Center, DataValue.DataType.String, aliasRequirement_Commodity, prefixRequirement_Commodity);
|
|
break;
|
|
case SbmRequirement.Column.Cmd_RangeDesc:
|
|
SetRequirementColDfn(columnDfn, "Range", 100, SbmDbDfn.ColumnIdx.Commodity_RangeCode, ColumnAlignment.Left, DataValue.DataType.String, aliasRequirement_Commodity, prefixRequirement_Commodity);
|
|
break;
|
|
case SbmRequirement.Column.Cmd_ColourCode:
|
|
SetRequirementColDfn(columnDfn, "Colour", 80, SbmDbDfn.ColumnIdx.Commodity_ColourCode, ColumnAlignment.Center, DataValue.DataType.String, aliasRequirement_Commodity, prefixRequirement_Commodity);
|
|
break;
|
|
case SbmRequirement.Column.Cmd_ColourDesc:
|
|
SetRequirementColDfn(columnDfn, "Colour", 100, SbmDbDfn.ColumnIdx.Commodity_ColourCode, ColumnAlignment.Left, DataValue.DataType.String, aliasRequirement_Commodity, prefixRequirement_Commodity);
|
|
break;
|
|
case SbmRequirement.Column.Cmd_SourceCode:
|
|
SetRequirementColDfn(columnDfn, "Source", 80, SbmDbDfn.ColumnIdx.Commodity_SourceCode, ColumnAlignment.Center, DataValue.DataType.String, aliasRequirement_Commodity, prefixRequirement_Commodity);
|
|
break;
|
|
case SbmRequirement.Column.Cmd_SourceDesc:
|
|
SetRequirementColDfn(columnDfn, "Source", 100, SbmDbDfn.ColumnIdx.Commodity_SourceCode, ColumnAlignment.Left, DataValue.DataType.String, aliasRequirement_Commodity, prefixRequirement_Commodity);
|
|
break;
|
|
case SbmRequirement.Column.Cmd_SupplyMethodCode:
|
|
SetRequirementColDfn(columnDfn, "Supply method", 80, SbmDbDfn.ColumnIdx.Commodity_SupplyMethodCode, ColumnAlignment.Center, DataValue.DataType.String, aliasRequirement_Commodity, prefixRequirement_Commodity);
|
|
break;
|
|
case SbmRequirement.Column.Cmd_SupplyMethodDesc:
|
|
SetRequirementColDfn(columnDfn, "Supply method", 100, SbmDbDfn.ColumnIdx.Commodity_SupplyMethodCode, ColumnAlignment.Left, DataValue.DataType.String, aliasRequirement_Commodity, prefixRequirement_Commodity);
|
|
break;
|
|
case SbmRequirement.Column.Cmd_HandlingCode:
|
|
SetRequirementColDfn(columnDfn, "Handling", 80, SbmDbDfn.ColumnIdx.Commodity_HandlingCode, ColumnAlignment.Center, DataValue.DataType.String, aliasRequirement_Commodity, prefixRequirement_Commodity);
|
|
break;
|
|
case SbmRequirement.Column.Cmd_HandlingDesc:
|
|
SetRequirementColDfn(columnDfn, "Handling", 100, SbmDbDfn.ColumnIdx.Commodity_HandlingCode, ColumnAlignment.Left, DataValue.DataType.String, aliasRequirement_Commodity, prefixRequirement_Commodity);
|
|
break;
|
|
case SbmRequirement.Column.Cmd_DeliveryCode:
|
|
SetRequirementColDfn(columnDfn, "Delivery", 80, SbmDbDfn.ColumnIdx.Commodity_DeliveryCode, ColumnAlignment.Center, DataValue.DataType.String, aliasRequirement_Commodity, prefixRequirement_Commodity);
|
|
break;
|
|
case SbmRequirement.Column.Cmd_DeliveryDesc:
|
|
SetRequirementColDfn(columnDfn, "Delivery", 100, SbmDbDfn.ColumnIdx.Commodity_DeliveryCode, ColumnAlignment.Left, DataValue.DataType.String, aliasRequirement_Commodity, prefixRequirement_Commodity);
|
|
break;
|
|
case SbmRequirement.Column.Cmd_MaterialCode:
|
|
SetRequirementColDfn(columnDfn, GetAttributeCaption(SbmDbDfn.ColumnIdx.Commodity_MaterialCode, "Material"), 90, SbmDbDfn.ColumnIdx.Commodity_MaterialCode, ColumnAlignment.Center, DataValue.DataType.String, aliasRequirement_Commodity, prefixRequirement_Commodity);
|
|
break;
|
|
case SbmRequirement.Column.Cmd_MaterialDesc:
|
|
SetRequirementColDfn(columnDfn, GetAttributeCaption(SbmDbDfn.ColumnIdx.Commodity_MaterialCode, "Material"), 90, SbmDbDfn.ColumnIdx.Commodity_MaterialCode, ColumnAlignment.Center, DataValue.DataType.String, aliasRequirement_Commodity, prefixRequirement_Commodity);
|
|
break;
|
|
case SbmRequirement.Column.Cmd_FinishCode:
|
|
SetRequirementColDfn(columnDfn, GetAttributeCaption(SbmDbDfn.ColumnIdx.Commodity_FinishCode, "Finish"), 90, SbmDbDfn.ColumnIdx.Commodity_FinishCode, ColumnAlignment.Center, DataValue.DataType.String, aliasRequirement_Commodity, prefixRequirement_Commodity);
|
|
break;
|
|
case SbmRequirement.Column.Cmd_FinishDesc:
|
|
SetRequirementColDfn(columnDfn, GetAttributeCaption(SbmDbDfn.ColumnIdx.Commodity_FinishCode, "Finish"), 90, SbmDbDfn.ColumnIdx.Commodity_FinishCode, ColumnAlignment.Center, DataValue.DataType.String, aliasRequirement_Commodity, prefixRequirement_Commodity);
|
|
break;
|
|
case SbmRequirement.Column.Cmd_PromotionCode:
|
|
SetRequirementColDfn(columnDfn, GetAttributeCaption(SbmDbDfn.ColumnIdx.Commodity_PromotionCode, "Cmd promo"), 80, SbmDbDfn.ColumnIdx.Commodity_PromotionCode, ColumnAlignment.Center, DataValue.DataType.String, aliasRequirement_Commodity, prefixRequirement_Commodity);
|
|
break;
|
|
case SbmRequirement.Column.Cmd_PromotionDesc:
|
|
SetRequirementColDfn(columnDfn, GetAttributeCaption(SbmDbDfn.ColumnIdx.Commodity_PromotionCode, "Cmd promo"), 120, SbmDbDfn.ColumnIdx.Commodity_PromotionCode, ColumnAlignment.Left, DataValue.DataType.String, aliasRequirement_Commodity, prefixRequirement_Commodity);
|
|
break;
|
|
case SbmRequirement.Column.Cmd_Promotion_AltText:
|
|
SetRequirementColDfn(columnDfn, GetAttributeCaption(SbmDbDfn.ColumnIdx.Commodity_PromotionCode, "Cmd promo alt"), 120, SbmDbDfn.ColumnIdx.Unknown);
|
|
break;
|
|
case SbmRequirement.Column.Cmd_CostPrice:
|
|
SetRequirementColDfn(columnDfn, GetAttributeCaption(SbmDbDfn.ColumnIdx.Commodity_CostPrice, "Cost price"), 80, SbmDbDfn.ColumnIdx.Commodity_CostPrice, ColumnAlignment.Right, DataValue.DataType.Double, aliasRequirement_Commodity, prefixRequirement_Commodity);
|
|
break;
|
|
case SbmRequirement.Column.Cmd_CostPrice_Fmt:
|
|
SetRequirementColDfn(columnDfn, GetAttributeCaption(SbmDbDfn.ColumnIdx.Commodity_CostPrice, "Cost price"), 90, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.String, aliasRequirement_Commodity, prefixRequirement_Commodity);
|
|
columnDfn.SortDataName = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_CostPrice, aliasRequirement_Commodity, false);
|
|
break;
|
|
case SbmRequirement.Column.Cmd_MaterialCost:
|
|
SetRequirementColDfn(columnDfn, GetAttributeCaption(SbmDbDfn.ColumnIdx.Commodity_MaterialCost, "Material cost"), 80, SbmDbDfn.ColumnIdx.Commodity_MaterialCost, ColumnAlignment.Right, DataValue.DataType.Double, aliasRequirement_Commodity, prefixRequirement_Commodity);
|
|
break;
|
|
case SbmRequirement.Column.Cmd_MaterialCost_Fmt:
|
|
SetRequirementColDfn(columnDfn, GetAttributeCaption(SbmDbDfn.ColumnIdx.Commodity_MaterialCost, "Material cost"), 90, SbmDbDfn.ColumnIdx.Commodity_MaterialCost, ColumnAlignment.Right, DataValue.DataType.String, aliasRequirement_Commodity, prefixRequirement_Commodity);
|
|
break;
|
|
case SbmRequirement.Column.Cmd_CurrencyIdMaterial:
|
|
SetRequirementColDfn(columnDfn, "Material cost curr#", 90, SbmDbDfn.ColumnIdx.Commodity_CurrencyIdMaterial, ColumnAlignment.Right, DataValue.DataType.Long, aliasRequirement_Commodity, prefixRequirement_Commodity);
|
|
break;
|
|
case SbmRequirement.Column.Cmd_SalesPrice:
|
|
SetRequirementColDfn(columnDfn, "Sales price", 80, SbmDbDfn.ColumnIdx.Commodity_SalesPrice, ColumnAlignment.Right, DataValue.DataType.Double, aliasRequirement_Commodity, prefixRequirement_Commodity);
|
|
break;
|
|
case SbmRequirement.Column.Cmd_SalesPrice_Fmt:
|
|
SetRequirementColDfn(columnDfn, "Sales price", 90, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.String, aliasRequirement_Commodity, prefixRequirement_Commodity);
|
|
columnDfn.SortDataName = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_SalesPrice, aliasRequirement_Commodity, false);
|
|
break;
|
|
case SbmRequirement.Column.Cmd_RetailPrice:
|
|
SetRequirementColDfn(columnDfn, "Retail price", 80, SbmDbDfn.ColumnIdx.Commodity_RetailPrice, ColumnAlignment.Right, DataValue.DataType.Double, aliasRequirement_Commodity, prefixRequirement_Commodity);
|
|
break;
|
|
case SbmRequirement.Column.Cmd_RetailPrice_Fmt:
|
|
SetRequirementColDfn(columnDfn, "Retail price", 90, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.String, aliasRequirement_Commodity, prefixRequirement_Commodity);
|
|
columnDfn.SortDataName = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_RetailPrice, aliasRequirement_Commodity, false);
|
|
break;
|
|
case SbmRequirement.Column.Cmd_CarriageCostIndicative:
|
|
SetRequirementColDfn(columnDfn, "Carriage cost (ind)", 90, SbmDbDfn.ColumnIdx.Commodity_CarriageCostIndicative, ColumnAlignment.Right, DataValue.DataType.Double, aliasRequirement_Commodity, prefixRequirement_Commodity);
|
|
break;
|
|
case SbmRequirement.Column.Cmd_CarriageCostIndicative_Fmt:
|
|
SetRequirementColDfn(columnDfn, "Carriage cost (ind)", 100, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.String, aliasRequirement_Commodity, prefixRequirement_Commodity);
|
|
columnDfn.SortDataName = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_CarriageCostIndicative, aliasRequirement_Commodity, false);
|
|
break;
|
|
//-----------------------------------------------------------------
|
|
// Customer's commodity details.
|
|
case SbmRequirement.Column.Cmd_Cust_ProductCode:
|
|
SetRequirementColDfn(columnDfn, "Customer product", 90, SbmDbDfn.ColumnIdx.CommodityCustomer_ProductCode, ColumnAlignment.Center, DataValue.DataType.String, aliasRequirement_CommodityCustomer, prefixRequirement_CommodityCustomer);
|
|
break;
|
|
case SbmRequirement.Column.Cmd_Cust_RetailPrice:
|
|
if (canViewSalesFinancials)
|
|
SetRequirementColDfn(columnDfn, "Customer retail", 80, SbmDbDfn.ColumnIdx.CommodityCustomer_AmountRetail, ColumnAlignment.Right, DataValue.DataType.Double, aliasRequirement_CommodityCustomer, prefixRequirement_CommodityCustomer);
|
|
break;
|
|
case SbmRequirement.Column.Cmd_Cust_RetailPrice_Fmt:
|
|
if (canViewSalesFinancials)
|
|
SetRequirementColDfn(columnDfn, "Customer retail", 80, SbmDbDfn.ColumnIdx.CommodityCustomer_AmountRetail, ColumnAlignment.Right, DataValue.DataType.String, aliasRequirement_CommodityCustomer, prefixRequirement_CommodityCustomer);
|
|
break;
|
|
case SbmRequirement.Column.Cmd_Cust_CurrencyIdRetail:
|
|
SetRequirementColDfn(columnDfn, "Customer retail curr#", 60, SbmDbDfn.ColumnIdx.CommodityCustomer_CurrencyIdRetail, ColumnAlignment.Right, DataValue.DataType.Long, aliasRequirement_CommodityCustomer, prefixRequirement_CommodityCustomer);
|
|
break;
|
|
case SbmRequirement.Column.Cmd_Cust_PromotionCode:
|
|
SetRequirementColDfn(columnDfn, GetAttributeCaption(SbmDbDfn.ColumnIdx.CommodityCustomer_PromotionCode, "Cust promo"), 80, SbmDbDfn.ColumnIdx.CommodityCustomer_PromotionCode, ColumnAlignment.Center, DataValue.DataType.String, aliasRequirement_CommodityCustomer, prefixRequirement_CommodityCustomer);
|
|
break;
|
|
case SbmRequirement.Column.Cmd_Cust_PromotionDesc:
|
|
SetRequirementColDfn(columnDfn, GetAttributeCaption(SbmDbDfn.ColumnIdx.CommodityCustomer_PromotionCode, "Cust promo"), 120, SbmDbDfn.ColumnIdx.CommodityCustomer_PromotionCode, ColumnAlignment.Left, DataValue.DataType.String, aliasRequirement_CommodityCustomer, prefixRequirement_CommodityCustomer);
|
|
break;
|
|
case SbmRequirement.Column.Cmd_Cust_Promotion_AltText:
|
|
SetRequirementColDfn(columnDfn, GetAttributeCaption(SbmDbDfn.ColumnIdx.CommodityCustomer_PromotionCode, "Cust promo alt"), 120, SbmDbDfn.ColumnIdx.Unknown);
|
|
break;
|
|
//-----------------------------------------------------------------
|
|
// Container items:
|
|
case SbmRequirement.Column.CntItm_Count:
|
|
SetRequirementColDfn(columnDfn, "Container items", 85, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.Long);
|
|
columnDfn.DataName = cntItmCount;
|
|
break;
|
|
case SbmRequirement.Column.CntItm_Quantity:
|
|
SetRequirementColDfn(columnDfn, "Qty (container)", 90, SbmDbDfn.ColumnIdx.ContainerItem_Quantity, ColumnAlignment.Right, DataValue.DataType.Double, aliasRequirment_ContainerItem, prefixRequirement_ContainerItem);
|
|
columnDfn.NumDecimals = (byte)orderQuantityDecimals;
|
|
break;
|
|
//-----------------------------------------------------------------
|
|
case SbmRequirement.Column.NextProcessDesc:
|
|
SetRequirementColDfn(columnDfn, "Next process", 120, SbmDbDfn.ColumnIdx.Unknown);
|
|
columnDfn.DataName = prefixRequirement_Process + SbmDbDfn.GetColumnName(SbmDbDfn.ColumnIdx.Process_DescBrief);
|
|
break;
|
|
//-----------------------------------------------------------------
|
|
// Associated requirements:
|
|
case SbmRequirement.Column.AssocReqnt_Reqnt_Id:
|
|
SetRequirementColDfn(columnDfn, "AssocReqnt_Id", 90, SbmDbDfn.ColumnIdx.Requirement_Id, ColumnAlignment.Right, DataValue.DataType.Double, aliasAssociated_Requirement, prefixAssociated_Requirement);
|
|
break;
|
|
case SbmRequirement.Column.AssocReqnt_Reqnt_RefCount:
|
|
SetRequirementColDfn(columnDfn, "AssocReqnt_RefCount", 90, SbmDbDfn.ColumnIdx.Unknown);
|
|
columnDfn.DataName = assocReqntRefCount;
|
|
break;
|
|
case SbmRequirement.Column.AssocReqnt_Trans_Id:
|
|
SetRequirementColDfn(columnDfn, "AssocReqnt_TransId", 90, SbmDbDfn.ColumnIdx.Transaction_Id, ColumnAlignment.Right, DataValue.DataType.Double, aliasAssociated_Requirement_Transaction, prefixAssociated_Requirement_Transaction);
|
|
break;
|
|
case SbmRequirement.Column.AssocReqnt_Trans_Type:
|
|
SetRequirementColDfn(columnDfn, "AssocReqnt_Trans_Type", 90, SbmDbDfn.ColumnIdx.Transaction_Type, ColumnAlignment.Right, DataValue.DataType.Double, aliasAssociated_Requirement_Transaction, prefixAssociated_Requirement_Transaction);
|
|
break;
|
|
case SbmRequirement.Column.AssocReqnt_Trans_Ref:
|
|
SetRequirementColDfn(columnDfn, "AssocReqnt_Trans_Ref", 100, SbmDbDfn.ColumnIdx.Transaction_Ref, ColumnAlignment.Center, DataValue.DataType.String, aliasAssociated_Requirement_Transaction, prefixAssociated_Requirement_Transaction);
|
|
break;
|
|
case SbmRequirement.Column.AssocReqnt_Trans_AffTarget_Name:
|
|
SetRequirementColDfn(columnDfn, "AssocReqnt_Trans_AffTarget_Name", 140, SbmDbDfn.ColumnIdx.Affiliate_Name, ColumnAlignment.Center, DataValue.DataType.String, aliasAssociated_Requirement_Transaction_AffiliateTarget, prefixAssociated_Requirement_Transaction_AffiliateTarget);
|
|
break;
|
|
case SbmRequirement.Column.AssocReqnt_Reqnt_AmountNet:
|
|
SetRequirementColDfn(columnDfn, "AssocReqnt_AmountNet", 90, SbmDbDfn.ColumnIdx.Requirement_AmountNet, ColumnAlignment.Right, DataValue.DataType.Double, aliasAssociated_Requirement, prefixAssociated_Requirement);
|
|
break;
|
|
case SbmRequirement.Column.AssocReqnt_ItemLink_DataContent:
|
|
SetRequirementColDfn(columnDfn, "AssocReqnt_ItemLink_DataContent", 160, SbmDbDfn.ColumnIdx.ItemLink_DataContent, ColumnAlignment.Left, DataValue.DataType.String, aliasAssociated_ItemLink, prefixAssociated_ItemLink);
|
|
break;
|
|
//-----------------------------------------------------------------
|
|
// Time records:
|
|
case SbmRequirement.Column.ConstTime_Id:
|
|
SetRequirementColDfn(columnDfn, "ConstTime_Id", 90, SbmDbDfn.ColumnIdx.Constituent_Id, ColumnAlignment.Right, DataValue.DataType.Long, aliasRequirment_ConstituentTime, prefixRequirement_ConstituentTime);
|
|
break;
|
|
case SbmRequirement.Column.ConstTime_Quantity:
|
|
SetRequirementColDfn(columnDfn, "ConstTime_Quantity", 90, SbmDbDfn.ColumnIdx.Constituent_Quantity, ColumnAlignment.Right, DataValue.DataType.Double, aliasRequirment_ConstituentTime, prefixRequirement_ConstituentTime);
|
|
break;
|
|
case SbmRequirement.Column.ConstTime_AffTarget_Name:
|
|
SetRequirementColDfn(columnDfn, "ConstTime_AffTarget_Name", 90, SbmDbDfn.ColumnIdx.Affiliate_Name, ColumnAlignment.Left, DataValue.DataType.String, aliasRequirment_ConstituentTime_AffiliateTarget, prefixRequirement_ConstituentTime_AffiliateTarget);
|
|
break;
|
|
//-----------------------------------------------------------------
|
|
// Stock levels:
|
|
case SbmRequirement.Column.Stock_Current: // Current stock level.
|
|
SetRequirementColDfn(columnDfn, "Stock (curr)", 80, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.NumDecimals = (byte)orderQuantityDecimals;
|
|
columnDfn.DataName = reqStockCurrent;
|
|
break;
|
|
case SbmRequirement.Column.Stock_BySalesLocation01:
|
|
SetRequirementColDfn(columnDfn, "Stock @ 1", 80, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.NumDecimals = (byte)orderQuantityDecimals;
|
|
columnDfn.DataName = reqStockSalesLoc01;
|
|
break;
|
|
case SbmRequirement.Column.Stock_BySalesLocation02:
|
|
SetRequirementColDfn(columnDfn, "Stock @ 2", 80, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.NumDecimals = (byte)orderQuantityDecimals;
|
|
columnDfn.DataName = reqStockSalesLoc02;
|
|
break;
|
|
case SbmRequirement.Column.Stock_BySalesLocation03:
|
|
SetRequirementColDfn(columnDfn, "Stock @ 3", 80, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.NumDecimals = (byte)orderQuantityDecimals;
|
|
columnDfn.DataName = reqStockSalesLoc03;
|
|
break;
|
|
case SbmRequirement.Column.Stock_DueImminently:
|
|
SetRequirementColDfn(columnDfn, "Stock (due im.)", 80, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.NumDecimals = (byte)orderQuantityDecimals;
|
|
columnDfn.DataName = reqStockDueImmin;
|
|
break;
|
|
case SbmRequirement.Column.Stock_Allocated: // Allocated stock.
|
|
SetRequirementColDfn(columnDfn, "Stock (alloc)", 80, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.NumDecimals = (byte)orderQuantityDecimals;
|
|
columnDfn.DataName = reqStockAllocated;
|
|
break;
|
|
case SbmRequirement.Column.Stock_Available: // Available stock (current - allocated).
|
|
SetRequirementColDfn(columnDfn, "Stock (avail)", 80, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.NumDecimals = (byte)orderQuantityDecimals;
|
|
//columnDfn.DataName = kpcReqStockAvailable);
|
|
break;
|
|
case SbmRequirement.Column.Stock_Available_MinZero: // Available stock with minimum value of zero (current - allocated).
|
|
SetRequirementColDfn(columnDfn, "Stock (avail)", 80, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.NumDecimals = (byte)orderQuantityDecimals;
|
|
break;
|
|
|
|
// Common properties.
|
|
case SbmRequirement.Column.Notes:
|
|
SetRequirementColDfn(columnDfn, "Notes", 200, SbmDbDfn.ColumnIdx.Requirement_Notes);
|
|
break;
|
|
case SbmRequirement.Column.Flag:
|
|
SetRequirementColDfn(columnDfn, "Flags", 40, SbmDbDfn.ColumnIdx.Requirement_Flags, ColumnAlignment.Center, DataValue.DataType.Long);
|
|
break;
|
|
case SbmRequirement.Column.Status:
|
|
SetRequirementColDfn(columnDfn, "Status", 50, SbmDbDfn.ColumnIdx.Requirement_Status, ColumnAlignment.Center);
|
|
break;
|
|
case SbmRequirement.Column.Status_Desc:
|
|
SetRequirementColDfn(columnDfn, "Status", 50, SbmDbDfn.ColumnIdx.Requirement_Status);
|
|
break;
|
|
case SbmRequirement.Column.Status_Ind:
|
|
SetRequirementColDfn(columnDfn, "Status", 50, SbmDbDfn.ColumnIdx.Requirement_Status, ColumnAlignment.Center, DataValue.DataType.TriState);
|
|
columnDfn.TriStateFormat = ColumnTriStateFormat.Lights;
|
|
break;
|
|
case SbmRequirement.Column.CreateOn_Date:
|
|
SetRequirementColDfn(columnDfn, "Created", 65, SbmDbDfn.ColumnIdx.Requirement_CreateOn, ColumnAlignment.Center, DataValue.DataType.Date);
|
|
columnDfn.DateFormat = "d-MMM-yy";
|
|
columnDfn.ReadOnly = true;
|
|
break;
|
|
case SbmRequirement.Column.UpdateOn_Date:
|
|
SetRequirementColDfn(columnDfn, "Updated", 65, SbmDbDfn.ColumnIdx.Requirement_UpdateOn, ColumnAlignment.Center, DataValue.DataType.Date);
|
|
columnDfn.DateFormat = "d-MMM-yy";
|
|
columnDfn.ReadOnly = true;
|
|
break;
|
|
}
|
|
if (!String.IsNullOrEmpty(caption))
|
|
columnDfn.Caption = caption;
|
|
if (width > 0)
|
|
columnDfn.Width = width;
|
|
return columnDfn;
|
|
}
|
|
|
|
//-------------------------------------------------------------------
|
|
// Query filter.
|
|
public override List<string> GetRequirementQueryFilter(SbmRequirement.Params prm)
|
|
{
|
|
List<String> filter = new List<String>();
|
|
String tableAlias = StringUtil.OnEmpty(prm.TableAlias, aliasRequirement);
|
|
|
|
//---------------------------------------------------------------
|
|
// Validate the parameters.
|
|
#if DEBUG
|
|
if (!SysId.IsValid(AffiliateId_Owner) && !SysId.IsValid(prm.AssociationId) && !SysId.IsValid(prm.CommodityId) && !SysId.IsValid(prm.TransactionRequirementSourceId) && !prm.TransactionIdsIncluded.HasValidIds() && !prm.RequirementIdsIncluded.HasValidIds() && !prm.RequirementIdsSource.HasValidIds())
|
|
SaLogger.Trace("\t### " + GetType().Name + ".GetRequirementQueryFilter - Owner/association/transaction not specified.");
|
|
#endif
|
|
|
|
//---------------------------------------------------------------
|
|
// Affiliate Owner - only need to be filtered if no significant Ids specified.
|
|
bool filterByOwner = !SysId.IsValid(prm.AssociationId) && !SysId.IsValid(prm.CommodityId) && !SysId.IsValid(prm.TransactionRequirementSourceId) && !prm.TransactionIdsIncluded.HasValidIds() && !prm.RequirementIdsIncluded.HasValidIds() && !prm.RequirementIdsSource.HasValidIds();
|
|
if (filterByOwner)
|
|
filter.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Requirement_AffIdOwner, tableAlias, false) + "=" + SysId.ToString(AffiliateId_Owner));
|
|
|
|
//---------------------------------------------------------------
|
|
// Association Details.
|
|
// Association Id.
|
|
String colRequirement_AssocId = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Requirement_AssocId, tableAlias, false);
|
|
if (SysId.IsValid(prm.AssociationId))
|
|
filter.Add(colRequirement_AssocId + "=" + prm.AssociationId.ToString());
|
|
|
|
// Association coding.
|
|
String assocFilter = DbQuery.FormatForCondition(prm.AssociationPartial);
|
|
String accountManagerCode = DbQuery.FormatForCondition(prm.AccountManagerCode);
|
|
String accountHandlerCode = DbQuery.FormatForCondition(prm.AccountHandlerCode);
|
|
if (!StringUtil.IsEmpty(assocFilter) || !StringUtil.IsEmpty(accountManagerCode) || !StringUtil.IsEmpty(accountHandlerCode))
|
|
{
|
|
|
|
String tableAlias_Assoc = "aReqAssFlt";
|
|
String tableAlias_AssocTarget = "aReqAssTgtFlt";
|
|
String colAssociation_Id = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_Id, tableAlias_Assoc, false);
|
|
DbQuery qryAssoc = new DbQuery(Database.DbmsType);
|
|
qryAssoc.Tables.Add(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Association), tableAlias_Assoc);
|
|
qryAssoc.Columns.Add(colAssociation_Id);
|
|
qryAssoc.Filters.Add(colAssociation_Id + "=" + colRequirement_AssocId);
|
|
// Are the target contact details required.
|
|
bool requireAffiliate = StringUtil.IsEmpty(assocFilter);
|
|
if (requireAffiliate)
|
|
{
|
|
String colAffiliate_Id = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Affiliate_Id, tableAlias_AssocTarget, false);
|
|
String colAssociation_AffIdTarget = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_AffIdTarget, tableAlias_Assoc, false);
|
|
qryAssoc.Tables.Add(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Affiliate), tableAlias_AssocTarget);
|
|
qryAssoc.Filters.Add(colAffiliate_Id + "=" + colAssociation_AffIdTarget);
|
|
}
|
|
// Target name.
|
|
if (StringUtil.IsEmpty(assocFilter))
|
|
{
|
|
// The association filter will match to either the association code or affiliate name.
|
|
String colAssociation_Code = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_Code, tableAlias_Assoc, false);
|
|
String colAffiliate_Name = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Affiliate_Name, tableAlias_AssocTarget, false);
|
|
List<String> filterAssoc = new List<String>();
|
|
filterAssoc.Add(DbQuery.FormatFn_Left(colAssociation_Code, prm.AssociationPartial.Length) + "='" + assocFilter + "'");
|
|
filterAssoc.Add(DbQuery.FormatFn_Left(colAffiliate_Name, prm.AssociationPartial.Length) + "='" + assocFilter + "'");
|
|
qryAssoc.Filters.Add(filterAssoc.Concat(" OR ", "(", ")"));
|
|
}
|
|
// Account Manager.
|
|
if (!StringUtil.IsEmpty(accountManagerCode))
|
|
{
|
|
String colAssociation_AccountManagerCode = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_AccountManagerCode, tableAlias_Assoc, false);
|
|
qryAssoc.Filters.Add(colAssociation_AccountManagerCode + "='" + accountManagerCode + "'");
|
|
}
|
|
// Account Handler.
|
|
if (!StringUtil.IsEmpty(accountHandlerCode))
|
|
{
|
|
String colAssociation_AccountHandlerCode = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_AccountHandlerCode, tableAlias_Assoc, false);
|
|
qryAssoc.Filters.Add(colAssociation_AccountHandlerCode + "='" + accountHandlerCode + "'");
|
|
}
|
|
// Add this Association sub-query to the filter.
|
|
filter.Add("EXISTS(" + qryAssoc.BuildQuery() + ")");
|
|
}
|
|
|
|
//---------------------------------------------------------------
|
|
// Transaction filter.
|
|
String colRequirement_TransId = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Requirement_TransId, tableAlias, false);
|
|
if (prm.TransactionIdsIncluded.HasValidIds())
|
|
filter.Add(colRequirement_TransId + " IN(" + prm.TransactionIdsIncluded.Concat(",") + ")");
|
|
if (prm.TransactionIdsExcluded.HasValidIds())
|
|
filter.Add(colRequirement_TransId + " NOT IN(" + prm.TransactionIdsExcluded.Concat(",") + ")");
|
|
|
|
// Transaction parameters.
|
|
SbmTransaction.Params prmTrans = new SbmTransaction.Params();
|
|
prmTrans.TableAlias = StringUtil.OnEmpty(prm.AliasTransaction, "ReqTra");
|
|
prmTrans.IncludeDefaultFilter = false;
|
|
prmTrans.TransactionType = prm.TransactionType;
|
|
prmTrans.LocationIdStock = prm.TransactionLocationIdStock;
|
|
prmTrans.StatusCat = prm.TransactionStatusCat;
|
|
prmTrans.TransRefPartial = prm.TransactionRefPartial;
|
|
prmTrans.TransRefExtPartial = prm.TransactionRefExtPartial;
|
|
prmTrans.TransDescBriefPartial = prm.TransactionDescBriefPartial;
|
|
prmTrans.RaisedFrom = prm.TransactionRaisedFrom;
|
|
prmTrans.RaisedTo = prm.TransactionRaisedTo;
|
|
prmTrans.RequiredFrom = prm.TransactionRequiredFrom;
|
|
prmTrans.RequiredTo = prm.TransactionRequiredTo;
|
|
prmTrans.AmountNetLt = prm.TransactionAmountNetLt;
|
|
prmTrans.AmountNetGt = prm.TransactionAmountNetGt;
|
|
prmTrans.ActiveOn = prm.TransactionActiveOn;
|
|
prmTrans.ActiveFrom = prm.TransactionActiveFrom;
|
|
prmTrans.ActiveTo = prm.TransactionActiveTo;
|
|
prmTrans.ForceFullResults = true;
|
|
List<String> transactionFilters = TransactionMgr.GetTransactionQueryFilter(prmTrans);
|
|
if (transactionFilters.Count > 0)
|
|
{
|
|
prmTrans.ForceFullResults = true;
|
|
if (StringUtil.IsEmpty(prm.AliasTransaction))
|
|
{
|
|
// Transaction table not joined in main query - use a sub query.
|
|
DbQuery qryTrans = new DbQuery(Database.DbmsType);
|
|
qryTrans.Tables.Add(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Transaction), prmTrans.TableAlias);
|
|
qryTrans.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Transaction_Id, prmTrans.TableAlias, false));
|
|
qryTrans.Filters.AddRange(transactionFilters);
|
|
filter.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Requirement_TransId, tableAlias, false) + " In(" + qryTrans.BuildQuery() + ")");
|
|
}
|
|
else
|
|
// Transaction table is joined in main query and can be filtered directly.
|
|
filter.AddRange(transactionFilters);
|
|
}
|
|
|
|
//---------------------------------------------------------------
|
|
// Requirement Details:
|
|
// IncludeIds & ExcludeIds.
|
|
String includedIds = prm.RequirementIdsIncluded.Concat(",");
|
|
String colRequirement_Id = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Requirement_Id, tableAlias);
|
|
if (!StringUtil.IsEmpty(includedIds))
|
|
filter.Add(colRequirement_Id + " IN (" + includedIds + ")");
|
|
String excludedIds = prm.RequirementIdsExcluded.Concat(",");
|
|
if (!StringUtil.IsEmpty(excludedIds))
|
|
filter.Add(colRequirement_Id + " NOT IN (" + excludedIds + ")");
|
|
|
|
// Source Requirement.
|
|
String colRequirement_ReqntIdSource = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Requirement_ReqntIdSource, tableAlias, false);
|
|
if (prm.RequirementIdsSource.HasValidIds())
|
|
filter.Add(colRequirement_ReqntIdSource + " IN (" + prm.RequirementIdsSource.Concat(",") + ")");
|
|
|
|
// Source Requirment Transaction.
|
|
if (SysId.IsValid(prm.TransactionRequirementSourceId))
|
|
{
|
|
String tableAlias_ReqntSource = "ReqSrcFlt";
|
|
String colRequirementId_ReqntSource = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Requirement_Id, tableAlias_ReqntSource, false);
|
|
DbQuery qryTrans = new DbQuery(Database.DbmsType);
|
|
qryTrans.Tables.Add(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Requirement), tableAlias_ReqntSource);
|
|
qryTrans.Columns.Add(colRequirementId_ReqntSource);
|
|
qryTrans.Filters.Add(colRequirementId_ReqntSource + "=" + SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Requirement_ReqntIdSource, tableAlias, false));
|
|
if (SysId.IsValid(prm.TransactionRequirementSourceId))
|
|
qryTrans.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Requirement_TransId, tableAlias_ReqntSource, false) + "=" + prm.TransactionRequirementSourceId.ToString());
|
|
// Add this transaction sub-query to the filter.
|
|
filter.Add("EXISTS(" + qryTrans.BuildQuery() + ")");
|
|
}
|
|
|
|
// Requirement DescBrief.
|
|
String reqntDescBrief = DbQuery.FormatForCondition(prm.RequirementDescBrief);
|
|
String Requirement_DescBrief = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Requirement_DescBrief, tableAlias, false);
|
|
if (!reqntDescBrief.IsEmpty())
|
|
filter.Add(DbQuery.FormatFn_Left(Requirement_DescBrief, reqntDescBrief.Length) + "='" + reqntDescBrief + "'");
|
|
|
|
// Promotion Code.
|
|
if (!StringUtil.IsEmpty(prm.RequirementPromotionCode))
|
|
filter.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Requirement_PromotionCode, tableAlias, false) + "='" + DbQuery.FormatForCondition(prm.RequirementPromotionCode) + "'");
|
|
|
|
|
|
//---------------------------------------------------------------
|
|
// Commodity Details)
|
|
// Id.
|
|
if (SysId.IsValid(prm.CommodityId))
|
|
filter.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Requirement_CommodityId, tableAlias, false) + "=" + prm.CommodityId.ToString());
|
|
|
|
// Product Code.
|
|
if (!prm.RequirementProductCodeFull.IsEmpty() || !prm.RequirementProductCodePartial.IsEmpty())
|
|
{
|
|
String reqntProductCodeFull = DbQuery.FormatForCondition(prm.RequirementProductCodeFull);
|
|
String reqntProductCodePartial = DbQuery.FormatForCondition(prm.RequirementProductCodePartial);
|
|
String colRequirement_ProductCode = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Requirement_ProductCode, tableAlias);
|
|
if (!reqntProductCodeFull.IsEmpty())
|
|
{
|
|
filter.Add(colRequirement_ProductCode + "='" + reqntProductCodeFull + "'");
|
|
}
|
|
else if (!reqntProductCodePartial.IsEmpty())
|
|
{
|
|
if (SessionConsole != null && AllowConfigOption(Sbm.ConfigOption.CommodityPartialCodeFilter))
|
|
filter.Add(colRequirement_ProductCode + " LIKE '%" + DbQuery.FormatForLike(reqntProductCodePartial) + "%'");
|
|
else filter.Add(DbQuery.FormatFn_Left(colRequirement_ProductCode, prm.RequirementProductCodePartial.Length) + "='" + reqntProductCodePartial + "'");
|
|
}
|
|
}
|
|
|
|
//---------------------------------------------------------------
|
|
// Associated items which used ItemLink & ItemType
|
|
if (!StringUtil.IsEmpty(prm.AssocItemProductCodeFull) || SysId.IsValid(prm.CmdIdAssocItem))
|
|
{
|
|
// Query item links with this requirement as the parent where the child requirement item refers to the specified commodity.
|
|
String tableAlias_ItemLink = "aReqItmLink";
|
|
String colItemLink_ItemIdTo = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.ItemLink_ItemIdTo, tableAlias_ItemLink, false);
|
|
String colItemLink_ItemIdFrom = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.ItemLink_ItemIdFrom, tableAlias_ItemLink, false);
|
|
String colItemLink_Type = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.ItemLink_Type, tableAlias_ItemLink, false);
|
|
String colItemLink_ItemTypeFrom = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.ItemLink_ItemTypeFrom, tableAlias_ItemLink, false);
|
|
String colItemLink_ItemTypeTo = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.ItemLink_ItemTypeTo, tableAlias_ItemLink, false);
|
|
DbQuery qryLink = new DbQuery(Database.DbmsType);
|
|
qryLink.Tables.Add(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.ItemLink), tableAlias_ItemLink);
|
|
String tableAlias_ItemLinkReqnt = "aReqItmLinkReqnt";
|
|
qryLink.Tables.Add(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Requirement), tableAlias_ItemLinkReqnt);
|
|
qryLink.Columns.Add(colItemLink_ItemIdFrom);
|
|
qryLink.Filters.Add(colItemLink_Type + "=" + ((int)Sbm.ItemLinkType.Requirement_AssociatedItem).ToString());
|
|
qryLink.Filters.Add(colItemLink_ItemTypeFrom + "=" + ((int)Sbm.ItemType.Requirement).ToString());
|
|
qryLink.Filters.Add(colItemLink_ItemTypeTo + "=" + ((int)Sbm.ItemType.Requirement).ToString());
|
|
qryLink.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Requirement_Id, tableAlias_ItemLinkReqnt, false) + "=" + colItemLink_ItemIdTo);
|
|
if (SysId.IsValid(prm.CmdIdAssocItem))
|
|
qryLink.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Requirement_CommodityId, tableAlias_ItemLinkReqnt, false) + "=" + prm.CmdIdAssocItem.ToString());
|
|
if (!StringUtil.IsEmpty(prm.AssocItemProductCodeFull))
|
|
qryLink.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Requirement_ProductCode, tableAlias_ItemLinkReqnt, false) + "='" + DbQuery.FormatForCondition(prm.AssocItemProductCodeFull) + "'");
|
|
// Add this linked requirement sub-query to the filter.
|
|
filter.Add(colRequirement_Id + " IN (" + qryLink.BuildQuery() + ")");
|
|
}
|
|
|
|
//------------------------------------------------------------------
|
|
// Project Task Code.
|
|
if (!StringUtil.IsEmpty(prm.RequirementProjectTaskCodeFull) || !StringUtil.IsEmpty(prm.RequirementProjectTaskCodePartial))
|
|
{
|
|
String colRequirement_ProductCode = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Requirement_ProductCode, tableAlias, false);
|
|
if (!StringUtil.IsEmpty(prm.RequirementProjectTaskCodeFull))
|
|
filter.Add(colRequirement_ProductCode + "='" + DbQuery.FormatForCondition(prm.RequirementProjectTaskCodeFull) + "'");
|
|
else if (!StringUtil.IsEmpty(prm.RequirementProjectTaskCodePartial))
|
|
{
|
|
String reqntProjectTaskCodePartial = DbQuery.FormatForCondition(prm.RequirementProjectTaskCodePartial);
|
|
filter.Add(DbQuery.FormatFn_Left(colRequirement_ProductCode, prm.RequirementProjectTaskCodePartial.Length) + "='" + reqntProjectTaskCodePartial + "'");
|
|
}
|
|
// Force the transaction type of 'Project'.
|
|
if (prm.TransactionType != Sbm.TransactionType.Project)
|
|
{
|
|
String tableAlias_TransactionProject = "ReqTraProj";
|
|
String colTransaction_Id = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Transaction_Id, tableAlias_TransactionProject, false);
|
|
String colTransaction_Type = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Transaction_Type, tableAlias_TransactionProject, false);
|
|
DbQuery qryTrans = new DbQuery(Database.DbmsType);
|
|
qryTrans.Tables.Add(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Transaction), tableAlias_TransactionProject);
|
|
qryTrans.Columns.Add(colTransaction_Id);
|
|
qryTrans.Filters.Add(colTransaction_Id + "=" + colRequirement_TransId);
|
|
qryTrans.Filters.Add(colTransaction_Type + "=" + Sbm.TransactionType.Project);
|
|
filter.Add("EXISTS(" + qryTrans.BuildQuery() + ")");
|
|
}
|
|
}
|
|
|
|
//---------------------------------------------------------------
|
|
// Job Number.
|
|
if (!StringUtil.IsEmpty(prm.RequirementJobNumberFull) || !StringUtil.IsEmpty(prm.RequirementJobNumberPartial))
|
|
{
|
|
String colRequirement_JobNumber = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Requirement_JobNumber, tableAlias, false);
|
|
if (!StringUtil.IsEmpty(prm.RequirementJobNumberFull))
|
|
filter.Add(colRequirement_JobNumber + "='" + DbQuery.FormatForCondition(prm.RequirementJobNumberFull) + "'");
|
|
else if (!StringUtil.IsEmpty(prm.RequirementJobNumberPartial))
|
|
filter.Add(DbQuery.FormatFn_Left(colRequirement_JobNumber, prm.RequirementJobNumberPartial.Length) + "='" + DbQuery.FormatForCondition(prm.RequirementJobNumberPartial) + "'");
|
|
}
|
|
|
|
|
|
//---------------------------------------------------------------
|
|
// Asset Id.
|
|
if (SysId.IsValid(prm.AssetId))
|
|
filter.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Requirement_AssetId, tableAlias, false) + "=" + prm.AssetId.ToString());
|
|
|
|
/* Asset Serial.
|
|
prm.ReqntAssetSerialFull;
|
|
prm.ReqntAssetSerialPartial;*/
|
|
|
|
//---------------------------------------------------------------
|
|
// Required date.
|
|
if (DateUtil.IsValid(prm.RequirementRequiredFrom))
|
|
{
|
|
filter.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Requirement_Required, tableAlias, false) + ">=" + DbQuery.FormatForCondition(prm.RequirementRequiredFrom.ToString()));
|
|
}
|
|
if (DateUtil.IsValid(prm.RequirementRequiredTo))
|
|
{
|
|
filter.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Requirement_Required, tableAlias, false) + "<" + DbQuery.FormatForCondition(prm.RequirementRequiredTo.ToLongDateString() + 1));
|
|
}
|
|
|
|
//---------------------------------------------------------------
|
|
// Status category.
|
|
if (prm.StatusCat == SbmRequirement.StatusCat.NotDeleted)
|
|
filter.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Requirement_Status, tableAlias, false) + "<>'" + StatusDeleted + "'");
|
|
else if (prm.StatusCat == SbmRequirement.StatusCat.NotCancelled)
|
|
filter.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Requirement_Status, tableAlias, false) + "<>'" + StatusCancelled + "'");
|
|
else if (!StringUtil.IsEmpty(RequirementStatusCats.GetCodeForType(prm.StatusCat)))
|
|
filter.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Requirement_StatusCat, tableAlias, false) + "='" + RequirementStatusCats.GetCodeForType(prm.StatusCat) + "'");
|
|
|
|
//---------------------------------------------------------------
|
|
// Commodity material and finish.
|
|
if (!StringUtil.IsEmpty(prm.CmdMaterialCode) || !StringUtil.IsEmpty(prm.CmdFinishCode))
|
|
{
|
|
String tableAlias_Commodity = "ReqntCmdFlt";
|
|
String colCommodity_Id = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_Id, tableAlias_Commodity, false);
|
|
String colRequirement_CommodityId = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Requirement_CommodityId, tableAlias, false);
|
|
DbQuery qryCmd = new DbQuery(Database.DbmsType);
|
|
qryCmd.Tables.Add(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Commodity), tableAlias_Commodity);
|
|
qryCmd.Columns.Add(colCommodity_Id);
|
|
qryCmd.Filters.Add(colCommodity_Id + "=" + colRequirement_CommodityId);
|
|
// Commodity Material.
|
|
if (!StringUtil.IsEmpty(prm.CmdMaterialCode))
|
|
qryCmd.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_MaterialCode, tableAlias_Commodity, false) + "='" + DbQuery.FormatForCondition(prm.CmdMaterialCode) + "'");
|
|
// Commodity Finish.
|
|
if (!StringUtil.IsEmpty(prm.CmdFinishCode))
|
|
qryCmd.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_FinishCode, tableAlias_Commodity, false) + "='" + DbQuery.FormatForCondition(prm.CmdFinishCode) + "'");
|
|
// Add this Commodity sub-query to the filter.
|
|
filter.Add("EXISTS(" + qryCmd.BuildQuery() + ")");
|
|
}
|
|
|
|
//------------------------------------------------------------------------
|
|
// Common properties.
|
|
if (!StringUtil.IsEmpty(prm.NotesPartial))
|
|
filter.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Requirement_Notes, tableAlias) + " LIKE '%" + DbQuery.FormatForLike(prm.NotesPartial) + "%'");
|
|
|
|
if (filter.Count < 1 && prm.IncludeDefaultFilter) filter.Add("1=1");
|
|
return filter;
|
|
}
|
|
|
|
//-------------------------------------------------------------------
|
|
// Sort columns.
|
|
public List<String> GetRequirementSortColumns(SbmRequirement.Params prm)
|
|
{
|
|
String tableAlias = StringUtil.OnEmpty(prm.TableAlias, aliasRequirement);
|
|
// Sort sequence.
|
|
List<String> sortColumnCodes = new List<String>();
|
|
foreach (var columnDfn in prm.SortColumns)
|
|
{
|
|
// Need to ensure correct alias used for Requirement columns in case of conflict.
|
|
String sortCol = String.Empty;
|
|
if (SbmDbDfn.GetTableForColumn((SbmDbDfn.ColumnIdx)columnDfn.DbColumn) == SbmDbDfn.TableIdx.Requirement)
|
|
{
|
|
sortCol = SbmDbDfn.GetColumnNameQual((SbmDbDfn.ColumnIdx)columnDfn.DbColumn, tableAlias);
|
|
}
|
|
else
|
|
{
|
|
sortCol = columnDfn.DataName;
|
|
if (!StringUtil.IsEmpty(columnDfn.SortDataName))
|
|
sortCol = columnDfn.SortDataName;
|
|
}
|
|
if (!sortCol.IsEmpty())
|
|
{
|
|
DbOrderByNullMode orderByNullMode = DbOrderByNullMode.Default; // eSaOrderByDemoteNulls, eSaOrderByPromoteNulls
|
|
sortColumnCodes.Add(DbQuery.FormatForOrderBy(sortCol, columnDfn.SortAscending, orderByNullMode).Concat(", "));
|
|
}
|
|
}
|
|
sortColumnCodes.RemoveBlanks();
|
|
if (sortColumnCodes.IsEmpty())
|
|
{
|
|
// Default sort columns:
|
|
sortColumnCodes.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Requirement_TransId, tableAlias) + " ASC");
|
|
sortColumnCodes.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Requirement_Type, tableAlias) + " ASC");
|
|
sortColumnCodes.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Requirement_Seq, tableAlias) + " ASC");
|
|
}
|
|
return sortColumnCodes;
|
|
}
|
|
|
|
//-------------------------------------------------------------------
|
|
// Requirement count.
|
|
private long GetRequirementCount(String filter)
|
|
{
|
|
ClearErrorState();
|
|
return Database.GetRowCount(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Requirement) + " As " + aliasRequirement, filter);
|
|
}
|
|
public override long GetRequirementCount(SbmRequirement.Params prm)
|
|
{
|
|
ClearErrorState();
|
|
return GetRequirementCount(GetRequirementQueryFilter(prm).Concat(" AND ", "(", ")"));
|
|
}
|
|
|
|
//-------------------------------------------------------------------
|
|
// Requirement list.
|
|
public override List<SbmRequirement> GetRequirementList(SbmRequirement.Params prm)
|
|
{
|
|
ClearErrorState();
|
|
List<SbmRequirement> requirements = new List<SbmRequirement>();
|
|
DbQuery qry = new DbQuery(Database.DbmsType);
|
|
qry.Tables.Add(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Requirement), aliasRequirement);
|
|
Requirement_Db dbRequirement = new Requirement_Db(DbInfo);
|
|
qry.Columns.AddRange(dbRequirement.ExistingColumnNames);
|
|
qry.Filters.AddRange(GetRequirementQueryFilter(prm));
|
|
qry.OrderBy.AddRange(GetRequirementSortColumns(prm));
|
|
// Query data.
|
|
using (var dbConnection = Database.CreateConnection())
|
|
using (var dbCommand = dbConnection.CreateCommand())
|
|
{
|
|
try
|
|
{
|
|
dbConnection.Open();
|
|
dbCommand.CommandText = qry.BuildQuery(prm.ResultsPaging);
|
|
using (DbDataReader dbDataReader = dbCommand.ExecuteReader())
|
|
{
|
|
while (dbDataReader.Read())
|
|
{
|
|
dbRequirement = new Requirement_Db(DbInfo);
|
|
dbRequirement.PopulateFrom(dbDataReader);
|
|
requirements.Add(CreateRequirement(dbRequirement));
|
|
}
|
|
}
|
|
}
|
|
catch (Exception exc)
|
|
{
|
|
SetErrorState("Database query exception");
|
|
SaLogger.Warn($"{SysUtil.Fn}\n\tQuery: {dbCommand.CommandText}\n\t{ExceptionUtil.GetErrorStateMessage(exc)}");
|
|
}
|
|
}
|
|
return requirements;
|
|
}
|
|
public override List<SbmRequirement> GetRequirementsForTransaction(SysId transactionId)
|
|
{
|
|
SbmRequirement.Params prmRequirement = new SbmRequirement.Params();
|
|
prmRequirement.TransactionIdsIncluded.Add(transactionId);
|
|
prmRequirement.StatusCat = SbmRequirement.StatusCat.Any;
|
|
return GetRequirementList(prmRequirement);
|
|
}
|
|
|
|
//-------------------------------------------------------------------
|
|
// Requirement query execution.
|
|
public override DbResultSet ExecuteRequirementQuery(List<ColumnDfn> columns, SbmRequirement.Params prm)
|
|
{
|
|
ClearErrorState();
|
|
//------------------------------------------------------------------
|
|
// Construct build database query.
|
|
DbQuery query = new DbQuery(Database.DbmsType);
|
|
bool canViewSupplyFinancials = UserCanViewCommoditySupplyFinancials();
|
|
bool canViewSalesFinancials = UserCanViewCommoditySalesFinancials();
|
|
|
|
// Columns required.
|
|
bool requirementPromotionReq = columns.HasId((int)SbmRequirement.Column.PromotionCode) || columns.HasId((int)SbmRequirement.Column.PromotionDesc) || columns.HasId((int)SbmRequirement.Column.Promotion_AltText);
|
|
bool commodityPromotionReq = columns.HasId((int)SbmRequirement.Column.Cmd_PromotionCode) || columns.HasId((int)SbmRequirement.Column.Cmd_PromotionDesc) || columns.HasId((int)SbmRequirement.Column.Cmd_Promotion_AltText);
|
|
bool customerPromotionReq = columns.HasId((int)SbmRequirement.Column.Cmd_Cust_PromotionCode) || columns.HasId((int)SbmRequirement.Column.Cmd_Cust_PromotionDesc) || columns.HasId((int)SbmRequirement.Column.Cmd_Cust_Promotion_AltText);
|
|
|
|
//------------------------------------------------------------------
|
|
// Requirement Properties - add columns as defined in query list.
|
|
query.Tables.Add(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Requirement), aliasRequirement);
|
|
query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Requirement_Id, aliasRequirement));
|
|
query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Requirement_TransId, aliasRequirement));
|
|
if (columns.HasId((int)SbmRequirement.Column.Seq)) query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Requirement_Seq, aliasRequirement));
|
|
if (columns.HasId((int)SbmRequirement.Column.Required) || columns.HasId((int)SbmRequirement.Column.RequiredTime) || columns.HasId((int)SbmRequirement.Column.Required_Fmt))
|
|
query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Requirement_Required, aliasRequirement));
|
|
if (columns.HasId((int)SbmRequirement.Column.Started) || columns.HasId((int)SbmRequirement.Column.StartedTime) || columns.HasId((int)SbmRequirement.Column.Started_Day))
|
|
query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Requirement_Started, aliasRequirement));
|
|
if (columns.HasId((int)SbmRequirement.Column.Completed) || columns.HasId((int)SbmRequirement.Column.CompletedTime))
|
|
query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Requirement_Completed, aliasRequirement));
|
|
if ((columns.HasId((int)SbmRequirement.Column.JobNumber) || columns.HasId((int)SbmRequirement.Column.OrderItem_JobNumber)) && ColumnExists(SbmDbDfn.ColumnIdx.Requirement_JobNumber))
|
|
query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Requirement_JobNumber, aliasRequirement));
|
|
if (columns.HasId((int)SbmRequirement.Column.CommodityId)) query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Requirement_CommodityId, aliasRequirement));
|
|
if (columns.HasId((int)SbmRequirement.Column.ProductCode)) query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Requirement_ProductCode, aliasRequirement));
|
|
if (columns.HasId((int)SbmRequirement.Column.DescBrief)) query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Requirement_DescBrief, aliasRequirement));
|
|
if (columns.HasId((int)SbmRequirement.Column.DescOutline)) query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Requirement_DescOutline, aliasRequirement));
|
|
if (columns.HasId((int)SbmRequirement.Column.DescDetail)) query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Requirement_DescDetail, aliasRequirement));
|
|
if (requirementPromotionReq || commodityPromotionReq || customerPromotionReq)
|
|
query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Requirement_PromotionCode, aliasRequirement));
|
|
if (columns.HasId((int)SbmRequirement.Column.NominalCode)) query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Requirement_NominalCode, aliasRequirement));
|
|
if (columns.HasId((int)SbmRequirement.Column.Quantity) || columns.HasId((int)SbmRequirement.Column.AmountUnitNet))
|
|
query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Requirement_Quantity, aliasRequirement));
|
|
if (columns.HasId((int)SbmRequirement.Column.QuantityProd)) query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Requirement_QuantityProd, aliasRequirement));
|
|
if (canViewSalesFinancials)
|
|
{
|
|
query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Requirement_AmountUnit, aliasRequirement));
|
|
if (columns.HasId((int)SbmRequirement.Column.AmountAct) || columns.HasId((int)SbmRequirement.Column.AmountAct_Fmt)) query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Requirement_AmountAct, aliasRequirement));
|
|
query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Requirement_AmountNet, aliasRequirement));
|
|
if (columns.HasId((int)SbmRequirement.Column.TaxCodeId)) query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Requirement_TaxCodeId, aliasRequirement));
|
|
if (columns.HasId((int)SbmRequirement.Column.TaxRate)) query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Requirement_TaxRate, aliasRequirement));
|
|
if (columns.HasId((int)SbmRequirement.Column.AmountTax) || columns.HasId((int)SbmRequirement.Column.AmountTax_Fmt)) query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Requirement_AmountTax));
|
|
query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Requirement_AmountTot, aliasRequirement));
|
|
}
|
|
// Common Properties
|
|
if (columns.HasId((int)SbmRequirement.Column.Notes))
|
|
query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Requirement_Notes, aliasRequirement));
|
|
if (columns.HasId((int)SbmRequirement.Column.Flag))
|
|
query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Requirement_Flags, aliasRequirement));
|
|
if (columns.HasId((int)SbmRequirement.Column.Status) || columns.HasId((int)SbmRequirement.Column.Status_Desc) || columns.HasId((int)SbmRequirement.Column.Status_Ind))
|
|
query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Requirement_Status, aliasRequirement));
|
|
if (columns.HasId((int)SbmRequirement.Column.CreateOn_Date))
|
|
query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Requirement_CreateOn, aliasRequirement));
|
|
if (columns.HasId((int)SbmRequirement.Column.UpdateOn_Date))
|
|
query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Requirement_UpdateOn, aliasRequirement));
|
|
|
|
//------------------------------------------------------------------
|
|
// Requirement timing.
|
|
bool requiresReqColTimeEst =
|
|
(columns.HasId((int)SbmRequirement.Column.TimeEst) ||
|
|
columns.HasId((int)SbmRequirement.Column.TimeEstMins) ||
|
|
columns.HasId((int)SbmRequirement.Column.TimeEstWithMins) ||
|
|
columns.HasId((int)SbmRequirement.Column.TimeEstUnit) ||
|
|
columns.HasId((int)SbmRequirement.Column.TimeEstUnitMins) ||
|
|
columns.HasId((int)SbmRequirement.Column.TimeEstUnitWithMins));
|
|
bool requiresReqColTimeAct =
|
|
(columns.HasId((int)SbmRequirement.Column.TimeAct) ||
|
|
columns.HasId((int)SbmRequirement.Column.TimeActMins) ||
|
|
columns.HasId((int)SbmRequirement.Column.TimeActWithMins) ||
|
|
columns.HasId((int)SbmRequirement.Column.TimeActUnit) ||
|
|
columns.HasId((int)SbmRequirement.Column.TimeActUnitMins) ||
|
|
columns.HasId((int)SbmRequirement.Column.TimeActUnitWithMins));
|
|
bool requiresReqColTimeTot =
|
|
(columns.HasId((int)SbmRequirement.Column.TimeTot) ||
|
|
columns.HasId((int)SbmRequirement.Column.TimeTotMins) ||
|
|
columns.HasId((int)SbmRequirement.Column.TimeTotWithMins));
|
|
if (requiresReqColTimeEst) query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Requirement_TimeEst, aliasRequirement));
|
|
if (requiresReqColTimeAct) query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Requirement_TimeAct, aliasRequirement));
|
|
if (requiresReqColTimeTot) query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Requirement_TimeTot, aliasRequirement));
|
|
// Job costing.
|
|
if (CostColumnsAreAvailable() && canViewSupplyFinancials)
|
|
{
|
|
if (columns.HasId((int)SbmRequirement.Column.CostTotal) || columns.HasId((int)SbmRequirement.Column.CostTotal_Fmt) || columns.HasId((int)SbmRequirement.Column.AmountMargin) || columns.HasId((int)SbmRequirement.Column.AmountMargin_Fmt) || columns.HasId((int)SbmRequirement.Column.PercentMargin) || columns.HasId((int)SbmRequirement.Column.PercentMargin_Fmt))
|
|
query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Requirement_CostTotal, aliasRequirement));
|
|
if (columns.HasId((int)SbmRequirement.Column.CostCalculated))
|
|
query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Requirement_CostCalculated, aliasRequirement));
|
|
}
|
|
|
|
//------------------------------------------------------------------
|
|
// Owner.
|
|
bool hasOwnerCols = false;
|
|
if (!hasOwnerCols) hasOwnerCols = columns.HasId((int)SbmRequirement.Column.Owner_Name);
|
|
if (hasOwnerCols)
|
|
{
|
|
// Join to the Owner affiliate.
|
|
DbQueryJoin joinAffOwner = new DbQueryJoin(DbJoinType.LeftOuter);
|
|
joinAffOwner.Table = new StringPair(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Affiliate), aliasRequirement_AffiliateOwner);
|
|
joinAffOwner.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Affiliate_Id, aliasRequirement_AffiliateOwner) + "=" + SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Requirement_AffIdOwner, aliasRequirement));
|
|
query.Joins.Add(joinAffOwner);
|
|
// Add the affiliate columns.
|
|
List<SbmDbDfn.ColumnIdx> affiliateCols = new List<SbmDbDfn.ColumnIdx>();
|
|
affiliateCols.Add(SbmDbDfn.ColumnIdx.Affiliate_Name);
|
|
foreach (SbmDbDfn.ColumnIdx dbColumn in affiliateCols)
|
|
query.Columns.Add(SbmDbDfn.GetColumnNameQual(dbColumn, aliasRequirement_AffiliateOwner), prefixTransaction_AffiliateOwner + SbmDbDfn.GetColumnName(dbColumn, false));
|
|
}
|
|
|
|
//------------------------------------------------------------------
|
|
// Association Details.
|
|
bool hasAssocCols = false;
|
|
bool hasAssocTargetCols = false;
|
|
if (!hasAssocCols) hasAssocCols = columns.HasId((int)SbmRequirement.Column.Assoc_Code);
|
|
if (!hasAssocCols) hasAssocCols = (columns.HasId((int)SbmRequirement.Column.Assoc_AccountManagerCode) || columns.HasId((int)SbmRequirement.Column.Assoc_AccountManagerDesc));
|
|
if (!hasAssocCols) hasAssocCols = (columns.HasId((int)SbmRequirement.Column.Assoc_AccountHandlerCode) || columns.HasId((int)SbmRequirement.Column.Assoc_AccountHandlerDesc));
|
|
if (!hasAssocTargetCols) hasAssocTargetCols = columns.HasId((int)SbmRequirement.Column.Assoc_Target_Name);
|
|
if (!hasAssocTargetCols) hasAssocTargetCols = columns.HasId((int)SbmRequirement.Column.Assoc_Target_PhoneMain);
|
|
if (!hasAssocTargetCols) hasAssocTargetCols = columns.HasId((int)SbmRequirement.Column.Assoc_Target_PhoneAlt);
|
|
bool hasTgtAddrCols = false;
|
|
if (!hasTgtAddrCols) hasTgtAddrCols = columns.HasId((int)SbmRequirement.Column.Trans_AssocTarget_Address);
|
|
if (!hasTgtAddrCols) hasTgtAddrCols = columns.HasId((int)SbmRequirement.Column.Trans_AssocTarget_Address_Name);
|
|
if (!hasTgtAddrCols) hasTgtAddrCols = columns.HasId((int)SbmRequirement.Column.Trans_AssocTarget_Address_Line1);
|
|
if (!hasTgtAddrCols) hasTgtAddrCols = columns.HasId((int)SbmRequirement.Column.Trans_AssocTarget_Address_Line2);
|
|
if (!hasTgtAddrCols) hasTgtAddrCols = columns.HasId((int)SbmRequirement.Column.Trans_AssocTarget_Address_Line3);
|
|
if (!hasTgtAddrCols) hasTgtAddrCols = columns.HasId((int)SbmRequirement.Column.Trans_AssocTarget_Address_City);
|
|
if (!hasTgtAddrCols) hasTgtAddrCols = columns.HasId((int)SbmRequirement.Column.Trans_AssocTarget_Address_Province);
|
|
if (!hasTgtAddrCols) hasTgtAddrCols = columns.HasId((int)SbmRequirement.Column.Trans_AssocTarget_Address_Postcode);
|
|
if (hasAssocCols || hasAssocTargetCols || hasTgtAddrCols)
|
|
{
|
|
// Join to the Association table.
|
|
DbQueryJoin joinAssoc = new DbQueryJoin(DbJoinType.LeftOuter);
|
|
joinAssoc.Table = new StringPair(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Association), aliasRequirement_Association);
|
|
joinAssoc.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_Id, aliasRequirement_Association, false) + "=" + SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Requirement_AssocId, aliasRequirement));
|
|
query.Joins.Add(joinAssoc);
|
|
// Add the association columns.
|
|
List<SbmDbDfn.ColumnIdx> associationCols = new List<SbmDbDfn.ColumnIdx>();
|
|
if (columns.HasId((int)SbmRequirement.Column.Assoc_Code)) associationCols.Add(SbmDbDfn.ColumnIdx.Association_Code);
|
|
if (columns.HasId((int)SbmRequirement.Column.Assoc_AccountManagerCode) || columns.HasId((int)SbmRequirement.Column.Assoc_AccountManagerDesc))
|
|
associationCols.Add(SbmDbDfn.ColumnIdx.Association_AccountManagerCode);
|
|
if (columns.HasId((int)SbmRequirement.Column.Assoc_AccountHandlerCode) || columns.HasId((int)SbmRequirement.Column.Assoc_AccountHandlerDesc))
|
|
associationCols.Add(SbmDbDfn.ColumnIdx.Association_AccountHandlerCode);
|
|
foreach (SbmDbDfn.ColumnIdx dbColumn in associationCols)
|
|
query.Columns.Add(SbmDbDfn.GetColumnNameQual(dbColumn, aliasRequirement_Association), prefixRequirement_Association + SbmDbDfn.GetColumnName(dbColumn, false));
|
|
if (hasAssocTargetCols || hasTgtAddrCols)
|
|
{
|
|
// Target name is required.
|
|
DbQueryJoin joinAssocTarget = new DbQueryJoin(DbJoinType.LeftOuter);
|
|
joinAssocTarget.Table = new StringPair(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Affiliate), aliasRequirement_AssAffTarget);
|
|
joinAssocTarget.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Affiliate_Id, aliasRequirement_AssAffTarget, false) + "=" + SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_AffIdTarget, aliasRequirement_Association, false));
|
|
query.Joins.Add(joinAssocTarget);
|
|
// Add the affiliate columns.
|
|
List<SbmDbDfn.ColumnIdx> assaffTargeCols = new List<SbmDbDfn.ColumnIdx>();
|
|
if (columns.HasId((int)SbmRequirement.Column.Assoc_Target_Name)) assaffTargeCols.Add(SbmDbDfn.ColumnIdx.Affiliate_Name);
|
|
if (columns.HasId((int)SbmRequirement.Column.Assoc_Target_PhoneMain)) assaffTargeCols.Add(SbmDbDfn.ColumnIdx.Affiliate_PhoneMain);
|
|
if (columns.HasId((int)SbmRequirement.Column.Assoc_Target_PhoneAlt)) assaffTargeCols.Add(SbmDbDfn.ColumnIdx.Affiliate_PhoneAlt);
|
|
foreach (SbmDbDfn.ColumnIdx dbColumn in assaffTargeCols)
|
|
query.Columns.Add(SbmDbDfn.GetColumnNameQual(dbColumn, aliasRequirement_AssAffTarget), prefixRequirement_AssAffTarget + SbmDbDfn.GetColumnName(dbColumn, false));
|
|
|
|
// Target address.
|
|
if (hasTgtAddrCols)
|
|
{
|
|
// Join to the target affiliate - NB Use an alias to avoid clashing with the owner affiliate.
|
|
DbQueryJoin joinAddr = new DbQueryJoin(DbJoinType.LeftOuter);
|
|
joinAddr.Table = new StringPair(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Address), aliasRequirement_AddressTarget);
|
|
joinAddr.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Address_ItemType, aliasRequirement_AddressTarget, false) + "=" + ((int)Sbm.ItemType.Affiliate).ToString());
|
|
joinAddr.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Address_ItemId, aliasRequirement_AddressTarget, false) + "=" + SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Affiliate_Id, aliasRequirement_AssAffTarget, false));
|
|
joinAddr.Filters.Add(DbQuery.BuildBitMappedFilter(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Address_Flags, aliasRequirement_AddressTarget, false), SbmAddress.Flag_Primary, true));
|
|
query.Joins.Add(joinAddr);
|
|
// Add the address columns.
|
|
List<SbmDbDfn.ColumnIdx> addressTargetCols = new List<SbmDbDfn.ColumnIdx>();
|
|
addressTargetCols.Add(SbmDbDfn.ColumnIdx.Address_Name);
|
|
addressTargetCols.Add(SbmDbDfn.ColumnIdx.Address_Line1);
|
|
addressTargetCols.Add(SbmDbDfn.ColumnIdx.Address_Line2);
|
|
addressTargetCols.Add(SbmDbDfn.ColumnIdx.Address_Line3);
|
|
addressTargetCols.Add(SbmDbDfn.ColumnIdx.Address_City);
|
|
addressTargetCols.Add(SbmDbDfn.ColumnIdx.Address_Province);
|
|
addressTargetCols.Add(SbmDbDfn.ColumnIdx.Address_DescBrief);
|
|
foreach (SbmDbDfn.ColumnIdx dbColumn in addressTargetCols)
|
|
query.Columns.Add(SbmDbDfn.GetColumnNameQual(dbColumn, aliasRequirement_AddressTarget), prefixRequirement_AddressTarget + SbmDbDfn.GetColumnName(dbColumn, false));
|
|
}
|
|
}
|
|
}
|
|
|
|
//------------------------------------------------------------------
|
|
// Transaction Details.
|
|
prm.AliasTransaction = "";
|
|
bool hasTransCols = columns.HasId((int)SbmRequirement.Column.Trans_TypeDesc);
|
|
if (!hasTransCols) hasTransCols = columns.HasId((int)SbmRequirement.Column.Trans_Ref);
|
|
if (!hasTransCols) hasTransCols = columns.HasId((int)SbmRequirement.Column.Trans_RefExt);
|
|
if (!hasTransCols) hasTransCols = columns.HasId((int)SbmRequirement.Column.Trans_DescBrief);
|
|
if (!hasTransCols) hasTransCols = columns.HasId((int)SbmRequirement.Column.Trans_ContactName);
|
|
if (!hasTransCols) hasTransCols = columns.HasId((int)SbmRequirement.Column.Trans_Likelihood);
|
|
if (!hasTransCols) hasTransCols = columns.HasId((int)SbmRequirement.Column.Trans_Raised);
|
|
if (!hasTransCols) hasTransCols = (columns.HasId((int)SbmRequirement.Column.Trans_Required) || columns.HasId((int)SbmRequirement.Column.Required_Fmt));
|
|
if (!hasTransCols) hasTransCols = columns.HasId((int)SbmRequirement.Column.Trans_InProgress);
|
|
if (!hasTransCols) hasTransCols = columns.HasId((int)SbmRequirement.Column.Trans_Closed);
|
|
if (!hasTransCols) hasTransCols = columns.HasId((int)SbmRequirement.Column.Trans_ContactAreaCode) || columns.HasId((int)SbmRequirement.Column.Trans_ContactArea);
|
|
if (!hasTransCols) hasTransCols = columns.HasId((int)SbmRequirement.Column.Trans_AllocationInd) || columns.HasId((int)SbmRequirement.Column.Trans_AllocationInd_YP);
|
|
if (!hasTransCols) hasTransCols = columns.HasId((int)SbmRequirement.Column.Trans_BoxCount);
|
|
if (!hasTransCols) hasTransCols = columns.HasId((int)SbmRequirement.Column.Trans_DeliveryStatusCode) || columns.HasId((int)SbmRequirement.Column.Trans_DeliveryStatus);
|
|
if (!hasTransCols) hasTransCols = columns.HasId((int)SbmRequirement.Column.Trans_DeliveryTypeCode) || columns.HasId((int)SbmRequirement.Column.Trans_DeliveryType);
|
|
if (!hasTransCols) hasTransCols = columns.HasId((int)SbmRequirement.Column.Trans_DeliveryMethodCode) || columns.HasId((int)SbmRequirement.Column.Trans_DeliveryMethod);
|
|
if (!hasTransCols) hasTransCols = columns.HasId((int)SbmRequirement.Column.Trans_DeliveryCourierCode) || columns.HasId((int)SbmRequirement.Column.Trans_DeliveryCourier);
|
|
if (!hasTransCols) hasTransCols = columns.HasId((int)SbmRequirement.Column.Trans_DeliveryBookInCode) || columns.HasId((int)SbmRequirement.Column.Trans_DeliveryBookIn);
|
|
if (!hasTransCols) hasTransCols = columns.HasId((int)SbmRequirement.Column.Trans_StockPickerCode) || columns.HasId((int)SbmRequirement.Column.Trans_StockPicker);
|
|
if (!hasTransCols) hasTransCols = (columns.HasId((int)SbmRequirement.Column.Trans_DeliveryAmountNet) || columns.HasId((int)SbmRequirement.Column.Trans_DeliveryAmountNet_Fmt));
|
|
if (!hasTransCols) hasTransCols = (columns.HasId((int)SbmRequirement.Column.Trans_DeliveryTaxCodeId) || columns.HasId((int)SbmRequirement.Column.Trans_DeliveryTaxCode_Code) || columns.HasId((int)SbmRequirement.Column.Trans_DeliveryTaxCode_Rate));
|
|
if (!hasTransCols) hasTransCols = (columns.HasId((int)SbmRequirement.Column.Trans_DeliveryAmountTax) || columns.HasId((int)SbmRequirement.Column.Trans_DeliveryAmountTax_Fmt));
|
|
if (!hasTransCols) hasTransCols = (columns.HasId((int)SbmRequirement.Column.Trans_DeliveryAmountTot) || columns.HasId((int)SbmRequirement.Column.Trans_DeliveryAmountTot_Fmt));
|
|
if (!hasTransCols) hasTransCols = (columns.HasId((int)SbmRequirement.Column.Trans_DeliveryNominalCode) || columns.HasId((int)SbmRequirement.Column.Trans_DeliveryDepartment));
|
|
if (!hasTransCols) hasTransCols = (columns.HasId((int)SbmRequirement.Column.Trans_CurrencyId) || columns.HasId((int)SbmRequirement.Column.Trans_Currency_Code) || columns.HasId((int)SbmRequirement.Column.Trans_Currency_Symbol));
|
|
if (!hasTransCols) hasTransCols = (columns.HasId((int)SbmRequirement.Column.Trans_AmountEst) || columns.HasId((int)SbmRequirement.Column.Trans_AmountEst_Fmt));
|
|
if (!hasTransCols) hasTransCols = (columns.HasId((int)SbmRequirement.Column.Trans_AmountMax) || columns.HasId((int)SbmRequirement.Column.Trans_AmountMax_Fmt));
|
|
if (!hasTransCols) hasTransCols = (columns.HasId((int)SbmRequirement.Column.Trans_AmountNet) || columns.HasId((int)SbmRequirement.Column.Trans_AmountNet_Fmt));
|
|
if (!hasTransCols) hasTransCols = (columns.HasId((int)SbmRequirement.Column.Trans_AmountTax) || columns.HasId((int)SbmRequirement.Column.Trans_AmountTax_Fmt));
|
|
if (!hasTransCols) hasTransCols = (columns.HasId((int)SbmRequirement.Column.Trans_AmountTot) || columns.HasId((int)SbmRequirement.Column.Trans_AmountTot_Fmt));
|
|
if (!hasTransCols) hasTransCols = columns.HasId((int)SbmRequirement.Column.Trans_TimeEst);
|
|
if (!hasTransCols) hasTransCols = columns.HasId((int)SbmRequirement.Column.Trans_TimeAct);
|
|
if (!hasTransCols) hasTransCols = columns.HasId((int)SbmRequirement.Column.Trans_TimeTot);
|
|
if (!hasTransCols) hasTransCols = columns.HasId((int)SbmRequirement.Column.Trans_CostLabourRateHour);
|
|
if (!hasTransCols) hasTransCols = columns.HasId((int)SbmRequirement.Column.Trans_Notes);
|
|
if (!hasTransCols) hasTransCols = columns.HasId((int)SbmRequirement.Column.Trans_Flags);
|
|
if (!hasTransCols) hasTransCols = (columns.HasId((int)SbmRequirement.Column.Trans_AllocationInd) || columns.HasId((int)SbmRequirement.Column.Trans_AllocationInd_YP));
|
|
if (!hasTransCols) hasTransCols = (columns.HasId((int)SbmRequirement.Column.Trans_ReplacementOrder_Tick) || columns.HasId((int)SbmRequirement.Column.Trans_ReplacementOrder_Y));
|
|
if (!hasTransCols) hasTransCols = columns.HasId((int)SbmRequirement.Column.Trans_StatusDesc) || columns.HasId((int)SbmRequirement.Column.Trans_StatusInd);
|
|
if (!hasTransCols) hasTransCols = columns.HasId((int)SbmRequirement.Column.Trans_Status_OnHold_Tick) || columns.HasId((int)SbmRequirement.Column.Trans_Status_OnHold_Cross) || columns.HasId((int)SbmRequirement.Column.Trans_Status_OnHold_Y);
|
|
// Source Transaction fields.
|
|
bool hasSourceTransCols = columns.HasId((int)SbmRequirement.Column.Trans_SourceTrans_Ref);
|
|
// Formatted currency fields - require transaction currency Id.
|
|
bool hasFormattedCurrencyFields = (columns.HasId((int)SbmRequirement.Column.AmountUnit_Fmt) || columns.HasId((int)SbmRequirement.Column.AmountAct_Fmt));
|
|
if (!hasFormattedCurrencyFields) hasFormattedCurrencyFields = (columns.HasId((int)SbmRequirement.Column.AmountUnitNet_Fmt) || columns.HasId((int)SbmRequirement.Column.AmountNet_Fmt));
|
|
if (!hasFormattedCurrencyFields) hasFormattedCurrencyFields = (columns.HasId((int)SbmRequirement.Column.AmountTax_Fmt) || columns.HasId((int)SbmRequirement.Column.AmountTot_Fmt));
|
|
if (!hasFormattedCurrencyFields) hasFormattedCurrencyFields = (columns.HasId((int)SbmRequirement.Column.CostTotal_Fmt) || columns.HasId((int)SbmRequirement.Column.AmountMargin_Fmt));
|
|
if (!hasFormattedCurrencyFields) hasFormattedCurrencyFields = (columns.HasId((int)SbmRequirement.Column.Trans_CostTotal_Fmt) || columns.HasId((int)SbmRequirement.Column.Trans_AmountMargin_Fmt));
|
|
bool hasTransCostCols = (columns.HasId((int)SbmRequirement.Column.Trans_CostTotal) || columns.HasId((int)SbmRequirement.Column.Trans_CostTotal_Fmt));
|
|
if (!hasTransCostCols) hasTransCostCols = (columns.HasId((int)SbmRequirement.Column.Trans_AmountMargin) || columns.HasId((int)SbmRequirement.Column.Trans_AmountMargin_Fmt));
|
|
if (!hasTransCostCols) hasTransCostCols = (columns.HasId((int)SbmRequirement.Column.Trans_PercentMargin) || columns.HasId((int)SbmRequirement.Column.Trans_PercentMargin_Fmt));
|
|
if (hasTransCols || hasSourceTransCols || hasFormattedCurrencyFields)
|
|
{
|
|
// So that requirement filter uses the joined transaction table rather than a sub query.
|
|
prm.AliasTransaction = aliasRequirement_Transaction;
|
|
// Join to the Transaction table.
|
|
DbQueryJoin joinTrans = new DbQueryJoin(DbJoinType.LeftOuter);
|
|
joinTrans.Table = new StringPair(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Transaction), aliasRequirement_Transaction);
|
|
joinTrans.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Transaction_Id, aliasRequirement_Transaction, false) + "=" + SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Requirement_TransId, aliasRequirement));
|
|
query.Joins.Add(joinTrans);
|
|
// Add the transaction columns.
|
|
List<SbmDbDfn.ColumnIdx> transactionCols = new List<SbmDbDfn.ColumnIdx>();
|
|
if (columns.HasId((int)SbmRequirement.Column.TransId)) transactionCols.Add(SbmDbDfn.ColumnIdx.Transaction_Id);
|
|
if (columns.HasId((int)SbmRequirement.Column.Trans_TypeDesc)) transactionCols.Add(SbmDbDfn.ColumnIdx.Transaction_Type);
|
|
if (columns.HasId((int)SbmRequirement.Column.Trans_Ref)) transactionCols.Add(SbmDbDfn.ColumnIdx.Transaction_Ref);
|
|
if (columns.HasId((int)SbmRequirement.Column.Trans_RefExt)) transactionCols.Add(SbmDbDfn.ColumnIdx.Transaction_RefExt);
|
|
if (columns.HasId((int)SbmRequirement.Column.Trans_DescBrief)) transactionCols.Add(SbmDbDfn.ColumnIdx.Transaction_DescBrief);
|
|
if (columns.HasId((int)SbmRequirement.Column.Trans_ContactName)) transactionCols.Add(SbmDbDfn.ColumnIdx.Transaction_ContactName);
|
|
if (columns.HasId((int)SbmRequirement.Column.Trans_Likelihood)) transactionCols.Add(SbmDbDfn.ColumnIdx.Transaction_Likelihood);
|
|
if (columns.HasId((int)SbmRequirement.Column.Trans_Raised)) transactionCols.Add(SbmDbDfn.ColumnIdx.Transaction_Raised);
|
|
if (columns.HasId((int)SbmRequirement.Column.Trans_Required) || columns.HasId((int)SbmRequirement.Column.Required_Fmt))
|
|
transactionCols.Add(SbmDbDfn.ColumnIdx.Transaction_Required);
|
|
if (columns.HasId((int)SbmRequirement.Column.Trans_InProgress)) transactionCols.Add(SbmDbDfn.ColumnIdx.Transaction_InProgress);
|
|
if (columns.HasId((int)SbmRequirement.Column.Trans_Closed)) transactionCols.Add(SbmDbDfn.ColumnIdx.Transaction_Closed);
|
|
if (columns.HasId((int)SbmRequirement.Column.Trans_ContactAreaCode) || columns.HasId((int)SbmRequirement.Column.Trans_ContactArea))
|
|
transactionCols.Add(SbmDbDfn.ColumnIdx.Transaction_ContactAreaCode);
|
|
if (columns.HasId((int)SbmRequirement.Column.Trans_BoxCount)) transactionCols.Add(SbmDbDfn.ColumnIdx.Transaction_BoxCount);
|
|
if (columns.HasId((int)SbmRequirement.Column.Trans_DeliveryStatusCode) || columns.HasId((int)SbmRequirement.Column.Trans_DeliveryStatus))
|
|
transactionCols.Add(SbmDbDfn.ColumnIdx.Transaction_DeliveryStatusCode);
|
|
if (columns.HasId((int)SbmRequirement.Column.Trans_DeliveryTypeCode) || columns.HasId((int)SbmRequirement.Column.Trans_DeliveryType))
|
|
transactionCols.Add(SbmDbDfn.ColumnIdx.Transaction_DeliveryTypeCode);
|
|
if (columns.HasId((int)SbmRequirement.Column.Trans_DeliveryMethodCode) || columns.HasId((int)SbmRequirement.Column.Trans_DeliveryMethod))
|
|
transactionCols.Add(SbmDbDfn.ColumnIdx.Transaction_DeliveryMethodCode);
|
|
if (columns.HasId((int)SbmRequirement.Column.Trans_DeliveryCourierCode) || columns.HasId((int)SbmRequirement.Column.Trans_DeliveryCourier))
|
|
transactionCols.Add(SbmDbDfn.ColumnIdx.Transaction_DeliveryCourierCode);
|
|
if (columns.HasId((int)SbmRequirement.Column.Trans_DeliveryBookInCode) || columns.HasId((int)SbmRequirement.Column.Trans_DeliveryBookIn))
|
|
transactionCols.Add(SbmDbDfn.ColumnIdx.Transaction_DeliveryBookInCode);
|
|
if (columns.HasId((int)SbmRequirement.Column.Trans_StockPickerCode) || columns.HasId((int)SbmRequirement.Column.Trans_StockPicker))
|
|
transactionCols.Add(SbmDbDfn.ColumnIdx.Transaction_StockPickerCode);
|
|
if (columns.HasId((int)SbmRequirement.Column.Trans_DeliveryNominalCode)) transactionCols.Add(SbmDbDfn.ColumnIdx.Transaction_DeliveryNominalCode);
|
|
if (columns.HasId((int)SbmRequirement.Column.Trans_DeliveryDepartment)) transactionCols.Add(SbmDbDfn.ColumnIdx.Transaction_DeliveryDepartment);
|
|
if (columns.HasId((int)SbmRequirement.Column.Trans_DeliveryTaxCodeId)) transactionCols.Add(SbmDbDfn.ColumnIdx.Transaction_TaxCodeIdDelivery);
|
|
transactionCols.Add(SbmDbDfn.ColumnIdx.Transaction_CurrencyId); // May be required for formatted requirement columns (or transaction currency columns).
|
|
if (canViewSalesFinancials)
|
|
{
|
|
if (columns.HasId((int)SbmRequirement.Column.Trans_DeliveryAmountNet) || columns.HasId((int)SbmRequirement.Column.Trans_DeliveryAmountNet_Fmt)) transactionCols.Add(SbmDbDfn.ColumnIdx.Transaction_DeliveryAmountNet);
|
|
if (columns.HasId((int)SbmRequirement.Column.Trans_DeliveryAmountTax) || columns.HasId((int)SbmRequirement.Column.Trans_DeliveryAmountTax_Fmt)) transactionCols.Add(SbmDbDfn.ColumnIdx.Transaction_DeliveryAmountTax);
|
|
if (columns.HasId((int)SbmRequirement.Column.Trans_DeliveryAmountTot) || columns.HasId((int)SbmRequirement.Column.Trans_DeliveryAmountTot_Fmt)) transactionCols.Add(SbmDbDfn.ColumnIdx.Transaction_DeliveryAmountTot);
|
|
if (columns.HasId((int)SbmRequirement.Column.Trans_AmountEst) || columns.HasId((int)SbmRequirement.Column.Trans_AmountEst_Fmt)) transactionCols.Add(SbmDbDfn.ColumnIdx.Transaction_AmountEst);
|
|
if (columns.HasId((int)SbmRequirement.Column.Trans_AmountMax) || columns.HasId((int)SbmRequirement.Column.Trans_AmountMax_Fmt)) transactionCols.Add(SbmDbDfn.ColumnIdx.Transaction_AmountMax);
|
|
if (columns.HasId((int)SbmRequirement.Column.Trans_AmountNet) || columns.HasId((int)SbmRequirement.Column.Trans_AmountNet_Fmt) || hasTransCostCols)
|
|
transactionCols.Add(SbmDbDfn.ColumnIdx.Transaction_AmountNet);
|
|
if (columns.HasId((int)SbmRequirement.Column.Trans_AmountTax) || columns.HasId((int)SbmRequirement.Column.Trans_AmountTax_Fmt)) transactionCols.Add(SbmDbDfn.ColumnIdx.Transaction_AmountTax);
|
|
if (columns.HasId((int)SbmRequirement.Column.Trans_AmountTot) || columns.HasId((int)SbmRequirement.Column.Trans_AmountTot_Fmt)) transactionCols.Add(SbmDbDfn.ColumnIdx.Transaction_AmountTot);
|
|
}
|
|
if (columns.HasId((int)SbmRequirement.Column.Trans_TimeEst)) transactionCols.Add(SbmDbDfn.ColumnIdx.Transaction_TimeEst);
|
|
if (columns.HasId((int)SbmRequirement.Column.Trans_TimeAct)) transactionCols.Add(SbmDbDfn.ColumnIdx.Transaction_TimeAct);
|
|
if (columns.HasId((int)SbmRequirement.Column.Trans_TimeTot)) transactionCols.Add(SbmDbDfn.ColumnIdx.Transaction_TimeTot);
|
|
if (canViewSupplyFinancials && columns.HasId((int)SbmRequirement.Column.Trans_CostLabourRateHour))
|
|
transactionCols.Add(SbmDbDfn.ColumnIdx.Transaction_CostLabourRateHour);
|
|
if (columns.HasId((int)SbmRequirement.Column.Trans_Notes)) transactionCols.Add(SbmDbDfn.ColumnIdx.Transaction_Notes);
|
|
if (columns.HasId((int)SbmRequirement.Column.Trans_Flags) || columns.HasId((int)SbmRequirement.Column.Trans_AllocationInd) || columns.HasId((int)SbmRequirement.Column.Trans_AllocationInd_YP) || columns.HasId((int)SbmRequirement.Column.Trans_ReplacementOrder_Tick) || columns.HasId((int)SbmRequirement.Column.Trans_ReplacementOrder_Y))
|
|
transactionCols.Add(SbmDbDfn.ColumnIdx.Transaction_Flags);
|
|
if (columns.HasId((int)SbmRequirement.Column.Trans_StatusDesc) || columns.HasId((int)SbmRequirement.Column.Trans_StatusInd) || columns.HasId((int)SbmRequirement.Column.Trans_Status_OnHold_Tick) || columns.HasId((int)SbmRequirement.Column.Trans_Status_OnHold_Cross) || columns.HasId((int)SbmRequirement.Column.Trans_Status_OnHold_Y))
|
|
transactionCols.Add(SbmDbDfn.ColumnIdx.Transaction_Status);
|
|
foreach (SbmDbDfn.ColumnIdx dbColumn in transactionCols)
|
|
query.Columns.Add(SbmDbDfn.GetColumnNameQual(dbColumn, aliasRequirement_Transaction), prefixRequirement_Transaction + SbmDbDfn.GetColumnName(dbColumn, false));
|
|
//------------------------------------------------------------------
|
|
// Source transaction.
|
|
if (hasSourceTransCols)
|
|
{
|
|
// Join to the source transaction table.
|
|
DbQueryJoin joinSrcTra = new DbQueryJoin(DbJoinType.LeftOuter);
|
|
joinSrcTra.Table = new StringPair(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Transaction), aliasRequirement_SourceTransaction);
|
|
joinSrcTra.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Transaction_Id, aliasRequirement_SourceTransaction, false) + "=" + SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Transaction_TransIdSource, aliasRequirement_Transaction, false));
|
|
query.Joins.Add(joinSrcTra);
|
|
// Add the SourceTransaction columns.
|
|
List<SbmDbDfn.ColumnIdx> sourcreTransactionCols = new List<SbmDbDfn.ColumnIdx>();
|
|
sourcreTransactionCols.Add(SbmDbDfn.ColumnIdx.Transaction_Id);
|
|
sourcreTransactionCols.Add(SbmDbDfn.ColumnIdx.Transaction_Ref);
|
|
foreach (SbmDbDfn.ColumnIdx dbColumn in sourcreTransactionCols)
|
|
query.Columns.Add(SbmDbDfn.GetColumnNameQual(dbColumn, aliasRequirement_SourceTransaction), prefixRequirement_SourceTransaction + SbmDbDfn.GetColumnName(dbColumn, false));
|
|
}
|
|
//------------------------------------------------------------------
|
|
// Delivery taxcode.
|
|
if (columns.HasId((int)SbmRequirement.Column.Trans_DeliveryTaxCode_Code) || columns.HasId((int)SbmRequirement.Column.Trans_DeliveryTaxCode_Rate))
|
|
{
|
|
// Join to the Taxcode table.
|
|
DbQueryJoin joinDelTxc = new DbQueryJoin(DbJoinType.LeftOuter);
|
|
joinDelTxc.Table = new StringPair(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.TaxCode), aliasRequirement_DeliveryTaxcode);
|
|
joinDelTxc.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.TaxCode_Id, aliasRequirement_DeliveryTaxcode, false) + "=" + SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Transaction_TaxCodeId, aliasRequirement_Transaction, false));
|
|
query.Joins.Add(joinDelTxc);
|
|
// Add the Taxcode columns.
|
|
List<SbmDbDfn.ColumnIdx> deliveryTaxcodeCols = new List<SbmDbDfn.ColumnIdx>();
|
|
deliveryTaxcodeCols.Add(SbmDbDfn.ColumnIdx.TaxCode_Code);
|
|
deliveryTaxcodeCols.Add(SbmDbDfn.ColumnIdx.TaxCode_TaxRate);
|
|
foreach (SbmDbDfn.ColumnIdx dbColumn in deliveryTaxcodeCols)
|
|
query.Columns.Add(SbmDbDfn.GetColumnNameQual(dbColumn, aliasRequirement_DeliveryTaxcode), prefixRequirement_DeliveryTaxcode + SbmDbDfn.GetColumnName(dbColumn, false));
|
|
}
|
|
//------------------------------------------------------------------
|
|
// Currency.
|
|
if (columns.HasId((int)SbmRequirement.Column.Trans_Currency_Code) || columns.HasId((int)SbmRequirement.Column.Trans_Currency_Symbol))
|
|
{
|
|
// Join to the Currency table.
|
|
DbQueryJoin joinCurr = new DbQueryJoin(DbJoinType.LeftOuter);
|
|
joinCurr.Table = new StringPair(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Currency), aliasRequirement_Currency);
|
|
joinCurr.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Currency_Id, aliasRequirement_Currency, false) + "=" + SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Transaction_CurrencyId, aliasRequirement_Transaction, false));
|
|
query.Joins.Add(joinCurr);
|
|
// Add the Currency columns.
|
|
List<SbmDbDfn.ColumnIdx> currencyCols = new List<SbmDbDfn.ColumnIdx>();
|
|
currencyCols.Add(SbmDbDfn.ColumnIdx.Currency_Code);
|
|
currencyCols.Add(SbmDbDfn.ColumnIdx.Currency_Symbol);
|
|
foreach (SbmDbDfn.ColumnIdx dbColumn in currencyCols)
|
|
query.Columns.Add(SbmDbDfn.GetColumnNameQual(dbColumn, aliasRequirement_Currency), prefixRequirement_Currency + SbmDbDfn.GetColumnName(dbColumn, false));
|
|
}
|
|
}
|
|
|
|
//------------------------------------------------------------------
|
|
// Transaction cost.
|
|
if (hasTransCostCols && canViewSupplyFinancials)
|
|
{
|
|
// Build sub query to calculate the total cost total across all items.
|
|
String aliasRequirement_RequirementCost = "ReqCst";
|
|
String colTransCostTotal = "TraReqCount";
|
|
DbQuery qryReqntCost = new DbQuery(Database.DbmsType);
|
|
qryReqntCost.Tables.Add(new StringPair(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Requirement), aliasRequirement_RequirementCost));
|
|
qryReqntCost.Columns.Add("Sum(" + SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Requirement_CostTotal, aliasRequirement_RequirementCost, false) + ")");
|
|
qryReqntCost.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Requirement_TransId, aliasRequirement_RequirementCost, false) + "=" + SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Requirement_TransId, aliasRequirement));
|
|
query.Columns.Add("(" + qryReqntCost.BuildQuery() + ")", colTransCostTotal);
|
|
}
|
|
|
|
//------------------------------------------------------------------
|
|
// Delivery address.
|
|
bool hasTransDelAddr = false;
|
|
if (!hasTransDelAddr) hasTransDelAddr = columns.HasId((int)SbmRequirement.Column.Trans_DeliveryAddress);
|
|
if (!hasTransDelAddr) hasTransDelAddr = columns.HasId((int)SbmRequirement.Column.Trans_DeliveryAddress_Name);
|
|
if (!hasTransDelAddr) hasTransDelAddr = columns.HasId((int)SbmRequirement.Column.Trans_DeliveryAddress_Line1);
|
|
if (!hasTransDelAddr) hasTransDelAddr = columns.HasId((int)SbmRequirement.Column.Trans_DeliveryAddress_Line2);
|
|
if (!hasTransDelAddr) hasTransDelAddr = columns.HasId((int)SbmRequirement.Column.Trans_DeliveryAddress_Line3);
|
|
if (!hasTransDelAddr) hasTransDelAddr = columns.HasId((int)SbmRequirement.Column.Trans_DeliveryAddress_City);
|
|
if (!hasTransDelAddr) hasTransDelAddr = columns.HasId((int)SbmRequirement.Column.Trans_DeliveryAddress_Province);
|
|
if (!hasTransDelAddr) hasTransDelAddr = columns.HasId((int)SbmRequirement.Column.Trans_DeliveryAddress_Postcode);
|
|
if (!hasTransDelAddr) hasTransDelAddr = columns.HasId((int)SbmRequirement.Column.Trans_DeliveryAddress_Phone);
|
|
if (!hasTransDelAddr) hasTransDelAddr = columns.HasId((int)SbmRequirement.Column.Trans_DeliveryAddress_Email);
|
|
if (hasTransDelAddr)
|
|
{
|
|
// Join to the address table.
|
|
DbQueryJoin joinDelAddr = new DbQueryJoin(DbJoinType.LeftOuter);
|
|
joinDelAddr.Table = new StringPair(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Address), aliasRequirement_DeliveryAddress);
|
|
joinDelAddr.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Address_Type, aliasRequirement_DeliveryAddress, false) + "=" + Sbm.AddressType.Delivery.ToString());
|
|
joinDelAddr.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Address_ItemType, aliasRequirement_DeliveryAddress, false) + "=" + ((int)Sbm.ItemType.Transaction).ToString());
|
|
joinDelAddr.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Address_ItemId, aliasRequirement_DeliveryAddress, false) + "=" + SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Requirement_TransId, aliasRequirement));
|
|
query.Joins.Add(joinDelAddr);
|
|
// Add the address columns.
|
|
List<SbmDbDfn.ColumnIdx> deliveryAddressCols = new List<SbmDbDfn.ColumnIdx>();
|
|
deliveryAddressCols.Add(SbmDbDfn.ColumnIdx.Address_Name);
|
|
deliveryAddressCols.Add(SbmDbDfn.ColumnIdx.Address_Line1);
|
|
deliveryAddressCols.Add(SbmDbDfn.ColumnIdx.Address_Line2);
|
|
deliveryAddressCols.Add(SbmDbDfn.ColumnIdx.Address_Line3);
|
|
deliveryAddressCols.Add(SbmDbDfn.ColumnIdx.Address_City);
|
|
deliveryAddressCols.Add(SbmDbDfn.ColumnIdx.Address_Province);
|
|
deliveryAddressCols.Add(SbmDbDfn.ColumnIdx.Address_DescBrief);
|
|
deliveryAddressCols.Add(SbmDbDfn.ColumnIdx.Address_Phone);
|
|
deliveryAddressCols.Add(SbmDbDfn.ColumnIdx.Address_Email);
|
|
foreach (SbmDbDfn.ColumnIdx dbColumn in deliveryAddressCols)
|
|
query.Columns.Add(SbmDbDfn.GetColumnNameQual(dbColumn, aliasRequirement_DeliveryAddress), prefixRequirement_DeliveryAddress + SbmDbDfn.GetColumnName(dbColumn, false));
|
|
}
|
|
|
|
//------------------------------------------------------------------
|
|
// Requirement Details.
|
|
// Source requirement.
|
|
bool hasSrcReqntCols = false;
|
|
bool hasSrcReqntTransCols = false;
|
|
if (!hasSrcReqntCols) hasSrcReqntCols = columns.HasId((int)SbmRequirement.Column.SourceReqnt_DescBrief);
|
|
if (!hasSrcReqntCols) hasSrcReqntCols = columns.HasId((int)SbmRequirement.Column.SourceReqnt_JobNumber);
|
|
if (!hasSrcReqntCols) hasSrcReqntCols = columns.HasId((int)SbmRequirement.Column.OrderItem_JobNumber);
|
|
if (!hasSrcReqntTransCols) hasSrcReqntTransCols = columns.HasId((int)SbmRequirement.Column.SourceReqnt_TransRef);
|
|
if (!hasSrcReqntTransCols) hasSrcReqntTransCols = columns.HasId((int)SbmRequirement.Column.SourceReqnt_TransRefExt);
|
|
if (hasSrcReqntCols || hasSrcReqntTransCols)
|
|
{
|
|
// Join to the requirement table.
|
|
DbQueryJoin joinSrcReqnt = new DbQueryJoin(DbJoinType.LeftOuter);
|
|
joinSrcReqnt.Table = new StringPair(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Requirement), aliasRequirement_SourceRequirement);
|
|
joinSrcReqnt.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Requirement_Id, aliasRequirement_SourceRequirement, false) + "=" + SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Requirement_ReqntIdSource, aliasRequirement));
|
|
query.Joins.Add(joinSrcReqnt);
|
|
// Add the requirement columns.
|
|
List<SbmDbDfn.ColumnIdx> requirementCols = new List<SbmDbDfn.ColumnIdx>();
|
|
requirementCols.Add(SbmDbDfn.ColumnIdx.Requirement_Id);
|
|
if (columns.HasId((int)SbmRequirement.Column.SourceReqnt_DescBrief))
|
|
requirementCols.Add(SbmDbDfn.ColumnIdx.Requirement_DescBrief);
|
|
if (columns.HasId((int)SbmRequirement.Column.SourceReqnt_JobNumber) || columns.HasId((int)SbmRequirement.Column.OrderItem_JobNumber))
|
|
requirementCols.Add(SbmDbDfn.ColumnIdx.Requirement_JobNumber);
|
|
foreach (SbmDbDfn.ColumnIdx dbColumn in requirementCols)
|
|
query.Columns.Add(SbmDbDfn.GetColumnNameQual(dbColumn, aliasRequirement_SourceRequirement), prefixRequirement_SourceRequirement + SbmDbDfn.GetColumnName(dbColumn, false));
|
|
// Source requirement transaction.
|
|
if (hasSrcReqntTransCols)
|
|
{
|
|
// Join to the source requirement's transaction.
|
|
DbQueryJoin joinSrcReqntTrans = new DbQueryJoin(DbJoinType.LeftOuter);
|
|
joinSrcReqntTrans.Table = new StringPair(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Transaction), aliasRequirement_SourceRequirementTransaction);
|
|
joinSrcReqntTrans.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Transaction_Id, aliasRequirement_SourceRequirementTransaction, false) + "=" + SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Requirement_TransId, aliasRequirement_SourceRequirement, false));
|
|
query.Joins.Add(joinSrcReqntTrans);
|
|
// Add the requirement columns.
|
|
List<SbmDbDfn.ColumnIdx> sourceRequirementCols = new List<SbmDbDfn.ColumnIdx>();
|
|
//sourceRequirementCols.Add(SbmDbDfn.ColumnIdx.Transaction_Id);
|
|
if (columns.HasId((int)SbmRequirement.Column.SourceReqnt_TransRef)) sourceRequirementCols.Add(SbmDbDfn.ColumnIdx.Transaction_Ref);
|
|
if (columns.HasId((int)SbmRequirement.Column.SourceReqnt_TransRefExt)) sourceRequirementCols.Add(SbmDbDfn.ColumnIdx.Transaction_RefExt);
|
|
foreach (SbmDbDfn.ColumnIdx dbColumn in sourceRequirementCols)
|
|
query.Columns.Add(SbmDbDfn.GetColumnNameQual(dbColumn, aliasRequirement_SourceRequirementTransaction), prefixRequirement_SourceRequirementTransaction + SbmDbDfn.GetColumnName(dbColumn, false));
|
|
}
|
|
}
|
|
|
|
//------------------------------------------------------------------
|
|
// Unit of measure.
|
|
bool hasUomCols = false;
|
|
if (!hasUomCols) hasUomCols = columns.HasId((int)SbmRequirement.Column.UomDesc);
|
|
if (hasUomCols)
|
|
{
|
|
// Join to the Unit Of Measure table.
|
|
DbQueryJoin joinUom = new DbQueryJoin(DbJoinType.LeftOuter);
|
|
joinUom.Table = new StringPair(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.UnitMeasure), aliasRequirement_UnitOfMeasure);
|
|
joinUom.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.UnitMeasure_Id, aliasRequirement_UnitOfMeasure, false) + "=" + SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Requirement_UomId, aliasRequirement));
|
|
query.Joins.Add(joinUom);
|
|
// Add the UOM columns.
|
|
List<SbmDbDfn.ColumnIdx> uomCols = new List<SbmDbDfn.ColumnIdx>();
|
|
uomCols.Add(SbmDbDfn.ColumnIdx.UnitMeasure_Abbr);
|
|
uomCols.Add(SbmDbDfn.ColumnIdx.UnitMeasure_Single);
|
|
uomCols.Add(SbmDbDfn.ColumnIdx.UnitMeasure_Multiple);
|
|
foreach (SbmDbDfn.ColumnIdx dbColumn in uomCols)
|
|
query.Columns.Add(SbmDbDfn.GetColumnNameQual(dbColumn, aliasRequirement_UnitOfMeasure), prefixRequirement_UnitOfMeasure + SbmDbDfn.GetColumnName(dbColumn, false));
|
|
}
|
|
|
|
//------------------------------------------------------------------
|
|
// Tax code.
|
|
bool hasTxcCols = false;
|
|
if (!hasTxcCols) hasTxcCols = columns.HasId((int)SbmRequirement.Column.TaxCode_Code);
|
|
if (hasTxcCols)
|
|
{
|
|
// Join to the Tax Code table.
|
|
DbQueryJoin joinTxc = new DbQueryJoin(DbJoinType.LeftOuter);
|
|
joinTxc.Table = new StringPair(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.TaxCode), aliasRequirement_Taxcode);
|
|
joinTxc.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.TaxCode_Id, aliasRequirement_Taxcode, false) + "=" + SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Requirement_TaxCodeId, aliasRequirement));
|
|
query.Joins.Add(joinTxc);
|
|
// Add the Txc columns.
|
|
List<SbmDbDfn.ColumnIdx> taxcodeCols = new List<SbmDbDfn.ColumnIdx>();
|
|
taxcodeCols.Add(SbmDbDfn.ColumnIdx.TaxCode_Code);
|
|
//taxcodeCols.Add(SbmDbDfn.ColumnIdx.TaxCode_CodeAlt1);
|
|
//taxcodeCols.Add(SbmDbDfn.ColumnIdx.TaxCode_CodeAlt2);
|
|
//taxcodeCols.Add(SbmDbDfn.ColumnIdx.TaxCode_TaxRate);
|
|
foreach (SbmDbDfn.ColumnIdx dbColumn in taxcodeCols)
|
|
query.Columns.Add(SbmDbDfn.GetColumnNameQual(dbColumn, aliasRequirement_Taxcode), prefixRequirement_Taxcode + SbmDbDfn.GetColumnName(dbColumn, false));
|
|
}
|
|
|
|
//------------------------------------------------------------------
|
|
// Commodity.
|
|
bool hasColCmdDrawingNo = columns.HasId((int)SbmRequirement.Column.Cmd_DrawingNo);
|
|
bool hasColCmdDrawingIssue = columns.HasId((int)SbmRequirement.Column.Cmd_DrawingIssue);
|
|
bool hasColCmdImagePath = columns.HasId((int)SbmRequirement.Column.Cmd_ImagePath) || columns.HasId((int)SbmRequirement.Column.Cmd_Image);
|
|
bool hasColCmdCategory = columns.HasId((int)SbmRequirement.Column.Cmd_Category);
|
|
bool hasColCmdLocation = columns.HasId((int)SbmRequirement.Column.Cmd_Location);
|
|
bool hasColCmdDepartment = columns.HasId((int)SbmRequirement.Column.Cmd_Department);
|
|
bool hasColCmdCatalogRef = columns.HasId((int)SbmRequirement.Column.Cmd_CatalogRef);
|
|
bool hasColCmdWeight = (columns.HasId((int)SbmRequirement.Column.Cmd_Weight) || columns.HasId((int)SbmRequirement.Column.Cmd_WeightUnit) || columns.HasId((int)SbmRequirement.Column.Cmd_Weight_ValueUnits));
|
|
bool hasColCmdLength = (columns.HasId((int)SbmRequirement.Column.Cmd_Length) || columns.HasId((int)SbmRequirement.Column.Cmd_Width) || columns.HasId((int)SbmRequirement.Column.Cmd_Height) || columns.HasId((int)SbmRequirement.Column.Cmd_LengthUnit) || columns.HasId((int)SbmRequirement.Column.Cmd_Length_ValueUnits));
|
|
bool hasColCmdVolume = (columns.HasId((int)SbmRequirement.Column.Cmd_Volume) || columns.HasId((int)SbmRequirement.Column.Cmd_VolumeUnit) || columns.HasId((int)SbmRequirement.Column.Cmd_Volume_ValueUnits));
|
|
bool hasColCmdDensity = (columns.HasId((int)SbmRequirement.Column.Cmd_Density) || columns.HasId((int)SbmRequirement.Column.Cmd_DensityUnit) || columns.HasId((int)SbmRequirement.Column.Cmd_Density_ValueUnits));
|
|
bool hasColCmdMinOrderQty = columns.HasId((int)SbmRequirement.Column.Cmd_MinOrderQty);
|
|
bool hasColCmdPackQtySale = columns.HasId((int)SbmRequirement.Column.Cmd_PackQtySale);
|
|
bool hasColCmdBoxQuantity = (columns.HasId((int)SbmRequirement.Column.Cmd_BoxQuantity) || columns.HasId((int)SbmRequirement.Column.Cmd_BoxUnit) || columns.HasId((int)SbmRequirement.Column.Cmd_BoxQuantity_ValueUnits));
|
|
bool hasColCmdDimensions = columns.HasId((int)SbmRequirement.Column.Cmd_Dimensions);
|
|
bool hasColCmdSpecSummary = columns.HasId((int)SbmRequirement.Column.Cmd_SpecSummary);
|
|
bool hasColCmdIcnTariff = columns.HasId((int)SbmRequirement.Column.Cmd_ICNTariffCode);
|
|
bool hasColCmdRange = (columns.HasId((int)SbmRequirement.Column.Cmd_RangeCode) || columns.HasId((int)SbmRequirement.Column.Cmd_RangeDesc));
|
|
bool hasColCmdColour = (columns.HasId((int)SbmRequirement.Column.Cmd_ColourCode) || columns.HasId((int)SbmRequirement.Column.Cmd_ColourDesc));
|
|
bool hasColCmdSource = (columns.HasId((int)SbmRequirement.Column.Cmd_SourceCode) || columns.HasId((int)SbmRequirement.Column.Cmd_SourceDesc));
|
|
bool hasColCmdSupplyMethod = (columns.HasId((int)SbmRequirement.Column.Cmd_SupplyMethodCode) || columns.HasId((int)SbmRequirement.Column.Cmd_SupplyMethodDesc));
|
|
bool hasColCmdHandling = (columns.HasId((int)SbmRequirement.Column.Cmd_HandlingCode) || columns.HasId((int)SbmRequirement.Column.Cmd_HandlingDesc));
|
|
bool hasColCmdDelivery = (columns.HasId((int)SbmRequirement.Column.Cmd_DeliveryCode) || columns.HasId((int)SbmRequirement.Column.Cmd_DeliveryDesc));
|
|
bool hasColCmdMaterial = (columns.HasId((int)SbmRequirement.Column.Cmd_MaterialCode) || columns.HasId((int)SbmRequirement.Column.Cmd_MaterialDesc));
|
|
bool hasColCmdFinish = (columns.HasId((int)SbmRequirement.Column.Cmd_FinishCode) || columns.HasId((int)SbmRequirement.Column.Cmd_FinishDesc));
|
|
bool hasColCmdPromo = (requirementPromotionReq || commodityPromotionReq);
|
|
bool hasColCmdCostPrice = columns.HasId((int)SbmRequirement.Column.Cmd_CostPrice) || columns.HasId((int)SbmRequirement.Column.Cmd_CostPrice_Fmt);
|
|
bool hasColCmdMaterialCost = (columns.HasId((int)SbmRequirement.Column.Cmd_MaterialCost) || columns.HasId((int)SbmRequirement.Column.Cmd_MaterialCost_Fmt) || columns.HasId((int)SbmRequirement.Column.Cmd_CurrencyIdMaterial));
|
|
bool hasColCmdSalesPrice = (columns.HasId((int)SbmRequirement.Column.Cmd_SalesPrice) || columns.HasId((int)SbmRequirement.Column.Cmd_SalesPrice_Fmt) || columns.HasId((int)SbmRequirement.Column.PercentDiscountBySalesPrice));
|
|
bool hasColCmdRetailPrice = (columns.HasId((int)SbmRequirement.Column.Cmd_RetailPrice) || columns.HasId((int)SbmRequirement.Column.Cmd_RetailPrice_Fmt) || columns.HasId((int)SbmRequirement.Column.PercentDiscountByRetailPrice));
|
|
bool hasColCmdCarriageCostInd = (columns.HasId((int)SbmRequirement.Column.Cmd_CarriageCostIndicative) || columns.HasId((int)SbmRequirement.Column.Cmd_CarriageCostIndicative_Fmt));
|
|
bool hasCmdCols =
|
|
(hasColCmdDrawingNo || hasColCmdDrawingIssue ||
|
|
hasColCmdImagePath || hasColCmdCategory || hasColCmdLocation || hasColCmdDepartment || hasColCmdCatalogRef ||
|
|
hasColCmdWeight || hasColCmdLength || hasColCmdVolume || hasColCmdDensity || hasColCmdMinOrderQty || hasColCmdPackQtySale || hasColCmdBoxQuantity ||
|
|
hasColCmdDimensions || hasColCmdSpecSummary || hasColCmdIcnTariff ||
|
|
hasColCmdRange || hasColCmdColour || hasColCmdSource || hasColCmdSupplyMethod || hasColCmdHandling || hasColCmdDelivery ||
|
|
hasColCmdMaterial || hasColCmdFinish || hasColCmdPromo ||
|
|
hasColCmdCostPrice || hasColCmdMaterialCost || hasColCmdSalesPrice || hasColCmdRetailPrice || hasColCmdCarriageCostInd);
|
|
if (hasCmdCols)
|
|
{
|
|
// Join to the Commodity table.
|
|
DbQueryJoin joinCmd = new DbQueryJoin(DbJoinType.LeftOuter);
|
|
joinCmd.Table = new StringPair(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Commodity), aliasRequirement_Commodity);
|
|
joinCmd.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_Id, aliasRequirement_Commodity, false) + "=" + SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Requirement_CommodityId, aliasRequirement));
|
|
query.Joins.Add(joinCmd);
|
|
// Add the columns.
|
|
List<SbmDbDfn.ColumnIdx> commodityCols = new List<SbmDbDfn.ColumnIdx>();
|
|
if (hasColCmdDrawingNo) commodityCols.Add(SbmDbDfn.ColumnIdx.Commodity_DrawingNo);
|
|
if (hasColCmdDrawingIssue) commodityCols.Add(SbmDbDfn.ColumnIdx.Commodity_DrawingIssue);
|
|
if (hasColCmdImagePath) commodityCols.Add(SbmDbDfn.ColumnIdx.Commodity_ImagePath);
|
|
if (hasColCmdCategory) commodityCols.Add(SbmDbDfn.ColumnIdx.Commodity_Category);
|
|
if (hasColCmdLocation) commodityCols.Add(SbmDbDfn.ColumnIdx.Commodity_Location);
|
|
if (hasColCmdDepartment) commodityCols.Add(SbmDbDfn.ColumnIdx.Commodity_Department);
|
|
if (hasColCmdCatalogRef) commodityCols.Add(SbmDbDfn.ColumnIdx.Commodity_CatalogRef);
|
|
if (hasColCmdWeight) commodityCols.Add(SbmDbDfn.ColumnIdx.Commodity_Weight);
|
|
if (hasColCmdWeight) commodityCols.Add(SbmDbDfn.ColumnIdx.Commodity_UomIdWeight);
|
|
if (hasColCmdLength) commodityCols.Add(SbmDbDfn.ColumnIdx.Commodity_Length);
|
|
if (hasColCmdLength) commodityCols.Add(SbmDbDfn.ColumnIdx.Commodity_UomIdLength);
|
|
if (hasColCmdVolume) commodityCols.Add(SbmDbDfn.ColumnIdx.Commodity_Volume);
|
|
if (hasColCmdVolume) commodityCols.Add(SbmDbDfn.ColumnIdx.Commodity_UomIdVolume);
|
|
if (hasColCmdDensity) commodityCols.Add(SbmDbDfn.ColumnIdx.Commodity_Density);
|
|
if (hasColCmdDensity) commodityCols.Add(SbmDbDfn.ColumnIdx.Commodity_UomIdDensity);
|
|
if (hasColCmdMinOrderQty) commodityCols.Add(SbmDbDfn.ColumnIdx.Commodity_MinOrderQty);
|
|
if (hasColCmdPackQtySale) commodityCols.Add(SbmDbDfn.ColumnIdx.Commodity_PackQty);
|
|
if (hasColCmdBoxQuantity) commodityCols.Add(SbmDbDfn.ColumnIdx.Commodity_BoxQuantity);
|
|
if (hasColCmdBoxQuantity) commodityCols.Add(SbmDbDfn.ColumnIdx.Commodity_UomIdBox);
|
|
if (hasColCmdDimensions) commodityCols.Add(SbmDbDfn.ColumnIdx.Commodity_Dimensions);
|
|
if (hasColCmdSpecSummary) commodityCols.Add(SbmDbDfn.ColumnIdx.Commodity_SpecSummary);
|
|
if (hasColCmdIcnTariff) commodityCols.Add(SbmDbDfn.ColumnIdx.Commodity_ICNTariffCode);
|
|
if (hasColCmdRange) commodityCols.Add(SbmDbDfn.ColumnIdx.Commodity_RangeCode);
|
|
if (hasColCmdColour) commodityCols.Add(SbmDbDfn.ColumnIdx.Commodity_ColourCode);
|
|
if (hasColCmdSource) commodityCols.Add(SbmDbDfn.ColumnIdx.Commodity_SourceCode);
|
|
if (hasColCmdSupplyMethod) commodityCols.Add(SbmDbDfn.ColumnIdx.Commodity_SupplyMethodCode);
|
|
if (hasColCmdHandling) commodityCols.Add(SbmDbDfn.ColumnIdx.Commodity_HandlingCode);
|
|
if (hasColCmdDelivery) commodityCols.Add(SbmDbDfn.ColumnIdx.Commodity_DeliveryCode);
|
|
if (hasColCmdMaterial) commodityCols.Add(SbmDbDfn.ColumnIdx.Commodity_MaterialCode);
|
|
if (hasColCmdFinish) commodityCols.Add(SbmDbDfn.ColumnIdx.Commodity_FinishCode);
|
|
if (hasColCmdPromo) commodityCols.Add(SbmDbDfn.ColumnIdx.Commodity_PromotionCode);
|
|
if (hasColCmdCostPrice) commodityCols.Add(SbmDbDfn.ColumnIdx.Commodity_CostPrice);
|
|
if (hasColCmdMaterialCost) commodityCols.Add(SbmDbDfn.ColumnIdx.Commodity_MaterialCost);
|
|
if (hasColCmdMaterialCost) commodityCols.Add(SbmDbDfn.ColumnIdx.Commodity_CurrencyIdMaterial);
|
|
if (hasColCmdSalesPrice) commodityCols.Add(SbmDbDfn.ColumnIdx.Commodity_SalesPrice);
|
|
if (hasColCmdRetailPrice) commodityCols.Add(SbmDbDfn.ColumnIdx.Commodity_RetailPrice);
|
|
if (hasColCmdCarriageCostInd) commodityCols.Add(SbmDbDfn.ColumnIdx.Commodity_CarriageCostIndicative);
|
|
foreach (SbmDbDfn.ColumnIdx dbColumn in commodityCols)
|
|
query.Columns.Add(SbmDbDfn.GetColumnNameQual(dbColumn, aliasRequirement_Commodity), prefixRequirement_Commodity + SbmDbDfn.GetColumnName(dbColumn, false));
|
|
}
|
|
|
|
//------------------------------------------------------------------
|
|
// Customer commodity details.
|
|
bool hasCmdCustCols = false;
|
|
if (!hasCmdCustCols) hasCmdCustCols = columns.HasId((int)SbmRequirement.Column.Cmd_Cust_ProductCode);
|
|
if (!hasCmdCustCols) hasCmdCustCols = (columns.HasId((int)SbmRequirement.Column.Cmd_Cust_RetailPrice) || columns.HasId((int)SbmRequirement.Column.Cmd_Cust_RetailPrice_Fmt) || columns.HasId((int)SbmRequirement.Column.Cmd_Cust_CurrencyIdRetail));
|
|
if (!hasCmdCustCols) hasCmdCustCols = (requirementPromotionReq || commodityPromotionReq || customerPromotionReq);
|
|
if (!hasCmdCustCols) hasCmdCustCols = (columns.HasId((int)SbmRequirement.Column.PromotionCode) || columns.HasId((int)SbmRequirement.Column.PromotionDesc) || columns.HasId((int)SbmRequirement.Column.Promotion_AltText));
|
|
if (hasCmdCustCols)
|
|
{
|
|
// Join to the Commodity Customer table.
|
|
DbQueryJoin joinCmdCust = new DbQueryJoin(DbJoinType.LeftOuter);
|
|
joinCmdCust.Table = new StringPair(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.CommodityCustomer), aliasRequirement_CommodityCustomer);
|
|
joinCmdCust.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.CommodityCustomer_CommodityId, aliasRequirement_CommodityCustomer, false) + "=" + SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Requirement_CommodityId, aliasRequirement));
|
|
joinCmdCust.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.CommodityCustomer_AssocIdCustomer, aliasRequirement_CommodityCustomer, false) + "=" + SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Requirement_AssocId, aliasRequirement));
|
|
query.Joins.Add(joinCmdCust);
|
|
// Add the columns.
|
|
List<SbmDbDfn.ColumnIdx> commodityCustomerCols = new List<SbmDbDfn.ColumnIdx>();
|
|
commodityCustomerCols.Add(SbmDbDfn.ColumnIdx.CommodityCustomer_ProductCode);
|
|
if (canViewSalesFinancials)
|
|
commodityCustomerCols.Add(SbmDbDfn.ColumnIdx.CommodityCustomer_AmountRetail);
|
|
commodityCustomerCols.Add(SbmDbDfn.ColumnIdx.CommodityCustomer_CurrencyIdRetail);
|
|
commodityCustomerCols.Add(SbmDbDfn.ColumnIdx.CommodityCustomer_PromotionCode);
|
|
foreach (SbmDbDfn.ColumnIdx dbColumn in commodityCustomerCols)
|
|
query.Columns.Add(SbmDbDfn.GetColumnNameQual(dbColumn, aliasRequirement_CommodityCustomer), prefixRequirement_CommodityCustomer + SbmDbDfn.GetColumnName(dbColumn, false));
|
|
}
|
|
|
|
//------------------------------------------------------------------
|
|
// Processes.
|
|
bool hasProcCols = false;
|
|
if (!hasProcCols) hasProcCols = columns.HasId((int)SbmRequirement.Column.NextProcessDesc);
|
|
if (hasProcCols)
|
|
{
|
|
// Want the description of the next process in sequence for this
|
|
// requirement where the status is awaiting. Requirement processes
|
|
// are held as constituents of type 'Process'.
|
|
//------------------------------------------------------------------
|
|
// Join to the Constituent table.
|
|
DbQueryJoin joinConstProc = new DbQueryJoin(DbJoinType.LeftOuter);
|
|
joinConstProc.Table = new StringPair(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Constituent), aliasRequirment_ConstProc);
|
|
joinConstProc.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Constituent_Type, aliasRequirment_ConstProc, false) + "=" + Sbm.ConstituentType.Process.ToString());
|
|
joinConstProc.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Constituent_ReqntId, aliasRequirment_ConstProc, false) + "=" + SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Requirement_Id, aliasRequirement));
|
|
joinConstProc.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Constituent_Status, aliasRequirment_ConstProc, false) + "='" + StatusAwaiting + "'");
|
|
// Store the join against the main query.
|
|
query.Joins.Add(joinConstProc);
|
|
//------------------------------------------------------------------
|
|
// Sub Filter to identify matching constituent with lowest sequence number,
|
|
// or null if no matching links found.
|
|
DbQuery qryConstProcSeq = new DbQuery(Database.DbmsType);
|
|
String aliasRequirement_ConstituentProcessSeq = "aReqConstProcSeq";
|
|
qryConstProcSeq.Tables.Add(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Constituent), aliasRequirement_ConstituentProcessSeq);
|
|
qryConstProcSeq.Columns.Add("MIN(" + SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Constituent_Seq, aliasRequirement_ConstituentProcessSeq, false) + ")");
|
|
qryConstProcSeq.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Constituent_Type, aliasRequirement_ConstituentProcessSeq, false) + "=" + Sbm.ConstituentType.Process.ToString());
|
|
qryConstProcSeq.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Constituent_ReqntId, aliasRequirement_ConstituentProcessSeq, false) + "=" + SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Requirement_Id, aliasRequirement));
|
|
qryConstProcSeq.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Constituent_Status, aliasRequirement_ConstituentProcessSeq, false) + "='" + StatusAwaiting + "'");
|
|
String filterLinkSeq1 = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Constituent_Seq, aliasRequirment_ConstProc, false) + "=(" + qryConstProcSeq.BuildQuery() + ")";
|
|
String filterLinkSeq2 = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Constituent_Seq, aliasRequirment_ConstProc, false) + " IS null";
|
|
query.Filters.Add(filterLinkSeq1 + " OR " + filterLinkSeq2);
|
|
//------------------------------------------------------------------
|
|
// Add the link columns.
|
|
List<SbmDbDfn.ColumnIdx> slColLinkProc = new List<SbmDbDfn.ColumnIdx>();
|
|
slColLinkProc.Add(SbmDbDfn.ColumnIdx.Constituent_ProcessId);
|
|
slColLinkProc.Add(SbmDbDfn.ColumnIdx.Constituent_Seq);
|
|
slColLinkProc.Add(SbmDbDfn.ColumnIdx.Constituent_Status);
|
|
foreach (SbmDbDfn.ColumnIdx dbColumn in slColLinkProc)
|
|
query.Columns.Add(SbmDbDfn.GetColumnNameQual(dbColumn, aliasRequirment_ConstProc), prefixRequirement_LinkProcess + SbmDbDfn.GetColumnName(dbColumn, false));
|
|
//------------------------------------------------------------------
|
|
// Join to the Process table.
|
|
DbQueryJoin joinProc = new DbQueryJoin(DbJoinType.LeftOuter);
|
|
joinProc.Table = new StringPair(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Process), aliasRequirement_Process);
|
|
joinProc.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Process_Id, aliasRequirement_Process, false) + "=" + SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Constituent_ProcessId, aliasRequirment_ConstProc, false));
|
|
query.Joins.Add(joinProc);
|
|
// Add the process columns.
|
|
List<SbmDbDfn.ColumnIdx> slColProc = new List<SbmDbDfn.ColumnIdx>();
|
|
slColProc.Add(SbmDbDfn.ColumnIdx.Process_DescBrief);
|
|
slColProc.Add(SbmDbDfn.ColumnIdx.Process_Status);
|
|
foreach (SbmDbDfn.ColumnIdx dbColumn in slColProc)
|
|
query.Columns.Add(SbmDbDfn.GetColumnNameQual(dbColumn, aliasRequirement_Process), prefixRequirement_Process + SbmDbDfn.GetColumnName(dbColumn, false));
|
|
//------------------------------------------------------------------
|
|
}
|
|
|
|
// Container items.
|
|
bool hasCol_CntItmCount = columns.HasId((int)SbmRequirement.Column.CntItm_Count);
|
|
bool hasCol_CntItmQuantity = columns.HasId((int)SbmRequirement.Column.CntItm_Quantity);
|
|
if (hasCol_CntItmCount || hasCol_CntItmQuantity)
|
|
{
|
|
// Container Item filter.
|
|
List<String> filters = new List<String>();
|
|
filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.ContainerItem_ItemTypeSource, aliasRequirment_ContainerItem, false) + "=" + ((int)Sbm.ItemType.Requirement).ToString());
|
|
filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.ContainerItem_ItemIdSource, aliasRequirment_ContainerItem, false) + "=" + SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Requirement_Id, aliasRequirement));
|
|
|
|
// Container Item query.
|
|
DbQuery qryCntItm = new DbQuery(Database.DbmsType);
|
|
String colCntItmCount = "CntItmCount";
|
|
qryCntItm.Tables.Add(new StringPair(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.ContainerItem), aliasRequirment_ContainerItem));
|
|
qryCntItm.Filters.AddRange(filters);
|
|
|
|
if (hasCol_CntItmCount)
|
|
{
|
|
qryCntItm.Columns.Clear();
|
|
qryCntItm.Columns.Add("COUNT(" + SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.ContainerItem_ContainerId, aliasRequirment_ContainerItem, false) + ")");
|
|
query.Columns.Add("(" + qryCntItm.BuildQuery() + ")", colCntItmCount);
|
|
}
|
|
if (hasCol_CntItmQuantity)
|
|
{
|
|
qryCntItm.Columns.Clear();
|
|
qryCntItm.Columns.Add("SUM(" + SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.ContainerItem_Quantity, aliasRequirment_ContainerItem, false) + ")");
|
|
query.Columns.Add("(" + qryCntItm.BuildQuery() + ")", prefixRequirement_ContainerItem + SbmDbDfn.GetColumnName(SbmDbDfn.ColumnIdx.ContainerItem_Quantity));
|
|
}
|
|
}
|
|
|
|
//------------------------------------------------------------------
|
|
// Associated requirements.
|
|
bool bQueryAssocReqnt = (
|
|
columns.HasId((int)SbmRequirement.Column.AssocReqnt_ItemLink_DataContent) ||
|
|
columns.HasId((int)SbmRequirement.Column.AssocReqnt_Reqnt_RefCount) ||
|
|
columns.HasId((int)SbmRequirement.Column.AssocReqnt_Reqnt_Id) ||
|
|
columns.HasId((int)SbmRequirement.Column.AssocReqnt_Reqnt_AmountNet) ||
|
|
columns.HasId((int)SbmRequirement.Column.AssocReqnt_Trans_Id) ||
|
|
columns.HasId((int)SbmRequirement.Column.AssocReqnt_Trans_Type) ||
|
|
columns.HasId((int)SbmRequirement.Column.AssocReqnt_Trans_Ref) ||
|
|
columns.HasId((int)SbmRequirement.Column.AssocReqnt_Trans_AffTarget_Name));
|
|
if (bQueryAssocReqnt)
|
|
{
|
|
//------------------------------------------------------------------
|
|
// Joins to identify associated requirements.
|
|
// 1. ItemLink on 'To item' = This Requirement
|
|
// 2. Requirement
|
|
// 3. Transaction [reference etc]
|
|
// 4. Association
|
|
// 5. Target Affiliate [target name etc]
|
|
//------------------------------------------------------------------
|
|
// Join to the Item Link via 'To Item = Requirement'.
|
|
DbQueryJoin joinItmLnk = new DbQueryJoin(DbJoinType.LeftOuter);
|
|
joinItmLnk.Table = new StringPair(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.ItemLink), aliasAssociated_ItemLink);
|
|
joinItmLnk.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.ItemLink_Type, aliasAssociated_ItemLink, false) + "=" + Sbm.ItemLinkType.Requirement_AssociatedItem.ToString());
|
|
joinItmLnk.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.ItemLink_ItemTypeFrom, aliasAssociated_ItemLink, false) + "=" + ((int)Sbm.ItemType.Requirement).ToString());
|
|
joinItmLnk.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.ItemLink_ItemTypeTo, aliasAssociated_ItemLink, false) + "=" + ((int)Sbm.ItemType.Requirement).ToString());
|
|
joinItmLnk.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.ItemLink_ItemIdTo, aliasAssociated_ItemLink, false) + "=" + SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Requirement_Id, aliasRequirement));
|
|
query.Joins.Add(joinItmLnk);
|
|
query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.ItemLink_DataContent, aliasAssociated_ItemLink, false), prefixAssociated_ItemLink + SbmDbDfn.GetColumnName(SbmDbDfn.ColumnIdx.ItemLink_DataContent, false));
|
|
//------------------------------------------------------------------
|
|
// Join to the associated Requirement.
|
|
DbQueryJoin joinAssReq = new DbQueryJoin(DbJoinType.LeftOuter);
|
|
joinAssReq.Table = new StringPair(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Requirement), aliasAssociated_Requirement);
|
|
joinAssReq.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Requirement_Id, aliasAssociated_Requirement, false) + "=" + SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.ItemLink_ItemIdFrom, aliasAssociated_ItemLink, false));
|
|
query.Joins.Add(joinAssReq);
|
|
query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Requirement_Id, aliasAssociated_Requirement, false), prefixAssociated_Requirement + SbmDbDfn.GetColumnName(SbmDbDfn.ColumnIdx.Requirement_Id, false));
|
|
query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Requirement_TransId, aliasAssociated_Requirement, false), prefixAssociated_Requirement + SbmDbDfn.GetColumnName(SbmDbDfn.ColumnIdx.Requirement_TransId, false));
|
|
query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Requirement_AmountNet, aliasAssociated_Requirement, false), prefixAssociated_Requirement + SbmDbDfn.GetColumnName(SbmDbDfn.ColumnIdx.Requirement_AmountNet, false));
|
|
//------------------------------------------------------------------
|
|
if (columns.HasId((int)SbmRequirement.Column.AssocReqnt_Reqnt_RefCount))
|
|
{
|
|
// Return the number of references for each associated requirement.
|
|
// ie. the total number of requirements associated with the target requirement.
|
|
DbQuery qryAssocReqntRefCount = new DbQuery(Database.DbmsType);
|
|
String colAssocReqntRefCount = "AssReqRefCount";
|
|
qryAssocReqntRefCount.Tables.Add(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.ItemLink));
|
|
qryAssocReqntRefCount.Columns.Add("Count(1)");
|
|
qryAssocReqntRefCount.Filters.Add(SbmDbDfn.GetColumnName(SbmDbDfn.ColumnIdx.ItemLink_Type, false) + "=" + Sbm.ItemLinkType.Requirement_AssociatedItem.ToString());
|
|
qryAssocReqntRefCount.Filters.Add(SbmDbDfn.GetColumnName(SbmDbDfn.ColumnIdx.ItemLink_ItemTypeFrom, false) + "=" + ((int)Sbm.ItemType.Requirement).ToString());
|
|
qryAssocReqntRefCount.Filters.Add(SbmDbDfn.GetColumnName(SbmDbDfn.ColumnIdx.ItemLink_ItemTypeTo, false) + "=" + ((int)Sbm.ItemType.Requirement).ToString());
|
|
qryAssocReqntRefCount.Filters.Add(SbmDbDfn.GetColumnName(SbmDbDfn.ColumnIdx.ItemLink_ItemIdFrom, false) + "=" + SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.ItemLink_ItemIdFrom, aliasAssociated_ItemLink, false));
|
|
query.Columns.Add("(" + qryAssocReqntRefCount.BuildQuery() + ")", colAssocReqntRefCount);
|
|
}
|
|
//------------------------------------------------------------------
|
|
// Join to the associated Requirement Transaction.
|
|
DbQueryJoin joinAssReqTra = new DbQueryJoin(DbJoinType.LeftOuter);
|
|
joinAssReqTra.Table = new StringPair(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Transaction), aliasAssociated_Requirement_Transaction);
|
|
joinAssReqTra.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Transaction_Id, aliasAssociated_Requirement_Transaction, false) + "=" + SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Requirement_TransId, aliasAssociated_Requirement, false));
|
|
query.Joins.Add(joinAssReqTra);
|
|
query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Transaction_Id, aliasAssociated_Requirement_Transaction, false), prefixAssociated_Requirement_Transaction + SbmDbDfn.GetColumnName(SbmDbDfn.ColumnIdx.Transaction_Id, false));
|
|
query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Transaction_Ref, aliasAssociated_Requirement_Transaction, false), prefixAssociated_Requirement_Transaction + SbmDbDfn.GetColumnName(SbmDbDfn.ColumnIdx.Transaction_Ref, false));
|
|
//------------------------------------------------------------------
|
|
// Join to the associated Requirement Transaction Association.
|
|
DbQueryJoin joinAssReqTraAssoc = new DbQueryJoin(DbJoinType.LeftOuter);
|
|
joinAssReqTraAssoc.Table = new StringPair(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Association), aliasAssociated_Requirement_Transaction_Association);
|
|
joinAssReqTraAssoc.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_Id, aliasAssociated_Requirement_Transaction_Association, false) + "=" + SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Transaction_AssocId, aliasAssociated_Requirement_Transaction, false));
|
|
query.Joins.Add(joinAssReqTraAssoc);
|
|
query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_Id, aliasAssociated_Requirement_Transaction_Association, false), prefixAssociated_Requirement_Transaction_Association + SbmDbDfn.GetColumnName(SbmDbDfn.ColumnIdx.Association_Id, false));
|
|
//------------------------------------------------------------------
|
|
// Join to the associated Requirement Transaction Association.
|
|
DbQueryJoin joinAssReqTraAffTgt = new DbQueryJoin(DbJoinType.LeftOuter);
|
|
joinAssReqTraAffTgt.Table = new StringPair(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Affiliate), aliasAssociated_Requirement_Transaction_AffiliateTarget);
|
|
joinAssReqTraAffTgt.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Affiliate_Id, aliasAssociated_Requirement_Transaction_AffiliateTarget, false) + "=" + SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_AffIdTarget, aliasAssociated_Requirement_Transaction_Association, false));
|
|
query.Joins.Add(joinAssReqTraAffTgt);
|
|
query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Affiliate_Name, aliasAssociated_Requirement_Transaction_AffiliateTarget, false), prefixAssociated_Requirement_Transaction_AffiliateTarget + SbmDbDfn.GetColumnName(SbmDbDfn.ColumnIdx.Affiliate_Name, false));
|
|
//------------------------------------------------------------------
|
|
}
|
|
|
|
//------------------------------------------------------------------
|
|
// Time records.
|
|
bool bQueryTomeRecords = columns.HasId((int)SbmRequirement.Column.ConstTime_Id) || columns.HasId((int)SbmRequirement.Column.ConstTime_Quantity) || columns.HasId((int)SbmRequirement.Column.ConstTime_AffTarget_Name);
|
|
if (bQueryTomeRecords)
|
|
{
|
|
//------------------------------------------------------------------
|
|
// Joins to query time by technician: (1) Constituent & (2)Affiliate
|
|
//------------------------------------------------------------------
|
|
// 'Time' Constituents.
|
|
DbQueryJoin joinConst = new DbQueryJoin(DbJoinType.LeftOuter);
|
|
joinConst.Table = new StringPair(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Constituent), aliasRequirment_ConstituentTime);
|
|
joinConst.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Constituent_Type, aliasRequirment_ConstituentTime, false) + "=" + Sbm.ConstituentType.TimeRecord.ToString());
|
|
joinConst.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Constituent_ReqntId, aliasRequirment_ConstituentTime, false) + "=" + SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Requirement_Id, aliasRequirement));
|
|
joinConst.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Constituent_Status, aliasRequirment_ConstituentTime, false) + "<>'" + StatusCancelled + "'");
|
|
query.Joins.Add(joinConst);
|
|
query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Constituent_Id, aliasRequirment_ConstituentTime, false), prefixRequirement_ConstituentTime + SbmDbDfn.GetColumnName(SbmDbDfn.ColumnIdx.Constituent_Id, false));
|
|
query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Constituent_Quantity, aliasRequirment_ConstituentTime, false), prefixRequirement_ConstituentTime + SbmDbDfn.GetColumnName(SbmDbDfn.ColumnIdx.Constituent_Quantity, false));
|
|
//------------------------------------------------------------------
|
|
// Join to the Target Affiliate.
|
|
DbQueryJoin joinAffTgt = new DbQueryJoin(DbJoinType.LeftOuter);
|
|
joinAffTgt.Table = new StringPair(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Affiliate), aliasRequirment_ConstituentTime_AffiliateTarget);
|
|
joinAffTgt.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Affiliate_Id, aliasRequirment_ConstituentTime_AffiliateTarget, false) + "=" + SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Constituent_AffIdTarget, aliasRequirment_ConstituentTime, false));
|
|
query.Joins.Add(joinAffTgt);
|
|
query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Affiliate_Name, aliasRequirment_ConstituentTime_AffiliateTarget, false), prefixRequirement_ConstituentTime_AffiliateTarget + SbmDbDfn.GetColumnName(SbmDbDfn.ColumnIdx.Affiliate_Name, false));
|
|
//------------------------------------------------------------------
|
|
}
|
|
|
|
//------------------------------------------------------------------
|
|
// Any columns or sub queries that require 'Aggregate' columns (Count, Max etc) should follow. qry.lGroupBy = qry.lColumn.Values(); Slows down query immensely.
|
|
//------------------------------------------------------------------
|
|
// Transaction requirement count.
|
|
if (columns.HasId((int)SbmRequirement.Column.Trans_ReqntCount))
|
|
{
|
|
// Get the total number of requirements for this requirement's transaction.
|
|
// AWH 15-Jun-05. Replaced to vastly improve performance, but is it compatible with other databases.
|
|
// Perform the COUNT directly using a SELECT in the column list.
|
|
// example.
|
|
// (Select Count(TblReqTraReqCount.Id) from Requirement AS TblReqTraReqCount
|
|
// WHERE ((TblReqTraReqCount.TransId)=(Requirement.TransId))) AS Req_Count
|
|
String aliasReqntTrans_RequirementCount = "taTraReqCount";
|
|
String colTransReqntCount = "TraReqCount";
|
|
DbQuery qryReqntCount = new DbQuery(Database.DbmsType);
|
|
qryReqntCount.Tables.Add(new StringPair(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Requirement), aliasReqntTrans_RequirementCount));
|
|
qryReqntCount.Columns.Add("COUNT(" + SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Requirement_Id, aliasReqntTrans_RequirementCount, false) + ")");
|
|
qryReqntCount.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Requirement_TransId, aliasReqntTrans_RequirementCount, false) + "=" + SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Requirement_TransId, aliasRequirement));
|
|
query.Columns.Add("(" + qryReqntCount.BuildQuery() + ")", colTransReqntCount);
|
|
}
|
|
// Total requirement quantity.
|
|
if (columns.HasId((int)SbmRequirement.Column.Quantity_TotalByCommodity))
|
|
{
|
|
// Get the total quantity for this commodity.
|
|
String aliasReqntTrans_CommodityQuantity = "taRetCmdQty";
|
|
String colQuantityTotalByCmd = "QtyTotalByCmd";
|
|
DbQuery qryCmdQty = new DbQuery(Database.DbmsType);
|
|
qryCmdQty.Tables.Add(new StringPair(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Requirement), aliasReqntTrans_CommodityQuantity));
|
|
qryCmdQty.Columns.Add("SUM(" + SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Requirement_Quantity, aliasReqntTrans_CommodityQuantity, false) + ")");
|
|
qryCmdQty.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Requirement_CommodityId, aliasReqntTrans_CommodityQuantity, false) + "=" + SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Requirement_CommodityId, aliasRequirement));
|
|
query.Columns.Add("(" + qryCmdQty.BuildQuery() + ")", colQuantityTotalByCmd);
|
|
}
|
|
|
|
//------------------------------------------------------------------
|
|
// Quantity dispatched.
|
|
if (columns.HasId((int)SbmRequirement.Column.QuantityDispatched))
|
|
{
|
|
DbQuery qryReqntDisp = new DbQuery(Database.DbmsType);
|
|
qryReqntDisp.Tables.Add(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Requirement), aliasRequirment_SourceRequirementDispatched);
|
|
qryReqntDisp.Columns.Add("Sum(" + SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Requirement_Quantity, aliasRequirment_SourceRequirementDispatched, false) + ")");
|
|
qryReqntDisp.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Requirement_ReqntIdSource, aliasRequirment_SourceRequirementDispatched, false) + "=" + SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Requirement_Id, aliasRequirement));
|
|
qryReqntDisp.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Requirement_Status, aliasRequirment_SourceRequirementDispatched, false) + "<>'" + StatusCancelled + "'");
|
|
// Requirement must belong to a transaction of type 'Dispatch Note'.
|
|
String aliasRequirement_TransactionDispatached = "aReqTransDisp";
|
|
String colQuantityDispatch = "QtyDisp";
|
|
DbQueryJoin joinTrans = new DbQueryJoin(DbJoinType.Inner);
|
|
joinTrans.Table = new StringPair(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Transaction), aliasRequirement_TransactionDispatached);
|
|
joinTrans.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Transaction_Id, aliasRequirement_TransactionDispatached, false) + "=" + SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Requirement_TransId, aliasRequirment_SourceRequirementDispatched, false));
|
|
joinTrans.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Transaction_Type, aliasRequirement_TransactionDispatached, false) + "=" + Sbm.TransactionType.SalesDispatch.ToString());
|
|
joinTrans.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Transaction_Status, aliasRequirement_TransactionDispatached, false) + "<>'" + StatusCancelled + "'");
|
|
qryReqntDisp.Joins.Add(joinTrans);
|
|
// Build column definions on sub-query.
|
|
query.Columns.Add("(" + qryReqntDisp.BuildQuery() + ")", colQuantityDispatch);
|
|
}
|
|
|
|
//------------------------------------------------------------------
|
|
// Quantity Invoiced.
|
|
if (columns.HasId((int)SbmRequirement.Column.QuantityInvoiced))
|
|
{
|
|
// Supported invoice transaction types.
|
|
List<String> transTypeInvoices = new List<string>();
|
|
transTypeInvoices.Add(Sbm.TransactionType.ProformaSalesInvoice.ToString());
|
|
transTypeInvoices.Add(Sbm.TransactionType.SalesInvoice.ToString());
|
|
transTypeInvoices.Add(Sbm.TransactionType.ProformaPurchaseInvoice.ToString());
|
|
transTypeInvoices.Add(Sbm.TransactionType.PurchaseInvoice.ToString());
|
|
// Construct sub query to identify associated requirements that belong to invoices that haven't been invoiced.
|
|
DbQuery qryReqntInv = new DbQuery(Database.DbmsType);
|
|
qryReqntInv.Tables.Add(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Requirement), aliasRequirment_SourceRequirementInvoice);
|
|
qryReqntInv.Columns.Add("Sum(" + SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Requirement_Quantity, aliasRequirment_SourceRequirementInvoice, false) + ")");
|
|
qryReqntInv.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Requirement_ReqntIdSource, aliasRequirment_SourceRequirementInvoice, false) + "=" + SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Requirement_Id, aliasRequirement));
|
|
qryReqntInv.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Requirement_Status, aliasRequirment_SourceRequirementInvoice, false) + "<>'" + StatusCancelled + "'");
|
|
// Requirement must belong to a transaction of type Sales or Purchase 'Invoice' (including proforma).
|
|
String aliasRequirement_TransactionInvoice = "TblTransInv";
|
|
String colQuantityInvoice = "QtyInv";
|
|
DbQueryJoin joinTrans = new DbQueryJoin(DbJoinType.Inner);
|
|
joinTrans.Table = new StringPair(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Transaction), aliasRequirement_TransactionInvoice);
|
|
joinTrans.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Transaction_Id, aliasRequirement_TransactionInvoice, false) + "=" + SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Requirement_TransId, aliasRequirment_SourceRequirementInvoice, false));
|
|
joinTrans.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Transaction_Type, aliasRequirement_TransactionInvoice, false) + " IN (" + transTypeInvoices.Concat(",") + ")");
|
|
joinTrans.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Transaction_Status, aliasRequirement_TransactionInvoice, false) + "<>'" + StatusCancelled + "'");
|
|
qryReqntInv.Joins.Add(joinTrans);
|
|
// Build column definions on sub-query.
|
|
query.Columns.Add("(" + qryReqntInv.BuildQuery() + ")", colQuantityInvoice);
|
|
}
|
|
|
|
//------------------------------------------------------------------
|
|
// Stock.
|
|
bool hasStockCol_Current = columns.HasId((int)SbmRequirement.Column.Stock_Current);
|
|
bool hasStockCol_DueImminent = columns.HasId((int)SbmRequirement.Column.Stock_DueImminently);
|
|
bool hasStockCol_Allocated = columns.HasId((int)SbmRequirement.Column.Stock_Allocated);
|
|
bool hasStockCol_Available = columns.HasId((int)SbmRequirement.Column.Stock_Available);
|
|
if (!hasStockCol_Available)
|
|
hasStockCol_Available = columns.HasId((int)SbmRequirement.Column.Stock_Available_MinZero);
|
|
if (hasStockCol_Current || hasStockCol_Allocated || hasStockCol_Available)
|
|
{
|
|
// Sales stock locations.
|
|
PopulateLocationIdLists();
|
|
String locationStockIds = locationIds_Sales.Concat(",");
|
|
if (locationStockIds.IsEmpty()) locationStockIds = "0";
|
|
//------------------------------------------------------------------
|
|
// Stock levels (current level).
|
|
String aliasRequirement_StockLevel = "aReqStkLvl";
|
|
DbQuery qryStk = new DbQuery(Database.DbmsType);
|
|
qryStk.Tables.Add(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.StockLevel), aliasRequirement_StockLevel);
|
|
qryStk.Columns.Add("SUM(" + SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.StockLevel_Quantity, aliasRequirement_StockLevel, false) + ")");
|
|
qryStk.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.StockLevel_Type, aliasRequirement_StockLevel, false) + "=" + Sbm.StockLevelType.CurrentLevel.ToString());
|
|
qryStk.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.StockLevel_LocationId, aliasRequirement_StockLevel, false) + " IN (" + locationStockIds + ")");
|
|
qryStk.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.StockLevel_CommodityId, aliasRequirement_StockLevel, false) + "=" + SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Requirement_CommodityId, aliasRequirement));
|
|
qryStk.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.StockLevel_Status, aliasRequirement_StockLevel, false) + "='" + StatusCurrent + "'");
|
|
//------------------------------------------------------------------
|
|
// Stock movements (allocations).
|
|
String aliasRequirement_Movement = "aReqMov";
|
|
DbQuery qryMov = new DbQuery(Database.DbmsType);
|
|
qryMov.Tables.Add(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Movement), aliasRequirement_Movement);
|
|
qryMov.Columns.Add("SUM(" + SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Movement_Quantity, aliasRequirement_Movement, false) + ")");
|
|
qryMov.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Movement_Type, aliasRequirement_Movement, false) + "=" + Sbm.MovementType.SalesAllocation.ToString());
|
|
qryMov.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Movement_LocationIdFrom, aliasRequirement_Movement, false) + " IN (" + locationStockIds + ")");
|
|
qryMov.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Movement_ItemType, aliasRequirement_Movement, false) + "=" + ((int)Sbm.ItemType.Commodity).ToString());
|
|
qryMov.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Movement_ItemId, aliasRequirement_Movement, false) + "=" + SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Requirement_CommodityId, aliasRequirement));
|
|
qryMov.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Movement_Status, aliasRequirement_Movement, false) + "='" + StatusAwaiting + "'");
|
|
|
|
String colReqStockCurrent = "StkCurr";
|
|
if (hasStockCol_Current || hasStockCol_Available)
|
|
query.Columns.Add("(" + qryStk.BuildQuery() + ")", colReqStockCurrent);
|
|
String colReqStockAllocated = "StkAlloc";
|
|
if (hasStockCol_Allocated || hasStockCol_Available)
|
|
query.Columns.Add("(" + qryMov.BuildQuery() + ")", colReqStockAllocated);
|
|
/* Available stock is now calculated on the query results (see SapRequirementMgr::GetDataValue).
|
|
String colReqStockAvailable = "StkAvail";
|
|
if (hasStockCol_Available)
|
|
query.Columns.Add("("+qryStk.BuildQuery()+")-("+qryMov.BuildQuery()+")", colReqStockAvailable);*/
|
|
}
|
|
|
|
//------------------------------------------------------------------
|
|
// Stock level by sales location.
|
|
if (columns.HasId((int)SbmRequirement.Column.Stock_BySalesLocation01) && SysId.IsValid(prm.SalesLocationIdStock01))
|
|
{
|
|
// Stock level @ Sales Location 1.
|
|
String aliasRequirement_StockSalesLocation01 = "aReqStkSalLoc01";
|
|
String colReqStockSalesLoc01 = "StkSalLoc01";
|
|
DbQuery qryStk = new DbQuery(Database.DbmsType);
|
|
qryStk.Tables.Add(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.StockLevel), aliasRequirement_StockSalesLocation01);
|
|
qryStk.Columns.Add("SUM(" + SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.StockLevel_Quantity, aliasRequirement_StockSalesLocation01, false) + ")");
|
|
qryStk.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.StockLevel_Type, aliasRequirement_StockSalesLocation01, false) + "=" + Sbm.StockLevelType.CurrentLevel.ToString());
|
|
qryStk.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.StockLevel_LocationId, aliasRequirement_StockSalesLocation01, false) + "=" + prm.SalesLocationIdStock01.ToString());
|
|
qryStk.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.StockLevel_CommodityId, aliasRequirement_StockSalesLocation01, false) + "=" + SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Requirement_CommodityId, aliasRequirement));
|
|
qryStk.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.StockLevel_Status, aliasRequirement_StockSalesLocation01, false) + "='" + StatusCurrent + "'");
|
|
query.Columns.Add("(" + qryStk.BuildQuery() + ")", colReqStockSalesLoc01);
|
|
}
|
|
|
|
//------------------------------------------------------------------
|
|
if (columns.HasId((int)SbmRequirement.Column.Stock_BySalesLocation02) && SysId.IsValid(prm.SalesLocationIdStock02))
|
|
{
|
|
// Stock level @ Sales Location 2.
|
|
String aliasRequirement_StockSalesLocation02 = "aReqStkSalLoc02";
|
|
String colReqStockSalesLoc02 = "StkSalLoc02";
|
|
DbQuery qryStk = new DbQuery(Database.DbmsType);
|
|
qryStk.Tables.Add(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.StockLevel), aliasRequirement_StockSalesLocation02);
|
|
qryStk.Columns.Add("SUM(" + SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.StockLevel_Quantity, aliasRequirement_StockSalesLocation02, false) + ")");
|
|
qryStk.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.StockLevel_Type, aliasRequirement_StockSalesLocation02, false) + "=" + Sbm.StockLevelType.CurrentLevel.ToString());
|
|
qryStk.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.StockLevel_LocationId, aliasRequirement_StockSalesLocation02, false) + "=" + prm.SalesLocationIdStock02.ToString());
|
|
qryStk.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.StockLevel_CommodityId, aliasRequirement_StockSalesLocation02, false) + "=" + SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Requirement_CommodityId, aliasRequirement));
|
|
qryStk.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.StockLevel_Status, aliasRequirement_StockSalesLocation02, false) + "='" + StatusCurrent + "'");
|
|
query.Columns.Add("(" + qryStk.BuildQuery() + ")", colReqStockSalesLoc02);
|
|
}
|
|
|
|
//------------------------------------------------------------------
|
|
if (columns.HasId((int)SbmRequirement.Column.Stock_BySalesLocation03) && SysId.IsValid(prm.SalesLocationIdStock03))
|
|
{
|
|
// Stock level @ Sales Location 3.
|
|
String aliasRequirement_StockSalesLocation03 = "aReqStkSalLoc03";
|
|
String colReqStockSalesLoc03 = "StkSalLoc03";
|
|
DbQuery qryStk = new DbQuery(Database.DbmsType);
|
|
qryStk.Tables.Add(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.StockLevel), aliasRequirement_StockSalesLocation03);
|
|
qryStk.Columns.Add("SUM(" + SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.StockLevel_Quantity, aliasRequirement_StockSalesLocation03, false) + ")");
|
|
qryStk.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.StockLevel_Type, aliasRequirement_StockSalesLocation03, false) + "=" + Sbm.StockLevelType.CurrentLevel.ToString());
|
|
qryStk.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.StockLevel_LocationId, aliasRequirement_StockSalesLocation03, false) + "=" + prm.SalesLocationIdStock03.ToString());
|
|
qryStk.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.StockLevel_CommodityId, aliasRequirement_StockSalesLocation03, false) + "=" + SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Requirement_CommodityId, aliasRequirement));
|
|
qryStk.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.StockLevel_Status, aliasRequirement_StockSalesLocation03, false) + "='" + StatusCurrent + "'");
|
|
query.Columns.Add("(" + qryStk.BuildQuery() + ")", colReqStockSalesLoc03);
|
|
}
|
|
|
|
//------------------------------------------------------------------
|
|
// Imminent stock.
|
|
if (hasStockCol_DueImminent && Internals.GetOwnerOption_AllowOption(Sbm.OrgOption_AllowOption.ImminentStock))
|
|
{
|
|
SbmCommodityMgr_Dbas commodityMgr = null; // NB Must be 'ODBC' version to access query logic.
|
|
SbmCommodityMgr_Dbas.PlannedStockMovements_Params prmPSM = new SbmCommodityMgr_Dbas.PlannedStockMovements_Params();
|
|
prmPSM.excludeAwaitingContainers = !Internals.GetOwnerOption_AllowOption(Sbm.OrgOption_AllowOption.AwaitingContainersInImminentStock);
|
|
int weeksImminentStock = Math.Max(0, Math.Min(12, Internals.GetOwnerOption_UpdateLimit(Sbm.OrgOption_PeriodWeeks.ImminentStockDue, 0)));
|
|
prmPSM.latest = DateTime.Today.StartOfWorkingWeek().AddDays(weeksImminentStock * 7);
|
|
prmPSM.commodityIdCol = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Requirement_CommodityId, aliasRequirement);
|
|
query.Columns.Add(commodityMgr.BuildPlannedStockMovementsQuery(prmPSM), reqStockDueImmin);
|
|
}
|
|
|
|
//---------------------------------------------------------------------
|
|
// Populate filter.
|
|
query.Filters.AddRange(GetRequirementQueryFilter(prm));
|
|
|
|
if (prm.RequirementIdsIncluded.Count != 1)
|
|
{
|
|
// Configure sort sequence.
|
|
foreach (String sortColumn in GetRequirementSortColumns(prm))
|
|
query.OrderBy.Add(sortColumn);
|
|
}
|
|
|
|
//---------------------------------------------------------------------
|
|
//return new DbResultSet_DataTableReader(Database, query.BuildQuery());
|
|
return DbResultSet_DataReader.ExecuteQuery(Database, query.BuildQuery(prm.ResultsPaging));
|
|
}
|
|
|
|
|
|
//-------------------------------------------------------------------
|
|
|
|
//-------------------------------------------------------------------
|
|
}
|
|
//=======================================================================
|
|
}
|