Show / Hide Table of Contents

Class CaseRelationValidateFunction

Validates the combined state of source and target case fields within a case relation.

Inheritance
object
Function
PayrollFunction
CaseRelationFunction
CaseRelationValidateFunction
Implements
IDisposable
Inherited Members
CaseRelationFunction.GetSourceStart(string)
CaseRelationFunction.GetSourceEnd(string)
CaseRelationFunction.GetSourceValueType(string)
CaseRelationFunction.GetSourceValue(string)
CaseRelationFunction.GetSourceValue(string, object)
CaseRelationFunction.GetSourceValue<T>(string)
CaseRelationFunction.GetSourceValue<T>(string, T)
CaseRelationFunction.GetSourcePayrollValue(string)
CaseRelationFunction.GetSourcePeriod(string)
CaseRelationFunction.GetSourceFieldNames()
CaseRelationFunction.HasSourceFields()
CaseRelationFunction.HasSourceField(string)
CaseRelationFunction.IsSourceFieldComplete(string)
CaseRelationFunction.IsSourceFieldEmpty(string)
CaseRelationFunction.HasSourceStart(string)
CaseRelationFunction.HasSourceEnd(string)
CaseRelationFunction.HasSourceValue(string)
CaseRelationFunction.SourceValueEquals<T>(string, T)
CaseRelationFunction.SourceValueContainsCsvToken(string, string)
CaseRelationFunction.SourceValueIsWithin(string, int, int)
CaseRelationFunction.SourceValueIsWithin(string, decimal, decimal)
CaseRelationFunction.GetSourceCaseAttribute(string)
CaseRelationFunction.GetSourceCaseAttribute<T>(string, T)
CaseRelationFunction.GetSourceCaseFieldAttribute(string, string)
CaseRelationFunction.GetSourceCaseFieldAttribute<T>(string, string, T)
CaseRelationFunction.GetSourceCaseValueAttribute(string, string)
CaseRelationFunction.GetSourceCaseValueAttribute<T>(string, string, T)
CaseRelationFunction.GetTargetStart(string)
CaseRelationFunction.SetTargetStart(string, DateTime?)
CaseRelationFunction.GetTargetEnd(string)
CaseRelationFunction.SetTargetEnd(string, DateTime?)
CaseRelationFunction.GetTargetValue(string)
CaseRelationFunction.GetTargetValue(string, object)
CaseRelationFunction.GetTargetValue<T>(string)
CaseRelationFunction.GetTargetValue<T>(string, T)
CaseRelationFunction.SetTargetValue(string, object)
CaseRelationFunction.GetTargetPayrollValue(string)
CaseRelationFunction.SetTargetPayrollValue(string, PayrollValue)
CaseRelationFunction.GetTargetPeriod(string)
CaseRelationFunction.GetTargetFieldNames()
CaseRelationFunction.HasTargetFields()
CaseRelationFunction.HasTargetField(string)
CaseRelationFunction.IsTargetFieldComplete(string)
CaseRelationFunction.IsTargetFieldEmpty(string)
CaseRelationFunction.TargetFieldAvailable(string)
CaseRelationFunction.TargetFieldAvailable(string, bool)
CaseRelationFunction.HasTargetStart(string)
CaseRelationFunction.InitTargetStart(string, DateTime?)
CaseRelationFunction.HasTargetEnd(string)
CaseRelationFunction.InitTargetEnd(string, DateTime?)
CaseRelationFunction.GetTargetValueType(string)
CaseRelationFunction.HasTargetValue(string)
CaseRelationFunction.InitTargetValue(string, object)
CaseRelationFunction.TargetValueEquals<T>(string, T)
CaseRelationFunction.TargetValueContainsCsvToken(string, string)
CaseRelationFunction.TargetValueHasSourceSlotCsvToken(string)
CaseRelationFunction.TargetValueIsWithin(string, int, int)
CaseRelationFunction.TargetValueIsWithin(string, decimal, decimal)
CaseRelationFunction.GetTargetCaseAttribute(string)
CaseRelationFunction.GetTargetCaseAttribute<T>(string, T)
CaseRelationFunction.GetTargetCaseFieldAttribute(string, string)
CaseRelationFunction.GetTargetCaseFieldAttribute<T>(string, string, T)
CaseRelationFunction.GetTargetCaseValueAttribute(string, string)
CaseRelationFunction.GetTargetCaseValueAttribute<T>(string, string, T)
CaseRelationFunction.InitStart(string, string)
CaseRelationFunction.CopyStart(string, string)
CaseRelationFunction.InitEnd(string, string)
CaseRelationFunction.CopyEnd(string, string)
CaseRelationFunction.InitValue(string, string)
CaseRelationFunction.CopyValue(string, string)
CaseRelationFunction.SourceCaseName
CaseRelationFunction.SourceCaseSlot
CaseRelationFunction.SourceCaseCancellationDate
CaseRelationFunction.SourceCaseCancellation
CaseRelationFunction.SourceStart
CaseRelationFunction.SourceEnd
CaseRelationFunction.SourceValue
CaseRelationFunction.SourcePayrollValue
CaseRelationFunction.TargetCaseName
CaseRelationFunction.TargetCaseSlot
CaseRelationFunction.TargetCaseCancellationDate
CaseRelationFunction.TargetCaseCancellation
CaseRelationFunction.TargetStart
CaseRelationFunction.TargetEnd
CaseRelationFunction.TargetValue
CaseRelationFunction.TargetPayrollValue
PayrollFunction.StringType
PayrollFunction.IntType
PayrollFunction.NumericType
PayrollFunction.DecimalType
PayrollFunction.DateType
PayrollFunction.TimeSpanType
PayrollFunction.BooleanType
PayrollFunction.HasFieldValue(string)
PayrollFunction.GetFieldValue(string)
PayrollFunction.HasLookupValue(string, ActionValue, string)
PayrollFunction.HasLookupValue(string, ActionValue, ActionValue, string)
PayrollFunction.GetLookupValue(string, ActionValue, string)
PayrollFunction.GetLookupValue(string, ActionValue, ActionValue, string)
PayrollFunction.ApplyRangeLookupValue(string, decimal, string)
PayrollFunction.Min(params ActionValue[])
PayrollFunction.Min(ActionValue, ActionValue)
PayrollFunction.Max(params ActionValue[])
PayrollFunction.Max(ActionValue, ActionValue)
PayrollFunction.Within(ActionValue, ActionValue, ActionValue)
PayrollFunction.Range(ActionValue, ActionValue, ActionValue)
PayrollFunction.Concat(params ActionValue[])
PayrollFunction.Contains(ActionValue, params ActionValue[])
PayrollFunction.GetTimeSpan(ActionValue, ActionValue)
PayrollFunction.SameYear(ActionValue, ActionValue)
PayrollFunction.SameMonth(ActionValue, ActionValue)
PayrollFunction.SameDay(ActionValue, ActionValue)
PayrollFunction.YearDiff(ActionValue, ActionValue)
PayrollFunction.Age(ActionValue, ActionValue)
PayrollFunction.IsNull(ActionValue)
PayrollFunction.IsNotNull(ActionValue)
PayrollFunction.IfNull(ActionValue, ActionValue)
PayrollFunction.IIf(bool, ActionValue, ActionValue)
PayrollFunction.SetNamespace(string, string)
PayrollFunction.Log(string, LogLevel)
PayrollFunction.GetCalendarPeriod(DateTime?, int)
PayrollFunction.GetCalendarDayCount(string)
PayrollFunction.GetEmployeeAttribute(string)
PayrollFunction.GetEmployeeAttribute<T>(string, T)
PayrollFunction.GetCycle(int)
PayrollFunction.GetCycle(DateTime, int)
PayrollFunction.GetPeriods(int, int)
PayrollFunction.GetCyclePeriods()
PayrollFunction.GetPastCyclePeriods(bool)
PayrollFunction.GetFutureCyclePeriods(bool)
PayrollFunction.IsFirstCycleDay(DateTime)
PayrollFunction.IsLastCycleDay(DateTime)
PayrollFunction.PastPeriod()
PayrollFunction.FuturePeriod()
PayrollFunction.GetPeriod(int)
PayrollFunction.GetPeriod(DateTime, int)
PayrollFunction.GetPeriodOffset(DateTime)
PayrollFunction.IsFirstPeriodDay(DateTime)
PayrollFunction.IsLastPeriodDay(DateTime)
PayrollFunction.GetCaseValueType(string)
PayrollFunction.HasCaseFieldAttribute(string, string)
PayrollFunction.GetCaseFieldAttribute(string, string)
PayrollFunction.GetCaseFieldAttribute<T>(string, string, T)
PayrollFunction.HasCaseValueAttribute(string, string)
PayrollFunction.GetCaseValueAttribute(string, string)
PayrollFunction.GetCaseValueAttribute<T>(string, string, T)
PayrollFunction.TestAvailableCaseValues(IEnumerable<string>)
PayrollFunction.TestAvailableCaseValues(DatePeriod, IEnumerable<string>)
PayrollFunction.GetFirstAvailableCaseValue(IEnumerable<string>)
PayrollFunction.GetFirstAvailableCaseValue(DatePeriod, IEnumerable<string>)
PayrollFunction.GetFirstUnavailableCaseValue(IEnumerable<string>)
PayrollFunction.GetFirstUnavailableCaseValue(DatePeriod, IEnumerable<string>)
PayrollFunction.CaseFieldSlot(string, string)
PayrollFunction.GetPeriodCaseValue<T>(DatePeriod, string, string)
PayrollFunction.GetPeriodCaseValue(DatePeriod, string, string)
PayrollFunction.GetPeriodCaseValues(DatePeriod, params string[])
PayrollFunction.GetPeriodCaseValues(int, params string[])
PayrollFunction.GetPeriodCaseValue<T>(int, string, string)
PayrollFunction.GetPeriodCaseValue(int, string, string)
PayrollFunction.GetCaseValue<T>(string, string)
PayrollFunction.GetCaseValue(string, string)
PayrollFunction.GetPeriodCaseValue(int, int, string, string)
PayrollFunction.GetMultiPeriodCaseValues(int, int, params string[])
PayrollFunction.GetRawCaseValue(string, DateTime)
PayrollFunction.GetRawCaseValues(IList<string>, DateTime)
PayrollFunction.GetRawCaseValue<T>(string, DateTime)
PayrollFunction.GetPeriodRawCaseValues(string, DatePeriod)
PayrollFunction.GetPeriodRawCaseValues(string)
PayrollFunction.GetPeriodRawCaseValues(string, int)
PayrollFunction.GetRawCaseValues(string, DateTime?, DateTime?)
PayrollFunction.GetCaseObjectValues<T>(bool, bool)
PayrollFunction.GetCaseObject<T>(List<CasePayrollValue>, DateTime)
PayrollFunction.GetRawCaseObject<T>(DateTime, bool)
PayrollFunction.GetPeriodRawCaseObjects<T>(List<DateTime>, bool)
PayrollFunction.GetCaseValues(params string[])
PayrollFunction.GetCaseValueTags(string)
PayrollFunction.GetCaseValueTags(string, DateTime)
PayrollFunction.GetCaseValueSlots(string)
PayrollFunction.GetSlotValues(string)
PayrollFunction.GetSlotValues<T>(string)
PayrollFunction.GetSlotByValue(string, string, string)
PayrollFunction.HasLookup(string)
PayrollFunction.GetLookup<T>(string, string, string)
PayrollFunction.GetLookup<T>(string, object[], string)
PayrollFunction.GetObjectLookup<T>(string, string, string, string)
PayrollFunction.GetLookupRanges(string, decimal?)
PayrollFunction.GetLookupThresholdRange(string, decimal)
PayrollFunction.GetLookupProgressiveRanges(string, decimal)
PayrollFunction.GetRangeLookup<T>(string, decimal, string, string)
PayrollFunction.GetRangeObjectLookup<T>(string, decimal, string, string, string)
PayrollFunction.ApplyRangeValue(string, decimal, string)
PayrollFunction.GetAttributeIssue(string, params object[])
PayrollFunction.None
PayrollFunction.Null
PayrollFunction.PayrollId
PayrollFunction.Namespace
PayrollFunction.HasNamespace
PayrollFunction.DivisionId
PayrollFunction.PayrollCulture
PayrollFunction.EmployeeId
PayrollFunction.EmployeeIdentifier
PayrollFunction.CycleStart
PayrollFunction.CycleStartYear
PayrollFunction.CycleStartMonth
PayrollFunction.CycleStartDay
PayrollFunction.CycleEnd
PayrollFunction.CycleEndYear
PayrollFunction.CycleEndMonth
PayrollFunction.CycleEndDay
PayrollFunction.CycleDuration
PayrollFunction.Cycle
PayrollFunction.CycleDays
PayrollFunction.PreviousCycle
PayrollFunction.NextCycle
PayrollFunction.EvaluationDate
PayrollFunction.EvaluationPeriod
PayrollFunction.Periods
PayrollFunction.PeriodStart
PayrollFunction.PeriodStartYear
PayrollFunction.PeriodStartMonth
PayrollFunction.PeriodStartDay
PayrollFunction.PeriodEnd
PayrollFunction.PeriodEndYear
PayrollFunction.PeriodEndMonth
PayrollFunction.PeriodEndDay
PayrollFunction.PeriodDuration
PayrollFunction.Period
PayrollFunction.PeriodDays
PayrollFunction.PreviousPeriod
PayrollFunction.NextPeriod
PayrollFunction.FirstCyclePeriod
PayrollFunction.LastCyclePeriod
PayrollFunction.CycleStartOffset
PayrollFunction.CycleEndOffset
PayrollFunction.PastCyclePeriods
PayrollFunction.FutureCyclePeriods
PayrollFunction.PeriodsInCycle
PayrollFunction.CaseValue
PayrollFunction.CaseValueTags
Function.GetTenantAttribute(string)
Function.GetTenantAttribute<T>(string, T)
Function.GetUserAttribute(string)
Function.GetUserAttribute<T>(string, T)
Function.GetDerivedCulture(int, int)
Function.GetDerivedCalendar(int, int)
Function.GetCalendarDayCount(DateTime, DateTime, string)
Function.GetCalendarDayCount(string, DateTime, DateTime, string)
Function.IsCalendarWorkDay(string, DateTime?)
Function.IsCalendarWorkDay(DateTime?)
Function.GetPreviousWorkDay(string, DateTime?)
Function.GetPreviousWorkDays(string, DateTime?, int)
Function.GetNextWorkDay(string, DateTime?)
Function.GetNextWorkDays(string, DateTime?, int)
Function.GetCalendarPeriod(DateTime?, int, int, int)
Function.GetCalendarPeriod(string, DateTime?, int, string)
Function.LogVerbose(string, string, string)
Function.LogDebug(string, string, string)
Function.LogInformation(string, string, string)
Function.LogWarning(string, string, string)
Function.LogError(string, string, string)
Function.LogError(Exception, string, string)
Function.LogFatal(string, string, string)
Function.LogFatal(Exception, string, string)
Function.Log(LogLevel, string, string, string)
Function.AddTask(string, string, DateTime, string, Dictionary<string, object>)
Function.InvokeWebhook<T>(string, object)
Function.GetSourceFileName(string)
Function.ChangeValueType<T>(object, T, IFormatProvider)
Function.Dispose()
Function.Runtime
Function.TenantId
Function.TenantIdentifier
Function.UserId
Function.UserIdentifier
Function.UserCulture
Function.UserType
Function.SelfServiceUser
Function.AdminUser
Function.SourceFileName
object.GetType()
object.MemberwiseClone()
object.ToString()
object.Equals(object)
object.Equals(object, object)
object.ReferenceEquals(object, object)
object.GetHashCode()
Namespace: PayrollEngine.Client.Scripting.Function
Assembly: PayrollEngine.Client.Scripting.dll
Syntax
public class CaseRelationValidateFunction : CaseRelationFunction, IDisposable
Remarks

