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

ActionField680

Beschrijving: Create SpaceMaintenance for LongTermAsset and copy MaintenancePart Activities to SpaceMaintenance. MaintenancePart is selected via dialog. Custom: Nee

Propertiesbewerken

Property Type Accessor
LongTermAsset LongTermAsset Root

XMLbewerken

<Workflow Name="ActionField680" Version="2025.07.28" WorkflowType="Standard" xmlns="urn:Ultimo.Framework.Workflow-mapping">
	<Security EditLevel="10" ViewLevel="20" UserContentLevel="30" />
	<Description>Create SpaceMaintenance for LongTermAsset and copy MaintenancePart Activities to SpaceMaintenance. MaintenancePart is selected via dialog.</Description>
	<Properties>
		<Property	Name="LongTermAsset"				Type="LongTermAsset"			Accessor="Root"		Direction="In" />

		<Property	Name="MaintenancePart"				Type="MaintenancePart"			Accessor="Internal" />
		<Property	Name="NoReplacementCostSetAnyway"	Type="RequestResult"			Accessor="Internal" />
		<Property	Name="OverwriteMaintenancePart"		Type="RequestResult"			Accessor="Internal" />
		<Property	Name="ScheduledYear"				Type="Int32"					Accessor="Internal" />
		<Property	Name="SpaceMaintenance"				Type="SpaceMaintenance"			Accessor="Internal" />
		<Property	Name="SpaceMaintenanceActivity"		Type="SpaceMaintenanceActivity"	Accessor="Internal" />
	</Properties>
	<Execution>
		<UserContent Name="Pre" />

		<Validation Name="ValidateIfReplacementCostIsProvided" Condition="${LongTermAsset.ReplacementCost} != CompanyMoney.Zero" MessageCode="1250" />
		<Validation Name="ValidateIfConstructionYearIsProvided" Condition="${LongTermAsset.ConstructionYear} &gt; 1800" MessageCode="1252" />

		<Transaction>
			<Assign Name="SetSpaceMaintenance" Property="${SpaceMaintenance}" Value="${LongTermAsset.SpaceMaintenance}" />
		</Transaction>

		<When Name="WhenMaintenancePartSet" Condition="${LongTermAsset.MaintenancePart} != Empty &amp;&amp; ${SpaceMaintenance} != Empty">
			<Question Name="OverwriteCurrentMaintenancePart" Type="YesNo" MessageCode="1247" OutputProperty="${OverwriteMaintenancePart}" />

			<When Name="CheckAnswer" Condition="${OverwriteMaintenancePart} == No">
				<Stop Name="Stop" Mode="Abort" />
			</When>

			<Transaction>
				<ForEach Name="DeleteExistingSpaceMaintenanceActivities" In="${SpaceMaintenance.Activities}" As="SpaceMaintenanceActivityToDelete" Condition="${SpaceMaintenanceActivityToDelete.Status} &gt;= 0">
					<TrashObject Name="RemoveActivity" DomainObject="${SpaceMaintenanceActivityToDelete}" />
				</ForEach>
			</Transaction>
		</When>

		<Dialog Name="SelectMaintenancePartDialog" TitleCode="LTAPCATEGORY">
			<Container>
				<SelectionList Name="MaintenancePart" OutputProperty="${MaintenancePart}" ColumnName="MntpId" ViewfieldConfiguration="Ltap" Required="True" SqlWhereClause="MntpContext=8 AND MntpRecStatus=2" />
			</Container>
		</Dialog>

		<Transaction>
			<When Name="MaintenancePartSet" Condition="${SpaceMaintenance} == Empty">
				<WorkflowCall Name="CreateSpaceMaintenance" WorkflowName="LongTermAsset_CreateSpaceMaintenance">
					<Parameter	Name="LongTermAsset"	Direction="In"		Value="${LongTermAsset}" />
					<Parameter	Name="MaintenancePart"	Direction="In"		Value="${MaintenancePart}" />
					<Parameter	Name="SpaceMaintenance"	Direction="Out"									OutputProperty="${SpaceMaintenance}" />
				</WorkflowCall>
			</When>

			<Assign Name="SetLongTermAssetMaintenancePart" Property="${LongTermAsset.MaintenancePart}" Value="${MaintenancePart}" />
			<Assign Name="Set MaintenancePart of SpaceMaintenance" Property="${SpaceMaintenance.MaintenancePart}" Value="${MaintenancePart}" />
		</Transaction>

		<ForEach Name="LoopThrough" In="${MaintenancePart.Activities}" As="MaintenancePartActivity" Condition="${MaintenancePartActivity.Status} == MaintenancePartActivityStatus.Active">
			<Transaction>
				<Assign Name="SetScheduledYear" Property="${ScheduledYear}" Value="=${LongTermAsset.ConstructionYear}+${MaintenancePartActivity.MaintenanceCycle}" />

				<When Name="ScheduledYearValid" Condition="#getyear(#getdate(${ScheduledYear},1,1)) &lt;= #getyear(#gettoday()) &amp;&amp; ${MaintenancePartActivity.MaintenanceCycle} != 0">
					<Assign Name="SetScheduledYear" Property="${ScheduledYear}" Value="=#getyear(#gettoday())" />
					<Assign Name="CalcNextScheduledYear" Property="${ScheduledYear}" Value="=#ceil((${ScheduledYear}-${LongTermAsset.ConstructionYear})/${MaintenancePartActivity.MaintenanceCycle},0)*${MaintenancePartActivity.MaintenanceCycle}+${LongTermAsset.ConstructionYear}" Comment="Calculate the next scheduled year in the cycle, from now." />
				</When>

				<GetItem Name="Get (trashed) SpaceMaintenanceActivity" Type="SpaceMaintenanceActivity" OutputProperty="${SpaceMaintenanceActivity}">
					<Filters>
						<PropertyFilter	PropertyName="Id.MaintenancePartActivity"	Operator="="		PropertyValue="${MaintenancePartActivity}" />
						<PropertyFilter	PropertyName="Id.SpaceMaintenance"			Operator="="		PropertyValue="${SpaceMaintenance}" />
						<PropertyFilter	PropertyName="Status"						Operator="&lt;"		PropertyValue="0" />
					</Filters>
				</GetItem>

				<Choose Name="Choose SpaceMaintenanceActivity">
					<When Name="SpaceMaintenanceActivity already present" Condition="${SpaceMaintenanceActivity} != Empty">
						<UntrashObject Name="SpaceMaintenanceActivity" DomainObject="${SpaceMaintenanceActivity}" />

						<When Name="Name" Condition="${SpaceMaintenanceActivity.Status} == SpaceMaintenanceActivityStatus.Active">
							<ChangeStatus Name="SpaceMaintenanceActivity to Created" DomainObject="${SpaceMaintenanceActivity}" NewStatus="SpaceMaintenanceActivityStatus.Created" />
						</When>

						<Assign Name="Context" Property="${SpaceMaintenanceActivity.Context}" Value="SpaceMaintenanceActivityContext.LongTermAssetPlan" />
						<Assign Name="Active" Property="${SpaceMaintenanceActivity.Active}" Value="False" />
						<Assign Name="CalculationMethod" Property="${SpaceMaintenanceActivity.CalculationMethod}" Value="4" />
						<Assign Name="CostType" Property="${SpaceMaintenanceActivity.CostType}" Value="${MaintenancePartActivity.CostType}" />
						<Assign Name="ImplementationPercentage" Property="${SpaceMaintenanceActivity.ImplementationPercentage}" Value="${MaintenancePartActivity.ImplementationPercentage}" />
						<Assign Name="LabourGrossCost" Property="${SpaceMaintenanceActivity.LabourGrossCost}" Value="${MaintenancePartActivity.LabourCost}" />
						<Assign Name="MaintenanceFrequency" Property="${SpaceMaintenanceActivity.MaintenanceFrequency}" Value="${MaintenancePartActivity.MaintenanceCycle}" />
						<Assign Name="MaintenanceFrequencyMethod" Property="${SpaceMaintenanceActivity.MaintenanceFrequencyMethod}" Value="1" />
						<Assign Name="MaintenanceStateImprovement" Property="${SpaceMaintenanceActivity.MaintenanceStateImprovement}" Value="${MaintenancePartActivity.MaintenanceStateImprovement}" />
						<Assign Name="NextMaintenanceState" Property="${SpaceMaintenanceActivity.NextMaintenanceState}" Value="${MaintenancePartActivity.NextMaintenanceState}" />
						<Assign Name="NextMaintenanceYearInspector" Property="${SpaceMaintenanceActivity.NextMaintenanceYearInspector}" Value="${ScheduledYear}" />
						<Assign Name="ObservationsPerCycle" Property="${SpaceMaintenanceActivity.ObservationsPerCycle}" Value="${MaintenancePartActivity.ObservationsPerCycle}" />
						<Assign Name="PercentageOfReplacementCost" Property="${SpaceMaintenanceActivity.PercentageOfReplacementCost}" Value="${MaintenancePartActivity.PercentageOfReplacementCost}" />
						<Assign Name="Price" Property="${SpaceMaintenanceActivity.Price}" Value="=${LongTermAsset.ReplacementCost}*(${MaintenancePartActivity.PercentageOfReplacementCost}/100)" />
						<Assign Name="Quantity" Property="${SpaceMaintenanceActivity.Quantity}" Value="1" />
						<Assign Name="StandardCostExcludingLabour" Property="${SpaceMaintenanceActivity.StandardCostExcludingLabour}" Value="${MaintenancePartActivity.StandardCostExcludingLabour}" />
						<Assign Name="StartYearMaintenanceFrequency" Property="${SpaceMaintenanceActivity.StartYearMaintenanceFrequency}" Value="0" />
					</When>

					<Otherwise Name="SpaceMaintenanceActivity has to be inserted">
						<Insert Name="CreateSpaceMaintenanceActivity" ObjectType="SpaceMaintenanceActivity" OutputProperty="${SpaceMaintenanceActivity}">
							<Parameter	Name="Id.MaintenancePartActivity"		Direction="In"		Value="${MaintenancePartActivity}" />
							<Parameter	Name="Id.SpaceMaintenance"				Direction="In"		Value="${SpaceMaintenance}" />
							<Parameter	Name="Context"							Direction="In"		Value="SpaceMaintenanceActivityContext.LongTermAssetPlan" />
							<Parameter	Name="Status"							Direction="In"		Value="SpaceMaintenanceActivityStatus.Created" />
							<Parameter	Name="Active"							Direction="In"		Value="False" />
							<Parameter	Name="CalculationMethod"				Direction="In"		Value="4" />
							<Parameter	Name="CostType"							Direction="In"		Value="${MaintenancePartActivity.CostType}" />
							<Parameter	Name="ImplementationPercentage"			Direction="In"		Value="${MaintenancePartActivity.ImplementationPercentage}" />
							<Parameter	Name="LabourGrossCost"					Direction="In"		Value="${MaintenancePartActivity.LabourCost}" />
							<Parameter	Name="MaintenanceFrequency"				Direction="In"		Value="${MaintenancePartActivity.MaintenanceCycle}" />
							<Parameter	Name="MaintenanceFrequencyMethod"		Direction="In"		Value="1" />
							<Parameter	Name="MaintenanceStateImprovement"		Direction="In"		Value="${MaintenancePartActivity.MaintenanceStateImprovement}" />
							<Parameter	Name="NextMaintenanceState"				Direction="In"		Value="${MaintenancePartActivity.NextMaintenanceState}" />
							<Parameter	Name="NextMaintenanceYearInspector"		Direction="In"		Value="${ScheduledYear}" />
							<Parameter	Name="ObservationsPerCycle"				Direction="In"		Value="${MaintenancePartActivity.ObservationsPerCycle}" />
							<Parameter	Name="PercentageOfReplacementCost"		Direction="In"		Value="${MaintenancePartActivity.PercentageOfReplacementCost}" />
							<Parameter	Name="Price"							Direction="In"		Value="=${LongTermAsset.ReplacementCost}*(${MaintenancePartActivity.PercentageOfReplacementCost}/100)" />
							<Parameter	Name="Quantity"							Direction="In"		Value="1" />
							<Parameter	Name="StandardCostExcludingLabour"		Direction="In"		Value="${MaintenancePartActivity.StandardCostExcludingLabour}" />
							<Parameter	Name="StartYearMaintenanceFrequency"	Direction="In"		Value="0" />
						</Insert>
					</Otherwise>
				</Choose>

				<AddToList Name="Add element to space maintenance activity list" List="${SpaceMaintenance.Activities}" Item="${SpaceMaintenanceActivity}" />
			</Transaction>

			<WorkflowCall Name="ActivateSpaceMaintenanceActivity" WorkflowName="SpaceMaintenanceActivity_Activate">
				<Parameter	Name="SpaceMaintenanceActivity"	Direction="In"		Value="${SpaceMaintenanceActivity}" />
			</WorkflowCall>
		</ForEach>

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