2336 lines
150 KiB
C#
2336 lines
150 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.CodeTypes;
|
|
using Sarand.Net.Standard.Base.Core;
|
|
using Sarand.Net.Standard.Base.Dbas;
|
|
using Sarand.Net.Standard.Base.Utils;
|
|
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
|
|
{
|
|
//=======================================================================
|
|
// Account manager - Associations.
|
|
//=======================================================================
|
|
partial class SbmAccountMgr_Dbas
|
|
{
|
|
//-------------------------------------------------------------------
|
|
// Create Item.
|
|
public override SbmAssociation CreateAssociation(SysId affiliateIdOwner, Sbm.AssociationType associationType, SysId affiliateIdTarget)
|
|
{
|
|
return new SbmAssociation_Dbas(null, affiliateIdOwner, associationType, affiliateIdTarget, 0);
|
|
}
|
|
private SbmAssociation_Dbas CreateAssociation(Association_Db dbAssociation)
|
|
{
|
|
ClearErrorState();
|
|
SbmAssociation_Dbas association = new SbmAssociation_Dbas(new SysId(dbAssociation._Id), new SysId(dbAssociation._AffIdOwner), (Sbm.AssociationType)dbAssociation._Type, new SysId(dbAssociation._AffIdTarget), (ushort)dbAssociation._Flags);
|
|
PopulateFrom(dbAssociation, association);
|
|
return association;
|
|
}
|
|
|
|
//-------------------------------------------------------------------
|
|
// Get Item.
|
|
public override SbmAssociation GetAssociation(SbmAssociation.Params prm)
|
|
{
|
|
return GetAssociation(GetAssociationQueryFilter(prm).Concat(" AND ", "(", ")"));
|
|
}
|
|
private SbmAssociation GetAssociation(String filter)
|
|
{
|
|
ClearErrorState();
|
|
long count = GetAssociationCount(filter);
|
|
if (count == 0) return null;
|
|
if (count != 1)
|
|
{
|
|
SetErrorState(ErrorMessage.MultipleItemsFound);
|
|
return null;
|
|
}
|
|
SbmAssociation association = null;
|
|
// Query data.
|
|
using (var dbConnection = Database.CreateConnection())
|
|
using (var dbCommand = dbConnection.CreateCommand())
|
|
{
|
|
try
|
|
{
|
|
dbConnection.Open();
|
|
Association_Db dbAssociation = new Association_Db(DbInfo);
|
|
dbAssociation.PopulateFrom(dbCommand, aliasAssociation, filter);
|
|
association = CreateAssociation(dbAssociation);
|
|
}
|
|
catch (Exception exc)
|
|
{
|
|
SetErrorState(ErrorMessage.DatabaseQueryException);
|
|
SaLogger.Warn($"{SysUtil.Fn}\n\tQuery: {dbCommand.CommandText}\n\t{ExceptionUtil.GetErrorStateMessage(exc)}");
|
|
}
|
|
}
|
|
return association;
|
|
}
|
|
|
|
//-------------------------------------------------------------------
|
|
// Item properties.
|
|
public override SysId GetAssociationAffIdTarget(SysId associationId)
|
|
{
|
|
ClearErrorState();
|
|
if (!SysId.IsValid(associationId)) return null;
|
|
// Filter to target specified association.
|
|
SbmAssociation.Params prmAssociation = new SbmAssociation.Params();
|
|
prmAssociation.IdsIncluded.Add(associationId);
|
|
prmAssociation.StatusCat = SbmAssociation.StatusCat.Any;
|
|
if (GetAssociationCount(prmAssociation) != 1) return null;
|
|
// Columns to query.
|
|
ColumnDfn colAffIdTarget = GetAssociationColumnDfn(SbmAssociation.Column.AffIdTarget);
|
|
List<ColumnDfn> columnsToQuery = new List<ColumnDfn>() { colAffIdTarget };
|
|
// Query associations.
|
|
using (DbResultSet dbResultSet = ExecuteAssociationQuery(columnsToQuery, prmAssociation))
|
|
{
|
|
// Only interested in first row.
|
|
if (dbResultSet != null && dbResultSet.NextRecord())
|
|
{
|
|
NamedValue.Map values = dbResultSet.GetRecordValues();
|
|
return new SysId((int)values.GetValue(colAffIdTarget.DataName).AsLong());
|
|
}
|
|
}
|
|
return null;
|
|
}
|
|
public override String GetAssociationCode(SysId associationId)
|
|
{
|
|
ClearErrorState();
|
|
if (!SysId.IsValid(associationId)) return "";
|
|
// Filter to target specified association.
|
|
SbmAssociation.Params prmAssociation = new SbmAssociation.Params();
|
|
prmAssociation.IdsIncluded.Add(associationId);
|
|
prmAssociation.StatusCat = SbmAssociation.StatusCat.Any;
|
|
if (GetAssociationCount(prmAssociation) != 1) return "";
|
|
// Columns to query.
|
|
ColumnDfn colCode = GetAssociationColumnDfn(SbmAssociation.Column.Code);
|
|
List<ColumnDfn> columnsToQuery = new List<ColumnDfn>() { colCode };
|
|
// Query associations.
|
|
using (DbResultSet dbResultSet = ExecuteAssociationQuery(columnsToQuery, prmAssociation))
|
|
{
|
|
// Only interested in first row.
|
|
if (dbResultSet != null && dbResultSet.NextRecord())
|
|
{
|
|
NamedValue.Map values = dbResultSet.GetRecordValues();
|
|
return values.GetValue(colCode.DataName).AsString();
|
|
}
|
|
}
|
|
return "";
|
|
}
|
|
|
|
//-------------------------------------------------------------------
|
|
// Validate Item.
|
|
public override bool IsValidAssociationData(SbmAssociation.Data data, SbmAssociation.ErrField errField)
|
|
{
|
|
ClearErrorState();
|
|
if (!base.IsValidAssociationData(data, errField)) return false;
|
|
|
|
if (errField.CommodityIdSalesDefault != SacsHierarchyItem.ValidValue.Ignore && SysId.IsValid(data.CommodityIdSalesDefault))
|
|
{
|
|
if (!CommodityMgr.CommodityExistsById(data.CommodityIdSalesDefault))
|
|
{
|
|
errField.OrderLeadTimeCode = SacsHierarchyItem.ValidValue.Invalid;
|
|
return SetErrorState("Invalid default sales Commodity");
|
|
}
|
|
}
|
|
return true;
|
|
}
|
|
|
|
//-------------------------------------------------------------------
|
|
// Insert Item.
|
|
public override bool InsertAssociation(SbmAssociation association, DbUpdateInfo dbUpdateInfo)
|
|
{
|
|
ClearErrorState();
|
|
if (!IsValidAssociation(association)) return false;
|
|
if (SysId.IsValid(association.Id)) return SetErrorState(ErrorMessage.ValidItemId);
|
|
using (var dbConnection = Database.CreateConnection())
|
|
using (var dbCommand = dbConnection.CreateCommand())
|
|
{
|
|
try
|
|
{
|
|
dbConnection.Open();
|
|
Association_Db dbAssociation = new Association_Db(DbInfo);
|
|
PopulateTo(dbAssociation, association, dbUpdateInfo);
|
|
if (Association_Db.FieldsNonId.Contains("Id"))
|
|
{
|
|
// Generate next Id.
|
|
dbAssociation._Id = SysId.ToInt(Database.GetNextId("Association", dbUpdateInfo));
|
|
}
|
|
dbAssociation.ExecuteInsertCommand(dbCommand);
|
|
association.Id = new SysId(dbAssociation._Id);
|
|
association.Changed = false;
|
|
if (DebugMode) SaLogger.Debug($"{SysUtil.Fn} Inserted. {GetLogProperties(association).Concat(": ").Concat("", "\n\t")}");
|
|
}
|
|
catch (Exception exc) { SetErrorState(exc.Message); }
|
|
}
|
|
return OK;
|
|
}
|
|
|
|
//-------------------------------------------------------------------
|
|
// Update Item.
|
|
public override bool UpdateAssociation(SbmAssociation association, DbUpdateInfo dbUpdateInfo)
|
|
{
|
|
ClearErrorState();
|
|
if (!IsValidAssociation(association)) return false;
|
|
if (!SysId.IsValid(association.Id)) return SetErrorState(ErrorMessage.InvalidItemId);
|
|
if (!association.Changed)
|
|
{
|
|
if (DebugMode) SaLogger.Debug($"{SysUtil.Fn} Data not changed. {GetLogProperties(association).Concat(": ").Concat("", "\n\t")}");
|
|
return true;
|
|
}
|
|
using (var dbConnection = Database.CreateConnection())
|
|
using (var dbCommand = dbConnection.CreateCommand())
|
|
{
|
|
try
|
|
{
|
|
// Retrieve Association.
|
|
dbConnection.Open();
|
|
Association_Db dbAssociation = new Association_Db(DbInfo);
|
|
dbAssociation.PopulateFrom(dbCommand, aliasAssociation, "Id=" + SysId.ToString(association.Id));
|
|
SbmUpdateLogItemMonitor_Association updateLogMonitor = new SbmUpdateLogItemMonitor_Association(Internals, CreateAssociation(dbAssociation));
|
|
|
|
// Update properties.
|
|
PopulateTo(dbAssociation, association, dbUpdateInfo);
|
|
dbAssociation.ExecuteUpdateCommand(dbCommand);
|
|
association.Changed = false;
|
|
if (DebugMode) SaLogger.Debug($"{SysUtil.Fn} Updated. {GetLogProperties(association).Concat(": ").Concat("", "\n\t")}");
|
|
|
|
// Record updates.
|
|
updateLogMonitor.RecordUpdatedValues(association);
|
|
updateLogMonitor.LogUpdates();
|
|
}
|
|
catch (Exception exc) { SetErrorState(exc.Message); }
|
|
}
|
|
return OK;
|
|
}
|
|
|
|
//-------------------------------------------------------------------
|
|
// Delete Item.
|
|
public override bool AssociationCanBeDeleted(SbmAssociation association)
|
|
{
|
|
ClearErrorState();
|
|
if (!base.AssociationCanBeDeleted(association)) return false;
|
|
return true;
|
|
}
|
|
public override bool DeleteAssociation(SbmAssociation association, DbUpdateInfo dbUpdateInfo)
|
|
{
|
|
ClearErrorState();
|
|
if (!AssociationCanBeDeleted(association)) return false;
|
|
using (var dbConnection = Database.CreateConnection())
|
|
using (var dbCommand = dbConnection.CreateCommand())
|
|
{
|
|
try
|
|
{
|
|
// Retrieve Association.
|
|
dbConnection.Open();
|
|
Association_Db dbAssociation = new Association_Db(DbInfo);
|
|
dbAssociation.PopulateFrom(dbCommand, aliasAssociation, "Id=" + association.Id.ToString());
|
|
// Delete Association.
|
|
dbCommand.CommandType = System.Data.CommandType.Text;
|
|
dbCommand.CommandText = "DELETE FROM " + SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Association) + " WHERE Id=" + SysId.ToString(association.Id) + ";";
|
|
dbCommand.ExecuteNonQuery();
|
|
association.Changed = false;
|
|
if (DebugMode) SaLogger.Debug($"{SysUtil.Fn} Deleted. {GetLogProperties(association).Concat(": ").Concat("", "\n\t")}");
|
|
}
|
|
catch (Exception exc) { SetErrorState(exc.Message); }
|
|
}
|
|
return OK;
|
|
}
|
|
|
|
//-------------------------------------------------------------------
|
|
// Copy data properties to and from database.
|
|
private void PopulateTo(Association_Db dbAssociation, SbmAssociation association, DbUpdateInfo dbUpdateInfo)
|
|
{
|
|
dbAssociation._Id = association.Id.ToInt();
|
|
dbAssociation._AffIdOwner = association.AffiliateIdOwner.ToInt();
|
|
dbAssociation._AffIdTarget = association.AffiliateIdTarget.ToInt();
|
|
dbAssociation._Type = (short)association.AssociationType;
|
|
dbAssociation._Code = association.Code;
|
|
dbAssociation._ExtRef = association.RefExt;
|
|
dbAssociation._Location = association.Location;
|
|
dbAssociation._Role = association.Role;
|
|
dbAssociation._PhoneMain = association.PhoneMain;
|
|
dbAssociation._Email = association.Email;
|
|
dbAssociation._Group = association.Group;
|
|
dbAssociation._DescDetail = association.DescDetail;
|
|
/*----------------------------------------*/
|
|
dbAssociation._DefaultNominalCode = association.DefaultNominalCode;
|
|
dbAssociation._AccountManagerCode = association.AccountManagerCode;
|
|
dbAssociation._AccountHandlerCode = association.AccountHandlerCode;
|
|
dbAssociation._AccountTypeCode = association.AccountTypeCode;
|
|
dbAssociation._AccountRatingCode = association.AccountRatingCode;
|
|
dbAssociation._ContactAreaCode = association.ContactAreaCode;
|
|
dbAssociation._ContactHandlerCode = association.ContactHandlerCode;
|
|
dbAssociation._ContactMethodCode = association.ContactMethodCode;
|
|
dbAssociation._ContactCallCycleCode = association.ContactCallCycleCode;
|
|
dbAssociation._CallsPerYear = (short)association.CallsPerYear;
|
|
dbAssociation._LastCall = association.LastCall;
|
|
dbAssociation._CommodityIdSalesDefault = SysId.ToInt(association.CommodityIdSalesDefault);
|
|
dbAssociation._OrderLeadTimeCode = association.OrderLeadTimeCode;
|
|
dbAssociation._DeliveryTypeCode = association.DeliveryTypeCode;
|
|
dbAssociation._DeliveryMethodCode = association.DeliveryMethodCode;
|
|
dbAssociation._DeliveryBookInCode = association.DeliveryBookInCode;
|
|
dbAssociation._DeliveryCourierCode = association.DeliveryCourierCode;
|
|
/*----------------------------------------*/
|
|
dbAssociation._AmountTransMax = association.AmountTransMax;
|
|
dbAssociation._AnnualSalesTarget = association.AnnualSalesTarget;
|
|
dbAssociation._CreditLimit = association.CreditLimit;
|
|
dbAssociation._AccountBalance = association.AccountBalance;
|
|
dbAssociation._DiscountType = (short)association.DiscountType;
|
|
dbAssociation._DiscountRate = association.DiscountRate;
|
|
dbAssociation._PriceSetId = association.PriceSetId.ToInt();
|
|
dbAssociation._TaxCodeId = association.TaxCodeId.ToInt();
|
|
dbAssociation._PaymentTerms = association.PaymentTerms;
|
|
dbAssociation._InvoiceDesc = association.InvoiceDesc;
|
|
// Terminated date is stored as a 4 byte integer: bytes 1-2: Year, byte 3: Month, byte 4: Day.
|
|
if (DateUtil.IsValid(association.Terminated))
|
|
dbAssociation._Terminated = association.Terminated.Year << 16 + association.Terminated.Month << 8 + association.Terminated.Day;
|
|
else dbAssociation._Terminated = 0;
|
|
// Common properties.
|
|
dbAssociation._Notes = association.Notes;
|
|
dbAssociation._Status = SacsSystem.GetStatusCode(association.Status);
|
|
dbAssociation._Flags = (short)association.Flags;
|
|
if (!SysId.IsValid(association.Id))
|
|
{
|
|
dbAssociation._CreateOn = DateTime.UtcNow;
|
|
dbAssociation._CreateBy = dbUpdateInfo.UserId.ToInt();
|
|
dbAssociation._CreateHost = dbUpdateInfo.Host;
|
|
}
|
|
dbAssociation._UpdateOn = DateTime.UtcNow;
|
|
dbAssociation._UpdateBy = dbUpdateInfo.UserId.ToInt();
|
|
dbAssociation._UpdateHost = dbUpdateInfo.Host;
|
|
}
|
|
private void PopulateFrom(Association_Db dbAssociation, SbmAssociation association)
|
|
{
|
|
//prmAssociation.Id = new SysId(dbAssociation._Id);
|
|
association.AffiliateIdOwner = new SysId(dbAssociation._AffIdOwner);
|
|
association.AffiliateIdTarget = new SysId(dbAssociation._AffIdTarget);
|
|
association.AssociationType = (Sbm.AssociationType)dbAssociation._Type;
|
|
association.Code = dbAssociation._Code;
|
|
association.RefExt = dbAssociation._ExtRef;
|
|
association.Location = dbAssociation._Location;
|
|
association.Role = dbAssociation._Role;
|
|
association.PhoneMain = dbAssociation._PhoneMain;
|
|
association.Email = dbAssociation._Email;
|
|
association.Group = dbAssociation._Group;
|
|
association.DescDetail = dbAssociation._DescDetail;
|
|
/*----------------------------------------*/
|
|
association.DefaultNominalCode = dbAssociation._DefaultNominalCode;
|
|
association.AccountManagerCode = dbAssociation._AccountManagerCode;
|
|
association.AccountHandlerCode = dbAssociation._AccountHandlerCode;
|
|
association.AccountTypeCode = dbAssociation._AccountTypeCode;
|
|
association.AccountRatingCode = dbAssociation._AccountRatingCode;
|
|
association.ContactAreaCode = dbAssociation._ContactAreaCode;
|
|
association.ContactHandlerCode = dbAssociation._ContactHandlerCode;
|
|
association.ContactMethodCode = dbAssociation._ContactMethodCode;
|
|
association.ContactCallCycleCode = dbAssociation._ContactCallCycleCode;
|
|
association.CallsPerYear = dbAssociation._CallsPerYear ?? 0;
|
|
association.LastCall = dbAssociation._LastCall ?? default(DateTime);
|
|
association.CommodityIdSalesDefault = new SysId(dbAssociation._CommodityIdSalesDefault ?? 0);
|
|
association.OrderLeadTimeCode = dbAssociation._OrderLeadTimeCode;
|
|
association.DeliveryTypeCode = dbAssociation._DeliveryTypeCode;
|
|
association.DeliveryCourierCode = dbAssociation._DeliveryCourierCode;
|
|
association.DeliveryMethodCode = dbAssociation._DeliveryMethodCode;
|
|
association.DeliveryBookInCode = dbAssociation._DeliveryBookInCode;
|
|
/*----------------------------------------*/
|
|
association.AmountTransMax = dbAssociation._AmountTransMax ?? 0;
|
|
association.AnnualSalesTarget = dbAssociation._AnnualSalesTarget ?? 0;
|
|
association.CreditLimit = dbAssociation._CreditLimit ?? 0;
|
|
association.AccountBalance = dbAssociation._AccountBalance ?? 0;
|
|
association.DiscountType = (Sbm.DiscountType)(dbAssociation._DiscountType ?? 0);
|
|
association.DiscountRate = dbAssociation._DiscountRate ?? 0;
|
|
association.PriceSetId = new SysId(dbAssociation._PriceSetId ?? 0);
|
|
association.TaxCodeId = new SysId(dbAssociation._TaxCodeId ?? 0);
|
|
association.PaymentTerms = dbAssociation._PaymentTerms ?? 0;
|
|
association.InvoiceDesc = dbAssociation._InvoiceDesc;
|
|
if (dbAssociation._Terminated > 0)
|
|
association.Terminated = new DateTime(dbAssociation._Terminated ?? 0 >> 16, (dbAssociation._Terminated ?? 0 >> 8) & 0xFF, dbAssociation._Terminated ?? 0 & 0xFF);
|
|
else association.Terminated = DateTime.MinValue;
|
|
// Common properties.
|
|
association.Notes = dbAssociation._Notes;
|
|
association.Status = SacsSystem.GetStatusForCode(dbAssociation._Status);
|
|
association.SetCreateStamp(dbAssociation._CreateOn, new SysId(dbAssociation._CreateBy ?? 0), dbAssociation._CreateHost);
|
|
association.SetUpdateStamp(dbAssociation._UpdateOn ?? default(DateTime), new SysId(dbAssociation._UpdateBy ?? 0), dbAssociation._UpdateHost);
|
|
association.AcceptChanges();
|
|
}
|
|
//-------------------------------------------------------------------
|
|
// G e t C o l u m n D e f i n i t i o n
|
|
//-------------------------------------------------------------------
|
|
public override SbmDbDfn.ColumnIdx GetDbCol(SbmAssociation.Column column)
|
|
{
|
|
switch (column)
|
|
{
|
|
case SbmAssociation.Column.Pos: return SbmDbDfn.ColumnIdx.Unknown;
|
|
case SbmAssociation.Column.Id: return SbmDbDfn.ColumnIdx.Association_Id;
|
|
case SbmAssociation.Column.Type: return SbmDbDfn.ColumnIdx.Association_Type;
|
|
case SbmAssociation.Column.Type_Desc: return SbmDbDfn.ColumnIdx.Association_Type;
|
|
case SbmAssociation.Column.Code: return SbmDbDfn.ColumnIdx.Association_Code;
|
|
case SbmAssociation.Column.ExtRef: return SbmDbDfn.ColumnIdx.Association_ExtRef;
|
|
case SbmAssociation.Column.Role: return SbmDbDfn.ColumnIdx.Association_Role;
|
|
case SbmAssociation.Column.Location: return SbmDbDfn.ColumnIdx.Association_Location;
|
|
case SbmAssociation.Column.PhoneMain: return SbmDbDfn.ColumnIdx.Association_PhoneMain;
|
|
case SbmAssociation.Column.Email: return SbmDbDfn.ColumnIdx.Association_Email;
|
|
case SbmAssociation.Column.Group: return SbmDbDfn.ColumnIdx.Association_Group;
|
|
case SbmAssociation.Column.DescDetail: return SbmDbDfn.ColumnIdx.Association_DescDetail;
|
|
//-------------------------------------------------------------------
|
|
case SbmAssociation.Column.DefaultNominalCode: return SbmDbDfn.ColumnIdx.Association_DefaultNominalCode;
|
|
case SbmAssociation.Column.AmountTransMax: return SbmDbDfn.ColumnIdx.Association_AmountTransMax;
|
|
case SbmAssociation.Column.AnnualSalesTarget: return SbmDbDfn.ColumnIdx.Association_AnnualSalesTarget;
|
|
case SbmAssociation.Column.CreditLimit: return SbmDbDfn.ColumnIdx.Association_CreditLimit;
|
|
case SbmAssociation.Column.AccountBalance: return SbmDbDfn.ColumnIdx.Association_AccountBalance;
|
|
case SbmAssociation.Column.DiscountType: return SbmDbDfn.ColumnIdx.Association_DiscountType;
|
|
case SbmAssociation.Column.DiscountType_Desc: return SbmDbDfn.ColumnIdx.Association_DiscountType;
|
|
case SbmAssociation.Column.DiscountRate: return SbmDbDfn.ColumnIdx.Association_DiscountRate;
|
|
//-------------------------------------------------------------------
|
|
case SbmAssociation.Column.PriceSetId: return SbmDbDfn.ColumnIdx.Association_PriceSetId;
|
|
case SbmAssociation.Column.PriceSet_Ref: return SbmDbDfn.ColumnIdx.SaPriceSet_Ref;
|
|
case SbmAssociation.Column.PriceSet_Type: return SbmDbDfn.ColumnIdx.SaPriceSet_Type;
|
|
case SbmAssociation.Column.PriceSet_TypeDesc: return SbmDbDfn.ColumnIdx.SaPriceSet_Type;
|
|
case SbmAssociation.Column.PriceSet_Name: return SbmDbDfn.ColumnIdx.SaPriceSet_Name;
|
|
//-------------------------------------------------------------------
|
|
case SbmAssociation.Column.TaxCodeId: return SbmDbDfn.ColumnIdx.Association_TaxCodeId;
|
|
case SbmAssociation.Column.PaymentTerms: return SbmDbDfn.ColumnIdx.Association_PaymentTerms;
|
|
case SbmAssociation.Column.InvoiceDesc: return SbmDbDfn.ColumnIdx.Association_InvoiceDesc;
|
|
//-------------------------------------------------------------------
|
|
case SbmAssociation.Column.AccountManagerCode: return SbmDbDfn.ColumnIdx.Association_AccountManagerCode;
|
|
case SbmAssociation.Column.AccountManagerDesc: return SbmDbDfn.ColumnIdx.Unknown;
|
|
case SbmAssociation.Column.AccountHandlerCode: return SbmDbDfn.ColumnIdx.Association_AccountHandlerCode;
|
|
case SbmAssociation.Column.AccountHandlerDesc: return SbmDbDfn.ColumnIdx.Unknown;
|
|
case SbmAssociation.Column.AccountTypeCode: return SbmDbDfn.ColumnIdx.Association_AccountTypeCode;
|
|
case SbmAssociation.Column.AccountTypeDesc: return SbmDbDfn.ColumnIdx.Unknown;
|
|
case SbmAssociation.Column.AccountRatingCode: return SbmDbDfn.ColumnIdx.Association_AccountRatingCode;
|
|
case SbmAssociation.Column.AccountRatingDesc: return SbmDbDfn.ColumnIdx.Unknown;
|
|
case SbmAssociation.Column.ContactAreaCode: return SbmDbDfn.ColumnIdx.Association_ContactAreaCode;
|
|
case SbmAssociation.Column.ContactAreaDesc: return SbmDbDfn.ColumnIdx.Unknown;
|
|
case SbmAssociation.Column.ContactHandlerCode: return SbmDbDfn.ColumnIdx.Association_ContactHandlerCode;
|
|
case SbmAssociation.Column.ContactHandlerDesc: return SbmDbDfn.ColumnIdx.Unknown;
|
|
case SbmAssociation.Column.ContactMethodCode: return SbmDbDfn.ColumnIdx.Association_ContactMethodCode;
|
|
case SbmAssociation.Column.ContactMethodDesc: return SbmDbDfn.ColumnIdx.Unknown;
|
|
case SbmAssociation.Column.ContactCallCycleCode: return SbmDbDfn.ColumnIdx.Association_ContactCallCycleCode;
|
|
case SbmAssociation.Column.ContactCallCycleDesc: return SbmDbDfn.ColumnIdx.Unknown;
|
|
case SbmAssociation.Column.OrderLeadTimeCode: return SbmDbDfn.ColumnIdx.Association_OrderLeadTimeCode;
|
|
case SbmAssociation.Column.OrderLeadTimeDesc: return SbmDbDfn.ColumnIdx.Unknown;
|
|
case SbmAssociation.Column.DeliveryTypeCode: return SbmDbDfn.ColumnIdx.Association_DeliveryTypeCode;
|
|
case SbmAssociation.Column.DeliveryTypeDesc: return SbmDbDfn.ColumnIdx.Unknown;
|
|
case SbmAssociation.Column.DeliveryMethodCode: return SbmDbDfn.ColumnIdx.Association_DeliveryMethodCode;
|
|
case SbmAssociation.Column.DeliveryMethodDesc: return SbmDbDfn.ColumnIdx.Unknown;
|
|
case SbmAssociation.Column.DeliveryBookInCode: return SbmDbDfn.ColumnIdx.Association_DeliveryBookInCode;
|
|
case SbmAssociation.Column.DeliveryBookInDesc: return SbmDbDfn.ColumnIdx.Unknown;
|
|
//-------------------------------------------------------------------
|
|
case SbmAssociation.Column.Terminated: return SbmDbDfn.ColumnIdx.Association_Terminated;
|
|
case SbmAssociation.Column.Primary: return SbmDbDfn.ColumnIdx.Association_Flags;
|
|
case SbmAssociation.Column.Technician: return SbmDbDfn.ColumnIdx.Association_Flags;
|
|
case SbmAssociation.Column.Notes: return SbmDbDfn.ColumnIdx.Association_Notes;
|
|
case SbmAssociation.Column.Status_Desc: return SbmDbDfn.ColumnIdx.Association_Status;
|
|
case SbmAssociation.Column.Status_Ind: return SbmDbDfn.ColumnIdx.Unknown;
|
|
//------------------------------------------------------------------- Association's owner details
|
|
case SbmAssociation.Column.AffIdOwner: return SbmDbDfn.ColumnIdx.Unknown;
|
|
case SbmAssociation.Column.Owner_Name: return SbmDbDfn.ColumnIdx.Unknown;
|
|
//------------------------------------------------------------------- Association's target details
|
|
case SbmAssociation.Column.AffIdTarget: return SbmDbDfn.ColumnIdx.Unknown;
|
|
case SbmAssociation.Column.Target_Type: return SbmDbDfn.ColumnIdx.Affiliate_Type;
|
|
case SbmAssociation.Column.Target_TypeDesc: return SbmDbDfn.ColumnIdx.Unknown;
|
|
case SbmAssociation.Column.Target_Name: return SbmDbDfn.ColumnIdx.Affiliate_Name;
|
|
case SbmAssociation.Column.Target_Nature: return SbmDbDfn.ColumnIdx.Affiliate_Nature;
|
|
case SbmAssociation.Column.Target_PhoneMain: return SbmDbDfn.ColumnIdx.Affiliate_PhoneMain;
|
|
case SbmAssociation.Column.Target_PhoneAlt: return SbmDbDfn.ColumnIdx.Affiliate_PhoneAlt;
|
|
case SbmAssociation.Column.Target_PhoneFax: return SbmDbDfn.ColumnIdx.Affiliate_PhoneFax;
|
|
case SbmAssociation.Column.Target_PhoneMobile: return SbmDbDfn.ColumnIdx.Affiliate_PhoneMobile;
|
|
case SbmAssociation.Column.Target_Email: return SbmDbDfn.ColumnIdx.Affiliate_Email;
|
|
case SbmAssociation.Column.Target_Website: return SbmDbDfn.ColumnIdx.Affiliate_Website;
|
|
case SbmAssociation.Column.Target_Notes: return SbmDbDfn.ColumnIdx.Affiliate_Notes;
|
|
//------------------------------------------------------------------- Association's target address details
|
|
case SbmAssociation.Column.Target_Address_Type: return SbmDbDfn.ColumnIdx.Address_Type;
|
|
case SbmAssociation.Column.Target_Address_TypeDesc: return SbmDbDfn.ColumnIdx.Address_Type;
|
|
case SbmAssociation.Column.Target_Address_RefExt: return SbmDbDfn.ColumnIdx.Address_RefExt;
|
|
case SbmAssociation.Column.Target_Address_Name: return SbmDbDfn.ColumnIdx.Address_Name;
|
|
case SbmAssociation.Column.Target_Address_DescBrief: return SbmDbDfn.ColumnIdx.Address_DescBrief;
|
|
case SbmAssociation.Column.Target_Address_Summary: return SbmDbDfn.ColumnIdx.Unknown;
|
|
case SbmAssociation.Column.Target_Address_Line1: return SbmDbDfn.ColumnIdx.Address_Line1;
|
|
case SbmAssociation.Column.Target_Address_Line2: return SbmDbDfn.ColumnIdx.Address_Line2;
|
|
case SbmAssociation.Column.Target_Address_City: return SbmDbDfn.ColumnIdx.Address_City;
|
|
case SbmAssociation.Column.Target_Address_Province: return SbmDbDfn.ColumnIdx.Address_Province;
|
|
case SbmAssociation.Column.Target_Address_Postcode: return SbmDbDfn.ColumnIdx.Address_Postcode;
|
|
case SbmAssociation.Column.Target_Address_Country: return SbmDbDfn.ColumnIdx.Address_Country;
|
|
case SbmAssociation.Column.Target_Address_Contact: return SbmDbDfn.ColumnIdx.Address_Contact;
|
|
case SbmAssociation.Column.Target_Address_Phone: return SbmDbDfn.ColumnIdx.Address_Phone;
|
|
case SbmAssociation.Column.Target_Address_Email: return SbmDbDfn.ColumnIdx.Address_Email;
|
|
case SbmAssociation.Column.Target_Address_AccountManagerCode: return SbmDbDfn.ColumnIdx.Address_AccountManagerCode;
|
|
case SbmAssociation.Column.Target_Address_AccountManagerDesc: return SbmDbDfn.ColumnIdx.Address_AccountManagerCode;
|
|
case SbmAssociation.Column.Target_Address_AccountHandlerCode: return SbmDbDfn.ColumnIdx.Address_AccountHandlerCode;
|
|
case SbmAssociation.Column.Target_Address_AccountHandlerDesc: return SbmDbDfn.ColumnIdx.Address_AccountHandlerCode;
|
|
case SbmAssociation.Column.Target_Address_ContactAreaCode: return SbmDbDfn.ColumnIdx.Address_ContactAreaCode;
|
|
case SbmAssociation.Column.Target_Address_ContactAreaDesc: return SbmDbDfn.ColumnIdx.Address_ContactAreaCode;
|
|
case SbmAssociation.Column.Target_Address_ContactHandlerCode: return SbmDbDfn.ColumnIdx.Address_ContactHandlerCode;
|
|
case SbmAssociation.Column.Target_Address_ContactHandlerDesc: return SbmDbDfn.ColumnIdx.Address_ContactHandlerCode;
|
|
case SbmAssociation.Column.Target_Address_LastVisitOn: return SbmDbDfn.ColumnIdx.Address_LastVisitOn;
|
|
case SbmAssociation.Column.Target_Address_NextVisitOn: return SbmDbDfn.ColumnIdx.Address_NextVisitOn;
|
|
case SbmAssociation.Column.Target_DeliveryAddress_Postcode: return SbmDbDfn.ColumnIdx.Address_Postcode;
|
|
case SbmAssociation.Column.Target_DeliveryAddress_AccountManagerCode: return SbmDbDfn.ColumnIdx.Address_AccountManagerCode;
|
|
case SbmAssociation.Column.Target_DeliveryAddress_ContactAreaCode: return SbmDbDfn.ColumnIdx.Address_ContactAreaCode;
|
|
//------------------------------------------------------------------- Member's details
|
|
case SbmAssociation.Column.Member_Type: return SbmDbDfn.ColumnIdx.Association_Type;
|
|
case SbmAssociation.Column.Member_TypeDesc: return SbmDbDfn.ColumnIdx.Association_Type;
|
|
case SbmAssociation.Column.Member_Code: return SbmDbDfn.ColumnIdx.Association_Code;
|
|
case SbmAssociation.Column.Member_ExtRef: return SbmDbDfn.ColumnIdx.Association_ExtRef;
|
|
case SbmAssociation.Column.Member_Role: return SbmDbDfn.ColumnIdx.Association_Role;
|
|
case SbmAssociation.Column.Member_Location: return SbmDbDfn.ColumnIdx.Association_Location;
|
|
case SbmAssociation.Column.Member_PhoneMain: return SbmDbDfn.ColumnIdx.Association_PhoneMain;
|
|
case SbmAssociation.Column.Member_Email: return SbmDbDfn.ColumnIdx.Association_Email;
|
|
case SbmAssociation.Column.Member_Target_Name: return SbmDbDfn.ColumnIdx.Affiliate_Name;
|
|
case SbmAssociation.Column.Member_Target_Nature: return SbmDbDfn.ColumnIdx.Affiliate_Nature;
|
|
case SbmAssociation.Column.Member_Target_PhoneMain: return SbmDbDfn.ColumnIdx.Affiliate_PhoneMain;
|
|
case SbmAssociation.Column.Member_Target_PhoneAlt: return SbmDbDfn.ColumnIdx.Affiliate_PhoneAlt;
|
|
case SbmAssociation.Column.Member_Target_PhoneFax: return SbmDbDfn.ColumnIdx.Affiliate_PhoneFax;
|
|
case SbmAssociation.Column.Member_Target_PhoneMobile: return SbmDbDfn.ColumnIdx.Affiliate_PhoneMobile;
|
|
case SbmAssociation.Column.Member_Target_Email: return SbmDbDfn.ColumnIdx.Affiliate_Email;
|
|
case SbmAssociation.Column.Member_Target_Website: return SbmDbDfn.ColumnIdx.Affiliate_Website;
|
|
case SbmAssociation.Column.Member_Target_Notes: return SbmDbDfn.ColumnIdx.Affiliate_Notes;
|
|
case SbmAssociation.Column.Member_Target_Address_Summary: return SbmDbDfn.ColumnIdx.Unknown;
|
|
case SbmAssociation.Column.Member_Target_Address_Line1: return SbmDbDfn.ColumnIdx.Address_Line1;
|
|
case SbmAssociation.Column.Member_Target_Address_Line2: return SbmDbDfn.ColumnIdx.Address_Line2;
|
|
case SbmAssociation.Column.Member_Target_Address_City: return SbmDbDfn.ColumnIdx.Address_City;
|
|
case SbmAssociation.Column.Member_Target_Address_Province: return SbmDbDfn.ColumnIdx.Address_Province;
|
|
case SbmAssociation.Column.Member_Target_Address_Postcode: return SbmDbDfn.ColumnIdx.Address_Postcode;
|
|
case SbmAssociation.Column.Member_Target_Address_Country: return SbmDbDfn.ColumnIdx.Address_Country;
|
|
case SbmAssociation.Column.Trans_LastSaleRaised: return SbmDbDfn.ColumnIdx.Unknown; // Net open sales order value.
|
|
case SbmAssociation.Column.Trans_SalesValue_Open: return SbmDbDfn.ColumnIdx.Unknown; // Net open sales order value.
|
|
case SbmAssociation.Column.Trans_SalesValue_Cytd: return SbmDbDfn.ColumnIdx.Unknown; // Net sales order value closed this calendar year.
|
|
case SbmAssociation.Column.Trans_SalesValue_Lcy: return SbmDbDfn.ColumnIdx.Unknown;
|
|
case SbmAssociation.Column.CommodityCount: return SbmDbDfn.ColumnIdx.Unknown;
|
|
}
|
|
return SbmDbDfn.ColumnIdx.Unknown;
|
|
}
|
|
|
|
//-------------------------------------------------------------------
|
|
// Item Column definitions.
|
|
private static readonly String aliasAssociation = "aAssoc";
|
|
// Association Owner contact.
|
|
private static string aliasAssociation_Affiliate_Owner = "Asn_AffOwn";
|
|
private static string prefixAssociation_Affiliate_Owner = aliasAssociation_Affiliate_Owner + "_";
|
|
// Association Target contact.
|
|
private static string aliasAssociation_Affiliate_Target = "Asn_AffTgt";
|
|
private static string prefixAssociation_Affiliate_Target = aliasAssociation_Affiliate_Target + "_";
|
|
// Association Target address.
|
|
private static string aliasAssociation_Target_Address = "Asn_TgtAdd";
|
|
private static string prefixAssociation_Target_Address = aliasAssociation_Target_Address + "_";
|
|
// Association Member details.
|
|
private static string aliasAssociation_Member_Association = "Asn_MemAss";
|
|
private static string prefixAssociation_Member_Association = aliasAssociation_Member_Association + "_";
|
|
// Association Member contact.
|
|
private static string aliasAssociation_Member_Affiliate = "Asn_MemAff";
|
|
private static string prefixAssociation_Member_Affiliate = aliasAssociation_Member_Affiliate + "_";
|
|
// Association Member address.
|
|
private static string aliasAssociation_Member_Address = "Asn_MemAdd";
|
|
private static string prefixAssociation_Member_Address = aliasAssociation_Member_Address + "_";
|
|
// PriceSet.
|
|
private static string aliasAssociation_PriceSet = "Asn_PrcSet";
|
|
private static string prefixAssociation_PriceSet = aliasAssociation_PriceSet + "_";
|
|
// Column aliases.
|
|
private static string colAssociation_Primary = "ColPrimary";
|
|
private static string colAssociation_Technician = "ColTechnician";
|
|
private static string colAssociation_LastSaleRaised = "ColLastSoRaise";
|
|
private static string colAssociation_SalesValueOpen = "ColSalesValOpen";
|
|
private static string colAssociation_SalesValueCytd = "ColSalesValCytd";
|
|
private static string colAssociation_SalesValueLcy = "ColSaleValLcy";
|
|
private static string colAssociation_CommodityCount = "ColCmdCount";
|
|
|
|
// Column definition population.
|
|
private void SetAssociationColDfn
|
|
(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.Association)
|
|
alias = aliasAssociation;
|
|
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)Internals.GetColTextLen(dbCol);
|
|
}
|
|
//-------------------------------------------------------------------
|
|
// Item column definition.
|
|
public override ColumnDfn GetAssociationColumnDfn(SbmAssociation.Column column, string caption = "", int width = 0)
|
|
{
|
|
ColumnDfn columnDfn = new ColumnDfn((int)column, caption, width);
|
|
switch (column)
|
|
{
|
|
//-----------------------------------------------------------
|
|
case SbmAssociation.Column.Pos:
|
|
SetAssociationColDfn(columnDfn, "Pos", 45, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right);
|
|
columnDfn.SortMode = ColumnDfn.ColumnSortMode.Off;
|
|
columnDfn.ReadOnly = true;
|
|
columnDfn.Resizable = false;
|
|
break;
|
|
//-----------------------------------------------------------
|
|
// Association properties.
|
|
case SbmAssociation.Column.Id:
|
|
SetAssociationColDfn(columnDfn, "Id", 60, SbmDbDfn.ColumnIdx.Association_Id, ColumnAlignment.Right, DataValue.DataType.Long);
|
|
columnDfn.ReadOnly = true;
|
|
break;
|
|
case SbmAssociation.Column.Type:
|
|
SetAssociationColDfn(columnDfn, "Type", 70, SbmDbDfn.ColumnIdx.Association_Type, ColumnAlignment.Right, DataValue.DataType.Long);
|
|
columnDfn.ReadOnly = true;
|
|
break;
|
|
case SbmAssociation.Column.Type_Desc:
|
|
SetAssociationColDfn(columnDfn, "TypeDesc", 70, SbmDbDfn.ColumnIdx.Association_Type, ColumnAlignment.Center, DataValue.DataType.String);
|
|
columnDfn.ReadOnly = true;
|
|
break;
|
|
case SbmAssociation.Column.Code:
|
|
SetAssociationColDfn(columnDfn, "Code", 60, SbmDbDfn.ColumnIdx.Association_Code);
|
|
break;
|
|
case SbmAssociation.Column.ExtRef:
|
|
SetAssociationColDfn(columnDfn, "Ref", 60, SbmDbDfn.ColumnIdx.Association_ExtRef, ColumnAlignment.Center);
|
|
break;
|
|
case SbmAssociation.Column.Role:
|
|
SetAssociationColDfn(columnDfn, GetAttributeCaption(SbmDbDfn.ColumnIdx.Association_Role, "Role"), 90, SbmDbDfn.ColumnIdx.Association_Role);
|
|
break;
|
|
case SbmAssociation.Column.Location:
|
|
SetAssociationColDfn(columnDfn, GetAttributeCaption(SbmDbDfn.ColumnIdx.Association_Location, "Location"), 100, SbmDbDfn.ColumnIdx.Association_Location);
|
|
break;
|
|
case SbmAssociation.Column.PhoneMain:
|
|
SetAssociationColDfn(columnDfn, "Phone Main", 85, SbmDbDfn.ColumnIdx.Association_PhoneMain);
|
|
break;
|
|
case SbmAssociation.Column.Email:
|
|
SetAssociationColDfn(columnDfn, "Email", 170, SbmDbDfn.ColumnIdx.Association_Email);
|
|
break;
|
|
case SbmAssociation.Column.Group:
|
|
SetAssociationColDfn(columnDfn, "Group", 100, SbmDbDfn.ColumnIdx.Association_Group);
|
|
break;
|
|
case SbmAssociation.Column.DescDetail:
|
|
SetAssociationColDfn(columnDfn, "Desc Detail", 120, SbmDbDfn.ColumnIdx.Association_DescDetail);
|
|
break;
|
|
//-----------------------------------------------------------
|
|
// Accounting details.
|
|
case SbmAssociation.Column.DefaultNominalCode:
|
|
SetAssociationColDfn(columnDfn, "Default nominal", 90, SbmDbDfn.ColumnIdx.Association_DefaultNominalCode);
|
|
break;
|
|
case SbmAssociation.Column.AmountTransMax:
|
|
SetAssociationColDfn(columnDfn, "Amount trans max", 90, SbmDbDfn.ColumnIdx.Association_AmountTransMax, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
break;
|
|
case SbmAssociation.Column.AnnualSalesTarget:
|
|
if (UserCanViewCommoditySalesFinancials())
|
|
{
|
|
SetAssociationColDfn(columnDfn, "Annual sales target", 90, SbmDbDfn.ColumnIdx.Association_AnnualSalesTarget, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.NumDecimals = 0;
|
|
}
|
|
break;
|
|
case SbmAssociation.Column.CreditLimit:
|
|
SetAssociationColDfn(columnDfn, "Credit limit", 90, SbmDbDfn.ColumnIdx.Association_CreditLimit, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
break;
|
|
case SbmAssociation.Column.AccountBalance:
|
|
SetAssociationColDfn(columnDfn, "Account balance", 90, SbmDbDfn.ColumnIdx.Association_AccountBalance, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
break;
|
|
case SbmAssociation.Column.DiscountType:
|
|
SetAssociationColDfn(columnDfn, "Discount type", 80, SbmDbDfn.ColumnIdx.Association_DiscountType, ColumnAlignment.Center, DataValue.DataType.Long);
|
|
break;
|
|
case SbmAssociation.Column.DiscountType_Desc:
|
|
SetAssociationColDfn(columnDfn, "Discount type desc", 110, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Center);
|
|
break;
|
|
case SbmAssociation.Column.DiscountRate:
|
|
SetAssociationColDfn(columnDfn, "Discount rate", 80, SbmDbDfn.ColumnIdx.Association_DiscountRate, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
break;
|
|
//-----------------------------------------------------------
|
|
// PriceSet details.
|
|
case SbmAssociation.Column.PriceSetId:
|
|
SetAssociationColDfn(columnDfn, "Price set Id", 60, SbmDbDfn.ColumnIdx.SaPriceSet_Id, ColumnAlignment.Right, DataValue.DataType.Long);
|
|
break;
|
|
case SbmAssociation.Column.PriceSet_Ref:
|
|
SetAssociationColDfn(columnDfn, "Price set ref", 100, SbmDbDfn.ColumnIdx.SaPriceSet_Ref, ColumnAlignment.Default, DataValue.DataType.String, aliasAssociation_PriceSet, prefixAssociation_PriceSet);
|
|
break;
|
|
case SbmAssociation.Column.PriceSet_Type:
|
|
SetAssociationColDfn(columnDfn, "Price set type", 70, SbmDbDfn.ColumnIdx.SaPriceSet_Type, ColumnAlignment.Center, DataValue.DataType.Long, aliasAssociation_PriceSet, prefixAssociation_PriceSet);
|
|
break;
|
|
case SbmAssociation.Column.PriceSet_TypeDesc:
|
|
SetAssociationColDfn(columnDfn, "Price set type", 80, SbmDbDfn.ColumnIdx.SaPriceSet_Type, ColumnAlignment.Default, DataValue.DataType.String, aliasAssociation_PriceSet, prefixAssociation_PriceSet);
|
|
break;
|
|
case SbmAssociation.Column.PriceSet_Name:
|
|
SetAssociationColDfn(columnDfn, "Price set name", 120, SbmDbDfn.ColumnIdx.SaPriceSet_Name, ColumnAlignment.Default, DataValue.DataType.String, aliasAssociation_PriceSet, prefixAssociation_PriceSet);
|
|
break;
|
|
//-----------------------------------------------------------
|
|
// TaxCode details.
|
|
case SbmAssociation.Column.TaxCodeId:
|
|
SetAssociationColDfn(columnDfn, "Tax code #", 60, SbmDbDfn.ColumnIdx.Association_TaxCodeId, ColumnAlignment.Right, DataValue.DataType.Long);
|
|
break;
|
|
case SbmAssociation.Column.PaymentTerms:
|
|
SetAssociationColDfn(columnDfn, "Payment terms", 90, SbmDbDfn.ColumnIdx.Association_PaymentTerms, ColumnAlignment.Center, DataValue.DataType.Long);
|
|
break;
|
|
case SbmAssociation.Column.InvoiceDesc:
|
|
SetAssociationColDfn(columnDfn, "Invoice desc", 120, SbmDbDfn.ColumnIdx.Association_InvoiceDesc);
|
|
break;
|
|
//-----------------------------------------------------------
|
|
// Association codes.
|
|
case SbmAssociation.Column.AccountManagerCode:
|
|
case SbmAssociation.Column.AccountManagerDesc:
|
|
{
|
|
String label = GetAttributeCaption(SbmDbDfn.ColumnIdx.Association_AccountManagerCode, "Acc.Mgr.");
|
|
SetAssociationColDfn(columnDfn, label, 70, SbmDbDfn.ColumnIdx.Association_AccountManagerCode, ColumnAlignment.Center);
|
|
break;
|
|
}
|
|
case SbmAssociation.Column.AccountHandlerCode:
|
|
case SbmAssociation.Column.AccountHandlerDesc:
|
|
{
|
|
String label = GetAttributeCaption(SbmDbDfn.ColumnIdx.Association_AccountHandlerCode, "Acc.Hndlr");
|
|
SetAssociationColDfn(columnDfn, label, 70, SbmDbDfn.ColumnIdx.Association_AccountHandlerCode, ColumnAlignment.Center);
|
|
break;
|
|
}
|
|
case SbmAssociation.Column.AccountTypeCode:
|
|
case SbmAssociation.Column.AccountTypeDesc:
|
|
{
|
|
String label = GetAttributeCaption(SbmDbDfn.ColumnIdx.Association_AccountTypeCode, "Acc.Type");
|
|
SetAssociationColDfn(columnDfn, label, 90, SbmDbDfn.ColumnIdx.Association_AccountTypeCode, ColumnAlignment.Center);
|
|
break;
|
|
}
|
|
case SbmAssociation.Column.AccountRatingCode:
|
|
case SbmAssociation.Column.AccountRatingDesc:
|
|
{
|
|
String label = GetAttributeCaption(SbmDbDfn.ColumnIdx.Association_AccountRatingCode, "Acc.Rating");
|
|
SetAssociationColDfn(columnDfn, label, 90, SbmDbDfn.ColumnIdx.Association_AccountRatingCode, ColumnAlignment.Center);
|
|
break;
|
|
}
|
|
case SbmAssociation.Column.ContactAreaCode:
|
|
case SbmAssociation.Column.ContactAreaDesc:
|
|
{
|
|
String label = GetAttributeCaption(SbmDbDfn.ColumnIdx.Association_ContactAreaCode, "Cont.Area");
|
|
SetAssociationColDfn(columnDfn, label, 70, SbmDbDfn.ColumnIdx.Association_ContactAreaCode, ColumnAlignment.Center);
|
|
break;
|
|
}
|
|
case SbmAssociation.Column.ContactHandlerCode:
|
|
case SbmAssociation.Column.ContactHandlerDesc:
|
|
{
|
|
String label = GetAttributeCaption(SbmDbDfn.ColumnIdx.Association_ContactHandlerCode, "Cont.Hndlr");
|
|
SetAssociationColDfn(columnDfn, label, 80, SbmDbDfn.ColumnIdx.Association_ContactHandlerCode, ColumnAlignment.Center);
|
|
break;
|
|
}
|
|
case SbmAssociation.Column.ContactMethodCode:
|
|
case SbmAssociation.Column.ContactMethodDesc:
|
|
{
|
|
String label = GetAttributeCaption(SbmDbDfn.ColumnIdx.Association_ContactMethodCode, "Cont.Method");
|
|
SetAssociationColDfn(columnDfn, label, 90, SbmDbDfn.ColumnIdx.Association_ContactMethodCode, ColumnAlignment.Center);
|
|
break;
|
|
}
|
|
case SbmAssociation.Column.ContactCallCycleCode:
|
|
case SbmAssociation.Column.ContactCallCycleDesc:
|
|
{
|
|
String label = GetAttributeCaption(SbmDbDfn.ColumnIdx.Association_ContactCallCycleCode, "Call cycle");
|
|
SetAssociationColDfn(columnDfn, label, 90, SbmDbDfn.ColumnIdx.Association_ContactCallCycleCode, ColumnAlignment.Center);
|
|
break;
|
|
}
|
|
case SbmAssociation.Column.CallsPerYear:
|
|
SetAssociationColDfn(columnDfn, "Calls per year", 80, SbmDbDfn.ColumnIdx.Association_CallsPerYear, ColumnAlignment.Center, DataValue.DataType.Long);
|
|
break;
|
|
case SbmAssociation.Column.LastCall:
|
|
SetAssociationColDfn(columnDfn, "Last call", 90, SbmDbDfn.ColumnIdx.Association_LastCall, ColumnAlignment.Center, DataValue.DataType.DateTime);
|
|
break;
|
|
//-----------------------------------------------------------
|
|
// Seasion categories details.
|
|
case SbmAssociation.Column.SeasonalCategoryCodes:
|
|
case SbmAssociation.Column.SeasonalCategoryCode1:
|
|
case SbmAssociation.Column.SeasonalCategoryDesc1:
|
|
case SbmAssociation.Column.SeasonalCategoryCode2:
|
|
case SbmAssociation.Column.SeasonalCategoryDesc2:
|
|
case SbmAssociation.Column.SeasonalCategoryCode3:
|
|
case SbmAssociation.Column.SeasonalCategoryDesc3:
|
|
{
|
|
String label = "Seasonal categories";
|
|
if (column == SbmAssociation.Column.SeasonalCategoryCode1) label = " Seasonal cat code 1";
|
|
else if (column == SbmAssociation.Column.SeasonalCategoryDesc1) label = "Seasonal cat 1";
|
|
else if (column == SbmAssociation.Column.SeasonalCategoryCode2) label = "Seasonal cat code 2";
|
|
else if (column == SbmAssociation.Column.SeasonalCategoryDesc2) label = "Seasonal cat 2";
|
|
else if (column == SbmAssociation.Column.SeasonalCategoryCode3) label = "Seasonal cat code 3";
|
|
else if (column == SbmAssociation.Column.SeasonalCategoryDesc3) label = "Seasonal cat 3";
|
|
SetAssociationColDfn(columnDfn, label, 120, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Left);
|
|
break;
|
|
}
|
|
|
|
//-----------------------------------------------------------
|
|
// Other Coding details.
|
|
case SbmAssociation.Column.OrderLeadTimeCode:
|
|
case SbmAssociation.Column.OrderLeadTimeDesc:
|
|
{
|
|
String label = GetAttributeCaption(SbmDbDfn.ColumnIdx.Association_OrderLeadTimeCode, "Order lead time");
|
|
SetAssociationColDfn(columnDfn, label, 90, SbmDbDfn.ColumnIdx.Association_OrderLeadTimeCode, ColumnAlignment.Center);
|
|
break;
|
|
}
|
|
case SbmAssociation.Column.DeliveryTypeCode:
|
|
case SbmAssociation.Column.DeliveryTypeDesc:
|
|
{
|
|
String label = GetAttributeCaption(SbmDbDfn.ColumnIdx.Association_DeliveryTypeCode, "Delivery type");
|
|
SetAssociationColDfn(columnDfn, label, 90, SbmDbDfn.ColumnIdx.Association_DeliveryTypeCode, ColumnAlignment.Center);
|
|
break;
|
|
}
|
|
case SbmAssociation.Column.DeliveryMethodCode:
|
|
case SbmAssociation.Column.DeliveryMethodDesc:
|
|
{
|
|
String label = GetAttributeCaption(SbmDbDfn.ColumnIdx.Association_DeliveryMethodCode, "Delivery method");
|
|
SetAssociationColDfn(columnDfn, label, 90, SbmDbDfn.ColumnIdx.Association_DeliveryMethodCode, ColumnAlignment.Center);
|
|
break;
|
|
}
|
|
case SbmAssociation.Column.DeliveryBookInCode:
|
|
case SbmAssociation.Column.DeliveryBookInDesc:
|
|
{
|
|
String label = GetAttributeCaption(SbmDbDfn.ColumnIdx.Association_DeliveryBookInCode, "Delivery book-in");
|
|
SetAssociationColDfn(columnDfn, label, 90, SbmDbDfn.ColumnIdx.Association_DeliveryBookInCode, ColumnAlignment.Center);
|
|
break;
|
|
}
|
|
//---------------------------------------------------------------
|
|
case SbmAssociation.Column.Terminated:
|
|
SetAssociationColDfn(columnDfn, "Terminated", 90, SbmDbDfn.ColumnIdx.Association_Terminated, ColumnAlignment.Center, DataValue.DataType.Date);
|
|
columnDfn.DateFormat = "d-MMM-yy";
|
|
break;
|
|
case SbmAssociation.Column.Primary:
|
|
SetAssociationColDfn(columnDfn, "Primary", 50, SbmDbDfn.ColumnIdx.Association_Flags, ColumnAlignment.Center);
|
|
columnDfn.DataName = colAssociation_Primary;
|
|
columnDfn.SortMode = ColumnDfn.ColumnSortMode.On;
|
|
columnDfn.DataType = DataValue.DataType.Bool;
|
|
columnDfn.BoolFormat = ColumnBoolFormat.Tick;
|
|
break;
|
|
case SbmAssociation.Column.Technician:
|
|
SetAssociationColDfn(columnDfn, "Tech.", 50, SbmDbDfn.ColumnIdx.Association_Flags, ColumnAlignment.Center);
|
|
columnDfn.DataName = colAssociation_Technician;
|
|
columnDfn.SortMode = ColumnDfn.ColumnSortMode.On;
|
|
columnDfn.DataType = DataValue.DataType.Bool;
|
|
columnDfn.BoolFormat = ColumnBoolFormat.Tick;
|
|
break;
|
|
//-----------------------------------------------------------
|
|
// Owner details.
|
|
case SbmAssociation.Column.AffIdOwner:
|
|
SetAssociationColDfn(columnDfn, "Owner Id", 60, SbmDbDfn.ColumnIdx.Association_AffIdOwner, ColumnAlignment.Right, DataValue.DataType.Long);
|
|
columnDfn.ReadOnly = true;
|
|
break;
|
|
case SbmAssociation.Column.Owner_Name:
|
|
SetAssociationColDfn(columnDfn, "Owner", 120, SbmDbDfn.ColumnIdx.Affiliate_Name, ColumnAlignment.Default, DataValue.DataType.String, aliasAssociation_Affiliate_Owner, prefixAssociation_Affiliate_Owner);
|
|
columnDfn.ReadOnly = true;
|
|
break;
|
|
//-----------------------------------------------------------
|
|
// Target details.
|
|
case SbmAssociation.Column.AffIdTarget:
|
|
SetAssociationColDfn(columnDfn, "Target Id", 60, SbmDbDfn.ColumnIdx.Association_AffIdOwner, ColumnAlignment.Right, DataValue.DataType.Long);
|
|
break;
|
|
case SbmAssociation.Column.Target_Type:
|
|
SetAssociationColDfn(columnDfn, "Type", 40, SbmDbDfn.ColumnIdx.Affiliate_Type, ColumnAlignment.Center, DataValue.DataType.Long, aliasAssociation_Affiliate_Target, prefixAssociation_Affiliate_Target);
|
|
break;
|
|
case SbmAssociation.Column.Target_TypeDesc:
|
|
SetAssociationColDfn(columnDfn, "Type", 80, SbmDbDfn.ColumnIdx.Affiliate_Type, ColumnAlignment.Default, DataValue.DataType.String, aliasAssociation_Affiliate_Target, prefixAssociation_Affiliate_Target);
|
|
break;
|
|
case SbmAssociation.Column.Target_Name:
|
|
SetAssociationColDfn(columnDfn, "Target", 240, SbmDbDfn.ColumnIdx.Affiliate_Name, ColumnAlignment.Default, DataValue.DataType.String, aliasAssociation_Affiliate_Target, prefixAssociation_Affiliate_Target);
|
|
break;
|
|
case SbmAssociation.Column.Target_FirstName:
|
|
SetAssociationColDfn(columnDfn, "First name", 240, SbmDbDfn.ColumnIdx.Affiliate_FirstName, ColumnAlignment.Default, DataValue.DataType.String, aliasAssociation_Affiliate_Target, prefixAssociation_Affiliate_Target);
|
|
break;
|
|
case SbmAssociation.Column.Target_LastName:
|
|
SetAssociationColDfn(columnDfn, "Last name", 240, SbmDbDfn.ColumnIdx.Affiliate_LastName, ColumnAlignment.Default, DataValue.DataType.String, aliasAssociation_Affiliate_Target, prefixAssociation_Affiliate_Target);
|
|
break;
|
|
case SbmAssociation.Column.Target_Nature:
|
|
SetAssociationColDfn(columnDfn, "Target nature", 120, SbmDbDfn.ColumnIdx.Affiliate_Nature, ColumnAlignment.Default, DataValue.DataType.String, aliasAssociation_Affiliate_Target, prefixAssociation_Affiliate_Target);
|
|
break;
|
|
case SbmAssociation.Column.Target_PhoneMain:
|
|
SetAssociationColDfn(columnDfn, "Main phone", 85, SbmDbDfn.ColumnIdx.Affiliate_PhoneMain, ColumnAlignment.Default, DataValue.DataType.String, aliasAssociation_Affiliate_Target, prefixAssociation_Affiliate_Target);
|
|
break;
|
|
case SbmAssociation.Column.Target_PhoneFax:
|
|
SetAssociationColDfn(columnDfn, "Fax phone", 85, SbmDbDfn.ColumnIdx.Affiliate_PhoneFax, ColumnAlignment.Default, DataValue.DataType.String, aliasAssociation_Affiliate_Target, prefixAssociation_Affiliate_Target);
|
|
break;
|
|
case SbmAssociation.Column.Target_Email:
|
|
SetAssociationColDfn(columnDfn, "Email", 170, SbmDbDfn.ColumnIdx.Affiliate_Email, ColumnAlignment.Default, DataValue.DataType.String, aliasAssociation_Affiliate_Target, prefixAssociation_Affiliate_Target);
|
|
break;
|
|
case SbmAssociation.Column.Target_Notes:
|
|
SetAssociationColDfn(columnDfn, "Notes", 200, SbmDbDfn.ColumnIdx.Affiliate_Notes, ColumnAlignment.Default, DataValue.DataType.String, aliasAssociation_Affiliate_Target, prefixAssociation_Affiliate_Target);
|
|
break;
|
|
//-----------------------------------------------------------
|
|
// Target address details.
|
|
case SbmAssociation.Column.Target_Address_Type:
|
|
SetAssociationColDfn(columnDfn, "Address type", 75, SbmDbDfn.ColumnIdx.Address_Type, ColumnAlignment.Right, DataValue.DataType.Long, aliasAssociation_Target_Address, prefixAssociation_Target_Address);
|
|
break;
|
|
case SbmAssociation.Column.Target_Address_TypeDesc:
|
|
SetAssociationColDfn(columnDfn, "Address type", 90, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Center, DataValue.DataType.String, aliasAssociation_Target_Address, prefixAssociation_Target_Address);
|
|
columnDfn.DataName = (SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Address_Type, aliasAssociation_Target_Address));
|
|
break;
|
|
case SbmAssociation.Column.Target_Address_RefExt:
|
|
SetAssociationColDfn(columnDfn, "Address ref ext", 90, SbmDbDfn.ColumnIdx.Address_RefExt, ColumnAlignment.Center, DataValue.DataType.String, aliasAssociation_Target_Address, prefixAssociation_Target_Address);
|
|
break;
|
|
case SbmAssociation.Column.Target_Address_Name:
|
|
SetAssociationColDfn(columnDfn, "Address name", 120, SbmDbDfn.ColumnIdx.Address_Name, ColumnAlignment.Default, DataValue.DataType.String, aliasAssociation_Target_Address, prefixAssociation_Target_Address);
|
|
break;
|
|
case SbmAssociation.Column.Target_Address_DescBrief:
|
|
SetAssociationColDfn(columnDfn, "Address desc", 120, SbmDbDfn.ColumnIdx.Address_DescBrief, ColumnAlignment.Default, DataValue.DataType.String, aliasAssociation_Target_Address, prefixAssociation_Target_Address);
|
|
break;
|
|
/**/
|
|
case SbmAssociation.Column.Target_Address_Summary:
|
|
SetAssociationColDfn(columnDfn, "Address", 220, SbmDbDfn.ColumnIdx.Unknown);
|
|
columnDfn.DataName = (SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Address_Postcode, aliasAssociation_Target_Address));
|
|
break;
|
|
case SbmAssociation.Column.Target_Address_Line1:
|
|
SetAssociationColDfn(columnDfn, "Address 1", 120, SbmDbDfn.ColumnIdx.Address_Line1, ColumnAlignment.Default, DataValue.DataType.String, aliasAssociation_Target_Address, prefixAssociation_Target_Address);
|
|
break;
|
|
case SbmAssociation.Column.Target_Address_Line2:
|
|
SetAssociationColDfn(columnDfn, "Address 2", 120, SbmDbDfn.ColumnIdx.Address_Line2, ColumnAlignment.Default, DataValue.DataType.String, aliasAssociation_Target_Address, prefixAssociation_Target_Address);
|
|
break;
|
|
case SbmAssociation.Column.Target_Address_City:
|
|
SetAssociationColDfn(columnDfn, "City", 80, SbmDbDfn.ColumnIdx.Address_City, ColumnAlignment.Default, DataValue.DataType.String, aliasAssociation_Target_Address, prefixAssociation_Target_Address);
|
|
break;
|
|
case SbmAssociation.Column.Target_Address_Province:
|
|
SetAssociationColDfn(columnDfn, "Province", 80, SbmDbDfn.ColumnIdx.Address_Province, ColumnAlignment.Default, DataValue.DataType.String, aliasAssociation_Target_Address, prefixAssociation_Target_Address);
|
|
break;
|
|
case SbmAssociation.Column.Target_Address_Postcode:
|
|
SetAssociationColDfn(columnDfn, "Postcode", 65, SbmDbDfn.ColumnIdx.Address_Postcode, ColumnAlignment.Center, DataValue.DataType.String, aliasAssociation_Target_Address, prefixAssociation_Target_Address);
|
|
break;
|
|
case SbmAssociation.Column.Target_Address_Country:
|
|
SetAssociationColDfn(columnDfn, "Country", 80, SbmDbDfn.ColumnIdx.Address_Country, ColumnAlignment.Default, DataValue.DataType.String, aliasAssociation_Target_Address, prefixAssociation_Target_Address);
|
|
break;
|
|
case SbmAssociation.Column.Target_Address_Contact:
|
|
SetAssociationColDfn(columnDfn, "Address contact", 100, SbmDbDfn.ColumnIdx.Address_Contact, ColumnAlignment.Default, DataValue.DataType.String, aliasAssociation_Target_Address, prefixAssociation_Target_Address);
|
|
break;
|
|
case SbmAssociation.Column.Target_Address_Phone:
|
|
SetAssociationColDfn(columnDfn, "Address phone", 85, SbmDbDfn.ColumnIdx.Address_Phone, ColumnAlignment.Default, DataValue.DataType.String, aliasAssociation_Target_Address, prefixAssociation_Target_Address);
|
|
break;
|
|
case SbmAssociation.Column.Target_Address_Email:
|
|
SetAssociationColDfn(columnDfn, "Address email", 170, SbmDbDfn.ColumnIdx.Address_Email, ColumnAlignment.Default, DataValue.DataType.String, aliasAssociation_Target_Address, prefixAssociation_Target_Address);
|
|
break;
|
|
case SbmAssociation.Column.Target_Address_AccountManagerCode:
|
|
{
|
|
String label = GetAttributeCaption(SbmDbDfn.ColumnIdx.Association_AccountManagerCode, "account manager");
|
|
SetAssociationColDfn(columnDfn, "Address " + label, 70, SbmDbDfn.ColumnIdx.Address_AccountManagerCode, ColumnAlignment.Default, DataValue.DataType.String, aliasAssociation_Target_Address, prefixAssociation_Target_Address);
|
|
break;
|
|
}
|
|
case SbmAssociation.Column.Target_Address_AccountManagerDesc:
|
|
{
|
|
String label = GetAttributeCaption(SbmDbDfn.ColumnIdx.Association_AccountManagerCode, "account manager");
|
|
SetAssociationColDfn(columnDfn, "Address " + label, 100, SbmDbDfn.ColumnIdx.Address_AccountManagerCode, ColumnAlignment.Default, DataValue.DataType.String, aliasAssociation_Target_Address, prefixAssociation_Target_Address);
|
|
break;
|
|
}
|
|
case SbmAssociation.Column.Target_Address_AccountHandlerCode:
|
|
{
|
|
String label = GetAttributeCaption(SbmDbDfn.ColumnIdx.Association_AccountHandlerCode, "account handler");
|
|
SetAssociationColDfn(columnDfn, "Address " + label, 70, SbmDbDfn.ColumnIdx.Address_AccountHandlerCode, ColumnAlignment.Default, DataValue.DataType.String, aliasAssociation_Target_Address, prefixAssociation_Target_Address);
|
|
break;
|
|
}
|
|
case SbmAssociation.Column.Target_Address_AccountHandlerDesc:
|
|
{
|
|
String label = GetAttributeCaption(SbmDbDfn.ColumnIdx.Association_AccountHandlerCode, "account handler");
|
|
SetAssociationColDfn(columnDfn, "Address " + label, 100, SbmDbDfn.ColumnIdx.Address_AccountHandlerCode, ColumnAlignment.Default, DataValue.DataType.String, aliasAssociation_Target_Address, prefixAssociation_Target_Address);
|
|
break;
|
|
}
|
|
case SbmAssociation.Column.Target_Address_ContactAreaCode:
|
|
{
|
|
String label = GetAttributeCaption(SbmDbDfn.ColumnIdx.Association_ContactAreaCode, "contact area");
|
|
SetAssociationColDfn(columnDfn, "Address " + label, 70, SbmDbDfn.ColumnIdx.Address_ContactAreaCode, ColumnAlignment.Default, DataValue.DataType.String, aliasAssociation_Target_Address, prefixAssociation_Target_Address);
|
|
break;
|
|
}
|
|
case SbmAssociation.Column.Target_Address_ContactAreaDesc:
|
|
{
|
|
String label = GetAttributeCaption(SbmDbDfn.ColumnIdx.Association_ContactAreaCode, "contact area");
|
|
SetAssociationColDfn(columnDfn, "Address " + label, 100, SbmDbDfn.ColumnIdx.Address_ContactAreaCode, ColumnAlignment.Default, DataValue.DataType.String, aliasAssociation_Target_Address, prefixAssociation_Target_Address);
|
|
break;
|
|
}
|
|
case SbmAssociation.Column.Target_Address_ContactHandlerCode:
|
|
{
|
|
String label = GetAttributeCaption(SbmDbDfn.ColumnIdx.Association_ContactHandlerCode, "contact handler");
|
|
SetAssociationColDfn(columnDfn, "Address " + label, 80, SbmDbDfn.ColumnIdx.Address_ContactHandlerCode, ColumnAlignment.Default, DataValue.DataType.String, aliasAssociation_Target_Address, prefixAssociation_Target_Address);
|
|
break;
|
|
}
|
|
case SbmAssociation.Column.Target_Address_ContactHandlerDesc:
|
|
{
|
|
String label = GetAttributeCaption(SbmDbDfn.ColumnIdx.Association_ContactHandlerCode, "contact handler");
|
|
SetAssociationColDfn(columnDfn, "Address " + label, 100, SbmDbDfn.ColumnIdx.Address_ContactHandlerCode, ColumnAlignment.Default, DataValue.DataType.String, aliasAssociation_Target_Address, prefixAssociation_Target_Address);
|
|
break;
|
|
}
|
|
case SbmAssociation.Column.Target_Address_LastVisitOn:
|
|
SetAssociationColDfn(columnDfn, "Last visit", 90, SbmDbDfn.ColumnIdx.Address_LastVisitOn, ColumnAlignment.Center, DataValue.DataType.Date, aliasAssociation_Target_Address, prefixAssociation_Target_Address);
|
|
break;
|
|
case SbmAssociation.Column.Target_Address_NextVisitOn:
|
|
SetAssociationColDfn(columnDfn, "Next visit", 90, SbmDbDfn.ColumnIdx.Address_NextVisitOn, ColumnAlignment.Center, DataValue.DataType.Date, aliasAssociation_Target_Address, prefixAssociation_Target_Address);
|
|
break;
|
|
//-----------------------------------------------------------
|
|
// Target Delivery details.
|
|
// These should only be used for association import [ref Cadix 201601] and do not require column definitions as the address columns are already defined above.
|
|
case SbmAssociation.Column.Target_DeliveryAddress_Postcode:
|
|
break;
|
|
case SbmAssociation.Column.Target_DeliveryAddress_AccountManagerCode:
|
|
break;
|
|
case SbmAssociation.Column.Target_DeliveryAddress_ContactAreaCode:
|
|
break;
|
|
//-----------------------------------------------------------
|
|
// Member details.
|
|
|
|
case SbmAssociation.Column.Member_Type:
|
|
SetAssociationColDfn(columnDfn, "Member type", 75, SbmDbDfn.ColumnIdx.Affiliate_Type, ColumnAlignment.Right, DataValue.DataType.Long, aliasAssociation_Member_Association, prefixAssociation_Member_Association);
|
|
break;
|
|
case SbmAssociation.Column.Member_TypeDesc:
|
|
SetAssociationColDfn(columnDfn, "Member type", 90, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Default, DataValue.DataType.String, aliasAssociation_Member_Association, prefixAssociation_Member_Association);
|
|
break;
|
|
case SbmAssociation.Column.Member_Code:
|
|
SetAssociationColDfn(columnDfn, "Member code", 90, SbmDbDfn.ColumnIdx.Association_Code, ColumnAlignment.Default, DataValue.DataType.String, aliasAssociation_Member_Association, prefixAssociation_Member_Association);
|
|
break;
|
|
case SbmAssociation.Column.Member_ExtRef:
|
|
SetAssociationColDfn(columnDfn, "Member ext ref", 80, SbmDbDfn.ColumnIdx.Association_ExtRef, ColumnAlignment.Default, DataValue.DataType.String, aliasAssociation_Member_Association, prefixAssociation_Member_Association);
|
|
break;
|
|
case SbmAssociation.Column.Member_Role:
|
|
SetAssociationColDfn(columnDfn, "Member " + GetAttributeCaption(SbmDbDfn.ColumnIdx.Association_Role, "role"), 90, SbmDbDfn.ColumnIdx.Association_Role, ColumnAlignment.Default, DataValue.DataType.String, aliasAssociation_Member_Association, prefixAssociation_Member_Association);
|
|
break;
|
|
case SbmAssociation.Column.Member_Location:
|
|
SetAssociationColDfn(columnDfn, "Member " + GetAttributeCaption(SbmDbDfn.ColumnIdx.Association_Location, "location"), 100, SbmDbDfn.ColumnIdx.Association_Location, ColumnAlignment.Default, DataValue.DataType.String, aliasAssociation_Member_Association, prefixAssociation_Member_Association);
|
|
break;
|
|
case SbmAssociation.Column.Member_PhoneMain:
|
|
SetAssociationColDfn(columnDfn, "Member phone", 85, SbmDbDfn.ColumnIdx.Association_PhoneMain, ColumnAlignment.Default, DataValue.DataType.String, aliasAssociation_Member_Association, prefixAssociation_Member_Association);
|
|
break;
|
|
case SbmAssociation.Column.Member_Email:
|
|
SetAssociationColDfn(columnDfn, "Member email", 170, SbmDbDfn.ColumnIdx.Association_Email, ColumnAlignment.Default, DataValue.DataType.String, aliasAssociation_Member_Association, prefixAssociation_Member_Association);
|
|
break;
|
|
//-----------------------------------------------------------
|
|
// Member target details.
|
|
case SbmAssociation.Column.Member_Target_Name:
|
|
SetAssociationColDfn(columnDfn, "Member name", 120, SbmDbDfn.ColumnIdx.Affiliate_Name, ColumnAlignment.Default, DataValue.DataType.String, aliasAssociation_Member_Affiliate, prefixAssociation_Member_Affiliate);
|
|
break;
|
|
case SbmAssociation.Column.Member_Target_Nature:
|
|
SetAssociationColDfn(columnDfn, "Member nature", 120, SbmDbDfn.ColumnIdx.Affiliate_Nature, ColumnAlignment.Default, DataValue.DataType.String, aliasAssociation_Member_Affiliate, prefixAssociation_Member_Affiliate);
|
|
break;
|
|
case SbmAssociation.Column.Member_Target_PhoneMain:
|
|
SetAssociationColDfn(columnDfn, "Member phone", 85, SbmDbDfn.ColumnIdx.Affiliate_PhoneMain, ColumnAlignment.Default, DataValue.DataType.String, aliasAssociation_Member_Affiliate, prefixAssociation_Member_Affiliate);
|
|
break;
|
|
case SbmAssociation.Column.Member_Target_PhoneAlt:
|
|
SetAssociationColDfn(columnDfn, "Member alt phone", 85, SbmDbDfn.ColumnIdx.Affiliate_PhoneAlt, ColumnAlignment.Default, DataValue.DataType.String, aliasAssociation_Member_Affiliate, prefixAssociation_Member_Affiliate);
|
|
break;
|
|
case SbmAssociation.Column.Member_Target_PhoneFax:
|
|
SetAssociationColDfn(columnDfn, "Member fax", 85, SbmDbDfn.ColumnIdx.Affiliate_PhoneFax, ColumnAlignment.Default, DataValue.DataType.String, aliasAssociation_Member_Affiliate, prefixAssociation_Member_Affiliate);
|
|
break;
|
|
case SbmAssociation.Column.Member_Target_PhoneMobile:
|
|
SetAssociationColDfn(columnDfn, "Member mobile", 85, SbmDbDfn.ColumnIdx.Affiliate_PhoneMobile, ColumnAlignment.Default, DataValue.DataType.String, aliasAssociation_Member_Affiliate, prefixAssociation_Member_Affiliate);
|
|
break;
|
|
case SbmAssociation.Column.Member_Target_Email:
|
|
SetAssociationColDfn(columnDfn, "Member email", 170, SbmDbDfn.ColumnIdx.Affiliate_Email, ColumnAlignment.Default, DataValue.DataType.String, aliasAssociation_Member_Affiliate, prefixAssociation_Member_Affiliate);
|
|
break;
|
|
case SbmAssociation.Column.Member_Target_Website:
|
|
SetAssociationColDfn(columnDfn, "Member website", 120, SbmDbDfn.ColumnIdx.Affiliate_Website, ColumnAlignment.Default, DataValue.DataType.String, aliasAssociation_Member_Affiliate, prefixAssociation_Member_Affiliate);
|
|
break;
|
|
case SbmAssociation.Column.Member_Target_Notes:
|
|
SetAssociationColDfn(columnDfn, "Member notes", 200, SbmDbDfn.ColumnIdx.Affiliate_Notes, ColumnAlignment.Default, DataValue.DataType.String, aliasAssociation_Member_Affiliate, prefixAssociation_Member_Affiliate);
|
|
break;
|
|
//---------------------------------------------------------------
|
|
// Member address details.
|
|
case SbmAssociation.Column.Member_Target_Address_Summary:
|
|
SetAssociationColDfn(columnDfn, "Address", 220, SbmDbDfn.ColumnIdx.Unknown);
|
|
columnDfn.SortDataName = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Address_Postcode, aliasAssociation_Member_Address);
|
|
break;
|
|
case SbmAssociation.Column.Member_Target_Address_Line1:
|
|
SetAssociationColDfn(columnDfn, "Member Address 1", 120, SbmDbDfn.ColumnIdx.Address_Line1, ColumnAlignment.Default, DataValue.DataType.String, aliasAssociation_Member_Address, prefixAssociation_Member_Address);
|
|
break;
|
|
case SbmAssociation.Column.Member_Target_Address_Line2:
|
|
SetAssociationColDfn(columnDfn, "Member Address 2", 120, SbmDbDfn.ColumnIdx.Address_Line2, ColumnAlignment.Default, DataValue.DataType.String, aliasAssociation_Member_Address, prefixAssociation_Member_Address);
|
|
break;
|
|
case SbmAssociation.Column.Member_Target_Address_City:
|
|
SetAssociationColDfn(columnDfn, "Member City", 80, SbmDbDfn.ColumnIdx.Address_City, ColumnAlignment.Default, DataValue.DataType.String, aliasAssociation_Member_Address, prefixAssociation_Member_Address);
|
|
break;
|
|
case SbmAssociation.Column.Member_Target_Address_Province:
|
|
SetAssociationColDfn(columnDfn, "Member Province", 80, SbmDbDfn.ColumnIdx.Address_Province, ColumnAlignment.Default, DataValue.DataType.String, aliasAssociation_Member_Address, prefixAssociation_Member_Address);
|
|
break;
|
|
case SbmAssociation.Column.Member_Target_Address_Postcode:
|
|
SetAssociationColDfn(columnDfn, "Member Postcode", 65, SbmDbDfn.ColumnIdx.Address_Postcode, ColumnAlignment.Center, DataValue.DataType.String, aliasAssociation_Member_Address, prefixAssociation_Member_Address);
|
|
break;
|
|
case SbmAssociation.Column.Member_Target_Address_Country:
|
|
SetAssociationColDfn(columnDfn, "Member Country", 80, SbmDbDfn.ColumnIdx.Address_Country, ColumnAlignment.Default, DataValue.DataType.String, aliasAssociation_Member_Address, prefixAssociation_Member_Address);
|
|
break;
|
|
//---------------------------------------------------------------
|
|
// Transaction details.
|
|
case SbmAssociation.Column.Trans_LastSaleRaised:
|
|
SetAssociationColDfn(columnDfn, "Last SO", 80, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Center, DataValue.DataType.Date);
|
|
columnDfn.DataName = colAssociation_LastSaleRaised;
|
|
break;
|
|
case SbmAssociation.Column.Trans_SalesValue_Open: // Net open sales order value.
|
|
if (UserCanViewCommoditySalesFinancials())
|
|
{
|
|
SetAssociationColDfn(columnDfn, "Open sales", 80, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.DataName = colAssociation_SalesValueOpen;
|
|
}
|
|
break;
|
|
case SbmAssociation.Column.Trans_SalesValue_Cytd: // Net sales order value closed this calendar year.
|
|
if (UserCanViewCommoditySalesFinancials())
|
|
{
|
|
SetAssociationColDfn(columnDfn, "Sales CYTD", 80, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.DataName = colAssociation_SalesValueCytd;
|
|
}
|
|
break;
|
|
case SbmAssociation.Column.Trans_SalesValue_Lcy: // Net sales order value closed last calendar year.
|
|
if (UserCanViewCommoditySalesFinancials())
|
|
{
|
|
SetAssociationColDfn(columnDfn, "Sales LCY", 80, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.Double);
|
|
columnDfn.DataName = colAssociation_SalesValueLcy;
|
|
}
|
|
break;
|
|
//---------------------------------------------------------------
|
|
case SbmAssociation.Column.CommodityCount: // Number of commodities defined for the association.
|
|
SetAssociationColDfn(columnDfn, "Commodities", 85, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.Long);
|
|
columnDfn.DataName = colAssociation_CommodityCount;
|
|
columnDfn.SortMode = ColumnDfn.ColumnSortMode.Off;
|
|
break;
|
|
//-----------------------------------------------------------
|
|
// Common properties.
|
|
case SbmAssociation.Column.Notes:
|
|
SetAssociationColDfn(columnDfn, "Notes", 200, SbmDbDfn.ColumnIdx.Association_Notes);
|
|
break;
|
|
case SbmAssociation.Column.Status:
|
|
SetAssociationColDfn(columnDfn, "Status", 50, SbmDbDfn.ColumnIdx.Association_Status, ColumnAlignment.Center);
|
|
break;
|
|
case SbmAssociation.Column.Status_Desc:
|
|
SetAssociationColDfn(columnDfn, "Status", 50, SbmDbDfn.ColumnIdx.Association_Status, ColumnAlignment.Center);
|
|
break;
|
|
case SbmAssociation.Column.Status_Ind:
|
|
SetAssociationColDfn(columnDfn, "Status", 50, SbmDbDfn.ColumnIdx.Association_Status, ColumnAlignment.Center, DataValue.DataType.TriState);
|
|
columnDfn.TriStateFormat = ColumnTriStateFormat.Lights;
|
|
break;
|
|
case SbmAssociation.Column.CreateOn_Date:
|
|
SetAssociationColDfn(columnDfn, "Created", 65, SbmDbDfn.ColumnIdx.Association_CreateOn, ColumnAlignment.Center, DataValue.DataType.Date);
|
|
columnDfn.ReadOnly = true;
|
|
break;
|
|
case SbmAssociation.Column.UpdateOn_Date:
|
|
SetAssociationColDfn(columnDfn, "Updated", 65, SbmDbDfn.ColumnIdx.Association_UpdateOn, ColumnAlignment.Center, DataValue.DataType.Date);
|
|
columnDfn.ReadOnly = true;
|
|
break;
|
|
//-----------------------------------------------------------
|
|
}
|
|
if (!String.IsNullOrEmpty(caption))
|
|
columnDfn.Caption = caption;
|
|
if (width > 0)
|
|
columnDfn.Width = width;
|
|
return columnDfn;
|
|
}
|
|
|
|
//-------------------------------------------------------------------
|
|
// Q u e r y F i l t e r
|
|
//-------------------------------------------------------------------
|
|
// Association query filter.
|
|
public String GetFlagValue(ushort flag, bool match, String aliasTable)
|
|
{
|
|
DbQuery qry = new DbQuery(Database.DbmsType);
|
|
return DbQuery.BuildBitMappedFilter(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_Flags, aliasTable), flag, match);
|
|
}
|
|
public String GetFlagFilter(ushort flag, bool match, String aliasTable)
|
|
{
|
|
DbQuery qry = new DbQuery(Database.DbmsType);
|
|
return DbQuery.BuildBitMappedFilter(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_Flags, aliasTable), flag, match);
|
|
}
|
|
// Has each filter prm-col been specified.
|
|
public override List<string> GetAssociationQueryFilter(SbmAssociation.Params prm)
|
|
{
|
|
List<String> filter = new List<String>();
|
|
String colAssociation_Id = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_Id, aliasAssociation);
|
|
String colAssociation_AffIdOwner = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_AffIdOwner, aliasAssociation);
|
|
String colAssociation_AffIdTarget = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_AffIdTarget, aliasAssociation);
|
|
|
|
//---------------------------------------------------------------
|
|
// Demo application restrictions - when user logged in.
|
|
if (SysId.IsValid(UserContext.UserAffiliateId) && SessionConsole.HideOtherUserContacts())
|
|
{
|
|
// Exclude Individual contacts with User Id other than the logged in user.
|
|
// NB Keep logic in line with corresponding Affiliate method (SbmAccountMgr_Dbas.GetAffiliateQueryFilter).
|
|
filter.Add($"{colAssociation_AffIdTarget} Not In (Select Id From {SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Affiliate)} Where Id!={UserContext.UserAffiliateId} And Type={(int)Sbm.AffiliateType.Individual} And UserId>0)");
|
|
}
|
|
|
|
//---------------------------------------------------------------
|
|
// Association Id.
|
|
if (prm.IdsIncluded.HasValidIds())
|
|
filter.Add($"{colAssociation_Id} IN ({prm.IdsIncluded.Concat(",")})");
|
|
if (prm.IdsExcluded.HasValidIds())
|
|
filter.Add($"{colAssociation_Id} NOT IN ({prm.IdsExcluded.Concat(",")})");
|
|
|
|
// Association Type.
|
|
String colAssociation_Type = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_Type, aliasAssociation);
|
|
if (prm.AssociationType > 0)
|
|
filter.Add($"{colAssociation_Type}={(int)prm.AssociationType}");
|
|
else if (prm.AssociationType == Sbm.AssociationType.NotInternal)
|
|
filter.Add($"{colAssociation_Type}!={(int)Sbm.AssociationType.Internal}");
|
|
|
|
//---------------------------------------------------------------
|
|
// Owner affiliate.
|
|
if (SysId.IsValid(prm.AffiliateIdOwner))
|
|
filter.Add($"{colAssociation_AffIdOwner}={prm.AffiliateIdOwner}");
|
|
|
|
// Target Affiliate.
|
|
if (SysId.IsValid(prm.AffiliateIdTarget))
|
|
filter.Add($"{colAssociation_AffIdTarget}={prm.AffiliateIdTarget}");
|
|
|
|
//---------------------------------------------------------------
|
|
// Contact Group.
|
|
if (SysId.IsValid(prm.AffiliateIdContactGroup))
|
|
{
|
|
// Association must also be a member of this contact group.
|
|
String aliasAssocContactGroup = "aAssConGrp";
|
|
DbQuery queryAssocContactGroup = new DbQuery(Database.DbmsType);
|
|
queryAssocContactGroup.Tables.Add(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Association), aliasAssocContactGroup);
|
|
|
|
String colAssocConGrp_AffIdTarget = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_AffIdTarget, aliasAssocContactGroup);
|
|
queryAssocContactGroup.Columns.Add(colAssocConGrp_AffIdTarget);
|
|
|
|
String colAssocConGrp_AffIdOwner = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_AffIdOwner, aliasAssocContactGroup);
|
|
queryAssocContactGroup.Filters.Add(colAssocConGrp_AffIdOwner + "=" + prm.AffiliateIdContactGroup.ToString());
|
|
|
|
String colAssocConGrp_AssocType = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_Type, aliasAssocContactGroup);
|
|
queryAssocContactGroup.Filters.Add(colAssocConGrp_AssocType + "=" + Sbm.AssociationType.Member.ToString());
|
|
filter.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_AffIdTarget) + "IN (" + queryAssocContactGroup.BuildQuery() + ")");
|
|
}
|
|
|
|
//---------------------------------------------------------------
|
|
// Code.
|
|
String colAssociation_Code = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_Code, aliasAssociation);
|
|
if (!prm.Code.IsEmpty())
|
|
filter.Add(colAssociation_Code + "='" + DbQuery.FormatForCondition(prm.Code) + "'");
|
|
else if (!prm.CodePartial.IsEmpty())
|
|
filter.Add(DbQuery.FormatFn_Left(colAssociation_Code, prm.CodePartial.Length) + " Like '%" + DbQuery.FormatForLike(prm.CodePartial) + "%'");
|
|
|
|
// Group.
|
|
String colAssociation_Group = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_Group, aliasAssociation);
|
|
if (ColumnExists(SbmDbDfn.ColumnIdx.Association_Group))
|
|
{
|
|
if (!prm.GroupFull.IsEmpty())
|
|
filter.Add(colAssociation_Group + "='" + DbQuery.FormatForCondition(prm.GroupFull) + "'");
|
|
else if (!prm.GroupPartial.IsEmpty())
|
|
filter.Add(DbQuery.FormatFn_Left(colAssociation_Group, prm.GroupPartial.Length) + " Like '%" + DbQuery.FormatForLike(prm.GroupPartial) + "%'");
|
|
}
|
|
|
|
//---------------------------------------------------------------
|
|
// Target Name.
|
|
if (!prm.NameTargetFull.IsEmpty() || !prm.NameTargetPartial.IsEmpty())
|
|
{
|
|
// Target affiliate alias.
|
|
String aliasAffiliateTarget = StringUtil.OnBlank(prm.Alias_Affiliate_Target, aliasAssociation_Affiliate_Target);
|
|
|
|
// Target affiliate columns.
|
|
String colAffiliate_Id = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Affiliate_Id, aliasAffiliateTarget);
|
|
String colAffiliate_Name = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Affiliate_Name, aliasAffiliateTarget);
|
|
String colAffiliate_FirstName = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Affiliate_FirstName, aliasAffiliateTarget);
|
|
String colAffiliate_LastName = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Affiliate_LastName, aliasAffiliateTarget);
|
|
|
|
// Filters.
|
|
List<String> affiliateFilter = new List<string>();
|
|
String nameTargetFull = DbQuery.FormatForCondition(StringUtil.EmptyOnNull(prm.NameTargetFull));
|
|
String nameTargetPartial = DbQuery.FormatForLike(StringUtil.EmptyOnNull(prm.NameTargetPartial));
|
|
if (!nameTargetFull.IsEmpty())
|
|
affiliateFilter.Add(colAffiliate_Name + "='" + nameTargetFull + "' OR " + colAffiliate_LastName + "='" + nameTargetFull + "'");
|
|
if (!nameTargetPartial.IsEmpty())
|
|
affiliateFilter.Add(
|
|
colAffiliate_Name + " Like '%" + nameTargetPartial + "%' OR " +
|
|
colAffiliate_FirstName + " Like '%" + nameTargetPartial + "%' OR " +
|
|
colAffiliate_LastName + " Like '%" + nameTargetPartial + "%'");
|
|
|
|
if (prm.Alias_Affiliate_Target.IsEmpty())
|
|
{
|
|
// Target affiliate alias not supplied - table is not joined in main query.
|
|
// Sub query on target affiliate.
|
|
DbQuery queryAffTarget = new DbQuery(Database.DbmsType);
|
|
queryAffTarget.Tables.Add(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Affiliate), aliasAffiliateTarget);
|
|
queryAffTarget.Columns.Add(colAffiliate_Id);
|
|
queryAffTarget.Filters.Add(colAffiliate_Id + "=" + colAssociation_AffIdTarget);
|
|
queryAffTarget.Filters.AddRange(affiliateFilter);
|
|
filter.Add("EXISTS (" + queryAffTarget.BuildQuery() + ")");
|
|
}
|
|
else
|
|
{
|
|
// Target affiliate alias supplied - table is joined in main query.
|
|
// Simply filter directly on joined table.
|
|
filter.AddRange(affiliateFilter);
|
|
}
|
|
}
|
|
|
|
//---------------------------------------------------------------
|
|
// Target Address & Postcode.
|
|
if (!StringUtil.IsEmpty(prm.AddressPartial) || !StringUtil.IsEmpty(prm.PostcodePartial))
|
|
{
|
|
// Target Address alias.
|
|
String aliasAddTarget = StringUtil.OnBlank(prm.Alias_Address_Target, "aAddTarget");
|
|
|
|
// Target address columns.
|
|
String colAddress_Id = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Address_Id, aliasAddTarget);
|
|
String colAddress_ItemType = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Address_ItemType, aliasAddTarget);
|
|
String colAddress_ItemId = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Address_ItemId, aliasAddTarget);
|
|
|
|
// Filters.
|
|
List<String> addressFilter = new List<string>();
|
|
String addressPartial = DbQuery.FormatForLike(StringUtil.EmptyOnNull(prm.AddressPartial));
|
|
if (!StringUtil.IsEmpty(addressPartial))
|
|
{
|
|
List<SbmDbDfn.ColumnIdx> addressCols = new List<SbmDbDfn.ColumnIdx>()
|
|
{
|
|
SbmDbDfn.ColumnIdx.Address_Name,
|
|
SbmDbDfn.ColumnIdx.Address_Line1,
|
|
SbmDbDfn.ColumnIdx.Address_Line2,
|
|
SbmDbDfn.ColumnIdx.Address_Line3,
|
|
SbmDbDfn.ColumnIdx.Address_City,
|
|
SbmDbDfn.ColumnIdx.Address_Province,
|
|
SbmDbDfn.ColumnIdx.Address_Contact,
|
|
};
|
|
String partialAddressFilter = addressCols.Select(item => SbmDbDfn.GetColumnNameQual(item, aliasAddTarget) + " LIKE '%" + addressPartial + "%'").Concat(" OR ", "(", ")");
|
|
addressFilter.Add(partialAddressFilter);
|
|
}
|
|
// Postcode filter.
|
|
String postcodeCond = DbQuery.FormatForCondition(StringUtil.EmptyOnNull(prm.PostcodePartial));
|
|
String colAddress_PostcodeFmt = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Address_PostcodeFmt, aliasAddTarget);
|
|
if (!StringUtil.IsEmpty(postcodeCond))
|
|
addressFilter.Add(DbQuery.FormatFn_Left(colAddress_PostcodeFmt, prm.PostcodePartial.Length) + "='" + postcodeCond + "'");
|
|
|
|
if (prm.Alias_Address_Target.IsEmpty())
|
|
{
|
|
// Target address alias not supplied - table is not joined in main query.
|
|
// Sub query on target address.
|
|
DbQuery queryAddTarget = new DbQuery(Database.DbmsType);
|
|
queryAddTarget.Tables.Add(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Address), aliasAddTarget);
|
|
queryAddTarget.Columns.Add(colAddress_Id);
|
|
queryAddTarget.Filters.Add(colAddress_ItemType + "=" + ((int)Sbm.ItemType.Affiliate).ToString());
|
|
queryAddTarget.Filters.Add(colAddress_ItemId + "=" + colAssociation_AffIdTarget);
|
|
queryAddTarget.Filters.AddRange(addressFilter);
|
|
filter.Add("EXISTS (" + queryAddTarget.BuildQuery() + ")");
|
|
}
|
|
else
|
|
{
|
|
// Target address alias supplied - table is joined in main query.
|
|
// Simply filter directly on joined table.
|
|
filter.AddRange(addressFilter);
|
|
}
|
|
}
|
|
|
|
//---------------------------------------------------------------
|
|
// Generic search.
|
|
if (!StringUtil.IsEmpty(prm.Search))
|
|
{
|
|
List<String> searchFilter = new List<string>();
|
|
foreach (String rawSearchValue in prm.Search.Split(new char[] { ' ', ',', ';' }))
|
|
{
|
|
String searchValue = DbQuery.FormatForLike(StringUtil.TrimAll(rawSearchValue));
|
|
if (StringUtil.IsEmpty(searchValue)) continue;
|
|
|
|
// Association filters.
|
|
List<String> searchValueFilter = new List<string>();
|
|
searchValueFilter.Add(colAssociation_Code + " LIKE '%" + searchValue + "%'");
|
|
if (ColumnExists(SbmDbDfn.ColumnIdx.Association_Group))
|
|
searchValueFilter.Add(colAssociation_Group + " LIKE '%" + searchValue + "%'");
|
|
|
|
// Target affiliate.
|
|
String aliasAffiliateTarget = StringUtil.OnBlank(prm.Alias_Affiliate_Target, aliasAssociation_Affiliate_Target);
|
|
String colAffiliate_Id = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Affiliate_Id, aliasAffiliateTarget);
|
|
String colAffiliate_Name = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Affiliate_Name, aliasAffiliateTarget);
|
|
List<String> affiliateFilter = new List<string>();
|
|
affiliateFilter.Add(colAffiliate_Name + " Like '%" + searchValue + "%'");
|
|
if (prm.Alias_Affiliate_Target.IsEmpty())
|
|
{
|
|
// Target affiliate alias not supplied - table is not joined in main query.
|
|
// Sub query on target affiliate.
|
|
DbQuery queryAffTarget = new DbQuery(Database.DbmsType);
|
|
queryAffTarget.Tables.Add(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Affiliate), aliasAffiliateTarget);
|
|
queryAffTarget.Columns.Add(colAffiliate_Id);
|
|
queryAffTarget.Filters.Add(colAffiliate_Id + "=" + colAssociation_AffIdTarget);
|
|
queryAffTarget.Filters.AddRange(affiliateFilter);
|
|
filter.Add("EXISTS (" + queryAffTarget.BuildQuery() + ")");
|
|
}
|
|
else
|
|
{
|
|
// Target affiliate alias supplied - table is joined in main query.
|
|
// Simply filter directly on joined table.
|
|
searchValueFilter.AddRange(affiliateFilter);
|
|
}
|
|
|
|
// Target address.
|
|
String aliasAddTarget = StringUtil.OnBlank(prm.Alias_Address_Target, "aAddTarget");
|
|
String colAddress_Id = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Address_Id, aliasAddTarget);
|
|
String colAddress_ItemType = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Address_ItemType, aliasAddTarget);
|
|
String colAddress_ItemId = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Address_ItemId, aliasAddTarget);
|
|
List<String> addressFilter = new List<string>();
|
|
List<SbmDbDfn.ColumnIdx> addressCols = new List<SbmDbDfn.ColumnIdx>()
|
|
{
|
|
SbmDbDfn.ColumnIdx.Address_Name,
|
|
SbmDbDfn.ColumnIdx.Address_Line1,
|
|
SbmDbDfn.ColumnIdx.Address_Line2,
|
|
SbmDbDfn.ColumnIdx.Address_Line3,
|
|
SbmDbDfn.ColumnIdx.Address_City,
|
|
SbmDbDfn.ColumnIdx.Address_Province,
|
|
SbmDbDfn.ColumnIdx.Address_Postcode,
|
|
SbmDbDfn.ColumnIdx.Address_PostcodeFmt,
|
|
SbmDbDfn.ColumnIdx.Address_Contact,
|
|
};
|
|
String partialAddressFilter = addressCols.Select(item => SbmDbDfn.GetColumnNameQual(item, aliasAddTarget) + " LIKE '%" + searchValue + "%'").Concat(" OR ", "(", ")");
|
|
addressFilter.Add(partialAddressFilter);
|
|
if (prm.Alias_Address_Target.IsEmpty())
|
|
{
|
|
// Target address alias not supplied - table is not joined in main query.
|
|
// Sub query on target address.
|
|
DbQuery queryAddTarget = new DbQuery(Database.DbmsType);
|
|
queryAddTarget.Tables.Add(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Address), aliasAddTarget);
|
|
queryAddTarget.Columns.Add(colAddress_Id);
|
|
queryAddTarget.Filters.Add(colAddress_ItemType + "=" + ((int)Sbm.ItemType.Affiliate).ToString());
|
|
queryAddTarget.Filters.Add(colAddress_ItemId + "=" + colAssociation_AffIdTarget);
|
|
queryAddTarget.Filters.AddRange(addressFilter);
|
|
filter.Add("EXISTS (" + queryAddTarget.BuildQuery() + ")");
|
|
}
|
|
else
|
|
{
|
|
// Target address alias supplied - table is joined in main query.
|
|
// Simply filter directly on joined table.
|
|
searchValueFilter.AddRange(addressFilter);
|
|
}
|
|
|
|
searchFilter.Add(searchValueFilter.Concat(" OR ", "(", ")"));
|
|
}
|
|
filter.AddRange(searchFilter);
|
|
}
|
|
|
|
//---------------------------------------------------------------
|
|
// Default Nominal Code.
|
|
if (ColumnExists(SbmDbDfn.ColumnIdx.Association_DefaultNominalCode))
|
|
{
|
|
String defaultNominalCodeFull = DbQuery.FormatForCondition(StringUtil.EmptyOnNull(prm.DefaultNominalCodeFull));
|
|
String defaultNominalCodePartial = DbQuery.FormatForCondition(StringUtil.EmptyOnNull(prm.DefaultNominalCodePartial));
|
|
String colAssociation_DefaultNominalCode = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_DefaultNominalCode, aliasAssociation);
|
|
if (!defaultNominalCodeFull.IsEmpty())
|
|
filter.Add(colAssociation_DefaultNominalCode + "='" + DbQuery.FormatForCondition(defaultNominalCodeFull) + "'");
|
|
else if (!defaultNominalCodePartial.IsEmpty())
|
|
filter.Add(DbQuery.FormatFn_Left(colAssociation_DefaultNominalCode, prm.DefaultNominalCodePartial.Length) + " Like '%" + DbQuery.FormatForLike(defaultNominalCodePartial) + "%'");
|
|
}
|
|
|
|
//---------------------------------------------------------------
|
|
// Price Set.
|
|
String colAssociation_PriceSetId = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_PriceSetId, aliasAssociation);
|
|
if (SysId.IsValid(prm.PriceSetId))
|
|
filter.Add(colAssociation_PriceSetId + "=" + prm.PriceSetId.ToString());
|
|
|
|
//---------------------------------------------------------------
|
|
// Codings.
|
|
|
|
// AccountManagerCodes.
|
|
String accountManagerCodes = DbQuery.FormatForIn(prm.AccountManagerCodes, true, true);
|
|
if (!accountManagerCodes.IsEmpty())
|
|
{
|
|
List<String> filterAccountManager = new List<String>();
|
|
String colAssociation_AccountManagerCode = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_AccountManagerCode, aliasAssociation);
|
|
filterAccountManager.Add(colAssociation_AccountManagerCode + " IN " + accountManagerCodes);
|
|
// Also include associations where the target has addresses associated with this Account Manager:
|
|
String aliasAccMgr = "aAccMgr";
|
|
DbQuery qryAdd = new DbQuery(Database.DbmsType);
|
|
qryAdd.Tables.Add(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Address), aliasAccMgr);
|
|
qryAdd.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Address_Id, aliasAccMgr));
|
|
qryAdd.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Address_ItemType, aliasAccMgr) + "=" + ((int)Sbm.ItemType.Affiliate).ToString());
|
|
qryAdd.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Address_ItemId, aliasAccMgr) + "=" + colAssociation_AffIdTarget);
|
|
qryAdd.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Address_AccountManagerCode, aliasAccMgr) + " IN " + accountManagerCodes);
|
|
filterAccountManager.Add("EXISTS (" + qryAdd.BuildQuery() + ")");
|
|
filter.Add(filterAccountManager.Concat(" OR ", "(", ")"));
|
|
}
|
|
// AccountHandlerCodes.
|
|
String accountHandlerCodes = DbQuery.FormatForIn(prm.AccountHandlerCodes, true, true);
|
|
if (!accountHandlerCodes.IsEmpty())
|
|
{
|
|
List<String> filterAccountHandler = new List<String>();
|
|
String colAssociation_AccountHandlerCode = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_AccountHandlerCode, aliasAssociation);
|
|
filterAccountHandler.Add(colAssociation_AccountHandlerCode + " IN " + accountHandlerCodes);
|
|
// Also include associations where the target has addresses associated with this Account Handler:
|
|
String aliasAccHdr = "aliasAccHdr";
|
|
DbQuery qryAdd = new DbQuery(Database.DbmsType);
|
|
qryAdd.Tables.Add(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Address), aliasAccHdr);
|
|
qryAdd.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Address_Id, aliasAccHdr));
|
|
qryAdd.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Address_ItemType, aliasAccHdr) + "=" + ((int)Sbm.ItemType.Affiliate).ToString());
|
|
qryAdd.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Address_ItemId, aliasAccHdr) + "=" + colAssociation_AffIdTarget);
|
|
qryAdd.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Address_AccountHandlerCode, aliasAccHdr) + " IN " + accountHandlerCodes);
|
|
filterAccountHandler.Add("EXISTS (" + qryAdd.BuildQuery() + ")");
|
|
filter.Add(filterAccountHandler.Concat(" OR ", "(", ")"));
|
|
}
|
|
// AccountTypeCodes.
|
|
String accountTypeCodes = DbQuery.FormatForIn(prm.AccountTypeCodes, true, true);
|
|
if (!accountTypeCodes.IsEmpty())
|
|
{
|
|
String colAssociation_AccountTypeCode = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_AccountTypeCode, aliasAssociation);
|
|
filter.Add(colAssociation_AccountTypeCode + " IN " + accountTypeCodes);
|
|
}
|
|
// AccountRatingCodes.
|
|
String accountRatingCodes = DbQuery.FormatForIn(prm.AccountRatingCodes, true, true);
|
|
if (!accountRatingCodes.IsEmpty())
|
|
{
|
|
String colAssociation_AccountRatingCode = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_AccountRatingCode, aliasAssociation);
|
|
filter.Add(colAssociation_AccountRatingCode + " IN " + accountRatingCodes);
|
|
}
|
|
// ContactAreaCodes.
|
|
String contactAreaCodes = DbQuery.FormatForIn(prm.ContactAreaCodes, true, true);
|
|
if (!contactAreaCodes.IsEmpty())
|
|
{
|
|
List<String> filterContactArea = new List<String>();
|
|
String colAssociation_ContactAreaCode = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_ContactAreaCode, aliasAssociation);
|
|
filterContactArea.Add(colAssociation_ContactAreaCode + " IN " + contactAreaCodes);
|
|
// Also include associations where the target has addresses associated with this Contact Area:
|
|
String aliasCntArea = "aCntArea";
|
|
DbQuery qryAdd = new DbQuery(Database.DbmsType);
|
|
qryAdd.Tables.Add(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Address), aliasCntArea);
|
|
qryAdd.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Address_Id, aliasCntArea));
|
|
qryAdd.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Address_ItemType, aliasCntArea) + "=" + ((int)Sbm.ItemType.Affiliate).ToString());
|
|
qryAdd.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Address_ItemId, aliasCntArea) + "=" + colAssociation_AffIdTarget);
|
|
qryAdd.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Address_ContactAreaCode, aliasCntArea) + " IN " + contactAreaCodes);
|
|
filterContactArea.Add("EXISTS (" + qryAdd.BuildQuery() + ")");
|
|
filter.Add(filterContactArea.Concat(" OR ", "(", ")"));
|
|
}
|
|
// ContactHandlerCodes.
|
|
String contactHandlerCodes = DbQuery.FormatForIn(prm.ContactHandlerCodes, true, true);
|
|
if (!contactHandlerCodes.IsEmpty())
|
|
{
|
|
List<String> filterContactHandler = new List<String>();
|
|
String colAssociation_ContactHandlerCode = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_ContactHandlerCode, aliasAssociation);
|
|
filterContactHandler.Add(colAssociation_ContactHandlerCode + " IN " + contactHandlerCodes);
|
|
// Also include associations where the target has addresses associated with this Contact Handler:
|
|
String aliasCntHdr = "aCntHdr";
|
|
DbQuery qryAdd = new DbQuery(Database.DbmsType);
|
|
qryAdd.Tables.Add(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Address), aliasCntHdr);
|
|
qryAdd.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Address_Id, aliasCntHdr));
|
|
qryAdd.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Address_ItemType, aliasCntHdr) + "=" + ((int)Sbm.ItemType.Affiliate).ToString());
|
|
qryAdd.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Address_ItemId, aliasCntHdr) + "=" + colAssociation_AffIdTarget);
|
|
qryAdd.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Address_ContactHandlerCode, aliasCntHdr) + " IN " + contactHandlerCodes);
|
|
filterContactHandler.Add("EXISTS (" + qryAdd.BuildQuery() + ")");
|
|
filter.Add(filterContactHandler.Concat(" OR ", "(", ")"));
|
|
}
|
|
// ContactMethodCodes.
|
|
String contactMethodCodes = DbQuery.FormatForIn(prm.ContactMethodCodes, true, true);
|
|
if (!contactMethodCodes.IsEmpty())
|
|
{
|
|
String colAssociation_ContactMethodCode = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_ContactMethodCode, aliasAssociation);
|
|
filter.Add(colAssociation_ContactMethodCode + " IN " + contactMethodCodes);
|
|
}
|
|
// ContactCallCycleCodes.
|
|
String contactCallCycleCodes = DbQuery.FormatForIn(prm.ContactCallCycleCodes, true, true);
|
|
if (!contactCallCycleCodes.IsEmpty())
|
|
{
|
|
String colAssociation_ContactCallCycleCode = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_ContactCallCycleCode, aliasAssociation);
|
|
filter.Add(colAssociation_ContactCallCycleCode + " IN " + contactCallCycleCodes);
|
|
}
|
|
// OrderLeadTimeCodes.
|
|
String orderLeadTimeCodes = DbQuery.FormatForIn(prm.OrderLeadTimeCodes, true, true);
|
|
if (!orderLeadTimeCodes.IsEmpty())
|
|
{
|
|
String colAssociation_OrderLeadTimeCode = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_OrderLeadTimeCode, aliasAssociation);
|
|
filter.Add(colAssociation_OrderLeadTimeCode + " IN " + orderLeadTimeCodes);
|
|
}
|
|
// DeliveryTypeCodes.
|
|
String deliveryTypeCodes = DbQuery.FormatForIn(prm.DeliveryTypeCodes, true, true);
|
|
if (!deliveryTypeCodes.IsEmpty())
|
|
{
|
|
List<String> filterDeliveryTypeCodes = new List<String>();
|
|
String colAssociation_DeliveryTypeCode = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_DeliveryTypeCode, aliasAssociation);
|
|
filterDeliveryTypeCodes.Add(colAssociation_DeliveryTypeCode + " IN " + deliveryTypeCodes);
|
|
// Also include associations where the target has addresses associated with this Delivery Type:
|
|
String aliasDelTypCd = "aDelTypCd";
|
|
DbQuery qryAdd = new DbQuery(Database.DbmsType);
|
|
qryAdd.Tables.Add(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Address), aliasDelTypCd);
|
|
qryAdd.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Address_Id, aliasDelTypCd));
|
|
qryAdd.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Address_ItemType, aliasDelTypCd) + "=" + ((int)Sbm.ItemType.Affiliate).ToString());
|
|
qryAdd.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Address_ItemId, aliasDelTypCd) + "=" + colAssociation_AffIdTarget);
|
|
qryAdd.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Address_DeliveryTypeCode, aliasDelTypCd) + " IN " + deliveryTypeCodes);
|
|
filterDeliveryTypeCodes.Add("EXISTS (" + qryAdd.BuildQuery() + ")");
|
|
filter.Add(filterDeliveryTypeCodes.Concat(" OR ", "(", ")"));
|
|
}
|
|
// DeliveryMethodCodes.
|
|
String deliveryMethodCodes = DbQuery.FormatForIn(prm.DeliveryMethodCodes, true, true);
|
|
if (!deliveryMethodCodes.IsEmpty())
|
|
{
|
|
List<String> filterDeliveryMethodCodes = new List<String>();
|
|
String colAssociation_DeliveryMethodCode = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_DeliveryMethodCode);
|
|
filterDeliveryMethodCodes.Add(colAssociation_DeliveryMethodCode + " IN " + deliveryMethodCodes);
|
|
// Also include associations where the target has addresses associated with this Delivery Method:
|
|
String aliasDelMthdCd = "aDelMthdCd";
|
|
DbQuery qryAdd = new DbQuery(Database.DbmsType);
|
|
qryAdd.Tables.Add(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Address), aliasDelMthdCd);
|
|
qryAdd.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Address_Id, aliasDelMthdCd));
|
|
qryAdd.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Address_ItemType, aliasDelMthdCd) + "=" + ((int)Sbm.ItemType.Affiliate).ToString());
|
|
qryAdd.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Address_ItemId, aliasDelMthdCd) + "=" + colAssociation_AffIdTarget);
|
|
qryAdd.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Address_DeliveryMethodCode, aliasDelMthdCd) + " IN " + deliveryMethodCodes);
|
|
filterDeliveryMethodCodes.Add("EXISTS (" + qryAdd.BuildQuery() + ")");
|
|
filter.Add(filterDeliveryMethodCodes.Concat(" OR ", "(", ")"));
|
|
}
|
|
// DeliveryBookInCodes.
|
|
String deliveryBookInCodes = DbQuery.FormatForIn(prm.DeliveryBookInCodes, true, true);
|
|
if (!deliveryBookInCodes.IsEmpty())
|
|
{
|
|
List<String> filterDeliveryBookInCodes = new List<String>();
|
|
String colAssociation_DeliveryBookInCode = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_DeliveryBookInCode, aliasAssociation);
|
|
filterDeliveryBookInCodes.Add(colAssociation_DeliveryBookInCode + " IN " + deliveryBookInCodes);
|
|
// Also include associations where the target has addresses associated with this Delivery BookIn:
|
|
String aliasDelBkInCd = "aDelBkInCd";
|
|
DbQuery qryAdd = new DbQuery(Database.DbmsType);
|
|
qryAdd.Tables.Add(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Address), aliasDelBkInCd);
|
|
qryAdd.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Address_Id, aliasDelBkInCd));
|
|
qryAdd.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Address_ItemType, aliasDelBkInCd) + "=" + ((int)Sbm.ItemType.Affiliate).ToString());
|
|
qryAdd.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Address_ItemId, aliasDelBkInCd) + "=" + colAssociation_AffIdTarget);
|
|
qryAdd.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Address_DeliveryBookInCode, aliasDelBkInCd) + " IN " + deliveryBookInCodes);
|
|
filterDeliveryBookInCodes.Add("EXISTS (" + qryAdd.BuildQuery() + ")");
|
|
filter.Add(filterDeliveryBookInCodes.Concat(" OR ", "(", ")"));
|
|
}
|
|
|
|
//---------------------------------------------------------------
|
|
// Transactions.
|
|
if (prm.TransactionStatusCat != SbmTransaction.StatusCat.Any || prm.TransactionType > 0 || prm.TransactionActiveFrom.IsValid() || prm.TransactionActiveTo.IsValid())
|
|
{
|
|
List<String> filterTrans = new List<String>();
|
|
DateTime dateTime = new DateTime(1970, 1, 1);
|
|
// Constructed to set DBMS (in case required to format query elements).
|
|
DbQuery qryTrans = new DbQuery(Database.DbmsType);
|
|
String colTransaction_InProgress = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Transaction_InProgress);
|
|
String colTransaction_Closed = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Transaction_Closed);
|
|
String colTransaction_Status = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Transaction_Status);
|
|
String colTransaction_StatusCat = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Transaction_StatusCat);
|
|
|
|
// Transaction type.
|
|
if (prm.TransactionType > 0)
|
|
{
|
|
String colTransaction_Type = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Transaction_Type);
|
|
filterTrans.Add($"{colTransaction_Type}={(int)prm.TransactionType}");
|
|
}
|
|
|
|
// Transaction dates.
|
|
if (prm.TransactionActiveFrom.IsValid() || prm.TransactionActiveTo.IsValid())
|
|
{
|
|
// Transaction must have an 'In Progress' date.
|
|
filterTrans.Add($"{colTransaction_InProgress} IS NOT NULL");
|
|
filterTrans.Add($"{colTransaction_InProgress}>{DbQuery.FormatDateForCondition(dateTime)}");
|
|
// Transaction must not be cancelled.
|
|
filterTrans.Add($"{colTransaction_Status}<>'{StatusCancelled}'");
|
|
if (prm.TransactionActiveFrom.IsValid())
|
|
{
|
|
// Transaction's 'Closed' date must not be earlier than the 'From' date.
|
|
filterTrans.Add(
|
|
colTransaction_Closed + " IS NULL OR " + colTransaction_Closed + "=" +
|
|
DbQuery.FormatForCondition(dateTime.ToString()) + " OR " + colTransaction_Closed + ">=" +
|
|
DbQuery.FormatForCondition(prm.TransactionActiveFrom.ToString()));
|
|
}
|
|
if (prm.TransactionActiveTo.IsValid())
|
|
{
|
|
// Transaction's 'In Progress' date must not be later than the 'To' date.
|
|
filterTrans.Add(colTransaction_InProgress + "<" + DbQuery.FormatDateForCondition(DateUtil.IncrementDate(prm.TransactionActiveTo, 1)));
|
|
}
|
|
}
|
|
// Transaction status.
|
|
filterTrans.Add(SbmTransactionMgr_Dbas.GetTransactionStatusCatFilter(prm.TransactionStatusCat, "", TransactionStatusCats));
|
|
filterTrans.RemoveBlanks();
|
|
filterTrans.RemoveDuplicatesCI();
|
|
if (!filterTrans.IsEmpty())
|
|
{
|
|
qryTrans.Tables.Add(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Transaction));
|
|
qryTrans.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Transaction_Id));
|
|
qryTrans.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Transaction_AssocId) + "=" + colAssociation_Id);
|
|
qryTrans.Filters.AddRange(filterTrans);
|
|
filter.Add("EXISTS (" + qryTrans.BuildQuery() + ")");
|
|
}
|
|
}
|
|
|
|
// System Accounts.
|
|
if (SysId.IsValid(prm.InterfaceIdExcludeSystemAccounts))
|
|
{
|
|
// Exclude affiliates that are already a system Account for the specified Inteface:
|
|
String aliasSysAcc = "aSysAcc";
|
|
DbQuery qrySysAcc = new DbQuery(Database.DbmsType);
|
|
qrySysAcc.Tables.Add(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.SystemAccount), aliasSysAcc);
|
|
qrySysAcc.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.SystemAccount_Id, aliasSysAcc));
|
|
qrySysAcc.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.SystemAccount_AssocId, aliasSysAcc) + "=" + SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_Id));
|
|
filter.Add("NOT EXISTS (" + qrySysAcc.BuildQuery() + ")");
|
|
}
|
|
|
|
// Supervision flag.
|
|
if (prm.Supervised != SbmAssociation.Params.AssociationSupervised.Any)
|
|
filter.Add(DbQuery.BuildBitMappedFilter(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_Flags, aliasAssociation), SbmAssociation.Flag_Supervised, prm.Supervised == SbmAssociation.Params.AssociationSupervised.Yes));
|
|
|
|
// Primary flag.
|
|
if (prm.PrimaryOnly)
|
|
filter.Add(DbQuery.BuildBitMappedFilter(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_Flags, aliasAssociation), SbmAssociation.Flag_Primary, true));
|
|
|
|
/* ToDo AssocMgrDbas via QueryFilter > Notes.
|
|
if (!StringUtil.IsEmpty(prm.NotesPartial))
|
|
filter.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_Notes, aliasAssociation) + " LIKE '%" + DbQuery.FormatForLike(prm.NotesPartial) + "%'");*/
|
|
|
|
// Termination Date.
|
|
String colAssociation_Terminated = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_Terminated, aliasAssociation);
|
|
if (prm.ApplicableFrom.IsValid())
|
|
{
|
|
// NB 'Association.Terminated' column is a long value (not a date).
|
|
List<String> filterTerminated = new List<String>();
|
|
filterTerminated.Add(colAssociation_Terminated + " IS NULL");
|
|
filterTerminated.Add(colAssociation_Terminated + "=" + "0"); //SaDbQuery::FormatForCondition(Date(1,1,1970)));
|
|
filterTerminated.Add(colAssociation_Terminated + ">=" + (prm.ApplicableFrom.Year << 16 + prm.ApplicableFrom.Month << 8 + prm.ApplicableFrom.Day).ToString());
|
|
filter.Add(filterTerminated.Concat(" OR ", "(", ")"));
|
|
}
|
|
|
|
// Associated Codes - with Seasonal Category Code & Item Link.
|
|
if (!StringUtil.IsEmpty(prm.SeasonalCategoryCode))
|
|
{
|
|
DbQuery qryCode = new DbQuery(Database.DbmsType);
|
|
qryCode.Tables.Add(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.ItemLink));
|
|
qryCode.Columns.Add("1");
|
|
qryCode.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.ItemLink_Type) + "=" + ((int)Sbm.ItemLinkType.ItemCodeList_SeasonalCategory).ToString());
|
|
qryCode.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.ItemLink_ItemTypeFrom) + "=" + ((int)Sbm.ItemType.Association).ToString());
|
|
qryCode.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.ItemLink_ItemIdFrom) + "=" + SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_Id));
|
|
qryCode.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.ItemLink_DataContent) + " LIKE '%," + DbQuery.FormatForCondition(prm.SeasonalCategoryCode) + ",%'");
|
|
filter.Add("EXISTS (" + qryCode.BuildQuery() + ")");
|
|
}
|
|
|
|
// Status.
|
|
String statusCatCondition = GetAssociationStatusCatFilterCondition(prm.StatusCat);
|
|
if (!StringUtil.IsBlank(statusCatCondition))
|
|
filter.Add($"{SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_Status, aliasAssociation)}{statusCatCondition}");
|
|
|
|
if (filter.Count < 1 && prm.IncludeDefaultFilter) filter.Add("1=1");
|
|
return filter;
|
|
}
|
|
|
|
internal static String GetAssociationStatusCatFilterCondition(SbmAssociation.StatusCat statusCat)
|
|
{
|
|
if (statusCat == SbmAssociation.StatusCat.CurrentOnly)
|
|
return $"='{StatusCurrent}'";
|
|
else if (statusCat == SbmAssociation.StatusCat.OnHoldOnly)
|
|
return $"='{StatusOnHold}'";
|
|
else if (statusCat == SbmAssociation.StatusCat.Active)
|
|
return $" In('{StatusCurrent}','{StatusOnHold}')";
|
|
else if (statusCat == SbmAssociation.StatusCat.DisabledOnly)
|
|
return $"='{StatusDisabled}'";
|
|
else if (statusCat == SbmAssociation.StatusCat.NotDeleted)
|
|
return $"!='{StatusDeleted}'";
|
|
else if (statusCat == SbmAssociation.StatusCat.DeletedOnly)
|
|
return $"='{StatusDeleted}'";
|
|
return "";
|
|
}
|
|
|
|
//-------------------------------------------------------------------
|
|
// Association sort columns.
|
|
public List<String> GetAssociationSortColumns(SbmAssociation.Params prm)
|
|
{
|
|
// Sort sequence:
|
|
List<String> sortColumnNames = new List<String>();
|
|
foreach (var columnDfn in prm.SortColumns)
|
|
{
|
|
// Need to ensure correct alias used for Association columns in case of conflict.
|
|
String sortCol = String.Empty;
|
|
if (SbmDbDfn.GetTableForColumn((SbmDbDfn.ColumnIdx)columnDfn.DbColumn) == SbmDbDfn.TableIdx.Association)
|
|
{
|
|
sortCol = SbmDbDfn.GetColumnNameQual((SbmDbDfn.ColumnIdx)columnDfn.DbColumn, aliasAssociation);
|
|
}
|
|
else
|
|
{
|
|
sortCol = columnDfn.DataName;
|
|
if (!StringUtil.IsEmpty(columnDfn.SortDataName))
|
|
sortCol = columnDfn.SortDataName;
|
|
}
|
|
if (!sortCol.IsEmpty())
|
|
{
|
|
DbOrderByNullMode orderByNullMode = DbOrderByNullMode.Default; // eSaOrderByDemoteNulls, eSaOrderByPromoteNulls
|
|
sortColumnNames.Add(DbQuery.FormatForOrderBy(sortCol, columnDfn.SortAscending, orderByNullMode).Concat(", "));
|
|
}
|
|
}
|
|
sortColumnNames.RemoveBlanks();
|
|
if (sortColumnNames.IsEmpty())
|
|
{
|
|
// Default sort columns:
|
|
sortColumnNames.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_Type, aliasAssociation) + " ASC");
|
|
sortColumnNames.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_Code, aliasAssociation) + " ASC");
|
|
}
|
|
return sortColumnNames;
|
|
}
|
|
|
|
//-------------------------------------------------------------------
|
|
// Association count.
|
|
private long GetAssociationCount(String filter)
|
|
{
|
|
ClearErrorState();
|
|
return Database.GetRowCount(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Association) + " As " + aliasAssociation, filter);
|
|
}
|
|
public override long GetAssociationCount(SbmAssociation.Params prm)
|
|
{
|
|
ClearErrorState();
|
|
return GetAssociationCount(GetAssociationQueryFilter(prm).Concat(" AND ", "(", ")"));
|
|
}
|
|
|
|
//-------------------------------------------------------------------
|
|
// Association list.
|
|
public override List<SbmAssociation> GetAssociationList(SbmAssociation.Params prm)
|
|
{
|
|
ClearErrorState();
|
|
List<SbmAssociation> associations = new List<SbmAssociation>();
|
|
DbQuery qry = new DbQuery(Database.DbmsType);
|
|
qry.Tables.Add(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Association), aliasAssociation);
|
|
Association_Db dbAssociation = new Association_Db(DbInfo);
|
|
qry.Columns.AddRange(dbAssociation.ExistingColumnNames.Select(col => $"[{col}]"));
|
|
qry.Filters.AddRange(GetAssociationQueryFilter(prm));
|
|
qry.OrderBy.AddRange(GetAssociationSortColumns(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())
|
|
{
|
|
dbAssociation = new Association_Db(DbInfo);
|
|
dbAssociation.PopulateFrom(dbDataReader);
|
|
associations.Add(CreateAssociation(dbAssociation));
|
|
}
|
|
}
|
|
}
|
|
catch (Exception exc)
|
|
{
|
|
SetErrorState(ErrorMessage.DatabaseQueryException);
|
|
SaLogger.Warn($"{SysUtil.Fn}\n\tQuery: {dbCommand.CommandText}\n\t{ExceptionUtil.GetErrorStateMessage(exc)}");
|
|
}
|
|
}
|
|
return associations;
|
|
}
|
|
|
|
//-------------------------------------------------------------------
|
|
// Association query execution.
|
|
public override DbResultSet ExecuteAssociationQuery(List<ColumnDfn> columns, SbmAssociation.Params prm)
|
|
{
|
|
// Retrieve the database.
|
|
ClearErrorState();
|
|
bool CanViewFinancials = UserCanViewCommoditySalesFinancials();
|
|
|
|
//---------------------------------------------------------------------
|
|
// Construct Query.
|
|
DbQuery query = new DbQuery(Database.DbmsType);
|
|
query.Tables.Add(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Association), aliasAssociation);
|
|
|
|
// Association columns properties.
|
|
//query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_Id));
|
|
if (columns.HasId(SbmAssociation.Column.Id))
|
|
query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_Id, aliasAssociation));
|
|
if (columns.HasId(SbmAssociation.Column.AffIdOwner))
|
|
query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_AffIdOwner, aliasAssociation));
|
|
if (columns.HasId(SbmAssociation.Column.AffIdTarget))
|
|
query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_AffIdTarget, aliasAssociation));
|
|
if (columns.HasId(SbmAssociation.Column.Type) || columns.HasId(SbmAssociation.Column.Type_Desc))
|
|
query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_Type, aliasAssociation, true));
|
|
if (columns.HasId(SbmAssociation.Column.Code))
|
|
query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_Code, aliasAssociation));
|
|
if (columns.HasId(SbmAssociation.Column.ExtRef))
|
|
query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_ExtRef, aliasAssociation));
|
|
if (columns.HasId(SbmAssociation.Column.Role))
|
|
query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_Role, aliasAssociation, true));
|
|
if (columns.HasId(SbmAssociation.Column.Location))
|
|
query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_Location, aliasAssociation, true));
|
|
if (columns.HasId(SbmAssociation.Column.PhoneMain))
|
|
query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_PhoneMain, aliasAssociation));
|
|
if (columns.HasId(SbmAssociation.Column.Email))
|
|
query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_Email, aliasAssociation));
|
|
if (columns.HasId(SbmAssociation.Column.Group) && ColumnExists(SbmDbDfn.ColumnIdx.Association_Group))
|
|
query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_Group, aliasAssociation, true));
|
|
if (columns.HasId(SbmAssociation.Column.DescDetail))
|
|
query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_DescDetail, aliasAssociation));
|
|
// Accounting columns.
|
|
if (columns.HasId(SbmAssociation.Column.DefaultNominalCode) && ColumnExists(SbmDbDfn.ColumnIdx.Association_DefaultNominalCode))
|
|
query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_DefaultNominalCode, aliasAssociation));
|
|
if (columns.HasId(SbmAssociation.Column.AmountTransMax) && CanViewFinancials)
|
|
query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_AmountTransMax, aliasAssociation));
|
|
if (columns.HasId(SbmAssociation.Column.AnnualSalesTarget) && CanViewFinancials && ColumnExists(SbmDbDfn.ColumnIdx.Association_AnnualSalesTarget))
|
|
query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_AnnualSalesTarget, aliasAssociation));
|
|
if (columns.HasId(SbmAssociation.Column.CreditLimit))
|
|
query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_CreditLimit, aliasAssociation));
|
|
if (columns.HasId(SbmAssociation.Column.AccountBalance))
|
|
query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_AccountBalance, aliasAssociation));
|
|
if (columns.HasId(SbmAssociation.Column.DiscountType) || columns.HasId(SbmAssociation.Column.DiscountType_Desc))
|
|
query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_DiscountType, aliasAssociation));
|
|
if (columns.HasId(SbmAssociation.Column.DiscountRate))
|
|
query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_DiscountRate, aliasAssociation));
|
|
if (columns.HasId(SbmAssociation.Column.PriceSetId))
|
|
query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_PriceSetId, aliasAssociation));
|
|
if (columns.HasId(SbmAssociation.Column.TaxCodeId))
|
|
query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_TaxCodeId, aliasAssociation));
|
|
if (columns.HasId(SbmAssociation.Column.PaymentTerms))
|
|
query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_PaymentTerms, aliasAssociation));
|
|
if (columns.HasId(SbmAssociation.Column.InvoiceDesc))
|
|
query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_InvoiceDesc, aliasAssociation));
|
|
// Coding columns.
|
|
if (columns.HasId(SbmAssociation.Column.AccountManagerCode) || columns.HasId(SbmAssociation.Column.AccountManagerDesc))
|
|
query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_AccountManagerCode, aliasAssociation));
|
|
if (columns.HasId(SbmAssociation.Column.AccountHandlerCode) || columns.HasId(SbmAssociation.Column.AccountHandlerDesc))
|
|
query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_AccountHandlerCode, aliasAssociation));
|
|
if (columns.HasId(SbmAssociation.Column.AccountTypeCode) || columns.HasId(SbmAssociation.Column.AccountTypeDesc))
|
|
query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_AccountTypeCode, aliasAssociation));
|
|
if (columns.HasId(SbmAssociation.Column.AccountRatingCode) || columns.HasId(SbmAssociation.Column.AccountRatingDesc))
|
|
query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_AccountRatingCode, aliasAssociation));
|
|
if (columns.HasId(SbmAssociation.Column.ContactAreaCode) || columns.HasId(SbmAssociation.Column.ContactAreaDesc))
|
|
query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_ContactAreaCode, aliasAssociation));
|
|
if (columns.HasId(SbmAssociation.Column.ContactHandlerCode) || columns.HasId(SbmAssociation.Column.ContactHandlerDesc))
|
|
query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_ContactHandlerCode, aliasAssociation));
|
|
if (columns.HasId(SbmAssociation.Column.ContactMethodCode) || columns.HasId(SbmAssociation.Column.ContactMethodDesc))
|
|
query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_ContactMethodCode, aliasAssociation));
|
|
if (columns.HasId(SbmAssociation.Column.ContactCallCycleCode) || columns.HasId(SbmAssociation.Column.ContactCallCycleDesc))
|
|
query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_ContactCallCycleCode, aliasAssociation));
|
|
if (columns.HasId(SbmAssociation.Column.CallsPerYear))
|
|
query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_CallsPerYear, aliasAssociation));
|
|
// Other Code columns
|
|
if (columns.HasId(SbmAssociation.Column.LastCall))
|
|
query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_LastCall, aliasAssociation));
|
|
if (columns.HasId(SbmAssociation.Column.OrderLeadTimeCode) || columns.HasId(SbmAssociation.Column.OrderLeadTimeDesc))
|
|
query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_OrderLeadTimeCode, aliasAssociation));
|
|
if (columns.HasId(SbmAssociation.Column.DeliveryTypeCode) || columns.HasId(SbmAssociation.Column.DeliveryTypeDesc))
|
|
query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_DeliveryTypeCode, aliasAssociation));
|
|
if (columns.HasId(SbmAssociation.Column.DeliveryMethodCode) || columns.HasId(SbmAssociation.Column.DeliveryMethodDesc))
|
|
query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_DeliveryMethodCode, aliasAssociation));
|
|
if (columns.HasId(SbmAssociation.Column.DeliveryBookInCode) || columns.HasId(SbmAssociation.Column.DeliveryBookInDesc))
|
|
query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_DeliveryBookInCode, aliasAssociation));
|
|
if (columns.HasId(SbmAssociation.Column.Terminated))
|
|
query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_Terminated, aliasAssociation));
|
|
query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_Flags, aliasAssociation));
|
|
if (columns.HasId(SbmAssociation.Column.Primary))
|
|
query.Columns.Add(GetFlagValue(SbmAssociation.Flag_Primary, true, null), /*colAssociation_Primary,*/ aliasAssociation);
|
|
if (columns.HasId(SbmAssociation.Column.Technician))
|
|
query.Columns.Add(GetFlagValue(SbmAssociation.Flag_Technician, true, null), /*colAssociation_Technician,*/ aliasAssociation);
|
|
// Common Properties
|
|
if (columns.HasId(SbmAssociation.Column.Notes))
|
|
query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_Notes, aliasAssociation));
|
|
if (columns.HasId(SbmAssociation.Column.Status) || columns.HasId(SbmAssociation.Column.Status_Desc) || columns.HasId(SbmAssociation.Column.Status_Ind))
|
|
query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_Status, aliasAssociation));
|
|
if (columns.HasId(SbmAssociation.Column.CreateOn_Date))
|
|
query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_CreateOn, aliasAssociation));
|
|
if (columns.HasId(SbmAssociation.Column.UpdateOn_Date))
|
|
query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_UpdateOn, aliasAssociation));
|
|
|
|
//---------------------------------------------------------------
|
|
// Owner affiliate.
|
|
bool hasColsAffOwner = false;
|
|
if (!hasColsAffOwner)
|
|
hasColsAffOwner = columns.HasId(SbmAssociation.Column.Owner_Name);
|
|
bool hasColsAffOwnerAddress = false;
|
|
if (hasColsAffOwner || hasColsAffOwnerAddress)
|
|
{
|
|
// Join to the owner affiliate.
|
|
prm.Alias_Affiliate_Owner = aliasAssociation_Affiliate_Owner;
|
|
DbQueryJoin joinAffiliateOwner = new DbQueryJoin(DbJoinType.LeftOuter);
|
|
joinAffiliateOwner.Table = new StringPair(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Affiliate), aliasAssociation_Affiliate_Owner);
|
|
joinAffiliateOwner.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Affiliate_Id, aliasAssociation_Affiliate_Owner) + "=" + SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_AffIdOwner, aliasAssociation));
|
|
query.Joins.Add(joinAffiliateOwner);
|
|
// Columns.
|
|
List<SbmDbDfn.ColumnIdx> affiliateOwnerCols = new List<SbmDbDfn.ColumnIdx>()
|
|
{
|
|
SbmDbDfn.ColumnIdx.Affiliate_Id,
|
|
SbmDbDfn.ColumnIdx.Affiliate_Name,
|
|
/*SbmDbDfn.GetColumnName(SbmDbDfn.ColumnIdx.Affiliate_Nature,
|
|
SbmDbDfn.GetColumnName(SbmDbDfn.ColumnIdx.Affiliate_PhoneMain,
|
|
SbmDbDfn.GetColumnName(SbmDbDfn.ColumnIdx.Affiliate_PhoneAlt,
|
|
SbmDbDfn.GetColumnName(SbmDbDfn.ColumnIdx.Affiliate_PhoneMobile,
|
|
SbmDbDfn.GetColumnName(SbmDbDfn.ColumnIdx.Affiliate_PhoneFax,
|
|
SbmDbDfn.GetColumnName(SbmDbDfn.ColumnIdx.Affiliate_Email,
|
|
SbmDbDfn.GetColumnName(SbmDbDfn.ColumnIdx.Affiliate_Website,*/
|
|
};
|
|
foreach (SbmDbDfn.ColumnIdx dbColumn in affiliateOwnerCols)
|
|
query.Columns.Add(SbmDbDfn.GetColumnNameQual(dbColumn, aliasAssociation_Affiliate_Owner), prefixAssociation_Affiliate_Owner + SbmDbDfn.GetColumnName(dbColumn, false));
|
|
|
|
// Owner affiliate address columns.
|
|
if (hasColsAffOwnerAddress)
|
|
{
|
|
}
|
|
}
|
|
|
|
//---------------------------------------------------------------
|
|
// Target affiliate.
|
|
bool hasColsAffTarget = false;
|
|
if (!hasColsAffTarget) hasColsAffTarget = columns.HasId(SbmAssociation.Column.Target_Type) || columns.HasId(SbmAssociation.Column.Target_TypeDesc);
|
|
if (!hasColsAffTarget) hasColsAffTarget = columns.HasId(SbmAssociation.Column.Target_Name);
|
|
if (!hasColsAffTarget) hasColsAffTarget = columns.HasId(SbmAssociation.Column.Target_Nature);
|
|
if (!hasColsAffTarget) hasColsAffTarget = columns.HasId(SbmAssociation.Column.Target_PhoneMain);
|
|
if (!hasColsAffTarget) hasColsAffTarget = columns.HasId(SbmAssociation.Column.Target_PhoneAlt);
|
|
if (!hasColsAffTarget) hasColsAffTarget = columns.HasId(SbmAssociation.Column.Target_PhoneFax);
|
|
if (!hasColsAffTarget) hasColsAffTarget = columns.HasId(SbmAssociation.Column.Target_PhoneMobile);
|
|
if (!hasColsAffTarget) hasColsAffTarget = columns.HasId(SbmAssociation.Column.Target_Email);
|
|
if (!hasColsAffTarget) hasColsAffTarget = columns.HasId(SbmAssociation.Column.Target_Website);
|
|
if (!hasColsAffTarget) hasColsAffTarget = columns.HasId(SbmAssociation.Column.Target_Notes);
|
|
|
|
bool hasColsAffTargetAddress = false;
|
|
if (!hasColsAffTargetAddress) hasColsAffTargetAddress = columns.HasId(SbmAssociation.Column.Target_Address_Type) || columns.HasId(SbmAssociation.Column.Target_Address_TypeDesc);
|
|
if (!hasColsAffTargetAddress) hasColsAffTargetAddress = columns.HasId(SbmAssociation.Column.Target_Address_RefExt);
|
|
if (!hasColsAffTargetAddress) hasColsAffTargetAddress = columns.HasId(SbmAssociation.Column.Target_Address_Name);
|
|
if (!hasColsAffTargetAddress) hasColsAffTargetAddress = columns.HasId(SbmAssociation.Column.Target_Address_DescBrief);
|
|
if (!hasColsAffTargetAddress) hasColsAffTargetAddress = columns.HasId(SbmAssociation.Column.Target_Address_Summary);
|
|
if (!hasColsAffTargetAddress) hasColsAffTargetAddress = columns.HasId(SbmAssociation.Column.Target_Address_Line1);
|
|
if (!hasColsAffTargetAddress) hasColsAffTargetAddress = columns.HasId(SbmAssociation.Column.Target_Address_Line2);
|
|
if (!hasColsAffTargetAddress) hasColsAffTargetAddress = columns.HasId(SbmAssociation.Column.Target_Address_City);
|
|
if (!hasColsAffTargetAddress) hasColsAffTargetAddress = columns.HasId(SbmAssociation.Column.Target_Address_Province);
|
|
if (!hasColsAffTargetAddress) hasColsAffTargetAddress = columns.HasId(SbmAssociation.Column.Target_Address_Postcode);
|
|
if (!hasColsAffTargetAddress) hasColsAffTargetAddress = columns.HasId(SbmAssociation.Column.Target_Address_Country);
|
|
if (!hasColsAffTargetAddress) hasColsAffTargetAddress = columns.HasId(SbmAssociation.Column.Target_Address_Contact);
|
|
if (!hasColsAffTargetAddress) hasColsAffTargetAddress = columns.HasId(SbmAssociation.Column.Target_Address_Phone);
|
|
if (!hasColsAffTargetAddress) hasColsAffTargetAddress = columns.HasId(SbmAssociation.Column.Target_Address_Email);
|
|
if (!hasColsAffTargetAddress) hasColsAffTargetAddress = columns.HasId(SbmAssociation.Column.Target_Address_AccountManagerCode);
|
|
if (!hasColsAffTargetAddress) hasColsAffTargetAddress = columns.HasId(SbmAssociation.Column.Target_Address_AccountManagerDesc);
|
|
if (!hasColsAffTargetAddress) hasColsAffTargetAddress = columns.HasId(SbmAssociation.Column.Target_Address_AccountHandlerCode);
|
|
if (!hasColsAffTargetAddress) hasColsAffTargetAddress = columns.HasId(SbmAssociation.Column.Target_Address_AccountHandlerDesc);
|
|
if (!hasColsAffTargetAddress) hasColsAffTargetAddress = columns.HasId(SbmAssociation.Column.Target_Address_ContactAreaCode);
|
|
if (!hasColsAffTargetAddress) hasColsAffTargetAddress = columns.HasId(SbmAssociation.Column.Target_Address_ContactAreaDesc);
|
|
if (!hasColsAffTargetAddress) hasColsAffTargetAddress = columns.HasId(SbmAssociation.Column.Target_Address_ContactHandlerCode);
|
|
if (!hasColsAffTargetAddress) hasColsAffTargetAddress = columns.HasId(SbmAssociation.Column.Target_Address_ContactHandlerDesc);
|
|
if (!hasColsAffTargetAddress) hasColsAffTargetAddress = columns.HasId(SbmAssociation.Column.Target_Address_LastVisitOn);
|
|
if (!hasColsAffTargetAddress) hasColsAffTargetAddress = columns.HasId(SbmAssociation.Column.Target_Address_NextVisitOn);
|
|
|
|
if (hasColsAffTarget || hasColsAffTargetAddress)
|
|
{
|
|
// Join to the target affiliate - NB Use an alias to avoid clashing with the owner affiliate.
|
|
prm.Alias_Affiliate_Target = aliasAssociation_Affiliate_Target;
|
|
DbQueryJoin joinAffiliateTarget = new DbQueryJoin(DbJoinType.LeftOuter);
|
|
joinAffiliateTarget.Table = new StringPair(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Affiliate), aliasAssociation_Affiliate_Target);
|
|
joinAffiliateTarget.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Affiliate_Id, aliasAssociation_Affiliate_Target) + "=" + SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_AffIdTarget, aliasAssociation));
|
|
query.Joins.Add(joinAffiliateTarget);
|
|
// Add the target affiliate columns.
|
|
List<SbmDbDfn.ColumnIdx> affiliateTargetCols = new List<SbmDbDfn.ColumnIdx>();
|
|
affiliateTargetCols.Add(SbmDbDfn.ColumnIdx.Affiliate_Id);
|
|
affiliateTargetCols.Add(SbmDbDfn.ColumnIdx.Affiliate_Type);
|
|
affiliateTargetCols.Add(SbmDbDfn.ColumnIdx.Affiliate_Name);
|
|
if (columns.HasId(SbmAssociation.Column.Target_Nature))
|
|
affiliateTargetCols.Add(SbmDbDfn.ColumnIdx.Affiliate_Nature);
|
|
if (columns.HasId(SbmAssociation.Column.Target_PhoneMain))
|
|
affiliateTargetCols.Add(SbmDbDfn.ColumnIdx.Affiliate_PhoneMain);
|
|
if (columns.HasId(SbmAssociation.Column.Target_PhoneAlt))
|
|
affiliateTargetCols.Add(SbmDbDfn.ColumnIdx.Affiliate_PhoneAlt);
|
|
if (columns.HasId(SbmAssociation.Column.Target_PhoneMobile))
|
|
affiliateTargetCols.Add(SbmDbDfn.ColumnIdx.Affiliate_PhoneMobile);
|
|
if (columns.HasId(SbmAssociation.Column.Target_PhoneFax))
|
|
affiliateTargetCols.Add(SbmDbDfn.ColumnIdx.Affiliate_PhoneFax);
|
|
if (columns.HasId(SbmAssociation.Column.Target_Email))
|
|
affiliateTargetCols.Add(SbmDbDfn.ColumnIdx.Affiliate_Email);
|
|
if (columns.HasId(SbmAssociation.Column.Target_Website))
|
|
affiliateTargetCols.Add(SbmDbDfn.ColumnIdx.Affiliate_Website);
|
|
if (columns.HasId(SbmAssociation.Column.Target_Notes))
|
|
affiliateTargetCols.Add(SbmDbDfn.ColumnIdx.Affiliate_Notes);
|
|
foreach (SbmDbDfn.ColumnIdx dbColumn in affiliateTargetCols)
|
|
query.Columns.Add(SbmDbDfn.GetColumnNameQual(dbColumn, aliasAssociation_Affiliate_Target), prefixAssociation_Affiliate_Target + SbmDbDfn.GetColumnName(dbColumn, false));
|
|
|
|
// Target affiliate address columns.
|
|
if (hasColsAffTargetAddress)
|
|
{
|
|
// Join to the target contact's primary address.
|
|
prm.Alias_Address_Target = aliasAssociation_Target_Address;
|
|
DbQueryJoin joinTargetAddress = new DbQueryJoin(DbJoinType.LeftOuter);
|
|
joinTargetAddress.Table = new StringPair(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Address), aliasAssociation_Target_Address);
|
|
// Address context.
|
|
if (prm.AddressContext == SbmAssociation.Params.AddressContextType.All)
|
|
{
|
|
// Return all addresses for target contact - as separate rows, eg. for export.
|
|
joinTargetAddress.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Address_ItemType, aliasAssociation_Target_Address) + "=" + ((int)Sbm.ItemType.Affiliate).ToString());
|
|
joinTargetAddress.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Address_ItemId, aliasAssociation_Target_Address) + "=" + SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Affiliate_Id, aliasAssociation_Affiliate_Target));
|
|
}
|
|
else
|
|
{
|
|
// Sub-query to identify primary address with lowest Id for each affiliate.
|
|
DbQuery qryAddPrimMinId = new DbQuery(Database.DbmsType);
|
|
qryAddPrimMinId.Tables.Add(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Address));
|
|
qryAddPrimMinId.Filters.Add(SbmDbDfn.GetColumnName(SbmDbDfn.ColumnIdx.Address_ItemType) + "=" + ((int)Sbm.ItemType.Affiliate).ToString());
|
|
if (prm.AddressContext == SbmAssociation.Params.AddressContextType.Delivery)
|
|
qryAddPrimMinId.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Address_Type) + "=" + ((int)Sbm.AddressType.Delivery).ToString());
|
|
else
|
|
qryAddPrimMinId.Filters.Add(DbQuery.BuildBitMappedFilter(SbmDbDfn.GetColumnName(SbmDbDfn.ColumnIdx.Address_Flags), SbmAddress.Flag_Primary, true));
|
|
qryAddPrimMinId.Columns.Add(SbmDbDfn.GetColumnName(SbmDbDfn.ColumnIdx.Address_ItemType));
|
|
qryAddPrimMinId.Columns.Add(SbmDbDfn.GetColumnName(SbmDbDfn.ColumnIdx.Address_ItemId));
|
|
qryAddPrimMinId.Columns.Add("Min(" + SbmDbDfn.GetColumnName(SbmDbDfn.ColumnIdx.Address_Id) + ")", SbmDbDfn.GetColumnName(SbmDbDfn.ColumnIdx.Address_Id, false));
|
|
qryAddPrimMinId.GroupBy.Add(SbmDbDfn.GetColumnName(SbmDbDfn.ColumnIdx.Address_ItemType));
|
|
qryAddPrimMinId.GroupBy.Add(SbmDbDfn.GetColumnName(SbmDbDfn.ColumnIdx.Address_ItemId));
|
|
|
|
// Join to target contact's primary address with lowest Id.
|
|
String aliasAddressMinId = "AssAddMinId";
|
|
DbQueryJoin joinAddPrimId = new DbQueryJoin(DbJoinType.LeftOuter);
|
|
joinAddPrimId.Table = new StringPair("(" + qryAddPrimMinId.BuildQuery() + ")", aliasAddressMinId);
|
|
joinAddPrimId.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Address_ItemType, aliasAddressMinId) + "=" + ((int)Sbm.ItemType.Affiliate).ToString());
|
|
joinAddPrimId.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Address_ItemId, aliasAddressMinId) + "=" + SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Affiliate_Id, aliasAssociation_Affiliate_Target));
|
|
query.Joins.Add(joinAddPrimId);
|
|
|
|
// Join to target address with lowest Id.
|
|
joinTargetAddress.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Address_Id, aliasAssociation_Target_Address) + "=" + SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Address_Id, aliasAddressMinId));
|
|
}
|
|
query.Joins.Add(joinTargetAddress);
|
|
// Add the address columns.
|
|
List<SbmDbDfn.ColumnIdx> addressTargetCols = new List<SbmDbDfn.ColumnIdx>();
|
|
if (columns.HasId(SbmAssociation.Column.Target_Address_Type) || columns.HasId(SbmAssociation.Column.Target_Address_TypeDesc))
|
|
addressTargetCols.Add(SbmDbDfn.ColumnIdx.Address_Type);
|
|
if (columns.HasId(SbmAssociation.Column.Target_Address_RefExt))
|
|
addressTargetCols.Add(SbmDbDfn.ColumnIdx.Address_RefExt);
|
|
if (columns.HasId(SbmAssociation.Column.Target_Address_Name))
|
|
addressTargetCols.Add(SbmDbDfn.ColumnIdx.Address_Name);
|
|
if (columns.HasId(SbmAssociation.Column.Target_Address_DescBrief))
|
|
addressTargetCols.Add(SbmDbDfn.ColumnIdx.Address_DescBrief);
|
|
if (columns.HasId(SbmAssociation.Column.Target_Address_Summary) || columns.HasId(SbmAssociation.Column.Target_Address_Line1))
|
|
addressTargetCols.Add(SbmDbDfn.ColumnIdx.Address_Line1);
|
|
if (columns.HasId(SbmAssociation.Column.Target_Address_Summary) || columns.HasId(SbmAssociation.Column.Target_Address_Line2))
|
|
addressTargetCols.Add(SbmDbDfn.ColumnIdx.Address_Line2);
|
|
if (columns.HasId(SbmAssociation.Column.Target_Address_Summary) || columns.HasId(SbmAssociation.Column.Target_Address_Line3))
|
|
addressTargetCols.Add(SbmDbDfn.ColumnIdx.Address_Line3);
|
|
if (columns.HasId(SbmAssociation.Column.Target_Address_Summary) || columns.HasId(SbmAssociation.Column.Target_Address_City))
|
|
addressTargetCols.Add(SbmDbDfn.ColumnIdx.Address_City);
|
|
if (columns.HasId(SbmAssociation.Column.Target_Address_Summary) || columns.HasId(SbmAssociation.Column.Target_Address_Province))
|
|
addressTargetCols.Add(SbmDbDfn.ColumnIdx.Address_Province);
|
|
if (columns.HasId(SbmAssociation.Column.Target_Address_Summary) || columns.HasId(SbmAssociation.Column.Target_Address_Postcode))
|
|
addressTargetCols.Add(SbmDbDfn.ColumnIdx.Address_Postcode);
|
|
if (columns.HasId(SbmAssociation.Column.Target_Address_Summary) || columns.HasId(SbmAssociation.Column.Target_Address_Country))
|
|
addressTargetCols.Add(SbmDbDfn.ColumnIdx.Address_Country);
|
|
if (columns.HasId(SbmAssociation.Column.Target_Address_Summary) || columns.HasId(SbmAssociation.Column.Target_Address_Contact))
|
|
addressTargetCols.Add(SbmDbDfn.ColumnIdx.Address_Contact);
|
|
if (columns.HasId(SbmAssociation.Column.Target_Address_Summary) || columns.HasId(SbmAssociation.Column.Target_Address_Phone))
|
|
addressTargetCols.Add(SbmDbDfn.ColumnIdx.Address_Phone);
|
|
//addressTargetCols.Add(SbmDbDfn.ColumnIdx.Address_Fax));
|
|
if (columns.HasId(SbmAssociation.Column.Target_Address_Summary) || columns.HasId(SbmAssociation.Column.Target_Address_Email))
|
|
addressTargetCols.Add(SbmDbDfn.ColumnIdx.Address_Email);
|
|
if (columns.HasId(SbmAssociation.Column.Target_Address_AccountManagerCode) || columns.HasId(SbmAssociation.Column.Target_Address_AccountManagerDesc))
|
|
addressTargetCols.Add(SbmDbDfn.ColumnIdx.Address_AccountManagerCode);
|
|
if (columns.HasId(SbmAssociation.Column.Target_Address_AccountHandlerCode) || columns.HasId(SbmAssociation.Column.Target_Address_AccountHandlerDesc))
|
|
addressTargetCols.Add(SbmDbDfn.ColumnIdx.Address_AccountHandlerCode);
|
|
if (columns.HasId(SbmAssociation.Column.Target_Address_ContactAreaCode) || columns.HasId(SbmAssociation.Column.Target_Address_ContactAreaDesc))
|
|
addressTargetCols.Add(SbmDbDfn.ColumnIdx.Address_ContactAreaCode);
|
|
if (columns.HasId(SbmAssociation.Column.Target_Address_ContactHandlerCode) || columns.HasId(SbmAssociation.Column.Target_Address_ContactHandlerDesc))
|
|
addressTargetCols.Add(SbmDbDfn.ColumnIdx.Address_ContactHandlerCode);
|
|
if (columns.HasId(SbmAssociation.Column.Target_Address_LastVisitOn))
|
|
addressTargetCols.Add(SbmDbDfn.ColumnIdx.Address_LastVisitOn);
|
|
if (columns.HasId(SbmAssociation.Column.Target_Address_NextVisitOn))
|
|
addressTargetCols.Add(SbmDbDfn.ColumnIdx.Address_NextVisitOn);
|
|
foreach (SbmDbDfn.ColumnIdx dbColumn in addressTargetCols)
|
|
query.Columns.Add(SbmDbDfn.GetColumnNameQual(dbColumn, aliasAssociation_Target_Address), prefixAssociation_Target_Address + SbmDbDfn.GetColumnName(dbColumn, false));
|
|
}
|
|
}
|
|
//---------------------------------------------------------------
|
|
// Member columns
|
|
bool hasColsMember = false;
|
|
if (!hasColsMember) hasColsMember = (columns.HasId(SbmAssociation.Column.Member_Type) || columns.HasId(SbmAssociation.Column.Member_TypeDesc));
|
|
if (!hasColsMember) hasColsMember = columns.HasId(SbmAssociation.Column.Member_Code);
|
|
if (!hasColsMember) hasColsMember = columns.HasId(SbmAssociation.Column.Member_ExtRef);
|
|
if (!hasColsMember) hasColsMember = columns.HasId(SbmAssociation.Column.Member_Role);
|
|
if (!hasColsMember) hasColsMember = columns.HasId(SbmAssociation.Column.Member_Location);
|
|
if (!hasColsMember) hasColsMember = columns.HasId(SbmAssociation.Column.Member_PhoneMain);
|
|
if (!hasColsMember) hasColsMember = columns.HasId(SbmAssociation.Column.Member_Email);
|
|
if (!hasColsMember) hasColsMember = columns.HasId(SbmAssociation.Column.Member_Target_Name);
|
|
if (!hasColsMember) hasColsMember = columns.HasId(SbmAssociation.Column.Member_Target_Nature);
|
|
if (!hasColsMember) hasColsMember = columns.HasId(SbmAssociation.Column.Member_Target_PhoneMain);
|
|
if (!hasColsMember) hasColsMember = columns.HasId(SbmAssociation.Column.Member_Target_PhoneAlt);
|
|
if (!hasColsMember) hasColsMember = columns.HasId(SbmAssociation.Column.Member_Target_PhoneFax);
|
|
if (!hasColsMember) hasColsMember = columns.HasId(SbmAssociation.Column.Member_Target_PhoneMobile);
|
|
if (!hasColsMember) hasColsMember = columns.HasId(SbmAssociation.Column.Member_Target_Email);
|
|
if (!hasColsMember) hasColsMember = columns.HasId(SbmAssociation.Column.Member_Target_Website);
|
|
if (!hasColsMember) hasColsMember = columns.HasId(SbmAssociation.Column.Member_Target_Notes);
|
|
|
|
bool hasColsMemberAddress = false;
|
|
if (!hasColsMemberAddress) hasColsMemberAddress = columns.HasId(SbmAssociation.Column.Member_Target_Address_Summary);
|
|
if (!hasColsMemberAddress) hasColsMemberAddress = columns.HasId(SbmAssociation.Column.Member_Target_Address_Line1);
|
|
if (!hasColsMemberAddress) hasColsMemberAddress = columns.HasId(SbmAssociation.Column.Member_Target_Address_Line2);
|
|
if (!hasColsMemberAddress) hasColsMemberAddress = columns.HasId(SbmAssociation.Column.Member_Target_Address_City);
|
|
if (!hasColsMemberAddress) hasColsMemberAddress = columns.HasId(SbmAssociation.Column.Member_Target_Address_Province);
|
|
if (!hasColsMemberAddress) hasColsMemberAddress = columns.HasId(SbmAssociation.Column.Member_Target_Address_Postcode);
|
|
if (!hasColsMemberAddress) hasColsMemberAddress = columns.HasId(SbmAssociation.Column.Member_Target_Address_Country);
|
|
|
|
// Delivery address columns are for association import only and are only referenced here in case this rule changes.
|
|
bool hasColdeliveryAddress = false;
|
|
if (!hasColdeliveryAddress) hasColdeliveryAddress = columns.HasId(SbmAssociation.Column.Target_DeliveryAddress_Postcode);
|
|
if (!hasColdeliveryAddress) hasColdeliveryAddress = columns.HasId(SbmAssociation.Column.Target_DeliveryAddress_AccountManagerCode);
|
|
if (!hasColdeliveryAddress) hasColdeliveryAddress = columns.HasId(SbmAssociation.Column.Target_DeliveryAddress_ContactAreaCode);
|
|
if (hasColsMember || hasColsMemberAddress)
|
|
{
|
|
// Join to the member association - NB Use an alias to avoid clashing with the target affiliate.
|
|
prm.Alias_Association_Member = aliasAssociation_Member_Association;
|
|
DbQueryJoin joinPriceSetMemberAss = new DbQueryJoin(DbJoinType.LeftOuter);
|
|
joinPriceSetMemberAss.Table = new StringPair(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Association), aliasAssociation_Member_Association);
|
|
joinPriceSetMemberAss.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_AffIdOwner, aliasAssociation_Member_Association) + "=" + SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_AffIdTarget));
|
|
query.Joins.Add(joinPriceSetMemberAss);
|
|
|
|
// Add the member associate columns.
|
|
List<SbmDbDfn.ColumnIdx> associateMemberCols = new List<SbmDbDfn.ColumnIdx>();
|
|
//affiliateMemberCols.Add(SbmDbDfn.ColumnIdx.Affiliate_Id);
|
|
associateMemberCols.Add(SbmDbDfn.ColumnIdx.Association_Type);
|
|
if (columns.HasId(SbmAssociation.Column.Member_Code)) associateMemberCols.Add(SbmDbDfn.ColumnIdx.Association_Code);
|
|
if (columns.HasId(SbmAssociation.Column.Member_ExtRef)) associateMemberCols.Add(SbmDbDfn.ColumnIdx.Association_ExtRef);
|
|
if (columns.HasId(SbmAssociation.Column.Member_Role)) associateMemberCols.Add(SbmDbDfn.ColumnIdx.Association_Role);
|
|
if (columns.HasId(SbmAssociation.Column.Member_Location)) associateMemberCols.Add(SbmDbDfn.ColumnIdx.Association_Location);
|
|
if (columns.HasId(SbmAssociation.Column.Member_PhoneMain)) associateMemberCols.Add(SbmDbDfn.ColumnIdx.Association_PhoneMain);
|
|
if (columns.HasId(SbmAssociation.Column.Member_Email)) associateMemberCols.Add(SbmDbDfn.ColumnIdx.Association_Email);
|
|
foreach (SbmDbDfn.ColumnIdx dbColumn in associateMemberCols)
|
|
query.Columns.Add(SbmDbDfn.GetColumnNameQual(dbColumn, aliasAssociation_Member_Association), prefixAssociation_Member_Association + SbmDbDfn.GetColumnName(dbColumn, false));
|
|
|
|
// Join to the corresponding Member (target) affiliate.
|
|
DbQueryJoin joinPriceSetMemberAff = new DbQueryJoin(DbJoinType.LeftOuter);
|
|
joinPriceSetMemberAff.Table = new StringPair(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Affiliate), aliasAssociation_Member_Affiliate);
|
|
joinPriceSetMemberAff.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Affiliate_Id, aliasAssociation_Member_Affiliate) + "=" + SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_AffIdTarget, aliasAssociation_Member_Association));
|
|
query.Joins.Add(joinPriceSetMemberAff);
|
|
|
|
// Add the member affiliate columns.
|
|
List<SbmDbDfn.ColumnIdx> affiliateMemberCols = new List<SbmDbDfn.ColumnIdx>();
|
|
affiliateMemberCols.Add(SbmDbDfn.ColumnIdx.Affiliate_Name);
|
|
if (columns.HasId(SbmAssociation.Column.Member_Target_Nature)) affiliateMemberCols.Add(SbmDbDfn.ColumnIdx.Affiliate_Nature);
|
|
if (columns.HasId(SbmAssociation.Column.Member_Target_PhoneMain)) affiliateMemberCols.Add(SbmDbDfn.ColumnIdx.Affiliate_PhoneMain);
|
|
if (columns.HasId(SbmAssociation.Column.Member_Target_PhoneAlt)) affiliateMemberCols.Add(SbmDbDfn.ColumnIdx.Affiliate_PhoneAlt);
|
|
if (columns.HasId(SbmAssociation.Column.Member_Target_PhoneMobile)) affiliateMemberCols.Add(SbmDbDfn.ColumnIdx.Affiliate_PhoneMobile);
|
|
if (columns.HasId(SbmAssociation.Column.Member_Target_PhoneFax)) affiliateMemberCols.Add(SbmDbDfn.ColumnIdx.Affiliate_PhoneFax);
|
|
if (columns.HasId(SbmAssociation.Column.Member_Target_Email)) affiliateMemberCols.Add(SbmDbDfn.ColumnIdx.Affiliate_Email);
|
|
if (columns.HasId(SbmAssociation.Column.Member_Target_Website)) affiliateMemberCols.Add(SbmDbDfn.ColumnIdx.Affiliate_Website);
|
|
if (columns.HasId(SbmAssociation.Column.Member_Target_Notes)) affiliateMemberCols.Add(SbmDbDfn.ColumnIdx.Affiliate_Notes);
|
|
foreach (SbmDbDfn.ColumnIdx dbColumn in affiliateMemberCols)
|
|
query.Columns.Add(SbmDbDfn.GetColumnNameQual(dbColumn, aliasAssociation_Member_Affiliate), prefixAssociation_Member_Affiliate + SbmDbDfn.GetColumnName(dbColumn, false));
|
|
|
|
if (hasColsMemberAddress)
|
|
{
|
|
// Join to the Member affiliate - NB Use an alias to avoid clashing with the owner affiliate.
|
|
prm.Alias_Address_Member = aliasAssociation_Member_Address;
|
|
DbQueryJoin joinPriceSetMemberAddress = new DbQueryJoin(DbJoinType.LeftOuter);
|
|
joinPriceSetMemberAddress.Table = new StringPair(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Address), aliasAssociation_Member_Address);
|
|
joinPriceSetMemberAddress.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Address_AffIdOwner, aliasAssociation_Member_Address) + "=" + SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Affiliate_Id, aliasAssociation_Member_Affiliate));
|
|
joinPriceSetMemberAddress.Filters.Add(DbQuery.BuildBitMappedFilter(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Address_Flags, aliasAssociation_Member_Address), SbmAddress.Flag_Primary, true));
|
|
query.Joins.Add(joinPriceSetMemberAddress);
|
|
// Add the member address columns.
|
|
List<SbmDbDfn.ColumnIdx> addressMemberCols = new List<SbmDbDfn.ColumnIdx>();
|
|
if (columns.HasId(SbmAssociation.Column.Member_Target_Address_Summary) || columns.HasId(SbmAssociation.Column.Member_Target_Address_Line1))
|
|
addressMemberCols.Add(SbmDbDfn.ColumnIdx.Address_Line1);
|
|
if (columns.HasId(SbmAssociation.Column.Member_Target_Address_Summary) || columns.HasId(SbmAssociation.Column.Member_Target_Address_Line2))
|
|
addressMemberCols.Add(SbmDbDfn.ColumnIdx.Address_Line2);
|
|
//addressMemberCols.Add(SbmDbDfn.ColumnIdx.Address_Line3));
|
|
if (columns.HasId(SbmAssociation.Column.Member_Target_Address_Summary) || columns.HasId(SbmAssociation.Column.Member_Target_Address_City))
|
|
addressMemberCols.Add(SbmDbDfn.ColumnIdx.Address_City);
|
|
if (columns.HasId(SbmAssociation.Column.Member_Target_Address_Summary) || columns.HasId(SbmAssociation.Column.Member_Target_Address_Province))
|
|
addressMemberCols.Add(SbmDbDfn.ColumnIdx.Address_Province);
|
|
if (columns.HasId(SbmAssociation.Column.Member_Target_Address_Summary) || columns.HasId(SbmAssociation.Column.Member_Target_Address_Postcode))
|
|
addressMemberCols.Add(SbmDbDfn.ColumnIdx.Address_Postcode);
|
|
if (columns.HasId(SbmAssociation.Column.Member_Target_Address_Summary) || columns.HasId(SbmAssociation.Column.Member_Target_Address_Country))
|
|
addressMemberCols.Add(SbmDbDfn.ColumnIdx.Address_Country);
|
|
//addressMemberCols.Add(SbmDbDfn.ColumnIdx.Address_Contact));
|
|
//addressMemberCols.Add(SbmDbDfn.ColumnIdx.Address_Phone));
|
|
//addressMemberCols.Add(SbmDbDfn.ColumnIdx.Address_Fax));
|
|
//addressMemberCols.Add(SbmDbDfn.ColumnIdx.Address_Email));
|
|
foreach (SbmDbDfn.ColumnIdx dbColumn in addressMemberCols)
|
|
query.Columns.Add(SbmDbDfn.GetColumnNameQual(dbColumn, aliasAssociation_Member_Address), prefixAssociation_Member_Address + SbmDbDfn.GetColumnName(dbColumn, false));
|
|
}
|
|
}
|
|
|
|
//---------------------------------------------------------------
|
|
// Price set.
|
|
bool hasColsPriceSet = false;
|
|
if (!hasColsPriceSet) hasColsPriceSet = columns.HasId(SbmAssociation.Column.PriceSet_Ref);
|
|
if (!hasColsPriceSet) hasColsPriceSet = columns.HasId(SbmAssociation.Column.PriceSet_Type);
|
|
if (!hasColsPriceSet) hasColsPriceSet = columns.HasId(SbmAssociation.Column.PriceSet_TypeDesc);
|
|
if (!hasColsPriceSet) hasColsPriceSet = columns.HasId(SbmAssociation.Column.PriceSet_Name);
|
|
if (hasColsPriceSet)
|
|
{
|
|
// Join to the Price Set.
|
|
prm.Alias_PriceSet = aliasAssociation_PriceSet;
|
|
DbQueryJoin joinPriceSet = new DbQueryJoin(DbJoinType.LeftOuter);
|
|
joinPriceSet.Table = new StringPair(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.SaPriceSet), aliasAssociation_PriceSet);
|
|
joinPriceSet.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.SaPriceSet_Id, aliasAssociation_PriceSet) + "=" + SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_PriceSetId, aliasAssociation));
|
|
query.Joins.Add(joinPriceSet);
|
|
// Add the price set columns.
|
|
List<SbmDbDfn.ColumnIdx> priceSetCols = new List<SbmDbDfn.ColumnIdx>();
|
|
priceSetCols.Add(SbmDbDfn.ColumnIdx.SaPriceSet_Ref);
|
|
priceSetCols.Add(SbmDbDfn.ColumnIdx.SaPriceSet_Type);
|
|
priceSetCols.Add(SbmDbDfn.ColumnIdx.SaPriceSet_Name);
|
|
foreach (SbmDbDfn.ColumnIdx dbColumn in priceSetCols)
|
|
query.Columns.Add(SbmDbDfn.GetColumnNameQual(dbColumn, aliasAssociation_PriceSet), prefixAssociation_PriceSet + SbmDbDfn.GetColumnName(dbColumn, false));
|
|
}
|
|
|
|
//---------------------------------------------------------------
|
|
// Associated codes.
|
|
if (columns.HasId(SbmAssociation.Column.SeasonalCategoryCodes) ||
|
|
columns.HasId(SbmAssociation.Column.SeasonalCategoryCode1) || columns.HasId(SbmAssociation.Column.SeasonalCategoryDesc1) ||
|
|
columns.HasId(SbmAssociation.Column.SeasonalCategoryCode2) || columns.HasId(SbmAssociation.Column.SeasonalCategoryDesc2) ||
|
|
columns.HasId(SbmAssociation.Column.SeasonalCategoryCode3) || columns.HasId(SbmAssociation.Column.SeasonalCategoryDesc3))
|
|
{
|
|
//query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_SeasonalCategoryCodes));
|
|
}
|
|
|
|
//---------------------------------------------------------------
|
|
// Transaction > Sales orders.
|
|
if (columns.HasId(SbmAssociation.Column.Trans_LastSaleRaised))
|
|
{
|
|
// Last sales order opened.
|
|
String aliasAssociation_Transaction = "AssocTrn";
|
|
DbQuery queryTrans = new DbQuery(Database.DbmsType);
|
|
queryTrans.Tables.Add(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Transaction), aliasAssociation_Transaction);
|
|
queryTrans.Columns.Add("MAX(" + SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Transaction_Raised, aliasAssociation_Transaction) + ")");
|
|
queryTrans.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Transaction_AssocId, aliasAssociation_Transaction) + "=" + SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_Id, aliasAssociation));
|
|
queryTrans.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Transaction_Type, aliasAssociation_Transaction) + "=" + ((int)Sbm.TransactionType.SalesOrder).ToString());
|
|
queryTrans.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Transaction_Status, aliasAssociation_Transaction) + "<>'" + StatusCancelled + "'");
|
|
query.Columns.Add("(" + queryTrans.BuildQuery() + ")", colAssociation_LastSaleRaised);
|
|
}
|
|
// Value of Sales Orders.
|
|
if (columns.HasId(SbmAssociation.Column.Trans_SalesValue_Open) && CanViewFinancials)
|
|
{
|
|
// Net open sales order value.
|
|
String aliasAssociation_Transaction = "AssocTrn";
|
|
DbQuery queryTrans = new DbQuery(Database.DbmsType);
|
|
queryTrans.Tables.Add(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Transaction), aliasAssociation_Transaction);
|
|
queryTrans.Columns.Add("MAX(" + SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Transaction_AmountNet, aliasAssociation_Transaction) + ")");
|
|
queryTrans.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Transaction_AssocId, aliasAssociation_Transaction) + "=" + SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_Id, aliasAssociation));
|
|
queryTrans.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Transaction_Type, aliasAssociation_Transaction) + "=" + ((int)Sbm.TransactionType.SalesOrder).ToString());
|
|
queryTrans.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Transaction_StatusCat, aliasAssociation_Transaction) + "<>'" + TransactionStatusCats.GetCodeForType(SbmTransaction.StatusCat.Closed) + "'");
|
|
query.Columns.Add("(" + queryTrans.BuildQuery() + ")", colAssociation_SalesValueOpen);
|
|
}
|
|
if (columns.HasId(SbmAssociation.Column.Trans_SalesValue_Cytd) && CanViewFinancials)
|
|
{
|
|
// Net sales order value closed this calendar year.
|
|
String aliasAssociation_Transaction = "AssocTrn";
|
|
DbQuery queryTrans = new DbQuery(Database.DbmsType);
|
|
queryTrans.Tables.Add(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Transaction), aliasAssociation_Transaction);
|
|
queryTrans.Columns.Add("MAX(" + SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Transaction_AmountNet, aliasAssociation_Transaction) + ")");
|
|
queryTrans.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Transaction_AssocId, aliasAssociation_Transaction) + "=" + SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_Id, aliasAssociation));
|
|
queryTrans.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Transaction_Type, aliasAssociation_Transaction) + "=" + ((int)Sbm.TransactionType.SalesOrder).ToString());
|
|
queryTrans.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Transaction_Status, aliasAssociation_Transaction) + "='" + StatusCompleted + "'");
|
|
queryTrans.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Transaction_Closed, aliasAssociation_Transaction) + ">=" + DbQuery.FormatDateForCondition(new DateTime(DateTime.Today.Year, 1, 1)));
|
|
query.Columns.Add("(" + queryTrans.BuildQuery() + ")", colAssociation_SalesValueCytd);
|
|
}
|
|
if (columns.HasId(SbmAssociation.Column.Trans_SalesValue_Lcy) && CanViewFinancials)
|
|
{
|
|
// Net sales order value closed last calendar year.
|
|
String aliasAssociation_Transaction = "AssocTrn";
|
|
DbQuery queryTrans = new DbQuery(Database.DbmsType);
|
|
queryTrans.Tables.Add(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Transaction), aliasAssociation_Transaction);
|
|
queryTrans.Columns.Add("MAX(" + SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Transaction_AmountNet, aliasAssociation_Transaction) + ")");
|
|
queryTrans.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Transaction_AssocId, aliasAssociation_Transaction) + "=" + SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_Id, aliasAssociation));
|
|
queryTrans.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Transaction_Type, aliasAssociation_Transaction) + "=" + ((int)Sbm.TransactionType.SalesOrder).ToString());
|
|
queryTrans.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Transaction_Status, aliasAssociation_Transaction) + "='" + StatusCompleted + "'");
|
|
queryTrans.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Transaction_Closed, aliasAssociation_Transaction) + ">=" + DbQuery.FormatDateForCondition(new DateTime(DateTime.Today.Year - 1, 1, 1)));
|
|
queryTrans.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Transaction_Closed, aliasAssociation_Transaction) + "<" + DbQuery.FormatDateForCondition(new DateTime(DateTime.Today.Year, 1, 1)));
|
|
query.Columns.Add("(" + queryTrans.BuildQuery() + ")", colAssociation_SalesValueLcy);
|
|
}
|
|
//---------------------------------------------------------------
|
|
// Commodity Customer.
|
|
if (columns.HasId(SbmAssociation.Column.CommodityCount))
|
|
{
|
|
bool validDatabase = false;
|
|
String aliasCommodityAssociation = "aCmdAss";
|
|
SbmDbDfn.TableIdx tableIdx = SbmDbDfn.TableIdx.Unknown;
|
|
SbmDbDfn.ColumnIdx columnIdxAssociationId = SbmDbDfn.ColumnIdx.Unknown;
|
|
if (prm.AssociationType == Sbm.AssociationType.Customer)
|
|
{
|
|
validDatabase = true;// ToDo CommodityMgr.CanManageCommodityCustomers();
|
|
tableIdx = SbmDbDfn.TableIdx.CommodityCustomer;
|
|
columnIdxAssociationId = SbmDbDfn.ColumnIdx.CommodityCustomer_AssocIdCustomer;
|
|
}
|
|
else if (prm.AssociationType == Sbm.AssociationType.Supplier)
|
|
{
|
|
validDatabase = CommodityMgr.CanManageCommoditySuppliers();
|
|
tableIdx = SbmDbDfn.TableIdx.CommoditySupplier;
|
|
columnIdxAssociationId = SbmDbDfn.ColumnIdx.CommoditySupplier_AssocIdSupplier;
|
|
}
|
|
if (validDatabase && tableIdx != SbmDbDfn.TableIdx.Unknown && columnIdxAssociationId != SbmDbDfn.ColumnIdx.Unknown)
|
|
{
|
|
// Number of commodities defined for the association.
|
|
DbQuery qryCmd = new DbQuery(Database.DbmsType);
|
|
qryCmd.Tables.Add(SbmDbDfn.GetTableName(tableIdx), aliasCommodityAssociation);
|
|
qryCmd.Columns.Add("Count(*)");
|
|
qryCmd.Filters.Add(SbmDbDfn.GetColumnNameQual(columnIdxAssociationId, aliasCommodityAssociation) + "=" + SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_Id, aliasAssociation));
|
|
query.Columns.Add("(" + qryCmd.BuildQuery() + ")", colAssociation_CommodityCount);
|
|
}
|
|
}
|
|
|
|
//---------------------------------------------------------------------
|
|
// Populate filter.
|
|
query.Filters.AddRange(GetAssociationQueryFilter(prm));
|
|
|
|
if (prm.IdsIncluded.Count != 1)
|
|
{
|
|
// Configure sort sequence.
|
|
foreach (String sortColumn in GetAssociationSortColumns(prm))
|
|
query.OrderBy.Add(sortColumn);
|
|
}
|
|
|
|
//---------------------------------------------------------------------
|
|
//return new DbResultSet_DataTableReader(Database, query.BuildQuery());
|
|
return DbResultSet_DataReader.ExecuteQuery(Database, query.BuildQuery(prm.ResultsPaging));
|
|
}
|
|
|
|
//-------------------------------------------------------------------
|
|
}
|
|
//=======================================================================
|
|
}
|