This commit is contained in:
Andy Howard
2024-11-19 09:47:00 +00:00
parent c5ee285e27
commit 8b872cc8f3
214 changed files with 7924 additions and 5519 deletions
@@ -468,12 +468,11 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
List<String> filter = new List<String>();
// Address Id.
String includedIds = prm.IncludedIds.Concat(",");
if (!includedIds.IsEmpty())
filter.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Address_Id, aliasAddress) + " IN (" + includedIds + ")");
String excludedIds = prm.ExcludedIds.Concat(",");
if (!excludedIds.IsEmpty())
filter.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Address_Id, aliasAddress) + " NOT IN (" + excludedIds + ")");
String colId = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Address_Id, aliasAddress);
if (prm.IdsIncluded.HasValidIds())
filter.Add($"{colId} IN ({prm.IdsIncluded.Concat(",")})");
if (prm.IdsExcluded.HasValidIds())
filter.Add($"{colId} NOT IN ({prm.IdsExcluded.Concat(",")})");
//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
// Address Type.
@@ -777,7 +776,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
// Populate filter.
query.Filters.AddRange(GetAddressQueryFilter(prm));
if (prm.IncludedIds.Count != 1)
if (prm.IdsIncluded.Count != 1)
{
// Configure sort sequence.
foreach (String sortColumn in GetAddressSortColumns(prm))
@@ -91,7 +91,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
if (!SysId.IsValid(affiliateId)) return "";
// Filter to target specified contact.
SbmAffiliate.Params prmAffiliate = new SbmAffiliate.Params();
prmAffiliate.IncludedIds.Add(affiliateId);
prmAffiliate.IdsIncluded.Add(affiliateId);
prmAffiliate.StatusCat = SbmAffiliate.StatusCat.Any;
if (GetAffiliateCount(prmAffiliate) != 1) return "";
// Columns to query.
@@ -115,7 +115,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
if (!SysId.IsValid(associationIdOwner)) return "";
// Filter to target specified association.
SbmAssociation.Params prmAssociation = new SbmAssociation.Params();
prmAssociation.IncludedIds.Add(associationIdOwner);
prmAssociation.IdsIncluded.Add(associationIdOwner);
prmAssociation.StatusCat = SbmAssociation.StatusCat.Any;
if (GetAssociationCount(prmAssociation) != 1) return "";
// Columns to query.
@@ -139,7 +139,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
if (!SysId.IsValid(associationIdTarget)) return "";
// Filter to target specified association.
SbmAssociation.Params prmAssociation = new SbmAssociation.Params();
prmAssociation.IncludedIds.Add(associationIdTarget);
prmAssociation.IdsIncluded.Add(associationIdTarget);
prmAssociation.StatusCat = SbmAssociation.StatusCat.Any;
if (GetAssociationCount(prmAssociation) != 1) return "";
// Columns to query.
@@ -369,6 +369,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
private static readonly String aliasAffiliate_AddPrim = "Aff_AddPrim";
private static readonly String prefixAffiliate_AddPrim = aliasAffiliate_AddPrim + "_";
private static readonly String colNameAffiliate_GroupMembers = "GroupMembers";
private static readonly String colNameAffiliate_AssociationCount = "AssocCount";
// Column definition population.
private void SetAffiliateColDfn
@@ -501,6 +502,10 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
SetAffiliateColDfn(columnDfn, "Members", 90, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right);
columnDfn.DataName = colNameAffiliate_GroupMembers;
break;
case SbmAffiliate.Column.Association_Count:
SetAffiliateColDfn(columnDfn, "Associations", 90, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right);
columnDfn.DataName = colNameAffiliate_AssociationCount;
break;
//-----------------------------------------------------------------
// Common properties.
@@ -539,31 +544,29 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
{
List<String> filter = new List<String>();
// Affiliate Id.
// Item Id.
String colAffiliate_Id = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Affiliate_Id, aliasAffiliate);
String includedIds = prm.IncludedIds.Concat(",");
if (!includedIds.IsEmpty())
filter.Add(colAffiliate_Id + " IN (" + includedIds + ")");
String excludedIds = prm.ExcludedIds.Concat(",");
if (!excludedIds.IsEmpty())
filter.Add(colAffiliate_Id + " NOT IN (" + excludedIds + ")");
if (prm.IdsIncluded.HasValidIds())
filter.Add($"{colAffiliate_Id} IN ({prm.IdsIncluded.Concat(",")})");
if (prm.IdsExcluded.HasValidIds() )
filter.Add($"{colAffiliate_Id} NOT IN ({prm.IdsExcluded.Concat(",")})");
// Type.
String colAffiliate_Type = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Affiliate_Type, aliasAffiliate);
// Affiliate type - Individual.
if (prm.AffiliateType == Sbm.AffiliateType.AnyOrganisation)
filter.Add(colAffiliate_Type + "<>" + ((int)Sbm.AffiliateType.Individual).ToString());
filter.Add($"{colAffiliate_Type}<>{(int)Sbm.AffiliateType.Individual}");
// Affiliate type - ContactGroup.
else if (prm.AffiliateType == Sbm.AffiliateType.AnyContact)
filter.Add(colAffiliate_Type + "<>" + ((int)Sbm.AffiliateType.ContactGroup).ToString());
filter.Add($"{colAffiliate_Type}<>{(int)Sbm.AffiliateType.ContactGroup}");
// Affiliate type.
else if (prm.AffiliateType != Sbm.AffiliateType.Any && prm.AffiliateType != Sbm.AffiliateType.Unknown)
filter.Add(colAffiliate_Type + "=" + ((int)prm.AffiliateType).ToString());
filter.Add($"{colAffiliate_Type}={(int)prm.AffiliateType}");
// Parent Id?
// Parent Id.
String colAffiliate_AffIdParent = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Affiliate_AffIdParent, aliasAffiliate);
if (SysId.IsValid(prm.AffiliateIdParent))
filter.Add(colAffiliate_AffIdParent + "=" + SysId.ToString(prm.AffiliateIdParent));
filter.Add($"{colAffiliate_AffIdParent}={SysId.ToString(prm.AffiliateIdParent)}");
//---------------------------------------------------------------
// Common columns.
@@ -912,67 +915,67 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
query.Tables.Add(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Affiliate), aliasAffiliate);
// Affiliate Properties - add columns as defined in query list.
if (columns.HasId((int)SbmAffiliate.Column.Id))
if (columns.HasId(SbmAffiliate.Column.Id))
query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Affiliate_Id, aliasAffiliate));
if (columns.HasId((int)SbmAffiliate.Column.Type) || columns.HasId((int)SbmAffiliate.Column.Type_Code) || columns.HasId((int)SbmAffiliate.Column.Type_Desc))
if (columns.HasId(SbmAffiliate.Column.Type) || columns.HasId(SbmAffiliate.Column.Type_Code) || columns.HasId(SbmAffiliate.Column.Type_Desc))
query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Affiliate_Type, aliasAffiliate));
if (columns.HasId((int)SbmAffiliate.Column.Name))
if (columns.HasId(SbmAffiliate.Column.Name))
query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Affiliate_Name, aliasAffiliate));
if (columns.HasId((int)SbmAffiliate.Column.Abbrev))
if (columns.HasId(SbmAffiliate.Column.Abbrev))
query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Affiliate_Abbrev, aliasAffiliate));
if (columns.HasId((int)SbmAffiliate.Column.Title))
if (columns.HasId(SbmAffiliate.Column.Title))
query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Affiliate_Title, aliasAffiliate));
if (columns.HasId((int)SbmAffiliate.Column.Initials))
if (columns.HasId(SbmAffiliate.Column.Initials))
query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Affiliate_Initials, aliasAffiliate));
if (columns.HasId((int)SbmAffiliate.Column.LastName))
if (columns.HasId(SbmAffiliate.Column.LastName))
query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Affiliate_LastName, aliasAffiliate));
if (columns.HasId((int)SbmAffiliate.Column.FirstName))
if (columns.HasId(SbmAffiliate.Column.FirstName))
query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Affiliate_FirstName, aliasAffiliate));
if (columns.HasId((int)SbmAffiliate.Column.Salutation))
if (columns.HasId(SbmAffiliate.Column.Salutation))
query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Affiliate_Salutation, aliasAffiliate));
if (columns.HasId((int)SbmAffiliate.Column.Nature))
if (columns.HasId(SbmAffiliate.Column.Nature))
query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Affiliate_Nature, aliasAffiliate));
if (columns.HasId((int)SbmAffiliate.Column.CompanyNo))
if (columns.HasId(SbmAffiliate.Column.CompanyNo))
query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Affiliate_CompanyNo, aliasAffiliate));
if (columns.HasId((int)SbmAffiliate.Column.VatReg))
if (columns.HasId(SbmAffiliate.Column.VatReg))
query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Affiliate_VatReg, aliasAffiliate));
if (columns.HasId((int)SbmAffiliate.Column.Contact))
if (columns.HasId(SbmAffiliate.Column.Contact))
query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Affiliate_Contact, aliasAffiliate));
if (columns.HasId((int)SbmAffiliate.Column.PhoneMain))
if (columns.HasId(SbmAffiliate.Column.PhoneMain))
query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Affiliate_PhoneMain, aliasAffiliate));
if (columns.HasId((int)SbmAffiliate.Column.PhoneAlt))
if (columns.HasId(SbmAffiliate.Column.PhoneAlt))
query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Affiliate_PhoneAlt, aliasAffiliate));
if (columns.HasId((int)SbmAffiliate.Column.PhoneDirect))
if (columns.HasId(SbmAffiliate.Column.PhoneDirect))
query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Affiliate_PhoneDirect, aliasAffiliate));
if (columns.HasId((int)SbmAffiliate.Column.PhoneFax))
if (columns.HasId(SbmAffiliate.Column.PhoneFax))
query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Affiliate_PhoneFax, aliasAffiliate));
if (columns.HasId((int)SbmAffiliate.Column.PhoneMobile))
if (columns.HasId(SbmAffiliate.Column.PhoneMobile))
query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Affiliate_PhoneMobile, aliasAffiliate));
if (columns.HasId((int)SbmAffiliate.Column.Email))
if (columns.HasId(SbmAffiliate.Column.Email))
query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Affiliate_Email, aliasAffiliate));
if (columns.HasId((int)SbmAffiliate.Column.Website))
if (columns.HasId(SbmAffiliate.Column.Website))
query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Affiliate_Website, aliasAffiliate));
// Common Properties
if (columns.HasId((int)SbmAffiliate.Column.Notes))
if (columns.HasId(SbmAffiliate.Column.Notes))
query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Affiliate_Notes, aliasAffiliate));
if (columns.HasId((int)SbmAffiliate.Column.Status) || columns.HasId((int)SbmAffiliate.Column.Status_Desc) || columns.HasId((int)SbmAffiliate.Column.Status_Ind))
if (columns.HasId(SbmAffiliate.Column.Status) || columns.HasId(SbmAffiliate.Column.Status_Desc) || columns.HasId(SbmAffiliate.Column.Status_Ind))
query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Affiliate_Status, aliasAffiliate));
if (columns.HasId((int)SbmAffiliate.Column.CreateOn_Date))
if (columns.HasId(SbmAffiliate.Column.CreateOn_Date))
query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Affiliate_CreateOn, aliasAffiliate));
if (columns.HasId((int)SbmAffiliate.Column.UpdateOn_Date))
if (columns.HasId(SbmAffiliate.Column.UpdateOn_Date))
query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Affiliate_UpdateOn, aliasAffiliate));
//---------------------------------------------------------------
// Primary address.
bool hasColsAddPrim = false;
if (!hasColsAddPrim) hasColsAddPrim = columns.HasId((int)SbmAffiliate.Column.Address_Summary);
if (!hasColsAddPrim) hasColsAddPrim = columns.HasId((int)SbmAffiliate.Column.Address_Line1);
if (!hasColsAddPrim) hasColsAddPrim = columns.HasId((int)SbmAffiliate.Column.Address_Line2);
if (!hasColsAddPrim) hasColsAddPrim = columns.HasId((int)SbmAffiliate.Column.Address_Line3);
if (!hasColsAddPrim) hasColsAddPrim = columns.HasId((int)SbmAffiliate.Column.Address_City);
if (!hasColsAddPrim) hasColsAddPrim = columns.HasId((int)SbmAffiliate.Column.Address_Province);
if (!hasColsAddPrim) hasColsAddPrim = columns.HasId((int)SbmAffiliate.Column.Address_Postcode);
if (!hasColsAddPrim) hasColsAddPrim = columns.HasId((int)SbmAffiliate.Column.Address_Country);
if (!hasColsAddPrim) hasColsAddPrim = columns.HasId(SbmAffiliate.Column.Address_Summary);
if (!hasColsAddPrim) hasColsAddPrim = columns.HasId(SbmAffiliate.Column.Address_Line1);
if (!hasColsAddPrim) hasColsAddPrim = columns.HasId(SbmAffiliate.Column.Address_Line2);
if (!hasColsAddPrim) hasColsAddPrim = columns.HasId(SbmAffiliate.Column.Address_Line3);
if (!hasColsAddPrim) hasColsAddPrim = columns.HasId(SbmAffiliate.Column.Address_City);
if (!hasColsAddPrim) hasColsAddPrim = columns.HasId(SbmAffiliate.Column.Address_Province);
if (!hasColsAddPrim) hasColsAddPrim = columns.HasId(SbmAffiliate.Column.Address_Postcode);
if (!hasColsAddPrim) hasColsAddPrim = columns.HasId(SbmAffiliate.Column.Address_Country);
if (hasColsAddPrim)
{
// Sub-query to identify primary address with lowest Id for each affiliate.
@@ -1020,9 +1023,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
}
//---------------------------------------------------------------
bool hasColsGrpMembers = false;
if (!hasColsGrpMembers) hasColsGrpMembers = columns.HasId((int)SbmAffiliate.Column.GroupMembers);
if (hasColsGrpMembers)
if (columns.HasId(SbmAffiliate.Column.GroupMembers))
{
// Count group members.
String aliasAffiliate_GroupMembers = "AffGrpMembers";
@@ -1035,11 +1036,24 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
query.Columns.Add("(" + qryGrpMembers.BuildQuery() + ")", colNameAffiliate_GroupMembers);
}
//---------------------------------------------------------------
if (columns.HasId(SbmAffiliate.Column.Association_Count))
{
// Count active associations.
String aliasAffiliate_Associations = "AffAssocs";
DbQuery qryAssocs = new DbQuery(db.DbmsType);
qryAssocs.Tables.Add((SbmDbDfn.TableIdx.Association).ToString(), aliasAffiliate_Associations);
qryAssocs.Columns.Add("Count(*)");
qryAssocs.Filters.Add($"{SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_AffIdOwner, aliasAffiliate_Associations)}={SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Affiliate_Id, aliasAffiliate)}");
qryAssocs.Filters.Add($"{SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_Status, aliasAffiliate_Associations)}='{StatusCurrent}'");
query.Columns.Add("(" + qryAssocs.BuildQuery() + ")", colNameAffiliate_AssociationCount);
}
//---------------------------------------------------------------
// Populate filter.
query.Filters.AddRange(GetAffiliateQueryFilter(prm));
if (prm.IncludedIds.Count != 1)
if (prm.IdsIncluded.Count != 1)
{
// Configure sort sequence.
foreach (String sortColumn in GetAffiliateSortColumns(prm))
@@ -14,6 +14,7 @@ using System;
using System.Collections.Generic;
using System.Data.Common;
using System.Linq;
using static Sarand.BusinessMgr.Net.Standard.Base.App.Sbm;
namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
{
@@ -279,7 +280,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
if (!SysId.IsValid(associationId)) return null;
// Filter to target specified association.
SbmAssociation.Params prmAssociation = new SbmAssociation.Params();
prmAssociation.IncludedIds.Add(associationId);
prmAssociation.IdsIncluded.Add(associationId);
prmAssociation.StatusCat = SbmAssociation.StatusCat.Any;
if (GetAssociationCount(prmAssociation) != 1) return null;
// Columns to query.
@@ -303,7 +304,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
if (!SysId.IsValid(associationId)) return "";
// Filter to target specified association.
SbmAssociation.Params prmAssociation = new SbmAssociation.Params();
prmAssociation.IncludedIds.Add(associationId);
prmAssociation.IdsIncluded.Add(associationId);
prmAssociation.StatusCat = SbmAssociation.StatusCat.Any;
if (GetAssociationCount(prmAssociation) != 1) return "";
// Columns to query.
@@ -1320,10 +1321,10 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
//---------------------------------------------------------------
// Association Id.
String colAssociation_Id = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_Id, aliasAssociation);
String includedIds = prm.IncludedIds.Concat(",");
String includedIds = prm.IdsIncluded.Concat(",");
if (!includedIds.IsEmpty())
filter.Add(colAssociation_Id + " IN (" + includedIds + ")");
String excludedIds = prm.ExcludedIds.Concat(",");
String excludedIds = prm.IdsExcluded.Concat(",");
if (!excludedIds.IsEmpty())
filter.Add(colAssociation_Id + " NOT IN (" + excludedIds + ")");
@@ -1331,6 +1332,8 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
String colAssociation_Type = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_Type, aliasAssociation);
if (prm.AssociationType > 0)
filter.Add(colAssociation_Type + "=" + ((int)prm.AssociationType).ToString());
else if (prm.AssociationType == AssociationType.NotInternal)
filter.Add(colAssociation_Type + "!=" + ((int)Sbm.AssociationType.Internal).ToString());
//---------------------------------------------------------------
// Owner affiliate.
@@ -1383,7 +1386,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
if (!prm.NameTargetFull.IsEmpty() || !prm.NameTargetPartial.IsEmpty())
{
// Target affiliate alias.
String aliasAffiliateTarget = StringUtil.OnEmpty(prm.Alias_Affiliate_Target, aliasAssociation_Affiliate_Target);
String aliasAffiliateTarget = StringUtil.OnBlank(prm.Alias_Affiliate_Target, aliasAssociation_Affiliate_Target);
// Target affiliate columns.
String colAffiliate_Id = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Affiliate_Id, aliasAffiliateTarget);
@@ -1427,7 +1430,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
if (!StringUtil.IsEmpty(prm.AddressPartial) || !StringUtil.IsEmpty(prm.PostcodePartial))
{
// Target Address alias.
String aliasAddTarget = StringUtil.OnEmpty(prm.Alias_Address_Target, "aAddTarget");
String aliasAddTarget = StringUtil.OnBlank(prm.Alias_Address_Target, "aAddTarget");
// Target address columns.
String colAddress_Id = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Address_Id, aliasAddTarget);
@@ -1494,7 +1497,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
searchValueFilter.Add(colAssociation_Group + " LIKE '%" + searchValue + "%'");
// Target affiliate.
String aliasAffiliateTarget = StringUtil.OnEmpty(prm.Alias_Affiliate_Target, aliasAssociation_Affiliate_Target);
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>();
@@ -1518,7 +1521,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
}
// Target address.
String aliasAddTarget = StringUtil.OnEmpty(prm.Alias_Address_Target, "aAddTarget");
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);
@@ -1744,9 +1747,9 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
//---------------------------------------------------------------
// Transactions.
if (prm.TransactionStatusCat != SbmTransaction.StatusCat.Any || prm.TransActiveFrom.IsValid() || prm.TransActiveTo.IsValid())
if (prm.TransactionStatusCat != SbmTransaction.StatusCat.Any || prm.TransactionType > 0 || prm.TransactionActiveFrom.IsValid() || prm.TransactionActiveTo.IsValid())
{
List<String> filterTransStatus = new List<String>();
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(db.DbmsType);
@@ -1755,26 +1758,33 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
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.TransActiveFrom.IsValid() || prm.TransActiveTo.IsValid())
if (prm.TransactionActiveFrom.IsValid() || prm.TransactionActiveTo.IsValid())
{
// Transaction must have an 'In Progress' date.
filterTransStatus.Add(colTransaction_InProgress + " IS NOT NULL");
filterTransStatus.Add(colTransaction_InProgress + ">" + DbQuery.FormatDateForCondition(dateTime));
filterTrans.Add($"{colTransaction_InProgress} IS NOT NULL");
filterTrans.Add($"{colTransaction_InProgress}>{DbQuery.FormatDateForCondition(dateTime)}");
// Transaction must not be cancelled.
filterTransStatus.Add(colTransaction_Status + "<>'" + StatusCancelled + "'");
if (prm.TransActiveFrom.IsValid())
filterTrans.Add($"{colTransaction_Status}<>'{StatusCancelled}'");
if (prm.TransactionActiveFrom.IsValid())
{
// Transaction's 'Closed' date must not be earlier than the 'From' date.
filterTransStatus.Add(
filterTrans.Add(
colTransaction_Closed + " IS NULL OR " + colTransaction_Closed + "=" +
DbQuery.FormatForCondition(dateTime.ToString()) + " OR " + colTransaction_Closed + ">=" +
DbQuery.FormatForCondition(prm.TransActiveFrom.ToString()));
DbQuery.FormatForCondition(prm.TransactionActiveFrom.ToString()));
}
if (prm.TransActiveTo.IsValid())
if (prm.TransactionActiveTo.IsValid())
{
// Transaction's 'In Progress' date must not be later than the 'To' date.
filterTransStatus.Add(colTransaction_InProgress + "<" + DbQuery.FormatDateForCondition(DateUtil.IncrementDate(prm.TransActiveTo, 1)));
filterTrans.Add(colTransaction_InProgress + "<" + DbQuery.FormatDateForCondition(DateUtil.IncrementDate(prm.TransactionActiveTo, 1)));
}
}
// Check whether a Transaction status has been specified:
@@ -1782,22 +1792,22 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
String transtatuscatOpen = TransactionStatusCats.GetCodeForType(SbmTransaction.StatusCat.Open);
String transtatuscatClosed = TransactionStatusCats.GetCodeForType(SbmTransaction.StatusCat.Closed);
if (prm.TransactionStatusCat == SbmTransaction.StatusCat.NotDeleted)
filterTransStatus.Add(colTransaction_Status + "<>'" + StatusDeleted + "'");
filterTrans.Add(colTransaction_Status + "<>'" + StatusDeleted + "'");
else if (prm.TransactionStatusCat == SbmTransaction.StatusCat.Completed)
filterTransStatus.Add(colTransaction_Status + "='" + TransactionStatusCats.GetCodeForType(SbmTransaction.StatusCat.Completed) + "'");
filterTrans.Add(colTransaction_Status + "='" + TransactionStatusCats.GetCodeForType(SbmTransaction.StatusCat.Completed) + "'");
else if (prm.TransactionStatusCat == SbmTransaction.StatusCat.NotClosed)
filterTransStatus.Add(colTransaction_StatusCat + "<>'" + TransactionStatusCats.GetCodeForType(SbmTransaction.StatusCat.Closed) + "'");
filterTrans.Add(colTransaction_StatusCat + "<>'" + TransactionStatusCats.GetCodeForType(SbmTransaction.StatusCat.Closed) + "'");
else if (prm.TransactionStatusCat == SbmTransaction.StatusCat.NotCancelled)
filterTransStatus.Add(colTransaction_Status + "<>'" + StatusCancelled + "'");
filterTrans.Add(colTransaction_Status + "<>'" + StatusCancelled + "'");
else if (!StringUtil.IsEmpty(TransactionStatusCats.GetCodeForType(prm.TransactionStatusCat)))
filterTransStatus.Add(colTransaction_StatusCat + "='" + TransactionStatusCats.GetCodeForType(prm.TransactionStatusCat) + "'");
filterTransStatus.RemoveDuplicatesCI();
if (!filterTransStatus.IsEmpty())
filterTrans.Add(colTransaction_StatusCat + "='" + TransactionStatusCats.GetCodeForType(prm.TransactionStatusCat) + "'");
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(filterTransStatus);
qryTrans.Filters.AddRange(filterTrans);
filter.Add("EXISTS (" + qryTrans.BuildQuery() + ")");
}
}
@@ -1980,7 +1990,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_PhoneMain, aliasAssociation));
if (columns.HasId((int)SbmAssociation.Column.Email))
query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_Email, aliasAssociation));
if (columns.HasId((int)SbmAssociation.Column.Group))
if (columns.HasId((int)SbmAssociation.Column.Group) && ColumnExists(SbmDbDfn.ColumnIdx.Association_Group))
query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_Group, aliasAssociation, true));
if (columns.HasId((int)SbmAssociation.Column.DescDetail))
query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_DescDetail, aliasAssociation));
@@ -2483,7 +2493,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
// Populate filter.
query.Filters.AddRange(GetAssociationQueryFilter(prm));
if (prm.IncludedIds.Count != 1)
if (prm.IdsIncluded.Count != 1)
{
// Configure sort sequence.
foreach (String sortColumn in GetAssociationSortColumns(prm))
@@ -329,11 +329,11 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
List<String> filter = new List<String>();
// Param Id.
String includedIds = prm.IncludedIds.Concat(",");
String includedIds = prm.IdsIncluded.Concat(",");
String colSysParam_Id = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.SysParam_Id, aliasSysParam);
if (!includedIds.IsEmpty())
filter.Add(colSysParam_Id + " IN (" + includedIds + ")");
String excludedIds = prm.ExcludedIds.Concat(",");
String excludedIds = prm.IdsExcluded.Concat(",");
if (!excludedIds.IsEmpty())
filter.Add(colSysParam_Id + " NOT IN (" + excludedIds + ")");
@@ -504,7 +504,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
// Populate filter.
query.Filters.AddRange(GetSysParamQueryFilter(prm));
if (prm.IncludedIds.Count != 1)
if (prm.IdsIncluded.Count != 1)
{
// Configure sort sequence.
foreach (String sortColumn in GetSysParamSortColumns(prm))
@@ -355,11 +355,11 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
List<String> filter = new List<String>();
// SystemAccount Id.
String includedIds = prm.IncludedIds.Concat(",");
String includedIds = prm.IdsIncluded.Concat(",");
String colSystemAccount_Id = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.SystemAccount_Id, aliasSystemAccount);
if (!includedIds.IsEmpty())
filter.Add(colSystemAccount_Id + " IN (" + includedIds + ")");
String excludedIds = prm.ExcludedIds.Concat(",");
String excludedIds = prm.IdsExcluded.Concat(",");
if (!excludedIds.IsEmpty())
filter.Add(colSystemAccount_Id + " NOT IN (" + excludedIds + ")");
@@ -583,7 +583,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
// Populate filter.
query.Filters.AddRange(GetSystemAccountQueryFilter(prm));
if (prm.IncludedIds.Count != 1)
if (prm.IdsIncluded.Count != 1)
{
// Configure sort sequence.
foreach (String sortColumn in GetSystemAccountSortColumns(prm))
@@ -340,11 +340,11 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
List<String> filter = new List<String>();
// SystemAccountUser Id.
String includedIds = prm.IncludedIds.Concat(",");
String includedIds = prm.IdsIncluded.Concat(",");
String colSystemAccountUser_Id = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.SystemAccountUser_AccountId, aliasSystemAccountUser);
if (!includedIds.IsEmpty())
filter.Add(colSystemAccountUser_Id + " IN (" + includedIds + ")");
String excludedIds = prm.ExcludedIds.Concat(",");
String excludedIds = prm.IdsExcluded.Concat(",");
if (!excludedIds.IsEmpty())
filter.Add(colSystemAccountUser_Id + " NOT IN (" + excludedIds + ")");
@@ -581,7 +581,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
// Populate filter.
query.Filters.AddRange(GetSystemAccountUserQueryFilter(prm));
if (prm.IncludedIds.Count != 1)
if (prm.IdsIncluded.Count != 1)
{
// Configure sort sequence.
foreach (String sortColumn in GetSystemAccountUserSortColumns(prm))
@@ -348,11 +348,11 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
List<String> filter = new List<String>();
// SystemUser Id.
String includedIds = prm.IncludedIds.Concat(",");
String includedIds = prm.IdsIncluded.Concat(",");
String colSystemUser_Id = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.SystemUser_Id, aliasSystemUser);
if (!includedIds.IsEmpty())
filter.Add(colSystemUser_Id + " IN (" + includedIds + ")");
String excludedIds = prm.ExcludedIds.Concat(",");
String excludedIds = prm.IdsExcluded.Concat(",");
if (!excludedIds.IsEmpty())
filter.Add(colSystemUser_Id + " NOT IN (" + excludedIds + ")");
@@ -562,7 +562,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
// Populate filter.
query.Filters.AddRange(GetSystemUserQueryFilter(prm));
if (prm.IncludedIds.Count != 1)
if (prm.IdsIncluded.Count != 1)
{
// Configure sort sequence.
foreach (String sortColumn in GetSystemUserSortColumns(prm))
@@ -473,11 +473,11 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
List<String> filter = new List<String>();
// Asset Id.
String includedIds = prm.IncludedIds.Concat(",");
String includedIds = prm.IdsIncluded.Concat(",");
String colAsset_Id = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.SaAsset_Id, aliasAsset);
if (!includedIds.IsEmpty())
filter.Add($"{colAsset_Id} IN ({includedIds})");
String excludedIds = prm.ExcludedIds.Concat(",");
String excludedIds = prm.IdsExcluded.Concat(",");
if (!excludedIds.IsEmpty())
filter.Add($"{colAsset_Id} NOT IN ({excludedIds})");
@@ -792,7 +792,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
// Populate filter.
query.Filters.AddRange(GetAssetQueryFilter(prm));
if (prm.IncludedIds.Count != 1)
if (prm.IdsIncluded.Count != 1)
{
// Configure sort sequence.
foreach (String sortColumn in GetAssetSortColumns(prm))
@@ -56,7 +56,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
String filter = GetAssetCategoryQueryFilter(prm).Concat(" AND ", "(", ")");
db.GetRowCount(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.SaAssetCategory), /*SbmDbDfn.GetColumnName(SbmDbDfn.ColumnIdx.SaAssetCategory_Id), 0,*/ filter);
}
else SetErrorState(db.ErrorState.ToString());
else SetErrorState(db.ErrorStateMessage);
}
return false;
}
@@ -337,11 +337,11 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
List<String> filter = new List<String>();
// AssetProcess Id.
String includedIds = prm.IncludedIds.Concat(",");
String includedIds = prm.IdsIncluded.Concat(",");
String colAssetProcess_Id = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.SaAssetProcess_Id, aliasAssetProcess);
if (!includedIds.IsEmpty())
filter.Add($"{colAssetProcess_Id} IN ({includedIds})");
String excludedIds = prm.ExcludedIds.Concat(",");
String excludedIds = prm.IdsExcluded.Concat(",");
if (!excludedIds.IsEmpty())
filter.Add($"{colAssetProcess_Id} NOT IN ({excludedIds})");
@@ -475,7 +475,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
// Populate filter.
query.Filters.AddRange(GetAssetProcessQueryFilter(prm));
if (prm.IncludedIds.Count != 1)
if (prm.IdsIncluded.Count != 1)
{
// Configure sort sequence.
foreach (String sortColumn in GetAssetProcessSortColumns(prm))
@@ -493,11 +493,11 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
List<String> filter = new List<String>();
// Vehicle Id.
String includedIds = prm.IncludedIds.Concat(",");
String includedIds = prm.IdsIncluded.Concat(",");
String colVehicle_Id = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.SaVehicle_Id, aliasVehicle);
if (!StringUtil.IsEmpty(includedIds))
filter.Add($"{colVehicle_Id} IN ({includedIds})");
String excludedIds = prm.ExcludedIds.Concat(",");
String excludedIds = prm.IdsExcluded.Concat(",");
if (!StringUtil.IsEmpty(excludedIds))
filter.Add($"{colVehicle_Id} NOT IN ({excludedIds})");
//---------------------------------------------------------------
@@ -780,7 +780,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
// Populate filter.
query.Filters.AddRange(GetVehicleQueryFilter(prm));
if (prm.IncludedIds.Count != 1)
if (prm.IdsIncluded.Count != 1)
{
// Configure sort sequence.
foreach (String sortColumn in GetVehicleSortColumns(prm))
@@ -395,11 +395,11 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
List<String> filter = new List<String>();
// VehicleEvent Id.
String includedIds = prm.IncludedIds.Concat(",");
String includedIds = prm.IdsIncluded.Concat(",");
String colVehicleEvent_Id = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.SaVehicleEvent_Id, aliasVehicleEvent);
if (!includedIds.IsEmpty())
filter.Add(colVehicleEvent_Id + " IN (" + includedIds + ")");
String excludedIds = prm.ExcludedIds.Concat(",");
String excludedIds = prm.IdsExcluded.Concat(",");
if (!excludedIds.IsEmpty())
filter.Add(colVehicleEvent_Id + " NOT IN (" + excludedIds + ")");
// Vehicle:
@@ -582,7 +582,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
// Populate filter.
query.Filters.AddRange(GetVehicleEventQueryFilter(prm));
if (prm.IncludedIds.Count != 1)
if (prm.IdsIncluded.Count != 1)
{
// Configure sort sequence.
foreach (String sortColumn in GetVehicleEventSortColumns(prm))
@@ -61,7 +61,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
if (UpdateVehicleFeature(vehicleFeature, dbUpdateInfo))
{
vehicleFeature.AcceptChanges();
// Unable to process vehicle feature events - features do not have a system Id: pCon > configConsole?
// Unable to process vehicle feature events - features do not have a system Id: pCon > sessionConsole?
//if (pCon) pCon->OnItemEvent(eSapItemEvent_Update,eSapItemTypeVehicleFeature,vehicleFeature.Id());
return true;
}
@@ -84,7 +84,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
if (InsertVehicleFeature(vehicleFeature, dbUpdateInfo))
{
vehicleFeature.AcceptChanges();
// Unable to process vehicle feature events - features do not have a system Id: pCon > configConsole?
// Unable to process vehicle feature events - features do not have a system Id: pCon > sessionConsole?
//if (pCon) pCon->OnItemEvent(eSapItemEvent_Create,eSapItemTypeVehicleFeature,vehicleFeature.Id());
return true;
}
@@ -449,11 +449,11 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
List<String> filter = new List<String>();
// Id.
String includedIds = prm.IncludedIds.Concat(",");
String includedIds = prm.IdsIncluded.Concat(",");
String colVehicleFeature_Id = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.SaVehicleFeature_VehicleId, aliasVehicleFeature);
if (!StringUtil.IsEmpty(includedIds))
filter.Add(colVehicleFeature_Id + " IN (" + includedIds + ")");
String excludedIds = prm.ExcludedIds.Concat(",");
String excludedIds = prm.IdsExcluded.Concat(",");
if (!StringUtil.IsEmpty(excludedIds))
filter.Add(colVehicleFeature_Id + " NOT IN (" + excludedIds + ")");
// Vehicle.
@@ -619,7 +619,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
// Populate filter.
query.Filters.AddRange(GetVehicleFeatureQueryFilter(prm));
if (prm.IncludedIds.Count != 1)
if (prm.IdsIncluded.Count != 1)
{
// Configure sort sequence.
foreach (String sortColumn in GetVehicleFeatureSortColumns(prm))
@@ -0,0 +1,332 @@
using Sarand.BusinessMgr.Net.Standard.Base.App;
using Sarand.BusinessMgr.Net.Standard.Base.Bus;
using Sarand.BusinessMgr.Net.Standard.Dbas.Internal;
using Sarand.Net.Standard.Base.Bus;
using Sarand.Net.Standard.Base.Core;
using Sarand.Net.Standard.Base.Dbas;
using Sarand.Net.Standard.Base.Interfaces;
using Sarand.Net.Standard.Base.ItemDocs;
using Sarand.Net.Standard.Base.Utils;
using Sarand.Net.Standard.Dbas.Base;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
{
//=======================================================================
// Commodity Manager - Commodity - Utils.
//=======================================================================
partial class SbmCommodityMgr_Dbas
{
//-------------------------------------------------------------------
// Commodity Associated data.
public override bool CommodityHasProcesses(SysId commodityId)
{
ClearErrorState();
if (!SysId.IsValid(commodityId)) return SetErrorState("invalid item");
return ProcessMgr.HasItemProcesses(Sbm.ItemType.Commodity, commodityId);
}
public override bool CommodityHasRequirements(SysId commodityId)
{
ClearErrorState();
if (!SysId.IsValid(commodityId)) return false;
String tableRequirement = SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Requirement);
String filter = $"{SbmDbDfn.GetColumnName(SbmDbDfn.ColumnIdx.Requirement_CommodityId)}={commodityId.ToString()}";
return Database.GetRowCount(tableRequirement, filter) > 0;
}
public override bool CommodityIsSalesBudgetTemplate(SysId commodityId)
{
ClearErrorState();
if (!SysId.IsValid(commodityId)) return false;
String tableCommodity = SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Commodity);
String filter = $"{SbmDbDfn.GetColumnName(SbmDbDfn.ColumnIdx.Commodity_CommodityIdSalesProj)}={commodityId.ToString()}";
return Database.GetRowCount(tableCommodity, filter) > 0;
}
public override bool CommodityHasComponents(SysId commodityId)
{
ClearErrorState();
return false;
}
public override bool CommodityHasPortfolioItems(SysId commodityId)
{
ClearErrorState();
if (!SysId.IsValid(commodityId)) return false;
String tablePortfolioItem = SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.PortfolioItem);
if (Database.TableExists(tablePortfolioItem))
{
String colPortfolioItem_Id = SbmDbDfn.GetColumnName(SbmDbDfn.ColumnIdx.PortfolioItem_Id);
List<String> filters = new List<String>();
filters.Add($"{SbmDbDfn.GetColumnName(SbmDbDfn.ColumnIdx.PortfolioItem_CommodityId)}={commodityId.ToString()}");
return Database.GetRowCount(tablePortfolioItem, filters.Concat(" AND ", "(", ")")) > 0;
}
return false;
}
public override bool CommodityHasContainers(SysId commodityId)
{
ClearErrorState();
if (!SysId.IsValid(commodityId)) return false;
String tableContainer = SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Container);
if (Database.TableExists(tableContainer))
{
String colContainerItem_ContainerId = SbmDbDfn.GetColumnName(SbmDbDfn.ColumnIdx.ContainerItem_ContainerId);
List<String> filters = new List<String>();
filters.Add($"{SbmDbDfn.GetColumnName(SbmDbDfn.ColumnIdx.ContainerItem_ItemType)}={Sbm.ItemType.Commodity.ToString()}");
filters.Add($"{SbmDbDfn.GetColumnName(SbmDbDfn.ColumnIdx.ContainerItem_ItemId)}={commodityId.ToString()}");
return Database.GetRowCount(tableContainer, filters.Concat(" AND ", "(", ")")) > 0;
}
return false;
}
public override bool CommodityHasCustomerDetails(SysId commodityId)
{
ClearErrorState();
if (!SysId.IsValid(commodityId)) return false;
String tableCommodityCustomer = SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.CommodityCustomer);
if (Database.TableExists(tableCommodityCustomer))
{
List<String> filters = new List<String>();
filters.Add($"{SbmDbDfn.GetColumnName(SbmDbDfn.ColumnIdx.CommodityCustomer_CommodityId)}={commodityId.ToString()}");
return Database.GetRowCount(tableCommodityCustomer, filters.Concat(" AND ", "(", ")")) > 0;
}
return false;
}
public override bool CommodityHasSupplierDetails(SysId commodityId)
{
ClearErrorState();
if (!SysId.IsValid(commodityId)) return false;
String tableCommoditySupplier = SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.CommoditySupplier);
if (Database.TableExists(tableCommoditySupplier))
{
List<String> filters = new List<String>();
filters.Add($"{SbmDbDfn.GetColumnName(SbmDbDfn.ColumnIdx.CommoditySupplier_CommodityId)}={commodityId.ToString()}");
return Database.GetRowCount(tableCommoditySupplier, filters.Concat(" AND ", "(", ")")) > 0;
}
return false;
}
public override bool CommodityHasMovements(SysId commodityId)
{
ClearErrorState();
if (!SysId.IsValid(commodityId)) return false;
String tableMovement = SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Movement);
if (Database.TableExists(tableMovement))
{
String colMovement_Id = SbmDbDfn.GetColumnName(SbmDbDfn.ColumnIdx.Movement_Id);
List<String> filters = new List<String>();
filters.Add($"{SbmDbDfn.GetColumnName(SbmDbDfn.ColumnIdx.Movement_ItemType)}={Sbm.ItemType.Commodity.ToString()}");
filters.Add($"{SbmDbDfn.GetColumnName(SbmDbDfn.ColumnIdx.Movement_ItemId)}={commodityId.ToString()}");
return Database.GetRowCount(tableMovement, filters.Concat(" AND ", "(", ")")) > 0;
}
return false;
}
public override bool CommodityHasStockLevels(SysId commodityId)
{
ClearErrorState();
if (!SysId.IsValid(commodityId)) return false;
String tableStockLevel = SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.StockLevel);
if (Database.TableExists(tableStockLevel))
{
String colStockLevel_CommodityId = SbmDbDfn.GetColumnName(SbmDbDfn.ColumnIdx.StockLevel_CommodityId);
String filter = $"{colStockLevel_CommodityId}={commodityId.ToString()}";
return Database.GetRowCount(tableStockLevel, filter) > 0;
}
return false;
}
public override bool ClearCommodityDependentData(SysId commodityId)
{
ClearErrorState();
if (!SysId.IsValid(commodityId)) return false;
if (!HasErrorState())
{
// Remove data item references.
if (!DataItemMgr.ClearDataItem(Sbm.ItemType.Commodity, commodityId))
SetErrorState(DataItemMgr.ErrorStateMessage);
}
if (!HasErrorState())
{
if (ItemDocConsole != null)
{
if (!ItemDocConsole.ClearItemDocs(new ItemId((short)Sbm.ItemType.Commodity, commodityId), SaItemDocConsole.Category.Document, DbUpdateInfo))
SetErrorState(ItemDocConsole.ErrorStateMessage);
}
else SetErrorState("Failed to retrieve item document console");
}
if (!HasErrorState())
{
// Remove interface references.
if (InterfaceConsole != null)
{
if (!InterfaceConsole.ClearInterfaceDataItems(new ItemId((short)Sbm.ItemType.Commodity, commodityId), DbUpdateInfo))
SetErrorState(InterfaceConsole.ErrorStateMessage);
}
else SetErrorState("Failed to retrieve interface console");
}
if (!HasErrorState())
{
// Remove customer commodity details.
List<StringPair> columnNameValues = new List<StringPair>();
String tableCommodityCustomer = SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.CommodityCustomer);
String filter = SbmDbDfn.GetColumnName(SbmDbDfn.ColumnIdx.CommodityCustomer_CommodityId) + "=" + commodityId.ToString();
if (db != null && Database.TableExists(tableCommodityCustomer) && Database.ExecuteDelete(tableCommodityCustomer, filter) > 0)
SetErrorState("Failed to clear customer commodity details");
}
if (!HasErrorState())
{
// Remove Supplier commodity details.
String tableCommoditySupplier = SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.CommoditySupplier);
String filter = SbmDbDfn.GetColumnName(SbmDbDfn.ColumnIdx.CommoditySupplier_CommodityId) + "=" + commodityId.ToString();
if (db != null && Database.TableExists(tableCommoditySupplier) && Database.ExecuteDelete(tableCommoditySupplier, filter) > 0)
SetErrorState("Failed to clear Supplier commodity details");
}
return false;
}
//-------------------------------------------------------------------
// Commodity requirements.
/// <summary>
/// Update requirements for this commodity with the correct code.
/// </summary>
public override bool UpdateCommodityRequirements(SbmCommodity commodity)
{
ClearErrorState();
if (!SysId.IsValid(commodity.Id)) return true;
List<String> filter = new List<string>();
filter.Add($"{SbmDbDfn.GetColumnName(SbmDbDfn.ColumnIdx.Requirement_CommodityId)}={commodity.Id}");
filter.Add($"{SbmDbDfn.GetColumnName(SbmDbDfn.ColumnIdx.Requirement_ProductCode)}!='{DbQuery.FormatForCondition(commodity.Code)}'");
List<StringPair> values = new List<StringPair>();
SacsDatabase.AddValuePair(values, SbmDbDfn.GetColumnName(SbmDbDfn.ColumnIdx.Requirement_ProductCode), commodity.Code, true);
db.ExecuteUpdate(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Requirement), values, filter.Concat(" And ", "(", ")"));
if (db.HasErrorState())
SetErrorState($"{db.ErrorStateMessage}.");
return !HasErrorState();
}
//-------------------------------------------------------------------
// Commodity cost estimates.
public override List<SbmCostEstimate> GetCommodityCostEstimates(SbmCommodity commodity)
{
//ClearErrorState();
List<SbmCostEstimate> costEstimatesCopy = null;
if (commodity.CostEstimates == null && SysId.IsValid(commodity.Id))
{
using (DisposableCollection<SacsHierarchyItem> disposables = new DisposableCollection<SacsHierarchyItem>())
{
SbmItemLink.Params prmItemLink = new SbmItemLink.Params();
prmItemLink.ItemLinkType = Sbm.ItemLinkType.ItemCostEstimate;
prmItemLink.ItemTypeFrom = Sbm.ItemType.Commodity;
prmItemLink.ItemIdFrom = commodity.Id;
List<SbmItemLink> itemLinks = DataItemMgr.GetItemLinkList(prmItemLink);
if (itemLinks != null)
{
disposables.AddRange(itemLinks);
foreach (SbmItemLink itemLink in itemLinks)
{
SbmCostEstimate costEstimate = new SbmCostEstimate(UserContext, itemLink.DataContent);
costEstimate.Notes = itemLink.Notes;
costEstimate.Changed = false;
if (commodity.CostEstimates == null) commodity.CostEstimates = new List<SbmCostEstimate>();
commodity.CostEstimates.Add(costEstimate);
}
// Clean-up.
itemLinks.Clear();
}
}
}
// Clone the list.
costEstimatesCopy = commodity.CostEstimates.Clone();
return costEstimatesCopy;
}
public override bool SetCommodityCostEstimates(SbmCommodity commodity, List<SbmCostEstimate> costEstimatesNew)
{
ClearErrorState();
// Clear the existing list.
if (commodity.CostEstimates != null) commodity.CostEstimates.Clear();
// Copy all items from the specified list.
commodity.CostEstimates = costEstimatesNew.Clone();
return true;
}
public override bool CommitCommodityCostEstimates(SbmCommodity commodity)
{
ClearErrorState();// Do not attempt any updates unless the list has been populated.
if (commodity.CostEstimates == null) return true;
if (commodity.CostEstimates != null && SysId.IsValid(commodity.Id))
{
// Build an item link list corresponding to the list of cost estimates.
List<SbmItemLink> itemLinks = new List<SbmItemLink>();
foreach (SbmCostEstimate costEstimate in commodity.CostEstimates)
{
if (costEstimate == null) continue;
SbmItemLink itemLink = DataItemMgr.CreateItemLink(Sbm.ItemLinkType.ItemCostEstimate, Sbm.ItemType.Commodity, commodity.Id, Sbm.ItemType.Unknown, new SysId());
if (itemLink != null)
{
itemLink.Seq = (short)costEstimate.CodeSeq;
itemLink.DataContent = costEstimate.ToString();
itemLink.Notes = costEstimate.Notes;
itemLinks.Add(itemLink);
}
}
// Store these details.
if (DataItemMgr.StoreFromItemLinks(Sbm.ItemLinkType.ItemCostEstimate, new ItemId((short)Sbm.ItemType.Commodity, commodity.Id), itemLinks, DbUpdateInfo))
{
}
else
{
SetErrorState("Failed to save cost estimate item links - " + DataItemMgr.ErrorStateMessage);
}
if (itemLinks != null)
itemLinks.Clear();
}
return !HasErrorState();
}
//-------------------------------------------------------------------
// Commodity processes.
public override List<SbmItemProcess> GetCommodityProcesses(SbmCommodity commodity, bool activeOnly)
{
//ToDo need to creat SbmProcessMgr_Dbas-ItemProcess inorder to do processMgr.???
ClearErrorState();
List<SbmItemProcess> itemProcesesCopy = null;
if (activeOnly)
{
// Retrieve the list of 'active' processes for this item.
ProcessMgr.GetProcessesForItem(Sbm.ItemType.Commodity, commodity.Id, true);
}
else
{
// Full list required - check whether the internal list has been populated yet.
if (commodity.ItemProcesses == null && SysId.IsValid(commodity.Id))
{
// Get the list of processes.
ProcessMgr.GetProcessesForItem(Sbm.ItemType.Commodity, commodity.Id, false);
}
// Clone the list.
itemProcesesCopy = commodity.ItemProcesses.Clone();
}
if (itemProcesesCopy != null) itemProcesesCopy.Sort();
return itemProcesesCopy;
}
public override bool SetCommodityProcesses(SbmCommodity commodity, List<SbmItemProcess> itemProcessesNew)
{
ClearErrorState();
if (commodity.ItemProcesses != null) commodity.ItemProcesses.Clear();
// Copy all items from the specified list.
commodity.ItemProcesses = itemProcessesNew.Clone();
return !HasErrorState();
}
public override bool CommitCommodityProcesses(SbmCommodity commodity)
{
ClearErrorState();
if (commodity.ItemProcesses == null) return true;
if (!ProcessMgr.StoreItemProcesses(Sbm.ItemType.Commodity, commodity.Id, commodity.ItemProcesses, DbUpdateInfo))
SetErrorState(ProcessMgr.ErrorStateMessage);
return !HasErrorState();
}
//-------------------------------------------------------------------
}
//=======================================================================
}
@@ -20,43 +20,17 @@ using System.Threading.Tasks;
namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
{
//=======================================================================
internal partial class SbmCommodityMgr_Dbas : SbmCommodityMgr
// Commodity Manager - Commodity.
//=======================================================================
partial class SbmCommodityMgr_Dbas
{
//*******************************************************************
// C o m m o d i t i e s
//*******************************************************************
public class PlannedStockMovements_Params
{
public PlannedStockMovements_Params()
{
earliest = DateTime.MinValue;
latest = DateTime.MinValue;
moveCol = PlanStockMoveCol.ItemQuanity;
intoStock = true;
provisionalContainersOnly = false;
excludeAwaitingContainers = false;
tableAliasCommodity = aliasCommodity;
}
public DateTime earliest;
public DateTime latest;
public SbmCommodity.Params prmCmd;
public enum PlanStockMoveCol { ItemQuanity, MovementDate, };
public PlanStockMoveCol moveCol;
public bool intoStock;
public bool provisionalContainersOnly;
public bool excludeAwaitingContainers;
public String tableAliasCommodity;
public String commodityIdCol;
}
//-------------------------------------------------------------------
// Data members.
private bool locationIdListPopulated = false;
private List<SysId> locationIds_All = new List<SysId>();
private List<SysId> locationIds_Calc = new List<SysId>();
private List<SysId> locationIds_Sales = new List<SysId>();
private List<SysId> locationIds_NonSales = new List<SysId>();
private readonly List<SysId> locationIds_All = new List<SysId>();
private readonly List<SysId> locationIds_Calc = new List<SysId>();
private readonly List<SysId> locationIds_Sales = new List<SysId>();
private readonly List<SysId> locationIds_NonSales = new List<SysId>();
//-------------------------------------------------------------------
// Utilities.
@@ -70,6 +44,8 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
new StringPair("Status",commodity.StatusCode)
};
}
//-------------------------------------------------------------------
public override List<Sbm.CommodityType> GetCommodityTypesInUse()
{
List<Sbm.CommodityType> types = new List<Sbm.CommodityType>();
@@ -210,6 +186,8 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
// Perform the update:
db.ExecuteUpdate(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Commodity), value, filters.Concat(" AND ", "(", ")"));
if (db.HasErrorState())
SetErrorState($"{db.ErrorStateMessage}");
return !HasErrorState();
}
@@ -219,7 +197,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
//---------------------------------------------------------------
// Sales Quantity Query.
public override String BuildSalesQuantityQuery(DateTime earliest, DateTime latest, bool completeOrders, String tableAliasCommodity)
public String BuildSalesQuantityQuery(DateTime earliest, DateTime latest, bool completeOrders, String tableAliasCommodity)
{
tableAliasCommodity = StringUtil.OnEmpty(tableAliasCommodity, aliasCommodity);
// Calculate the quantity against sales orders for this commodity.
@@ -269,7 +247,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
//---------------------------------------------------------------
// Allocated Stock Query.
public override String BuildAllocatedStockQuery(List<SysId> locIds)
public String BuildAllocatedStockQuery(List<SysId> locIds)
{
// Calculate the pending movements sourced to sales order requirements.
String tableAliasMov = "StkAllMov";
@@ -286,7 +264,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
//---------------------------------------------------------------
// Currency Stock Query.
public override String BuildCurrentStockQuery(List<SysId> locIds)
public String BuildCurrentStockQuery(List<SysId> locIds)
{
// Calculate the current stock level.
String aliasStockLevel = "aCmdStkLvl";
@@ -301,8 +279,34 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
}
//---------------------------------------------------------------
// Planned stock movements.
public class PlannedStockMovements_Params
{
public PlannedStockMovements_Params()
{
earliest = DateTime.MinValue;
latest = DateTime.MinValue;
moveCol = PlanStockMoveCol.ItemQuanity;
intoStock = true;
provisionalContainersOnly = false;
excludeAwaitingContainers = false;
tableAliasCommodity = aliasCommodity;
}
public DateTime earliest;
public DateTime latest;
public SbmCommodity.Params prmCmd;
public enum PlanStockMoveCol { ItemQuanity, MovementDate, };
public PlanStockMoveCol moveCol;
public bool intoStock;
public bool provisionalContainersOnly;
public bool excludeAwaitingContainers;
public String tableAliasCommodity;
public String commodityIdCol;
}
// Stock Movements Query.
public override String BuildPlannedStockMovementsQuery(DateTime earliest, DateTime latest, SbmCommodity.Params prmCmd, bool intoStock, bool provisional, String tableAliasCommodity)
public String BuildPlannedStockMovementsQuery(DateTime earliest, DateTime latest, SbmCommodity.Params prmCmd, bool intoStock, bool provisional, String tableAliasCommodity)
{
PlannedStockMovements_Params prm = new PlannedStockMovements_Params();
prm.earliest = earliest;
@@ -508,7 +512,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
}
//-------------------------------------------------------------------
// Populate LocationId Lists.
public override void PopulateLocationIdLists()
public void PopulateLocationIdLists()
{
// Verify that the location table exists.
String tableLocation = SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Location);
@@ -550,7 +554,8 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
if (locationIds_Sales.Count > 0)
{
// Assume that all locations are for sales.
locationIds_Sales = new List<SysId>(locationIds_NonSales);
locationIds_Sales.Clear();
locationIds_Sales.AddIds(locationIds_NonSales);
locationIds_NonSales.Clear();
}
}
@@ -1096,12 +1101,12 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
break;
case SbmCommodity.Column.Code:
SetCommodityColDfn(columnDfn, "Code", 120, SbmDbDfn.ColumnIdx.Commodity_Code);
if (ConfigConsole != null && AllowConfigOption(Sbm.ConfigOption.CommodityDoubleColumnWidth))
if (SessionConsole != null && AllowConfigOption(Sbm.ConfigOption.CommodityDoubleColumnWidth))
columnDfn.Width = columnDfn.Width * (int)1.25;
break;
case SbmCommodity.Column.DescBrief:
SetCommodityColDfn(columnDfn, "Desc", 120, SbmDbDfn.ColumnIdx.Commodity_DescBrief);
if (ConfigConsole != null && AllowConfigOption(Sbm.ConfigOption.CommodityDoubleColumnWidth))
if (SessionConsole != null && AllowConfigOption(Sbm.ConfigOption.CommodityDoubleColumnWidth))
columnDfn.Width = columnDfn.Width * (int)1.25;
break;
case SbmCommodity.Column.DescOrder:
@@ -1487,6 +1492,11 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
columnDfn.ShowZeroValues = false;
}
break;
// Sales UOM.
case SbmCommodity.Column.UomIdSale:
SetCommodityColDfn(columnDfn, "Sales UOM Id", 80, SbmDbDfn.ColumnIdx.Commodity_UomIdSale, ColumnAlignment.Center, DataValue.DataType.Long);
columnDfn.ShowZeroValues = false;
break;
case SbmCommodity.Column.UnitOfSale:
SetCommodityColDfn(columnDfn, "Unit of Sale", 100, SbmDbDfn.ColumnIdx.UnitMeasure_Single, ColumnAlignment.Center);
break;
@@ -2288,15 +2298,15 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
//---------------------------------------------------------------
// Commodity Id.
String includedIds = prm.IncludedIds.Concat(",");
String includedIds = prm.IdsIncluded.Concat(",");
if (!includedIds.IsEmpty()) filter.Add(colCommodity_Id + " IN (" + includedIds + ")");
String excludedIds = prm.ExcludedIds.Concat(",");
String excludedIds = prm.IdsExcluded.Concat(",");
if (!excludedIds.IsEmpty()) filter.Add(colCommodity_Id + " NOT IN (" + excludedIds + ")");
//---------------------------------------------------------------
// Organisation.
// Must filter by organisation if insufficient alternative filetrs.
if (!prm.IncludedIds.HasValidIds() && !prm.PriceSetIdsIncluded.HasValidIds() && !SysId.IsValid(prm.AssociationIdCustomer) && !SysId.IsValid(prm.AssociationIdCommodityCustomer))
if (!prm.IdsIncluded.HasValidIds() && !prm.PriceSetIdsIncluded.HasValidIds() && !SysId.IsValid(prm.AssociationIdCustomer) && !SysId.IsValid(prm.AssociationIdCommodityCustomer))
{
if (!SysId.IsValid(AffiliateId_Owner)) throw new NotSupportedException("Commodity query filter - Organisation Id must be specified");
filter.Add(colCommodity_AffIdOwner + "=" + SysId.ToLong(AffiliateId_Owner));
@@ -2317,7 +2327,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
filter.Add(colCommodity_Code + "='" + DbQuery.FormatForCondition(prm.CodeFull) + "'");
else if (!StringUtil.IsEmpty(prm.CodePartial))
{
if (ConfigConsole != null && AllowConfigOption(Sbm.ConfigOption.CommodityPartialCodeFilter))
if (SessionConsole != null && AllowConfigOption(Sbm.ConfigOption.CommodityPartialCodeFilter))
filter.Add(colCommodity_Code + " LIKE '%" + DbQuery.FormatForLike(prm.CodePartial) + "%'");
else filter.Add(DbQuery.FormatFn_Left(colCommodity_Code, prm.CodePartial.Length) + "='" + DbQuery.FormatForCondition(prm.CodePartial) + "'");
}
@@ -2816,6 +2826,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
if (columns.HasId(SbmCommodity.Column.CarriageCostIndicative) ||
columns.HasId(SbmCommodity.Column.CarriageCostIndicative_Fmt)) query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_CarriageCostIndicative, aliasCommodity));
if (columns.HasId(SbmCommodity.Column.MinOrderQty)) query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_MinOrderQty, aliasCommodity));
if (columns.HasId(SbmCommodity.Column.UomIdSale)) query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_UomIdSale, aliasCommodity));
if (columns.HasId(SbmCommodity.Column.PackQtySale)) query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_PackQty, aliasCommodity));
if (columns.HasId(SbmCommodity.Column.LastOrderDate)) query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_LastOrderDate, aliasCommodity));
if (columns.HasId(SbmCommodity.Column.LastOrderQty)) query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_LastOrderQty, aliasCommodity));
@@ -3866,7 +3877,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
// Populate filter.
query.Filters.AddRange(GetCommodityQueryFilter(prm));
if (prm.IncludedIds.Count != 1)
if (prm.IdsIncluded.Count != 1)
{
// Configure sort sequence.
foreach (String sortColumn in GetCommoditySortColumns(prm))
@@ -16,12 +16,11 @@ using System.Linq;
namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
{
//=======================================================================
// Commodity Manager - Commodity Customer.
//=======================================================================
partial class SbmCommodityMgr_Dbas
{
//*******************************************************************
// C o m m o d i t i e s C u s t o m e r
//*******************************************************************
//-------------------------------------------------------------------
// Data members.
private String msg_UnableToManageCommodityCustomers = "Unable to manage commodity customers";
@@ -39,7 +38,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
}
public override bool CanManageCommodityCustomers()
{
if (ConfigConsole == null || !AllowConfigOption(Sbm.ConfigOption.CommodityCustomers)) return false;
if (!AllowConfigOption(Sbm.ConfigOption.CommodityCustomers)) return false;
return db != null && db.TableExists(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.CommodityCustomer));
}
public override bool StoreCommodityCustomers(List<SbmCommodityCustomer> commodityCustomers)
@@ -487,10 +486,10 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
List<String> filter = new List<String>();
//CommodityCustomer Id.
String includedIds = prm.IncludedIds.Concat(",");
String includedIds = prm.IdsIncluded.Concat(",");
if (!includedIds.IsEmpty())
filter.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.CommodityCustomer_CommodityId, aliasCommodityCustomer) + " IN (" + includedIds + ")");
String excludedIds = prm.ExcludedIds.Concat(",");
String excludedIds = prm.IdsExcluded.Concat(",");
if (!excludedIds.IsEmpty())
filter.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.CommodityCustomer_CommodityId, aliasCommodityCustomer) + " NOT IN (" + excludedIds + ")");
@@ -713,7 +712,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
// Populate filter.
query.Filters.AddRange(GetCommodityCustomerQueryFilter(prm));
if (prm.IncludedIds.Count != 1)
if (prm.IdsIncluded.Count != 1)
{
// Configure sort sequence.
foreach (String sortColumn in GetCommodityCustomerSortColumns(prm))
@@ -15,12 +15,11 @@ using System.Linq;
namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
{
//=======================================================================
// Commodity Manager - Commodity Supplier.
//=======================================================================
partial class SbmCommodityMgr_Dbas
{
//*******************************************************************
// C o m m o d i t i e s S u p p l i e r
//*******************************************************************
//-------------------------------------------------------------------
// Data members.
@@ -36,7 +35,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
}
public override bool CanManageCommoditySuppliers()
{
if (ConfigConsole == null || !AllowConfigOption(Sbm.ConfigOption.CommoditySuppliers)) return false;
if (SessionConsole == null || !AllowConfigOption(Sbm.ConfigOption.CommoditySuppliers)) return false;
return db != null && db.TableExists(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.CommoditySupplier));
}
@@ -393,10 +392,10 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
List<String> filter = new List<String>();
// CommoditySupplier Id.
String includedIds = prm.IncludedIds.Concat(",");
String includedIds = prm.IdsIncluded.Concat(",");
if (!includedIds.IsEmpty())
filter.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.CommoditySupplier_CommodityId, aliasCommoditySupplier) + " IN (" + includedIds + ")");
String excludedIds = prm.ExcludedIds.Concat(",");
String excludedIds = prm.IdsExcluded.Concat(",");
if (!excludedIds.IsEmpty())
filter.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.CommoditySupplier_CommodityId, aliasCommoditySupplier) + " NOT IN (" + excludedIds + ")");
@@ -608,7 +607,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
// Populate filter.
query.Filters.AddRange(GetCommoditySupplierQueryFilter(prm));
if (prm.IncludedIds.Count != 1)
if (prm.IdsIncluded.Count != 1)
{
// Configure sort sequence.
foreach (String sortColumn in GetCommoditySupplierSortColumns(prm))
@@ -16,12 +16,12 @@ using System.Linq;
namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
{
//=======================================================================
// Commodity Manager - Container.
//=======================================================================
partial class SbmCommodityMgr_Dbas
{
//*******************************************************************
// C o n t a i n e r s
//*******************************************************************
//-------------------------------------------------------------------
// Data members.
//-------------------------------------------------------------------
@@ -372,10 +372,10 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
//Container Id.
String colContainer_Id = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Container_Id, tableAlias);
String includedIds = prm.IncludedIds.Concat(",");
String includedIds = prm.IdsIncluded.Concat(",");
if (!includedIds.IsEmpty())
filter.Add(colContainer_Id + " IN (" + includedIds + ")");
String excludedIds = prm.ExcludedIds.Concat(",");
String excludedIds = prm.IdsExcluded.Concat(",");
if (!excludedIds.IsEmpty())
filter.Add(colContainer_Id + " NOT IN (" + excludedIds + ")");
@@ -709,7 +709,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
// Populate filter.
query.Filters.AddRange(GetContainerQueryFilter(prm));
if (prm.IncludedIds.Count != 1)
if (prm.IdsIncluded.Count != 1)
{
// Configure sort sequence.
foreach (String sortColumn in GetContainerSortColumns(prm))
@@ -16,12 +16,12 @@ using System.Linq;
namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
{
//=======================================================================
// Commodity Manager - Container Item.
//=======================================================================
partial class SbmCommodityMgr_Dbas
{
//*******************************************************************
// C o n t a i n e r I t e m s
//*******************************************************************
//-------------------------------------------------------------------
// Utilities.
private List<StringPair> GetLogProperties(SbmContainerItem containerItem)
{
@@ -561,10 +561,10 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
//---------------------------------------------------------------
// Item Ids.
String colContainerItem_Id = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.ContainerItem_ContainerId, tableAliasContainerItem);
String includedIds = prm.IncludedIds.Concat(",");
String includedIds = prm.IdsIncluded.Concat(",");
if (!includedIds.IsEmpty())
filters.Add(colContainerItem_Id + " IN (" + includedIds + ")");
String excludedIds = prm.ExcludedIds.Concat(",");
String excludedIds = prm.IdsExcluded.Concat(",");
if (!excludedIds.IsEmpty())
filters.Add(colContainerItem_Id + " NOT IN (" + excludedIds + ")");
@@ -944,7 +944,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
//---------------------------------------------------------------
// Populate filter.
query.Filters.AddRange(GetContainerItemQueryFilter(prm));
if (prm.IncludedIds.Count != 1)
if (prm.IdsIncluded.Count != 1)
{
// Configure sort sequence.
foreach (String sortColumn in GetContainerItemSortColumns(prm))
@@ -17,12 +17,12 @@ using System.Linq;
namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
{
//=======================================================================
// Commodity Manager - Portfolio Item.
//=======================================================================
partial class SbmCommodityMgr_Dbas
{
//*******************************************************************
// P o r t f o l i o I t e m
//*******************************************************************
//-------------------------------------------------------------------
// Utilities.
private List<StringPair> GetLogProperties(SbmPortfolioItem portfolioItem)
{
@@ -729,10 +729,10 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
// Portfolio Item Id.
String colPortfolioItem_Id = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.PortfolioItem_Id, aliasPortfolioItem);
String includedIds = prm.IncludedIds.Concat(",");
String includedIds = prm.IdsIncluded.Concat(",");
if (!StringUtil.IsEmpty(includedIds))
filter.Add(colPortfolioItem_Id + " IN (" + includedIds + ")");
String excludedIds = prm.ExcludedIds.Concat(",");
String excludedIds = prm.IdsExcluded.Concat(",");
if (!StringUtil.IsEmpty(excludedIds))
filter.Add(colPortfolioItem_Id + " NOT IN (" + excludedIds + ")");
@@ -1014,7 +1014,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
// Populate filter.
query.Filters.AddRange(GetPortfolioItemQueryFilter(prm));
if (prm.IncludedIds.Count != 1)
if (prm.IdsIncluded.Count != 1)
{
// Configure sort sequence.
foreach (String sortColumn in GetPortfolioItemSortColumns(prm))
@@ -75,7 +75,6 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
//-------------------------------------------------------------------
// Create ItemBatch.
//public SbmItemBatch_Dbas(SbmSessionProfile sessionProfile, SysId id, SysId affIdOwner, Sbm.ItemBatchType type, String refs, ushort flags)
public override SbmItemBatch CreateItemBatch(Sbm.ItemBatchType itemBatchType, String refs)
{
ClearErrorState();
@@ -337,11 +336,11 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
List<String> filter = new List<String>();
// ItemBatch Id.
String includedIds = prm.IncludedIds.Concat(",");
String includedIds = prm.IdsIncluded.Concat(",");
String colItemBatch_Id = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.ItemBatch_Id, aliasItemBatch);
if (!includedIds.IsEmpty())
filter.Add(colItemBatch_Id + " IN (" + includedIds + ")");
String excludedIds = prm.ExcludedIds.Concat(",");
String excludedIds = prm.IdsExcluded.Concat(",");
if (!excludedIds.IsEmpty())
filter.Add(colItemBatch_Id + " NOT IN (" + excludedIds + ")");
@@ -511,7 +510,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
// Populate filter.
query.Filters.AddRange(GetItemBatchQueryFilter(prm));
if (prm.IncludedIds.Count != 1)
if (prm.IdsIncluded.Count != 1)
{
// Configure sort sequence.
foreach (String sortColumn in GetItemBatchSortColumns(prm))
@@ -0,0 +1,154 @@
using Sarand.BusinessMgr.Net.Standard.Base.App;
using Sarand.BusinessMgr.Net.Standard.Base.Bus;
using Sarand.BusinessMgr.Net.Standard.Dbas.Bus;
using Sarand.BusinessMgr.Net.Standard.Dbas.Internal;
using Sarand.BusinessMgr.Net.Standard.Dbas.UpdateLog;
using Sarand.Net.Standard.Base.App;
using Sarand.Net.Standard.Base.Bus;
using Sarand.Net.Standard.Base.Core;
using Sarand.Net.Standard.Base.Dbas;
using Sarand.Net.Standard.Base.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
{
//=======================================================================
// Data Item Manager - Item Links - Utils.
//=======================================================================
partial class SbmDataItemMgr_Dbas
{
//-------------------------------------------------------------------
// Utilities.
private List<StringPair> GetLogProperties(SbmItemLink itemLink)
{
return new List<StringPair>()
{
new StringPair("Id",SysId.ToString(itemLink.Id)),
new StringPair("DataContent",itemLink.DataContent),
new StringPair("Status",itemLink.StatusCode)
};
}
//-------------------------------------------------------------------
public override bool DoDbCleanup()
{
ClearErrorState();
/*RS_ItemLink* prsLink = (pSys ? pSys.ItemLinkRecordSet() : NULL);
if (!prsLink) return SetException("failed to create ItemLink recordset");
if (!HasException())
{
//---------------------------------------------------------------
// Jan10: Item Links with Seq=0.
// These are prohibiting the primary key that includes this column.
// Should be able to set the value in sequence for the parent ('From') item.
//---------------------------------------------------------------
// Keep track of previous values:
eSapItemLinkType eLinkTypePrev = eSapItemLink_Unknown;
eSapItemType eTypeFromPrev = eSapItemTypeUnknown;
SaSysId itemIdFromPrev;
int iNextSeq = 1;
int iRowsModified = 0, iParentItemsFound = 0;
// Restrict to Seq=0 and sort by parent item:
prsLink->AddToSort(SbmDbDfn.GetColumnName(SbmDbDfn.ColumnIdx.ItemLink_Type, false));
prsLink->AddToSort(SbmDbDfn.GetColumnName(SbmDbDfn.ColumnIdx.ItemLink_ItemTypeFrom, false));
prsLink->AddToSort(SbmDbDfn.GetColumnName(SbmDbDfn.ColumnIdx.ItemLink_ItemIdFrom, false));
prsLink->AddToFilter(SbmDbDfn.GetColumnName(SbmDbDfn.ColumnIdx.ItemLink_Seq) + "=0");
prsLink->Open();
while (!HasException() && prsLink->IsOpen() && !prsLink->IsEOF())
{
// Reset the sequence if the parent item has changed:
if (eLinkTypePrev != (eSapItemLinkType)prsLink->iType || eTypeFromPrev != (eSapItemType)prsLink->iItemTypeTo || itemIdFromPrev != prsLink->iItemIdTo)
{
iNextSeq = 1;
eLinkTypePrev = (eSapItemLinkType)prsLink->iType;
eTypeFromPrev = (eSapItemType)prsLink->iItemTypeTo;
itemIdFromPrev = prsLink->iItemIdTo;
iParentItemsFound++;
}
prsLink->Edit();
prsLink->iSeq = iNextSeq++;
if (!prsLink->Update())
SetException("failed to update link (" + prsLink->Exception() + ")");
iRowsModified++;
// Move to the next record in the result set:
prsLink->MoveNext();
}
SATRACE("\nSapDataItemMgr_Odbc::DoDbCleanup\n\tParent items found: " + String(iParentItemsFound) + "\n\tRows modified: " + String(iRowsModified) + "\n\n");
//---------------------------------------------------------------
}*/
return !HasErrorState();
}
//-------------------------------------------------------------------
public override bool ClearDataItem(Sbm.ItemType itemType, SysId itemId)
{
ClearErrorState();
if ((int)itemType < 1 || !SysId.IsValid(itemId)) return false;
List<String> filters = new List<String>();
String colItemTypeFrom = SbmDbDfn.GetColumnName(SbmDbDfn.ColumnIdx.ItemLink_ItemTypeFrom);
String colItemIdFrom = SbmDbDfn.GetColumnName(SbmDbDfn.ColumnIdx.ItemLink_ItemIdFrom);
String colItemTypeTo = SbmDbDfn.GetColumnName(SbmDbDfn.ColumnIdx.ItemLink_ItemTypeTo);
String colItemIdTo = SbmDbDfn.GetColumnName(SbmDbDfn.ColumnIdx.ItemLink_ItemIdTo);
filters.Add(colItemTypeFrom + "=" + ((int)itemType).ToString() + " AND " + colItemIdFrom + "=" + itemId.ToString());
filters.Add(colItemTypeTo + "=" + ((int)itemType).ToString() + " AND " + colItemIdTo + "=" + itemId.ToString());
String filter = filters.Concat(" OR ", "(", ")");
//return db.ExecuteDelete("DELETE FROM" + SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.ItemLink) + " WHERE " + filter);
db.ExecuteDelete(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.ItemLink), filter);
return false;
}
//-------------------------------------------------------------------
// Associated items.
public override bool UpdateLinkedItems(Sbm.AssociatedItemMode itemMode, Sbm.ItemLinkType itemLinkType, ref ItemId itemIdParent, ref ItemId itemIdChild, ItemId itemId, List<SbmItemLink> itemLinks)
{
ClearErrorState();
// If the fixed item hasn't previously been specified, store the value now.
if (ItemLinkParentIsFixed(itemMode) && itemIdParent.Type == itemId.Type && !SysId.IsValid(itemIdParent.Id))
itemIdParent = itemId;
else if (ItemLinkChildIsFixed(itemMode) && itemIdChild.Type == itemId.Type && !SysId.IsValid(itemIdChild.Id))
itemIdChild = itemId;
// Validate the configuration.
if (ItemLinkConfigIsValid(itemMode, itemLinkType))
return SetErrorState("Invalid configuration for associated items");
// Validate fixed item:
if (ItemLinkParentIsFixed(itemMode))
{
if (itemIdParent != itemId)
return SetErrorState("Inconsistent parent item specified");
}
else if (ItemLinkChildIsFixed(itemMode))
{
if (itemIdChild != itemId)
return SetErrorState("Inconsistent child item specified");
}
if (ItemLinkParentIsFixed(itemMode))
{
// Parent item is fixed - update its child items as specified in the list:
if (itemLinks != null) itemLinks.SetSequences();
if (!DataItemMgr.StoreFromItemLinks(itemLinkType, itemId, itemLinks, DbUpdateInfo))
return SetErrorState($"Failed to store associated items - {DataItemMgr.ErrorStateMessage}");
}
else if (ItemLinkChildIsFixed(itemMode))
{
// Child item is fixed - update its parent items as specified in the list:
if (!DataItemMgr.StoreToItemLinks(itemLinkType, itemId, itemLinks, DbUpdateInfo))
return SetErrorState($"Failed to store associated items - {DataItemMgr.ErrorStateMessage}");
}
return !HasErrorState();
}
//-------------------------------------------------------------------
}
//=======================================================================
}
@@ -16,94 +16,16 @@ using System.Linq;
namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
{
//=======================================================================
// Data Item Manager - Item Links.
//=======================================================================
partial class SbmDataItemMgr_Dbas
{
//*******************************************************************
// I t e m L i n k s
//*******************************************************************
//-------------------------------------------------------------------
// Data members.
//-------------------------------------------------------------------
// Utilities.
private List<StringPair> GetLogProperties(SbmItemLink itemLink)
{
return new List<StringPair>()
{
new StringPair("Id",SysId.ToString(itemLink.Id)),
new StringPair("DataContent",itemLink.DataContent),
new StringPair("Status",itemLink.StatusCode)
};
}
public override bool DoDbCleanup()
{
ClearErrorState();
/*RS_ItemLink* prsLink = (pSys ? pSys.ItemLinkRecordSet() : NULL);
if (!prsLink) return SetException("failed to create ItemLink recordset");
if (!HasException())
{
//---------------------------------------------------------------
// Jan10: Item Links with Seq=0.
// These are prohibiting the primary key that includes this column.
// Should be able to set the value in sequence for the parent ('From') item.
//---------------------------------------------------------------
// Keep track of previous values:
eSapItemLinkType eLinkTypePrev = eSapItemLink_Unknown;
eSapItemType eTypeFromPrev = eSapItemTypeUnknown;
SaSysId itemIdFromPrev;
int iNextSeq = 1;
int iRowsModified = 0, iParentItemsFound = 0;
// Restrict to Seq=0 and sort by parent item:
prsLink->AddToSort(SbmDbDfn.GetColumnName(SbmDbDfn.ColumnIdx.ItemLink_Type, false));
prsLink->AddToSort(SbmDbDfn.GetColumnName(SbmDbDfn.ColumnIdx.ItemLink_ItemTypeFrom, false));
prsLink->AddToSort(SbmDbDfn.GetColumnName(SbmDbDfn.ColumnIdx.ItemLink_ItemIdFrom, false));
prsLink->AddToFilter(SbmDbDfn.GetColumnName(SbmDbDfn.ColumnIdx.ItemLink_Seq) + "=0");
prsLink->Open();
while (!HasException() && prsLink->IsOpen() && !prsLink->IsEOF())
{
// Reset the sequence if the parent item has changed:
if (eLinkTypePrev != (eSapItemLinkType)prsLink->iType || eTypeFromPrev != (eSapItemType)prsLink->iItemTypeTo || itemIdFromPrev != prsLink->iItemIdTo)
{
iNextSeq = 1;
eLinkTypePrev = (eSapItemLinkType)prsLink->iType;
eTypeFromPrev = (eSapItemType)prsLink->iItemTypeTo;
itemIdFromPrev = prsLink->iItemIdTo;
iParentItemsFound++;
}
prsLink->Edit();
prsLink->iSeq = iNextSeq++;
if (!prsLink->Update())
SetException("failed to update link (" + prsLink->Exception() + ")");
iRowsModified++;
// Move to the next record in the result set:
prsLink->MoveNext();
}
SATRACE("\nSapDataItemMgr_Odbc::DoDbCleanup\n\tParent items found: " + String(iParentItemsFound) + "\n\tRows modified: " + String(iRowsModified) + "\n\n");
//---------------------------------------------------------------
}*/
return !HasErrorState();
}
public override bool ClearDataItem(Sbm.ItemType itemType, SysId itemId)
{
ClearErrorState();
if ((int)itemType < 1 || !SysId.IsValid(itemId)) return false;
List<String> filters = new List<String>();
String colItemTypeFrom = SbmDbDfn.GetColumnName(SbmDbDfn.ColumnIdx.ItemLink_ItemTypeFrom);
String colItemIdFrom = SbmDbDfn.GetColumnName(SbmDbDfn.ColumnIdx.ItemLink_ItemIdFrom);
String colItemTypeTo = SbmDbDfn.GetColumnName(SbmDbDfn.ColumnIdx.ItemLink_ItemTypeTo);
String colItemIdTo = SbmDbDfn.GetColumnName(SbmDbDfn.ColumnIdx.ItemLink_ItemIdTo);
filters.Add(colItemTypeFrom + "=" + ((int)itemType).ToString() + " AND " + colItemIdFrom + "=" + itemId.ToString());
filters.Add(colItemTypeTo + "=" + ((int)itemType).ToString() + " AND " + colItemIdTo + "=" + itemId.ToString());
String filter = filters.Concat(" OR ", "(", ")");
//return db.ExecuteDelete("DELETE FROM" + SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.ItemLink) + " WHERE " + filter);
db.ExecuteDelete(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.ItemLink), filter);
return false;
}
//-------------------------------------------------------------------
// Get ItemLink.
// Get Item.
public override SbmItemLink GetItemLink(SbmItemLink.Params prm)
{
return GetItemLink(GetItemLinkQueryFilter(prm).Concat(" AND ", "(", ")"));
@@ -140,7 +62,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
}
//-------------------------------------------------------------------
// Create ItemLink.
// Create Item.
public override SbmItemLink CreateItemLink(Sbm.ItemLinkType itemLinkType, Sbm.ItemType itemTypeFrom, SysId itemIdFrom, Sbm.ItemType itemTypeTo, SysId itemIdTo)
{
ClearErrorState();
@@ -158,7 +80,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
return itemLink;
}
//-------------------------------------------------------------------
// Has ItemLink.
// Has Item.
public override bool HasItemLinks(Sbm.ItemType itemType, SysId itemId)
{
ClearErrorState();
@@ -175,7 +97,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
}
//-------------------------------------------------------------------
// Validate ItemLink.
// Validate Item.
public override bool IsValidItemLinkData(SbmItemLink.Data data, SbmItemLink.ErrField errField)
{
ClearErrorState();
@@ -184,7 +106,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
}
//-------------------------------------------------------------------
// Insert ItemLink.
// Insert Item.
public override bool InsertItemLink(SbmItemLink itemLink, DbUpdateInfo dbUpdateInfo)
{
String fn = GetType().Name + ".InsertItemLink";
@@ -215,7 +137,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
}
//-------------------------------------------------------------------
// Update ItemLink.
// Update Item.
public override bool UpdateItemLink(SbmItemLink itemLink, DbUpdateInfo dbUpdateInfo)
{
String fn = GetType().Name + ".UpdateItemLink";
@@ -232,7 +154,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
{
try
{
// Retrieve ItemLink.
// Retrieve Item.
dbConnection.Open();
ItemLink_Db dbItemLink = new ItemLink_Db(DbInfo);
dbItemLink.PopulateFrom(dbCommand, aliasItemLink, "Id=" + SysId.ToString(itemLink.Id));
@@ -262,7 +184,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
// LinkType = 20 [eSapItemLink_Requirement_CostEstimate]; Item Type From = 52: 1080 key values, last updated recently.
// Problem stems from sequence not being set for cost estimates.
//-------------------------------------------------------------------
public override bool StoreFromItemLinks(Sbm.ItemLinkType itemLinkType, Sbm.ItemType itemTypeFrom, SysId itemIdFrom, List<SbmItemLink> itemLinks, DbUpdateInfo dbUpdateInfo)
public override bool StoreFromItemLinks(Sbm.ItemLinkType itemLinkType, ItemId itemIdFrom, List<SbmItemLink> itemLinks, DbUpdateInfo dbUpdateInfo)
{
ClearErrorState();
if ((int)itemLinkType < 1) return SetErrorState("invalid link type");
@@ -272,8 +194,8 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
{
if (itemLink == null) continue;
if (itemLink.ItemLinkType != itemLinkType) return SetErrorState("inconsistent link type found in item list");
if (itemLink.ItemTypeFrom != itemTypeFrom) return SetErrorState("inconsistent 'from' item type found in item list");
if (itemLink.ItemIdFrom != itemIdFrom) return SetErrorState("inconsistent 'from' item id found in item list");
if ((int)itemLink.ItemTypeFrom != itemIdFrom.Type) return SetErrorState("inconsistent 'from' item type found in item list");
if (itemLink.ItemIdFrom != itemIdFrom.Id) return SetErrorState("inconsistent 'from' item id found in item list");
if (itemLink.Seq < 1) return SetErrorState("invalid sequence (" + itemLink.Seq.ToString() + ") found in item list");
}
@@ -281,12 +203,12 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
List<SbmItemLink> itemLinksLocal = new List<SbmItemLink>(itemLinks);
SbmItemLink.Params prm = new SbmItemLink.Params();
prm.ItemLinkType = itemLinkType;
prm.ItemTypeFrom = itemTypeFrom;
prm.ItemIdFrom = itemIdFrom;
prm.ItemTypeFrom = (Sbm.ItemType)itemIdFrom.Type;
prm.ItemIdFrom = itemIdFrom.Id;
foreach (SbmItemLink itemLink in DataItemMgr.GetItemLinkList(prm))
{
// Does this link still exist in the list.
if (itemLinksLocal.FindByLink(itemLinkType, itemTypeFrom, itemIdFrom, prm.ItemTypeTo, prm.ItemIdTo))
if (itemLinksLocal.FindByLink(itemLinkType, (Sbm.ItemType)itemIdFrom.Type, itemIdFrom.Id, prm.ItemTypeTo, prm.ItemIdTo))
{
if (UpdateItemLink(itemLink, dbUpdateInfo))
{
@@ -294,7 +216,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
}
else SetErrorState("failed to update link");
// Remove the lisk from the local list (without deleting it).
itemLinksLocal.RemoveByLink(itemLinkType, itemTypeFrom, itemIdFrom, prm.ItemTypeTo, prm.ItemIdTo);
itemLinksLocal.RemoveByLink(itemLinkType, (Sbm.ItemType)itemIdFrom.Type, itemIdFrom.Id, prm.ItemTypeTo, prm.ItemIdTo);
}
else
{
@@ -314,7 +236,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
return !HasErrorState();
}
public override bool StoreToItemLinks(Sbm.ItemLinkType itemLinkType, Sbm.ItemType itemTypeTo, SysId itemIdTo, List<SbmItemLink> itemLinks, DbUpdateInfo dbUpdateInfo)
public override bool StoreToItemLinks(Sbm.ItemLinkType itemLinkType, ItemId itemIdTo, List<SbmItemLink> itemLinks, DbUpdateInfo dbUpdateInfo)
{
ClearErrorState();
if ((int)itemLinkType < 1) return SetErrorState("invalid link type");
@@ -324,8 +246,8 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
{
if (itemLink == null) continue;
if (itemLink.ItemLinkType != itemLinkType) return SetErrorState("inconsistent link type found in item list");
if (itemLink.ItemTypeFrom != itemTypeTo) return SetErrorState("inconsistent 'from' item type found in item list");
if (itemLink.ItemIdFrom != itemIdTo) return SetErrorState("inconsistent 'from' item id found in item list");
if ((short)itemLink.ItemTypeFrom != itemIdTo.Type) return SetErrorState("inconsistent 'from' item type found in item list");
if (itemLink.ItemIdFrom != itemIdTo.Id) return SetErrorState("inconsistent 'from' item id found in item list");
if (itemLink.Seq < 1) return SetErrorState("invalid sequence (" + itemLink.Seq.ToString() + ") found in item list");
}
@@ -333,12 +255,12 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
List<SbmItemLink> itemLinksLocal = new List<SbmItemLink>(itemLinks);
SbmItemLink.Params prm = new SbmItemLink.Params();
prm.ItemLinkType = itemLinkType;
prm.ItemTypeFrom = itemTypeTo;
prm.ItemIdFrom = itemIdTo;
prm.ItemTypeFrom = (Sbm.ItemType)itemIdTo.Type;
prm.ItemIdFrom = itemIdTo.Id;
foreach (SbmItemLink itemLink in DataItemMgr.GetItemLinkList(prm))
{
// Does this link still exist in the list.
if (itemLinksLocal.FindByLink(itemLinkType, prm.ItemTypeFrom, prm.ItemIdFrom, itemTypeTo, itemIdTo))
if (itemLinksLocal.FindByLink(itemLinkType, prm.ItemTypeFrom, prm.ItemIdFrom, (Sbm.ItemType)itemIdTo.Type, itemIdTo.Id))
{
if (UpdateItemLink(itemLink, dbUpdateInfo))
{
@@ -346,7 +268,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
}
else SetErrorState("failed to update link");
// Remove the lisk from the local list (without deleting it).
itemLinksLocal.RemoveByLink(itemLinkType, prm.ItemTypeFrom, prm.ItemIdFrom, itemTypeTo, itemIdTo);
itemLinksLocal.RemoveByLink(itemLinkType, prm.ItemTypeFrom, prm.ItemIdFrom, (Sbm.ItemType)itemIdTo.Type, itemIdTo.Id);
}
else
{
@@ -550,11 +472,11 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
List<String> filter = new List<String>();
// ItemLink Id.
String includedIds = prm.IncludedIds.Concat(",");
String includedIds = prm.IdsIncluded.Concat(",");
String colItemLink_Id = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Unknown, aliasItemLink);
if (!includedIds.IsEmpty())
filter.Add(colItemLink_Id + " IN (" + includedIds + ")");
String excludedIds = prm.ExcludedIds.Concat(",");
String excludedIds = prm.IdsExcluded.Concat(",");
if (!excludedIds.IsEmpty())
filter.Add(colItemLink_Id + " NOT IN (" + excludedIds + ")");
@@ -708,7 +630,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
// Populate filter.
query.Filters.AddRange(GetItemLinkQueryFilter(prm));
if (prm.IncludedIds.Count != 1)
if (prm.IdsIncluded.Count != 1)
{
// Configure sort sequence.
foreach (String sortColumn in GetItemLinkSortColumns(prm))
@@ -349,11 +349,11 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
List<String> filter = new List<String>();
// PriceSet Id.
String includedIds = prm.IncludedIds.Concat(",");
String includedIds = prm.IdsIncluded.Concat(",");
String colPriceSet_Id = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.SaPriceSet_Id, aliasPriceSet);
if (!includedIds.IsEmpty())
filter.Add(colPriceSet_Id + " IN (" + includedIds + ")");
String excludedIds = prm.ExcludedIds.Concat(",");
String excludedIds = prm.IdsExcluded.Concat(",");
if (!excludedIds.IsEmpty())
filter.Add(colPriceSet_Id + " NOT IN (" + excludedIds + ")");
@@ -541,7 +541,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
// Populate filter.
query.Filters.AddRange(GetPriceSetQueryFilter(prm));
if (prm.IncludedIds.Count != 1)
if (prm.IdsIncluded.Count != 1)
{
// Configure sort sequence.
foreach (String sortColumn in GetPriceSetSortColumns(prm))
@@ -390,11 +390,11 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
//--------------------------------------------------------------- -
// Process Id.
String includedIds = prm.IncludedIds.Concat(",");
String includedIds = prm.IdsIncluded.Concat(",");
String colProcess_Id = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Process_Id, aliasProcess);
if (!includedIds.IsEmpty())
filter.Add(colProcess_Id + " IN (" + includedIds + ")");
String excludedIds = prm.ExcludedIds.Concat(",");
String excludedIds = prm.IdsExcluded.Concat(",");
if (!excludedIds.IsEmpty())
filter.Add(colProcess_Id + " NOT IN (" + excludedIds + ")");
@@ -555,7 +555,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
// Populate filter.
query.Filters.AddRange(GetProcessQueryFilter(prm));
if (prm.IncludedIds.Count != 1)
if (prm.IdsIncluded.Count != 1)
{
// Configure sort sequence.
foreach (String sortColumn in GetProcessSortColumns(prm))
@@ -340,10 +340,10 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
// Location Id.
String colLocation_Id = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Location_Id, aliasLocation);
String includedIds = prm.IncludedIds.Concat(",");
String includedIds = prm.IdsIncluded.Concat(",");
if (!includedIds.IsEmpty())
filter.Add(colLocation_Id + " IN (" + includedIds + ")");
String excludedIds = prm.ExcludedIds.Concat(",");
String excludedIds = prm.IdsExcluded.Concat(",");
if (!excludedIds.IsEmpty())
filter.Add(colLocation_Id + " NOT IN (" + excludedIds + ")");
@@ -519,7 +519,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
// Populate filter.
query.Filters.AddRange(GetLocationQueryFilter(prm));
if (prm.IncludedIds.Count != 1)
if (prm.IdsIncluded.Count != 1)
{
// Configure sort sequence.
foreach (String sortColumn in GetLocationSortColumns(prm))
@@ -103,6 +103,8 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
List<StringPair> values = new List<StringPair>();
SacsDatabase.AddValuePair(values, colMovement_Status, StatusCancelled, true);
db.ExecuteUpdate(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Movement), values, lFilterSourceItem.Concat(" AND ", "(", ")"));
if (db.HasErrorState())
SetErrorState($"{db.ErrorStateMessage}");
// ToDo CalculateStockLevels(commodityIds); > in Stock-MgrDbas
return !HasErrorState();
@@ -597,10 +599,10 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
//Movement Id.
String colMovement_Id = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Movement_Id, aliasMovement);
String includedIds = prm.IncludedIds.Concat(",");
String includedIds = prm.IdsIncluded.Concat(",");
if (!includedIds.IsEmpty())
filters.Add(colMovement_Id + " IN (" + includedIds + ")");
String excludedIds = prm.ExcludedIds.Concat(",");
String excludedIds = prm.IdsExcluded.Concat(",");
if (!excludedIds.IsEmpty())
filters.Add(colMovement_Id + " NOT IN (" + excludedIds + ")");
@@ -733,7 +735,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
// Performance of querying requirements for transaction(s) within movement query is very poor - eg. ItemIdSource in (Select Id From Requirement Where TransactionId in (1,2,3)).
// Get list of requirement Ids first and then explicitly query against these in the movement query.
SbmTransaction.Params prmTrans = new SbmTransaction.Params();
prmTrans.IncludedIds = prm.ItemIdSource;
prmTrans.IdsIncluded = prm.ItemIdSource;
List<SysId> requirementId = TransactionMgr.GetRequirementByIds(prmTrans);
// Movements can be matched: either directly to one of the transactions or to any of their associated requirements.
@@ -1036,7 +1038,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
// Populate filter.
query.Filters.AddRange(GetMovementQueryFilter(prm));
if (prm.IncludedIds.Count != 1)
if (prm.IdsIncluded.Count != 1)
{
// Configure sort sequence.
foreach (String sortColumn in GetMovementSortColumns(prm))
@@ -796,11 +796,11 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
List<String> filter = new List<String>();
// Constituent Id.
String includedIds = prm.IncludedIds.Concat(",");
String includedIds = prm.IdsIncluded.Concat(",");
String colConstituent_Id = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Constituent_Id, aliasConstituent);
if (!includedIds.IsEmpty())
filter.Add(colConstituent_Id + " IN (" + includedIds + ")");
String excludedIds = prm.ExcludedIds.Concat(",");
String excludedIds = prm.IdsExcluded.Concat(",");
if (!excludedIds.IsEmpty())
filter.Add(colConstituent_Id + " NOT IN (" + excludedIds + ")");
@@ -1198,7 +1198,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
// Populate filter.
query.Filters.AddRange(GetConstituentQueryFilter(prm));
if (prm.IncludedIds.Count != 1)
if (prm.IdsIncluded.Count != 1)
{
// Configure sort sequence.
foreach (String sortColumn in GetConstituentSortColumns(prm))
@@ -132,7 +132,6 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
{
ClearErrorState();
if (!SysId.IsValid(requirementId)) return SetErrorState("Invalid item specified");
String fn = this.GetFn("ClearRequirementDependentData");
// Clear any references to this requirement from other requirements.
if (!HasErrorState())
ClearRequirementAssociatedRequirements(requirementId);
@@ -144,7 +143,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
if (db.HasErrorState())
{
String msg = "Failed to clear requirement constituents";
SaLogger.Warn(fn + " " + msg + ": " + db.ErrorStateMessage + ". RequirentId: " + SysId.ToString(requirementId));
SaLogger.Warn($"{SysUtil.Fn} {msg}: {db.ErrorStateMessage}. RequirentId: {SysId.ToString(requirementId)}.");
SetErrorState(msg);
}
}
@@ -163,7 +162,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
if (DataItemMgr.ClearDataItem(Sbm.ItemType.Requirement, requirementId))
{
String msg = "failed to clear requirement item links";
SaLogger.Warn(fn + " " + msg + ": " + DataItemMgr.ErrorStateMessage + ". RequirentId: " + SysId.ToString(requirementId));
SaLogger.Warn($"{SysUtil.Fn} {msg}: {DataItemMgr.ErrorStateMessage}. RequirentId: {requirementId}.");
SetErrorState(msg);
}
}
@@ -178,9 +177,8 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
List<StringPair> values = new List<StringPair>();
SacsDatabase.AddValuePair(values, SbmDbDfn.GetColumnName(SbmDbDfn.ColumnIdx.Requirement_ReqntIdSource), "0", false);
db.ExecuteUpdate(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Requirement), values, filter);
{
if (db.HasErrorState())
SetErrorState("Failed to clear requirement references");
}
return !HasErrorState();
}
@@ -804,12 +802,12 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
break;
case SbmRequirement.Column.ProductCode:
SetRequirementColDfn(columnDfn, "Code", 120, SbmDbDfn.ColumnIdx.Requirement_ProductCode);
if (ConfigConsole != null && AllowConfigOption(Sbm.ConfigOption.CommodityDoubleColumnWidth))
if (SessionConsole != null && AllowConfigOption(Sbm.ConfigOption.CommodityDoubleColumnWidth))
columnDfn.Width = columnDfn.Width * 2;
break;
case SbmRequirement.Column.DescBrief:
SetRequirementColDfn(columnDfn, "Description", 140, SbmDbDfn.ColumnIdx.Requirement_DescBrief);
if (ConfigConsole != null && AllowConfigOption(Sbm.ConfigOption.CommodityDoubleColumnWidth))
if (SessionConsole != null && AllowConfigOption(Sbm.ConfigOption.CommodityDoubleColumnWidth))
columnDfn.Width = columnDfn.Width * 2;
break;
case SbmRequirement.Column.DescOutline:
@@ -1785,13 +1783,13 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
//---------------------------------------------------------------
// Validate the parameters.
#if DEBUG
if (!SysId.IsValid(AffiliateId_Owner) && !SysId.IsValid(prm.AssociationId) && !SysId.IsValid(prm.CommodityId) && !SysId.IsValid(prm.TransReqntSourceId) && !prm.TransIncludedIds.HasValidIds() && !prm.ReqntIncludedIds.HasValidIds() && !prm.ReqntIdsSource.HasValidIds())
if (!SysId.IsValid(AffiliateId_Owner) && !SysId.IsValid(prm.AssociationId) && !SysId.IsValid(prm.CommodityId) && !SysId.IsValid(prm.TransactionRequirementSourceId) && !prm.TransactionIdsIncluded.HasValidIds() && !prm.RequirementIdsIncluded.HasValidIds() && !prm.RequirementIdsSource.HasValidIds())
SaLogger.Trace("\t### " + GetType().Name + ".GetRequirementQueryFilter - Owner/association/transaction not specified.");
#endif
//---------------------------------------------------------------
// Affiliate Owner - only need to be filtered if no significant Ids specified.
bool filterByOwner = !SysId.IsValid(prm.AssociationId) && !SysId.IsValid(prm.CommodityId) && !SysId.IsValid(prm.TransReqntSourceId) && !prm.TransIncludedIds.HasValidIds() && !prm.ReqntIncludedIds.HasValidIds() && !prm.ReqntIdsSource.HasValidIds();
bool filterByOwner = !SysId.IsValid(prm.AssociationId) && !SysId.IsValid(prm.CommodityId) && !SysId.IsValid(prm.TransactionRequirementSourceId) && !prm.TransactionIdsIncluded.HasValidIds() && !prm.RequirementIdsIncluded.HasValidIds() && !prm.RequirementIdsSource.HasValidIds();
if (filterByOwner)
filter.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Requirement_AffIdOwner, tableAlias, false) + "=" + SysId.ToString(AffiliateId_Owner));
@@ -1803,7 +1801,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
filter.Add(colRequirement_AssocId + "=" + prm.AssociationId.ToString());
// Association coding.
String assocFilter = DbQuery.FormatForCondition(prm.AssocPartial);
String assocFilter = DbQuery.FormatForCondition(prm.AssociationPartial);
String accountManagerCode = DbQuery.FormatForCondition(prm.AccountManagerCode);
String accountHandlerCode = DbQuery.FormatForCondition(prm.AccountHandlerCode);
if (!StringUtil.IsEmpty(assocFilter) || !StringUtil.IsEmpty(accountManagerCode) || !StringUtil.IsEmpty(accountHandlerCode))
@@ -1832,8 +1830,8 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
String colAssociation_Code = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_Code, tableAlias_Assoc, false);
String colAffiliate_Name = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Affiliate_Name, tableAlias_AssocTarget, false);
List<String> filterAssoc = new List<String>();
filterAssoc.Add(DbQuery.FormatFn_Left(colAssociation_Code, prm.AssocPartial.Length) + "='" + assocFilter + "'");
filterAssoc.Add(DbQuery.FormatFn_Left(colAffiliate_Name, prm.AssocPartial.Length) + "='" + assocFilter + "'");
filterAssoc.Add(DbQuery.FormatFn_Left(colAssociation_Code, prm.AssociationPartial.Length) + "='" + assocFilter + "'");
filterAssoc.Add(DbQuery.FormatFn_Left(colAffiliate_Name, prm.AssociationPartial.Length) + "='" + assocFilter + "'");
qryAssoc.Filters.Add(filterAssoc.Concat(" OR ", "(", ")"));
}
// Account Manager.
@@ -1855,30 +1853,30 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
//---------------------------------------------------------------
// Transaction filter.
String colRequirement_TransId = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Requirement_TransId, tableAlias, false);
if (prm.TransIncludedIds.HasValidIds())
filter.Add(colRequirement_TransId + " IN(" + prm.TransIncludedIds.Concat(",") + ")");
if (prm.TransExcludedIds.HasValidIds())
filter.Add(colRequirement_TransId + " NOT IN(" + prm.TransExcludedIds.Concat(",") + ")");
if (prm.TransactionIdsIncluded.HasValidIds())
filter.Add(colRequirement_TransId + " IN(" + prm.TransactionIdsIncluded.Concat(",") + ")");
if (prm.TransactionIdsExcluded.HasValidIds())
filter.Add(colRequirement_TransId + " NOT IN(" + prm.TransactionIdsExcluded.Concat(",") + ")");
// Transaction parameters.
SbmTransaction.Params prmTrans = new SbmTransaction.Params();
prmTrans.TableAlias = StringUtil.OnEmpty(prm.AliasTransaction, "ReqTra");
prmTrans.IncludeDefaultFilter = false;
prmTrans.TransactionType = prm.TransactionType;
prmTrans.LocationIdStock = prm.TransLocationIdStock;
prmTrans.LocationIdStock = prm.TransactionLocationIdStock;
prmTrans.StatusCat = prm.TransactionStatusCat;
prmTrans.TransRefPartial = prm.TransRefPartial;
prmTrans.TransRefExtPartial = prm.TransRefExtPartial;
prmTrans.TransDescBriefPartial = prm.TransDescBriefPartial;
prmTrans.RaisedFrom = prm.TransRaisedFrom;
prmTrans.RaisedTo = prm.TransRaisedTo;
prmTrans.RequiredFrom = prm.TransRequiredFrom;
prmTrans.RequiredTo = prm.TransRequiredTo;
prmTrans.AmountNetLt = prm.TransAmountNetLt;
prmTrans.AmountNetGt = prm.TransAmountNetGt;
prmTrans.ActiveOn = prm.TransActiveOn;
prmTrans.ActiveFrom = prm.TransActiveFrom;
prmTrans.ActiveTo = prm.TransActiveTo;
prmTrans.TransRefPartial = prm.TransactionRefPartial;
prmTrans.TransRefExtPartial = prm.TransactionRefExtPartial;
prmTrans.TransDescBriefPartial = prm.TransactionDescBriefPartial;
prmTrans.RaisedFrom = prm.TransactionRaisedFrom;
prmTrans.RaisedTo = prm.TransactionRaisedTo;
prmTrans.RequiredFrom = prm.TransactionRequiredFrom;
prmTrans.RequiredTo = prm.TransactionRequiredTo;
prmTrans.AmountNetLt = prm.TransactionAmountNetLt;
prmTrans.AmountNetGt = prm.TransactionAmountNetGt;
prmTrans.ActiveOn = prm.TransactionActiveOn;
prmTrans.ActiveFrom = prm.TransactionActiveFrom;
prmTrans.ActiveTo = prm.TransactionActiveTo;
prmTrans.ForceFullResults = true;
List<String> transactionFilters = TransactionMgr.GetTransactionQueryFilter(prmTrans);
if (transactionFilters.Count > 0)
@@ -1901,21 +1899,21 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
//---------------------------------------------------------------
// Requirement Details:
// IncludeIds & ExcludeIds.
String includedIds = prm.ReqntIncludedIds.Concat(",");
String includedIds = prm.RequirementIdsIncluded.Concat(",");
String colRequirement_Id = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Requirement_Id, tableAlias);
if (!StringUtil.IsEmpty(includedIds))
filter.Add(colRequirement_Id + " IN (" + includedIds + ")");
String excludedIds = prm.ReqntExcludedIds.Concat(",");
String excludedIds = prm.RequirementIdsExcluded.Concat(",");
if (!StringUtil.IsEmpty(excludedIds))
filter.Add(colRequirement_Id + " NOT IN (" + excludedIds + ")");
// Source Requirement.
String colRequirement_ReqntIdSource = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Requirement_ReqntIdSource, tableAlias, false);
if (prm.ReqntIdsSource.HasValidIds())
filter.Add(colRequirement_ReqntIdSource + " IN (" + prm.ReqntIdsSource.Concat(",") + ")");
if (prm.RequirementIdsSource.HasValidIds())
filter.Add(colRequirement_ReqntIdSource + " IN (" + prm.RequirementIdsSource.Concat(",") + ")");
// Source Requirment Transaction.
if (SysId.IsValid(prm.TransReqntSourceId))
if (SysId.IsValid(prm.TransactionRequirementSourceId))
{
String tableAlias_ReqntSource = "ReqSrcFlt";
String colRequirementId_ReqntSource = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Requirement_Id, tableAlias_ReqntSource, false);
@@ -1923,21 +1921,21 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
qryTrans.Tables.Add(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Requirement), tableAlias_ReqntSource);
qryTrans.Columns.Add(colRequirementId_ReqntSource);
qryTrans.Filters.Add(colRequirementId_ReqntSource + "=" + SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Requirement_ReqntIdSource, tableAlias, false));
if (SysId.IsValid(prm.TransReqntSourceId))
qryTrans.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Requirement_TransId, tableAlias_ReqntSource, false) + "=" + prm.TransReqntSourceId.ToString());
if (SysId.IsValid(prm.TransactionRequirementSourceId))
qryTrans.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Requirement_TransId, tableAlias_ReqntSource, false) + "=" + prm.TransactionRequirementSourceId.ToString());
// Add this transaction sub-query to the filter.
filter.Add("EXISTS(" + qryTrans.BuildQuery() + ")");
}
// Requirement DescBrief.
String reqntDescBrief = DbQuery.FormatForCondition(prm.ReqntDescBrief);
String reqntDescBrief = DbQuery.FormatForCondition(prm.RequirementDescBrief);
String Requirement_DescBrief = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Requirement_DescBrief, tableAlias, false);
if (!reqntDescBrief.IsEmpty())
filter.Add(DbQuery.FormatFn_Left(Requirement_DescBrief, reqntDescBrief.Length) + "='" + reqntDescBrief + "'");
// Promotion Code.
if (!StringUtil.IsEmpty(prm.ReqntPromotionCode))
filter.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Requirement_PromotionCode, tableAlias, false) + "='" + DbQuery.FormatForCondition(prm.ReqntPromotionCode) + "'");
if (!StringUtil.IsEmpty(prm.RequirementPromotionCode))
filter.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Requirement_PromotionCode, tableAlias, false) + "='" + DbQuery.FormatForCondition(prm.RequirementPromotionCode) + "'");
//---------------------------------------------------------------
@@ -1947,10 +1945,10 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
filter.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Requirement_CommodityId, tableAlias, false) + "=" + prm.CommodityId.ToString());
// Product Code.
if (!prm.ReqntProductCodeFull.IsEmpty() || !prm.ReqntProductCodePartial.IsEmpty())
if (!prm.RequirementProductCodeFull.IsEmpty() || !prm.RequirementProductCodePartial.IsEmpty())
{
String reqntProductCodeFull = DbQuery.FormatForCondition(prm.ReqntProductCodeFull);
String reqntProductCodePartial = DbQuery.FormatForCondition(prm.ReqntProductCodePartial);
String reqntProductCodeFull = DbQuery.FormatForCondition(prm.RequirementProductCodeFull);
String reqntProductCodePartial = DbQuery.FormatForCondition(prm.RequirementProductCodePartial);
String colRequirement_ProductCode = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Requirement_ProductCode, tableAlias);
if (!reqntProductCodeFull.IsEmpty())
{
@@ -1958,9 +1956,9 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
}
else if (!reqntProductCodePartial.IsEmpty())
{
if (ConfigConsole != null && AllowConfigOption(Sbm.ConfigOption.CommodityPartialCodeFilter))
if (SessionConsole != null && AllowConfigOption(Sbm.ConfigOption.CommodityPartialCodeFilter))
filter.Add(colRequirement_ProductCode + " LIKE '%" + DbQuery.FormatForLike(reqntProductCodePartial) + "%'");
else filter.Add(DbQuery.FormatFn_Left(colRequirement_ProductCode, prm.ReqntProductCodePartial.Length) + "='" + reqntProductCodePartial + "'");
else filter.Add(DbQuery.FormatFn_Left(colRequirement_ProductCode, prm.RequirementProductCodePartial.Length) + "='" + reqntProductCodePartial + "'");
}
}
@@ -1994,15 +1992,15 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
//------------------------------------------------------------------
// Project Task Code.
if (!StringUtil.IsEmpty(prm.ReqntProjectTaskCodeFull) || !StringUtil.IsEmpty(prm.ReqntProjectTaskCodePartial))
if (!StringUtil.IsEmpty(prm.RequirementProjectTaskCodeFull) || !StringUtil.IsEmpty(prm.RequirementProjectTaskCodePartial))
{
String colRequirement_ProductCode = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Requirement_ProductCode, tableAlias, false);
if (!StringUtil.IsEmpty(prm.ReqntProjectTaskCodeFull))
filter.Add(colRequirement_ProductCode + "='" + DbQuery.FormatForCondition(prm.ReqntProjectTaskCodeFull) + "'");
else if (!StringUtil.IsEmpty(prm.ReqntProjectTaskCodePartial))
if (!StringUtil.IsEmpty(prm.RequirementProjectTaskCodeFull))
filter.Add(colRequirement_ProductCode + "='" + DbQuery.FormatForCondition(prm.RequirementProjectTaskCodeFull) + "'");
else if (!StringUtil.IsEmpty(prm.RequirementProjectTaskCodePartial))
{
String reqntProjectTaskCodePartial = DbQuery.FormatForCondition(prm.ReqntProjectTaskCodePartial);
filter.Add(DbQuery.FormatFn_Left(colRequirement_ProductCode, prm.ReqntProjectTaskCodePartial.Length) + "='" + reqntProjectTaskCodePartial + "'");
String reqntProjectTaskCodePartial = DbQuery.FormatForCondition(prm.RequirementProjectTaskCodePartial);
filter.Add(DbQuery.FormatFn_Left(colRequirement_ProductCode, prm.RequirementProjectTaskCodePartial.Length) + "='" + reqntProjectTaskCodePartial + "'");
}
// Force the transaction type of 'Project'.
if (prm.TransactionType != Sbm.TransactionType.Project)
@@ -2021,13 +2019,13 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
//---------------------------------------------------------------
// Job Number.
if (!StringUtil.IsEmpty(prm.ReqntJobNumberFull) || !StringUtil.IsEmpty(prm.ReqntJobNumberPartial))
if (!StringUtil.IsEmpty(prm.RequirementJobNumberFull) || !StringUtil.IsEmpty(prm.RequirementJobNumberPartial))
{
String colRequirement_JobNumber = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Requirement_JobNumber, tableAlias, false);
if (!StringUtil.IsEmpty(prm.ReqntJobNumberFull))
filter.Add(colRequirement_JobNumber + "='" + DbQuery.FormatForCondition(prm.ReqntJobNumberFull) + "'");
else if (!StringUtil.IsEmpty(prm.ReqntJobNumberPartial))
filter.Add(DbQuery.FormatFn_Left(colRequirement_JobNumber, prm.ReqntJobNumberPartial.Length) + "='" + DbQuery.FormatForCondition(prm.ReqntJobNumberPartial) + "'");
if (!StringUtil.IsEmpty(prm.RequirementJobNumberFull))
filter.Add(colRequirement_JobNumber + "='" + DbQuery.FormatForCondition(prm.RequirementJobNumberFull) + "'");
else if (!StringUtil.IsEmpty(prm.RequirementJobNumberPartial))
filter.Add(DbQuery.FormatFn_Left(colRequirement_JobNumber, prm.RequirementJobNumberPartial.Length) + "='" + DbQuery.FormatForCondition(prm.RequirementJobNumberPartial) + "'");
}
@@ -2042,13 +2040,13 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
//---------------------------------------------------------------
// Required date.
if (DateUtil.IsValid(prm.ReqntRequiredFrom))
if (DateUtil.IsValid(prm.RequirementRequiredFrom))
{
filter.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Requirement_Required, tableAlias, false) + ">=" + DbQuery.FormatForCondition(prm.ReqntRequiredFrom.ToString()));
filter.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Requirement_Required, tableAlias, false) + ">=" + DbQuery.FormatForCondition(prm.RequirementRequiredFrom.ToString()));
}
if (DateUtil.IsValid(prm.ReqntRequiredTo))
if (DateUtil.IsValid(prm.RequirementRequiredTo))
{
filter.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Requirement_Required, tableAlias, false) + "<" + DbQuery.FormatForCondition(prm.ReqntRequiredTo.ToLongDateString() + 1));
filter.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Requirement_Required, tableAlias, false) + "<" + DbQuery.FormatForCondition(prm.RequirementRequiredTo.ToLongDateString() + 1));
}
//---------------------------------------------------------------
@@ -2182,7 +2180,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
public override List<SbmRequirement> GetRequirementsForTransaction(SysId transactionId)
{
SbmRequirement.Params prmRequirement = new SbmRequirement.Params();
prmRequirement.TransIncludedIds.Add(transactionId);
prmRequirement.TransactionIdsIncluded.Add(transactionId);
prmRequirement.StatusCat = SbmRequirement.StatusCat.Any;
return GetRequirementList(prmRequirement);
}
@@ -3186,7 +3184,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
// Populate filter.
query.Filters.AddRange(GetRequirementQueryFilter(prm));
if (prm.ReqntIncludedIds.Count != 1)
if (prm.RequirementIdsIncluded.Count != 1)
{
// Configure sort sequence.
foreach (String sortColumn in GetRequirementSortColumns(prm))
@@ -113,7 +113,8 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
{
SacsDatabase.AddValuePair(values, SbmDbDfn.GetColumnName(SbmDbDfn.ColumnIdx.Constituent_AssocId), assocId.ToString(), false);
filters.Add(SbmDbDfn.GetColumnName(SbmDbDfn.ColumnIdx.Constituent_TransId) + "=" + transaction.Id.ToString());
if (db.ExecuteUpdate(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Constituent), values, filters.Concat(" AND ", "(", ")")) > 0)
db.ExecuteUpdate(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Constituent), values, filters.Concat(" AND ", "(", ")"));
if (db.HasErrorState())
{
SetErrorState(errorStatePrefix + "transaction updates failed");
ChangeTransactionsAssociation(transaction, transaction.AssociationId); // To reset changes.
@@ -123,7 +124,8 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
{
SacsDatabase.AddValuePair(values, SbmDbDfn.GetColumnName(SbmDbDfn.ColumnIdx.Requirement_AssocId), assocId.ToString(), false);
filters.Add(SbmDbDfn.GetColumnName(SbmDbDfn.ColumnIdx.Requirement_TransId) + "=" + transaction.Id.ToString());
if (db.ExecuteUpdate(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Requirement), values, filters.Concat(" AND ", "(", ")")) > 0)
db.ExecuteUpdate(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Requirement), values, filters.Concat(" AND ", "(", ")"));
if (db.HasErrorState())
{
SetErrorState(errorStatePrefix + "requirement updates failed");
ChangeTransactionsAssociation(transaction, transaction.AssociationId); // To reset changes.
@@ -134,7 +136,8 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
filters.Clear(); values.Clear();
SacsDatabase.AddValuePair(values, SbmDbDfn.GetColumnName(SbmDbDfn.ColumnIdx.Transaction_AssocId), assocId.ToString(), false);
filters.Add(SbmDbDfn.GetColumnName(SbmDbDfn.ColumnIdx.Transaction_Id) + "=" + transaction.Id.ToString());
if (db.ExecuteUpdate(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Transaction), values, filters.Concat(" AND ", "(", ")")) > 0)
db.ExecuteUpdate(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Transaction), values, filters.Concat(" AND ", "(", ")"));
if (db.HasErrorState())
{
SetErrorState(errorStatePrefix + "transaction update failed");
ChangeTransactionsAssociation(transaction, transaction.AssociationId); // To reset changes.
@@ -154,7 +157,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
{
/* ToDo create RefreshAllocations in StockMgr for Stock Allocations.
if (!InitStockMgr()) SetErrorState("Failed to create Stock Manager");
if (!HasErrorState() && !StockMgr.RefreshAllocations(transaction, requirements, false)) SetErrorState(StockMgr.ErrorState.ToString());
if (!HasErrorState() && !StockMgr.RefreshAllocations(transaction, requirements, false)) SetErrorState(StockMgr.ErrorStateMessage);
// NB 'RefreshAllocations' updates transaction stock allocation status if necessary.*/
}
@@ -168,7 +171,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
// Refresh totals.
if (transaction.RefreshTotals(requirements))
UpdateTransaction(transaction, UserContext.DbUpdateInfo);
else SetErrorState(transaction.ErrorState.ToString());
else SetErrorState(transaction.ErrorStateMessage);
}
if (requirementListCreatedLocally)
@@ -569,7 +572,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
// Requirements.
int requirementCount = (int)transaction.GetRequirementCount();
if (requirementCount > 0 && (ConfigConsole == null || !ConfigConsole.CanRemoveTransactionWithRequirements(UserContext, transaction, requirementCount)))
if (requirementCount > 0 && (SessionConsole == null || !SessionConsole.CanRemoveTransactionWithRequirements(transaction, requirementCount)))
{
if (requirementCount == 1) return SetErrorState("item has a requirement");
else return SetErrorState("item has multiple requirements");
@@ -1275,10 +1278,10 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
//---------------------------------------------------------------
// Transaction Id.
if (prm.IncludedIds.HasValidIds())
filter.Add(colTransaction_Id + " IN (" + prm.IncludedIds.Concat(",") + ")");
if (prm.ExcludedIds.HasValidIds())
filter.Add(colTransaction_Id + " NOT IN (" + prm.ExcludedIds.Concat(",") + ")");
if (prm.IdsIncluded.HasValidIds())
filter.Add(colTransaction_Id + " IN (" + prm.IdsIncluded.Concat(",") + ")");
if (prm.IdsExcluded.HasValidIds())
filter.Add(colTransaction_Id + " NOT IN (" + prm.IdsExcluded.Concat(",") + ")");
//---------------------------------------------------------------
// Transaction Source.
@@ -1290,7 +1293,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
filtersSource.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Transaction_TransIdSource, tableAlias) + "=" + prm.TransIdSource.ToString());
// Check for combinations that allow secondary refs:
bool checkForSecondaryRefs = false;
if (ConfigConsole != null && AllowTransactionType(Sbm.TransactionType.SalesDispatch) &&
if (SessionConsole != null && AllowTransactionType(Sbm.TransactionType.SalesDispatch) &&
(AllowTransactionType(Sbm.TransactionType.ProformaSalesInvoice) || AllowTransactionType(Sbm.TransactionType.SalesInvoice)))
checkForSecondaryRefs = true;
if (checkForSecondaryRefs)
@@ -1420,7 +1423,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
if (SysId.IsValid(AffiliateId_Owner))
{
// Only need to filter on owner if no association specified, no transaction Ids and no source transaction id.
if (!SysId.IsValid(prm.AssocId) && !prm.IncludedIds.HasValidIds() && !SysId.IsValid(prm.TransIdSource))
if (!SysId.IsValid(prm.AssocId) && !prm.IdsIncluded.HasValidIds() && !SysId.IsValid(prm.TransIdSource))
filter.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Transaction_AffIdOwner, tableAlias) + "=" + SysId.ToString(AffiliateId_Owner));
}
@@ -2076,9 +2079,9 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
if (checkForInvoices)
{
// Check which types of transaction are allowed.
bool invoicesAllowed = ConfigConsole != null && (AllowTransactionType(Sbm.TransactionType.ProformaSalesInvoice) || AllowTransactionType(Sbm.TransactionType.SalesInvoice) ||
bool invoicesAllowed = SessionConsole != null && (AllowTransactionType(Sbm.TransactionType.ProformaSalesInvoice) || AllowTransactionType(Sbm.TransactionType.SalesInvoice) ||
AllowTransactionType(Sbm.TransactionType.ProformaPurchaseInvoice) || AllowTransactionType(Sbm.TransactionType.PurchaseInvoice));
bool dispatchesAllowed = ConfigConsole != null && AllowTransactionType(Sbm.TransactionType.SalesDispatch);
bool dispatchesAllowed = SessionConsole != null && AllowTransactionType(Sbm.TransactionType.SalesDispatch);
if (invoicesAllowed)
{
// Aliases & Columns.
@@ -2154,7 +2157,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
}
}
if (prm.IncludedIds.Count != 1)
if (prm.IdsIncluded.Count != 1)
{
// Configure sort sequence.
foreach (String sortColumn in GetTransactionSortColumns(prm))