This function runs after CaseRelationBuildFunction has populated the target case fields. It can inspect both source and target values to detect invalid combinations and report issues.

Typical uses:

  • Ensure that a target value derived from the source is within allowed limits.
  • Verify that the source slot is eligible to create the target relation.
  • Cross-case consistency checks that cannot be expressed at the individual case level.

Adding issues: Use AddCaseIssue(string, int) for relation-level messages and AddCaseFieldIssue(string, string, int) to attach an issue to a specific target field. Localised messages can be referenced via AddCaseAttributeIssue(string, params object[]) and AddAttributeIssue(string, string, params object[]).

Return value: Return null to pass validation. Return false to reject the relation without an explicit message. The submission is blocked if any issue is present.

Low-Code / No-Code: Simple relation validations can be expressed through action expressions using CaseRelationValidateAction attributes. The Validate() entry point invokes registered actions before the script body.

Examples
// Ensure the derived target wage does not exceed the global cap
var cap = GetLookup<decimal>("WageCap", "Max");
if ((decimal)TargetValue["Wage"] > cap)
    AddCaseFieldIssue("Wage", $"Derived wage exceeds the allowed cap of {cap}.");

Constructors

View Source

CaseRelationValidateFunction(object)

Initializes a new instance with the function runtime

Declaration
public CaseRelationValidateFunction(object runtime)
Parameters
Type Name Description
object runtime

