Contacts
This commit is contained in:
@@ -217,7 +217,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.App
|
||||
itemTypes.Add(Sbm.ItemType.Interface, "Interface", "Interface");
|
||||
|
||||
//---------------------------------------------------------------
|
||||
// A s s o c i a t i o n s
|
||||
// Accounts.
|
||||
//---------------------------------------------------------------
|
||||
// Affiliate Type.
|
||||
affiliateTypes.Add(Sbm.AffiliateType.Individual, "IND", "Individual");
|
||||
@@ -238,7 +238,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.App
|
||||
associationTypes.Add(Sbm.AssociationType.FinanceAgency, "FIN", "Finance agency");
|
||||
|
||||
//---------------------------------------------------------------
|
||||
// T r a n s a c t i o n s
|
||||
// Transactions.
|
||||
//---------------------------------------------------------------
|
||||
// Transaction StatusCat.
|
||||
transactionStatusCats.Add(SbmTransaction.StatusCat.Pending, "PEN", "Pending");
|
||||
|
||||
@@ -455,6 +455,12 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Bus
|
||||
return IsContactGroup(AffiliateType);
|
||||
}
|
||||
|
||||
/// <summary>Most significant phone number.</summary>
|
||||
public String GetPhone()
|
||||
{
|
||||
return StringUtil.OnBlank(PhoneMain, PhoneAlt, PhoneMobile, PhoneDirect);
|
||||
}
|
||||
|
||||
// Email validation.
|
||||
public static bool IsValidEmail(String email)
|
||||
{
|
||||
|
||||
@@ -280,10 +280,9 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
|
||||
dbAffiliate._Website = affiliate.Website;
|
||||
// Ogranisation.
|
||||
dbAffiliate._AffIdParent = affiliate.AffiliateIdParent.ToInt();
|
||||
if (!affiliate.IsIndividual())
|
||||
dbAffiliate._Name = affiliate.Name;
|
||||
else
|
||||
dbAffiliate._Name = affiliate.GetDisplayName();
|
||||
if (affiliate.IsIndividual())
|
||||
affiliate.Name = affiliate.GetDisplayName();
|
||||
dbAffiliate._Name = affiliate.Name;
|
||||
dbAffiliate._Abbrev = affiliate.Abbr;
|
||||
dbAffiliate._Nature = affiliate.Nature;
|
||||
dbAffiliate._Contact = affiliate.Contact;
|
||||
@@ -293,8 +292,6 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
|
||||
// Individual.
|
||||
dbAffiliate._Title = affiliate.Title;
|
||||
dbAffiliate._Initials = affiliate.Initials;
|
||||
if (affiliate.AffiliateType == Sbm.AffiliateType.Individual)
|
||||
dbAffiliate._Name = affiliate.GetDisplayName();
|
||||
dbAffiliate._FirstName = affiliate.FirstName;
|
||||
dbAffiliate._LastName = affiliate.LastName;
|
||||
dbAffiliate._Salutation = affiliate.Salutation;
|
||||
@@ -548,7 +545,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
|
||||
String colAffiliate_Id = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Affiliate_Id, aliasAffiliate);
|
||||
if (prm.IdsIncluded.HasValidIds())
|
||||
filter.Add($"{colAffiliate_Id} IN ({prm.IdsIncluded.Concat(",")})");
|
||||
if (prm.IdsExcluded.HasValidIds() )
|
||||
if (prm.IdsExcluded.HasValidIds())
|
||||
filter.Add($"{colAffiliate_Id} NOT IN ({prm.IdsExcluded.Concat(",")})");
|
||||
|
||||
// Type.
|
||||
@@ -832,6 +829,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
|
||||
{
|
||||
// Default sort columns:
|
||||
sortColumnNames.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Affiliate_Type, aliasAffiliate) + " ASC");
|
||||
sortColumnNames.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Affiliate_Name, aliasAffiliate) + " ASC");
|
||||
}
|
||||
return sortColumnNames;
|
||||
}
|
||||
|
||||
@@ -1321,30 +1321,28 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
|
||||
//---------------------------------------------------------------
|
||||
// Association Id.
|
||||
String colAssociation_Id = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_Id, aliasAssociation);
|
||||
String includedIds = prm.IdsIncluded.Concat(",");
|
||||
if (!includedIds.IsEmpty())
|
||||
filter.Add(colAssociation_Id + " IN (" + includedIds + ")");
|
||||
String excludedIds = prm.IdsExcluded.Concat(",");
|
||||
if (!excludedIds.IsEmpty())
|
||||
filter.Add(colAssociation_Id + " NOT IN (" + excludedIds + ")");
|
||||
if (prm.IdsIncluded.HasValidIds())
|
||||
filter.Add($"{colAssociation_Id} IN ({prm.IdsIncluded.Concat(",")})");
|
||||
if (prm.IdsExcluded.HasValidIds())
|
||||
filter.Add($"{colAssociation_Id} NOT IN ({prm.IdsExcluded.Concat(",")})");
|
||||
|
||||
// Association Type.
|
||||
String colAssociation_Type = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_Type, aliasAssociation);
|
||||
if (prm.AssociationType > 0)
|
||||
filter.Add(colAssociation_Type + "=" + ((int)prm.AssociationType).ToString());
|
||||
filter.Add($"{colAssociation_Type}={(int)prm.AssociationType}");
|
||||
else if (prm.AssociationType == AssociationType.NotInternal)
|
||||
filter.Add(colAssociation_Type + "!=" + ((int)Sbm.AssociationType.Internal).ToString());
|
||||
filter.Add($"{colAssociation_Type}!={(int)Sbm.AssociationType.Internal}");
|
||||
|
||||
//---------------------------------------------------------------
|
||||
// Owner affiliate.
|
||||
String colAssociation_AffIdOwner = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_AffIdOwner, aliasAssociation);
|
||||
if (SysId.IsValid(prm.AffiliateIdOwner))
|
||||
filter.Add(colAssociation_AffIdOwner + "=" + prm.AffiliateIdOwner.ToString());
|
||||
filter.Add($"{colAssociation_AffIdOwner}={prm.AffiliateIdOwner}");
|
||||
|
||||
// Target Affiliate.
|
||||
String colAssociation_AffIdTarget = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_AffIdTarget, aliasAssociation);
|
||||
if (SysId.IsValid(prm.AffiliateIdTarget))
|
||||
filter.Add(colAssociation_AffIdTarget + "=" + prm.AffiliateIdTarget.ToString());
|
||||
filter.Add($"{colAssociation_AffIdTarget}={prm.AffiliateIdTarget}");
|
||||
|
||||
//---------------------------------------------------------------
|
||||
// Contact Group.
|
||||
|
||||
@@ -329,40 +329,38 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
|
||||
List<String> filter = new List<String>();
|
||||
|
||||
// Param Id.
|
||||
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.IdsExcluded.Concat(",");
|
||||
if (!excludedIds.IsEmpty())
|
||||
filter.Add(colSysParam_Id + " NOT IN (" + excludedIds + ")");
|
||||
if (prm.IdsIncluded.HasValidIds())
|
||||
filter.Add($"{colSysParam_Id} IN ({prm.IdsIncluded.Concat(",")})");
|
||||
if (prm.IdsExcluded.HasValidIds() )
|
||||
filter.Add($"{colSysParam_Id} NOT IN ({prm.IdsExcluded.Concat(",")})");
|
||||
|
||||
// Category.
|
||||
String colSysParam_Cat = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.SysParam_Cat, aliasSysParam);
|
||||
if (prm.Category > 0)
|
||||
filter.Add(colSysParam_Cat + " = '" + ((int)prm.Category).ToString() + "'");
|
||||
filter.Add($"{colSysParam_Cat}={(int)prm.Category}");
|
||||
|
||||
// Name.
|
||||
String colSysParam_Name = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.SysParam_Name, aliasSysParam);
|
||||
if (!StringUtil.IsEmpty(prm.Name))
|
||||
filter.Add(colSysParam_Name + " = '" + DbQuery.FormatForCondition(prm.Name) + "'");
|
||||
if (!StringUtil.IsEmpty(prm.NamePartial))
|
||||
filter.Add(colSysParam_Name + " LIKE '%" + DbQuery.FormatForLike(prm.NamePartial) + "%'");
|
||||
filter.Add($"{colSysParam_Name}='{DbQuery.FormatForCondition(prm.Name)}'");
|
||||
else if (!StringUtil.IsEmpty(prm.NamePartial))
|
||||
filter.Add($"{colSysParam_Name} LIKE '%{DbQuery.FormatForLike(prm.NamePartial)}%'");
|
||||
|
||||
// Affiliate Owner Id.
|
||||
String colSysParam_AffIdOwner = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.SysParam_AffIdOwner, aliasSysParam);
|
||||
if (SysId.IsValid(prm.AffIdOwner))
|
||||
filter.Add(colSysParam_AffIdOwner + " = '" + DbQuery.FormatForCondition(SysId.ToString(prm.AffIdOwner)) + "'");
|
||||
filter.Add($"{colSysParam_AffIdOwner}={SysId.ToLong(prm.AffIdOwner)}");
|
||||
|
||||
// Affiliate Target Id.
|
||||
String colSysParam_AffIdTarget = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.SysParam_AffIdTarget, aliasSysParam);
|
||||
if (SysId.IsValid(prm.AssocId))
|
||||
filter.Add(colSysParam_AffIdTarget + " = '" + DbQuery.FormatForCondition(SysId.ToString(prm.AssocId)) + "'");
|
||||
filter.Add($"{colSysParam_AffIdTarget}={SysId.ToLong(prm.AssocId)}");
|
||||
|
||||
// Association Id.
|
||||
String colSysParam_AssocId = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.SysParam_AssocId, aliasSysParam);
|
||||
if (SysId.IsValid(prm.AssocId))
|
||||
filter.Add(colSysParam_AssocId + " = '" + DbQuery.FormatForCondition(SysId.ToString(prm.AssocId)) + "'");
|
||||
filter.Add($"{colSysParam_AssocId}={SysId.ToLong(prm.AssocId)}");
|
||||
|
||||
// Common Properties
|
||||
/* Notes.
|
||||
|
||||
@@ -196,7 +196,6 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
|
||||
// Insert VehicleClass.
|
||||
public override bool InsertVehicleClass(SbmVehicleClass vehicleClass, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
String fn = GetType().Name + ".InsertVehicleClass";
|
||||
ClearErrorState();
|
||||
if (!IsValidVehicleClass(vehicleClass)) return false;
|
||||
if (SysId.IsValid(vehicleClass.Id)) return SetErrorState(ErrorMessage.ValiditemId);
|
||||
@@ -216,7 +215,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
|
||||
dbVehicleClass.ExecuteInsertCommand(dbCommand);
|
||||
vehicleClass.Id = new SysId(dbVehicleClass._Id);
|
||||
vehicleClass.Changed = false;
|
||||
if (DebugMode) SaLogger.Debug(fn + " Insert. " + GetLogProperties(vehicleClass).Concat(": ").Concat("", "\n\t"));
|
||||
if (DebugMode) SaLogger.Debug($"{SysUtil.Fn} Insert. " + GetLogProperties(vehicleClass).Concat(": ").Concat("", "\n\t"));
|
||||
}
|
||||
catch (Exception exc) { SetErrorState(exc.Message); }
|
||||
}
|
||||
@@ -227,13 +226,12 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
|
||||
// Update VehicleClass.
|
||||
public override bool UpdateVehicleClass(SbmVehicleClass vehicleClass, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
String fn = GetType().Name + ".UpdateVehicleClass";
|
||||
ClearErrorState();
|
||||
if (!IsValidVehicleClass(vehicleClass)) return false;
|
||||
if (!SysId.IsValid(vehicleClass.Id)) return SetErrorState(ErrorMessage.InvalidItemId);
|
||||
if (!vehicleClass.Changed)
|
||||
{
|
||||
if (DebugMode) SaLogger.Debug(fn + " Data not changed. " + GetLogProperties(vehicleClass).Concat(": ").Concat("", "\n\t"));
|
||||
if (DebugMode) SaLogger.Debug($"{SysUtil.Fn} Data not changed. " + GetLogProperties(vehicleClass).Concat(": ").Concat("", "\n\t"));
|
||||
return true;
|
||||
}
|
||||
using (var dbConnection = db.CreateConnection())
|
||||
@@ -251,7 +249,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
|
||||
PopulateTo(dbVehicleClass, vehicleClass, dbUpdateInfo);
|
||||
dbVehicleClass.ExecuteUpdateCommand(dbCommand);
|
||||
vehicleClass.Changed = false;
|
||||
if (DebugMode) SaLogger.Debug(fn + " Updated. " + GetLogProperties(vehicleClass).Concat(": ").Concat("", "\n\t"));
|
||||
if (DebugMode) SaLogger.Debug($"{SysUtil.Fn} Updated. " + GetLogProperties(vehicleClass).Concat(": ").Concat("", "\n\t"));
|
||||
|
||||
// Record updates.
|
||||
updateLogMonitor.RecordUpdatedValues(vehicleClass);
|
||||
@@ -272,7 +270,6 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
|
||||
}
|
||||
public override bool DeleteVehicleClass(SbmVehicleClass vehicleClass, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
String fn = GetType().Name + ".DeleteVehicleClass";
|
||||
ClearErrorState();
|
||||
if (!VehicleClassCanBeDeleted(vehicleClass)) return false;
|
||||
using (var dbConnection = db.CreateConnection())
|
||||
@@ -289,7 +286,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
|
||||
dbCommand.CommandText = "DELETE FROM " + SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.SaVehicleClass) + " WHERE Id=" + SysId.ToString(vehicleClass.Id) + ";";
|
||||
dbCommand.ExecuteNonQuery();
|
||||
vehicleClass.Changed = false;
|
||||
if (DebugMode) SaLogger.Debug(fn + " Delete. " + GetLogProperties(vehicleClass).Concat(": ").Concat("", "\n\t"));
|
||||
if (DebugMode) SaLogger.Debug($"{SysUtil.Fn} Delete. " + GetLogProperties(vehicleClass).Concat(": ").Concat("", "\n\t"));
|
||||
}
|
||||
catch (Exception exc) { SetErrorState(exc.Message); }
|
||||
}
|
||||
@@ -549,12 +546,10 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
|
||||
filter.Add($"{colModel} Like '{DbQuery.FormatForLike(prm.ModelPartial)}'");
|
||||
|
||||
// Description.
|
||||
String descBrief = DbQuery.FormatForCondition(prm.DescBrief);
|
||||
String descBriefPartial = DbQuery.FormatForCondition(prm.DescBriefPartial);
|
||||
if (!StringUtil.IsBlank(descBrief))
|
||||
filter.Add(colDescBrief + "='" + descBrief + "'");
|
||||
else if (!StringUtil.IsBlank(descBriefPartial))
|
||||
filter.Add(DbQuery.FormatFn_Left(colDescBrief, prm.DescBriefPartial.Length) + "='" + descBriefPartial + "'");
|
||||
if (!StringUtil.IsBlank(prm.DescBrief))
|
||||
filter.Add($"{colDescBrief}='{DbQuery.FormatForCondition(prm.DescBrief)}'");
|
||||
else if (!StringUtil.IsBlank(prm.DescBriefPartial))
|
||||
filter.Add($"{colDescBrief} LIKE '%{DbQuery.FormatForLike(prm.DescBriefPartial)}%'");
|
||||
|
||||
// Vehicle Category code.
|
||||
String colVehicleClass_VehicleCategoryCode = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.SaVehicleClass_VehicleCategoryCode, aliasVehicleClass);
|
||||
|
||||
@@ -105,7 +105,6 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
|
||||
// Insert VehicleEvent.
|
||||
public override bool InsertVehicleEvent(SbmVehicleEvent vehicleEvent, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
String fn = GetType().Name + ".InsertVehicleEvent";
|
||||
ClearErrorState();
|
||||
if (!IsValidVehicleEvent(vehicleEvent)) return false;
|
||||
if (SysId.IsValid(vehicleEvent.Id)) return SetErrorState(ErrorMessage.ValiditemId);
|
||||
@@ -125,7 +124,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
|
||||
dbVehicleEvent.ExecuteInsertCommand(dbCommand);
|
||||
vehicleEvent.Id = new SysId(dbVehicleEvent._Id);
|
||||
vehicleEvent.Changed = false;
|
||||
if (DebugMode) SaLogger.Debug(fn + " Inserted. " + GetLogProperties(vehicleEvent).Concat(": ").Concat("", "\n\t"));
|
||||
if (DebugMode) SaLogger.Debug($"{SysUtil.Fn} Inserted. " + GetLogProperties(vehicleEvent).Concat(": ").Concat("", "\n\t"));
|
||||
}
|
||||
catch (Exception exc) { SetErrorState(exc.Message); }
|
||||
}
|
||||
@@ -136,13 +135,12 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
|
||||
// Update VehicleEvent.
|
||||
public override bool UpdateVehicleEvent(SbmVehicleEvent vehicleEvent, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
String fn = GetType().Name + ".UpdateVehicleEvent";
|
||||
ClearErrorState();
|
||||
if (!IsValidVehicleEvent(vehicleEvent)) return false;
|
||||
if (!SysId.IsValid(vehicleEvent.Id)) return SetErrorState(ErrorMessage.InvalidItemId);
|
||||
if (!vehicleEvent.Changed)
|
||||
{
|
||||
if (DebugMode) SaLogger.Debug(fn + " Data not changed. " + GetLogProperties(vehicleEvent).Concat(": ").Concat("", "\n\t"));
|
||||
if (DebugMode) SaLogger.Debug($"{SysUtil.Fn} Data not changed. " + GetLogProperties(vehicleEvent).Concat(": ").Concat("", "\n\t"));
|
||||
return true;
|
||||
}
|
||||
using (var dbConnection = db.CreateConnection())
|
||||
@@ -160,7 +158,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
|
||||
PopulateTo(dbVehicleEvent, vehicleEvent, dbUpdateInfo);
|
||||
dbVehicleEvent.ExecuteUpdateCommand(dbCommand);
|
||||
vehicleEvent.Changed = false;
|
||||
if (DebugMode) SaLogger.Debug(fn + " Updated. " + GetLogProperties(vehicleEvent).Concat(": ").Concat("", "\n\t"));
|
||||
if (DebugMode) SaLogger.Debug($"{SysUtil.Fn} Updated. " + GetLogProperties(vehicleEvent).Concat(": ").Concat("", "\n\t"));
|
||||
|
||||
// Record updates.
|
||||
updateLogMonitor.RecordUpdatedValues(vehicleEvent);
|
||||
@@ -181,7 +179,6 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
|
||||
}
|
||||
public override bool DeleteVehicleEvent(SbmVehicleEvent vehicleEvent, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
String fn = GetType().Name + ".DeleteVehicleEvent";
|
||||
ClearErrorState();
|
||||
if (!VehicleEventCanBeDeleted(vehicleEvent)) return false;
|
||||
using (var dbConnection = db.CreateConnection())
|
||||
@@ -198,7 +195,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
|
||||
dbCommand.CommandText = "DELETE FROM " + SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.SaVehicleEvent) + " WHERE Id=" + SysId.ToString(vehicleEvent.Id) + ";";
|
||||
dbCommand.ExecuteNonQuery();
|
||||
vehicleEvent.Changed = false;
|
||||
if (DebugMode) SaLogger.Debug(fn + " Deleted. " + GetLogProperties(vehicleEvent).Concat(": ").Concat("", "\n\t"));
|
||||
if (DebugMode) SaLogger.Debug($"{SysUtil.Fn} Deleted. " + GetLogProperties(vehicleEvent).Concat(": ").Concat("", "\n\t"));
|
||||
}
|
||||
catch (Exception exc) { SetErrorState(exc.Message); }
|
||||
}
|
||||
|
||||
@@ -204,7 +204,6 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
|
||||
// Insert VehicleFeature.
|
||||
public override bool InsertVehicleFeature(SbmVehicleFeature vehicleFeature, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
String fn = GetType().Name + ".InsertVehicleFeature";
|
||||
ClearErrorState();
|
||||
if (!IsValidVehicleFeature(vehicleFeature)) return false;
|
||||
if (SysId.IsValid(vehicleFeature.Id)) return SetErrorState(ErrorMessage.ValiditemId);
|
||||
@@ -224,7 +223,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
|
||||
dbVehicleFeature.ExecuteInsertCommand(dbCommand);
|
||||
vehicleFeature.Id = new SysId(dbVehicleFeature._VehicleId);
|
||||
vehicleFeature.Changed = false;
|
||||
if (DebugMode) SaLogger.Debug(fn + " Inserted. " + GetLogProperties(vehicleFeature).Concat(": ").Concat("", "\n\t"));
|
||||
if (DebugMode) SaLogger.Debug($"{SysUtil.Fn} Inserted. " + GetLogProperties(vehicleFeature).Concat(": ").Concat("", "\n\t"));
|
||||
}
|
||||
catch (Exception exc) { SetErrorState(exc.Message); }
|
||||
}
|
||||
@@ -235,13 +234,12 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
|
||||
// Update VehicleFeature.
|
||||
public override bool UpdateVehicleFeature(SbmVehicleFeature vehicleFeature, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
String fn = GetType().Name + ".UpdateVehicleFeature";
|
||||
ClearErrorState();
|
||||
if (!IsValidVehicleFeature(vehicleFeature)) return false;
|
||||
if (!SysId.IsValid(vehicleFeature.Id)) return SetErrorState(ErrorMessage.InvalidItemId);
|
||||
if (!vehicleFeature.Changed)
|
||||
{
|
||||
if (DebugMode) SaLogger.Debug(fn + " Data not changed. " + GetLogProperties(vehicleFeature).Concat(": ").Concat("", "\n\t"));
|
||||
if (DebugMode) SaLogger.Debug($"{SysUtil.Fn} Data not changed. " + GetLogProperties(vehicleFeature).Concat(": ").Concat("", "\n\t"));
|
||||
return true;
|
||||
}
|
||||
using (var dbConnection = db.CreateConnection())
|
||||
@@ -259,7 +257,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
|
||||
PopulateTo(dbVehicleFeature, vehicleFeature, dbUpdateInfo);
|
||||
dbVehicleFeature.ExecuteUpdateCommand(dbCommand);
|
||||
vehicleFeature.Changed = false;
|
||||
if (DebugMode) SaLogger.Debug(fn + " Updated. " + GetLogProperties(vehicleFeature).Concat(": ").Concat("", "\n\t"));
|
||||
if (DebugMode) SaLogger.Debug($"{SysUtil.Fn} Updated. " + GetLogProperties(vehicleFeature).Concat(": ").Concat("", "\n\t"));
|
||||
|
||||
// Record updates.
|
||||
updateLogMonitor.RecordUpdatedValues(vehicleFeature);
|
||||
@@ -280,7 +278,6 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
|
||||
}
|
||||
public override bool DeleteVehicleFeature(SbmVehicleFeature vehicleFeature, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
String fn = GetType().Name + ".DeleteVehicleFeature";
|
||||
ClearErrorState();
|
||||
if (!VehicleFeatureCanBeDeleted(vehicleFeature)) return false;
|
||||
using (var dbConnection = db.CreateConnection())
|
||||
@@ -297,7 +294,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
|
||||
dbCommand.CommandText = "DELETE FROM " + SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.SaVehicleFeature) + " WHERE Id=" + SysId.ToString(vehicleFeature.Id) + ";";
|
||||
dbCommand.ExecuteNonQuery();
|
||||
vehicleFeature.Changed = false;
|
||||
if (DebugMode) SaLogger.Debug(fn + " Deleted. " + GetLogProperties(vehicleFeature).Concat(": ").Concat("", "\n\t"));
|
||||
if (DebugMode) SaLogger.Debug($"{SysUtil.Fn} Deleted. " + GetLogProperties(vehicleFeature).Concat(": ").Concat("", "\n\t"));
|
||||
}
|
||||
catch (Exception exc) { SetErrorState(exc.Message); }
|
||||
}
|
||||
|
||||
@@ -624,7 +624,6 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
|
||||
// Insert Commodity.
|
||||
public override bool InsertCommodity(SbmCommodity commodity, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
String fn = GetType().Name + ".InsertCommodity";
|
||||
ClearErrorState();
|
||||
if (!IsValidCommodity(commodity)) return false;
|
||||
if (SysId.IsValid(commodity.Id)) return SetErrorState(ErrorMessage.ValiditemId);
|
||||
@@ -644,7 +643,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
|
||||
dbCommodity.ExecuteInsertCommand(dbCommand);
|
||||
commodity.Id = new SysId(dbCommodity._Id);
|
||||
commodity.Changed = false;
|
||||
if (DebugMode) SaLogger.Debug(fn + " Inserted. " + GetLogProperties(commodity).Concat(": ").Concat("", "\n\t"));
|
||||
if (DebugMode) SaLogger.Debug($"{SysUtil.Fn} Inserted. " + GetLogProperties(commodity).Concat(": ").Concat("", "\n\t"));
|
||||
}
|
||||
catch (Exception exc) { SetErrorState(exc.Message); }
|
||||
}
|
||||
@@ -655,13 +654,12 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
|
||||
// Update Commodity.
|
||||
public override bool UpdateCommodity(SbmCommodity commodity, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
String fn = GetType().Name + ".UpdateCommodity";
|
||||
ClearErrorState();
|
||||
if (!IsValidCommodity(commodity)) return false;
|
||||
if (!SysId.IsValid(commodity.Id)) return SetErrorState(ErrorMessage.InvalidItemId);
|
||||
if (!commodity.Changed)
|
||||
{
|
||||
if (DebugMode) SaLogger.Debug(fn + " Data not changed. " + GetLogProperties(commodity).Concat(": ").Concat("", "\n\t"));
|
||||
if (DebugMode) SaLogger.Debug($"{SysUtil.Fn} Data not changed. " + GetLogProperties(commodity).Concat(": ").Concat("", "\n\t"));
|
||||
return true;
|
||||
}
|
||||
using (var dbConnection = db.CreateConnection())
|
||||
@@ -679,7 +677,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
|
||||
PopulateTo(dbCommodity, commodity, dbUpdateInfo);
|
||||
dbCommodity.ExecuteUpdateCommand(dbCommand);
|
||||
commodity.Changed = false;
|
||||
if (DebugMode) SaLogger.Debug(fn + " Updated. " + GetLogProperties(commodity).Concat(": ").Concat("", "\n\t"));
|
||||
if (DebugMode) SaLogger.Debug($"{SysUtil.Fn} Updated. " + GetLogProperties(commodity).Concat(": ").Concat("", "\n\t"));
|
||||
|
||||
// Record updates.
|
||||
updateLogMonitor.RecordUpdatedValues(commodity);
|
||||
@@ -700,7 +698,6 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
|
||||
}
|
||||
public override bool DeleteCommodity(SbmCommodity commodity, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
String fn = GetType().Name + ".DeleteCommodity";
|
||||
ClearErrorState();
|
||||
if (!CommodityCanBeDeleted(commodity)) return false;
|
||||
using (var dbConnection = db.CreateConnection())
|
||||
@@ -717,7 +714,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
|
||||
dbCommand.CommandText = "DELETE FROM " + SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Commodity) + " WHERE Id=" + SysId.ToString(commodity.Id) + ";";
|
||||
dbCommand.ExecuteNonQuery();
|
||||
commodity.Changed = false;
|
||||
if (DebugMode) SaLogger.Debug(fn + " Deleted. " + GetLogProperties(commodity).Concat(": ").Concat("", "\n\t"));
|
||||
if (DebugMode) SaLogger.Debug($"{SysUtil.Fn} Deleted. " + GetLogProperties(commodity).Concat(": ").Concat("", "\n\t"));
|
||||
}
|
||||
catch (Exception exc) { SetErrorState(exc.Message); }
|
||||
}
|
||||
@@ -2281,7 +2278,6 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
|
||||
// Commodity query filter.
|
||||
public override List<string> GetCommodityQueryFilter(SbmCommodity.Params prm)
|
||||
{
|
||||
String fn = GetType().Name + ".GetCommodityQueryFilter";
|
||||
List<String> filter = new List<String>();
|
||||
|
||||
//---------------------------------------------------------------
|
||||
@@ -2598,7 +2594,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
|
||||
}
|
||||
filter.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_Id, aliasCommodity) + " IN (" + qryCmdCust.BuildQuery() + ")");
|
||||
}
|
||||
else SaLogger.Error(fn + " CmdCust filter specified and CmdCust management not allowed");
|
||||
else SaLogger.Error($"{SysUtil.Fn} CmdCust filter specified and CmdCust management not allowed");
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------
|
||||
|
||||
@@ -210,7 +210,6 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
|
||||
// Insert CommodityCustomer.
|
||||
public override bool InsertCommodityCustomer(SbmCommodityCustomer commodityCustomer, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
String fn = GetType().Name + ".InsertCommodityCustomer";
|
||||
ClearErrorState();
|
||||
if (!IsValidCommodityCustomer(commodityCustomer)) return false;
|
||||
if (SysId.IsValid(commodityCustomer.Id)) return SetErrorState(ErrorMessage.ValiditemId);
|
||||
@@ -230,7 +229,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
|
||||
dbCommodityCustomer.ExecuteInsertCommand(dbCommand);
|
||||
commodityCustomer.Id = new SysId(dbCommodityCustomer._CommodityId);
|
||||
commodityCustomer.Changed = false;
|
||||
if (DebugMode) SaLogger.Debug(fn + " Inserted. " + GetLogProperties(commodityCustomer).Concat(": ").Concat("", "\n\t"));
|
||||
if (DebugMode) SaLogger.Debug($"{SysUtil.Fn} Inserted. " + GetLogProperties(commodityCustomer).Concat(": ").Concat("", "\n\t"));
|
||||
}
|
||||
catch (Exception exc) { SetErrorState(exc.Message); }
|
||||
}
|
||||
@@ -241,13 +240,12 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
|
||||
// Update CommodityCustomer.
|
||||
public override bool UpdateCommodityCustomer(SbmCommodityCustomer commodityCustomer, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
String fn = GetType().Name + ".UpdateCommodityCustomer";
|
||||
ClearErrorState();
|
||||
if (!IsValidCommodityCustomer(commodityCustomer)) return false;
|
||||
if (!SysId.IsValid(commodityCustomer.Id)) return SetErrorState(ErrorMessage.InvalidItemId);
|
||||
if (!commodityCustomer.Changed)
|
||||
{
|
||||
if (DebugMode) SaLogger.Debug(fn + " Data not changed. " + GetLogProperties(commodityCustomer).Concat(": ").Concat("", "\n\t"));
|
||||
if (DebugMode) SaLogger.Debug($"{SysUtil.Fn} Data not changed. " + GetLogProperties(commodityCustomer).Concat(": ").Concat("", "\n\t"));
|
||||
return true;
|
||||
}
|
||||
using (var dbConnection = db.CreateConnection())
|
||||
@@ -265,7 +263,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
|
||||
PopulateTo(dbCommodityCustomer, commodityCustomer, dbUpdateInfo);
|
||||
dbCommodityCustomer.ExecuteUpdateCommand(dbCommand);
|
||||
commodityCustomer.Changed = false;
|
||||
if (DebugMode) SaLogger.Debug(fn + " Updated. " + GetLogProperties(commodityCustomer).Concat(": ").Concat("", "\n\t"));
|
||||
if (DebugMode) SaLogger.Debug($"{SysUtil.Fn} Updated. " + GetLogProperties(commodityCustomer).Concat(": ").Concat("", "\n\t"));
|
||||
|
||||
// Record updates.
|
||||
updateLogMonitor.RecordUpdatedValues(commodityCustomer);
|
||||
@@ -286,7 +284,6 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
|
||||
}
|
||||
public override bool DeleteCommodityCustomer(SbmCommodityCustomer commodityCustomer, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
String fn = GetType().Name + ".DeleteCommodityCustomer";
|
||||
ClearErrorState();
|
||||
if (!CommodityCustomerCanBeDeleted(commodityCustomer)) return false;
|
||||
using (var dbConnection = db.CreateConnection())
|
||||
@@ -303,7 +300,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
|
||||
dbCommand.CommandText = "DELETE FROM " + SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.CommodityCustomer) + " WHERE Id=" + SysId.ToString(commodityCustomer.Id) + ";";
|
||||
dbCommand.ExecuteNonQuery();
|
||||
commodityCustomer.Changed = false;
|
||||
if (DebugMode) SaLogger.Debug(fn + " Deleted. " + GetLogProperties(commodityCustomer).Concat(": ").Concat("", "\n\t"));
|
||||
if (DebugMode) SaLogger.Debug($"{SysUtil.Fn} Deleted. " + GetLogProperties(commodityCustomer).Concat(": ").Concat("", "\n\t"));
|
||||
}
|
||||
catch (Exception exc) { SetErrorState(exc.Message); }
|
||||
}
|
||||
|
||||
@@ -125,7 +125,6 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
|
||||
// Insert CommoditySupplier.
|
||||
public override bool InsertCommoditySupplier(SbmCommoditySupplier commoditySupplier, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
String fn = GetType().Name + ".InsertCommoditySupplier";
|
||||
ClearErrorState();
|
||||
if (!IsValidCommoditySupplier(commoditySupplier)) return false;
|
||||
if (SysId.IsValid(commoditySupplier.Id)) return SetErrorState(ErrorMessage.ValiditemId);
|
||||
@@ -145,7 +144,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
|
||||
dbCommoditySupplier.ExecuteInsertCommand(dbCommand);
|
||||
commoditySupplier.Id = new SysId(dbCommoditySupplier._CommodityId);
|
||||
commoditySupplier.Changed = false;
|
||||
if (DebugMode) SaLogger.Debug(fn + " Inserted. " + GetLogProperties(commoditySupplier).Concat(": ").Concat("", "\n\t"));
|
||||
if (DebugMode) SaLogger.Debug($"{SysUtil.Fn} Inserted. " + GetLogProperties(commoditySupplier).Concat(": ").Concat("", "\n\t"));
|
||||
}
|
||||
catch (Exception exc) { SetErrorState(exc.Message); }
|
||||
}
|
||||
@@ -156,13 +155,12 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
|
||||
// Update CommoditySupplier.
|
||||
public override bool UpdateCommoditySupplier(SbmCommoditySupplier commoditySupplier, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
String fn = GetType().Name + ".UpdateCommoditySupplier";
|
||||
ClearErrorState();
|
||||
if (!IsValidCommoditySupplier(commoditySupplier)) return false;
|
||||
if (!SysId.IsValid(commoditySupplier.Id)) return SetErrorState(ErrorMessage.InvalidItemId);
|
||||
if (!commoditySupplier.Changed)
|
||||
{
|
||||
if (DebugMode) SaLogger.Debug(fn + " Data not changed. " + GetLogProperties(commoditySupplier).Concat(": ").Concat("", "\n\t"));
|
||||
if (DebugMode) SaLogger.Debug($"{SysUtil.Fn} Data not changed. " + GetLogProperties(commoditySupplier).Concat(": ").Concat("", "\n\t"));
|
||||
return true;
|
||||
}
|
||||
using (var dbConnection = db.CreateConnection())
|
||||
@@ -180,7 +178,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
|
||||
PopulateTo(dbCommoditySupplier, commoditySupplier, dbUpdateInfo);
|
||||
dbCommoditySupplier.ExecuteUpdateCommand(dbCommand);
|
||||
commoditySupplier.Changed = false;
|
||||
if (DebugMode) SaLogger.Debug(fn + " Updated. " + GetLogProperties(commoditySupplier).Concat(": ").Concat("", "\n\t"));
|
||||
if (DebugMode) SaLogger.Debug($"{SysUtil.Fn} Updated. " + GetLogProperties(commoditySupplier).Concat(": ").Concat("", "\n\t"));
|
||||
|
||||
/* Record updates.
|
||||
updateLogMonitor.RecordUpdatedValues(commoditySupplier);
|
||||
@@ -201,7 +199,6 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
|
||||
}
|
||||
public override bool DeleteCommoditySupplier(SbmCommoditySupplier commoditySupplier, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
String fn = GetType().Name + ".DeleteCommoditySupplier";
|
||||
ClearErrorState();
|
||||
if (!CommoditySupplierCanBeDeleted(commoditySupplier)) return false;
|
||||
using (var dbConnection = db.CreateConnection())
|
||||
@@ -218,7 +215,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
|
||||
dbCommand.CommandText = "DELETE FROM " + SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.CommoditySupplier) + " WHERE Id=" + SysId.ToString(commoditySupplier.Id) + ";";
|
||||
dbCommand.ExecuteNonQuery();
|
||||
commoditySupplier.Changed = false;
|
||||
if (DebugMode) SaLogger.Debug(fn + " Deleted. " + GetLogProperties(commoditySupplier).Concat(": ").Concat("", "\n\t"));
|
||||
if (DebugMode) SaLogger.Debug($"{SysUtil.Fn} Deleted. " + GetLogProperties(commoditySupplier).Concat(": ").Concat("", "\n\t"));
|
||||
}
|
||||
catch (Exception exc) { SetErrorState(exc.Message); }
|
||||
}
|
||||
|
||||
@@ -100,7 +100,6 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
|
||||
// Insert Container.
|
||||
public override bool InsertContainer(SbmContainer container, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
String fn = GetType().Name + ".InsertContainer";
|
||||
ClearErrorState();
|
||||
if (!IsValidContainer(container)) return false;
|
||||
if (SysId.IsValid(container.Id)) return SetErrorState(ErrorMessage.ValiditemId);
|
||||
@@ -120,7 +119,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
|
||||
dbContainer.ExecuteInsertCommand(dbCommand);
|
||||
container.Id = new SysId(dbContainer._Id);
|
||||
container.Changed = false;
|
||||
if (DebugMode) SaLogger.Debug(fn + " Inserted. " + GetLogProperties(container).Concat(": ").Concat("", "\n\t"));
|
||||
if (DebugMode) SaLogger.Debug($"{SysUtil.Fn} Inserted. " + GetLogProperties(container).Concat(": ").Concat("", "\n\t"));
|
||||
}
|
||||
catch (Exception exc) { SetErrorState(exc.Message); }
|
||||
}
|
||||
@@ -131,13 +130,12 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
|
||||
// Update Container.
|
||||
public override bool UpdateContainer(SbmContainer container, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
String fn = GetType().Name + ".UpdateContainer";
|
||||
ClearErrorState();
|
||||
if (!IsValidContainer(container)) return false;
|
||||
if (!SysId.IsValid(container.Id)) return SetErrorState(ErrorMessage.InvalidItemId);
|
||||
if (!container.Changed)
|
||||
{
|
||||
if (DebugMode) SaLogger.Debug(fn + " Data not changed. " + GetLogProperties(container).Concat(": ").Concat("", "\n\t"));
|
||||
if (DebugMode) SaLogger.Debug($"{SysUtil.Fn} Data not changed. " + GetLogProperties(container).Concat(": ").Concat("", "\n\t"));
|
||||
return true;
|
||||
}
|
||||
using (var dbConnection = db.CreateConnection())
|
||||
@@ -155,7 +153,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
|
||||
PopulateTo(dbContainer, container, dbUpdateInfo);
|
||||
dbContainer.ExecuteUpdateCommand(dbCommand);
|
||||
container.Changed = false;
|
||||
if (DebugMode) SaLogger.Debug(fn + " Updated. " + GetLogProperties(container).Concat(": ").Concat("", "\n\t"));
|
||||
if (DebugMode) SaLogger.Debug($"{SysUtil.Fn} Updated. " + GetLogProperties(container).Concat(": ").Concat("", "\n\t"));
|
||||
|
||||
// Record updates.
|
||||
updateLogMonitor.RecordUpdatedValues(container);
|
||||
@@ -176,7 +174,6 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
|
||||
}
|
||||
public override bool DeleteContainer(SbmContainer container, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
String fn = GetType().Name + ".DeleteContainer";
|
||||
ClearErrorState();
|
||||
if (!ContainerCanBeDeleted(container)) return false;
|
||||
using (var dbConnection = db.CreateConnection())
|
||||
@@ -193,7 +190,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
|
||||
dbCommand.CommandText = "DELETE FROM " + SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Container) + " WHERE Id=" + SysId.ToString(container.Id) + ";";
|
||||
dbCommand.ExecuteNonQuery();
|
||||
container.Changed = false;
|
||||
if (DebugMode) SaLogger.Debug(fn + " Deleted. " + GetLogProperties(container).Concat(": ").Concat("", "\n\t"));
|
||||
if (DebugMode) SaLogger.Debug($"{SysUtil.Fn} Deleted. " + GetLogProperties(container).Concat(": ").Concat("", "\n\t"));
|
||||
}
|
||||
catch (Exception exc) { SetErrorState(exc.Message); }
|
||||
}
|
||||
|
||||
@@ -136,7 +136,6 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
|
||||
// Insert ContainerItem.
|
||||
public override bool InsertContainerItem(SbmContainerItem containerItem, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
String fn = GetType().Name + ".InsertContainerItem";
|
||||
ClearErrorState();
|
||||
if (!IsValidContainerItem(containerItem)) return false;
|
||||
if (SysId.IsValid(containerItem.Id)) return SetErrorState(ErrorMessage.ValiditemId);
|
||||
@@ -156,7 +155,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
|
||||
dbContainerItem.ExecuteInsertCommand(dbCommand);
|
||||
containerItem.Id = new SysId(dbContainerItem._ContainerId);
|
||||
containerItem.Changed = false;
|
||||
if (DebugMode) SaLogger.Debug(fn + " Inserted. " + GetLogProperties(containerItem).Concat(": ").Concat("", "\n\t"));
|
||||
if (DebugMode) SaLogger.Debug($"{SysUtil.Fn} Inserted. " + GetLogProperties(containerItem).Concat(": ").Concat("", "\n\t"));
|
||||
}
|
||||
catch (Exception exc) { SetErrorState(exc.Message); }
|
||||
}
|
||||
@@ -167,13 +166,12 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
|
||||
// Update ContainerItem.
|
||||
public override bool UpdateContainerItem(SbmContainerItem containerItem, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
String fn = GetType().Name + ".UpdateContainerItem";
|
||||
ClearErrorState();
|
||||
if (!IsValidContainerItem(containerItem)) return false;
|
||||
if (!SysId.IsValid(containerItem.Id)) return SetErrorState(ErrorMessage.InvalidItemId);
|
||||
if (!containerItem.Changed)
|
||||
{
|
||||
if (DebugMode) SaLogger.Debug(fn + " Data not changed. " + GetLogProperties(containerItem).Concat(": ").Concat("", "\n\t"));
|
||||
if (DebugMode) SaLogger.Debug($"{SysUtil.Fn} Data not changed. " + GetLogProperties(containerItem).Concat(": ").Concat("", "\n\t"));
|
||||
return true;
|
||||
}
|
||||
using (var dbConnection = db.CreateConnection())
|
||||
@@ -191,7 +189,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
|
||||
PopulateTo(dbContainerItem, containerItem, dbUpdateInfo);
|
||||
dbContainerItem.ExecuteUpdateCommand(dbCommand);
|
||||
containerItem.Changed = false;
|
||||
if (DebugMode) SaLogger.Debug(fn + " Updated. " + GetLogProperties(containerItem).Concat(": ").Concat("", "\n\t"));
|
||||
if (DebugMode) SaLogger.Debug($"{SysUtil.Fn} Updated. " + GetLogProperties(containerItem).Concat(": ").Concat("", "\n\t"));
|
||||
|
||||
// Record updates.
|
||||
updateLogMonitor.RecordUpdatedValues(containerItem);
|
||||
@@ -212,7 +210,6 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
|
||||
}
|
||||
public override bool DeleteContainerItem(SbmContainerItem containerItem, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
String fn = GetType().Name + ".DeleteContainerItem";
|
||||
ClearErrorState();
|
||||
if (!ContainerItemCanBeDeleted(containerItem)) return false;
|
||||
using (var dbConnection = db.CreateConnection())
|
||||
@@ -229,7 +226,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
|
||||
dbCommand.CommandText = "DELETE FROM " + SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.ContainerItem) + " WHERE Id=" + SysId.ToString(containerItem.Id) + ";";
|
||||
dbCommand.ExecuteNonQuery();
|
||||
containerItem.Changed = false;
|
||||
if (DebugMode) SaLogger.Debug(fn + " Deleted. " + GetLogProperties(containerItem).Concat(": ").Concat("", "\n\t"));
|
||||
if (DebugMode) SaLogger.Debug($"{SysUtil.Fn} Deleted. " + GetLogProperties(containerItem).Concat(": ").Concat("", "\n\t"));
|
||||
}
|
||||
catch (Exception exc) { SetErrorState(exc.Message); }
|
||||
}
|
||||
|
||||
@@ -295,7 +295,6 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
|
||||
// Insert PortfolioItem.
|
||||
public override bool InsertPortfolioItem(SbmPortfolioItem portfolioItem, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
String fn = GetType().Name + ".AddPortfolioItem";
|
||||
ClearErrorState();
|
||||
if (!IsValidPortfolioItem(portfolioItem)) return false;
|
||||
if (SysId.IsValid(portfolioItem.Id)) return SetErrorState(ErrorMessage.ValiditemId);
|
||||
@@ -315,7 +314,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
|
||||
dbPortfolioItem.ExecuteInsertCommand(dbCommand);
|
||||
portfolioItem.Id = new SysId(dbPortfolioItem._Id);
|
||||
portfolioItem.Changed = false;
|
||||
if (DebugMode) SaLogger.Debug(fn + " Inserted. " + GetLogProperties(portfolioItem).Concat(": ").Concat("", "\n\t"));
|
||||
if (DebugMode) SaLogger.Debug($"{SysUtil.Fn} Inserted. " + GetLogProperties(portfolioItem).Concat(": ").Concat("", "\n\t"));
|
||||
|
||||
// Move other items for same parent down sequence.
|
||||
ResequenceSubsequentItems(portfolioItem);
|
||||
@@ -329,13 +328,12 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
|
||||
// Update PortfolioItem.
|
||||
public override bool UpdatePortfolioItem(SbmPortfolioItem portfolioItem, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
String fn = GetType().Name + ".UpdatePortfolioItem";
|
||||
ClearErrorState();
|
||||
if (!IsValidPortfolioItem(portfolioItem)) return false;
|
||||
if (!SysId.IsValid(portfolioItem.Id)) return SetErrorState(ErrorMessage.InvalidItemId);
|
||||
if (!portfolioItem.Changed)
|
||||
{
|
||||
if (DebugMode) SaLogger.Debug(fn + " Data not changed. " + GetLogProperties(portfolioItem).Concat(": ").Concat("", "\n\t"));
|
||||
if (DebugMode) SaLogger.Debug($"{SysUtil.Fn} Data not changed. " + GetLogProperties(portfolioItem).Concat(": ").Concat("", "\n\t"));
|
||||
return true;
|
||||
}
|
||||
using (var dbConnection = db.CreateConnection())
|
||||
@@ -353,7 +351,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
|
||||
PopulateTo(dbPortfolioItem, portfolioItem, dbUpdateInfo);
|
||||
dbPortfolioItem.ExecuteUpdateCommand(dbCommand);
|
||||
portfolioItem.Changed = false;
|
||||
if (DebugMode) SaLogger.Debug(fn + " Updated. " + GetLogProperties(portfolioItem).Concat(": ").Concat("", "\n\t"));
|
||||
if (DebugMode) SaLogger.Debug($"{SysUtil.Fn} Updated. " + GetLogProperties(portfolioItem).Concat(": ").Concat("", "\n\t"));
|
||||
|
||||
// Record updates.
|
||||
updateLogMonitor.RecordUpdatedValues(portfolioItem);
|
||||
@@ -509,7 +507,6 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
|
||||
}
|
||||
public override bool DeletePortfolioItem(SbmPortfolioItem portfolioItem, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
String fn = GetType().Name + ".DeletePortfolioItem";
|
||||
ClearErrorState();
|
||||
if (!PortfolioItemCanBeDeleted(portfolioItem)) return false;
|
||||
using (var dbConnection = db.CreateConnection())
|
||||
@@ -526,7 +523,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
|
||||
dbCommand.CommandText = "DELETE FROM " + SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.PortfolioItem) + " WHERE Id=" + SysId.ToString(portfolioItem.Id) + ";";
|
||||
dbCommand.ExecuteNonQuery();
|
||||
portfolioItem.Changed = false;
|
||||
if (DebugMode) SaLogger.Debug(fn + " Deleted. " + GetLogProperties(portfolioItem).Concat(": ").Concat("", "\n\t"));
|
||||
if (DebugMode) SaLogger.Debug($"{SysUtil.Fn} Deleted. " + GetLogProperties(portfolioItem).Concat(": ").Concat("", "\n\t"));
|
||||
|
||||
// Move other items for same parent down sequence.
|
||||
ResequenceSubsequentItems(portfolioItem);
|
||||
|
||||
@@ -105,7 +105,6 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
|
||||
// Insert ItemBatch.
|
||||
public override bool InsertItemBatch(SbmItemBatch itemBatch, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
String fn = GetType().Name + ".InsertItemBatch";
|
||||
ClearErrorState();
|
||||
if (!IsValidItemBatch(itemBatch)) return false;
|
||||
if (SysId.IsValid(itemBatch.Id)) return SetErrorState(ErrorMessage.ValiditemId);
|
||||
@@ -125,7 +124,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
|
||||
dbItemBatch.ExecuteInsertCommand(dbCommand);
|
||||
itemBatch.Id = new SysId(dbItemBatch._Id);
|
||||
itemBatch.Changed = false;
|
||||
if (DebugMode) SaLogger.Debug(fn + " Inserted. " + GetLogProperties(itemBatch).Concat(": ").Concat("", "\n\t"));
|
||||
if (DebugMode) SaLogger.Debug($"{SysUtil.Fn} Inserted. " + GetLogProperties(itemBatch).Concat(": ").Concat("", "\n\t"));
|
||||
}
|
||||
catch (Exception exc) { SetErrorState(exc.Message); }
|
||||
}
|
||||
@@ -136,13 +135,12 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
|
||||
// Update ItemBatch.
|
||||
public override bool UpdateItemBatch(SbmItemBatch itemBatch, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
String fn = GetType().Name + ".UpdateItemBatch";
|
||||
ClearErrorState();
|
||||
if (!IsValidItemBatch(itemBatch)) return false;
|
||||
if (!SysId.IsValid(itemBatch.Id)) return SetErrorState(ErrorMessage.InvalidItemId);
|
||||
if (!itemBatch.Changed)
|
||||
{
|
||||
if (DebugMode) SaLogger.Debug(fn + " Data not changed. " + GetLogProperties(itemBatch).Concat(": ").Concat("", "\n\t"));
|
||||
if (DebugMode) SaLogger.Debug($"{SysUtil.Fn} Data not changed. " + GetLogProperties(itemBatch).Concat(": ").Concat("", "\n\t"));
|
||||
return true;
|
||||
}
|
||||
using (var dbConnection = db.CreateConnection())
|
||||
@@ -160,7 +158,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
|
||||
PopulateTo(dbItemBatch, itemBatch, dbUpdateInfo);
|
||||
dbItemBatch.ExecuteUpdateCommand(dbCommand);
|
||||
itemBatch.Changed = false;
|
||||
if (DebugMode) SaLogger.Debug(fn + " Updated. " + GetLogProperties(itemBatch).Concat(": ").Concat("", "\n\t"));
|
||||
if (DebugMode) SaLogger.Debug($"{SysUtil.Fn} Updated. " + GetLogProperties(itemBatch).Concat(": ").Concat("", "\n\t"));
|
||||
|
||||
// Record updates.
|
||||
updateLogMonitor.RecordUpdatedValues(itemBatch);
|
||||
@@ -181,7 +179,6 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
|
||||
}
|
||||
public override bool DeleteItemBatch(SbmItemBatch itemBatch, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
String fn = GetType().Name + ".DeleteXXX";
|
||||
ClearErrorState();
|
||||
if (!ItemBatchCanBeDeleted(itemBatch)) return false;
|
||||
using (var dbConnection = db.CreateConnection())
|
||||
@@ -198,7 +195,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
|
||||
dbCommand.CommandText = "DELETE FROM " + SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.ItemBatch) + " WHERE Id=" + SysId.ToString(itemBatch.Id) + ";";
|
||||
dbCommand.ExecuteNonQuery();
|
||||
itemBatch.Changed = false;
|
||||
if (DebugMode) SaLogger.Debug(fn + " Deleted. " + GetLogProperties(itemBatch).Concat(": ").Concat("", "\n\t"));
|
||||
if (DebugMode) SaLogger.Debug($"{SysUtil.Fn} Deleted. " + GetLogProperties(itemBatch).Concat(": ").Concat("", "\n\t"));
|
||||
}
|
||||
catch (Exception exc) { SetErrorState(exc.Message); }
|
||||
}
|
||||
|
||||
@@ -109,7 +109,6 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
|
||||
// Insert Item.
|
||||
public override bool InsertItemLink(SbmItemLink itemLink, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
String fn = GetType().Name + ".InsertItemLink";
|
||||
ClearErrorState();
|
||||
if (!IsValidItemLink(itemLink)) return false;
|
||||
if (SysId.IsValid(itemLink.Id)) return SetErrorState(ErrorMessage.ValiditemId);
|
||||
@@ -129,7 +128,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
|
||||
dbItemLink.ExecuteInsertCommand(dbCommand);
|
||||
itemLink.Id = new SysId(0);
|
||||
itemLink.Changed = false;
|
||||
if (DebugMode) SaLogger.Debug(fn + " Inserted. " + GetLogProperties(itemLink).Concat(": ").Concat("", "\n\t"));
|
||||
if (DebugMode) SaLogger.Debug($"{SysUtil.Fn} Inserted. " + GetLogProperties(itemLink).Concat(": ").Concat("", "\n\t"));
|
||||
}
|
||||
catch (Exception exc) { SetErrorState(exc.Message); }
|
||||
}
|
||||
@@ -140,13 +139,12 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
|
||||
// Update Item.
|
||||
public override bool UpdateItemLink(SbmItemLink itemLink, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
String fn = GetType().Name + ".UpdateItemLink";
|
||||
ClearErrorState();
|
||||
if (!IsValidItemLink(itemLink)) return false;
|
||||
if (!SysId.IsValid(itemLink.Id)) return SetErrorState(ErrorMessage.InvalidItemId);
|
||||
if (!itemLink.Changed)
|
||||
{
|
||||
if (DebugMode) SaLogger.Debug(fn + " Data not changed. " + GetLogProperties(itemLink).Concat(": ").Concat("", "\n\t"));
|
||||
if (DebugMode) SaLogger.Debug($"{SysUtil.Fn} Data not changed. " + GetLogProperties(itemLink).Concat(": ").Concat("", "\n\t"));
|
||||
return true;
|
||||
}
|
||||
using (var dbConnection = db.CreateConnection())
|
||||
@@ -164,7 +162,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
|
||||
PopulateTo(dbItemLink, itemLink, dbUpdateInfo);
|
||||
dbItemLink.ExecuteUpdateCommand(dbCommand);
|
||||
itemLink.Changed = false;
|
||||
if (DebugMode) SaLogger.Debug(fn + " Updated. " + GetLogProperties(itemLink).Concat(": ").Concat("", "\n\t"));
|
||||
if (DebugMode) SaLogger.Debug($"{SysUtil.Fn} Updated. " + GetLogProperties(itemLink).Concat(": ").Concat("", "\n\t"));
|
||||
|
||||
// Record updates.
|
||||
updateLogMonitor.RecordUpdatedValues(itemLink);
|
||||
@@ -298,7 +296,6 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
|
||||
}
|
||||
public override bool DeleteItemLink(SbmItemLink itemLink, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
String fn = GetType().Name + ".DeleteItemLink";
|
||||
ClearErrorState();
|
||||
if (!ItemLinkCanBeDeleted(itemLink)) return false;
|
||||
using (var dbConnection = db.CreateConnection())
|
||||
@@ -315,7 +312,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
|
||||
dbCommand.CommandText = "DELETE FROM " + SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.ItemLink) + " WHERE Id=" + SysId.ToString(itemLink.Id) + ";";
|
||||
dbCommand.ExecuteNonQuery();
|
||||
itemLink.Changed = false;
|
||||
if (DebugMode) SaLogger.Debug(fn + " Deleted. " + GetLogProperties(itemLink).Concat(": ").Concat("", "\n\t"));
|
||||
if (DebugMode) SaLogger.Debug($"{SysUtil.Fn} Deleted. " + GetLogProperties(itemLink).Concat(": ").Concat("", "\n\t"));
|
||||
}
|
||||
catch (Exception exc) { SetErrorState(exc.Message); }
|
||||
}
|
||||
|
||||
@@ -98,7 +98,6 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
|
||||
// Insert item.
|
||||
public override bool InsertPrice(SbmPrice price, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
String fn = GetType().Name + ".InsertPrice";
|
||||
ClearErrorState();
|
||||
if (!IsValidPrice(price)) return false;
|
||||
if (SysId.IsValid(price.Id)) return SetErrorState(ErrorMessage.ValiditemId);
|
||||
@@ -113,7 +112,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
|
||||
// NB Prices don't have their own Ids.
|
||||
dbPrice.ExecuteInsertCommand(dbCommand);
|
||||
price.Changed = false;
|
||||
if (DebugMode) SaLogger.Debug(fn + " Inserted." + GetLogProperties(price).Concat(": ").Concat("", "\n\t"));
|
||||
if (DebugMode) SaLogger.Debug($"{SysUtil.Fn} Inserted." + GetLogProperties(price).Concat(": ").Concat("", "\n\t"));
|
||||
}
|
||||
catch (Exception exc) { SetErrorState(exc.Message); }
|
||||
}
|
||||
@@ -124,14 +123,13 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
|
||||
// Update item.
|
||||
public override bool UpdatePrice(SbmPrice price, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
String fn = GetType().Name + ".UpdatePrice";
|
||||
ClearErrorState();
|
||||
if (!IsValidPrice(price)) return false;
|
||||
if (!SysId.IsValid(price.PriceSetId)) return SetErrorState(ErrorMessage.InvalidItemId);
|
||||
if (!SysId.IsValid(price.CommodityId)) return SetErrorState(ErrorMessage.InvalidItemId);
|
||||
if (!price.Changed)
|
||||
{
|
||||
if (DebugMode) SaLogger.Debug(fn + " Data not changed." + GetLogProperties(price).Concat(": ").Concat("", "\n\t"));
|
||||
if (DebugMode) SaLogger.Debug($"{SysUtil.Fn} Data not changed." + GetLogProperties(price).Concat(": ").Concat("", "\n\t"));
|
||||
return true;
|
||||
}
|
||||
using (var dbConnection = db.CreateConnection())
|
||||
@@ -149,7 +147,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
|
||||
PopulateTo(dbPrice, price, dbUpdateInfo);
|
||||
dbPrice.ExecuteUpdateCommand(dbCommand);
|
||||
price.Changed = false;
|
||||
if (DebugMode) SaLogger.Debug(fn + " Updated." + GetLogProperties(price).Concat(": ").Concat("", "\n\t"));
|
||||
if (DebugMode) SaLogger.Debug($"{SysUtil.Fn} Updated." + GetLogProperties(price).Concat(": ").Concat("", "\n\t"));
|
||||
|
||||
// Record updates.
|
||||
//updateLogMonitor.RecordUpdatedValues(price);
|
||||
@@ -170,7 +168,6 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
|
||||
}
|
||||
public override bool DeletePrice(SbmPrice price, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
String fn = GetType().Name + ".DeletePrice";
|
||||
ClearErrorState();
|
||||
if (!PriceCanBeDeleted(price)) return false;
|
||||
using (var dbConnection = db.CreateConnection())
|
||||
@@ -187,7 +184,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
|
||||
dbCommand.CommandText = "DELETE FROM " + SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.SaPrice) + " WHERE PriceSetId = " + SysId.ToString(price.PriceSetId) + " And CommodityId=" + SysId.ToString(price.CommodityId) + ";";
|
||||
dbCommand.ExecuteNonQuery();
|
||||
price.Changed = false;
|
||||
if (DebugMode) SaLogger.Debug(fn + " Deleted." + GetLogProperties(price).Concat(": ").Concat("", "\n\t"));
|
||||
if (DebugMode) SaLogger.Debug($"{SysUtil.Fn} Deleted." + GetLogProperties(price).Concat(": ").Concat("", "\n\t"));
|
||||
}
|
||||
catch (Exception exc) { SetErrorState(exc.Message); }
|
||||
}
|
||||
|
||||
@@ -99,7 +99,6 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
|
||||
// Insert item.
|
||||
public override bool InsertPriceSet(SbmPriceSet priceSet, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
String fn = GetType().Name + ".InsertPriceSet";
|
||||
ClearErrorState();
|
||||
if (!IsValidPriceSet(priceSet)) return false;
|
||||
if (SysId.IsValid(priceSet.Id)) return SetErrorState(ErrorMessage.ValiditemId);
|
||||
@@ -119,7 +118,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
|
||||
dbPriceSet.ExecuteInsertCommand(dbCommand);
|
||||
priceSet.Id = new SysId(dbPriceSet._Id);
|
||||
priceSet.Changed = false;
|
||||
if (DebugMode) SaLogger.Debug(fn + " Inserted." + GetLogProperties(priceSet).Concat(": ").Concat("", "\n\t"));
|
||||
if (DebugMode) SaLogger.Debug($"{SysUtil.Fn} Inserted." + GetLogProperties(priceSet).Concat(": ").Concat("", "\n\t"));
|
||||
}
|
||||
catch (Exception exc) { SetErrorState(exc.Message); }
|
||||
}
|
||||
@@ -130,13 +129,12 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
|
||||
// Update item.
|
||||
public override bool UpdatePriceSet(SbmPriceSet priceSet, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
String fn = GetType().Name + ".UpdatePriceSet";
|
||||
ClearErrorState();
|
||||
if (!IsValidPriceSet(priceSet)) return false;
|
||||
if (!SysId.IsValid(priceSet.Id)) return SetErrorState(ErrorMessage.InvalidItemId);
|
||||
if (!priceSet.Changed)
|
||||
{
|
||||
if (DebugMode) SaLogger.Debug(fn + " Data not changed." + GetLogProperties(priceSet).Concat(": ").Concat("", "\n\t"));
|
||||
if (DebugMode) SaLogger.Debug($"{SysUtil.Fn} Data not changed." + GetLogProperties(priceSet).Concat(": ").Concat("", "\n\t"));
|
||||
return true;
|
||||
}
|
||||
using (var dbConnection = db.CreateConnection())
|
||||
@@ -154,7 +152,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
|
||||
PopulateTo(dbPriceSet, priceSet, dbUpdateInfo);
|
||||
dbPriceSet.ExecuteUpdateCommand(dbCommand);
|
||||
priceSet.Changed = false;
|
||||
if (DebugMode) SaLogger.Debug(fn + " Updated." + GetLogProperties(priceSet).Concat(": ").Concat("", "\n\t"));
|
||||
if (DebugMode) SaLogger.Debug($"{SysUtil.Fn} Updated." + GetLogProperties(priceSet).Concat(": ").Concat("", "\n\t"));
|
||||
|
||||
// Record updates.
|
||||
updateLogMonitor.RecordUpdatedValues(priceSet);
|
||||
@@ -175,7 +173,6 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
|
||||
}
|
||||
public override bool DeletePriceSet(SbmPriceSet priceSet, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
String fn = GetType().Name + ".DeletePriceSet";
|
||||
ClearErrorState();
|
||||
if (!PriceSetCanBeDeleted(priceSet)) return false;
|
||||
using (var dbConnection = db.CreateConnection())
|
||||
@@ -192,7 +189,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
|
||||
dbCommand.CommandText = "DELETE FROM " + SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.SaPriceSet) + " WHERE Id=" + SysId.ToString(priceSet.Id) + ";";
|
||||
dbCommand.ExecuteNonQuery();
|
||||
priceSet.Changed = false;
|
||||
if (DebugMode) SaLogger.Debug(fn + " Deleted." + GetLogProperties(priceSet).Concat(": ").Concat("", "\n\t"));
|
||||
if (DebugMode) SaLogger.Debug($"{SysUtil.Fn} Deleted." + GetLogProperties(priceSet).Concat(": ").Concat("", "\n\t"));
|
||||
}
|
||||
catch (Exception exc) { SetErrorState(exc.Message); }
|
||||
}
|
||||
|
||||
@@ -151,7 +151,6 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
|
||||
// Insert Process.
|
||||
public override bool InsertProcess(SbmProcess process, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
String fn = GetType().Name + ".InsertProcess";
|
||||
ClearErrorState();
|
||||
if (!IsValidProcess(process)) return false;
|
||||
if (SysId.IsValid(process.Id)) return SetErrorState(ErrorMessage.ValiditemId);
|
||||
@@ -171,7 +170,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
|
||||
dbProcess.ExecuteInsertCommand(dbCommand);
|
||||
process.Id = new SysId(dbProcess._Id);
|
||||
process.Changed = false;
|
||||
if (DebugMode) SaLogger.Debug(fn + " Inserted. " + GetLogProperties(process).Concat(": ").Concat("", "\n\t"));
|
||||
if (DebugMode) SaLogger.Debug($"{SysUtil.Fn} Inserted. " + GetLogProperties(process).Concat(": ").Concat("", "\n\t"));
|
||||
}
|
||||
catch (Exception exc) { SetErrorState(exc.Message); }
|
||||
}
|
||||
@@ -182,13 +181,12 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
|
||||
// Update Process.
|
||||
public override bool UpdateProcess(SbmProcess process, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
String fn = GetType().Name + ".UpdateProcess";
|
||||
ClearErrorState();
|
||||
if (!IsValidProcess(process)) return false;
|
||||
if (!SysId.IsValid(process.Id)) return SetErrorState(ErrorMessage.InvalidItemId);
|
||||
if (!process.Changed)
|
||||
{
|
||||
if (DebugMode) SaLogger.Debug(fn + " Data not changed. " + GetLogProperties(process).Concat(": ").Concat("", "\n\t"));
|
||||
if (DebugMode) SaLogger.Debug($"{SysUtil.Fn} Data not changed. " + GetLogProperties(process).Concat(": ").Concat("", "\n\t"));
|
||||
return true;
|
||||
}
|
||||
using (var dbConnection = db.CreateConnection())
|
||||
@@ -206,7 +204,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
|
||||
PopulateTo(dbProcess, process, dbUpdateInfo);
|
||||
dbProcess.ExecuteUpdateCommand(dbCommand);
|
||||
process.Changed = false;
|
||||
if (DebugMode) SaLogger.Debug(fn + " Updated. " + GetLogProperties(process).Concat(": ").Concat("", "\n\t"));
|
||||
if (DebugMode) SaLogger.Debug($"{SysUtil.Fn} Updated. " + GetLogProperties(process).Concat(": ").Concat("", "\n\t"));
|
||||
|
||||
// Record updates.
|
||||
updateLogMonitor.RecordUpdatedValues(process);
|
||||
@@ -227,7 +225,6 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
|
||||
}
|
||||
public override bool DeleteProcess(SbmProcess process, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
String fn = GetType().Name + ".DeleteProcess";
|
||||
ClearErrorState();
|
||||
if (!ProcessCanBeDeleted(process)) return false;
|
||||
using (var dbConnection = db.CreateConnection())
|
||||
@@ -244,7 +241,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
|
||||
dbCommand.CommandText = "DELETE FROM " + SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Process) + " WHERE Id=" + SysId.ToString(process.Id) + ";";
|
||||
dbCommand.ExecuteNonQuery();
|
||||
process.Changed = false;
|
||||
if (DebugMode) SaLogger.Debug(fn + " Deleted. " + GetLogProperties(process).Concat(": ").Concat("", "\n\t"));
|
||||
if (DebugMode) SaLogger.Debug($"{SysUtil.Fn} Deleted. " + GetLogProperties(process).Concat(": ").Concat("", "\n\t"));
|
||||
}
|
||||
catch (Exception exc) { SetErrorState(exc.Message); }
|
||||
}
|
||||
|
||||
@@ -100,7 +100,6 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
|
||||
// Insert Location.
|
||||
public override bool InsertLocation(SbmLocation location, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
String fn = GetType().Name + ".InsertLocation";
|
||||
ClearErrorState();
|
||||
if (!IsValidLocation(location)) return false;
|
||||
if (SysId.IsValid(location.Id)) return SetErrorState(ErrorMessage.ValiditemId);
|
||||
@@ -120,7 +119,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
|
||||
dbLocation.ExecuteInsertCommand(dbCommand);
|
||||
location.Id = new SysId(dbLocation._Id);
|
||||
location.Changed = false;
|
||||
if (DebugMode) SaLogger.Debug(fn + " Inserted. " + GetLogProperties(location).Concat(": ").Concat("", "\n\t"));
|
||||
if (DebugMode) SaLogger.Debug($"{SysUtil.Fn} Inserted. " + GetLogProperties(location).Concat(": ").Concat("", "\n\t"));
|
||||
}
|
||||
catch (Exception exc) { SetErrorState(exc.Message); }
|
||||
}
|
||||
@@ -131,13 +130,12 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
|
||||
// Update Location.
|
||||
public override bool UpdateLocation(SbmLocation location, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
String fn = GetType().Name + ".UpdateLocation";
|
||||
ClearErrorState();
|
||||
if (!IsValidLocation(location)) return false;
|
||||
if (!SysId.IsValid(location.Id)) return SetErrorState(ErrorMessage.InvalidItemId);
|
||||
if (!location.Changed)
|
||||
{
|
||||
if (DebugMode) SaLogger.Debug(fn + " Data not changed. " + GetLogProperties(location).Concat(": ").Concat("", "\n\t"));
|
||||
if (DebugMode) SaLogger.Debug($"{SysUtil.Fn} Data not changed. " + GetLogProperties(location).Concat(": ").Concat("", "\n\t"));
|
||||
return true;
|
||||
}
|
||||
using (var dbConnection = db.CreateConnection())
|
||||
@@ -155,7 +153,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
|
||||
PopulateTo(dbLocation, location, dbUpdateInfo);
|
||||
dbLocation.ExecuteUpdateCommand(dbCommand);
|
||||
location.Changed = false;
|
||||
if (DebugMode) SaLogger.Debug(fn + " Updated. " + GetLogProperties(location).Concat(": ").Concat("", "\n\t"));
|
||||
if (DebugMode) SaLogger.Debug($"{SysUtil.Fn} Updated. " + GetLogProperties(location).Concat(": ").Concat("", "\n\t"));
|
||||
|
||||
// Record updates.
|
||||
updateLogMonitor.RecordUpdatedValues(location);
|
||||
@@ -176,7 +174,6 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
|
||||
}
|
||||
public override bool DeleteLocation(SbmLocation location, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
String fn = GetType().Name + ".DeleteLocation";
|
||||
ClearErrorState();
|
||||
if (!LocationCanBeDeleted(location)) return false;
|
||||
using (var dbConnection = db.CreateConnection())
|
||||
@@ -193,7 +190,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
|
||||
dbCommand.CommandText = "DELETE FROM " + SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Location) + " WHERE Id=" + SysId.ToString(location.Id) + ";";
|
||||
dbCommand.ExecuteNonQuery();
|
||||
location.Changed = false;
|
||||
if (DebugMode) SaLogger.Debug(fn + " Deleted. " + GetLogProperties(location).Concat(": ").Concat("", "\n\t"));
|
||||
if (DebugMode) SaLogger.Debug($"{SysUtil.Fn} Deleted. " + GetLogProperties(location).Concat(": ").Concat("", "\n\t"));
|
||||
}
|
||||
catch (Exception exc) { SetErrorState(exc.Message); }
|
||||
}
|
||||
|
||||
@@ -221,7 +221,6 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
|
||||
// Insert Movement.
|
||||
public override bool InsertMovement(SbmMovement movement, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
String fn = GetType().Name + ".InsertMovement";
|
||||
ClearErrorState();
|
||||
if (!IsValidMovement(movement)) return false;
|
||||
if (SysId.IsValid(movement.Id)) return SetErrorState(ErrorMessage.ValiditemId);
|
||||
@@ -241,7 +240,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
|
||||
dbMovement.ExecuteInsertCommand(dbCommand);
|
||||
movement.Id = new SysId(dbMovement._Id);
|
||||
movement.Changed = false;
|
||||
if (DebugMode) SaLogger.Debug(fn + " Inserted. " + GetLogProperties(movement).Concat(": ").Concat("", "\n\t"));
|
||||
if (DebugMode) SaLogger.Debug($"{SysUtil.Fn} Inserted. " + GetLogProperties(movement).Concat(": ").Concat("", "\n\t"));
|
||||
}
|
||||
catch (Exception exc) { SetErrorState(exc.Message); }
|
||||
}
|
||||
@@ -252,13 +251,12 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
|
||||
// Update Movement.
|
||||
public override bool UpdateMovement(SbmMovement movement, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
String fn = GetType().Name + ".UpdateMovement";
|
||||
ClearErrorState();
|
||||
if (!IsValidMovement(movement)) return false;
|
||||
if (!SysId.IsValid(movement.Id)) return SetErrorState(ErrorMessage.InvalidItemId);
|
||||
if (!movement.Changed)
|
||||
{
|
||||
if (DebugMode) SaLogger.Debug(fn + " Data not changed. " + GetLogProperties(movement).Concat(": ").Concat("", "\n\t"));
|
||||
if (DebugMode) SaLogger.Debug($"{SysUtil.Fn} Data not changed. " + GetLogProperties(movement).Concat(": ").Concat("", "\n\t"));
|
||||
return true;
|
||||
}
|
||||
using (var dbConnection = db.CreateConnection())
|
||||
@@ -276,7 +274,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
|
||||
PopulateTo(dbMovement, movement, dbUpdateInfo);
|
||||
dbMovement.ExecuteUpdateCommand(dbCommand);
|
||||
movement.Changed = false;
|
||||
if (DebugMode) SaLogger.Debug(fn + " Updated. " + GetLogProperties(movement).Concat(": ").Concat("", "\n\t"));
|
||||
if (DebugMode) SaLogger.Debug($"{SysUtil.Fn} Updated. " + GetLogProperties(movement).Concat(": ").Concat("", "\n\t"));
|
||||
|
||||
// Record updates.
|
||||
updateLogMonitor.RecordUpdatedValues(movement);
|
||||
@@ -297,7 +295,6 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
|
||||
}
|
||||
public override bool DeleteMovement(SbmMovement movement, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
String fn = GetType().Name + ".DeleteMovement";
|
||||
ClearErrorState();
|
||||
if (!MovementCanBeDeleted(movement)) return false;
|
||||
using (var dbConnection = db.CreateConnection())
|
||||
@@ -314,7 +311,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
|
||||
dbCommand.CommandText = "DELETE FROM " + SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Movement) + " WHERE Id=" + SysId.ToString(movement.Id) + ";";
|
||||
dbCommand.ExecuteNonQuery();
|
||||
movement.Changed = false;
|
||||
if (DebugMode) SaLogger.Debug(fn + " Deleted. " + GetLogProperties(movement).Concat(": ").Concat("", "\n\t"));
|
||||
if (DebugMode) SaLogger.Debug($"{SysUtil.Fn} Deleted. " + GetLogProperties(movement).Concat(": ").Concat("", "\n\t"));
|
||||
}
|
||||
catch (Exception exc) { SetErrorState(exc.Message); }
|
||||
}
|
||||
|
||||
@@ -153,7 +153,6 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
|
||||
/// <summary>Get the list of time records recorded for the specified parameters.</summary>
|
||||
public override List<DataItem> GetPeriodTimeBooked(SysId affiliateIdEmployee, DateTime periodStart, DateTime periodEnd, SaUomType uomPeriod)
|
||||
{
|
||||
String fn = GetType().Name + ".GetPeriodTimeBooked";
|
||||
ClearErrorState();
|
||||
List<DataItem> dataItems = new List<DataItem>();
|
||||
if (!SysId.IsValid(affiliateIdEmployee))
|
||||
@@ -181,7 +180,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
|
||||
break;
|
||||
default:
|
||||
#if DEBUG
|
||||
SaLogger.Warn(fn + " Period unit defaulted to working week.");
|
||||
SaLogger.Warn($"{SysUtil.Fn} Period unit defaulted to working week.");
|
||||
#endif
|
||||
uomPeriod = SaUomType.Time_WorkingWeek;
|
||||
break;
|
||||
@@ -369,7 +368,6 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
|
||||
// Insert Constituent.
|
||||
public override bool InsertConstituent(SbmConstituent constituent, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
String fn = GetType().Name + ".InsertConstituent";
|
||||
ClearErrorState();
|
||||
if (!IsValidConstituent(constituent)) return false;
|
||||
if (SysId.IsValid(constituent.Id)) return SetErrorState(ErrorMessage.ValiditemId);
|
||||
@@ -389,7 +387,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
|
||||
dbConstituent.ExecuteInsertCommand(dbCommand);
|
||||
constituent.Id = new SysId(dbConstituent._Id);
|
||||
constituent.Changed = false;
|
||||
if (DebugMode) SaLogger.Debug(fn + " Inserted. " + GetLogProperties(constituent).Concat(": ").Concat("", "\n\t"));
|
||||
if (DebugMode) SaLogger.Debug($"{SysUtil.Fn} Inserted. " + GetLogProperties(constituent).Concat(": ").Concat("", "\n\t"));
|
||||
}
|
||||
catch (Exception exc) { SetErrorState(exc.Message); }
|
||||
}
|
||||
@@ -400,13 +398,12 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
|
||||
// Update Constituent.
|
||||
public override bool UpdateConstituent(SbmConstituent constituent, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
String fn = GetType().Name + ".UpdateConstituent";
|
||||
ClearErrorState();
|
||||
if (!IsValidConstituent(constituent)) return false;
|
||||
if (!SysId.IsValid(constituent.Id)) return SetErrorState(ErrorMessage.InvalidItemId);
|
||||
if (!constituent.Changed)
|
||||
{
|
||||
if (DebugMode) SaLogger.Debug(fn + " Data not changed. " + GetLogProperties(constituent).Concat(": ").Concat("", "\n\t"));
|
||||
if (DebugMode) SaLogger.Debug($"{SysUtil.Fn} Data not changed. " + GetLogProperties(constituent).Concat(": ").Concat("", "\n\t"));
|
||||
return true;
|
||||
}
|
||||
using (var dbConnection = db.CreateConnection())
|
||||
@@ -424,7 +421,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
|
||||
PopulateTo(dbConstituent, constituent, dbUpdateInfo);
|
||||
dbConstituent.ExecuteUpdateCommand(dbCommand);
|
||||
constituent.Changed = false;
|
||||
if (DebugMode) SaLogger.Debug(fn + " Updated. " + GetLogProperties(constituent).Concat(": ").Concat("", "\n\t"));
|
||||
if (DebugMode) SaLogger.Debug($"{SysUtil.Fn} Updated. " + GetLogProperties(constituent).Concat(": ").Concat("", "\n\t"));
|
||||
|
||||
// Record updates.
|
||||
updateLogMonitor.RecordUpdatedValues(constituent);
|
||||
@@ -445,7 +442,6 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
|
||||
}
|
||||
public override bool DeleteConstituent(SbmConstituent constituent, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
String fn = GetType().Name + ".DeleteConstituent";
|
||||
ClearErrorState();
|
||||
if (!ConstituentCanBeDeleted(constituent)) return false;
|
||||
using (var dbConnection = db.CreateConnection())
|
||||
@@ -462,7 +458,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
|
||||
dbCommand.CommandText = "DELETE FROM " + SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Constituent) + " WHERE Id=" + SysId.ToString(constituent.Id) + ";";
|
||||
dbCommand.ExecuteNonQuery();
|
||||
constituent.Changed = false;
|
||||
if (DebugMode) SaLogger.Debug(fn + " Deleted. " + GetLogProperties(constituent).Concat(": ").Concat("", "\n\t"));
|
||||
if (DebugMode) SaLogger.Debug($"{SysUtil.Fn} Deleted. " + GetLogProperties(constituent).Concat(": ").Concat("", "\n\t"));
|
||||
}
|
||||
catch (Exception exc) { SetErrorState(exc.Message); }
|
||||
}
|
||||
|
||||
@@ -432,7 +432,6 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
|
||||
// Insert Requirement.
|
||||
public override bool InsertRequirement(SbmRequirement requirement, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
String fn = GetType().Name + ".InsertRequirement";
|
||||
ClearErrorState();
|
||||
if (!IsValidRequirement(requirement)) return false;
|
||||
if (SysId.IsValid(requirement.Id)) return SetErrorState(ErrorMessage.ValiditemId);
|
||||
@@ -452,7 +451,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
|
||||
dbRequirement.ExecuteInsertCommand(dbCommand);
|
||||
requirement.Id = new SysId(dbRequirement._Id);
|
||||
requirement.Changed = false;
|
||||
if (DebugMode) SaLogger.Debug(fn + " Inserted. " + GetLogProperties(requirement).Concat(": ").Concat("", "\n\t"));
|
||||
if (DebugMode) SaLogger.Debug($"{SysUtil.Fn} Inserted. " + GetLogProperties(requirement).Concat(": ").Concat("", "\n\t"));
|
||||
}
|
||||
catch (Exception exc) { SetErrorState(exc.Message); }
|
||||
}
|
||||
@@ -463,13 +462,12 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
|
||||
// Update Requirement.
|
||||
public override bool UpdateRequirement(SbmRequirement requirement, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
String fn = GetType().Name + ".UpdateRequirement";
|
||||
ClearErrorState();
|
||||
if (!IsValidRequirement(requirement)) return false;
|
||||
if (!SysId.IsValid(requirement.Id)) return SetErrorState(ErrorMessage.InvalidItemId);
|
||||
if (!requirement.Changed)
|
||||
{
|
||||
if (DebugMode) SaLogger.Debug(fn + " Data not changed. " + GetLogProperties(requirement).Concat(": ").Concat("", "\n\t"));
|
||||
if (DebugMode) SaLogger.Debug($"{SysUtil.Fn} Data not changed. " + GetLogProperties(requirement).Concat(": ").Concat("", "\n\t"));
|
||||
return true;
|
||||
}
|
||||
using (var dbConnection = db.CreateConnection())
|
||||
@@ -487,7 +485,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
|
||||
PopulateTo(dbRequirement, requirement, dbUpdateInfo);
|
||||
dbRequirement.ExecuteUpdateCommand(dbCommand);
|
||||
requirement.Changed = false;
|
||||
if (DebugMode) SaLogger.Debug(fn + " Updated. " + GetLogProperties(requirement).Concat(": ").Concat("", "\n\t"));
|
||||
if (DebugMode) SaLogger.Debug($"{SysUtil.Fn} Updated. " + GetLogProperties(requirement).Concat(": ").Concat("", "\n\t"));
|
||||
|
||||
// Record updates.
|
||||
updateLogMonitor.RecordUpdatedValues(requirement);
|
||||
@@ -507,7 +505,6 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
|
||||
}
|
||||
public override bool DeleteRequirement(SbmRequirement requirement, Sbm.TransactionType transactionType, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
String fn = GetType().Name + ".DeleteRequirement";
|
||||
ClearErrorState();
|
||||
if (!RequirementCanBeDeleted(requirement, transactionType)) return false;
|
||||
using (var dbConnection = db.CreateConnection())
|
||||
@@ -524,7 +521,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
|
||||
dbCommand.CommandText = "DELETE FROM " + SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Requirement) + " WHERE Id=" + SysId.ToString(requirement.Id) + ";";
|
||||
dbCommand.ExecuteNonQuery();
|
||||
requirement.Changed = false;
|
||||
if (DebugMode) SaLogger.Debug(fn + " Deleted. " + GetLogProperties(requirement).Concat(": ").Concat("", "\n\t"));
|
||||
if (DebugMode) SaLogger.Debug($"{SysUtil.Fn} Deleted. " + GetLogProperties(requirement).Concat(": ").Concat("", "\n\t"));
|
||||
}
|
||||
catch (Exception exc) { SetErrorState(exc.Message); }
|
||||
}
|
||||
|
||||
@@ -492,7 +492,6 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
|
||||
// Insert Transaction.
|
||||
public override bool InsertTransaction(SbmTransaction transaction, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
String fn = GetType().Name + ".InsertTransaction";
|
||||
ClearErrorState();
|
||||
if (!IsValidTransaction(transaction)) return false;
|
||||
if (SysId.IsValid(transaction.Id)) return SetErrorState(ErrorMessage.ValiditemId);
|
||||
@@ -512,7 +511,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
|
||||
dbTransaction.ExecuteInsertCommand(dbCommand);
|
||||
transaction.Id = new SysId(dbTransaction._Id);
|
||||
transaction.Changed = false;
|
||||
if (DebugMode) SaLogger.Debug(fn + " Inserted. " + GetLogProperties(transaction).Concat(": ").Concat("", "\n\t"));
|
||||
if (DebugMode) SaLogger.Debug($"{SysUtil.Fn} Inserted. " + GetLogProperties(transaction).Concat(": ").Concat("", "\n\t"));
|
||||
}
|
||||
catch (Exception exc) { SetErrorState(exc.Message); }
|
||||
}
|
||||
@@ -523,13 +522,12 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
|
||||
// Update Transaction.
|
||||
public override bool UpdateTransaction(SbmTransaction transaction, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
String fn = GetType().Name + ".UpdateTransaction";
|
||||
ClearErrorState();
|
||||
if (!IsValidTransaction(transaction)) return false;
|
||||
if (!SysId.IsValid(transaction.Id)) return SetErrorState(ErrorMessage.InvalidItemId);
|
||||
if (!transaction.Changed)
|
||||
{
|
||||
if (DebugMode) SaLogger.Debug(fn + " Data not changed. " + GetLogProperties(transaction).Concat(": ").Concat("", "\n\t"));
|
||||
if (DebugMode) SaLogger.Debug($"{SysUtil.Fn} Data not changed. " + GetLogProperties(transaction).Concat(": ").Concat("", "\n\t"));
|
||||
return true;
|
||||
}
|
||||
using (var dbConnection = db.CreateConnection())
|
||||
@@ -547,7 +545,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
|
||||
PopulateTo(dbTransaction, transaction, dbUpdateInfo);
|
||||
dbTransaction.ExecuteUpdateCommand(dbCommand);
|
||||
transaction.Changed = false;
|
||||
if (DebugMode) SaLogger.Debug(fn + " Updated. " + GetLogProperties(transaction).Concat(": ").Concat("", "\n\t"));
|
||||
if (DebugMode) SaLogger.Debug($"{SysUtil.Fn} Updated. " + GetLogProperties(transaction).Concat(": ").Concat("", "\n\t"));
|
||||
|
||||
// Record updates.
|
||||
updateLogMonitor.RecordUpdatedValues(transaction);
|
||||
@@ -596,7 +594,6 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
|
||||
}
|
||||
public override bool DeleteTransaction(SbmTransaction transaction, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
String fn = GetType().Name + ".DeleteTransaction";
|
||||
ClearErrorState();
|
||||
if (!TransactionCanBeDeleted(transaction)) return false;
|
||||
using (var dbConnection = db.CreateConnection())
|
||||
@@ -613,7 +610,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
|
||||
dbCommand.CommandText = "DELETE FROM " + SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Transaction) + " WHERE Id=" + SysId.ToString(transaction.Id) + ";";
|
||||
dbCommand.ExecuteNonQuery();
|
||||
transaction.Changed = false;
|
||||
if (DebugMode) SaLogger.Debug(fn + " Deleted. " + GetLogProperties(transaction).Concat(": ").Concat("", "\n\t"));
|
||||
if (DebugMode) SaLogger.Debug($"{SysUtil.Fn} Deleted. " + GetLogProperties(transaction).Concat(": ").Concat("", "\n\t"));
|
||||
}
|
||||
catch (Exception exc) { SetErrorState(exc.Message); }
|
||||
}
|
||||
|
||||
@@ -55,7 +55,6 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
|
||||
// Retrieve the list of transactions types that reference the specified commodity code.
|
||||
public override List<Sbm.TransactionType> GetTransactionTypesForCommodity(SysId commodityId, SbmTransaction.StatusCat statusCat = SbmTransaction.StatusCat.NotCancelled)
|
||||
{
|
||||
String fn = GetType().Name + ".GetTransactionTypesForCommodity";
|
||||
List<Sbm.TransactionType> transactionTypes = new List<Sbm.TransactionType>();
|
||||
if (!SysId.IsValid(commodityId)) return transactionTypes;
|
||||
|
||||
@@ -85,14 +84,14 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
|
||||
joinReqnt.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Requirement_CommodityId, aliasReqnt) + "=" + SysId.ToString(commodityId));
|
||||
qry.Joins.Add(joinReqnt);
|
||||
// Execute the query.
|
||||
if (DebugMode) SaLogger.Debug(fn + " Query: " + qry.BuildQuery());
|
||||
if (DebugMode) SaLogger.Debug($"{SysUtil.Fn} Query: " + qry.BuildQuery());
|
||||
using (DbResultSet dbResultSet = DbResultSet_DataReader.ExecuteQuery(db, qry.ToString()))
|
||||
{
|
||||
while (!HasErrorState() && dbResultSet != null && dbResultSet.NextRecord())
|
||||
{
|
||||
NamedValue.Map values = dbResultSet.GetRecordValues();
|
||||
Sbm.TransactionType transactionType = (Sbm.TransactionType)StringUtil.ToShort(values.GetValue(colTransactionType));
|
||||
if (DebugMode) SaLogger.Debug(fn + " Transaction type: " + transactionType.ToString());
|
||||
if (DebugMode) SaLogger.Debug($"{SysUtil.Fn} Transaction type: " + transactionType.ToString());
|
||||
// Add this transaction type to the list.
|
||||
if (!transactionTypes.Contains(transactionType))
|
||||
transactionTypes.Add(transactionType);
|
||||
|
||||
@@ -83,7 +83,6 @@ namespace Sarand.BusinessMgr.Web.Control.Controllers.Account
|
||||
[Route("Account/UserAccount/Ajax/GetUserList")]
|
||||
public IActionResult Ajax_GetUserList(Model_UserAccount model)
|
||||
{
|
||||
String fn = GetType().Name + ".Ajax_GetUserList";
|
||||
String messageTitle = Localiser["label.users"];
|
||||
AjaxResponse_UserList responseData = new AjaxResponse_UserList(model);
|
||||
|
||||
@@ -173,7 +172,6 @@ namespace Sarand.BusinessMgr.Web.Control.Controllers.Account
|
||||
[Route("Account/UserAccount/Ajax/GetUser")]
|
||||
public IActionResult Ajax_GetUser(Model_UserAccount model)
|
||||
{
|
||||
String fn = GetType().Name + ".Ajax_GetUser";
|
||||
String messageTitle = Localiser["label.user"];
|
||||
AjaxResponse_User responseData = new AjaxResponse_User(model);
|
||||
|
||||
@@ -214,7 +212,6 @@ namespace Sarand.BusinessMgr.Web.Control.Controllers.Account
|
||||
[Route("Account/UserAccount/Ajax/GetUserByEmail")]
|
||||
public IActionResult Ajax_GetUserByEmail(Model_UserAccount model)
|
||||
{
|
||||
String fn = GetType().Name + ".Ajax_GetUserByEmail";
|
||||
String messageTitle = Localiser["label.user"];
|
||||
AjaxResponse_User responseData = new AjaxResponse_User(model);
|
||||
StoreSessionData = false;
|
||||
@@ -259,7 +256,6 @@ namespace Sarand.BusinessMgr.Web.Control.Controllers.Account
|
||||
[Route("Account/UserAccount/Ajax/StoreUser")]
|
||||
public IActionResult Ajax_StoreUser(Model_UserAccount model)
|
||||
{
|
||||
String fn = GetType().Name + ".Ajax_StoreUser";
|
||||
String messageTitle = Localiser["label.user"];
|
||||
AjaxResponse_User responseData = new AjaxResponse_User(model);
|
||||
|
||||
@@ -357,7 +353,6 @@ namespace Sarand.BusinessMgr.Web.Control.Controllers.Account
|
||||
[Route("Account/UserAccount/Ajax/SendEmails")]
|
||||
public IActionResult Ajax_SendEmails(Model_UserAccount model)
|
||||
{
|
||||
String fn = GetType().Name + ".Ajax_SendEmails";
|
||||
String messageTitle = Localiser["label.emails"];
|
||||
AjaxResponse_User responseData = new AjaxResponse_User(model);
|
||||
|
||||
|
||||
@@ -70,7 +70,6 @@ namespace Sarand.BusinessMgr.Web.Control.Controllers.Instance
|
||||
[Route("Instance/Owner/Ajax/GetOwnerList")]
|
||||
public IActionResult Ajax_GetOwnerList(Model_Owner model)
|
||||
{
|
||||
String fn = GetType().Name + ".Ajax_GetOwnerList";
|
||||
String messageTitle = Localiser["label.owners"];
|
||||
AjaxResponse_OwnerList responseData = new AjaxResponse_OwnerList(model);
|
||||
|
||||
@@ -157,7 +156,6 @@ namespace Sarand.BusinessMgr.Web.Control.Controllers.Instance
|
||||
[Route("Instance/Owner/Ajax/GetOwner")]
|
||||
public IActionResult Ajax_GetOwner(Model_Owner model)
|
||||
{
|
||||
String fn = GetType().Name + ".Ajax_GetOwner";
|
||||
String messageTitle = Localiser["label.owner"];
|
||||
AjaxResponse_Owner responseData = new AjaxResponse_Owner(model);
|
||||
|
||||
@@ -199,7 +197,6 @@ namespace Sarand.BusinessMgr.Web.Control.Controllers.Instance
|
||||
[Route("Instance/Owner/Ajax/StoreOwner")]
|
||||
public IActionResult Ajax_StoreOwner(Model_Owner model)
|
||||
{
|
||||
String fn = GetType().Name + ".Ajax_StoreOwner";
|
||||
String messageTitle = Localiser["label.owner"];
|
||||
AjaxResponse_Owner responseData = new AjaxResponse_Owner(model);
|
||||
|
||||
|
||||
@@ -72,7 +72,6 @@ namespace Sarand.BusinessMgr.Web.Control.Controllers.Instance
|
||||
[Route("Instance/Repository/Ajax/GetRepositoryList")]
|
||||
public IActionResult Ajax_GetRepositoryList(Model_Repository model)
|
||||
{
|
||||
String fn = GetType().Name + ".Ajax_GetRepositoryList";
|
||||
String messageTitle = Localiser["label.repositories"];
|
||||
AjaxResponse_RepositoryList responseData = new AjaxResponse_RepositoryList(model);
|
||||
|
||||
@@ -156,7 +155,6 @@ namespace Sarand.BusinessMgr.Web.Control.Controllers.Instance
|
||||
[Route("Instance/Repository/Ajax/GetRepository")]
|
||||
public IActionResult Ajax_GetRepository(Model_Repository model)
|
||||
{
|
||||
String fn = GetType().Name + ".Ajax_GetRepository";
|
||||
String messageTitle = Localiser["label.repository"];
|
||||
AjaxResponse_Repository responseData = new AjaxResponse_Repository(model);
|
||||
|
||||
@@ -207,7 +205,6 @@ namespace Sarand.BusinessMgr.Web.Control.Controllers.Instance
|
||||
[Route("Instance/Repository/Ajax/StoreRepository")]
|
||||
public IActionResult Ajax_StoreRepository(Model_Repository model)
|
||||
{
|
||||
String fn = GetType().Name + ".Ajax_StoreRepository";
|
||||
String messageTitle = Localiser["label.repository"];
|
||||
AjaxResponse_Repository responseData = new AjaxResponse_Repository(model);
|
||||
|
||||
|
||||
@@ -56,7 +56,6 @@ namespace Sarand.BusinessMgr.Web.Control.Controllers
|
||||
[HttpGet, HttpPost]
|
||||
public IActionResult ChangePassword(Model_Security model)
|
||||
{
|
||||
String fn = GetType().Name + ".ChangePassword";
|
||||
bool validSessionRequired = true;
|
||||
|
||||
if (Request.Method.EqualsCI(HttpMethods.Get))
|
||||
@@ -79,19 +78,19 @@ namespace Sarand.BusinessMgr.Web.Control.Controllers
|
||||
model.rpe = encryptedParams;
|
||||
validSessionRequired = false;
|
||||
}
|
||||
else SaLogger.Warn(fn + " 'Request Password' parameters supplied but invalid. " + logSuffix);
|
||||
else SaLogger.Warn($"{SysUtil.Fn} 'Request Password' parameters supplied but invalid. {logSuffix}");
|
||||
}
|
||||
else SaLogger.Warn(fn + " 'Request Password' parameters supplied but account is not active. " + logSuffix);
|
||||
else SaLogger.Warn($"{SysUtil.Fn} 'Request Password' parameters supplied but account is not active. {logSuffix}");
|
||||
}
|
||||
else
|
||||
{
|
||||
// User Account not found - redirect to Portal application.
|
||||
String redirectParamName = ParamName_RequestPasswordEncrypted + "2";
|
||||
SaLogger.Warn(fn + " 'Request Password' parameters supplied but account is not 'Admin'. " + logSuffix);
|
||||
SaLogger.Warn($"{SysUtil.Fn} 'Request Password' parameters supplied but account is not 'Admin'. {logSuffix}");
|
||||
if (!Request.Query.Keys.Contains(redirectParamName) && !StringUtil.IsEmpty(AppConfig.URL.Portal.Root))
|
||||
{
|
||||
UriBuilder uri = new UriBuilder(Regex.Replace(AppConfig.URL.Portal.Root, "/$", "") + "/Security/ChangePassword");
|
||||
uri.Query = ParamName_RequestPasswordEncrypted + "=" + Uri.EscapeDataString(encryptedParams) + "&" + redirectParamName;
|
||||
uri.Query = $"{ParamName_RequestPasswordEncrypted}={Uri.EscapeDataString(encryptedParams)}&{redirectParamName}";
|
||||
return Redirect(uri.Uri.OriginalString);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -109,12 +109,12 @@ table.sbmc-striped
|
||||
|
||||
table.sbmc-striped tr.sbmc-odd
|
||||
{
|
||||
background-color:#fff;
|
||||
background-color: #fff;
|
||||
}
|
||||
|
||||
table.sbmc-striped tr.sbmc-even
|
||||
{
|
||||
background-color:#f8f8f8;
|
||||
background-color: #f8f8f8;
|
||||
}
|
||||
|
||||
th, td
|
||||
@@ -215,7 +215,32 @@ td.action
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.fullwidth
|
||||
.width5pc
|
||||
{
|
||||
width: 5%;
|
||||
}
|
||||
|
||||
.width10pc
|
||||
{
|
||||
width: 10%;
|
||||
}
|
||||
|
||||
.width20pc
|
||||
{
|
||||
width: 20%;
|
||||
}
|
||||
|
||||
.width25pc
|
||||
{
|
||||
width: 25%;
|
||||
}
|
||||
|
||||
.width50pc
|
||||
{
|
||||
width: 50%;
|
||||
}
|
||||
|
||||
.fullwidth, .width100pc
|
||||
{
|
||||
width: 100%;
|
||||
}
|
||||
@@ -409,9 +434,9 @@ td.action
|
||||
z-index: 99;
|
||||
}
|
||||
|
||||
.hidden
|
||||
.hidden, .sbm-hidden
|
||||
{
|
||||
display: none;
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
.shadow
|
||||
|
||||
@@ -13,10 +13,6 @@
|
||||
--color-primary: #4b0082;
|
||||
--color-light: #9b71b9;
|
||||
--color-pale: #ebe2f1;
|
||||
/* Tetrad/Square colors */
|
||||
--color-alt1: #820a00;
|
||||
--color-alt2: #378200;
|
||||
--color-alt3: #007882;
|
||||
/* Data panels */
|
||||
--color-panel-data: var(--color-Purple);
|
||||
--color-panel-data-background: var(--color-Purple);
|
||||
@@ -391,7 +387,7 @@ a:focus
|
||||
|
||||
.ui-dialog.no-close .ui-dialog-titlebar-close
|
||||
{
|
||||
/*display: none;*/
|
||||
display: none;
|
||||
}
|
||||
|
||||
.ui-dialog .ui-dialog-buttonpane
|
||||
|
||||
@@ -219,7 +219,7 @@
|
||||
sbc.$dlg.alert = $('<div id="dlgAlert"><div id="dlgAlertMsg"></div></div>').dialog(opt);
|
||||
}
|
||||
$('#dlgAlertMsg', sbc.$dlg.alert).html(msg.replace(/\\n/g, '<br>'));
|
||||
let btns = [];
|
||||
let btns = {};
|
||||
btns[sbc.lbl.ok] = function () { $(this).dialog('close'); if (onOk) onOk(); };
|
||||
sbc.$dlg.alert.dialog('option', { title: title || sbc.dlg.title.alert, buttons: btns });
|
||||
sbc.openDialog(sbc.$dlg.alert);
|
||||
@@ -236,7 +236,7 @@
|
||||
var opt = sbc.dlgOpts();
|
||||
sbc.$dlg.confirm = $('<div id="dlgConfirm"><div class="spacer2"></div><div id="dlgConfirmMsg"></div></div>').dialog(opt);
|
||||
}
|
||||
var btns = [];
|
||||
let btns = {};
|
||||
btns[sbc.lbl.yes] = function () { $(this).dialog('close'); if (onOk) onOk(); };
|
||||
btns[sbc.lbl.no] = function () { $(this).dialog('close'); if (onCancel) onCancel(); };
|
||||
sbc.$dlg.confirm.dialog('option', { title: title || sbc.dlg.title.confirm, buttons: btns });
|
||||
|
||||
@@ -591,4 +591,22 @@
|
||||
<data name="label.email.domain" xml:space="preserve">
|
||||
<value>Email domain</value>
|
||||
</data>
|
||||
<data name="caption.customer.create" xml:space="preserve">
|
||||
<value>Create Customer</value>
|
||||
</data>
|
||||
<data name="caption.supplier.create" xml:space="preserve">
|
||||
<value>Create Supplier</value>
|
||||
</data>
|
||||
<data name="caption.supplier.update" xml:space="preserve">
|
||||
<value>Update Supplier</value>
|
||||
</data>
|
||||
<data name="caption.customer.update" xml:space="preserve">
|
||||
<value>Update Customer</value>
|
||||
</data>
|
||||
<data name="label.organisation" xml:space="preserve">
|
||||
<value>Organisation</value>
|
||||
</data>
|
||||
<data name="label.reference.external" xml:space="preserve">
|
||||
<value>Ext. reference</value>
|
||||
</data>
|
||||
</root>
|
||||
@@ -69,7 +69,6 @@ namespace Sarand.BusinessMgr.Web.Portal.Controllers.Assets
|
||||
[Route("Assets/AssetCategory/Ajax/GetAssetCategoryList")]
|
||||
public IActionResult Ajax_GetAssetCategoryList(Model_AssetCategory model)
|
||||
{
|
||||
String fn = GetType().Name + ".Ajax_GetAssetCategoryList";
|
||||
String messageTitle = Localiser["caption.asset.categories"];
|
||||
AjaxResponse_AssetCategoryList responseData = new AjaxResponse_AssetCategoryList(model);
|
||||
|
||||
@@ -154,7 +153,6 @@ namespace Sarand.BusinessMgr.Web.Portal.Controllers.Assets
|
||||
[Route("Assets/AssetCategory/Ajax/GetAssetCategory")]
|
||||
public IActionResult Ajax_GetAssetCategory(Model_AssetCategory model)
|
||||
{
|
||||
String fn = GetType().Name + ".Ajax_GetAssetCategory";
|
||||
String messageTitle = Localiser["caption.asset.category"];
|
||||
AjaxResponse_AssetCategory responseData = new AjaxResponse_AssetCategory(model);
|
||||
|
||||
@@ -196,7 +194,6 @@ namespace Sarand.BusinessMgr.Web.Portal.Controllers.Assets
|
||||
[Route("Assets/AssetCategory/Ajax/StoreAssetCategory")]
|
||||
public IActionResult Ajax_StoreAssetCategory(Model_AssetCategory model)
|
||||
{
|
||||
String fn = GetType().Name + ".Ajax_StoreAssetCategory";
|
||||
String messageTitle = Localiser["caption.asset.category"];
|
||||
AjaxResponse_AssetCategory responseData = new AjaxResponse_AssetCategory(model);
|
||||
|
||||
|
||||
@@ -80,7 +80,6 @@ namespace Sarand.BusinessMgr.Web.Portal.Controllers.Assets
|
||||
[Route("Assets/Asset/Ajax/GetAssetList")]
|
||||
public IActionResult Ajax_GetAssetList(Model_Asset model)
|
||||
{
|
||||
String fn = GetType().Name + ".Ajax_GetAssetList";
|
||||
String messageTitle = Localiser["label.assets"];
|
||||
AjaxResponse_AssetList responseData = new AjaxResponse_AssetList(model);
|
||||
|
||||
@@ -160,7 +159,6 @@ namespace Sarand.BusinessMgr.Web.Portal.Controllers.Assets
|
||||
[Route("Assets/Asset/Ajax/GetAsset")]
|
||||
public IActionResult Ajax_GetAsset(Model_Asset model)
|
||||
{
|
||||
String fn = GetType().Name + ".Ajax_GetAsset";
|
||||
String messageTitle = Localiser["label.asset"];
|
||||
AjaxResponse_Asset responseData = new AjaxResponse_Asset(model);
|
||||
|
||||
@@ -211,7 +209,6 @@ namespace Sarand.BusinessMgr.Web.Portal.Controllers.Assets
|
||||
[Route("Assets/Asset/Ajax/StoreAsset")]
|
||||
public IActionResult Ajax_StoreAsset(Model_Asset model)
|
||||
{
|
||||
String fn = GetType().Name + ".Ajax_StoreAsset";
|
||||
String messageTitle = Localiser["label.asset"];
|
||||
AjaxResponse_Asset responseData = new AjaxResponse_Asset(model);
|
||||
|
||||
|
||||
@@ -76,7 +76,6 @@ namespace Sarand.BusinessMgr.Web.Portal.Controllers.Assets
|
||||
[Route("Assets/VehicleClass/Ajax/GetVehicleClassList")]
|
||||
public IActionResult Ajax_GetVehicleClassList(Model_VehicleClass model)
|
||||
{
|
||||
String fn = GetType().Name + ".Ajax_GetVehicleClassList";
|
||||
String messageTitle = Localiser["caption.vehicle.classes"];
|
||||
AjaxResponse_VehicleClassList responseData = new AjaxResponse_VehicleClassList(model);
|
||||
|
||||
@@ -162,7 +161,6 @@ namespace Sarand.BusinessMgr.Web.Portal.Controllers.Assets
|
||||
[Route("Assets/VehicleClass/Ajax/GetVehicleClass")]
|
||||
public IActionResult Ajax_GetVehicleClass(Model_VehicleClass model)
|
||||
{
|
||||
String fn = GetType().Name + ".Ajax_GetVehicleClass";
|
||||
String messageTitle = Localiser["caption.vehicle.class"];
|
||||
AjaxResponse_VehicleClass responseData = new AjaxResponse_VehicleClass(model);
|
||||
|
||||
@@ -204,7 +202,6 @@ namespace Sarand.BusinessMgr.Web.Portal.Controllers.Assets
|
||||
[Route("Assets/VehicleClass/Ajax/StoreVehicleClass")]
|
||||
public IActionResult Ajax_StoreVehicleClass(Model_VehicleClass model)
|
||||
{
|
||||
String fn = GetType().Name + ".Ajax_StoreVehicleClass";
|
||||
String messageTitle = Localiser["caption.vehicle.class"];
|
||||
AjaxResponse_VehicleClass responseData = new AjaxResponse_VehicleClass(model);
|
||||
|
||||
|
||||
@@ -77,7 +77,6 @@ namespace Sarand.BusinessMgr.Web.Portal.Controllers.Codes
|
||||
[Route("Codes/Code/Ajax/GetCodeList")]
|
||||
public IActionResult Ajax_GetCodeList(Model_Code model)
|
||||
{
|
||||
String fn = GetType().Name + ".Ajax_GetCodeList";
|
||||
String messageTitle = Localiser["label.codes"];
|
||||
AjaxResponse_CodeList responseData = new AjaxResponse_CodeList(model);
|
||||
|
||||
@@ -163,7 +162,6 @@ namespace Sarand.BusinessMgr.Web.Portal.Controllers.Codes
|
||||
[Route("Codes/Code/Ajax/GetCode")]
|
||||
public IActionResult Ajax_GetCode(Model_Code model)
|
||||
{
|
||||
String fn = GetType().Name + ".Ajax_GetCode";
|
||||
String messageTitle = Localiser["label.code"];
|
||||
AjaxResponse_Code responseData = new AjaxResponse_Code(model);
|
||||
|
||||
@@ -214,7 +212,6 @@ namespace Sarand.BusinessMgr.Web.Portal.Controllers.Codes
|
||||
[Route("Codes/Code/Ajax/StoreCode")]
|
||||
public IActionResult Ajax_StoreCode(Model_Code model)
|
||||
{
|
||||
String fn = GetType().Name + ".Ajax_StoreCode";
|
||||
String messageTitle = Localiser["label.code"];
|
||||
AjaxResponse_Code responseData = new AjaxResponse_Code(model);
|
||||
|
||||
|
||||
@@ -71,7 +71,6 @@ namespace Sarand.BusinessMgr.Web.Portal.Controllers.Codes
|
||||
[Route("Codes/CodeType/Ajax/GetCodeTypeList")]
|
||||
public IActionResult Ajax_GetCodeTypeList(Model_CodeType model)
|
||||
{
|
||||
String fn = GetType().Name + ".Ajax_GetCodeTypeList";
|
||||
String messageTitle = Localiser["caption.code.types"];
|
||||
AjaxResponse_CodeTypeList responseData = new AjaxResponse_CodeTypeList(model);
|
||||
|
||||
@@ -155,7 +154,6 @@ namespace Sarand.BusinessMgr.Web.Portal.Controllers.Codes
|
||||
[Route("Codes/CodeType/Ajax/GetCodeType")]
|
||||
public IActionResult Ajax_GetCodeType(Model_CodeType model)
|
||||
{
|
||||
String fn = GetType().Name + ".Ajax_GetCodeType";
|
||||
String messageTitle = Localiser["caption.asset.category"];
|
||||
AjaxResponse_CodeType responseData = new AjaxResponse_CodeType(model);
|
||||
|
||||
@@ -197,7 +195,6 @@ namespace Sarand.BusinessMgr.Web.Portal.Controllers.Codes
|
||||
[Route("Codes/CodeType/Ajax/StoreCodeType")]
|
||||
public IActionResult Ajax_StoreCodeType(Model_CodeType model)
|
||||
{
|
||||
String fn = GetType().Name + ".Ajax_StoreCodeType";
|
||||
String messageTitle = Localiser["caption.asset.category"];
|
||||
AjaxResponse_CodeType responseData = new AjaxResponse_CodeType(model);
|
||||
|
||||
|
||||
+6
-9
@@ -175,7 +175,6 @@ namespace Sarand.BusinessMgr.Web.Portal.Controllers.Commodities
|
||||
[Route("Commodity/Ajax/GetList")]
|
||||
public IActionResult Ajax_CommodityList(Model_Commodity model)
|
||||
{
|
||||
String fn = GetType().Name + ".Ajax_CommodityList";
|
||||
AjaxResponse_CommodityList responseData = new AjaxResponse_CommodityList(model);
|
||||
String messageTitle = Localiser["caption.commodities"];
|
||||
|
||||
@@ -303,7 +302,6 @@ namespace Sarand.BusinessMgr.Web.Portal.Controllers.Commodities
|
||||
[Route("Commodity/Ajax/GetItem")]
|
||||
public IActionResult Ajax_GetItem(Model_Commodity model)
|
||||
{
|
||||
String fn = GetType().Name + ".Ajax_GetItem";
|
||||
String messageTitle = Localiser["caption.commodity"];
|
||||
AjaxResponse_Commodity responseData = new AjaxResponse_Commodity(model);
|
||||
|
||||
@@ -321,7 +319,7 @@ namespace Sarand.BusinessMgr.Web.Portal.Controllers.Commodities
|
||||
SbmCommodity commodity = CommodityMgr.GetCommodityById(commodityId);
|
||||
if (commodity == null)
|
||||
{
|
||||
SaLogger.Warn(fn + " Failed to retrieve commodity for Id: '" + model.Commodity.Id + "'");
|
||||
SaLogger.Warn($"{SysUtil.Fn} Failed to retrieve commodity for Id: '{model.Commodity.Id}'");
|
||||
return Json(responseData.SetMessage(messageTitle, Localiser["msg.error.item.id.not.found"]));
|
||||
}
|
||||
|
||||
@@ -342,7 +340,6 @@ namespace Sarand.BusinessMgr.Web.Portal.Controllers.Commodities
|
||||
[Route("Commodity/Ajax/StoreItem")]
|
||||
public IActionResult Ajax_StoreItem(Model_Commodity model)
|
||||
{
|
||||
String fn = GetType().Name + ".Ajax_StoreItem";
|
||||
String messageTitle = Localiser["caption.commodity"];
|
||||
AjaxResponse_Commodity responseData = new AjaxResponse_Commodity(model);
|
||||
|
||||
@@ -361,12 +358,12 @@ namespace Sarand.BusinessMgr.Web.Portal.Controllers.Commodities
|
||||
bool commodityExists = StringUtil.ToBool(model.Commodity.Exists);
|
||||
if (commodityExists && !SysId.IsValid(commodityId))
|
||||
{
|
||||
SaLogger.Warn(fn + " Id not specified for existing Commodity.");
|
||||
SaLogger.Warn($"{SysUtil.Fn} Id not specified for existing Commodity.");
|
||||
return Json(responseData.SetGoHome(messageTitle, Localiser["msg.error.system"]));
|
||||
}
|
||||
if (!commodityExists && SysId.IsValid(commodityId))
|
||||
{
|
||||
SaLogger.Warn(fn + " Id specified for new Commodity: '" + model.Commodity.Id + "'");
|
||||
SaLogger.Warn($"{SysUtil.Fn} Id specified for new Commodity: '{model.Commodity.Id}'");
|
||||
return Json(responseData.SetGoHome(messageTitle, Localiser["msg.error.system"]));
|
||||
}
|
||||
|
||||
@@ -374,7 +371,7 @@ namespace Sarand.BusinessMgr.Web.Portal.Controllers.Commodities
|
||||
SbmCommodity commodity = CommodityMgr.GetCommodityById(commodityId);
|
||||
if (commodity == null && SysId.IsValid(commodityId))
|
||||
{
|
||||
SaLogger.Warn(fn + " Failed to retrieve commodity for Id: '" + model.Commodity.Id + "'");
|
||||
SaLogger.Warn($"{SysUtil.Fn} Failed to retrieve commodity for Id: '{model.Commodity.Id}'");
|
||||
return Json(responseData.SetMessage(messageTitle, Localiser["msg.error.item.id.not.found"]));
|
||||
}
|
||||
|
||||
@@ -404,7 +401,7 @@ namespace Sarand.BusinessMgr.Web.Portal.Controllers.Commodities
|
||||
{
|
||||
if (!CommodityMgr.InsertCommodity(commodity, DbUpdateInfo))
|
||||
{
|
||||
SaLogger.Warn(fn + " Failed to insert commodity: " + CommodityMgr.ErrorStateMessage);
|
||||
SaLogger.Warn($"{SysUtil.Fn} Failed to insert commodity: {CommodityMgr.ErrorStateMessage}");
|
||||
return Json(responseData.SetMessage(messageTitle, Localiser["msg.error.item.insert.failed"]));
|
||||
}
|
||||
responseData.SetNotification(messageTitle, Localiser["msg.item.created"]);
|
||||
@@ -413,7 +410,7 @@ namespace Sarand.BusinessMgr.Web.Portal.Controllers.Commodities
|
||||
{
|
||||
if (!CommodityMgr.UpdateCommodity(commodity, DbUpdateInfo))
|
||||
{
|
||||
SaLogger.Warn(fn + " Failed to update commodity [Id:" + SysId.ToString(commodity.Id) + "]: " + CommodityMgr.ErrorStateMessage);
|
||||
SaLogger.Warn($"{SysUtil.Fn} Failed to update commodity [Id:{SysId.ToLong(commodity.Id)}]: {CommodityMgr.ErrorStateMessage}");
|
||||
return Json(responseData.SetMessage(messageTitle, Localiser["msg.error.item.update.failed"]));
|
||||
}
|
||||
responseData.SetNotification(messageTitle, Localiser["msg.item.updated"]);
|
||||
|
||||
+116
-60
@@ -1,4 +1,6 @@
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using DocumentFormat.OpenXml.EMMA;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using NPOI.OpenXmlFormats.Dml.Diagram;
|
||||
using Sarand.BusinessMgr.Net.Standard.Base.App;
|
||||
using Sarand.BusinessMgr.Net.Standard.Base.Bus;
|
||||
using Sarand.BusinessMgr.Web.Portal.Models;
|
||||
@@ -28,6 +30,13 @@ namespace Sarand.BusinessMgr.Web.Portal.Controllers.Contacts
|
||||
public String Code { get; set; }
|
||||
// Address.
|
||||
public String AddressSummary { get; set; }
|
||||
// Fields.
|
||||
public class FieldData
|
||||
{
|
||||
// Item property values keyed to match field name.
|
||||
public Dictionary<string, string> Value { get; } = new Dictionary<string, string>();
|
||||
}
|
||||
public FieldData Field { get; } = new FieldData();
|
||||
}
|
||||
private class AssociationItemData : AssociationListData
|
||||
{
|
||||
@@ -36,60 +45,121 @@ namespace Sarand.BusinessMgr.Web.Portal.Controllers.Contacts
|
||||
public String OwnerName { get; set; }
|
||||
public String TargetId { get; set; }
|
||||
public String TypeCode { get; set; }
|
||||
public String ReferenceExt { get; set; }
|
||||
public String Group { get; set; }
|
||||
public String DescDetail { get; set; }
|
||||
public String Location { get; set; }
|
||||
public String Role { get; set; }
|
||||
public String PhoneMain { get; set; }
|
||||
public String Email { get; set; }
|
||||
public String NominalCodeDefault { get; set; }
|
||||
}
|
||||
private void PopulateAssociationResponseListData(SbmAssociation association, SbmAffiliate affiliateTarget, AssociationListData data)
|
||||
{
|
||||
data.Id = SysId.ToString(association.Id);
|
||||
data.TargetName = affiliateTarget.GetDisplayName();
|
||||
data.TypeDesc = Internals.AssociationTypeCodes.GetDescForType(association.AssociationType);
|
||||
data.Code = association.Code;
|
||||
// Common properties.
|
||||
data.Notes = association.Notes;
|
||||
data.StatusCode = association.StatusCode;
|
||||
data.StatusDesc = association.StatusDesc;
|
||||
}
|
||||
private void PopulateAssociationResponseItemData(SbmAssociation association, SbmAffiliate affiliateTarget, AssociationItemData data)
|
||||
{
|
||||
// List data.
|
||||
PopulateAssociationResponseListData(association, affiliateTarget, data as AssociationListData);
|
||||
// Association properties.
|
||||
data.OwnerId = SysId.ToString(association.AffiliateIdOwner);
|
||||
data.TargetId = SysId.ToString(association.AffiliateIdTarget);
|
||||
data.TypeCode = Internals.AssociationTypeCodes.GetCodeForType(association.AssociationType);
|
||||
data.ReferenceExt = association.RefExt;
|
||||
data.Group = association.Group;
|
||||
data.DescDetail = association.DescDetail;
|
||||
data.Location = association.Location;
|
||||
data.Role = association.Role;
|
||||
data.PhoneMain = association.PhoneMain;
|
||||
data.Email = association.Email;
|
||||
data.NominalCodeDefault = association.DefaultNominalCode;
|
||||
// Address.
|
||||
//data.AddressSummary = AccountMgr.GetAddressSummaryFor(new ItemId((short)Sbm.ItemType.Affiliate, association.AffiliateIdTarget));
|
||||
data.TypeDesc = Internals.AssociationTypeCodes.GetDescForType(association.AssociationType);
|
||||
// Owner - Check if current organisation.
|
||||
if (association.AffiliateIdOwner.Equals(SessionData_Portal.Organisation.AffiliateId))
|
||||
data.Field.Value.Add($"{Model_Association.ItemField.Owner}", SessionData_Portal.Organisation.DisplayName);
|
||||
else
|
||||
{
|
||||
// REtrieve owner contact details.
|
||||
using (SbmAffiliate affiliateOwner = AccountMgr.GetAffiliateById(association.AffiliateIdOwner))
|
||||
{
|
||||
if (affiliateOwner != null)
|
||||
data.Field.Value.Add($"{Model_Association.ItemField.Owner}", affiliateOwner.GetDisplayName());
|
||||
}
|
||||
}
|
||||
data.Field.Value.Add($"{Model_Association.ItemField.Target}", affiliateTarget.GetDisplayName());
|
||||
data.Field.Value.Add($"{Model_Association.ItemField.ReferenceExt}", association.RefExt);
|
||||
data.Field.Value.Add($"{Model_Association.ItemField.Group}", association.Group);
|
||||
data.Field.Value.Add($"{Model_Association.ItemField.DescDetail}", association.DescDetail);
|
||||
data.Field.Value.Add($"{Model_Association.ItemField.Location}", association.Location);
|
||||
data.Field.Value.Add($"{Model_Association.ItemField.Role}", association.Role);
|
||||
data.Field.Value.Add($"{Model_Association.ItemField.PhoneMain}", association.PhoneMain);
|
||||
data.Field.Value.Add($"{Model_Association.ItemField.Email}", association.Email);
|
||||
data.Field.Value.Add($"{Model_Association.ItemField.DefaultNominalCode}", association.DefaultNominalCode);
|
||||
// Flags.
|
||||
// Common properties.
|
||||
data.StatusCode = association.StatusCode;
|
||||
data.StatusDesc = association.StatusDesc;
|
||||
// Cleanse field values.
|
||||
data.Field.Value.RemoveAll(item => StringUtil.IsBlank(item.Value));
|
||||
// Populate item list values that might be cleared during update after removing blank values to ensure that blank values are published.
|
||||
data.Field.Value.Add($"{Model_Association.ItemField.Code}", association.Code);
|
||||
data.Field.Value.Add($"{Model_Association.ItemField.Notes}", association.Notes);
|
||||
data.Field.Value.Add($"{Model_Contact.ItemField.UpdatedOn}", Localiser.FormatDate(association.UpdateStamp.On));
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Association configuration.
|
||||
//-------------------------------------------------------------------
|
||||
private class AjaxResponse_AssociationConfig : AjaxResponse_Data
|
||||
{
|
||||
// Construction.
|
||||
public AjaxResponse_AssociationConfig(SbmModel_Portal model) : base(model) { }
|
||||
// Configuration.
|
||||
public Model_Association.ListConfigData Config { get; } = new Model_Association.ListConfigData();
|
||||
public Model_Association.ItemConfigData ConfigCust { get; } = new Model_Association.ItemConfigData();
|
||||
public Model_Association.ItemConfigData ConfigSupp { get; } = new Model_Association.ItemConfigData();
|
||||
// Reference data.
|
||||
public List<CodeDesc> AssociationTypes { get; } = new List<CodeDesc>();
|
||||
public List<CodeDesc> Statuses { get; } = new List<CodeDesc>();
|
||||
public String DefaultStatusCode { get; set; }
|
||||
}
|
||||
// Ajax request.
|
||||
[HttpPost]
|
||||
[Route("Association/Ajax/Config")]
|
||||
[Route("Association/Ajax/GetConfig")]
|
||||
public IActionResult Ajax_AssociationConfig(Model_Association model)
|
||||
{
|
||||
AjaxResponse_AssociationConfig responseData = new AjaxResponse_AssociationConfig(model);
|
||||
String messageTitle = Localiser["label.associations"];
|
||||
|
||||
// Validate session and referrer.
|
||||
if (!ValidUserSession) return GetAjaxResult_InvalidSession(responseData);
|
||||
if (!ValidReferer) return Forbid();
|
||||
RefreshModel(model);
|
||||
|
||||
// Populate configuration data.
|
||||
PopulateAssociationConfig(model, responseData);
|
||||
|
||||
// Complete response.
|
||||
responseData.Success = true;
|
||||
return Json(responseData);
|
||||
}
|
||||
private void PopulateAssociationConfig(Model_Association model, AjaxResponse_AssociationConfig responseData)
|
||||
{
|
||||
// Configuration.
|
||||
model.PopulateListConfig(responseData.Config);
|
||||
model.PopulateItemConfig(responseData.ConfigCust, null, SessionData_Portal.Organisation.AffiliateId, Sbm.AssociationType.Customer);
|
||||
model.PopulateItemConfig(responseData.ConfigSupp, null, SessionData_Portal.Organisation.AffiliateId, Sbm.AssociationType.Supplier);
|
||||
|
||||
// Reference data - types.
|
||||
List<TypeCodeDesc> associationTypes = Internals.AssociationTypeCodes;
|
||||
foreach (Sbm.AssociationType associationType in EnumUtil.GetValues<Sbm.AssociationType>())
|
||||
{
|
||||
if (associationType <= 0 || associationType == Sbm.AssociationType.Internal) continue;
|
||||
if (!SessionConsole.AllowAssociationType(associationType)) continue;
|
||||
responseData.AssociationTypes.Add(associationTypes.GetCodeForType(associationType), Localiser.GetAssociationTypeCaption(associationType));
|
||||
}
|
||||
|
||||
// Reference data - statuses.
|
||||
foreach (SaStatus status in SbmAssociation.ValidStatuses.FindAll(item => item != SaStatus.Deleted))
|
||||
responseData.Statuses.Add(SacsSystem.GetStatusCode(status), Localiser.GetStatusCaption(status));
|
||||
responseData.DefaultStatusCode = SacsSystem.GetStatusCode(SbmAssociation.DefaultStatus);
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Association list.
|
||||
//-------------------------------------------------------------------
|
||||
private class AjaxResponse_AssociationList : AjaxResponse_Data
|
||||
private class AjaxResponse_AssociationList : AjaxResponse_AssociationConfig
|
||||
{
|
||||
// Construction.
|
||||
public AjaxResponse_AssociationList(SbmModel_Portal model) : base(model) { }
|
||||
// Configuration.
|
||||
public Model_Association.ListConfigData Config { get; } = new Model_Association.ListConfigData();
|
||||
// Association list.
|
||||
public List<AssociationListData> Associations { get; } = new List<AssociationListData>();
|
||||
// Reference data.
|
||||
public List<CodeDesc> AssociationTypes { get; } = new List<CodeDesc>();
|
||||
public List<CodeDesc> Statuses { get; } = new List<CodeDesc>();
|
||||
public String DefaultStatusCode { get; set; }
|
||||
}
|
||||
// Ajax request.
|
||||
[HttpPost]
|
||||
@@ -105,22 +175,8 @@ namespace Sarand.BusinessMgr.Web.Portal.Controllers.Contacts
|
||||
if (!ValidReferer) return Forbid();
|
||||
RefreshModel(model);
|
||||
|
||||
// Configuration.
|
||||
model.PopulateListConfig(responseData.Config);
|
||||
|
||||
// Reference data - types.
|
||||
List<TypeCodeDesc> associationTypes = Internals.AssociationTypeCodes;
|
||||
foreach (Sbm.AssociationType associationType in EnumUtil.GetValues<Sbm.AssociationType>())
|
||||
{
|
||||
if (associationType <= 0 || associationType == Sbm.AssociationType.Internal) continue;
|
||||
if (!SessionConsole.AllowAssociationType(associationType)) continue;
|
||||
responseData.AssociationTypes.Add(associationTypes.GetCodeForType(associationType), Localiser.GetAssociationTypeCaption(associationType));
|
||||
}
|
||||
|
||||
// Reference data - statuses.
|
||||
foreach (SaStatus status in SbmAssociation.ValidStatuses.FindAll(item => item != SaStatus.Deleted))
|
||||
responseData.Statuses.Add(SacsSystem.GetStatusCode(status), Localiser.GetStatusCaption(status));
|
||||
responseData.DefaultStatusCode = SacsSystem.GetStatusCode(SbmAssociation.DefaultStatus);
|
||||
// Populate configuration data.
|
||||
PopulateAssociationConfig(model, responseData);
|
||||
|
||||
// Item filter.
|
||||
SbmAssociation.Params prmAssociation = new SbmAssociation.Params();
|
||||
@@ -160,18 +216,18 @@ namespace Sarand.BusinessMgr.Web.Portal.Controllers.Contacts
|
||||
AssociationListData associationData = new AssociationListData()
|
||||
{
|
||||
Id = values.GetString(colId.DataName),
|
||||
TargetName = values.GetString(colTargetName.DataName),
|
||||
TypeDesc = Internals.AssociationTypeCodes.GetDescForType(associationType),
|
||||
Code = values.GetString(colCode.DataName),
|
||||
AddressSummary = AccountMgr.GetAssociationDataValue(colAddress, values).ToString(),
|
||||
Notes = values.GetString(colNotes.DataName),
|
||||
StatusCode = values.GetString(colStatus.DataName),
|
||||
StatusDesc = SacsSystem.GetStatusDescForCode(values.GetString(colStatus.DataName)),
|
||||
CreatedOn = DateUtil.Format(values.GetDate(colCreatedOn.DataName), "yyyyMMdd"),
|
||||
CreatedOnFmt = Localiser.FormatDate(values.GetDate(colCreatedOn.DataName)),
|
||||
UpdatedOn = DateUtil.Format(values.GetDate(colUpdatedOn.DataName), "yyyyMMdd"),
|
||||
UpdatedOnFmt = Localiser.FormatDate(values.GetDate(colUpdatedOn.DataName))
|
||||
};
|
||||
associationData.Field.Value.Add($"{Model_Association.ItemField.Type}", Internals.AssociationTypeCodes.GetDescForType(associationType));
|
||||
associationData.Field.Value.Add($"{Model_Association.ItemField.Target}", values.GetString(colTargetName.DataName));
|
||||
associationData.Field.Value.Add($"{Model_Association.ItemField.Code}", values.GetString(colCode.DataName));
|
||||
associationData.Field.Value.Add($"{Model_Association.ItemField.Address}", AccountMgr.GetAssociationDataValue(colAddress, values).ToString());
|
||||
associationData.Field.Value.Add($"{Model_Association.ItemField.Notes}", AccountMgr.GetAssociationDataValue(colNotes, values).ToString());
|
||||
associationData.Field.Value.Add($"{Model_Association.ItemField.Status}", SacsSystem.GetStatusDescForCode(values.GetString(colStatus.DataName)));
|
||||
associationData.Field.Value.Add($"{Model_Association.ItemField.CreatedOn}", Localiser.FormatDate(values.GetDate(colCreatedOn.DataName)));
|
||||
associationData.Field.Value.Add($"{Model_Association.ItemField.UpdatedOn}", Localiser.FormatDate(values.GetDate(colUpdatedOn.DataName)));
|
||||
// Cleanse item values.
|
||||
associationData.Field.Value.RemoveAll(item => StringUtil.IsBlank(item.Value));
|
||||
responseData.Associations.Add(associationData);
|
||||
}
|
||||
}
|
||||
@@ -304,7 +360,7 @@ namespace Sarand.BusinessMgr.Web.Portal.Controllers.Contacts
|
||||
return Json(responseData.SetGoHome(messageTitle, Localiser["msg.error.system"]));
|
||||
}
|
||||
// New item.
|
||||
association = AccountMgr.CreateAssociation(SessionData_Portal.Organisation.AffiliateId, associationType, model.Association.AffiliateIdTarget.ToSysId());
|
||||
association = AccountMgr.CreateAssociation(SessionData_Portal.Organisation.AffiliateId, associationType, model.Association.ContactIdTarget.ToSysId());
|
||||
disposables.Add(association);
|
||||
}
|
||||
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
using DocumentFormat.OpenXml.EMMA;
|
||||
using DocumentFormat.OpenXml.ExtendedProperties;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Sarand.BusinessMgr.Net.Standard.Base.App;
|
||||
using Sarand.BusinessMgr.Net.Standard.Base.Bus;
|
||||
@@ -26,78 +27,73 @@ namespace Sarand.BusinessMgr.Web.Portal.Controllers.Contacts
|
||||
// Affiliate data.
|
||||
private class AffiliateListData : AjaxResponse_Data.ItemData_Base
|
||||
{
|
||||
public String DisplayName { get; set; }
|
||||
public String TypeDesc { get; set; }
|
||||
public bool? IsIndividual { get; set; }
|
||||
public bool? IsGroup { get; set; }
|
||||
public String AddressSummary { get; set; }
|
||||
public String Contact { get; set; }
|
||||
public String Phone { get; set; }
|
||||
public String Email { get; set; }
|
||||
// Affiliate properties for list with specific handling.
|
||||
public long? AssociationCount { get; set; }
|
||||
}
|
||||
private class AffiliateItemData : AffiliateListData
|
||||
{
|
||||
// Affiliate properties.
|
||||
public String TypeCode { get; set; }
|
||||
// Fields.
|
||||
public class FieldData
|
||||
{
|
||||
// Item property values keyed to match field name.
|
||||
public Dictionary<string, string> Value { get; } = new Dictionary<string, string>();
|
||||
}
|
||||
public FieldData Field { get; } = new FieldData();
|
||||
}
|
||||
private class AffiliateItemData : AffiliateListData
|
||||
{
|
||||
// Affiliate properties with specific handling.
|
||||
public String TypeCode { get; set; }
|
||||
public String TypeDesc { get; set; }
|
||||
}
|
||||
private void PopulateAffiliateResponseListData(Model_Contact model, SbmAffiliate affiliate, AffiliateListData data)
|
||||
{
|
||||
data.Id = SysId.ToString(affiliate.Id);
|
||||
data.DisplayName = affiliate.GetDisplayName();
|
||||
data.TypeDesc = Internals.AffiliateTypeCodes.GetDescForType(affiliate.AffiliateType);
|
||||
if (affiliate.IsIndividual()) data.IsIndividual = true;
|
||||
if (affiliate.IsContactGroup()) data.IsGroup = true;
|
||||
// Common properties.
|
||||
data.StatusCode = affiliate.StatusCode;
|
||||
data.StatusDesc = affiliate.StatusDesc;
|
||||
}
|
||||
private void PopulateAffiliateResponseItemData(Model_Contact model, SbmAffiliate affiliate, AffiliateItemData data)
|
||||
{
|
||||
PopulateAffiliateResponseListData(model, affiliate, data as AffiliateListData);
|
||||
// Affiliate properties.
|
||||
// Affiliate type - populate for list ('Type' property populated with desc) and form (Type Code & Desc).
|
||||
data.TypeCode = Internals.AffiliateTypeCodes.GetCodeForType(affiliate.AffiliateType);
|
||||
data.TypeDesc = Internals.AffiliateTypeCodes.GetDescForType(affiliate.AffiliateType);
|
||||
data.Field.Value.Add($"{Model_Contact.ItemField.Type}", Internals.AffiliateTypeCodes.GetDescForType(affiliate.AffiliateType));
|
||||
// Ogranisation.
|
||||
data.Field.Value.Add(Model_Contact.ItemField.Parent.ToString(), SysId.ToString(affiliate.AffiliateIdParent));
|
||||
data.Field.Value.Add(Model_Contact.ItemField.Name.ToString(), affiliate.Name);
|
||||
data.Field.Value.Add(Model_Contact.ItemField.Abbreviation.ToString(), affiliate.Abbr);
|
||||
data.Field.Value.Add(Model_Contact.ItemField.Nature.ToString(), affiliate.Nature);
|
||||
data.Field.Value.Add(Model_Contact.ItemField.Contact.ToString(), affiliate.Contact);
|
||||
data.Field.Value.Add(Model_Contact.ItemField.PhoneMain.ToString(), affiliate.PhoneMain);
|
||||
data.Field.Value.Add(Model_Contact.ItemField.PhoneAlt.ToString(), affiliate.PhoneAlt);
|
||||
data.Field.Value.Add(Model_Contact.ItemField.PhoneDirect.ToString(), affiliate.PhoneDirect);
|
||||
data.Field.Value.Add(Model_Contact.ItemField.PhoneFax.ToString(), affiliate.PhoneFax);
|
||||
data.Field.Value.Add(Model_Contact.ItemField.Email.ToString(), affiliate.Email);
|
||||
data.Field.Value.Add(Model_Contact.ItemField.Website.ToString(), affiliate.Website);
|
||||
data.Field.Value.Add(Model_Contact.ItemField.CompanyNo.ToString(), affiliate.CompanyNo);
|
||||
data.Field.Value.Add(Model_Contact.ItemField.VatReg.ToString(), affiliate.VatReg);
|
||||
data.Field.Value.Add($"{Model_Contact.ItemField.Parent}", SysId.ToString(affiliate.AffiliateIdParent));
|
||||
data.Field.Value.Add($"{Model_Contact.ItemField.Name}", affiliate.Name);
|
||||
data.Field.Value.Add($"{Model_Contact.ItemField.Abbreviation}", affiliate.Abbr);
|
||||
data.Field.Value.Add($"{Model_Contact.ItemField.PhoneMain}", affiliate.PhoneMain);
|
||||
data.Field.Value.Add($"{Model_Contact.ItemField.PhoneAlt}", affiliate.PhoneAlt);
|
||||
data.Field.Value.Add($"{Model_Contact.ItemField.PhoneDirect}", affiliate.PhoneDirect);
|
||||
data.Field.Value.Add($"{Model_Contact.ItemField.PhoneFax}", affiliate.PhoneFax);
|
||||
data.Field.Value.Add($"{Model_Contact.ItemField.Website}", affiliate.Website);
|
||||
data.Field.Value.Add($"{Model_Contact.ItemField.CompanyNo}", affiliate.CompanyNo);
|
||||
data.Field.Value.Add($"{Model_Contact.ItemField.VatReg}", affiliate.VatReg);
|
||||
// Individual.
|
||||
data.Field.Value.Add(Model_Contact.ItemField.Title.ToString(), affiliate.Title);
|
||||
data.Field.Value.Add(Model_Contact.ItemField.Salutation.ToString(), affiliate.Salutation);
|
||||
data.Field.Value.Add(Model_Contact.ItemField.FirstName.ToString(), affiliate.FirstName);
|
||||
data.Field.Value.Add(Model_Contact.ItemField.Initials.ToString(), affiliate.Initials);
|
||||
data.Field.Value.Add(Model_Contact.ItemField.LastName.ToString(), affiliate.LastName);
|
||||
data.Field.Value.Add(Model_Contact.ItemField.PhoneMobile.ToString(), affiliate.PhoneMobile);
|
||||
data.Field.Value.Add(Model_Contact.ItemField.BirthDay.ToString(), affiliate.BirthDay > 0 ? affiliate.BirthDay.ToString() : "");
|
||||
data.Field.Value.Add(Model_Contact.ItemField.BirthMonth.ToString(), affiliate.BirthMonth > 0 ? affiliate.BirthMonth.ToString() : "");
|
||||
data.Field.Value.Add(Model_Contact.ItemField.BirthYear.ToString(), affiliate.BirthYear > 0 ? affiliate.BirthYear.ToString() : "");
|
||||
data.Field.Value.Add(Model_Contact.ItemField.MaritalStatus.ToString(), affiliate.MaritalStatus);
|
||||
data.Field.Value.Add(Model_Contact.ItemField.Spouse.ToString(), affiliate.Spouse);
|
||||
data.Field.Value.Add(Model_Contact.ItemField.Children.ToString(), affiliate.Children);
|
||||
data.Field.Value.Add(Model_Contact.ItemField.Hometown.ToString(), affiliate.Hometown);
|
||||
data.Field.Value.Add(Model_Contact.ItemField.UserId.ToString(), SysId.ToString(affiliate.UserId));
|
||||
data.Field.Value.Add($"{Model_Contact.ItemField.Title}", affiliate.Title);
|
||||
data.Field.Value.Add($"{Model_Contact.ItemField.Salutation}", affiliate.Salutation);
|
||||
data.Field.Value.Add($"{Model_Contact.ItemField.FirstName}", affiliate.FirstName);
|
||||
data.Field.Value.Add($"{Model_Contact.ItemField.Initials}", affiliate.Initials);
|
||||
data.Field.Value.Add($"{Model_Contact.ItemField.LastName}", affiliate.LastName);
|
||||
data.Field.Value.Add($"{Model_Contact.ItemField.PhoneMobile}", affiliate.PhoneMobile);
|
||||
data.Field.Value.Add($"{Model_Contact.ItemField.BirthDay}", affiliate.BirthDay > 0 ? affiliate.BirthDay.ToString() : "");
|
||||
data.Field.Value.Add($"{Model_Contact.ItemField.BirthMonth}", affiliate.BirthMonth > 0 ? affiliate.BirthMonth.ToString() : "");
|
||||
data.Field.Value.Add($"{Model_Contact.ItemField.BirthYear}", affiliate.BirthYear > 0 ? affiliate.BirthYear.ToString() : "");
|
||||
data.Field.Value.Add($"{Model_Contact.ItemField.MaritalStatus}", affiliate.MaritalStatus);
|
||||
data.Field.Value.Add($"{Model_Contact.ItemField.Spouse}", affiliate.Spouse);
|
||||
data.Field.Value.Add($"{Model_Contact.ItemField.Children}", affiliate.Children);
|
||||
data.Field.Value.Add($"{Model_Contact.ItemField.Hometown}", affiliate.Hometown);
|
||||
data.Field.Value.Add($"{Model_Contact.ItemField.UserId}", SysId.ToString(affiliate.UserId));
|
||||
// Flags.
|
||||
data.Field.Value.Add(Model_Contact.ItemField.Prospect.ToString(), affiliate.Prospect ? "1" : "");
|
||||
data.Field.Value.Add($"{Model_Contact.ItemField.Prospect}", affiliate.Prospect ? "1" : "");
|
||||
// Common properties.
|
||||
data.Field.Value.Add(Model_Contact.ItemField.Notes.ToString(), affiliate.Notes);
|
||||
data.StatusCode = affiliate.StatusCode;
|
||||
data.StatusDesc = affiliate.StatusDesc;
|
||||
// Cleanse field values.
|
||||
data.Field.Value.RemoveAll(item => StringUtil.IsBlank(item.Value));
|
||||
// Populate item list values that might be cleared during update after removing blank values to ensure that blank values are published.
|
||||
data.Field.Value.Add($"{Model_Contact.ItemField.Nature}", affiliate.Nature);
|
||||
data.Field.Value.Add($"{Model_Contact.ItemField.Contact}", affiliate.Contact);
|
||||
data.Field.Value.Add($"{Model_Contact.ItemField.Phone}", affiliate.GetPhone());
|
||||
data.Field.Value.Add($"{Model_Contact.ItemField.Email}", affiliate.Email);
|
||||
data.Field.Value.Add($"{Model_Contact.ItemField.Notes}", affiliate.Notes);
|
||||
data.Field.Value.Add($"{Model_Contact.ItemField.UpdatedOn}", Localiser.FormatDate(affiliate.UpdateStamp.On));
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
@@ -127,7 +123,6 @@ namespace Sarand.BusinessMgr.Web.Portal.Controllers.Contacts
|
||||
[Route("Contact/Ajax/GetConfig")]
|
||||
public IActionResult Ajax_ContactConfig(Model_Contact model)
|
||||
{
|
||||
String fn = GetType().Name + ".Ajax_ContactConfig";
|
||||
AjaxResponse_ContactConfig responseData = new AjaxResponse_ContactConfig(model);
|
||||
String messageTitle = Localiser["label.contacts"];
|
||||
|
||||
@@ -156,10 +151,12 @@ namespace Sarand.BusinessMgr.Web.Portal.Controllers.Contacts
|
||||
responseData.OrganisationTypes.Add(new AjaxResponse_Data.ItemCodeDesc(affiliateType.Code, affiliateType.Desc));
|
||||
|
||||
// Reference data - titles.
|
||||
responseData.Titles.Add(new AjaxResponse_Data.ItemCodeDesc("", ""));
|
||||
foreach (SaCode title in CodeTypeConsole.GetCodesForCodeType(SbmSystem.GetCodeTypeCode(Sbm.ApplCodeType.ContactTitle)))
|
||||
responseData.Titles.Add(new AjaxResponse_Data.ItemCodeDesc(title.Code, title.Description));
|
||||
|
||||
// Reference data - salutation.
|
||||
responseData.Salutations.Add(new AjaxResponse_Data.ItemCodeDesc("", ""));
|
||||
responseData.Salutations.Add(new AjaxResponse_Data.ItemCodeDesc("Dear", "Dear"));
|
||||
|
||||
// Reference data - statuses.
|
||||
@@ -184,7 +181,6 @@ namespace Sarand.BusinessMgr.Web.Portal.Controllers.Contacts
|
||||
[Route("Contact/Ajax/GetList")]
|
||||
public IActionResult Ajax_ContactList(Model_Contact model)
|
||||
{
|
||||
String fn = GetType().Name + ".Ajax_ContactList";
|
||||
AjaxResponse_ContactList responseData = new AjaxResponse_ContactList(model);
|
||||
String messageTitle = Localiser["label.contacts"];
|
||||
|
||||
@@ -228,11 +224,15 @@ namespace Sarand.BusinessMgr.Web.Portal.Controllers.Contacts
|
||||
colAddress, colContact, colPhoneMain, colPhoneAlt, colPhoneMobile, colPhoneDirect, colEmail, colAssocCount,
|
||||
colNotes, colStatus, colCreatedOn, colUpdatedOn
|
||||
};
|
||||
if (responseData.Config.Column.Hide.Contains(Model_Contact.ItemColumn.Address.ToString()))
|
||||
if (responseData.Config.Column.Hide.Contains($"{Model_Contact.ItemField.Address}"))
|
||||
columns.Remove(colAddress);
|
||||
if (responseData.Config.Column.Hide.Contains(Model_Contact.ItemColumn.Email.ToString()))
|
||||
if (responseData.Config.Column.Hide.Contains($"{Model_Contact.ItemField.Email}"))
|
||||
columns.Remove(colEmail);
|
||||
|
||||
// Sort Columns.
|
||||
if (!prmAffiliate.SortColumns.Any())
|
||||
prmAffiliate.SortColumns.Add(colName);
|
||||
|
||||
// Query items.
|
||||
using (DbResultSet resultSet = AccountMgr.ExecuteAffiliateQuery(columns, prmAffiliate))
|
||||
{
|
||||
@@ -243,25 +243,23 @@ namespace Sarand.BusinessMgr.Web.Portal.Controllers.Contacts
|
||||
AffiliateListData affiliateData = new AffiliateListData()
|
||||
{
|
||||
Id = values.GetString(colId.DataName),
|
||||
DisplayName = values.GetString(colName.DataName),
|
||||
TypeDesc = Internals.AffiliateTypeCodes.GetDescForType(affiliateType),
|
||||
AddressSummary = StringUtil.NullOnBlank(AccountMgr.GetAffiliateDataValue(colAddress, values).AsString()),
|
||||
Contact = StringUtil.NullOnBlank(values.GetString(colContact.DataName)),
|
||||
Phone = StringUtil.NullOnBlank(StringUtil.OnBlank(values.GetString(colPhoneMain.DataName), values.GetString(colPhoneAlt.DataName), values.GetString(colPhoneMobile.DataName), values.GetString(colPhoneDirect.DataName))),
|
||||
Email = StringUtil.NullOnBlank(values.GetString(colEmail.DataName)),
|
||||
Notes = StringUtil.NullOnBlank(AccountMgr.GetAffiliateDataValue(colNotes, values).ToString()),
|
||||
StatusCode = values.GetString(colStatus.DataName),
|
||||
StatusDesc = SacsSystem.GetStatusDescForCode(values.GetString(colStatus.DataName)),
|
||||
CreatedOn = DateUtil.Format(values.GetDate(colCreatedOn.DataName), "yyyyMMdd"),
|
||||
CreatedOnFmt = Localiser.FormatDate(values.GetDate(colCreatedOn.DataName)),
|
||||
UpdatedOn = DateUtil.Format(values.GetDate(colUpdatedOn.DataName), "yyyyMMdd"),
|
||||
UpdatedOnFmt = Localiser.FormatDate(values.GetDate(colUpdatedOn.DataName))
|
||||
};
|
||||
if (SbmAffiliate.IsIndividual(affiliateType)) affiliateData.IsIndividual = true;
|
||||
if (SbmAffiliate.IsContactGroup(affiliateType)) affiliateData.IsGroup = true;
|
||||
affiliateData.Field.Value.Add($"{Model_Contact.ItemField.Name}", values.GetString(colName.DataName));
|
||||
affiliateData.Field.Value.Add($"{Model_Contact.ItemField.Type}", Internals.AffiliateTypeCodes.GetDescForType(affiliateType));
|
||||
affiliateData.Field.Value.Add($"{Model_Contact.ItemField.Address}", StringUtil.NullOnBlank(AccountMgr.GetAffiliateDataValue(colAddress, values).AsString()));
|
||||
affiliateData.Field.Value.Add($"{Model_Contact.ItemField.Contact}", StringUtil.NullOnBlank(values.GetString(colContact.DataName)));
|
||||
affiliateData.Field.Value.Add($"{Model_Contact.ItemField.Phone}", StringUtil.NullOnBlank(StringUtil.OnBlank(values.GetString(colPhoneMain.DataName), values.GetString(colPhoneAlt.DataName), values.GetString(colPhoneMobile.DataName), values.GetString(colPhoneDirect.DataName))));
|
||||
affiliateData.Field.Value.Add($"{Model_Contact.ItemField.Email}", StringUtil.NullOnBlank(values.GetString(colEmail.DataName)));
|
||||
affiliateData.Field.Value.Add($"{Model_Contact.ItemField.Notes}", StringUtil.NullOnBlank(AccountMgr.GetAffiliateDataValue(colNotes, values).ToString()));
|
||||
affiliateData.Field.Value.Add($"{Model_Contact.ItemField.Status}", SacsSystem.GetStatusDescForCode(values.GetString(colStatus.DataName)));
|
||||
affiliateData.Field.Value.Add($"{Model_Contact.ItemField.CreatedOn}", Localiser.FormatDate(values.GetDate(colCreatedOn.DataName)));
|
||||
affiliateData.Field.Value.Add($"{Model_Contact.ItemField.UpdatedOn}", Localiser.FormatDate(values.GetDate(colUpdatedOn.DataName)));
|
||||
long assocCount = values.GetLong(colAssocCount.DataName);
|
||||
if (assocCount > 0)
|
||||
affiliateData.AssociationCount = assocCount;
|
||||
// Cleanse item values.
|
||||
affiliateData.Field.Value.RemoveAll(item => StringUtil.IsBlank(item.Value));
|
||||
responseData.Contacts.Add(affiliateData);
|
||||
}
|
||||
}
|
||||
@@ -296,7 +294,6 @@ namespace Sarand.BusinessMgr.Web.Portal.Controllers.Contacts
|
||||
[Route("Contact/Ajax/GetItem")]
|
||||
public IActionResult Ajax_GetItem(Model_Contact model)
|
||||
{
|
||||
String fn = GetType().Name + ".Ajax_GetItem";
|
||||
String messageTitle = Localiser["label.contact"];
|
||||
AjaxResponse_Affiliate responseData = new AjaxResponse_Affiliate(model);
|
||||
|
||||
@@ -314,7 +311,7 @@ namespace Sarand.BusinessMgr.Web.Portal.Controllers.Contacts
|
||||
SbmAffiliate affiliate = AccountMgr.GetAffiliateById(affiliateId);
|
||||
if (affiliate == null)
|
||||
{
|
||||
SaLogger.Warn(fn + " Failed to retrieve affiliate for Id: '" + model.Contact.Id + "'");
|
||||
SaLogger.Warn($"{SysUtil.Fn} Failed to retrieve affiliate for Id: '{model.Contact.Id}'");
|
||||
return Json(responseData.SetMessage(messageTitle, Localiser["msg.error.item.id.not.found"]));
|
||||
}
|
||||
|
||||
@@ -336,7 +333,6 @@ namespace Sarand.BusinessMgr.Web.Portal.Controllers.Contacts
|
||||
[Route("Contact/Ajax/StoreItem")]
|
||||
public IActionResult Ajax_StoreItem(Model_Contact model)
|
||||
{
|
||||
String fn = GetType().Name + ".Ajax_StoreItem";
|
||||
String messageTitle = Localiser["label.contact"];
|
||||
AjaxResponse_Affiliate responseData = new AjaxResponse_Affiliate(model);
|
||||
|
||||
@@ -355,12 +351,12 @@ namespace Sarand.BusinessMgr.Web.Portal.Controllers.Contacts
|
||||
bool contactExists = StringUtil.ToBool(model.Contact.Exists);
|
||||
if (contactExists && !SysId.IsValid(affiliateId))
|
||||
{
|
||||
SaLogger.Warn(fn + " Id not specified for existing Affiliate.");
|
||||
SaLogger.Warn($"{SysUtil.Fn} Id not specified for existing Affiliate.");
|
||||
return Json(responseData.SetGoHome(messageTitle, Localiser["msg.error.system"]));
|
||||
}
|
||||
if (!contactExists && SysId.IsValid(affiliateId))
|
||||
{
|
||||
SaLogger.Warn(fn + " Id specified for new Affiliate: '" + model.Contact.Id + "'");
|
||||
SaLogger.Warn($"{SysUtil.Fn} Id specified for new Affiliate: '{model.Contact.Id}'");
|
||||
return Json(responseData.SetGoHome(messageTitle, Localiser["msg.error.system"]));
|
||||
}
|
||||
|
||||
@@ -368,19 +364,19 @@ namespace Sarand.BusinessMgr.Web.Portal.Controllers.Contacts
|
||||
SbmAffiliate affiliate = AccountMgr.GetAffiliateById(affiliateId);
|
||||
if (affiliate == null && SysId.IsValid(affiliateId))
|
||||
{
|
||||
SaLogger.Warn(fn + " Failed to retrieve affiliate for Id: '" + model.Contact.Id + "'");
|
||||
SaLogger.Warn($"{SysUtil.Fn} Failed to retrieve affiliate for Id: '{model.Contact.Id}'");
|
||||
return Json(responseData.SetMessage(messageTitle, Localiser["msg.error.item.id.not.found"]));
|
||||
}
|
||||
|
||||
// Create new item if required.
|
||||
if (affiliate == null)
|
||||
{
|
||||
affiliate = AccountMgr.CreateAffiliate(model.GetContactType());
|
||||
affiliate = AccountMgr.CreateAffiliate(model.GetAffiliateType());
|
||||
}
|
||||
else
|
||||
{
|
||||
if (model.Contact.Type != null)
|
||||
affiliate.AffiliateType = model.GetContactType();
|
||||
affiliate.AffiliateType = model.GetAffiliateType();
|
||||
}
|
||||
|
||||
// Populate item properties.
|
||||
@@ -440,7 +436,7 @@ namespace Sarand.BusinessMgr.Web.Portal.Controllers.Contacts
|
||||
{
|
||||
if (!AccountMgr.InsertAffiliate(affiliate, DbUpdateInfo))
|
||||
{
|
||||
SaLogger.Warn(fn + " Failed to insert affiliate: " + AccountMgr.ErrorStateMessage);
|
||||
SaLogger.Warn($"{SysUtil.Fn} Failed to insert affiliate: {AccountMgr.ErrorStateMessage}");
|
||||
return Json(responseData.SetMessage(messageTitle, Localiser["msg.error.item.insert.failed"]));
|
||||
}
|
||||
responseData.SetNotification(messageTitle, Localiser["msg.item.created"]);
|
||||
@@ -449,7 +445,7 @@ namespace Sarand.BusinessMgr.Web.Portal.Controllers.Contacts
|
||||
{
|
||||
if (!AccountMgr.UpdateAffiliate(affiliate, DbUpdateInfo))
|
||||
{
|
||||
SaLogger.Warn(fn + " Failed to update affiliate [Id:" + SysId.ToString(affiliate.Id) + "]: " + AccountMgr.ErrorStateMessage);
|
||||
SaLogger.Warn($"{SysUtil.Fn} Failed to update affiliate [Id: {SysId.ToLong(affiliate.Id)}]: {AccountMgr.ErrorStateMessage}");
|
||||
return Json(responseData.SetMessage(messageTitle, Localiser["msg.error.item.update.failed"]));
|
||||
}
|
||||
responseData.SetNotification(messageTitle, Localiser["msg.item.updated"]);
|
||||
|
||||
@@ -1,9 +1,13 @@
|
||||
using Sarand.BusinessMgr.Net.Standard.Base.App;
|
||||
using Sarand.BusinessMgr.Net.Standard.Base.Bus;
|
||||
using Sarand.Net.Standard.Accounts.Sage.App;
|
||||
using Sarand.Net.Standard.Base.Bus;
|
||||
using Sarand.Net.Standard.Base.Utils;
|
||||
using System;
|
||||
using System.Buffers;
|
||||
using System.Collections.Generic;
|
||||
using System.Drawing;
|
||||
using System.Xml.Serialization;
|
||||
|
||||
namespace Sarand.BusinessMgr.Web.Portal.Models.Contacts
|
||||
{
|
||||
@@ -14,44 +18,92 @@ namespace Sarand.BusinessMgr.Web.Portal.Models.Contacts
|
||||
partial class Model_Association
|
||||
{
|
||||
//-------------------------------------------------------------------
|
||||
|
||||
/// <summary>Prefix for field names.</summary>
|
||||
public const String FieldNamePrefix = "Assoc";
|
||||
|
||||
/// <summary>Item fields.</summary>
|
||||
public enum ItemField
|
||||
{
|
||||
Id,
|
||||
Type,
|
||||
Owner,
|
||||
/// <summary>Target name.</summary>
|
||||
Target,
|
||||
Code,
|
||||
ReferenceExt,
|
||||
Primary,
|
||||
Technician,
|
||||
DescDetail,
|
||||
Location,
|
||||
Role,
|
||||
Group,
|
||||
Terminated,
|
||||
/// <summary>Address summary. [list only]</summary>
|
||||
Address,
|
||||
/// <summary>Significant phone number. [list only]</summary>
|
||||
Phone,
|
||||
PhoneMain,
|
||||
Email,
|
||||
// Financials.
|
||||
AnnualSalesTarget,
|
||||
CreditLimit,
|
||||
AccountBalance,
|
||||
DiscountType,
|
||||
DiscountRate,
|
||||
PriceSet,
|
||||
TaxCode,
|
||||
/// <summary>Last sales transaction raised. [list only]</summary>
|
||||
TransLastSaleRaised,
|
||||
/// <summary>Open sales transaction value. [list only]</summary>
|
||||
TransSalesValueOpen,
|
||||
/// <summary>Sales transaction value current year to date. [list only]</summary>
|
||||
TransSalesValueCytd,
|
||||
/// <summary>Sales transaction value last calendar year. [list only]</summary>
|
||||
TransSalesValueLcy,
|
||||
// Accounts.
|
||||
DefaultNominalCode,
|
||||
// Commodities.
|
||||
/// <summary>Commodity count. [list only]</summary>
|
||||
CommodityCount,
|
||||
CommoditySalesDefault,
|
||||
// Customer codes.
|
||||
AccountManager,
|
||||
AccountHandler,
|
||||
AccountType,
|
||||
AccountRating,
|
||||
ContactArea,
|
||||
ContactHandler,
|
||||
ContactMethod,
|
||||
ContactCallCycle,
|
||||
// Common.
|
||||
Notes,
|
||||
Status,
|
||||
CreatedOn,
|
||||
UpdatedOn,
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Identifier used by form fields to show control specific messages generated by model validation etc.
|
||||
/// <para>- Both page and model should use this method to consistently generate the field name.</para>
|
||||
/// </summary>
|
||||
public String GetFieldName(ItemField field)
|
||||
{
|
||||
return $"{FieldNamePrefix}{field}";
|
||||
}
|
||||
|
||||
// List configuration.
|
||||
public class ListConfigData
|
||||
{
|
||||
// List columns.
|
||||
public class ColumnData
|
||||
{
|
||||
// Show column.
|
||||
public class ShowData
|
||||
{
|
||||
public bool? Owner_Name { get; set; }
|
||||
// Customer.
|
||||
public bool? Trans_SalesValue_Open { get; set; }
|
||||
public bool? Trans_LastSaleRaised { get; set; }
|
||||
public bool? AnnualSalesTarget { get; set; }
|
||||
public bool? Trans_SalesValue_Cytd { get; set; }
|
||||
public bool? Trans_SalesValue_Lcy { get; set; }
|
||||
public bool? CommodityCount { get; set; }
|
||||
public bool? DiscountRate { get; set; }
|
||||
public bool? PriceSet { get; set; }
|
||||
public bool? Group { get; set; }
|
||||
// Customer codes.
|
||||
public bool? AccountManager { get; set; }
|
||||
public bool? AccountHandler { get; set; }
|
||||
public bool? ContactArea { get; set; }
|
||||
public bool? ContactHandler { get; set; }
|
||||
// Members.
|
||||
public bool? Technician { get; set; }
|
||||
public bool? Terminated { get; set; }
|
||||
}
|
||||
public ShowData Show { get; } = new ShowData();
|
||||
// Column name prefix.
|
||||
public String Prefix { get; } = Model_Association.FieldNamePrefix;
|
||||
// Hide column.
|
||||
public HashSet<string> Hide { get; } = new HashSet<string>(StringComparer.InvariantCultureIgnoreCase);
|
||||
// Column labels.
|
||||
public class LabelData
|
||||
{
|
||||
// Members.
|
||||
public String Technician { get; set; }
|
||||
public String Terminated { get; set; }
|
||||
}
|
||||
public LabelData Label { get; } = new LabelData();
|
||||
public Dictionary<String, String> Label { get; } = new Dictionary<string, string>(StringComparer.InvariantCultureIgnoreCase);
|
||||
}
|
||||
public ColumnData Column { get; } = new ColumnData();
|
||||
}
|
||||
@@ -66,71 +118,85 @@ namespace Sarand.BusinessMgr.Web.Portal.Models.Contacts
|
||||
ListConfig = new ListConfigData();
|
||||
PopulateListConfig(ListConfig);
|
||||
}
|
||||
public void PopulateListConfig(ListConfigData listConfig)
|
||||
public void PopulateListConfig(ListConfigData config)
|
||||
{
|
||||
bool isCustomer = GetAssociationType() == Sbm.AssociationType.Customer;
|
||||
bool isSupplier = GetAssociationType() == Sbm.AssociationType.Supplier;
|
||||
bool modeIsRelationships = Mode == AssociationPageMode.Relationships;
|
||||
bool modeIsMaintain = Mode == AssociationPageMode.Maintain;
|
||||
Sbm.AssociationType associationType = GetAssociationType();
|
||||
bool typeIsCustomer = associationType == Sbm.AssociationType.Customer;
|
||||
bool typeIsSupplier = associationType == Sbm.AssociationType.Supplier;
|
||||
bool typeIsMember = associationType == Sbm.AssociationType.Member;
|
||||
|
||||
bool userCanViewFinancials = SessionData_Portal.SecurityProfile_Core.UserCanViewFinancials();
|
||||
|
||||
// List columns.
|
||||
if (Mode == AssociationPageMode.Relationships)
|
||||
listConfig.Column.Show.Owner_Name = true;
|
||||
if (Mode == AssociationPageMode.Maintain)
|
||||
{
|
||||
if (GetAssociationType() == Sbm.AssociationType.Customer)
|
||||
{
|
||||
// Customers.
|
||||
if (userCanViewFinancials && SessionData_Portal.GetOwnerOption_ShowColumn(Sbm.OrgOption_ShowColumn.Association_Trans_SalesValue_Open))
|
||||
listConfig.Column.Show.Trans_SalesValue_Open = true;
|
||||
if (SessionData_Portal.GetOwnerOption_ShowColumn(Sbm.OrgOption_ShowColumn.Association_Trans_LastSaleRaised))
|
||||
listConfig.Column.Show.Trans_LastSaleRaised = true;
|
||||
if (userCanViewFinancials && SessionData_Portal.GetOwnerOption_ShowColumn(Sbm.OrgOption_ShowColumn.Association_AnnualSalesTarget))
|
||||
listConfig.Column.Show.AnnualSalesTarget = true;
|
||||
if (userCanViewFinancials && SessionData_Portal.GetOwnerOption_ShowColumn(Sbm.OrgOption_ShowColumn.Association_Trans_SalesValue_Cytd))
|
||||
listConfig.Column.Show.Trans_SalesValue_Cytd = true;
|
||||
if (userCanViewFinancials && SessionData_Portal.GetOwnerOption_ShowColumn(Sbm.OrgOption_ShowColumn.Association_Trans_SalesValue_Lcy))
|
||||
listConfig.Column.Show.Trans_SalesValue_Lcy = true;
|
||||
// Commodities.
|
||||
if (CommodityMgr.CanManageCommodityCustomers())
|
||||
listConfig.Column.Show.CommodityCount = true;
|
||||
// Customer pricing.
|
||||
if (userCanViewFinancials && SessionConsole.AllowOption(Sbm.ConfigOption.CustomerDiscount))
|
||||
listConfig.Column.Show.DiscountRate = true;
|
||||
if (userCanViewFinancials && SessionConsole.AllowOption(Sbm.ConfigOption.CustomerPriceSet) && PriceMgr.PriceDatabaseIsValid)
|
||||
listConfig.Column.Show.PriceSet = true;
|
||||
// Association group.
|
||||
if (SessionData_Portal.GetOwnerOption_ShowColumn(Sbm.OrgOption_ShowColumn.Association_Group))
|
||||
listConfig.Column.Show.Group = true;
|
||||
// Codes.
|
||||
if (CodeTypeConsole.CodeTypeHasCodes(Internals.GetCodeTypeCode(Sbm.ApplCodeType.AccountManager)))
|
||||
listConfig.Column.Show.AccountManager = true;
|
||||
if (CodeTypeConsole.CodeTypeHasCodes(Internals.GetCodeTypeCode(Sbm.ApplCodeType.AccountHandler)))
|
||||
listConfig.Column.Show.AccountHandler = true;
|
||||
if (CodeTypeConsole.CodeTypeHasCodes(Internals.GetCodeTypeCode(Sbm.ApplCodeType.ContactArea)))
|
||||
listConfig.Column.Show.ContactArea = true;
|
||||
if (CodeTypeConsole.CodeTypeHasCodes(Internals.GetCodeTypeCode(Sbm.ApplCodeType.ContactHandler)))
|
||||
listConfig.Column.Show.ContactHandler = true;
|
||||
}
|
||||
else if (GetAssociationType() == Sbm.AssociationType.Supplier)
|
||||
{
|
||||
// Suppliers.
|
||||
// Commodities.
|
||||
if (CommodityMgr.CanManageCommoditySuppliers())
|
||||
listConfig.Column.Show.CommodityCount = true;
|
||||
}
|
||||
else if (GetAssociationType() == Sbm.AssociationType.Member)
|
||||
{
|
||||
// Members.
|
||||
if (StringUtil.ToSysId(Filter.OwnerId).Equals(SessionData_Portal.Organisation.AffiliateId))
|
||||
listConfig.Column.Show.Technician = true;
|
||||
listConfig.Column.Show.Terminated = true;
|
||||
listConfig.Column.Label.Terminated = "Terminated";
|
||||
}
|
||||
}
|
||||
|
||||
if (associationType > 0)
|
||||
config.Column.Hide.Add($"{ItemField.Type}");
|
||||
|
||||
// Owner name.
|
||||
if (!modeIsRelationships)
|
||||
config.Column.Hide.Add($"{ItemField.Owner}");
|
||||
|
||||
// Target name.
|
||||
if (modeIsRelationships)
|
||||
config.Column.Hide.Add($"{ItemField.Target}");
|
||||
|
||||
// Phone
|
||||
if (modeIsRelationships)
|
||||
config.Column.Hide.Add($"{ItemField.Phone}");
|
||||
|
||||
// Address.
|
||||
if (modeIsRelationships)
|
||||
config.Column.Hide.Add($"{ItemField.Address}");
|
||||
|
||||
// Customer financials.
|
||||
if (!modeIsMaintain || !typeIsCustomer || !userCanViewFinancials || !SessionData_Portal.GetOwnerOption_ShowColumn(Sbm.OrgOption_ShowColumn.Association_Trans_SalesValue_Open))
|
||||
config.Column.Hide.Add($"{ItemField.TransSalesValueOpen}");
|
||||
if (!modeIsMaintain || !typeIsCustomer || !SessionData_Portal.GetOwnerOption_ShowColumn(Sbm.OrgOption_ShowColumn.Association_Trans_LastSaleRaised))
|
||||
config.Column.Hide.Add($"{ItemField.TransLastSaleRaised}");
|
||||
if (!modeIsMaintain || !typeIsCustomer || !userCanViewFinancials || !SessionData_Portal.GetOwnerOption_ShowColumn(Sbm.OrgOption_ShowColumn.Association_AnnualSalesTarget))
|
||||
config.Column.Hide.Add($"{ItemField.AnnualSalesTarget}");
|
||||
if (!modeIsMaintain || !typeIsCustomer || !userCanViewFinancials || !SessionData_Portal.GetOwnerOption_ShowColumn(Sbm.OrgOption_ShowColumn.Association_Trans_SalesValue_Cytd))
|
||||
config.Column.Hide.Add($"{ItemField.TransSalesValueCytd}");
|
||||
if (!modeIsMaintain || !typeIsCustomer || !userCanViewFinancials || !SessionData_Portal.GetOwnerOption_ShowColumn(Sbm.OrgOption_ShowColumn.Association_Trans_SalesValue_Lcy))
|
||||
config.Column.Hide.Add($"{ItemField.TransSalesValueLcy}");
|
||||
// Customer commodities.
|
||||
if (!modeIsMaintain || !typeIsCustomer || !CommodityMgr.CanManageCommodityCustomers())
|
||||
config.Column.Hide.Add($"{ItemField.CommodityCount}");
|
||||
// Customer pricing.
|
||||
if (!modeIsMaintain || !typeIsCustomer || !userCanViewFinancials || !SessionConsole.AllowOption(Sbm.ConfigOption.CustomerDiscount))
|
||||
config.Column.Hide.Add($"{ItemField.DiscountRate}");
|
||||
if (!modeIsMaintain || !typeIsCustomer || !userCanViewFinancials || !SessionConsole.AllowOption(Sbm.ConfigOption.CustomerPriceSet) && PriceMgr.PriceDatabaseIsValid)
|
||||
config.Column.Hide.Add($"{ItemField.PriceSet}");
|
||||
// Association group.
|
||||
if (!modeIsMaintain || !typeIsCustomer || !SessionData_Portal.GetOwnerOption_ShowColumn(Sbm.OrgOption_ShowColumn.Association_Group))
|
||||
config.Column.Hide.Add($"{ItemField.Group}");
|
||||
// Customer codes.
|
||||
if (!modeIsMaintain || !typeIsCustomer || !CodeTypeConsole.CodeTypeHasCodes(Internals.GetCodeTypeCode(Sbm.ApplCodeType.AccountManager)))
|
||||
config.Column.Hide.Add($"{ItemField.AccountManager}");
|
||||
if (!modeIsMaintain || !typeIsCustomer || !CodeTypeConsole.CodeTypeHasCodes(Internals.GetCodeTypeCode(Sbm.ApplCodeType.AccountHandler)))
|
||||
config.Column.Hide.Add($"{ItemField.AccountHandler}");
|
||||
if (!modeIsMaintain || !typeIsCustomer || !CodeTypeConsole.CodeTypeHasCodes(Internals.GetCodeTypeCode(Sbm.ApplCodeType.ContactArea)))
|
||||
config.Column.Hide.Add($"{ItemField.ContactArea}");
|
||||
if (!modeIsMaintain || !typeIsCustomer || !CodeTypeConsole.CodeTypeHasCodes(Internals.GetCodeTypeCode(Sbm.ApplCodeType.ContactHandler)))
|
||||
config.Column.Hide.Add($"{ItemField.ContactHandler}");
|
||||
|
||||
// Supplier Commodities.
|
||||
if (!modeIsMaintain || !typeIsSupplier || !CommodityMgr.CanManageCommoditySuppliers())
|
||||
config.Column.Hide.Add($"{ItemField.CommodityCount}");
|
||||
|
||||
// Members.
|
||||
if (!typeIsMember || !StringUtil.ToSysId(Filter.OwnerId).Equals(SessionData_Portal.Organisation.AffiliateId))
|
||||
config.Column.Hide.Add($"{ItemField.Technician}");
|
||||
if (!typeIsMember)
|
||||
config.Column.Hide.Add($"{ItemField.Terminated}");
|
||||
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Item configuration.
|
||||
//-------------------------------------------------------------------
|
||||
// Legacy Association dialog tabs and panels.
|
||||
// Tab 1:
|
||||
// Organisation - Organisation
|
||||
@@ -153,6 +219,11 @@ namespace Sarand.BusinessMgr.Web.Portal.Models.Contacts
|
||||
|
||||
public class ItemConfigData
|
||||
{
|
||||
// Update dialog title.
|
||||
public String Title{ get; set; }
|
||||
// Field name prefix.
|
||||
public String Prefix { get; } = Model_Association.FieldNamePrefix;
|
||||
// Control flags.
|
||||
public bool? ManagedByAccounts { get; set; }
|
||||
public bool? LocalPricing { get; set; }
|
||||
// Allowed actions.
|
||||
@@ -164,47 +235,14 @@ namespace Sarand.BusinessMgr.Web.Portal.Models.Contacts
|
||||
// Item fields.
|
||||
public class FieldData
|
||||
{
|
||||
// Show field.
|
||||
public class ShowData
|
||||
{
|
||||
public bool? Owner { get; set; }
|
||||
public bool? Code { get; set; }
|
||||
public bool? ExtRef { get; set; }
|
||||
public bool? Primary { get; set; }
|
||||
public bool? Technician { get; set; }
|
||||
public bool? Status { get; set; }
|
||||
// Financials.
|
||||
public bool? AnnualSalesTarget { get; set; }
|
||||
public bool? CreditLimit { get; set; }
|
||||
public bool? AccountBalance { get; set; }
|
||||
public bool? DiscountType { get; set; }
|
||||
public bool? DiscountRate { get; set; }
|
||||
public bool? PriceSet { get; set; }
|
||||
// Accounts.
|
||||
public bool? DefaultNominalCode { get; set; }
|
||||
// Customer.
|
||||
public bool? Group { get; set; }
|
||||
public bool? CommoditySalesDefault { get; set; }
|
||||
// Customer codes.
|
||||
public bool? AccountManager { get; set; }
|
||||
public bool? AccountHandler { get; set; }
|
||||
public bool? ContactArea { get; set; }
|
||||
public bool? ContactHandler { get; set; }
|
||||
}
|
||||
public ShowData Show { get; } = new ShowData();
|
||||
// Field name prefix.
|
||||
public String Prefix { get; } = Model_Association.FieldNamePrefix;
|
||||
// Hide field.
|
||||
public HashSet<string> Hide { get; } = new HashSet<string>(StringComparer.InvariantCultureIgnoreCase);
|
||||
// Read-only field.
|
||||
public class ReadOnlyData
|
||||
{
|
||||
}
|
||||
public ReadOnlyData ReadOnly { get; } = new ReadOnlyData();
|
||||
// Field label.
|
||||
public class LabelData
|
||||
{
|
||||
// Members.
|
||||
public String Technician { get; set; }
|
||||
public String Terminated { get; set; }
|
||||
}
|
||||
public LabelData Label { get; } = new LabelData();
|
||||
public HashSet<string> Readonly { get; } = new HashSet<string>(StringComparer.InvariantCultureIgnoreCase);
|
||||
// Field labels.
|
||||
public Dictionary<String, String> Label { get; } = new Dictionary<string, string>(StringComparer.InvariantCultureIgnoreCase);
|
||||
}
|
||||
public FieldData Field { get; } = new FieldData();
|
||||
}
|
||||
@@ -229,54 +267,151 @@ namespace Sarand.BusinessMgr.Web.Portal.Models.Contacts
|
||||
bool isInternal = (associationType == Sbm.AssociationType.Internal);
|
||||
|
||||
// Accounts interface.
|
||||
if (Internals.AccountsDfn.ItemIsImportedFromAccounts(associationItemId))
|
||||
config.ManagedByAccounts = true;
|
||||
bool managedByAccounts = Internals.AccountsDfn.ItemIsImportedFromAccounts(associationItemId);
|
||||
if (managedByAccounts) config.ManagedByAccounts = true;
|
||||
|
||||
// Determine pricing options.
|
||||
if (isCustomer && Internals.AccountsDfn.UseLocalCustomerPricing())
|
||||
config.LocalPricing = true;
|
||||
if (isSupplier && Internals.AccountsDfn.UseLocalSupplierPricing())
|
||||
config.LocalPricing = true;
|
||||
bool localPricing =
|
||||
(isCustomer && Internals.AccountsDfn.UseLocalCustomerPricing()) ||
|
||||
(isSupplier && Internals.AccountsDfn.UseLocalSupplierPricing());
|
||||
if (localPricing) config.LocalPricing = true;
|
||||
|
||||
// Update dialog title.
|
||||
config.Title =
|
||||
isCustomer ? Localiser["caption.customer.update"] :
|
||||
isSupplier ? Localiser["caption.supplier.update"] :
|
||||
Localiser["caption.association.update"];
|
||||
|
||||
// Allow actions.
|
||||
if (SessionData_Portal.GetOwnerOption_AllowOption(Sbm.OrgOption_AllowOption.UpdateAssociationCode))
|
||||
config.Allow.UpdateCode = true;
|
||||
|
||||
// Show fields.
|
||||
if (ItemId.IsValid(associationItemId) && !ownerIsInternal)
|
||||
config.Field.Show.Owner = true;
|
||||
if (!isInternal)
|
||||
config.Field.Show.Code = true;
|
||||
if (!isInternal && !isMember)
|
||||
config.Field.Show.Status = true;
|
||||
if ((config.Field.Show.Code ?? false) && (isCustomer || isSupplier))
|
||||
config.Field.Show.ExtRef = true;
|
||||
if ((config.Field.Show.Code ?? false) && !(config.Field.Show.ExtRef ?? false) && !ownerIsInternal && isMember)
|
||||
config.Field.Show.Primary = true;
|
||||
if ((config.Field.Show.Code ?? false) && !(config.Field.Show.ExtRef ?? false) && !(config.Field.Show.Primary ?? false) && ownerIsInternal && isMember)
|
||||
config.Field.Show.Technician = true;
|
||||
if (canViewFinancials)
|
||||
// Item Fields.
|
||||
|
||||
// Type.
|
||||
config.Field.Readonly.Add($"{ItemField.Type}");
|
||||
|
||||
// Owner.
|
||||
if (!ItemId.IsValid(associationItemId) || ownerIsInternal)
|
||||
config.Field.Hide.Add($"{ItemField.Owner}");
|
||||
else
|
||||
config.Field.Readonly.Add($"{ItemField.Owner}");
|
||||
|
||||
// Target.
|
||||
config.Field.Readonly.Add($"{ItemField.Target}");
|
||||
|
||||
// Code.
|
||||
if (isInternal)
|
||||
config.Field.Hide.Add($"{ItemField.Code}");
|
||||
|
||||
// Status.
|
||||
bool showCode = !isInternal && !isMember;
|
||||
if (!showCode)
|
||||
config.Field.Hide.Add($"{ItemField.Status}");
|
||||
|
||||
// External reference.
|
||||
bool showExtRef = showCode && (isCustomer || isSupplier);
|
||||
if (!showExtRef)
|
||||
config.Field.Hide.Add($"{ItemField.ReferenceExt}");
|
||||
|
||||
// Primary.
|
||||
bool showPrimary = showCode && !showExtRef && !ownerIsInternal && isMember;
|
||||
if (!showPrimary)
|
||||
config.Field.Hide.Add($"{ItemField.Primary}");
|
||||
|
||||
// Technician.
|
||||
bool showTechnician = showCode && !showExtRef && !showPrimary && ownerIsInternal && isMember;
|
||||
if (!showTechnician)
|
||||
config.Field.Hide.Add($"{ItemField.Technician}");
|
||||
|
||||
// Desc detail.
|
||||
if (managedByAccounts)
|
||||
config.Field.Readonly.Add($"{ItemField.DescDetail}");
|
||||
|
||||
// Financials.
|
||||
|
||||
// Annual Sales Target.
|
||||
if (!canViewFinancials)
|
||||
config.Field.Hide.Add($"{ItemField.AnnualSalesTarget}");
|
||||
else if (!canUpdateFinancials)
|
||||
config.Field.Readonly.Add($"{ItemField.AnnualSalesTarget}");
|
||||
|
||||
// Default Nominal Code.
|
||||
if (!managedByAccounts)
|
||||
config.Field.Hide.Add($"{ItemField.DefaultNominalCode}");
|
||||
else
|
||||
config.Field.Readonly.Add($"{ItemField.DefaultNominalCode}");
|
||||
|
||||
// Credit limit.
|
||||
if (!canViewFinancials || !managedByAccounts)
|
||||
config.Field.Hide.Add($"{ItemField.CreditLimit}");
|
||||
else if (managedByAccounts||!canUpdateFinancials)
|
||||
config.Field.Readonly.Add($"{ItemField.CreditLimit}");
|
||||
|
||||
// Account balance.
|
||||
if (!canViewFinancials || !managedByAccounts)
|
||||
config.Field.Hide.Add($"{ItemField.AccountBalance}");
|
||||
else if (managedByAccounts || !canUpdateFinancials)
|
||||
config.Field.Readonly.Add($"{ItemField.AccountBalance}");
|
||||
|
||||
// Discount.
|
||||
if (!canViewFinancials || (!managedByAccounts && !SessionConsole.AllowOption(isSupplier ? Sbm.ConfigOption.SupplierDiscount : Sbm.ConfigOption.CustomerDiscount)))
|
||||
{
|
||||
config.Field.Show.AnnualSalesTarget = true;
|
||||
if (config.ManagedByAccounts ?? false)
|
||||
{
|
||||
config.Field.Show.CreditLimit = true;
|
||||
config.Field.Show.AccountBalance = true;
|
||||
}
|
||||
if (SessionConsole.AllowOption(isSupplier ? Sbm.ConfigOption.SupplierDiscount : Sbm.ConfigOption.CustomerDiscount))
|
||||
{
|
||||
config.Field.Show.DiscountType = true;
|
||||
config.Field.Show.DiscountRate = true;
|
||||
}
|
||||
if (SessionConsole.AllowOption(isSupplier ? Sbm.ConfigOption.SupplierPriceSet : Sbm.ConfigOption.CustomerPriceSet) && PriceMgr.PriceDatabaseIsValid)
|
||||
config.Field.Show.PriceSet = true;
|
||||
config.Field.Hide.Add($"{ItemField.DiscountType}");
|
||||
config.Field.Hide.Add($"{ItemField.DiscountRate}");
|
||||
}
|
||||
if (config.ManagedByAccounts ?? false)
|
||||
else if (!localPricing || !canUpdateFinancials)
|
||||
{
|
||||
config.Field.Show.DefaultNominalCode = true;
|
||||
config.Field.Readonly.Add($"{ItemField.DiscountType}");
|
||||
config.Field.Readonly.Add($"{ItemField.DiscountRate}");
|
||||
}
|
||||
|
||||
// Price set.
|
||||
if (!canViewFinancials || (!managedByAccounts && !SessionConsole.AllowOption(isSupplier ? Sbm.ConfigOption.SupplierPriceSet : Sbm.ConfigOption.CustomerPriceSet)) || !PriceMgr.PriceDatabaseIsValid)
|
||||
config.Field.Hide.Add($"{ItemField.PriceSet}");
|
||||
else if (!localPricing || !canUpdateFinancials)
|
||||
config.Field.Readonly.Add($"{ItemField.PriceSet}");
|
||||
|
||||
// Tax code.
|
||||
if (managedByAccounts || !canUpdateFinancials)
|
||||
config.Field.Readonly.Add($"{ItemField.TaxCode}");
|
||||
|
||||
// Default sales commodity.
|
||||
if (!isCustomer || !CommodityMgr.ColumnExists(SbmDbDfn.ColumnIdx.Association_CommodityIdSalesDefault))
|
||||
config.Field.Hide.Add($"{ItemField.CommoditySalesDefault}");
|
||||
|
||||
// Association codes.
|
||||
if (!isCustomer && !isSupplier)
|
||||
{
|
||||
config.Field.Hide.Add($"{ItemField.AccountManager}");
|
||||
config.Field.Hide.Add($"{ItemField.AccountHandler}");
|
||||
config.Field.Hide.Add($"{ItemField.AccountType}");
|
||||
config.Field.Hide.Add($"{ItemField.AccountRating}");
|
||||
config.Field.Hide.Add($"{ItemField.ContactArea}");
|
||||
config.Field.Hide.Add($"{ItemField.ContactHandler}");
|
||||
config.Field.Hide.Add($"{ItemField.ContactMethod}");
|
||||
config.Field.Hide.Add($"{ItemField.ContactCallCycle}");
|
||||
}
|
||||
else if (managedByAccounts)
|
||||
{
|
||||
Sage.ItemType sageItemType = isCustomer ? Sage.ItemType.Customer : Sage.ItemType.Supplier;
|
||||
if (Internals.AccountsDfn.SourcedFromSage(SbmDbDfn.ColumnIdx.Association_AccountManagerCode, sageItemType))
|
||||
config.Field.Readonly.Add($"{ItemField.AccountManager}");
|
||||
if (Internals.AccountsDfn.SourcedFromSage(SbmDbDfn.ColumnIdx.Association_AccountHandlerCode, sageItemType))
|
||||
config.Field.Readonly.Add($"{ItemField.AccountHandler}");
|
||||
if (Internals.AccountsDfn.SourcedFromSage(SbmDbDfn.ColumnIdx.Association_AccountTypeCode, sageItemType))
|
||||
config.Field.Readonly.Add($"{ItemField.AccountType}");
|
||||
if (Internals.AccountsDfn.SourcedFromSage(SbmDbDfn.ColumnIdx.Association_AccountRatingCode, sageItemType))
|
||||
config.Field.Readonly.Add($"{ItemField.AccountRating}");
|
||||
if (Internals.AccountsDfn.SourcedFromSage(SbmDbDfn.ColumnIdx.Association_ContactAreaCode, sageItemType))
|
||||
config.Field.Readonly.Add($"{ItemField.ContactArea}");
|
||||
if (Internals.AccountsDfn.SourcedFromSage(SbmDbDfn.ColumnIdx.Association_ContactHandlerCode, sageItemType))
|
||||
config.Field.Readonly.Add($"{ItemField.ContactHandler}");
|
||||
if (Internals.AccountsDfn.SourcedFromSage(SbmDbDfn.ColumnIdx.Association_ContactMethodCode, sageItemType))
|
||||
config.Field.Readonly.Add($"{ItemField.ContactMethod}");
|
||||
if (Internals.AccountsDfn.SourcedFromSage(SbmDbDfn.ColumnIdx.Association_ContactCallCycleCode, sageItemType))
|
||||
config.Field.Readonly.Add($"{ItemField.ContactCallCycle}");
|
||||
}
|
||||
if (isCustomer && CommodityMgr.ColumnExists(SbmDbDfn.ColumnIdx.Association_CommodityIdSalesDefault))
|
||||
config.Field.Show.CommoditySalesDefault = true;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
|
||||
@@ -60,8 +60,8 @@ namespace Sarand.BusinessMgr.Web.Portal.Models.Contacts
|
||||
{
|
||||
public string Exists { get; set; }
|
||||
public string Id { get; set; }
|
||||
public string AffiliateIdOwner { get; set; }
|
||||
public string AffiliateIdTarget { get; set; }
|
||||
public string ContactIdOwner { get; set; }
|
||||
public string ContactIdTarget { get; set; }
|
||||
public string Type { get; set; }
|
||||
public string Code { get; set; }
|
||||
public string ReferenceExt { get; set; }
|
||||
|
||||
@@ -14,35 +14,74 @@ namespace Sarand.BusinessMgr.Web.Portal.Models.Contacts
|
||||
partial class Model_Contact
|
||||
{
|
||||
//-------------------------------------------------------------------
|
||||
// Contact fields.
|
||||
//-------------------------------------------------------------------
|
||||
|
||||
/// <summary>Prefix for column names.</summary>
|
||||
public const String ColumnNamePrefix = "Contact";
|
||||
/// <summary>Prefix for field names.</summary>
|
||||
public const String FieldNamePrefix = "Contact";
|
||||
|
||||
/// <summary>Item columns.</summary>
|
||||
public enum ItemColumn
|
||||
/// <summary>Item fields.</summary>
|
||||
public enum ItemField
|
||||
{
|
||||
Id,
|
||||
Type,
|
||||
Parent,
|
||||
Name,
|
||||
FirstName,
|
||||
LastName,
|
||||
Initials,
|
||||
Title,
|
||||
Salutation,
|
||||
Abbreviation,
|
||||
Nature,
|
||||
Contact,
|
||||
Email,
|
||||
/// <summary>Most significant phone number. [list only]</summary>
|
||||
Phone,
|
||||
PhoneMain,
|
||||
PhoneAlt,
|
||||
PhoneDirect,
|
||||
PhoneFax,
|
||||
PhoneMobile,
|
||||
/// <summary>Address summary. [list only]</summary>
|
||||
Address,
|
||||
Members,
|
||||
Website,
|
||||
CompanyNo,
|
||||
VatReg,
|
||||
DateOfBirth,
|
||||
BirthDay,
|
||||
BirthMonth,
|
||||
BirthYear,
|
||||
MaritalStatus,
|
||||
Spouse,
|
||||
Children,
|
||||
Hometown,
|
||||
UserId,
|
||||
/// <summary>Form option group.</summary>
|
||||
Options,
|
||||
Prospect,
|
||||
/// <summary>Number of target associations. [list only]</summary>
|
||||
Associations,
|
||||
/// <summary>Number of members. [list only]</summary>
|
||||
Members,
|
||||
// Common properties.
|
||||
Notes,
|
||||
Status,
|
||||
CreatedOn,
|
||||
UpdatedOn,
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Identifier used by list columns to show/hide column etc.
|
||||
/// <para>- Both page and model should use this method to consistently generate the column name.</para>
|
||||
/// Identifier used by form fields to show control specific messages generated by model validation etc.
|
||||
/// <para>- Both page and model should use this method to consistently generate the field name.</para>
|
||||
/// </summary>
|
||||
public String GetColumnName(ItemField field)
|
||||
public String GetFieldName(ItemField field)
|
||||
{
|
||||
return ColumnNamePrefix + field.ToString();
|
||||
return $"{FieldNamePrefix}{field}";
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
|
||||
// List configuration.
|
||||
public class ListConfigData
|
||||
{
|
||||
@@ -50,7 +89,7 @@ namespace Sarand.BusinessMgr.Web.Portal.Models.Contacts
|
||||
public class ColumnData
|
||||
{
|
||||
// Column name prefix.
|
||||
public String Prefix { get; } = Model_Contact.ColumnNamePrefix;
|
||||
public String Prefix { get; } = Model_Contact.FieldNamePrefix;
|
||||
// Hide column.
|
||||
public HashSet<string> Hide { get; } = new HashSet<string>(StringComparer.InvariantCultureIgnoreCase);
|
||||
// Column labels.
|
||||
@@ -74,126 +113,75 @@ namespace Sarand.BusinessMgr.Web.Portal.Models.Contacts
|
||||
/// </summary>
|
||||
public void PopulateListConfig(ListConfigData config)
|
||||
{
|
||||
Sbm.AffiliateType affiliateType = GetContactType();
|
||||
Sbm.AffiliateType affiliateType = GetFilterContactType();
|
||||
bool contactGroupsOnly = affiliateType == Sbm.AffiliateType.ContactGroup;
|
||||
|
||||
// Contact type.
|
||||
if (affiliateType <= 0)
|
||||
config.Column.Label.Add(ItemColumn.Type.ToString(), Localiser["label.type"]);
|
||||
config.Column.Label.Add($"{ItemField.Type}", Localiser["label.type"]);
|
||||
else
|
||||
config.Column.Hide.Add(ItemColumn.Type.ToString());
|
||||
config.Column.Hide.Add($"{ItemField.Type}");
|
||||
|
||||
// Contact name.
|
||||
config.Column.Label.Add(ItemColumn.Name.ToString(), Localiser["label.name"]);
|
||||
config.Column.Label.Add($"{ItemField.Name}", Localiser["label.name"]);
|
||||
|
||||
// Nature.
|
||||
bool showNature = false;
|
||||
if (!contactGroupsOnly && showNature)
|
||||
config.Column.Label.Add(ItemColumn.Nature.ToString(), Localiser["label.nature"]);
|
||||
config.Column.Label.Add($"{ItemField.Nature}", Localiser["label.nature"]);
|
||||
else
|
||||
config.Column.Hide.Add(ItemColumn.Nature.ToString());
|
||||
config.Column.Hide.Add($"{ItemField.Nature}");
|
||||
|
||||
// Email.
|
||||
if (!contactGroupsOnly && (affiliateType == Sbm.AffiliateType.Individual || !StringUtil.IsBlank(Filter.Email)))
|
||||
config.Column.Label.Add(ItemColumn.Email.ToString(), Localiser["label.email"]);
|
||||
config.Column.Label.Add($"{ItemField.Email}", Localiser["label.email"]);
|
||||
else
|
||||
config.Column.Hide.Add(ItemColumn.Email.ToString());
|
||||
config.Column.Hide.Add($"{ItemField.Email}");
|
||||
|
||||
// Contact.
|
||||
if (!contactGroupsOnly && (affiliateType != Sbm.AffiliateType.Individual))
|
||||
config.Column.Label.Add(ItemColumn.Contact.ToString(), Localiser["label.contact"]);
|
||||
config.Column.Label.Add($"{ItemField.Contact}", Localiser["label.contact"]);
|
||||
else
|
||||
config.Column.Hide.Add(ItemColumn.Contact.ToString());
|
||||
config.Column.Hide.Add($"{ItemField.Contact}");
|
||||
|
||||
// Phone.
|
||||
if (!contactGroupsOnly)
|
||||
config.Column.Label.Add(ItemColumn.Phone.ToString(), Localiser["label.phone"]);
|
||||
config.Column.Label.Add($"{ItemField.Phone}", Localiser["label.phone"]);
|
||||
else
|
||||
config.Column.Hide.Add(ItemColumn.Phone.ToString());
|
||||
config.Column.Hide.Add($"{ItemField.Phone}");
|
||||
|
||||
// Address.
|
||||
if (!contactGroupsOnly)
|
||||
config.Column.Label.Add(ItemColumn.Address.ToString(), Localiser["label.address"]);
|
||||
config.Column.Label.Add($"{ItemField.Address}", Localiser["label.address"]);
|
||||
else
|
||||
config.Column.Hide.Add(ItemColumn.Address.ToString());
|
||||
config.Column.Hide.Add($"{ItemField.Address}");
|
||||
|
||||
// Group members.
|
||||
if (contactGroupsOnly)
|
||||
config.Column.Label.Add(ItemColumn.Members.ToString(), Localiser["label.members"]);
|
||||
config.Column.Label.Add($"{ItemField.Members}", Localiser["label.members"]);
|
||||
else
|
||||
config.Column.Hide.Add(ItemColumn.Members.ToString());
|
||||
config.Column.Hide.Add($"{ItemField.Members}");
|
||||
|
||||
// Prospect group.
|
||||
if (contactGroupsOnly)
|
||||
config.Column.Label.Add(ItemColumn.Prospect.ToString(), Localiser["label.prospect"]);
|
||||
config.Column.Label.Add($"{ItemField.Prospect}", Localiser["label.prospect"]);
|
||||
else
|
||||
config.Column.Hide.Add(ItemColumn.Prospect.ToString());
|
||||
config.Column.Hide.Add($"{ItemField.Prospect}");
|
||||
|
||||
// Contact notes.
|
||||
config.Column.Label.Add(ItemColumn.Notes.ToString(), Localiser["label.notes"]);
|
||||
config.Column.Label.Add($"{ItemField.Notes}", Localiser["label.notes"]);
|
||||
|
||||
// Contact Id.
|
||||
if (SbmSystem.DebugMode)
|
||||
config.Column.Label.Add(ItemColumn.Id.ToString(), Localiser["label.id"]);
|
||||
config.Column.Label.Add($"{ItemField.Id}", Localiser["label.id"]);
|
||||
else
|
||||
config.Column.Hide.Add(ItemColumn.Id.ToString());
|
||||
config.Column.Hide.Add($"{ItemField.Id}");
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Item configuration.
|
||||
//-------------------------------------------------------------------
|
||||
|
||||
/// <summary>Prefix for field names.</summary>
|
||||
public const String FieldNamePrefix = "Contact";
|
||||
|
||||
/// <summary>Item fields.</summary>
|
||||
public enum ItemField
|
||||
{
|
||||
Id,
|
||||
Type,
|
||||
Parent,
|
||||
Name,
|
||||
FirstName,
|
||||
LastName,
|
||||
Initials,
|
||||
Title,
|
||||
Salutation,
|
||||
Abbreviation,
|
||||
Nature,
|
||||
Contact,
|
||||
Email,
|
||||
PhoneMain,
|
||||
PhoneAlt,
|
||||
PhoneDirect,
|
||||
PhoneFax,
|
||||
PhoneMobile,
|
||||
Website,
|
||||
CompanyNo,
|
||||
VatReg,
|
||||
DateOfBirth,
|
||||
BirthDay,
|
||||
BirthMonth,
|
||||
BirthYear,
|
||||
MaritalStatus,
|
||||
Spouse,
|
||||
Children,
|
||||
Hometown,
|
||||
UserId,
|
||||
Options,
|
||||
Prospect,
|
||||
Notes,
|
||||
Status,
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Identifier used by form fields to show control specific messages generated by model validation etc.
|
||||
/// <para>- Both page and model should use this method to consistently generate the field name.</para>
|
||||
/// </summary>
|
||||
public String GetFieldName(ItemField field)
|
||||
{
|
||||
return FieldNamePrefix + field.ToString();
|
||||
}
|
||||
|
||||
// Legacy Contact dialog tabs and panels.
|
||||
// - Individual
|
||||
// - Organisation
|
||||
@@ -213,7 +201,7 @@ namespace Sarand.BusinessMgr.Web.Portal.Models.Contacts
|
||||
// Hide field.
|
||||
public HashSet<string> Hide { get; } = new HashSet<string>(StringComparer.InvariantCultureIgnoreCase);
|
||||
// Read-only field.
|
||||
public HashSet<string> ReadOnly { get; } = new HashSet<string>(StringComparer.InvariantCultureIgnoreCase);
|
||||
public HashSet<string> Readonly { get; } = new HashSet<string>(StringComparer.InvariantCultureIgnoreCase);
|
||||
// Field labels.
|
||||
public Dictionary<String, String> Label { get; } = new Dictionary<string, string>(StringComparer.InvariantCultureIgnoreCase);
|
||||
}
|
||||
@@ -244,149 +232,149 @@ namespace Sarand.BusinessMgr.Web.Portal.Models.Contacts
|
||||
|
||||
// Id.
|
||||
if (SbmSystem.DebugMode)
|
||||
config.Field.ReadOnly.Add(ItemField.Id.ToString());
|
||||
config.Field.Readonly.Add($"{ItemField.Id}");
|
||||
else
|
||||
config.Field.Hide.Add(ItemField.Id.ToString());
|
||||
config.Field.Hide.Add($"{ItemField.Id}");
|
||||
|
||||
// Contact type.
|
||||
if (!isOrganisation)
|
||||
config.Field.Hide.Add(ItemField.Type.ToString());
|
||||
config.Field.Hide.Add($"{ItemField.Type}");
|
||||
|
||||
// Organisation name.
|
||||
if (!isOrganisation && !isGroup)
|
||||
{
|
||||
config.Field.Hide.Add(ItemField.Name.ToString());
|
||||
config.Field.Hide.Add($"{ItemField.Name}");
|
||||
}
|
||||
else
|
||||
{
|
||||
if (isIndividual)
|
||||
config.Field.Label.Add(ItemField.Name.ToString(), Localiser["label.phone.home"]);
|
||||
config.Field.Label.Add($"{ItemField.Name}", Localiser["label.phone.home"]);
|
||||
else
|
||||
config.Field.Label.Add(ItemField.Name.ToString(), Localiser["label.phone"]);
|
||||
config.Field.Label.Add($"{ItemField.Name}", Localiser["label.phone"]);
|
||||
if (importedFromAccounts)
|
||||
{
|
||||
config.Field.ReadOnly.Add(ItemField.Name.ToString());
|
||||
config.Field.Readonly.Add($"{ItemField.Name}");
|
||||
}
|
||||
}
|
||||
|
||||
// Individual name.
|
||||
if (!isIndividual)
|
||||
{
|
||||
config.Field.Hide.Add(ItemField.FirstName.ToString());
|
||||
config.Field.Hide.Add(ItemField.LastName.ToString());
|
||||
config.Field.Hide.Add(ItemField.Initials.ToString());
|
||||
config.Field.Hide.Add(ItemField.Title.ToString());
|
||||
config.Field.Hide.Add(ItemField.Salutation.ToString());
|
||||
config.Field.Hide.Add($"{ItemField.FirstName}");
|
||||
config.Field.Hide.Add($"{ItemField.LastName}");
|
||||
config.Field.Hide.Add($"{ItemField.Initials}");
|
||||
config.Field.Hide.Add($"{ItemField.Title}");
|
||||
config.Field.Hide.Add($"{ItemField.Salutation}");
|
||||
}
|
||||
if (importedFromAccounts)
|
||||
{
|
||||
config.Field.ReadOnly.Add(ItemField.FirstName.ToString());
|
||||
config.Field.ReadOnly.Add(ItemField.LastName.ToString());
|
||||
config.Field.ReadOnly.Add(ItemField.Initials.ToString());
|
||||
config.Field.ReadOnly.Add(ItemField.Title.ToString());
|
||||
config.Field.ReadOnly.Add(ItemField.Salutation.ToString());
|
||||
config.Field.Readonly.Add($"{ItemField.FirstName}");
|
||||
config.Field.Readonly.Add($"{ItemField.LastName}");
|
||||
config.Field.Readonly.Add($"{ItemField.Initials}");
|
||||
config.Field.Readonly.Add($"{ItemField.Title}");
|
||||
config.Field.Readonly.Add($"{ItemField.Salutation}");
|
||||
}
|
||||
|
||||
// Organisation - Abbreviation.
|
||||
if (!isOrganisation)
|
||||
config.Field.Hide.Add(ItemField.Abbreviation.ToString());
|
||||
config.Field.Hide.Add($"{ItemField.Abbreviation}");
|
||||
else if (importedFromAccounts)
|
||||
config.Field.ReadOnly.Add(ItemField.Abbreviation.ToString());
|
||||
config.Field.Readonly.Add($"{ItemField.Abbreviation}");
|
||||
|
||||
// Organisation - Nature.
|
||||
if (!isOrganisation)
|
||||
config.Field.Hide.Add(ItemField.Nature.ToString());
|
||||
config.Field.Hide.Add($"{ItemField.Nature}");
|
||||
|
||||
// Organisation - Contact.
|
||||
if (!isOrganisation)
|
||||
config.Field.Hide.Add(ItemField.Contact.ToString());
|
||||
config.Field.Hide.Add($"{ItemField.Contact}");
|
||||
else if (importedFromAccounts)
|
||||
config.Field.ReadOnly.Add(ItemField.Contact.ToString());
|
||||
config.Field.Readonly.Add($"{ItemField.Contact}");
|
||||
|
||||
// Phone numbers.
|
||||
// NB Main Phone is shared between Organisations and Individuals (home phone).
|
||||
if (!isOrganisation && !isIndividual)
|
||||
config.Field.Hide.Add(ItemField.PhoneMain.ToString());
|
||||
config.Field.Hide.Add($"{ItemField.PhoneMain}");
|
||||
else if (importedFromAccounts)
|
||||
config.Field.ReadOnly.Add(ItemField.PhoneMain.ToString());
|
||||
config.Field.Readonly.Add($"{ItemField.PhoneMain}");
|
||||
|
||||
// Organisation - Phone numbers.
|
||||
if (!isOrganisation)
|
||||
{
|
||||
config.Field.Hide.Add(ItemField.PhoneAlt.ToString());
|
||||
config.Field.Hide.Add(ItemField.PhoneDirect.ToString());
|
||||
config.Field.Hide.Add(ItemField.PhoneFax.ToString());
|
||||
config.Field.Hide.Add($"{ItemField.PhoneAlt}");
|
||||
config.Field.Hide.Add($"{ItemField.PhoneDirect}");
|
||||
config.Field.Hide.Add($"{ItemField.PhoneFax}");
|
||||
}
|
||||
else if (importedFromAccounts)
|
||||
{
|
||||
config.Field.ReadOnly.Add(ItemField.PhoneAlt.ToString());
|
||||
config.Field.ReadOnly.Add(ItemField.PhoneFax.ToString());
|
||||
config.Field.Readonly.Add($"{ItemField.PhoneAlt}");
|
||||
config.Field.Readonly.Add($"{ItemField.PhoneFax}");
|
||||
}
|
||||
|
||||
// Individual - Phone numbers.
|
||||
if (!isIndividual)
|
||||
{
|
||||
config.Field.Hide.Add(ItemField.PhoneMobile.ToString());
|
||||
config.Field.Hide.Add($"{ItemField.PhoneMobile}");
|
||||
}
|
||||
else if (importedFromAccounts)
|
||||
{
|
||||
config.Field.ReadOnly.Add(ItemField.PhoneMobile.ToString());
|
||||
config.Field.Readonly.Add($"{ItemField.PhoneMobile}");
|
||||
}
|
||||
|
||||
// Email.
|
||||
if (!isOrganisation && !isIndividual)
|
||||
config.Field.Hide.Add(ItemField.Email.ToString());
|
||||
config.Field.Hide.Add($"{ItemField.Email}");
|
||||
else
|
||||
{
|
||||
if (isOrganisation)
|
||||
config.Field.Label.Add(ItemField.Email.ToString(), Localiser["label.email.domain"]);
|
||||
config.Field.Label.Add($"{ItemField.Email}", Localiser["label.email.domain"]);
|
||||
else
|
||||
config.Field.Label.Add(ItemField.Email.ToString(), Localiser["label.email"]);
|
||||
config.Field.Label.Add($"{ItemField.Email}", Localiser["label.email"]);
|
||||
if (importedFromAccounts)
|
||||
config.Field.ReadOnly.Add(ItemField.Email.ToString());
|
||||
config.Field.Readonly.Add($"{ItemField.Email}");
|
||||
}
|
||||
|
||||
// Individual.
|
||||
if (!isIndividual)
|
||||
{
|
||||
config.Field.Hide.Add(ItemField.DateOfBirth.ToString());
|
||||
config.Field.Hide.Add(ItemField.MaritalStatus.ToString());
|
||||
config.Field.Hide.Add(ItemField.Spouse.ToString());
|
||||
config.Field.Hide.Add(ItemField.Children.ToString());
|
||||
config.Field.Hide.Add(ItemField.Hometown.ToString());
|
||||
config.Field.Hide.Add($"{ItemField.DateOfBirth}");
|
||||
config.Field.Hide.Add($"{ItemField.MaritalStatus}");
|
||||
config.Field.Hide.Add($"{ItemField.Spouse}");
|
||||
config.Field.Hide.Add($"{ItemField.Children}");
|
||||
config.Field.Hide.Add($"{ItemField.Hometown}");
|
||||
}
|
||||
|
||||
// Organisation - Website.
|
||||
if (!isOrganisation)
|
||||
config.Field.Hide.Add(ItemField.Website.ToString());
|
||||
config.Field.Hide.Add($"{ItemField.Website}");
|
||||
else if (importedFromAccounts)
|
||||
config.Field.ReadOnly.Add(ItemField.Website.ToString());
|
||||
config.Field.Readonly.Add($"{ItemField.Website}");
|
||||
|
||||
// Organisation - Company Number.
|
||||
if (!isOrganisation)
|
||||
config.Field.Hide.Add(ItemField.CompanyNo.ToString());
|
||||
config.Field.Hide.Add($"{ItemField.CompanyNo}");
|
||||
|
||||
// Organisation - VatReg.
|
||||
if (!isOrganisation)
|
||||
config.Field.Hide.Add(ItemField.VatReg.ToString());
|
||||
config.Field.Hide.Add($"{ItemField.VatReg}");
|
||||
else if (importedFromAccounts)
|
||||
config.Field.ReadOnly.Add(ItemField.VatReg.ToString());
|
||||
config.Field.Readonly.Add($"{ItemField.VatReg}");
|
||||
|
||||
// Prospect.
|
||||
if (!isGroup)
|
||||
config.Field.Hide.Add(ItemField.Prospect.ToString());
|
||||
config.Field.Hide.Add($"{ItemField.Prospect}");
|
||||
|
||||
// Options - hidden if no options shown.
|
||||
if (config.Field.Hide.ContainsCI(ItemField.Prospect.ToString()))
|
||||
config.Field.Hide.Add(ItemField.Options.ToString());
|
||||
if (config.Field.Hide.ContainsCI($"{ItemField.Prospect}"))
|
||||
config.Field.Hide.Add($"{ItemField.Options}");
|
||||
|
||||
// Notes.
|
||||
if (!showNotes)
|
||||
config.Field.Hide.Add(ItemField.Notes.ToString());
|
||||
config.Field.Hide.Add($"{ItemField.Notes}");
|
||||
|
||||
// Status.
|
||||
if (importedFromAccounts)
|
||||
config.Field.ReadOnly.Add(ItemField.Status.ToString());
|
||||
config.Field.Readonly.Add($"{ItemField.Status}");
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
using DocumentFormat.OpenXml.EMMA;
|
||||
using Microsoft.AspNetCore.Mvc.Rendering;
|
||||
using Sarand.BusinessMgr.Net.Core.Web.App;
|
||||
using Sarand.BusinessMgr.Net.Core.Web.Controllers;
|
||||
using Sarand.BusinessMgr.Net.Standard.Base.App;
|
||||
@@ -40,7 +41,19 @@ namespace Sarand.BusinessMgr.Web.Portal.Models.Contacts
|
||||
public FilterData Filter { get; } = new FilterData();
|
||||
public Sbm.AffiliateType GetFilterContactType()
|
||||
{
|
||||
return (Sbm.AffiliateType)Internals.AffiliateTypeCodes.GetTypeForCode(Filter.ContactType);
|
||||
Sbm.AffiliateType affiliateType = (Sbm.AffiliateType)Internals.AffiliateTypeCodes.GetTypeForCode(Filter.ContactType);
|
||||
if (affiliateType == 0 && !StringUtil.IsBlank(Filter.ContactType) && StringUtil.IsNumeric(Filter.ContactType, true))
|
||||
affiliateType = (Sbm.AffiliateType)StringUtil.ToInt(Filter.ContactType);
|
||||
return affiliateType;
|
||||
}
|
||||
|
||||
/// <summary>List of Affiliate Types for filter dropdown.</summary>
|
||||
public IEnumerable<SelectListItem> GetAffiliateTypeCodesForFilterSelect()
|
||||
{
|
||||
List<TypeCodeDesc> affiliateTypes = GetCodesOfType(Sbm.SystemCode.AffiliateType);
|
||||
if (!affiliateTypes.Any(item => item.Type == (int)Sbm.AffiliateType.AnyOrganisation))
|
||||
affiliateTypes.Insert(0, new TypeCodeDesc((int)Sbm.AffiliateType.AnyOrganisation, ((short)Sbm.AffiliateType.AnyOrganisation).ToString(), Localiser["label.organisation"]));
|
||||
return new SelectList(affiliateTypes, "Code", "Desc");
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
@@ -85,7 +98,7 @@ namespace Sarand.BusinessMgr.Web.Portal.Models.Contacts
|
||||
public SysId GetAffiliateId() { return StringUtil.ToSysId(Contact.Id); }
|
||||
public SaStatus GetAffiliateStatus() { return SacsSystem.GetStatusForCode(Contact.StatusCode); }
|
||||
public ContactData Contact { get; } = new ContactData();
|
||||
public Sbm.AffiliateType GetContactType()
|
||||
public Sbm.AffiliateType GetAffiliateType()
|
||||
{
|
||||
if (StringUtil.ToBool(Contact.IsIndividual))
|
||||
return Sbm.AffiliateType.Individual;
|
||||
@@ -109,8 +122,9 @@ namespace Sarand.BusinessMgr.Web.Portal.Models.Contacts
|
||||
if (StringUtil.IsBlank(Contact.Type))
|
||||
responseData.SetControlError(controlName, Localiser["msg.validation.mandatory.value"]);
|
||||
}
|
||||
bool isIndividual = SbmAffiliate.IsIndividual(GetContactType());
|
||||
bool isContactGroup = SbmAffiliate.IsContactGroup(GetContactType());
|
||||
Sbm.AffiliateType affiliateType = GetAffiliateType();
|
||||
bool isIndividual = SbmAffiliate.IsIndividual(affiliateType);
|
||||
bool isContactGroup = SbmAffiliate.IsContactGroup(affiliateType);
|
||||
bool isOrganisation = !isIndividual && !isContactGroup;
|
||||
|
||||
// Organisation Name.
|
||||
@@ -289,6 +303,18 @@ namespace Sarand.BusinessMgr.Web.Portal.Models.Contacts
|
||||
responseData.SetControlError(controlName, Localiser["msg.validation.mandatory.value"]);
|
||||
else if (StringUtil.GetLength(Contact.LastName) > GetControlMaxLength(SbmDbDfn.ColumnIdx.Affiliate_LastName))
|
||||
responseData.SetControlError(controlName, Localiser["msg.validation.maximum.length", GetControlMaxLength(SbmDbDfn.ColumnIdx.Affiliate_LastName)]);
|
||||
else if (isIndividual)
|
||||
{
|
||||
// Check that the individual name is unique.
|
||||
SbmAffiliate.Params prmAffiliate = new SbmAffiliate.Params();
|
||||
if (SysId.IsValid(GetAffiliateId()) && StringUtil.ToBool(Contact.Exists))
|
||||
prmAffiliate.IdsExcluded.Add(GetAffiliateId());
|
||||
prmAffiliate.AffiliateType = Sbm.AffiliateType.Individual;
|
||||
prmAffiliate.Name = SbmAffiliate.GetDisplayName(affiliateType, "", Contact.FirstName, Contact.LastName);
|
||||
prmAffiliate.StatusCat = SbmAffiliate.StatusCat.NotDeleted;
|
||||
if (AccountMgr.GetAffiliateCount(prmAffiliate) > 0)
|
||||
responseData.SetControlError(controlName, Localiser["msg.validation.duplicate.value"]);
|
||||
}
|
||||
}
|
||||
|
||||
// Individual Phone Mobile.
|
||||
|
||||
@@ -9,6 +9,8 @@
|
||||
<div class="sbm-panel Associations fullheight">
|
||||
|
||||
<script type="text/javascript">
|
||||
sbm.lbl.createCust= '@(Localiser.GetJavascriptText("caption.customer.create"))';
|
||||
sbm.lbl.createSupp= '@(Localiser.GetJavascriptText("caption.supplier.create"))';
|
||||
</script>
|
||||
|
||||
<div class="sbm-panel-data sbm-flex">
|
||||
@@ -37,23 +39,21 @@
|
||||
|
||||
@* Filter Panel *@
|
||||
<div class="sbm-panel-filter">
|
||||
<div class="row pb4">
|
||||
<div class="col-sm-4 row pb4">
|
||||
@* Association filter - name etc. *@
|
||||
<div class="col-4 col-sm-5 sbm-label text-left text-sm-right">@Localiser["label.search"]</div>
|
||||
<div class="col-7 col-sm-7">
|
||||
@Html.TextBoxFor(model => model.Filter.Search, new { @id = "", @class = "FilterSearch sbm-input", @maxlength = "32" })
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-sm-4 row pb4">
|
||||
@* Association Category *@
|
||||
<div class="col-4 col-sm-5 sbm-label text-left text-sm-right">@Localiser["label.type"]</div>
|
||||
<div class="col-7 col-sm-7">
|
||||
<div class="col-4 col-sm-4 sbm-label text-left text-sm-right">@Localiser["label.type"]</div>
|
||||
<div class="col-7 col-sm-8">
|
||||
@Html.DropDownListFor(model => model.Filter.AssociationType, Model.GetAssociationTypeCodesForSelect(), Localiser["label.any"], new { @id = "", @class = "FilterAssociationType sbm-select" })
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-4 row pb4">
|
||||
<div class="col-sm-4 row pb4">
|
||||
@* Association filter - name etc. *@
|
||||
<div class="col-4 col-sm-4 sbm-label text-left text-sm-right">@Localiser["label.search"]</div>
|
||||
<div class="col-7 col-sm-8">
|
||||
@Html.TextBoxFor(model => model.Filter.Search, new { @id = "", @class = "FilterSearch sbm-input", @maxlength = "32" })
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
@@ -62,12 +62,12 @@
|
||||
<table class="sbm-item-list">
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="pl-2">@Localiser["label.type"]</th>
|
||||
<th class="">@Localiser["label.code"]</th>
|
||||
<th class="">@Localiser["label.name"]</th>
|
||||
<th class="d-none d-md-table-cell">@Localiser["label.address"]</th>
|
||||
<th class="d-none d-md-table-cell">@Localiser["label.notes"]</th>
|
||||
<th class="center">@Localiser["label.status"]</th>
|
||||
<th class="@Model.GetFieldName(Model_Association.ItemField.Type) width10pc pl-1">@Localiser["label.type"]</th>
|
||||
<th class="@Model.GetFieldName(Model_Association.ItemField.Code) width10pc pl-1">@Localiser["label.code"]</th>
|
||||
<th class="@Model.GetFieldName(Model_Association.ItemField.Target) width25pc">@Localiser["label.name"]</th>
|
||||
<th class="@Model.GetFieldName(Model_Association.ItemField.Address) width25pc d-none d-md-table-cell">@Localiser["label.address"]</th>
|
||||
<th class="@Model.GetFieldName(Model_Association.ItemField.Notes) width25pc d-none d-md-table-cell">@Localiser["label.notes"]</th>
|
||||
<th class="@Model.GetFieldName(Model_Association.ItemField.Status) width10pc center">@Localiser["label.status"]</th>
|
||||
<th class="right" style="width:2%;"></th>
|
||||
</tr>
|
||||
<tr><td colspan="6"><div class="sbm-panel-messages"></div></td></tr>
|
||||
@@ -87,12 +87,12 @@
|
||||
@* Association row template - table is ignored. *@
|
||||
<table>
|
||||
<tr class="sbm-row-item Association">
|
||||
<td><div class="AssociationType pl-1"></div></td>
|
||||
<td><div class="AssociationCode"></div></td>
|
||||
<td><div class="AssociationTargetName"></div></td>
|
||||
<td class="d-none d-md-table-cell"><div class="AssociationAddress"></div></td>
|
||||
<td class="d-none d-md-table-cell"><div class="AssociationNotes"></div></td>
|
||||
<td><div class="AssociationStatusDesc center"></div></td>
|
||||
<td class="@Model.GetFieldName(Model_Association.ItemField.Type) pl-1"></td>
|
||||
<td class="@Model.GetFieldName(Model_Association.ItemField.Code) pl-1"></td>
|
||||
<td class="@Model.GetFieldName(Model_Association.ItemField.Target)"></td>
|
||||
<td class="@Model.GetFieldName(Model_Association.ItemField.Address) d-none d-md-table-cell"></td>
|
||||
<td class="@Model.GetFieldName(Model_Association.ItemField.Notes) d-none d-md-table-cell"></td>
|
||||
<td class="@Model.GetFieldName(Model_Association.ItemField.Status) center"></td>
|
||||
<td>
|
||||
<div class="right">
|
||||
@* Burger menu *@
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
@Html.HiddenFor(model => model.Association.Exists, new { @id = "", @class = "AssociationExists sbm-input" })
|
||||
|
||||
@* Association Type *@
|
||||
<div class="sbm-form-control AssociationType">
|
||||
<div class="sbm-form-control @Model.GetFieldName(Model_Association.ItemField.Type)">
|
||||
<div class="row">
|
||||
<div class="col-sm-3">
|
||||
<div class="sbm-label">
|
||||
@@ -31,7 +31,30 @@
|
||||
</div>
|
||||
<div class="col-sm">
|
||||
<div class="sbm-control">
|
||||
@Html.DropDownListFor(model => model.Association.Type, Model.GetAssociationTypeCodesForSelect(), Localiser["label.select"], new { @id = "cbAssociationType", @class = "AssociationType sbm-select" })
|
||||
@Html.DropDownListFor(model => model.Association.Type, Model.GetAssociationTypeCodesForSelect(), Localiser["label.select"], new { @id = "cbAssociationType", @class = "AssociationType sbm-select sbm-auto-val" })
|
||||
</div>
|
||||
<div class="sbm-message"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@* Owner contact *@
|
||||
<div class="sbm-form-control @Model.GetFieldName(Model_Association.ItemField.Owner)">
|
||||
<div class="row">
|
||||
<div class="col-sm-3">
|
||||
<div class="sbm-label">
|
||||
<label for="ifAssociationOwner"><span>@Localiser["label.owner"]</span><span class="required"> *</span></label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm">
|
||||
<div class="sbc-control row">
|
||||
<div class="col">
|
||||
@Html.HiddenFor(model => model.Association.ContactIdOwner, new { @id = "", @class = "AssociationOwnerId sbm-input" })
|
||||
<input type="text" id="ifAssociationOwner" class="AssociationOwner sbm-input sbm-auto-val" readonly="readonly" />
|
||||
</div>
|
||||
<div class="fixed">
|
||||
@* <div class="sbc-action AssetOwnerSearch"><img src="~/img/action/search24.png" alt="" title="" /></div> *@
|
||||
</div>
|
||||
</div>
|
||||
<div class="sbm-message"></div>
|
||||
</div>
|
||||
@@ -39,7 +62,7 @@
|
||||
</div>
|
||||
|
||||
@* Target contact *@
|
||||
<div class="sbm-form-control AssociationTarget">
|
||||
<div class="sbm-form-control @Model.GetFieldName(Model_Association.ItemField.Target)">
|
||||
<div class="row">
|
||||
<div class="col-sm-3">
|
||||
<div class="sbm-label">
|
||||
@@ -49,8 +72,8 @@
|
||||
<div class="col-sm">
|
||||
<div class="sbc-control row">
|
||||
<div class="col">
|
||||
@Html.HiddenFor(model => model.Association.AffiliateIdTarget, new { @id = "", @class = "AssociationId sbm-input" })
|
||||
<input type="text" id="ifAssociationTarget" class="AssociationTarget sbm-input" readonly="readonly" />
|
||||
@Html.HiddenFor(model => model.Association.ContactIdTarget, new { @id = "", @class = "AssociationTargetId sbm-input" })
|
||||
<input type="text" id="ifAssociationTarget" class="AssociationTarget sbm-input sbm-auto-val" readonly="readonly" />
|
||||
</div>
|
||||
<div class="fixed">
|
||||
<div class="sbc-action AssetTargetSearch"><img src="~/img/action/search24.png" alt="" title="" /></div>
|
||||
@@ -61,25 +84,52 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@* Association Code *@
|
||||
<div class="sbm-form-control AssociationCode">
|
||||
<div class="row">
|
||||
<div class="col-sm-3">
|
||||
<div class="sbm-label">
|
||||
<label for="ifAssociationCode"><span>@Localiser["label.code"]</span></label>
|
||||
<div class="row">
|
||||
<div class="col-sm-6">
|
||||
|
||||
@* Association Code *@
|
||||
<div class="sbm-form-control @Model.GetFieldName(Model_Association.ItemField.Code)">
|
||||
<div class="row">
|
||||
<div class="col-sm-6">
|
||||
<div class="sbm-label">
|
||||
<label for="ifAssociationCode"><span>@Localiser["label.code"]</span></label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm">
|
||||
<div class="sbm-control">
|
||||
@Html.TextBoxFor(model => model.Association.Code, new { @id = "ifAssociationCode", @class = "AssociationCode sbm-input sbm-auto-val", @maxlength = @Model.GetControlMaxLength(SbmDbDfn.ColumnIdx.Association_Code) })
|
||||
</div>
|
||||
<div class="sbm-message"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm">
|
||||
<div class="sbm-control">
|
||||
@Html.TextBoxFor(model => model.Association.Code, new { @id = "ifAssociationCode", @class = "AssociationCode sbm-input", @maxlength = @Model.GetControlMaxLength(SbmDbDfn.ColumnIdx.Association_Code) })
|
||||
|
||||
</div>
|
||||
<div class="col-sm-1"></div>
|
||||
<div class="col-sm">
|
||||
|
||||
@* Association ExtRef *@
|
||||
<div class="sbm-form-control @Model.GetFieldName(Model_Association.ItemField.ReferenceExt)">
|
||||
<div class="row">
|
||||
<div class="col-sm-5">
|
||||
<div class="sbm-label">
|
||||
<label for="ifAssociationExtRef"><span>@Localiser["label.reference.external"]</span></label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm">
|
||||
<div class="sbm-control">
|
||||
@Html.TextBoxFor(model => model.Association.ReferenceExt, new { @id = "ifAssociationExtRef", @class = "AssociationExtRef sbm-input sbm-auto-val", @maxlength = @Model.GetControlMaxLength(SbmDbDfn.ColumnIdx.Association_ExtRef) })
|
||||
</div>
|
||||
<div class="sbm-message"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="sbm-message"></div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@* Association status *@
|
||||
<div class="sbm-form-control AssociationStatus">
|
||||
<div class="sbm-form-control @Model.GetFieldName(Model_Association.ItemField.Status)">
|
||||
<div class="row">
|
||||
<div class="col-sm-3">
|
||||
<div class="sbm-label">
|
||||
@@ -88,7 +138,7 @@
|
||||
</div>
|
||||
<div class="col-sm">
|
||||
<div class="sbm-control">
|
||||
<select id="cbAssociationStatus" class="sbm-select AssociationStatus" name="Association.StatusCode"></select>
|
||||
<select id="cbAssociationStatus" class="AssociationStatus sbm-select sbm-auto-val" name="Association.StatusCode"></select>
|
||||
</div>
|
||||
<div class="sbm-message"></div>
|
||||
</div>
|
||||
@@ -96,7 +146,7 @@
|
||||
</div>
|
||||
|
||||
@* Association Notes *@
|
||||
<div class="sbm-form-control AssociationNotes">
|
||||
<div class="sbm-form-control @Model.GetFieldName(Model_Association.ItemField.Notes)">
|
||||
<div class="row">
|
||||
<div class="col-sm-3">
|
||||
<div class="sbm-label">
|
||||
@@ -105,7 +155,7 @@
|
||||
</div>
|
||||
<div class="col-sm">
|
||||
<div class="sbm-control">
|
||||
@Html.TextAreaFor(model => model.Association.Notes, new { @id = "ifAssociationNotes", @class = "AssociationNotes sbm-textarea", @rows = "3", @maxlength = @Model.GetControlMaxLength(SbmDbDfn.ColumnIdx.Association_Notes) })
|
||||
@Html.TextAreaFor(model => model.Association.Notes, new { @id = "ifAssociationNotes", @class = "AssociationNotes sbm-textarea sbm-auto-val", @rows = "3", @maxlength = @Model.GetControlMaxLength(SbmDbDfn.ColumnIdx.Association_Notes) })
|
||||
</div>
|
||||
<div class="sbm-message"></div>
|
||||
</div>
|
||||
|
||||
@@ -38,16 +38,20 @@
|
||||
|
||||
@* Filter Panel *@
|
||||
<div class="sbm-panel-filter">
|
||||
<div class="row pb4">
|
||||
@* Contact filter - name etc. *@
|
||||
<div class="col-4 col-sm-2 sbm-label text-left text-sm-right">@Localiser["label.search"]</div>
|
||||
<div class="col-8 col-sm-4">
|
||||
@Html.TextBoxFor(model => model.Filter.Search, new { @id = "", @class = "FilterSearch sbm-input", @maxlength = "32" })
|
||||
<div class="row">
|
||||
<div class="col-sm-4 row pb4">
|
||||
@* Contact type *@
|
||||
<div class="col-4 col-sm-4 sbm-label text-left text-sm-right">@Localiser["label.type"]</div>
|
||||
<div class="col-8 col-sm-8">
|
||||
@Html.DropDownListFor(model => model.Filter.ContactType, Model.GetAffiliateTypeCodesForFilterSelect(), Localiser["label.any"], new { @id = "", @class = "FilterContactType sbm-select" })
|
||||
</div>
|
||||
</div>
|
||||
@* Contact type *@
|
||||
<div class="col-4 col-sm-2 sbm-label text-left text-sm-right">@Localiser["label.type"]</div>
|
||||
<div class="col-8 col-sm-4">
|
||||
@Html.DropDownListFor(model => model.Filter.ContactType, Model.GetAffiliateTypeCodesForSelect(), Localiser["label.any"], new { @id = "", @class = "FilterContactType sbm-select" })
|
||||
<div class="col-sm-4 row pb4">
|
||||
@* Contact filter - name etc. *@
|
||||
<div class="col-4 col-sm-4 sbm-label text-left text-sm-right">@Localiser["label.search"]</div>
|
||||
<div class="col-8 col-sm-8">
|
||||
@Html.TextBoxFor(model => model.Filter.Search, new { @id = "", @class = "FilterSearch sbm-input", @maxlength = "32" })
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -58,14 +62,14 @@
|
||||
<table class="sbm-item-list">
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="pl-2">@Localiser["label.type"]</th>
|
||||
<th class="">@Localiser["label.name"]</th>
|
||||
<th class="d-none d-md-table-cell">@Localiser["label.address"]</th>
|
||||
<th class="d-none d-md-table-cell">@Localiser["label.contact"]</th>
|
||||
<th class="d-none d-sm-table-cell">@Localiser["label.phone"]</th>
|
||||
<th class="d-none d-md-table-cell">@Localiser["label.notes"]</th>
|
||||
<th class="center">@Localiser["label.associations"]</th>
|
||||
<th class="center">@Localiser["label.status"]</th>
|
||||
<th class="@Model.GetFieldName(Model_Contact.ItemField.Type) width10pc pl-1">@Localiser["label.type"]</th>
|
||||
<th class="@Model.GetFieldName(Model_Contact.ItemField.Name) width25pc pl-1">@Localiser["label.name"]</th>
|
||||
<th class="@Model.GetFieldName(Model_Contact.ItemField.Address) width25pc d-none d-md-table-cell">@Localiser["label.address"]</th>
|
||||
<th class="@Model.GetFieldName(Model_Contact.ItemField.Contact) width10pc d-none d-md-table-cell">@Localiser["label.contact"]</th>
|
||||
<th class="@Model.GetFieldName(Model_Contact.ItemField.Phone) width10pc d-none d-sm-table-cell">@Localiser["label.phone"]</th>
|
||||
<th class="@Model.GetFieldName(Model_Contact.ItemField.Notes) width25pc d-none d-md-table-cell">@Localiser["label.notes"]</th>
|
||||
<th class="@Model.GetFieldName(Model_Contact.ItemField.Associations) width10pc center">@Localiser["label.associations"]</th>
|
||||
<th class="@Model.GetFieldName(Model_Contact.ItemField.Status) width10pc center">@Localiser["label.status"]</th>
|
||||
<th class="right" style="width:2%;"></th>
|
||||
</tr>
|
||||
<tr><td colspan="6"><div class="sbm-panel-messages"></div></td></tr>
|
||||
@@ -85,14 +89,14 @@
|
||||
@* Item row template - table is ignored. *@
|
||||
<table>
|
||||
<tr class="sbm-row-item Contact">
|
||||
<td><div class="ContactType pl-1"></div></td>
|
||||
<td><div class="ContactName"></div></td>
|
||||
<td class="d-none d-md-table-cell"><div class="ContactAddress"></div></td>
|
||||
<td class="d-none d-md-table-cell"><div class="ContactContact"></div></td>
|
||||
<td class="d-none d-sm-table-cell"><div class="ContactPhone"></div></td>
|
||||
<td class="d-none d-md-table-cell"><div class="ContactNotes"></div></td>
|
||||
<td class=""><div class="ContactAssociationCount center"></div></td>
|
||||
<td><div class="ContactStatusDesc center"></div></td>
|
||||
<td class="@Model.GetFieldName(Model_Contact.ItemField.Type) pl-1"></td>
|
||||
<td class="@Model.GetFieldName(Model_Contact.ItemField.Name) pl-1"></td>
|
||||
<td class="@Model.GetFieldName(Model_Contact.ItemField.Address) d-none d-md-table-cell"></td>
|
||||
<td class="@Model.GetFieldName(Model_Contact.ItemField.Contact) d-none d-md-table-cell"></td>
|
||||
<td class="@Model.GetFieldName(Model_Contact.ItemField.Phone) d-none d-sm-table-cell"></td>
|
||||
<td class="@Model.GetFieldName(Model_Contact.ItemField.Notes) d-none d-md-table-cell"></td>
|
||||
<td class="@Model.GetFieldName(Model_Contact.ItemField.Associations) center"></td>
|
||||
<td class="@Model.GetFieldName(Model_Contact.ItemField.Status) center"></td>
|
||||
<td>
|
||||
<div class="right">
|
||||
@* Burger menu *@
|
||||
|
||||
@@ -56,7 +56,7 @@
|
||||
</div>
|
||||
<div class="col-sm">
|
||||
<div class="sbm-control">
|
||||
@Html.TextBoxFor(model => model.Contact.Abbreviation, new { @id = "ifContactAbbreviation", @class = "ContactAbbreviation sbm-input upper", @maxlength = @Model.GetControlMaxLength(SbmDbDfn.ColumnIdx.Affiliate_Abbrev) })
|
||||
@Html.TextBoxFor(model => model.Contact.Abbreviation, new { @id = "ifContactAbbreviation", @class = "ContactAbbreviation sbm-input sbm-auto-val upper", @maxlength = @Model.GetControlMaxLength(SbmDbDfn.ColumnIdx.Affiliate_Abbrev) })
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -76,7 +76,7 @@
|
||||
</div>
|
||||
<div class="col-sm">
|
||||
<div class="sbm-control">
|
||||
@Html.TextBoxFor(model => model.Contact.Name, new { @id = "ifContactName", @class = "ContactName sbm-input", @maxlength = @Model.GetControlMaxLength(SbmDbDfn.ColumnIdx.Affiliate_Name) })
|
||||
@Html.TextBoxFor(model => model.Contact.Name, new { @id = "ifContactName", @class = "ContactName sbm-input sbm-auto-val", @maxlength = @Model.GetControlMaxLength(SbmDbDfn.ColumnIdx.Affiliate_Name) })
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -96,7 +96,7 @@
|
||||
</div>
|
||||
<div class="col-sm">
|
||||
<div class="sbm-control">
|
||||
@Html.TextBoxFor(model => model.Contact.Nature, new { @id = "ifContactNature", @class = "ContactNature sbm-input", @maxlength = @Model.GetControlMaxLength(SbmDbDfn.ColumnIdx.Affiliate_Nature) })
|
||||
@Html.TextBoxFor(model => model.Contact.Nature, new { @id = "ifContactNature", @class = "ContactNature sbm-input sbm-auto-val", @maxlength = @Model.GetControlMaxLength(SbmDbDfn.ColumnIdx.Affiliate_Nature) })
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -117,7 +117,7 @@
|
||||
</div>
|
||||
<div class="col-sm">
|
||||
<div class="sbm-control">
|
||||
@Html.TextBoxFor(model => model.Contact.Contact, new { @id = "ifContactContact", @class = "ContactContact sbm-input", @maxlength = @Model.GetControlMaxLength(SbmDbDfn.ColumnIdx.Affiliate_Contact) })
|
||||
@Html.TextBoxFor(model => model.Contact.Contact, new { @id = "ifContactContact", @class = "ContactContact sbm-input sbm-auto-val", @maxlength = @Model.GetControlMaxLength(SbmDbDfn.ColumnIdx.Affiliate_Contact) })
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -140,7 +140,7 @@
|
||||
</div>
|
||||
<div class="col-sm">
|
||||
<div class="sbm-control">
|
||||
@Html.DropDownListFor(model => model.Contact.Title, Model.GetCodeTypeCodesForSelect(Sbm.ApplCodeType.ContactTitle), new { @id = "cbContactTitle", @class = "ContactTitle sbm-select", @maxlength = @Model.GetControlMaxLength(SbmDbDfn.ColumnIdx.Affiliate_Title) })
|
||||
@Html.DropDownListFor(model => model.Contact.Title, Model.GetCodeTypeCodesForSelect(Sbm.ApplCodeType.ContactTitle), new { @id = "cbContactTitle", @class = "ContactTitle sbm-select sbm-auto-val", @maxlength = @Model.GetControlMaxLength(SbmDbDfn.ColumnIdx.Affiliate_Title) })
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -161,7 +161,7 @@
|
||||
</div>
|
||||
<div class="col-sm">
|
||||
<div class="sbm-control">
|
||||
@Html.TextBoxFor(model => model.Contact.Salutation, new { @id = "ifContactSalutation", @class = "ContactSalutation sbm-input", @maxlength = @Model.GetControlMaxLength(SbmDbDfn.ColumnIdx.Affiliate_Salutation) })
|
||||
@Html.TextBoxFor(model => model.Contact.Salutation, new { @id = "ifContactSalutation", @class = "ContactSalutation sbm-input sbm-auto-val", @maxlength = @Model.GetControlMaxLength(SbmDbDfn.ColumnIdx.Affiliate_Salutation) })
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -184,7 +184,7 @@
|
||||
</div>
|
||||
<div class="col-sm">
|
||||
<div class="sbm-control">
|
||||
@Html.TextBoxFor(model => model.Contact.FirstName, new { @id = "ifContactFirstName", @class = "ContactFirstName sbm-input", @maxlength = @Model.GetControlMaxLength(SbmDbDfn.ColumnIdx.Affiliate_FirstName) })
|
||||
@Html.TextBoxFor(model => model.Contact.FirstName, new { @id = "ifContactFirstName", @class = "ContactFirstName sbm-input sbm-auto-val", @maxlength = @Model.GetControlMaxLength(SbmDbDfn.ColumnIdx.Affiliate_FirstName) })
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -205,7 +205,7 @@
|
||||
</div>
|
||||
<div class="col-sm">
|
||||
<div class="sbm-control">
|
||||
@Html.TextBoxFor(model => model.Contact.Initials, new { @id = "ifContactInitials", @class = "ContactInitials sbm-input", @maxlength = @Model.GetControlMaxLength(SbmDbDfn.ColumnIdx.Affiliate_Initials) })
|
||||
@Html.TextBoxFor(model => model.Contact.Initials, new { @id = "ifContactInitials", @class = "ContactInitials sbm-input sbm-auto-val", @maxlength = @Model.GetControlMaxLength(SbmDbDfn.ColumnIdx.Affiliate_Initials) })
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -225,7 +225,7 @@
|
||||
</div>
|
||||
<div class="col-sm">
|
||||
<div class="sbm-control">
|
||||
@Html.TextBoxFor(model => model.Contact.LastName, new { @id = "ifContactLastName", @class = "ContactLastName sbm-input", @maxlength = @Model.GetControlMaxLength(SbmDbDfn.ColumnIdx.Affiliate_LastName) })
|
||||
@Html.TextBoxFor(model => model.Contact.LastName, new { @id = "ifContactLastName", @class = "ContactLastName sbm-input sbm-auto-val", @maxlength = @Model.GetControlMaxLength(SbmDbDfn.ColumnIdx.Affiliate_LastName) })
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -245,7 +245,7 @@
|
||||
</div>
|
||||
<div class="col-sm">
|
||||
<div class="sbm-control">
|
||||
@Html.TextBoxFor(model => model.Contact.PhoneMain, new { @id = "ifContactPhoneMain", @class = "ContactPhoneMain sbm-input", @maxlength = @Model.GetControlMaxLength(SbmDbDfn.ColumnIdx.Affiliate_PhoneMain) })
|
||||
@Html.TextBoxFor(model => model.Contact.PhoneMain, new { @id = "ifContactPhoneMain", @class = "ContactPhoneMain sbm-input sbm-auto-val", @maxlength = @Model.GetControlMaxLength(SbmDbDfn.ColumnIdx.Affiliate_PhoneMain) })
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -266,7 +266,7 @@
|
||||
</div>
|
||||
<div class="col-sm">
|
||||
<div class="sbm-control">
|
||||
@Html.TextBoxFor(model => model.Contact.PhoneAlt, new { @id = "ifContactPhoneAlt", @class = "ContactPhoneAlt sbm-input", @maxlength = @Model.GetControlMaxLength(SbmDbDfn.ColumnIdx.Affiliate_PhoneAlt) })
|
||||
@Html.TextBoxFor(model => model.Contact.PhoneAlt, new { @id = "ifContactPhoneAlt", @class = "ContactPhoneAlt sbm-input sbm-auto-val", @maxlength = @Model.GetControlMaxLength(SbmDbDfn.ColumnIdx.Affiliate_PhoneAlt) })
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -283,7 +283,7 @@
|
||||
</div>
|
||||
<div class="col-sm">
|
||||
<div class="sbm-control">
|
||||
@Html.TextBoxFor(model => model.Contact.PhoneMobile, new { @id = "ifContactPhoneMobile", @class = "ContactPhoneMobile sbm-input", @maxlength = @Model.GetControlMaxLength(SbmDbDfn.ColumnIdx.Affiliate_PhoneMobile) })
|
||||
@Html.TextBoxFor(model => model.Contact.PhoneMobile, new { @id = "ifContactPhoneMobile", @class = "ContactPhoneMobile sbm-input sbm-auto-val", @maxlength = @Model.GetControlMaxLength(SbmDbDfn.ColumnIdx.Affiliate_PhoneMobile) })
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -306,7 +306,7 @@
|
||||
</div>
|
||||
<div class="col-sm">
|
||||
<div class="sbm-control">
|
||||
@Html.TextBoxFor(model => model.Contact.PhoneDirect, new { @id = "ifContactPhoneDirect", @class = "ContactPhoneDirect sbm-input", @maxlength = @Model.GetControlMaxLength(SbmDbDfn.ColumnIdx.Affiliate_PhoneDirect) })
|
||||
@Html.TextBoxFor(model => model.Contact.PhoneDirect, new { @id = "ifContactPhoneDirect", @class = "ContactPhoneDirect sbm-input sbm-auto-val", @maxlength = @Model.GetControlMaxLength(SbmDbDfn.ColumnIdx.Affiliate_PhoneDirect) })
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -327,7 +327,7 @@
|
||||
</div>
|
||||
<div class="col-sm">
|
||||
<div class="sbm-control">
|
||||
@Html.TextBoxFor(model => model.Contact.PhoneFax, new { @id = "ifContactPhoneFax", @class = "ContactPhoneFax sbm-input", @maxlength = @Model.GetControlMaxLength(SbmDbDfn.ColumnIdx.Affiliate_PhoneFax) })
|
||||
@Html.TextBoxFor(model => model.Contact.PhoneFax, new { @id = "ifContactPhoneFax", @class = "ContactPhoneFax sbm-input sbm-auto-val", @maxlength = @Model.GetControlMaxLength(SbmDbDfn.ColumnIdx.Affiliate_PhoneFax) })
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -347,7 +347,7 @@
|
||||
</div>
|
||||
<div class="col-sm">
|
||||
<div class="sbm-control">
|
||||
@Html.TextBoxFor(model => model.Contact.Email, new { @id = "ifContactEmail", @class = "ContactEmail sbm-input", @maxlength = @Model.GetControlMaxLength(SbmDbDfn.ColumnIdx.Affiliate_Email) })
|
||||
@Html.TextBoxFor(model => model.Contact.Email, new { @id = "ifContactEmail", @class = "ContactEmail sbm-input sbm-auto-val", @maxlength = @Model.GetControlMaxLength(SbmDbDfn.ColumnIdx.Affiliate_Email) })
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -364,7 +364,7 @@
|
||||
</div>
|
||||
<div class="col-sm">
|
||||
<div class="sbm-control">
|
||||
@Html.TextBoxFor(model => model.Contact.Website, new { @id = "ifContactWebsite", @class = "ContactWebsite sbm-input", @maxlength = @Model.GetControlMaxLength(SbmDbDfn.ColumnIdx.Affiliate_Website) })
|
||||
@Html.TextBoxFor(model => model.Contact.Website, new { @id = "ifContactWebsite", @class = "ContactWebsite sbm-input sbm-auto-val", @maxlength = @Model.GetControlMaxLength(SbmDbDfn.ColumnIdx.Affiliate_Website) })
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -384,7 +384,7 @@
|
||||
</div>
|
||||
<div class="col-sm">
|
||||
<div class="sbm-control">
|
||||
@Html.TextBoxFor(model => model.Contact.CompanyNo, new { @id = "ifContactCompanyNo", @class = "ContactCompanyNo sbm-input", @maxlength = @Model.GetControlMaxLength(SbmDbDfn.ColumnIdx.Affiliate_CompanyNo) })
|
||||
@Html.TextBoxFor(model => model.Contact.CompanyNo, new { @id = "ifContactCompanyNo", @class = "ContactCompanyNo sbm-input sbm-auto-val", @maxlength = @Model.GetControlMaxLength(SbmDbDfn.ColumnIdx.Affiliate_CompanyNo) })
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -405,7 +405,7 @@
|
||||
</div>
|
||||
<div class="col-sm">
|
||||
<div class="sbm-control">
|
||||
@Html.TextBoxFor(model => model.Contact.VatReg, new { @id = "ifContactVatReg", @class = "ContactVatReg sbm-input", @maxlength = @Model.GetControlMaxLength(SbmDbDfn.ColumnIdx.Affiliate_VatReg) })
|
||||
@Html.TextBoxFor(model => model.Contact.VatReg, new { @id = "ifContactVatReg", @class = "ContactVatReg sbm-input sbm-auto-val", @maxlength = @Model.GetControlMaxLength(SbmDbDfn.ColumnIdx.Affiliate_VatReg) })
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -426,7 +426,8 @@
|
||||
<div class="col-sm">
|
||||
<div class="sbm-form-control @Model.GetFieldName(Model_Contact.ItemField.Prospect)">
|
||||
<div class="sbm-control">
|
||||
@Html.CheckBoxFor(Model => Model.Contact.Prospect, new { @id = "chkContactProspect", @class = "ContactProspect sbm-checkbox" })
|
||||
<input type="checkbox" name="Contact.Prospect" id="chkContactProspect" class="ContactProspect sbm-checkbox mt-1" value="true" />
|
||||
<input type="checkbox" name="Contact.Prospect" class="sbm-checkbox hidden" value="false" />
|
||||
<span class="sbc-label pointer" onclick="$('#chkContactProspect').click();">@Localiser["label.prospect"]</span>
|
||||
</div>
|
||||
<div class="sbm-message"></div>
|
||||
@@ -445,7 +446,7 @@
|
||||
</div>
|
||||
<div class="col-sm">
|
||||
<div class="sbm-control">
|
||||
@Html.TextAreaFor(model => model.Contact.Notes, new { @id = "ifContactNotes", @class = "ContactNotes sbm-textarea", @rows = "3", @maxlength = @Model.GetControlMaxLength(SbmDbDfn.ColumnIdx.Affiliate_Notes) })
|
||||
@Html.TextAreaFor(model => model.Contact.Notes, new { @id = "ifContactNotes", @class = "ContactNotes sbm-textarea sbm-auto-val", @rows = "3", @maxlength = @Model.GetControlMaxLength(SbmDbDfn.ColumnIdx.Affiliate_Notes) })
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -2,6 +2,17 @@
|
||||
BusMgr Portal - Base stylesheet.
|
||||
*/
|
||||
|
||||
:root
|
||||
{
|
||||
--color-OldGold: #d4af37;
|
||||
--color-OliveGreen: #808000;
|
||||
--color-CornflowerBlue: #6495ed;
|
||||
--color-RoyalBlue: #4169e1;
|
||||
--color-NavyBlue: #000080;
|
||||
--color-DarkBlue: #00008B;
|
||||
--color-Indigo: #4b0082;
|
||||
}
|
||||
|
||||
body
|
||||
{
|
||||
margin: 0;
|
||||
@@ -195,7 +206,32 @@ td.action
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.fullwidth
|
||||
.width5pc
|
||||
{
|
||||
width: 5%;
|
||||
}
|
||||
|
||||
.width10pc
|
||||
{
|
||||
width: 10%;
|
||||
}
|
||||
|
||||
.width20pc
|
||||
{
|
||||
width: 20%;
|
||||
}
|
||||
|
||||
.width25pc
|
||||
{
|
||||
width: 25%;
|
||||
}
|
||||
|
||||
.width50pc
|
||||
{
|
||||
width: 50%;
|
||||
}
|
||||
|
||||
.fullwidth, .width100pc
|
||||
{
|
||||
width: 100%;
|
||||
}
|
||||
@@ -389,9 +425,9 @@ td.action
|
||||
z-index: 99;
|
||||
}
|
||||
|
||||
.hidden
|
||||
.hidden, .sbm-hidden
|
||||
{
|
||||
display: none;
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
.shadow
|
||||
|
||||
@@ -2,14 +2,13 @@
|
||||
BusMgr Portal - Data stylesheet.
|
||||
*/
|
||||
|
||||
/* Data panel */
|
||||
|
||||
:root
|
||||
{
|
||||
--color-OliveGreen: #808000;
|
||||
--color-DataPanel-main: var(--color-OliveGreen);
|
||||
}
|
||||
|
||||
/* Data panel */
|
||||
|
||||
.sbm-panel-data
|
||||
{
|
||||
margin: 6px auto;
|
||||
|
||||
@@ -133,6 +133,11 @@
|
||||
margin: 0 0 16px 0;
|
||||
}
|
||||
|
||||
.sbm-form .sbm-form-control .sbm-form-control
|
||||
{
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.sbm-form .sbm-form-control .sbm-label
|
||||
{
|
||||
margin: 0 0 8px 0;
|
||||
@@ -224,8 +229,8 @@
|
||||
font-size: 1rem;
|
||||
text-align: center;
|
||||
color: #fff;
|
||||
background-color: #d4af37;
|
||||
border: 1px solid #d4af37;
|
||||
background-color: var(--color-OldGold);
|
||||
border: 1px solid var(--color-OldGold);
|
||||
border-radius: 4px;
|
||||
}
|
||||
|
||||
|
||||
@@ -11,10 +11,6 @@
|
||||
--color-primary: #4b0082;
|
||||
--color-light: #9b71b9;
|
||||
--color-pale: #ebe2f1;
|
||||
/* Tetrad/Square colors */
|
||||
--color-alt1: #820a00;
|
||||
--color-alt2: #378200;
|
||||
--color-alt3: #007882;
|
||||
}
|
||||
|
||||
/* Document */
|
||||
@@ -166,7 +162,7 @@ button.accept-policy
|
||||
a, a:hover
|
||||
{
|
||||
text-decoration: underline;
|
||||
color: #d4af37;
|
||||
color: var(--color-OldGold);
|
||||
}
|
||||
|
||||
a:focus
|
||||
@@ -326,6 +322,17 @@ a:focus
|
||||
}
|
||||
|
||||
/* Dialogs */
|
||||
|
||||
:root
|
||||
{
|
||||
--color-dialog: var(--color-OldGold);
|
||||
}
|
||||
|
||||
.ui-dialog.sbm-dark-blue
|
||||
{
|
||||
--color-dialog: var(--color-DarkBlue);
|
||||
}
|
||||
|
||||
.sbm-dialog
|
||||
{
|
||||
display: none;
|
||||
@@ -350,7 +357,7 @@ a:focus
|
||||
.ui-dialog.ui-widget.ui-widget-content
|
||||
{
|
||||
border-width: 2px;
|
||||
border-color: #d4af37;
|
||||
border-color: var(--color-dialog);
|
||||
-moz-box-shadow: 4px 4px 6px #ccc;
|
||||
-webkit-box-shadow: 4px 4px 6px #ccc;
|
||||
overflow: hidden;
|
||||
@@ -365,8 +372,8 @@ a:focus
|
||||
{
|
||||
font-size: 1.1rem;
|
||||
color: #fff;
|
||||
background-color: #d4af37;
|
||||
border-color: #d4af37;
|
||||
background-color: var(--color-dialog);
|
||||
border-color: var(--color-dialog);
|
||||
}
|
||||
|
||||
.ui-widget-content
|
||||
@@ -383,12 +390,12 @@ a:focus
|
||||
|
||||
.ui-dialog.no-close .ui-dialog-titlebar-close
|
||||
{
|
||||
/*display: none;*/
|
||||
display: none;
|
||||
}
|
||||
|
||||
.ui-dialog .ui-dialog-buttonpane
|
||||
{
|
||||
border-color: #d4af37;
|
||||
border-color: var(--color-dialog);
|
||||
margin-top: .25em;
|
||||
padding: .2em 1em .2em .5em;
|
||||
}
|
||||
@@ -398,8 +405,8 @@ a:focus
|
||||
min-width: 80px;
|
||||
margin: .5em .25em .5em .5em;
|
||||
color: #fff;
|
||||
background-color: #d4af37;
|
||||
border-color: #d4af37;
|
||||
background-color: var(--color-dialog);
|
||||
border-color: var(--color-dialog);
|
||||
outline: none;
|
||||
}
|
||||
|
||||
@@ -417,7 +424,7 @@ a:focus
|
||||
.ui-datepicker .ui-datepicker-header
|
||||
{
|
||||
background-color: #fff;
|
||||
border: 1px solid #d4af37;
|
||||
border: 1px solid var(--color-OldGold);
|
||||
}
|
||||
|
||||
/* The End */
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
}
|
||||
as.doRefreshResults = function (response)
|
||||
{
|
||||
sbm.debug('doRefreshResults', response);
|
||||
//sbm.debug('doRefreshResults', response);
|
||||
delete sbm.awaitingRefreshResponse;
|
||||
$pnl.msgs.hide().empty();
|
||||
let $table = $('table', $pnl.table).find('tbody tr').remove().end();
|
||||
@@ -31,6 +31,9 @@
|
||||
if (!response.success) return;
|
||||
|
||||
// Reference data.
|
||||
as.config = response.config;
|
||||
as.configCust = response.configCust;
|
||||
as.configSupp = response.configSupp;
|
||||
as.data.associationTypes = response.associationTypes;
|
||||
as.data.statuses = response.statuses;
|
||||
as.data.defaultStatusCode = response.defaultStatusCode;
|
||||
@@ -39,26 +42,25 @@
|
||||
$pnl.bgr.invisible();
|
||||
$pnl.mnu.empty();
|
||||
$pnl.mnu.append(as.getFilterMenuOption(sbm.lbl.refresh, function () { as.refreshResults(); }, 'sbm-refresh'));
|
||||
$pnl.mnu.append(as.getFilterMenuOption(sbm.lbl.create, function () { as.createItem(); }, 'sbm-add'));
|
||||
$pnl.mnu.append(as.getFilterMenuOption(sbm.lbl.createCust, function () { as.createItem(as.configCust, sbm.lbl.createCust); }, 'sbm-add'));
|
||||
$pnl.mnu.append(as.getFilterMenuOption(sbm.lbl.createSupp, function () { as.createItem(as.configSupp, sbm.lbl.createSupp); }, 'sbm-add'));
|
||||
$pnl.bgr.toggleVisibility(!!$('.sbm-dropdown-item', $pnl.mnu).length);
|
||||
|
||||
// Items.
|
||||
var items = response.associations || [];
|
||||
if (!items.length)
|
||||
return $pnl.msgs.append($('<div class="sbm-message">' + sbm.msg.dataNoneFound + '</div>')).fadeIn(500);
|
||||
for (let itemIdx = 0; itemIdx < items.length; itemIdx++)
|
||||
$table.append(as.populateItem(as.getItemTemplate(), items[itemIdx]));
|
||||
sbm.configureItemTable(as.config, $table);
|
||||
}
|
||||
as.populateItem = function ($item, item)
|
||||
{
|
||||
if (!item) return;
|
||||
$pnl.msgs.hide().empty();
|
||||
$item.prop('id', as.getItemId(item));
|
||||
$('.AssociationCode', $item).text(item.code);
|
||||
$('.AssociationTargetName', $item).text(item.targetName);
|
||||
$('.AssociationType', $item).text(item.typeDesc);
|
||||
$('.AssociationAddress', $item).text(item.addressSummary);
|
||||
$('.AssociationNotes', $item).text(item.notes);
|
||||
$('.AssociationStatusDesc', $item).text(item.statusDesc).removeStatusClasses().addClass('sbm-status-' + item.statusCode.toLowerCase());
|
||||
sbm.populateItemValues(as.config, $item, item.field.value);
|
||||
let prefix = as.config.column.prefix;
|
||||
$('.' + prefix + 'Status', $item).removeStatusClasses().addClass('sbm-status-' + item.statusCode.toLowerCase());
|
||||
// Actions.
|
||||
var $bgr = $('.sbm-burger', $item).hide();
|
||||
let $mnu = $('ul.sbm-dropdown-menu', $bgr).empty();
|
||||
@@ -66,7 +68,7 @@
|
||||
{
|
||||
let fnUpd = function () { as.updateItem(item) };
|
||||
$mnu.append(as.getItemMenuOption(sbm.lbl.edit, fnUpd, 'sbm-edit'));
|
||||
$('.AssociationTargetName', $item).off('click').on('click', fnUpd).addClass('sbm-action-text');
|
||||
$('.' + prefix + 'Target', $item).off('click').on('click', fnUpd).addClass('sbm-action-text');
|
||||
$item.off('dblclick').on('dblclick', fnUpd);
|
||||
}
|
||||
$bgr.toggle(!!$('.sbm-dropdown-item', $mnu).length);
|
||||
@@ -74,7 +76,7 @@
|
||||
}
|
||||
as.getItemId = function (item)
|
||||
{
|
||||
return 'Ass_' + (item || {}).id;
|
||||
return 'Asn_' + (item || {}).id;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------
|
||||
@@ -106,25 +108,25 @@
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------
|
||||
as.createItem = function ()
|
||||
as.createItem = function (cfg, title)
|
||||
{
|
||||
as.clearItem();
|
||||
as.clearItem(cfg);
|
||||
let $ctrls = $('.sbm-input,.sbm-textarea,.sbm-select', $frm.item);
|
||||
$ctrls.filter('.AssociationType').val('').prop('disabled', false);
|
||||
$ctrls.filter('.AssociationStatus').val(as.data.defaultStatusCode);
|
||||
$dlg.item.dialog('option', 'title', sbm.dlg.title.createAssociation);
|
||||
as.openItemDlg();
|
||||
as.openItemDlg(cfg, title);
|
||||
}
|
||||
as.clearItem = function ()
|
||||
as.clearItem = function (cfg)
|
||||
{
|
||||
sbm.clearControlErrors($frm.item);
|
||||
$('.sbm-input,.sbm-textarea,.sbm-select', $frm.item).val('');
|
||||
sbm.clearItemForm($frm.item);
|
||||
sbm.populateSelectCodeDesc('#cbAssociationType', as.data.associationTypes);
|
||||
sbm.populateSelectCodeDesc('#cbAssociationStatus', as.data.statuses);
|
||||
}
|
||||
as.openItemDlg = function ()
|
||||
as.openItemDlg = function (cfg, title)
|
||||
{
|
||||
sbm.openDialog($dlg.item, 600, 640);
|
||||
sbm.configureItemControls(cfg, $frm.item);
|
||||
$dlg.item.dialog('option', 'title', title);
|
||||
sbm.openDialog($dlg.item, 640, 600);
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------
|
||||
@@ -137,23 +139,22 @@
|
||||
as.onUpdateItem = function (response)
|
||||
{
|
||||
//sbm.debug('onUpdateItem', response);
|
||||
as.clearItem();
|
||||
if (!response.success) return;
|
||||
let cfg = response.config || {};
|
||||
let prefix = cfg.field.prefix;
|
||||
as.clearItem(cfg);
|
||||
let item = response.association;
|
||||
sbm.populateFormValues(cfg, $frm.item, item.field.value);
|
||||
let $ctrls = $('.sbm-input,.sbm-textarea,.sbm-select', $frm.item);
|
||||
$ctrls.filter('.AssociationId').val(item.id);
|
||||
$ctrls.filter('.AssociationExists').val(1);
|
||||
let $ctrlType = $ctrls.filter('.AssociationType');
|
||||
sbm.selectOrAdd($ctrlType, item.typeCode, item.typeDesc)
|
||||
if ($ctrlType.val()) $ctrlType.prop('disabled', true);
|
||||
//if ($ctrlType.val()) $ctrlType.prop('disabled', true);
|
||||
$ctrls.filter('.AssociationOwnerId').val(item.ownerId);
|
||||
$ctrls.filter('.AssociationTargetId').val(item.targetId);
|
||||
$ctrls.filter('.AssociationTarget').val(item.targetName);
|
||||
$ctrls.filter('.AssociationCode').val(item.code);
|
||||
$ctrls.filter('.AssociationDesc').val(item.desc);
|
||||
$ctrls.filter('.AssociationNotes').val(item.notes);
|
||||
sbm.selectOrAdd($ctrls.filter('.AssociationStatus'), item.statusCode, item.statusDesc)
|
||||
$dlg.item.dialog('option', 'title', sbm.dlg.title.updateAssociation);
|
||||
as.openItemDlg();
|
||||
as.openItemDlg(cfg, cfg.title || sbm.dlg.title.updateAssociation);
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------
|
||||
@@ -168,6 +169,7 @@
|
||||
sbm.refreshControlValues(response.controlValues);
|
||||
if (!response.success) return;
|
||||
$dlg.item.dialog('close');
|
||||
$pnl.msgs.hide().empty();
|
||||
|
||||
var item = response.association;
|
||||
var $item = $('#' + as.getItemId(item), $pnl.table);
|
||||
@@ -176,6 +178,7 @@
|
||||
$item = as.getItemTemplate();
|
||||
$('table tbody', $pnl.table).prepend($item).show();
|
||||
}
|
||||
let cfg = response.config || {};
|
||||
as.populateItem($item, item);
|
||||
}
|
||||
|
||||
|
||||
@@ -56,21 +56,17 @@
|
||||
return $pnl.msgs.append($('<div class="sbm-message">' + sbm.msg.dataNoneFound + '</div>')).fadeIn(500);
|
||||
for (let itemIdx = 0; itemIdx < items.length; itemIdx++)
|
||||
$table.append(co.populateItem(co.getItemTemplate(), items[itemIdx]));
|
||||
sbm.configureItemTable(co.config, $table);
|
||||
}
|
||||
co.populateItem = function ($item, item)
|
||||
{
|
||||
if (!item) return;
|
||||
$pnl.msgs.hide().empty();
|
||||
$item.prop('id', co.getItemId(item));
|
||||
$('.ContactName', $item).text(item.displayName);
|
||||
$('.ContactType', $item).text(item.typeDesc);
|
||||
sbm.populateItemValues(co.config, $item, item.field.value);
|
||||
let prefix = co.config.column.prefix;
|
||||
if (item.associationCount)
|
||||
$('.ContactAssociationCount', $item).text(item.associationCount).on('click', function () { co.onClickAssociationCount(item); }).addClass('sbm-action-text');
|
||||
$('.ContactAddress', $item).text(item.addressSummary);
|
||||
$('.ContactContact', $item).text(item.contact);
|
||||
$('.ContactPhone', $item).text(item.phone);
|
||||
$('.ContactNotes', $item).text(item.notes);
|
||||
$('.ContactStatusDesc', $item).text(item.statusDesc).removeStatusClasses().addClass('sbm-status-' + item.statusCode.toLowerCase());
|
||||
$('.' + prefix + 'Associations', $item).text(item.associationCount).off('click').on('click', function () { co.onClickAssociationCount(item); }).addClass('sbm-action-text');
|
||||
$('.' + prefix + 'Status', $item).removeStatusClasses().addClass('sbm-status-' + item.statusCode.toLowerCase());
|
||||
// Actions.
|
||||
var $bgr = $('.sbm-burger', $item).hide();
|
||||
let $mnu = $('ul.sbm-dropdown-menu', $bgr).empty();
|
||||
@@ -78,7 +74,7 @@
|
||||
{
|
||||
let fnUpd = function () { co.updateItem(item) };
|
||||
$mnu.append(co.getItemMenuOption(sbm.lbl.edit, fnUpd, 'sbm-edit'));
|
||||
$('.ContactName', $item).off('click').on('click', fnUpd).addClass('sbm-action-text');
|
||||
$('.' + prefix + 'Name', $item).off('click').on('click', fnUpd).addClass('sbm-action-text');
|
||||
$item.off('dblclick').on('dblclick', fnUpd);
|
||||
}
|
||||
$bgr.toggle(!!$('.sbm-dropdown-item', $mnu).length);
|
||||
@@ -121,10 +117,9 @@
|
||||
co.createItem = function (cfg, title)
|
||||
{
|
||||
co.clearItem(cfg);
|
||||
let frm = $frm.item;
|
||||
$('.ContactStatus', frm).val(co.data.defaultStatusCode).prop('readonly', false);
|
||||
co.configureItemControls(cfg);
|
||||
co.openItemDlg(title);
|
||||
let $ctrls = $('.sbm-input,.sbm-textarea,.sbm-select', $frm.item);
|
||||
$ctrls.filter('.ContactStatus').val(co.data.defaultStatusCode);
|
||||
co.openItemDlg(cfg, title);
|
||||
}
|
||||
co.clearItem = function (cfg)
|
||||
{
|
||||
@@ -135,30 +130,13 @@
|
||||
if (cfg.isGroup) $('.ContactIsGroup', frm).val(1);
|
||||
sbm.populateSelectCodeDesc('#cbContactType', co.data.organisationTypes);
|
||||
sbm.populateSelectCodeDesc('#cbContactTitle', co.data.titles);
|
||||
sbm.selectOrAdd('#cbContactTitle', "", "")
|
||||
sbm.populateSelectCodeDesc('#cbContactSalutation', co.data.salutations);
|
||||
sbm.populateSelectCodeDesc('#cbContactStatus', co.data.statuses);
|
||||
}
|
||||
sbm.clearItemForm = function ($frm)
|
||||
co.openItemDlg = function (cfg, title)
|
||||
{
|
||||
sbm.clearControlErrors($frm);
|
||||
$('.sbm-input,.sbm-textarea,.sbm-select,.sbm-checkbox', $frm).val('').prop('readonly', false).prop('disabled', false).removeAttr('checked');
|
||||
}
|
||||
co.configureItemControls = function (cfg)
|
||||
{
|
||||
sbm.configureItemControls($frm.item, cfg);
|
||||
}
|
||||
sbm.configureItemControls = function ($frm, cfg)
|
||||
{
|
||||
//sbm.debug('configureItemControls', cfg);
|
||||
let fld = cfg.field || {};
|
||||
let $ctrl = $('.sbm-form-control', $frm.item).show();
|
||||
(fld.hide || []).forEach(function (v, i, a) { $ctrl.filter('.' + cfg.field.prefix + v).hide().find('.sbm-input,.sbm-textarea,.sbm-select,.sbm-checkbox').prop('disabled', true); });
|
||||
(fld.readonly || []).forEach(function (v, i, a) { $ctrl.filter('.' + cfg.field.prefix + v).find('.sbm-input,.sbm.textarea,.sbm-select,.sbm-checkbox').prop('readonly', true).prop('disabled', true); });
|
||||
}
|
||||
co.openItemDlg = function (title)
|
||||
{
|
||||
if (title)$dlg.item.dialog('option', 'title', title);
|
||||
sbm.configureItemControls(cfg, $frm.item);
|
||||
$dlg.item.dialog('option', 'title', title);
|
||||
sbm.openDialog($dlg.item, 640, 600);
|
||||
}
|
||||
|
||||
@@ -172,25 +150,18 @@
|
||||
co.onUpdateItem = function (response)
|
||||
{
|
||||
//sbm.debug('onUpdateItem', response);
|
||||
co.clearItem(response.config);
|
||||
if (!response.success) return;
|
||||
let cfg = response.config || {};
|
||||
co.clearItem(cfg);
|
||||
let item = response.contact;
|
||||
sbm.populateFormValues(cfg, $frm.item, item.field.value);
|
||||
let $ctrls = $('.sbm-input,.sbm-textarea,.sbm-select,.sbm-checkbox', $frm.item);
|
||||
$ctrls.filter('.ContactId').val(item.id);
|
||||
$ctrls.filter('.ContactExists').val(1);
|
||||
$ctrls.filter('.ContactType').val(item.typeCode);
|
||||
$ctrls.filter('.ContactProspect').prop('checked', !!item.prospect);
|
||||
$ctrls.filter('.ContactNotes').val(item.notes);
|
||||
$ctrls.filter('.ContactStatus').val(item.statusCode);
|
||||
sbm.populateFieldValues(response.config, $frm.item, item.field);
|
||||
co.configureItemControls(response.config);
|
||||
co.openItemDlg(sbm.dlg.title.updateContact);
|
||||
}
|
||||
sbm.populateFieldValues = function (cfg, $frm, fld)
|
||||
{
|
||||
let val = (fld || {}).value || [];
|
||||
let $ctrl = $('.sbm-form-control', $frm.item).show();
|
||||
for (var name in val) { $ctrl.filter('.' + cfg.field.prefix + name).find('.sbm-input,.sbm-textarea,.sbm-select').val(val[name]).end().find('.sbm-checkbox').prop('checked',!!val[name]); };
|
||||
co.openItemDlg(cfg, sbm.dlg.title.updateContact);
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------
|
||||
@@ -205,6 +176,7 @@
|
||||
sbm.refreshControlValues(response.controlValues);
|
||||
if (!response.success) return;
|
||||
$dlg.item.dialog('close');
|
||||
$pnl.msgs.hide().empty();
|
||||
|
||||
var item = response.contact;
|
||||
var $item = $('#' + co.getItemId(item), $pnl.table);
|
||||
@@ -219,11 +191,12 @@
|
||||
//--------------------------------------------------------------
|
||||
co.onClickAssociationCount = function (item)
|
||||
{
|
||||
sbm.debug('onClickAssociationCount');
|
||||
if (!item.id) return;
|
||||
sbm.doPleaseWait();
|
||||
let frm = $frm.itemId;
|
||||
$('.ContactId', frm).val(item.id);
|
||||
frm.prop('action', sbm.url.base + 'Association').submit();
|
||||
//sbm.doPleaseWait();
|
||||
//let frm = $frm.itemId;
|
||||
//$('.ContactId', frm).val(item.id);
|
||||
//frm.prop('action', sbm.url.base + 'Association').submit();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------
|
||||
|
||||
@@ -154,6 +154,41 @@
|
||||
sbm.resultsPaging.fn.refreshPaging(response.paging, context, refreshFn);
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------
|
||||
sbm.configureItemTable = function (cfg, $sel)
|
||||
{
|
||||
//sbm.debug('configureItemTable', cfg, $sel);
|
||||
let col = cfg.column || {};
|
||||
let $cell = $('th,td', $sel).removeClass('hidden');
|
||||
(col.hide || []).forEach(function (v, i, a) { $cell.filter('.' + col.prefix + v).addClass('hidden'); });
|
||||
}
|
||||
sbm.populateItemValues = function (cfg, $item, val)
|
||||
{
|
||||
//sbm.debug('populateItemValues', cfg, $item, val);
|
||||
for (var name in val || []) { $item.find('.' + cfg.column.prefix + name).text(val[name]); };
|
||||
}
|
||||
sbm.clearItemForm = function ($frm)
|
||||
{
|
||||
//sbm.clearControlErrors($frm);
|
||||
$('.sbm-input,.sbm-textarea,.sbm-select', $frm).val('').prop('readonly', false).prop('disabled', false);
|
||||
$('.sbm-checkbox', $frm).prop('readonly', false).prop('disabled', false).removeAttr('checked');
|
||||
}
|
||||
sbm.configureItemControls = function (cfg, $frm)
|
||||
{
|
||||
//sbm.debug('configureItemControls', cfg);
|
||||
let fld = cfg.field || {};
|
||||
let $ctrl = $('.sbm-form-control', $frm).show();
|
||||
for (var name in fld.label || {}) { /* ... */ };
|
||||
(fld.hide || []).forEach(function (v, i, a) { $ctrl.filter('.' + fld.prefix + v).hide().find('.sbm-input,.sbm-textarea,.sbm-select,.sbm-checkbox').prop('disabled', true); });
|
||||
(fld.readonly || []).forEach(function (v, i, a) { $ctrl.filter('.' + fld.prefix + v).find('.sbm-input,.sbm.textarea,.sbm-select,.sbm-checkbox').prop('readonly', true).prop('disabled', true); });
|
||||
}
|
||||
sbm.populateFormValues = function (cfg, $frm, val)
|
||||
{
|
||||
//sbm.debug('populateFormValues', cfg, $frm, val);
|
||||
let $ctrl = $('.sbm-form-control', $frm);
|
||||
for (var name in val || {}) { $ctrl.filter('.' + cfg.field.prefix + name).find('.sbm-input,.sbm-textarea,.sbm-select').filter('.sbm-auto-val').val(val[name]).end().find('.sbm-checkbox').prop('checked', !!val[name]); };
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------
|
||||
// Page navigation.
|
||||
sbm.navigateTo = function (action)
|
||||
@@ -221,7 +256,7 @@
|
||||
sbm.$dlg.alert = $('<div id="dlgAlert"><div id="dlgAlertMsg"></div></div>').dialog(opt);
|
||||
}
|
||||
$('#dlgAlertMsg', sbm.$dlg.alert).html(msg.replace(/\\n/g, '<br>'));
|
||||
let btns = [];
|
||||
let btns = {};
|
||||
btns[sbm.lbl.ok] = function () { $(this).dialog('close'); if (onOk) onOk(); };
|
||||
sbm.$dlg.alert.dialog('option', { title: title || sbm.dlg.title.alert, buttons: btns });
|
||||
sbm.openDialog(sbm.$dlg.alert);
|
||||
@@ -236,9 +271,10 @@
|
||||
if (!sbm.isDef(sbm.$dlg.confirm))
|
||||
{
|
||||
var opt = sbm.dlgOpts();
|
||||
opt.dialogClass += " sbm-dark-blue";
|
||||
sbm.$dlg.confirm = $('<div id="dlgConfirm"><div class="spacer2"></div><div id="dlgConfirmMsg"></div></div>').dialog(opt);
|
||||
}
|
||||
var btns = [];
|
||||
let btns = {};
|
||||
btns[sbm.lbl.yes] = function () { $(this).dialog('close'); if (onOk) onOk(); };
|
||||
btns[sbm.lbl.no] = function () { $(this).dialog('close'); if (onCancel) onCancel(); };
|
||||
sbm.$dlg.confirm.dialog('option', { title: title || sbm.dlg.title.confirm, buttons: btns });
|
||||
|
||||
Reference in New Issue
Block a user