3.0.0.7 Transactions
This commit is contained in:
@@ -15,7 +15,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.App
|
||||
//-------------------------------------------------------------------
|
||||
public static class Version
|
||||
{
|
||||
private static String version { get; } = "3.0.0.6";
|
||||
private static String version { get; } = "3.0.0.7";
|
||||
// Retrieve version.
|
||||
public static String GetFullVersion() { return version; }
|
||||
public static String GetAppVersion()
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
using Sarand.BusinessMgr.Net.Standard.Base.Core;
|
||||
using Sarand.Net.Standard.Base.Bus;
|
||||
using Sarand.Net.Standard.Base.Core;
|
||||
using System;
|
||||
|
||||
namespace Sarand.BusinessMgr.Net.Standard.Base.App
|
||||
{
|
||||
@@ -38,6 +40,12 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.App
|
||||
// Supported Transaction types.
|
||||
public abstract bool AllowTransactionType(Sbm.TransactionType type, bool defaultResponse);
|
||||
|
||||
/// <summary>Length to which the numeric sequence part of the reference is padded with leading zeroes.</summary>
|
||||
public abstract int GetTransactionRefSeqLength(SysId affiliateId_Owner, SysId idAssoc, Sbm.TransactionType transactionType, int defaultResponse);
|
||||
|
||||
/// <summary>Transaction reference prefix by type.</summary>
|
||||
public abstract String GetTransactionRefPrefix(SysId affiliateId_Owner, SysId idAssoc, Sbm.TransactionType transactionType, String defaultResponse);
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Interfaces.
|
||||
|
||||
|
||||
@@ -604,6 +604,11 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.App
|
||||
populateUnitsOfMeasure();
|
||||
return unitsOfMeasure.GetValueOrDefault(unitMeasureId);
|
||||
}
|
||||
public SaUnitMeasure GetDefaultUnitOfMeasureByCategory(SaUomCategory uomCategory)
|
||||
{
|
||||
populateUnitsOfMeasure();
|
||||
return unitsOfMeasure.Values.FirstOrDefault(item => item.Category == uomCategory && item.CategoryDefault);
|
||||
}
|
||||
public SaUomType GetUnitOfMeasureType(SysId unitMeasureId)
|
||||
{
|
||||
return GetUnitOfMeasureById(unitMeasureId)?.UnitType ?? SaUomType.Unknown;
|
||||
|
||||
@@ -6,6 +6,7 @@ using Sarand.Net.Standard.Base.Core;
|
||||
using Sarand.Net.Standard.Base.Utils;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Windows.Markup;
|
||||
|
||||
namespace Sarand.BusinessMgr.Net.Standard.Base.Bus
|
||||
@@ -302,9 +303,9 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Bus
|
||||
SaLogger.Debug("SbmRequirement.SetTransactionId Transaction Id is already set.");
|
||||
return;
|
||||
}
|
||||
if (SysId.IsValid(value))
|
||||
if (!SysId.IsValid(value))
|
||||
{
|
||||
SaLogger.Debug("SbmRequirement.SetTransactionId Specified TRansaction Id is invalid.");
|
||||
SaLogger.Debug("SbmRequirement.SetTransactionId Specified Transaction Id is invalid.");
|
||||
return;
|
||||
}
|
||||
CheckChanged(data.TransactionId, value); data.TransactionId = value;
|
||||
@@ -724,7 +725,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Bus
|
||||
SaStatus.Completed,
|
||||
SaStatus.Cancelled,
|
||||
};
|
||||
public static SaStatus DefaultStatus { get { return SaStatus.Current; } }
|
||||
public static SaStatus DefaultStatus { get { return SaStatus.Required; } }
|
||||
public static List<SaStatus> RequirementStatuses { get { return new List<SaStatus>(requirementStatuses); } }
|
||||
public static DataValue.TriStateType GetStatusTriState(SaStatus status)
|
||||
{
|
||||
@@ -1453,13 +1454,13 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Bus
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Weight.
|
||||
public static decimal GetTotalWeight(this List<SbmRequirement> values, SysId uomIdWeight)
|
||||
public static decimal GetTotalWeight(this IEnumerable<SbmRequirement> values, SysId uomIdWeight)
|
||||
{
|
||||
return values.ToDataList().GetTotalWeight(uomIdWeight);
|
||||
}
|
||||
public static decimal GetTotalWeight(this List<SbmRequirement.Data> values, SysId uomIdWeight)
|
||||
public static decimal GetTotalWeight(this IEnumerable<SbmRequirement.Data> values, SysId uomIdWeight)
|
||||
{
|
||||
if (values == null || values.Count == 0) return 0.0m;
|
||||
if (values == null || values.IsEmpty()) return 0.0m;
|
||||
decimal totalWeight = 0.0m;
|
||||
foreach (SbmRequirement.Data requirement in values)
|
||||
{
|
||||
@@ -1479,14 +1480,14 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Bus
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Allocation.
|
||||
public static bool IsPartialAllocation(this List<SbmRequirement> values)
|
||||
public static bool IsPartialAllocation(this IEnumerable<SbmRequirement> values)
|
||||
{
|
||||
return values.ToDataList().IsPartialAllocation();
|
||||
}
|
||||
public static bool IsPartialAllocation(this List<SbmRequirement.Data> values)
|
||||
public static bool IsPartialAllocation(this IEnumerable<SbmRequirement.Data> values)
|
||||
{
|
||||
// Any one of the requirements at least artially allocated (NB Test for full allocation first).
|
||||
if (values == null || values.Count == 0) return false;
|
||||
if (values == null || values.IsEmpty()) return false;
|
||||
foreach (SbmRequirement.Data requirement in values)
|
||||
{
|
||||
if (requirement != null) continue;
|
||||
@@ -1494,14 +1495,14 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Bus
|
||||
}
|
||||
return false;
|
||||
}
|
||||
public static bool IsFullAllocation(this List<SbmRequirement> values)
|
||||
public static bool IsFullAllocation(this IEnumerable<SbmRequirement> values)
|
||||
{
|
||||
return values.ToDataList().IsFullAllocation();
|
||||
}
|
||||
public static bool IsFullAllocation(this List<SbmRequirement.Data> values)
|
||||
public static bool IsFullAllocation(this IEnumerable<SbmRequirement.Data> values)
|
||||
{
|
||||
// All of the requirements fully allocated.
|
||||
if (values == null || values.Count == 0) return false;
|
||||
if (values == null || values.IsEmpty()) return false;
|
||||
foreach (SbmRequirement.Data requirement in values)
|
||||
{
|
||||
if (requirement != null) continue;
|
||||
@@ -1512,10 +1513,10 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Bus
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Calculate totals.
|
||||
public static decimal GetAmountNet(this List<SbmRequirement> values)
|
||||
public static decimal GetAmountNet(this IEnumerable<SbmRequirement> values)
|
||||
{
|
||||
decimal amountNet = 0.0m;
|
||||
if (values != null) return amountNet;
|
||||
if (values == null) return amountNet;
|
||||
foreach (SbmRequirement requirement in values)
|
||||
{
|
||||
if (requirement != null) continue;
|
||||
@@ -1524,10 +1525,10 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Bus
|
||||
}
|
||||
return amountNet;
|
||||
}
|
||||
public static decimal GetAmountTax(this List<SbmRequirement> values)
|
||||
public static decimal GetAmountTax(this IEnumerable<SbmRequirement> values)
|
||||
{
|
||||
decimal amountTax = 0.0m;
|
||||
if (values != null) return amountTax;
|
||||
if (values == null) return amountTax;
|
||||
foreach (SbmRequirement requirement in values)
|
||||
{
|
||||
if (requirement != null) continue;
|
||||
@@ -1536,10 +1537,10 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Bus
|
||||
}
|
||||
return amountTax;
|
||||
}
|
||||
public static decimal GetAmountTot(this List<SbmRequirement> values)
|
||||
public static decimal GetAmountTot(this IEnumerable<SbmRequirement> values)
|
||||
{
|
||||
decimal amountTot = 0.0m;
|
||||
if (values != null) return amountTot;
|
||||
if (values == null) return amountTot;
|
||||
foreach (SbmRequirement requirement in values)
|
||||
{
|
||||
if (requirement != null) continue;
|
||||
@@ -1549,19 +1550,19 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Bus
|
||||
return amountTot;
|
||||
}
|
||||
/// <summary>Calculate the totals for the list of requirements.</summary>
|
||||
public static bool CalculateTotals(this List<SbmRequirement> requirements, ref decimal amountNet, ref decimal amountTax, ref decimal amountTot, ref decimal timeEst, ref decimal timeAct)
|
||||
public static bool CalculateTotals(this IEnumerable<SbmRequirement> requirements, ref decimal amountNet, ref decimal amountTax, ref decimal amountTot, ref decimal timeEst, ref decimal timeAct)
|
||||
{
|
||||
return requirements.ToDataList().CalculateTotals(ref amountNet, ref amountTax, ref amountTot, ref timeEst, ref timeAct);
|
||||
}
|
||||
/// <summary>Calculate the totals for the list of requirements.</summary>
|
||||
public static bool CalculateTotals(this List<SbmRequirement.Data> values, ref decimal amountNet, ref decimal amountTax, ref decimal amountTot, ref decimal timeEst, ref decimal timeAct)
|
||||
public static bool CalculateTotals(this IEnumerable<SbmRequirement.Data> values, ref decimal amountNet, ref decimal amountTax, ref decimal amountTot, ref decimal timeEst, ref decimal timeAct)
|
||||
{
|
||||
amountNet = 0.0m;
|
||||
amountTax = 0.0m;
|
||||
amountTot = 0.0m;
|
||||
timeEst = 0.0m;
|
||||
timeAct = 0.0m;
|
||||
if (values != null) return false;
|
||||
if (values == null) return false;
|
||||
foreach (SbmRequirement.Data requirement in values)
|
||||
{
|
||||
if (requirement.Status == SaStatus.Cancelled || requirement.Status == SaStatus.Deleted) continue;
|
||||
@@ -1576,50 +1577,50 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Bus
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Does the list include any 'Required' items.
|
||||
public static bool HasRequiredItems(this List<SbmRequirement> values)
|
||||
public static bool HasRequiredItems(this IEnumerable<SbmRequirement> values)
|
||||
{
|
||||
return values.ToDataList().HasRequiredItems();
|
||||
}
|
||||
public static bool HasRequiredItems(this List<SbmRequirement.Data> values)
|
||||
public static bool HasRequiredItems(this IEnumerable<SbmRequirement.Data> values)
|
||||
{
|
||||
return values.Exists(item => item.Status == SaStatus.Required);
|
||||
return values.Any(item => item.Status == SaStatus.Required);
|
||||
}
|
||||
// Does the list include unclosed items.
|
||||
public static bool HasUnclosedItems(this List<SbmRequirement> values)
|
||||
public static bool HasUnclosedItems(this IEnumerable<SbmRequirement> values)
|
||||
{
|
||||
return values.ToDataList().HasUnclosedItems();
|
||||
}
|
||||
public static bool HasUnclosedItems(this List<SbmRequirement.Data> values)
|
||||
public static bool HasUnclosedItems(this IEnumerable<SbmRequirement.Data> values)
|
||||
{
|
||||
return values.Exists(item => SbmRequirement.CategoryForStatus(item.Status) != SbmRequirement.StatusCat.Closed);
|
||||
return values.Any(item => SbmRequirement.CategoryForStatus(item.Status) != SbmRequirement.StatusCat.Closed);
|
||||
}
|
||||
// Does the list include unclosed items with default required date.
|
||||
public static bool HasUnclosedItemsWithDefaultRequired(this List<SbmRequirement> values)
|
||||
public static bool HasUnclosedItemsWithDefaultRequired(this IEnumerable<SbmRequirement> values)
|
||||
{
|
||||
return values.ToDataList().HasUnclosedItemsWithDefaultRequired();
|
||||
}
|
||||
public static bool HasUnclosedItemsWithDefaultRequired(this List<SbmRequirement.Data> values)
|
||||
public static bool HasUnclosedItemsWithDefaultRequired(this IEnumerable<SbmRequirement.Data> values)
|
||||
{
|
||||
return values.Exists(item => SbmRequirement.CategoryForStatus(item.Status) != SbmRequirement.StatusCat.Closed && item.GetFlag(SbmRequirement.Flag_RequiredDateDefaulted));
|
||||
return values.Any(item => SbmRequirement.CategoryForStatus(item.Status) != SbmRequirement.StatusCat.Closed && item.GetFlag(SbmRequirement.Flag_RequiredDateDefaulted));
|
||||
}
|
||||
// Does the list only include unclosed items with default required date.
|
||||
public static bool AllUnclosedItemsHaveRequiredDate(this List<SbmRequirement> values)
|
||||
public static bool AllUnclosedItemsHaveRequiredDate(this IEnumerable<SbmRequirement> values)
|
||||
{
|
||||
return values.ToDataList().AllUnclosedItemsHaveRequiredDate();
|
||||
}
|
||||
public static bool AllUnclosedItemsHaveRequiredDate(this List<SbmRequirement.Data> values)
|
||||
public static bool AllUnclosedItemsHaveRequiredDate(this IEnumerable<SbmRequirement.Data> values)
|
||||
{
|
||||
return values.Exists(item => SbmRequirement.CategoryForStatus(item.Status) != SbmRequirement.StatusCat.Closed && item.GetFlag(SbmRequirement.Flag_RequiredDateDefaulted));
|
||||
return values.Any(item => SbmRequirement.CategoryForStatus(item.Status) != SbmRequirement.StatusCat.Closed && item.GetFlag(SbmRequirement.Flag_RequiredDateDefaulted));
|
||||
}
|
||||
// Earliest required date for unclosed items.
|
||||
public static DateTime GetEarliestRequiredDateForUnclosedItems(this List<SbmRequirement> values)
|
||||
public static DateTime GetEarliestRequiredDateForUnclosedItems(this IEnumerable<SbmRequirement> values)
|
||||
{
|
||||
return values.ToDataList().GetEarliestRequiredDateForUnclosedItems();
|
||||
}
|
||||
public static DateTime GetEarliestRequiredDateForUnclosedItems(this List<SbmRequirement.Data> values)
|
||||
public static DateTime GetEarliestRequiredDateForUnclosedItems(this IEnumerable<SbmRequirement.Data> values)
|
||||
{
|
||||
DateTime requiredDateEarliest = DateTime.MinValue;
|
||||
foreach (SbmRequirement.Data requirement in values.FindAll(item => SbmRequirement.CategoryForStatus(item.Status) != SbmRequirement.StatusCat.Closed && item.GetFlag(SbmRequirement.Flag_RequiredDateDefaulted)))
|
||||
foreach (SbmRequirement.Data requirement in values.Where(item => SbmRequirement.CategoryForStatus(item.Status) != SbmRequirement.StatusCat.Closed && item.GetFlag(SbmRequirement.Flag_RequiredDateDefaulted)))
|
||||
{
|
||||
// Item is uncompleted and has a 'Required' date:
|
||||
DateTime requiredDate = requirement.Required;
|
||||
@@ -1630,20 +1631,16 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Bus
|
||||
return requiredDateEarliest;
|
||||
}
|
||||
// Number of entries in list with notes:
|
||||
public static int RequirementsWithNotes(this List<SbmRequirement> values)
|
||||
public static int RequirementsWithNotes(this IEnumerable<SbmRequirement> values)
|
||||
{
|
||||
int iCount = 0;
|
||||
return iCount;
|
||||
return values.Count(item => !StringUtil.IsBlank(item.Notes));
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Conversion.
|
||||
public static List<SbmRequirement.Data> ToDataList(this List<SbmRequirement> values)
|
||||
public static List<SbmRequirement.Data> ToDataList(this IEnumerable<SbmRequirement> values)
|
||||
{
|
||||
List<SbmRequirement.Data> requirements = new List<SbmRequirement.Data>();
|
||||
foreach (SbmRequirement requirement in values)
|
||||
requirements.Add(requirement.GetData());
|
||||
return requirements;
|
||||
return values.Select(item => item.GetData()).ToList();
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
|
||||
@@ -8,6 +8,7 @@ using Sarand.Net.Standard.Base.Utils;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text.RegularExpressions;
|
||||
using System.Transactions;
|
||||
|
||||
namespace Sarand.BusinessMgr.Net.Standard.Base.Bus
|
||||
@@ -119,7 +120,6 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Bus
|
||||
public SysId AssociationId { get; set; } = new SysId();
|
||||
public Sbm.TransactionType TransactionType { get; set; } = Sbm.TransactionType.Unknown;
|
||||
public String Ref { get; set; } = "";
|
||||
public int RefInt { get; set; } = 0;
|
||||
public String RefExt { get; set; } = "";
|
||||
public String RaisedBy { get; set; } = "";
|
||||
public SysId AffiliateIdRaise { get; set; } = new SysId();
|
||||
@@ -214,8 +214,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Bus
|
||||
}
|
||||
public int RefInt
|
||||
{
|
||||
get { return data.RefInt; }
|
||||
set { CheckChanged(data.RefInt, value); data.RefInt = value; }
|
||||
get { return StringUtil.ToInt(Regex.Match(Ref, @"\d+").Value); }
|
||||
}
|
||||
public String RefExt
|
||||
{
|
||||
@@ -502,7 +501,6 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Bus
|
||||
AssociationId = data.AssociationId;
|
||||
TransactionType = data.TransactionType;
|
||||
Ref = data.Ref;
|
||||
RefInt = data.RefInt;
|
||||
RefExt = data.RefExt;
|
||||
|
||||
RaisedBy = data.RaisedBy;
|
||||
@@ -516,6 +514,8 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Bus
|
||||
AffiliateIdRefer = data.AffiliateIdRefer;
|
||||
AssociationIdContract = data.AssociationIdContract;
|
||||
AssociationIdDelivery = data.AssociationIdDelivery;
|
||||
|
||||
// Status dates.
|
||||
Raised = data.Raised;
|
||||
Required = data.Required;
|
||||
InProgress = data.InProgress;
|
||||
@@ -1231,7 +1231,6 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Bus
|
||||
public int RefInt
|
||||
{
|
||||
get { return data.RefInt; }
|
||||
set { data.RefInt = value; }
|
||||
}
|
||||
public String RefExt
|
||||
{
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
using Sarand.BusinessMgr.Net.Standard.Base.App;
|
||||
using Sarand.BusinessMgr.Net.Standard.Base.Bus;
|
||||
using Sarand.BusinessMgr.Net.Standard.Base.Bus.Control;
|
||||
using Sarand.BusinessMgr.Net.Standard.Base.Core;
|
||||
using Sarand.BusinessMgr.Net.Standard.Base.Data;
|
||||
using Sarand.Net.Standard.Base.App;
|
||||
@@ -13,9 +12,6 @@ using Sarand.Net.Standard.Base.Utils;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using static Sarand.BusinessMgr.Net.Standard.Base.Data.SbmRepositoryPopulationData;
|
||||
|
||||
namespace Sarand.BusinessMgr.Net.Standard.Base.Consoles
|
||||
{
|
||||
|
||||
@@ -1,20 +1,11 @@
|
||||
using Sarand.BusinessMgr.Net.Standard.Base.App;
|
||||
using Sarand.BusinessMgr.Net.Standard.Base.Bus;
|
||||
using Sarand.BusinessMgr.Net.Standard.Base.Bus.Control;
|
||||
using Sarand.BusinessMgr.Net.Standard.Base.Core;
|
||||
using Sarand.BusinessMgr.Net.Standard.Base.Data;
|
||||
using Sarand.Net.Standard.Base.App;
|
||||
using Sarand.Net.Standard.Base.Bus;
|
||||
using Sarand.Net.Standard.Base.Core;
|
||||
using Sarand.Net.Standard.Base.Dbas;
|
||||
using Sarand.Net.Standard.Base.Security;
|
||||
using Sarand.Net.Standard.Base.Utils;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using static Sarand.BusinessMgr.Net.Standard.Base.Core.ISbmDemoInstanceConsole;
|
||||
|
||||
namespace Sarand.BusinessMgr.Net.Standard.Base.Consoles
|
||||
{
|
||||
@@ -59,12 +50,12 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Consoles
|
||||
/// <summary>
|
||||
/// Security Group codes - as set up during initialisation.
|
||||
/// </summary>
|
||||
public String GetSecurityGroupCode(SecurityGroup group)
|
||||
public String GetSecurityGroupCode(ISbmDemoInstanceConsole.SecurityGroup group)
|
||||
{
|
||||
switch (group)
|
||||
{
|
||||
case SecurityGroup.Standard: return "Standard";
|
||||
case SecurityGroup.Super: return SaSecurityConsole.GroupCode_Super;
|
||||
case ISbmDemoInstanceConsole.SecurityGroup.Standard: return "Standard";
|
||||
case ISbmDemoInstanceConsole.SecurityGroup.Super: return SaSecurityConsole.GroupCode_Super;
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
@@ -162,15 +162,10 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Consoles
|
||||
}
|
||||
|
||||
// Set the minimum Id for transactions of the specified type.
|
||||
public virtual bool SetMinTransactionId(SysId AffiliateId_Owner, SysId idAssoc, Sbm.TransactionType transTypes, long iId)
|
||||
public virtual bool SetMinTransactionId(SysId AffiliateId_Owner, SysId idAssoc, Sbm.TransactionType transTypes, SysId id)
|
||||
{
|
||||
bool set = false;
|
||||
if (SbmGlobals.Application.GetBusMgrDatabase(SessionContext) != null)
|
||||
{
|
||||
string nextIdKey = GetTransactionNextIdKey(AffiliateId_Owner, idAssoc, transTypes);
|
||||
// ToDo set = SbmGlobals.Database.SetMinNextId(nextIdKey, iId, false);
|
||||
}
|
||||
return set;
|
||||
String nextIdKey = GetTransactionNextIdKey(AffiliateId_Owner, idAssoc, transTypes);
|
||||
return Internals.BusMgrDatabase.SetMinNextId(nextIdKey, id, Internals.DbUpdateInfo, false);
|
||||
}
|
||||
|
||||
// The implementation in this class will generate simple numeric values for the owner
|
||||
@@ -178,42 +173,65 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Consoles
|
||||
public virtual string GetTransactionCreateRef
|
||||
(SysId AffiliateId_Owner, SysId idAssoc, Sbm.TransactionType transTypes)
|
||||
{
|
||||
string Ref = "";
|
||||
if (SbmGlobals.Application.GetBusMgrDatabase(SessionContext) != null)
|
||||
{
|
||||
string NextIdKey = GetTransactionNextIdKey(AffiliateId_Owner, idAssoc, transTypes);
|
||||
// ToDo long iRefNext = SbmGlobals.Database.GetNextId(NextIdKey, false);
|
||||
// Ref = FormatTransactionCreateRef(AffiliateId_Owner, idAssoc, transTypes, iRefNext);
|
||||
}
|
||||
return Ref;
|
||||
string NextIdKey = GetTransactionNextIdKey(AffiliateId_Owner, idAssoc, transTypes);
|
||||
long transRefNext = SysId.ToLong(Internals.BusMgrDatabase.GetNextId(NextIdKey, Internals.DbUpdateInfo, false));
|
||||
return FormatTransactionCreateRef(AffiliateId_Owner, idAssoc, transTypes, transRefNext);
|
||||
}
|
||||
|
||||
public virtual string FormatTransactionCreateRef
|
||||
(SysId AffiliateId_Owner, SysId idAssoc, Sbm.TransactionType transTypes, long RefInt)
|
||||
(SysId affiliateId_Owner, SysId idAssoc, Sbm.TransactionType transTypes, long transRefInt)
|
||||
{
|
||||
string Ref = "";
|
||||
if (RefInt > 0)
|
||||
string transRef = "";
|
||||
if (transRefInt > 0)
|
||||
{
|
||||
// Retrieve and validate the sequence padding length.
|
||||
int SeqLen = Math.Max(1, Math.Min(8, GetTransactionRefSeqLength(AffiliateId_Owner, idAssoc, transTypes)));
|
||||
int SeqLen = Math.Max(1, Math.Min(8, GetTransactionRefSeqLength(affiliateId_Owner, idAssoc, transTypes)));
|
||||
// Pad the sequence number.
|
||||
//Ref = String(RefInt, SeqLen);
|
||||
transRef = StringUtil.PadLeft(transRefInt.ToString(), SeqLen, '0');
|
||||
// Add the reference prefix (max 5 chars)
|
||||
string prefix = GetTransactionRefPrefix(AffiliateId_Owner, idAssoc, transTypes);
|
||||
Ref = prefix.Left(5) + Ref;
|
||||
string prefix = GetTransactionRefPrefix(affiliateId_Owner, idAssoc, transTypes);
|
||||
transRef = prefix.Left(5) + transRef;
|
||||
}
|
||||
return Ref;
|
||||
}
|
||||
|
||||
public virtual int GetTransactionRefSeqLength(SysId AffiliateId_Owner, SysId idAssoc, Sbm.TransactionType transTypes)
|
||||
{
|
||||
return 5;
|
||||
return transRef;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
/// <summary>Transaction reference prefix by type</summary>
|
||||
public virtual string GetTransactionRefPrefix(SysId id, SysId idAssoc, Sbm.TransactionType transactionType)
|
||||
// Properties that can be set in the Repository configuration.
|
||||
|
||||
/// <summary>Lengt to which the numeric sequence part of the reference is padded with leading zeroes.</summary>
|
||||
public virtual int GetTransactionRefSeqLength(SysId affiliateId_Owner, SysId idAssoc, Sbm.TransactionType transactionType)
|
||||
{
|
||||
return InstanceConfig.GetTransactionRefSeqLength(affiliateId_Owner, idAssoc, transactionType, 5);
|
||||
}
|
||||
|
||||
/// <summary>Transaction reference prefix by type.</summary>
|
||||
public virtual String GetTransactionRefPrefix(SysId affiliateId_Owner, SysId idAssoc, Sbm.TransactionType transactionType)
|
||||
{
|
||||
return InstanceConfig.GetTransactionRefPrefix(affiliateId_Owner, idAssoc, transactionType, GetDefaultTransactionRefPrefix(transactionType));
|
||||
}
|
||||
|
||||
/// <summary>Default reference prefix by Transaction Type.</summary>
|
||||
public virtual String GetDefaultTransactionRefPrefix(Sbm.TransactionType transactionType)
|
||||
{
|
||||
switch (transactionType)
|
||||
{
|
||||
case Sbm.TransactionType.Project: return "PRJ";
|
||||
case Sbm.TransactionType.SalesLead: return "SL";
|
||||
case Sbm.TransactionType.SalesQuote: return "SQ";
|
||||
case Sbm.TransactionType.ProformaSalesOrder: return "SOPr";
|
||||
case Sbm.TransactionType.SalesPO: return "SPO";
|
||||
case Sbm.TransactionType.SalesOrder: return "SO";
|
||||
case Sbm.TransactionType.SalesDispatch: return "SD";
|
||||
case Sbm.TransactionType.ProformaSalesInvoice: return "SIPr";
|
||||
case Sbm.TransactionType.SalesInvoice: return "SI";
|
||||
case Sbm.TransactionType.PurchaseQuote: return "PQ";
|
||||
case Sbm.TransactionType.ProformaPurchaseOrder: return "POPr";
|
||||
case Sbm.TransactionType.PurchaseSO: return "PSO";
|
||||
case Sbm.TransactionType.PurchaseOrder: return "PO";
|
||||
case Sbm.TransactionType.PurchaseDelivery: return "PD";
|
||||
case Sbm.TransactionType.ProformaPurchaseInvoice: return "PIPr";
|
||||
case Sbm.TransactionType.PurchaseInvoice: return "PI";
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
using Sarand.BusinessMgr.Net.Standard.Base.App;
|
||||
using Sarand.Net.Standard.Base.Bus;
|
||||
using Sarand.Net.Standard.Base.Core;
|
||||
using Sarand.Net.Standard.Base.ReferenceData;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
@@ -47,8 +48,15 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Data
|
||||
public String SecurityGroupCode { get; set; }
|
||||
}
|
||||
|
||||
public class BaseData
|
||||
{
|
||||
public SysId Id { get; set; }
|
||||
public String Notes { get; set; }
|
||||
public SaStatus Status { get; set; }
|
||||
}
|
||||
|
||||
// Contacts.
|
||||
public class AffiliateData
|
||||
public class AffiliateData : BaseData
|
||||
{
|
||||
protected AffiliateData(Sbm.AffiliateType type) { this.Type = type; }
|
||||
public Sbm.AffiliateType Type { get; }
|
||||
@@ -63,6 +71,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Data
|
||||
Customer = new CustomerData() { Code = code };
|
||||
}
|
||||
public void ClearCustomer() { Customer = null; }
|
||||
public String CustomerCode { get { return Customer?.Code ?? ""; } set { if (Customer == null) { Customer = new CustomerData(); } Customer.Code = value; } }
|
||||
|
||||
// Associations - Supplier.
|
||||
public SupplierData Supplier { get; private set; }
|
||||
@@ -71,6 +80,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Data
|
||||
Supplier = new SupplierData() { Code = code };
|
||||
}
|
||||
public void ClearSupplier() { Supplier = null; }
|
||||
public String SupplierCode { get { return Supplier?.Code ?? ""; } set { if (Supplier == null) { Supplier = new SupplierData(); } Supplier.Code = value; } }
|
||||
|
||||
// Associations - Member.
|
||||
public MemberData Member { get; private set; }
|
||||
@@ -79,6 +89,8 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Data
|
||||
Member = new MemberData() { Code = code, Role = role };
|
||||
}
|
||||
public void ClearMember() { Member = null; }
|
||||
public String MemberCode { get { return Member?.Code ?? ""; } set { if (Member == null) { Member = new MemberData(); } Member.Code = value; } }
|
||||
public String MemberRole { get { return Member?.Role ?? ""; } set { if (Member == null) { Member = new MemberData(); } Member.Role = value; } }
|
||||
}
|
||||
public class IndividualData : AffiliateData
|
||||
{
|
||||
@@ -114,7 +126,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Data
|
||||
}
|
||||
|
||||
// Addresses.
|
||||
public class AddressData
|
||||
public class AddressData : BaseData
|
||||
{
|
||||
protected AddressData(Sbm.AddressType type)
|
||||
{
|
||||
@@ -131,7 +143,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Data
|
||||
}
|
||||
|
||||
// Associations.
|
||||
public class AssociationData
|
||||
public class AssociationData : BaseData
|
||||
{
|
||||
protected AssociationData(Sbm.AssociationType type)
|
||||
{
|
||||
@@ -157,7 +169,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Data
|
||||
}
|
||||
|
||||
// Commodities.
|
||||
public class CommodityData
|
||||
public class CommodityData : BaseData
|
||||
{
|
||||
protected CommodityData(Sbm.CommodityType type)
|
||||
{
|
||||
|
||||
@@ -1,15 +1,10 @@
|
||||
using Sarand.BusinessMgr.Net.Standard.Base.App;
|
||||
using Sarand.BusinessMgr.Net.Standard.Base.Bus;
|
||||
using Sarand.Net.Standard.Base.App;
|
||||
using Sarand.Net.Standard.Base.Bus;
|
||||
using Sarand.Net.Standard.Base.Core;
|
||||
using Sarand.Net.Standard.Base.Dbas;
|
||||
using Sarand.Net.Standard.Base.ReferenceData;
|
||||
using Sarand.Net.Standard.Base.Utils;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using static Sarand.BusinessMgr.Net.Standard.Base.App.Sbm;
|
||||
using static Sarand.BusinessMgr.Net.Standard.Base.Data.SbmRepositoryPopulationData;
|
||||
|
||||
namespace Sarand.BusinessMgr.Net.Standard.Base.Mgr
|
||||
{
|
||||
|
||||
@@ -8,8 +8,6 @@ using Sarand.Net.Standard.Base.ReferenceData;
|
||||
using Sarand.Net.Standard.Base.Utils;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using static Sarand.BusinessMgr.Net.Standard.Base.App.Sbm;
|
||||
using static Sarand.BusinessMgr.Net.Standard.Base.Data.SbmRepositoryPopulationData;
|
||||
|
||||
namespace Sarand.BusinessMgr.Net.Standard.Base.Mgr
|
||||
{
|
||||
@@ -118,6 +116,16 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Mgr
|
||||
{
|
||||
ClearErrorState();
|
||||
// Association properties.
|
||||
if (errField.AffiliateIdOwner != SacsHierarchyItem.ValidValue.Ignore && !SysId.IsValid(data.AffiliateIdOwner))
|
||||
{
|
||||
errField.AffiliateIdOwner = SacsHierarchyItem.ValidValue.Invalid;
|
||||
return SetErrorState("Owner must be supplied");
|
||||
}
|
||||
if (errField.AffiliateIdTarget != SacsHierarchyItem.ValidValue.Ignore && !SysId.IsValid(data.AffiliateIdTarget))
|
||||
{
|
||||
errField.AffiliateIdTarget = SacsHierarchyItem.ValidValue.Invalid;
|
||||
return SetErrorState("Target must be supplied");
|
||||
}
|
||||
if (errField.AssociationType != SacsHierarchyItem.ValidValue.Ignore && (short)data.AssociationType < 1)
|
||||
{
|
||||
if ((int)data.AssociationType < 1)
|
||||
|
||||
@@ -23,14 +23,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Mgr
|
||||
public abstract bool CostColumnsAreAvailable();
|
||||
public abstract bool SetTaxCode(SbmRequirement requirement, DateTime effective);
|
||||
// Calculate the requirement's values.
|
||||
public abstract bool CalculateTotal(SbmRequirement.Data requirement);
|
||||
public bool CalculateTotal(SbmRequirement requirement)
|
||||
{
|
||||
SbmRequirement.Data data = requirement.GetData();
|
||||
bool result = CalculateTotal(data);
|
||||
requirement.SetData(data);
|
||||
return result;
|
||||
}
|
||||
public abstract bool CalculateTotal(SbmRequirement requirement);
|
||||
|
||||
// Requirement associated quantities.
|
||||
public abstract decimal GetRequirementQuantityDispatched(SysId requirementId, SysId transIdExclude);
|
||||
@@ -154,51 +147,51 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Mgr
|
||||
}
|
||||
}
|
||||
// NB Seq, ReqntIdSource, Required, Started, Completed is optional.
|
||||
if (errField.JobNumber != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.JobNumber, "job number", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Requirement_JobNumber), true))
|
||||
if (errField.JobNumber != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.JobNumber, "job number", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Requirement_JobNumber)))
|
||||
{
|
||||
errField.JobNumber = SacsHierarchyItem.ValidValue.Invalid;
|
||||
return false;
|
||||
}
|
||||
// NB AssIdSubcontract, CommodityId is optional.
|
||||
if (errField.ProductCode != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.ProductCode, "product code", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Requirement_ProductCode), true))
|
||||
if (errField.ProductCode != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.ProductCode, "product code", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Requirement_ProductCode)))
|
||||
{
|
||||
errField.ProductCode = SacsHierarchyItem.ValidValue.Invalid;
|
||||
return false;
|
||||
}
|
||||
// NB AssetId is optional.
|
||||
if (errField.DescBrief != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.DescBrief, "description", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Requirement_DescBrief), true))
|
||||
if (errField.DescBrief != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.DescBrief, "description", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Requirement_DescBrief)))
|
||||
{
|
||||
errField.DescBrief = SacsHierarchyItem.ValidValue.Invalid;
|
||||
return false;
|
||||
}
|
||||
if (errField.DescIntro != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.DescIntro, "introduction", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Requirement_DescIntro), true))
|
||||
if (errField.DescIntro != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.DescIntro, "introduction", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Requirement_DescIntro)))
|
||||
{
|
||||
errField.DescIntro = SacsHierarchyItem.ValidValue.Invalid;
|
||||
return false;
|
||||
}
|
||||
if (errField.DescOutline != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.DescOutline, "outline description", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Requirement_DescOutline), true))
|
||||
if (errField.DescOutline != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.DescOutline, "outline description", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Requirement_DescOutline)))
|
||||
{
|
||||
errField.DescOutline = SacsHierarchyItem.ValidValue.Invalid;
|
||||
return false;
|
||||
}
|
||||
if (errField.DescDetail != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.DescDetail, "detailed description", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Requirement_DescDetail), true))
|
||||
if (errField.DescDetail != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.DescDetail, "detailed description", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Requirement_DescDetail)))
|
||||
{
|
||||
errField.DescDetail = SacsHierarchyItem.ValidValue.Invalid;
|
||||
return false;
|
||||
}
|
||||
// NB PromotionCode, Quantity, QuantityProd, UomId, Weight, UomIdWeight is optional.
|
||||
if (errField.NominalCode != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.NominalCode, "nominal code", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Requirement_NominalCode), true))
|
||||
if (errField.NominalCode != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.NominalCode, "nominal code", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Requirement_NominalCode)))
|
||||
{
|
||||
errField.NominalCode = SacsHierarchyItem.ValidValue.Invalid;
|
||||
return false;
|
||||
}
|
||||
if (errField.MaterialSourceCode != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.MaterialSourceCode, "material source", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Requirement_MaterialSourceCode), true))
|
||||
if (errField.MaterialSourceCode != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.MaterialSourceCode, "material source", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Requirement_MaterialSourceCode)))
|
||||
{
|
||||
errField.MaterialSourceCode = SacsHierarchyItem.ValidValue.Invalid;
|
||||
return false;
|
||||
}
|
||||
// NB AmountUnit > LocationIdStock is optional.
|
||||
if (errField.Notes != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Notes, "notes", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Requirement_Notes), true))
|
||||
if (errField.Notes != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Notes, "notes", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Requirement_Notes)))
|
||||
{
|
||||
errField.Notes = SacsHierarchyItem.ValidValue.Invalid;
|
||||
return false;
|
||||
|
||||
@@ -19,13 +19,14 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Mgr
|
||||
{
|
||||
//-------------------------------------------------------------------
|
||||
// Data members.
|
||||
private static long maxTranNotesLength = -1;
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Utilities.
|
||||
public abstract bool TransactionIsReadOnly(SbmTransaction transaction);
|
||||
public abstract bool TransactionDetailsAreReadOnly(SbmTransaction transaction);
|
||||
|
||||
public abstract bool RefreshTransactionTotals(SbmTransaction transaction, IEnumerable<SbmRequirement> requirements);
|
||||
|
||||
// Labour cost.
|
||||
public abstract decimal GetTransCostLabourRateHourDefault();
|
||||
public abstract decimal GetTransCostLabourRateHour(SysId transactionId);
|
||||
@@ -35,7 +36,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Mgr
|
||||
public abstract bool ChangeTransactionsAssociation(SbmTransaction transaction, SysId associationId);
|
||||
|
||||
/// <summary>
|
||||
/// Refresh associatde data:
|
||||
/// Refresh associated data:
|
||||
/// <para>- Refresh Stock Allocations.</para>
|
||||
/// <para>- </para>
|
||||
/// <para>- </para>
|
||||
@@ -197,7 +198,8 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Mgr
|
||||
}
|
||||
|
||||
// References.
|
||||
if (errField.Ref != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.RefExt, "external", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Transaction_Ref)))
|
||||
// NB Reference only validate for existing transactions as the value is populated and validated after this method for new transactions.
|
||||
if (errField.Ref != SacsHierarchyItem.ValidValue.Ignore && SysId.IsValid(data.Id) && !IsValidValue(data.Ref, "Ref", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Transaction_Ref), true))
|
||||
{
|
||||
errField.Ref = SacsHierarchyItem.ValidValue.Invalid;
|
||||
return false;
|
||||
@@ -330,21 +332,8 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Mgr
|
||||
return false;
|
||||
}
|
||||
|
||||
// Establish notes length for validation.
|
||||
if (maxTranNotesLength < 1)
|
||||
{
|
||||
// Standard notes length:
|
||||
maxTranNotesLength = (int)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Transaction_Notes);
|
||||
// Check if this database allows longer notes:
|
||||
ISacsDatabase db = SbmGlobals.Application.GetBusMgrDatabase(SessionContext);
|
||||
if (db != null)
|
||||
{
|
||||
DbDfnTable tableDfn = db.GetTableDfn(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Transaction, false));
|
||||
DbDfnColumn columnDfn = tableDfn.Columns.Find(item => item.Name.EqualsCI(SbmDbDfn.GetColumnName(SbmDbDfn.ColumnIdx.Transaction_Notes, false)));
|
||||
if (columnDfn != null) maxTranNotesLength = Math.Max(maxTranNotesLength, columnDfn.Size);
|
||||
}
|
||||
}
|
||||
if (errField.Notes != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Notes, "notes", maxTranNotesLength))
|
||||
// Common properties.
|
||||
if (errField.Notes != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Notes, "notes", (int)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Transaction_Notes)))
|
||||
{
|
||||
errField.Notes = SacsHierarchyItem.ValidValue.Invalid;
|
||||
return false;
|
||||
@@ -374,29 +363,6 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Mgr
|
||||
if (!DateUtil.IsValid(data.Closed))
|
||||
data.Closed = DateTime.Today;
|
||||
}
|
||||
|
||||
// Populate reference if not already done.
|
||||
if (StringUtil.IsEmpty(data.Ref) && SessionConsole.TransactionAssignRefMethod(data.TransactionType) != SbmSessionConsole.AssignTransRefMethod.Manual)
|
||||
{
|
||||
// Retrieve the next available transaction reference.
|
||||
String sRef = SessionConsole.GetTransactionCreateRef(data.AffiliateIdOwner, data.AssociationId, data.TransactionType);
|
||||
// Check that another transaction doesn't already exist with this reference.
|
||||
SbmTransaction transRef = GetTransactionByOwnerTypeRef(data.AffiliateIdOwner, data.TransactionType, sRef);
|
||||
if (transRef == null)
|
||||
data.Ref = sRef;
|
||||
else
|
||||
{
|
||||
String tranTypeDesc = TransactionTypes.GetDescForType(data.TransactionType);
|
||||
if (StringUtil.IsEmpty(tranTypeDesc)) tranTypeDesc = "Transaction";
|
||||
SetErrorState("Another " + tranTypeDesc + " already exists with this reference.");
|
||||
}
|
||||
if (HasErrorState()) return false;
|
||||
}
|
||||
if (errField.Ref != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Ref, "Ref", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Transaction_Ref), true))
|
||||
{
|
||||
errField.Ref = SacsHierarchyItem.ValidValue.Invalid;
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@@ -7,15 +7,15 @@
|
||||
</head>
|
||||
<body>
|
||||
[#Email.Header]
|
||||
<div class="sax-email-body">
|
||||
<div class="sax-email-panel-caption">
|
||||
<div class="sax-caption">Demo Account Registration</div>
|
||||
<div class="sbm-email-body">
|
||||
<div class="sbm-email-panel-caption">
|
||||
<div class="sbm-caption">Demo Account Registration</div>
|
||||
</div>
|
||||
<div class="sax-email-panel-content">
|
||||
<div class="sax-para">Thank you for registering your demo account details!</div>
|
||||
<div class="sax-para">Follow <span style="font-weight:bold;"><a href="[#Link.DemoAccountSignin]">this link</a></span> to login to the demo application.</div>
|
||||
<div class="sax-para">Thank you.</div>
|
||||
<div class="sax-para">BusinessMgr team</div>
|
||||
<div class="sbm-email-panel-content">
|
||||
<div class="sbm-para">Thank you for registering your demo account details!</div>
|
||||
<div class="sbm-para">Follow <span style="font-weight:bold;"><a href="[#Link.DemoAccountSignin]">this link</a></span> to login to the demo application.</div>
|
||||
<div class="sbm-para">Thank you.</div>
|
||||
<div class="sbm-para">BusinessMgr team</div>
|
||||
</div>
|
||||
</div>
|
||||
[#Email.Footer]
|
||||
|
||||
@@ -7,16 +7,16 @@
|
||||
</head>
|
||||
<body>
|
||||
[#Email.Header]
|
||||
<div class="sax-email-body">
|
||||
<div class="sax-email-panel-caption">
|
||||
<div class="sax-caption">Demo Account Request</div>
|
||||
<div class="sbm-email-body">
|
||||
<div class="sbm-email-panel-caption">
|
||||
<div class="sbm-caption">Demo Account Request</div>
|
||||
</div>
|
||||
<div class="sax-email-panel-content">
|
||||
<div class="sax-para">Thank you for requesting a demo account!</div>
|
||||
<div class="sax-para">Follow <span style="font-weight:bold;"><a href="[#Link.DemoAccountRegister]">this link</a></span> to complete registration for your account for the demo application.</div>
|
||||
<div class="sax-para">This link will expire in [#Link.ExpiresMinutes] minutes.</div>
|
||||
<div class="sax-para">Thank you.</div>
|
||||
<div class="sax-para">BusinessMgr team</div>
|
||||
<div class="sbm-email-panel-content">
|
||||
<div class="sbm-para">Thank you for requesting a demo account!</div>
|
||||
<div class="sbm-para">Follow <span style="font-weight:bold;"><a href="[#Link.DemoAccountRegister]">this link</a></span> to complete registration for your account for the demo application.</div>
|
||||
<div class="sbm-para">This link will expire in [#Link.ExpiresMinutes] minutes.</div>
|
||||
<div class="sbm-para">Thank you.</div>
|
||||
<div class="sbm-para">BusinessMgr team</div>
|
||||
</div>
|
||||
</div>
|
||||
[#Email.Footer]
|
||||
|
||||
@@ -7,16 +7,16 @@
|
||||
</head>
|
||||
<body>
|
||||
[#Email.Header]
|
||||
<div class="sax-email-body">
|
||||
<div class="sax-email-panel-caption">
|
||||
<div class="sax-caption">Password Request</div>
|
||||
<div class="sbm-email-body">
|
||||
<div class="sbm-email-panel-caption">
|
||||
<div class="sbm-caption">Password Request</div>
|
||||
</div>
|
||||
<div class="sax-email-panel-content">
|
||||
<div class="sax-para">We received a request to re-set your password.</div>
|
||||
<div class="sax-para">Follow <span style="font-weight:bold;"><a href="[#Link.RequestPassword]">this link</a></span> to set a new password against your account.</div>
|
||||
<div class="sax-para">This link will expire in [#Link.ExpiresMinutes] minutes.</div>
|
||||
<div class="sax-para">Thank you.</div>
|
||||
<div class="sax-para">BusinessMgr team</div>
|
||||
<div class="sbm-email-panel-content">
|
||||
<div class="sbm-para">We received a request to re-set your password.</div>
|
||||
<div class="sbm-para">Follow <span style="font-weight:bold;"><a href="[#Link.RequestPassword]">this link</a></span> to set a new password against your account.</div>
|
||||
<div class="sbm-para">This link will expire in [#Link.ExpiresMinutes] minutes.</div>
|
||||
<div class="sbm-para">Thank you.</div>
|
||||
<div class="sbm-para">BusinessMgr team</div>
|
||||
</div>
|
||||
</div>
|
||||
[#Email.Footer]
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
<div class="sax-email-footer">
|
||||
<div class="sax-content"></div>
|
||||
<div class="sbm-email-footer">
|
||||
<div class="sbm-content"></div>
|
||||
</div>
|
||||
|
||||
@@ -18,7 +18,7 @@ td
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
.sax-email-header
|
||||
.sbm-email-header
|
||||
{
|
||||
margin: 0 0 12px 0;
|
||||
border-bottom: 1px solid rgba(0,0,0,.1);
|
||||
@@ -27,7 +27,7 @@ td
|
||||
-webkit-box-shadow: 0 1px 0 rgba(0,0,0,.1);
|
||||
}
|
||||
|
||||
.sax-email-header .sax-content, .sax-email-body, .sax-email-footer .sax-content
|
||||
.sbm-email-header .sbm-content, .sbm-email-body, .sbm-email-footer .sbm-content
|
||||
{
|
||||
width: 90%;
|
||||
max-width: 1040px;
|
||||
@@ -35,16 +35,16 @@ td
|
||||
padding:12px 24px;
|
||||
}
|
||||
|
||||
.sax-email-header .sax-content
|
||||
.sbm-email-header .sbm-content
|
||||
{
|
||||
font-size:2.3rem;
|
||||
}
|
||||
|
||||
.sax-email-body
|
||||
.sbm-email-body
|
||||
{
|
||||
}
|
||||
|
||||
.sax-email-panel-caption
|
||||
.sbm-email-panel-caption
|
||||
{
|
||||
margin: 12px 0;
|
||||
font-size: 3.2rem;
|
||||
@@ -53,17 +53,17 @@ td
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
.sax-email-panel-content
|
||||
.sbm-email-panel-content
|
||||
{
|
||||
margin: 12px 0;
|
||||
}
|
||||
|
||||
.sax-para
|
||||
.sbm-para
|
||||
{
|
||||
margin-bottom: 16px;
|
||||
}
|
||||
|
||||
td.sax-label
|
||||
td.sbm-label
|
||||
{
|
||||
padding: 4px 12px;
|
||||
font-size: 1.6rem;
|
||||
@@ -72,25 +72,25 @@ td.sax-label
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
td.sax-value
|
||||
td.sbm-value
|
||||
{
|
||||
padding-top: 4px;
|
||||
font-size: 1.6rem;
|
||||
}
|
||||
|
||||
.sax-email-footer
|
||||
.sbm-email-footer
|
||||
{
|
||||
margin: 24px 0 12px 0;
|
||||
border-top: 1px rgba(0,0,0,.1) solid;
|
||||
}
|
||||
|
||||
.sax-email-footer .sax-content
|
||||
.sbm-email-footer .sbm-content
|
||||
{
|
||||
padding:12px 24px;
|
||||
font-size:1.2rem;
|
||||
}
|
||||
|
||||
.sax-email-footer .sax-content .sax-footer-lower
|
||||
.sbm-email-footer .sbm-content .sbm-footer-lower
|
||||
{
|
||||
background-color: #f9f9f9;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user