The runtime

View Source

CaseRelationValidateFunction(string)

New function instance without runtime (scripting development)

Declaration
protected CaseRelationValidateFunction(string sourceFileName)
Parameters
Type Name Description
string sourceFileName

The name of the source file

Remarks

Use GetSourceFileName(string) in your constructor for the source file name

Methods

View Source

AddAttributeIssue(string, string, params object[])

Add case field issue from attribute

Declaration
public void AddAttributeIssue(string caseFieldName, string attributeName, params object[] parameters)
Parameters
Type Name Description
string caseFieldName

Case field name

string attributeName

Attribute name

object[] parameters

Message parameters

View Source

AddCaseAttributeIssue(string, params object[])

Add case issue from attribute

Declaration
public void AddCaseAttributeIssue(string attributeName, params object[] parameters)
Parameters
Type Name Description
string attributeName

Attribute name

object[] parameters

Message parameters

View Source

AddCaseFieldIssue(string, string, int)

Add a new case field issue

Declaration
public void AddCaseFieldIssue(string caseFieldName, string message, int number = 0)
Parameters
Type Name Description
string caseFieldName

Name of the case field

string message

The issue message

int number

The issue number

View Source

AddCaseIssue(string, int)

Add a new case issue

Declaration
public void AddCaseIssue(string message, int number = 0)
Parameters
Type Name Description
string message

The issue message

int number

The issue number

View Source

HasIssues()

Test for issues

Declaration
public bool HasIssues()
Returns
Type Description
bool
View Source

Validate()

Entry point for the runtime

Declaration
public bool? Validate()
Returns
Type Description
bool?
Remarks

Internal usage only, do not call this method

Implements

IDisposable

Extension Methods

ConsoleExtensions.WriteProperties(object, bool)
ValueTypeExtensions.GetValueType(object)
ObjectInfo.GetPropertyValue(object, string)
ObjectInfo.GetPropertyValue<T>(object, string, T)
ObjectInfo.ResolvePropertyValue(object, string)
ObjectInfo.SetPropertyValue(object, string, object)

See Also

CaseRelationBuildFunction
  • View Source
☀
☾
Back to top Generated by DocFX