|
|
|
@@ -1318,6 +1318,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
|
|
|
|
|
{
|
|
|
|
|
List<String> filter = new List<String>();
|
|
|
|
|
|
|
|
|
|
//---------------------------------------------------------------
|
|
|
|
|
// Association Id.
|
|
|
|
|
String colAssociation_Id = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_Id, aliasAssociation);
|
|
|
|
|
String includedIds = prm.IncludedIds.Concat(",");
|
|
|
|
@@ -1332,6 +1333,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
|
|
|
|
|
if (prm.AssociationType > 0)
|
|
|
|
|
filter.Add(colAssociation_Type + "=" + ((int)prm.AssociationType).ToString());
|
|
|
|
|
|
|
|
|
|
//---------------------------------------------------------------
|
|
|
|
|
// Owner affiliate.
|
|
|
|
|
String colAssociation_AffIdOwner = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_AffIdOwner, aliasAssociation);
|
|
|
|
|
if (SysId.IsValid(prm.AffiliateIdOwner))
|
|
|
|
@@ -1342,13 +1344,8 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
|
|
|
|
|
if (SysId.IsValid(prm.AffiliateIdTarget))
|
|
|
|
|
filter.Add(colAssociation_AffIdTarget + "=" + prm.AffiliateIdTarget.ToString());
|
|
|
|
|
|
|
|
|
|
// Price Set.
|
|
|
|
|
String colAssociation_PriceSetId = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_PriceSetId, aliasAssociation);
|
|
|
|
|
if (SysId.IsValid(prm.PriceSetId))
|
|
|
|
|
filter.Add(colAssociation_PriceSetId + "=" + prm.PriceSetId.ToString());
|
|
|
|
|
|
|
|
|
|
//---------------------------------------------------------------
|
|
|
|
|
// Contact Group:
|
|
|
|
|
// Contact Group.
|
|
|
|
|
if (SysId.IsValid(prm.AffiliateIdContactGroup))
|
|
|
|
|
{
|
|
|
|
|
//Association must also be a member of this contact group.
|
|
|
|
@@ -1368,54 +1365,80 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//---------------------------------------------------------------
|
|
|
|
|
// Affiliate TargetName & Partial TargetName attributes.
|
|
|
|
|
// 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 (!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 name has been specified.
|
|
|
|
|
String tableAffiliate = SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Affiliate);
|
|
|
|
|
String colAffiliate_Id = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Affiliate_Id);
|
|
|
|
|
String colAffiliate_Name = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Affiliate_Name);
|
|
|
|
|
String colAffiliate_FirstName = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Affiliate_FirstName);
|
|
|
|
|
String colAfiliate_LastName = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Affiliate_LastName);
|
|
|
|
|
// Target affiliate alias.
|
|
|
|
|
String aliasAffiliateTarget = StringUtil.OnEmpty(prm.Alias_Affiliate_Target, aliasAssociation_Affiliate_Target);
|
|
|
|
|
|
|
|
|
|
// Clause to identify associations with targets that match the partial name.
|
|
|
|
|
DbQuery queryAffTarget = new DbQuery(db.DbmsType);
|
|
|
|
|
queryAffTarget.Tables.Add(tableAffiliate);
|
|
|
|
|
queryAffTarget.Columns.Add(colAffiliate_Id);
|
|
|
|
|
queryAffTarget.Filters.Add(colAffiliate_Id + "=" + colAssociation_AffIdTarget);
|
|
|
|
|
// 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.FormatForCondition(StringUtil.EmptyOnNull(prm.NameTargetPartial));
|
|
|
|
|
String nameTargetPartial = DbQuery.FormatForLike(StringUtil.EmptyOnNull(prm.NameTargetPartial));
|
|
|
|
|
if (!nameTargetFull.IsEmpty())
|
|
|
|
|
queryAffTarget.Filters.Add(colAffiliate_Name + "='" + nameTargetFull + "' OR " + colAfiliate_LastName + "='" + nameTargetFull + "'");
|
|
|
|
|
affiliateFilter.Add(colAffiliate_Name + "='" + nameTargetFull + "' OR " + colAffiliate_LastName + "='" + nameTargetFull + "'");
|
|
|
|
|
if (!nameTargetPartial.IsEmpty())
|
|
|
|
|
queryAffTarget.Filters.Add(
|
|
|
|
|
DbQuery.FormatFn_Left(colAffiliate_Name, nameTargetPartial.Length) + "='" + nameTargetPartial + "' OR " +
|
|
|
|
|
DbQuery.FormatFn_Left(colAffiliate_FirstName, nameTargetPartial.Length) + "='" + nameTargetPartial + "' OR " +
|
|
|
|
|
DbQuery.FormatFn_Left(colAfiliate_LastName, nameTargetPartial.Length) + "='" + nameTargetPartial + "'");
|
|
|
|
|
filter.Add("EXISTS (" + queryAffTarget.BuildQuery() + ")");
|
|
|
|
|
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(db.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);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//---------------------------------------------------------------
|
|
|
|
|
// Partial Address & Postcode for AddTarget.
|
|
|
|
|
// Target Address & Postcode.
|
|
|
|
|
if (!StringUtil.IsEmpty(prm.AddressPartial) || !StringUtil.IsEmpty(prm.PostcodePartial))
|
|
|
|
|
{
|
|
|
|
|
// Clause to identify associations with target addresses that match the details specified.
|
|
|
|
|
String aliasAddTarget = "aAddTarget";
|
|
|
|
|
DbQuery queryAddTarget = new DbQuery(db.DbmsType);
|
|
|
|
|
String tableAddress = SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Address);
|
|
|
|
|
queryAddTarget.Tables.Add(tableAddress, aliasAddTarget);
|
|
|
|
|
// Target Address alias.
|
|
|
|
|
String aliasAddTarget = StringUtil.OnEmpty(prm.Alias_Address_Target, "aAddTarget");
|
|
|
|
|
|
|
|
|
|
// Target address columns.
|
|
|
|
|
String colAddress_Id = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Address_Id, aliasAddTarget);
|
|
|
|
|
queryAddTarget.Columns.Add(colAddress_Id);
|
|
|
|
|
String colAddress_ItemType = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Address_ItemType, aliasAddTarget);
|
|
|
|
|
queryAddTarget.Filters.Add(colAddress_ItemType + "=" + ((int)Sbm.ItemType.Affiliate).ToString());
|
|
|
|
|
String colAddress_ItemId = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Address_ItemId, aliasAddTarget);
|
|
|
|
|
queryAddTarget.Filters.Add(colAddress_ItemId + "=" + colAssociation_AffIdTarget);
|
|
|
|
|
|
|
|
|
|
// Address filter.
|
|
|
|
|
String addressLike = DbQuery.FormatForLike(StringUtil.EmptyOnNull(prm.AddressPartial));
|
|
|
|
|
if (!StringUtil.IsEmpty(addressLike))
|
|
|
|
|
// 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>()
|
|
|
|
|
{
|
|
|
|
@@ -1427,45 +1450,133 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
|
|
|
|
|
SbmDbDfn.ColumnIdx.Address_Province,
|
|
|
|
|
SbmDbDfn.ColumnIdx.Address_Contact,
|
|
|
|
|
};
|
|
|
|
|
List<String> filterAddress = new List<String>();
|
|
|
|
|
foreach (SbmDbDfn.ColumnIdx addressCol in addressCols)
|
|
|
|
|
filterAddress.Add(SbmDbDfn.GetColumnNameQual(addressCol, aliasAddTarget) + " LIKE '%" + addressLike + "%'");
|
|
|
|
|
queryAddTarget.Filters.Add(filterAddress.Concat(" OR ", "(", ")"));
|
|
|
|
|
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))
|
|
|
|
|
queryAddTarget.Filters.Add(DbQuery.FormatFn_Left(colAddress_PostcodeFmt, prm.PostcodePartial.Length) + "='" + postcodeCond + "'");
|
|
|
|
|
filter.Add("EXISTS (" + queryAddTarget.BuildQuery() + ")");
|
|
|
|
|
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(db.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);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Full & Partial DefaultNominalCode.
|
|
|
|
|
//---------------------------------------------------------------
|
|
|
|
|
// 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 + "%'");
|
|
|
|
|
searchValueFilter.Add(colAssociation_Group + " LIKE '%" + searchValue + "%'");
|
|
|
|
|
|
|
|
|
|
// Target affiliate.
|
|
|
|
|
String aliasAffiliateTarget = StringUtil.OnEmpty(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(db.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.OnEmpty(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(db.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.
|
|
|
|
|
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 + "='" + defaultNominalCodeFull + "'");
|
|
|
|
|
filter.Add(colAssociation_DefaultNominalCode + "='" + DbQuery.FormatForCondition(defaultNominalCodeFull) + "'");
|
|
|
|
|
else if (!defaultNominalCodePartial.IsEmpty())
|
|
|
|
|
filter.Add(DbQuery.FormatFn_Left(colAssociation_DefaultNominalCode, prm.DefaultNominalCodePartial.Length) + "='" + defaultNominalCodePartial + "'");
|
|
|
|
|
filter.Add(DbQuery.FormatFn_Left(colAssociation_DefaultNominalCode, prm.DefaultNominalCodePartial.Length) + " Like '%" + DbQuery.FormatForLike(defaultNominalCodePartial) + "%'");
|
|
|
|
|
|
|
|
|
|
// Full & Partial Code.
|
|
|
|
|
String codeFull = DbQuery.FormatForCondition(StringUtil.EmptyOnNull(prm.Code));
|
|
|
|
|
String codePartial = DbQuery.FormatForCondition(StringUtil.EmptyOnNull(prm.CodePartial));
|
|
|
|
|
String colAssociation_Code = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_Code, aliasAssociation);
|
|
|
|
|
if (!codeFull.IsEmpty())
|
|
|
|
|
filter.Add(colAssociation_Code + "='" + codeFull + "'");
|
|
|
|
|
else if (!codePartial.IsEmpty())
|
|
|
|
|
filter.Add(DbQuery.FormatFn_Left(colAssociation_Code, prm.CodePartial.Length) + "='" + codePartial + "'");
|
|
|
|
|
|
|
|
|
|
// Full & Partial Group.
|
|
|
|
|
String groupFull = DbQuery.FormatForCondition(StringUtil.EmptyOnNull(prm.GroupFull));
|
|
|
|
|
String groupPartial = DbQuery.FormatForCondition(StringUtil.EmptyOnNull(prm.GroupPartial));
|
|
|
|
|
String colAssociation_Group = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_Group, aliasAssociation);
|
|
|
|
|
if (!groupFull.IsEmpty())
|
|
|
|
|
filter.Add(colAssociation_Group + "='" + groupFull + "'");
|
|
|
|
|
else if (!groupPartial.IsEmpty())
|
|
|
|
|
filter.Add(DbQuery.FormatFn_Left(colAssociation_Group, prm.GroupPartial.Length) + "='" + groupPartial + "'");
|
|
|
|
|
//---------------------------------------------------------------
|
|
|
|
|
// 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.
|
|
|
|
@@ -1943,20 +2054,20 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
|
|
|
|
|
query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_UpdateOn, aliasAssociation));
|
|
|
|
|
|
|
|
|
|
//---------------------------------------------------------------
|
|
|
|
|
// Owner affiliate columns
|
|
|
|
|
// Owner affiliate.
|
|
|
|
|
bool hasColsAffOwner = false;
|
|
|
|
|
if (!hasColsAffOwner)
|
|
|
|
|
hasColsAffOwner = columns.HasId((int)SbmAssociation.Column.Owner_Name);
|
|
|
|
|
|
|
|
|
|
bool hasColsAffOwnerAddress = false;
|
|
|
|
|
if (hasColsAffOwner || hasColsAffOwnerAddress)
|
|
|
|
|
{
|
|
|
|
|
// Join to the owner affiliate.
|
|
|
|
|
DbQueryJoin joinPriceSetOwner = new DbQueryJoin(DbJoinType.LeftOuter);
|
|
|
|
|
joinPriceSetOwner.Table = new StringPair(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Affiliate), aliasAssociation_Affiliate_Owner);
|
|
|
|
|
joinPriceSetOwner.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Affiliate_Id, aliasAssociation_Affiliate_Owner) + "=" + SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_AffIdOwner, aliasAssociation));
|
|
|
|
|
query.Joins.Add(joinPriceSetOwner);
|
|
|
|
|
// Add the owner affiliate columns.
|
|
|
|
|
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,
|
|
|
|
@@ -1979,7 +2090,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//---------------------------------------------------------------
|
|
|
|
|
// Target affiliate columns.
|
|
|
|
|
// Target affiliate.
|
|
|
|
|
bool hasColsAffTarget = false;
|
|
|
|
|
if (!hasColsAffTarget) hasColsAffTarget = columns.HasId((int)SbmAssociation.Column.Target_Type) || columns.HasId((int)SbmAssociation.Column.Target_TypeDesc);
|
|
|
|
|
if (!hasColsAffTarget) hasColsAffTarget = columns.HasId((int)SbmAssociation.Column.Target_Name);
|
|
|
|
@@ -2021,10 +2132,11 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
|
|
|
|
|
if (hasColsAffTarget || hasColsAffTargetAddress)
|
|
|
|
|
{
|
|
|
|
|
// Join to the target affiliate - NB Use an alias to avoid clashing with the owner affiliate.
|
|
|
|
|
DbQueryJoin joinPriceSetTarget = new DbQueryJoin(DbJoinType.LeftOuter);
|
|
|
|
|
joinPriceSetTarget.Table = new StringPair(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Affiliate), aliasAssociation_Affiliate_Target);
|
|
|
|
|
joinPriceSetTarget.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Affiliate_Id, aliasAssociation_Affiliate_Target) + "=" + SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_AffIdTarget, aliasAssociation));
|
|
|
|
|
query.Joins.Add(joinPriceSetTarget);
|
|
|
|
|
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);
|
|
|
|
@@ -2053,6 +2165,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
|
|
|
|
|
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.
|
|
|
|
@@ -2174,6 +2287,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
|
|
|
|
|
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));
|
|
|
|
@@ -2215,6 +2329,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
|
|
|
|
|
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));
|
|
|
|
@@ -2254,6 +2369,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
|
|
|
|
|
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));
|
|
|
|
|