Categorie: reference Bijgewerkt: 2026-04-08 actionfield workflow actionfield1552

ActionField1552

Beschrijving: Enable user to set unique value for absence priority on HourCode. Implicitly sets ShowAsAbsence. Custom: Nee

Propertiesbewerken

Property Type Accessor
HourCode HourCode Root

XMLbewerken

<Workflow Name="ActionField1552" Version="2025.07.28" WorkflowType="Standard" xmlns="urn:Ultimo.Framework.Workflow-mapping">
	<Security EditLevel="10" ViewLevel="20" UserContentLevel="30" />
	<Description>Enable user to set unique value for absence priority on HourCode. Implicitly sets ShowAsAbsence.</Description>
	<Properties>
		<Property	Name="HourCode"					Type="HourCode"			Accessor="Root"		Direction="In" />

		<Property	Name="AbsenceHourCodes"			Type="List[HourCode]"	Accessor="Internal" />
		<Property	Name="HighestPriority"			Type="Int32"			Accessor="Internal"						Default="1" />
		<Property	Name="LowestPriority"			Type="Int32"			Accessor="Internal"						Default="1" />
		<Property	Name="NewPriority"				Type="Int32"			Accessor="Internal"						Default="1" />
		<Property	Name="NoPriority"				Type="Int32"			Accessor="Internal"						Default="0"	Comment="Selecting this value from SelectablePriorities forces a reset of ShowAsAbsence." />
		<Property	Name="OtherAbsenceHourCodes"	Type="String"			Accessor="Internal" />
		<Property	Name="PriorityLabel"			Type="String"			Accessor="Internal" />
		<Property	Name="SelectablePriorities"		Type="List[Int32]"		Accessor="Internal" />
		<Property	Name="SelectedPriority"			Type="Int32"			Accessor="Internal"						Default="1" />
	</Properties>
	<Execution>
		<UserContent Name="Pre" />

		<When Name="No priority selectable" Condition="${HourCode.AbsencePriority} &gt; 0">
			<AddToList Name="No Priority" List="${SelectablePriorities}" Item="${NoPriority}" />
		</When>

		<When Name="Highest priority selectable" Condition="${HourCode.AbsencePriority} != ${HighestPriority}">
			<AddToList Name="Highest Priority" List="${SelectablePriorities}" Item="${HighestPriority}" Comment="Always offer user to select the highest priority." />
		</When>

		<Transaction>
			<GetList Name="Current AbsenceHourCodes" Type="HourCode" OutputProperty="${AbsenceHourCodes}" OrderBy="AbsencePriority" OrderDirection="Ascending">
				<Filters>
					<PropertyFilter	PropertyName="ShowAsAbsence"	Operator="="		PropertyValue="True" />
				</Filters>
			</GetList>

			<ForEach Name="AbsenceHourCode" In="${AbsenceHourCodes}" As="AbsenceHourCode">
				<Assign Name="OtherAbsenceHourCodes" Property="${OtherAbsenceHourCodes}" Value="=#concat(${OtherAbsenceHourCodes}, ${AbsenceHourCode.Description}, ' (', ${AbsenceHourCode.AbsencePriority}, ')', #{SpecialCharacters.NewLine})" />

				<When Name="Name" Condition="${HourCode.Id} != ${AbsenceHourCode.Id} &amp;&amp; #exists(${AbsenceHourCode.AbsencePriority}, ${SelectablePriorities}) == False">
					<AddToList Name="Priority" List="${SelectablePriorities}" Item="${AbsenceHourCode.AbsencePriority}" />
				</When>

				<Add Name="Update Lowest Priority" ValueLeft="${AbsenceHourCode.AbsencePriority}" ValueRight="1" OutputProperty="${LowestPriority}" />
			</ForEach>
		</Transaction>

		<When Name="AbsenceHourCodes" Condition="${AbsenceHourCodes.Count} &gt;= 1">
			<When Name="No priority yet" Condition="${HourCode.AbsencePriority} == 0">
				<AddToList Name="User can select lowest priority" List="${SelectablePriorities}" Item="${LowestPriority}" />
			</When>

			<FormatText Name="RESETABSENCEPRIORITYONHOURCODE" TextCode="RESETABSENCEPRIORITYONHOURCODE" Application="LABEL" OutputProperty="${PriorityLabel}" />

			<WorkflowCall Name="Select absence priority" WorkflowName="Dialog_SetAbsencePriorityOnHourCode">
				<Parameter	Name="AbsenceHourCodes"		Direction="In"		Value="${OtherAbsenceHourCodes}" />
				<Parameter	Name="PriorityLabel"		Direction="In"		Value="${PriorityLabel}" />
				<Parameter	Name="SelectablePriorities"	Direction="In"		Value="${SelectablePriorities}" />
				<Parameter	Name="SuggestedPriority"	Direction="In"		Value="${LowestPriority}" />
				<Parameter	Name="SelectedPriority"		Direction="Out"											OutputProperty="${SelectedPriority}" />
			</WorkflowCall>
		</When>

		<Transaction>
			<Assign Name="AbsencePriority" Property="${HourCode.AbsencePriority}" Value="${SelectedPriority}" />
			<Assign Name="ShowAsAbsence" Property="${HourCode.ShowAsAbsence}" Value="=${HourCode.AbsencePriority} &gt; 0 ? True : False" />

			<GetList Name="Current AbsenceHourCodes" Type="HourCode" OutputProperty="${AbsenceHourCodes}" OrderBy="AbsencePriority" OrderDirection="Ascending">
				<Filters>
					<CombinedFilter FilterOperator="And">
						<PropertyFilter	PropertyName="ShowAsAbsence"	Operator="="		PropertyValue="True" />
						<PropertyFilter	PropertyName="Id"				Operator="!="		PropertyValue="${HourCode.Id}" />
					</CombinedFilter>
				</Filters>
			</GetList>

			<Assign Name="Start numbering at 1" Property="${NewPriority}" Value="${HighestPriority}" />

			<ForEach Name="AbsenceHourCode" In="${AbsenceHourCodes}" As="AbsenceHourCode">
				<When Name="Already exists" Condition="${NewPriority} == ${SelectedPriority}">
					<Add Name="Decrement priority" ValueLeft="${NewPriority}" ValueRight="1" OutputProperty="${NewPriority}" />
				</When>

				<Assign Name="AbsencePriority" Property="${AbsenceHourCode.AbsencePriority}" Value="=${NewPriority}" />

				<Add Name="Decrement priority" ValueLeft="${NewPriority}" ValueRight="1" OutputProperty="${NewPriority}" />

				<Assign Name="ShowAsAbsence" Property="${AbsenceHourCode.ShowAsAbsence}" Value="True" />
			</ForEach>
		</Transaction>

		<UserContent Name="Post" />
	</Execution>
</Workflow>