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

ActionField1165

Beschrijving: Create PurchaseRequestLine(s) based on JobScheduleParts (planned hours) of this Project (Stop). Custom: Nee

Propertiesbewerken

Property Type Accessor
Stop Project Root
UnitDescription UltimoString Optional

XMLbewerken

<Workflow Name="ActionField1165" Version="2025.07.28" WorkflowType="Standard" xmlns="urn:Ultimo.Framework.Workflow-mapping">
	<Security EditLevel="10" ViewLevel="20" UserContentLevel="30" />
	<Description>Create PurchaseRequestLine(s) based on JobScheduleParts (planned hours) of this Project (Stop).</Description>
	<Properties>
		<Property	Name="Stop"								Type="Project"					Accessor="Root"		Direction="In" />

		<Property	Name="UnitDescription"					Type="UltimoString"				Accessor="Optional"	Direction="In"		Default="Uren"														Comment="Unitdescription for the created purchaseRequestLines. Default: Uren (Hours in dutch)" />

		<Property	Name="AllowedJobStatuses"				Type="List[Status]"				Accessor="Internal"						Default="JobStatus.Created,JobStatus.Approved,JobStatus.Postponed" />
		<Property	Name="CraftsmanHourCategory"			Type="CraftsmanHourCategory"	Accessor="Internal" />
		<Property	Name="Jobs"								Type="List[Job]"				Accessor="Internal" />
		<Property	Name="JobScheduleParts"					Type="List[JobSchedulePart]"	Accessor="Internal" />
		<Property	Name="PurchaseRequestLine"				Type="PurchaseRequestLine"		Accessor="Internal" />
		<Property	Name="PurchaseRequestLinesCreatedCount"	Type="Int64"					Accessor="Internal"						Default="0" />
		<Property	Name="WorkOrders"						Type="List[WorkOrder]"			Accessor="Internal" />
	</Properties>
	<Execution>
		<UserContent Name="Pre" />

		<Transaction>
			<GetCount Name="Count PurchaseRequestLines" Type="PurchaseRequestLine" OutputProperty="${PurchaseRequestLinesCreatedCount}">
				<Filters>
					<PropertyFilter	PropertyName="CreatedForStop"	Operator="="		PropertyValue="True" />
					<PropertyFilter	PropertyName="Project"			Operator="="		PropertyValue="${Stop}" />
				</Filters>
			</GetCount>

			<Validation Name="Validate PurchaseRequestLinesCreated" Condition="${PurchaseRequestLinesCreatedCount} == 0" MessageCode="2388">
				<Parameter	Name="Project"	Direction="In"		Value="${Stop}" />
			</Validation>
		</Transaction>

		<ContinuationQuestion Name="Continue?" MessageCode="2393">
			<Parameter	Name="Project"	Direction="In"		Value="${Stop}" />
		</ContinuationQuestion>

		<Transaction>
			<GetList Name="Get Workorders" Type="WorkOrder" OutputProperty="${WorkOrders}" OrderBy="Id" OrderDirection="Ascending">
				<Filters>
					<PropertyFilter	PropertyName="Project"	Operator="="		PropertyValue="${Stop}" />
				</Filters>
			</GetList>

			<ForEach Name="Loop Workorders" In="${WorkOrders}" As="WorkOrder">
				<GetList Name="Get jobs by workorder with vendor" Type="Job" OutputProperty="${Jobs}" OrderBy="Id" OrderDirection="Ascending">
					<Filters>
						<PropertyFilter	PropertyName="WorkOrder"	Operator="="		PropertyValue="${WorkOrder}" />
						<InFilter PropertyName="Status" Values="${AllowedJobStatuses}" />
					</Filters>
				</GetList>

				<ForEach Name="Loop Jobs" In="${Jobs}" As="Job">
					<GetList Name="Get JobScheduleParts by Job" Type="JobSchedulePart" OutputProperty="${JobScheduleParts}" OrderBy="Vendor.Id" OrderDirection="Ascending">
						<Filters>
							<PropertyFilter	PropertyName="Job"	Operator="="		PropertyValue="${Job}" />
							<NotFilter>
								<PropertyEmptyFilter PropertyName="Vendor" />
							</NotFilter>
						</Filters>
					</GetList>

					<ForEach Name="Loop JobScheduleParts" In="${JobScheduleParts}" As="JobSchedulePart">
						<WorkflowCall Name="Job_CreatePurchaseRequestLine" WorkflowName="Job_CreatePurchaseRequestLine" Comment="Create a purchaseRequestLine per found jobschedulepart">
							<Parameter	Name="CalculateDeliveryDateMethod"	Direction="In"		Value="2" />
							<Parameter	Name="Currency"						Direction="In"		Value="#{Company.Currency}" />
							<Parameter	Name="Job"							Direction="In"		Value="${Job}" />
							<Parameter	Name="PurchaseRequestLine"			Direction="Out"									OutputProperty="${PurchaseRequestLine}" />
						</WorkflowCall>

						<Assign Name="Set PurchaseRequestLine.CreatedForStop" Property="${PurchaseRequestLine.CreatedForStop}" Value="True" />
						<Assign Name="Set PurchaseRequestLine.Description" Property="${PurchaseRequestLine.Description}" Value="${JobSchedulePart.JobResource.Craftsman.Description}" />

						<Command Name="Get_CraftsmanHourCategory" CommandName="Get_CraftsmanHourCategory">
							<Parameter	Name="Craftsman"				Direction="In"		Value="${JobSchedulePart.JobResource.Craftsman}" />
							<Parameter	Name="CraftsmanHourCategory"	Direction="Out"															OutputProperty="${CraftsmanHourCategory}" />
						</Command>

						<Assign Name="Set PurchaseRequestLine.GrossPrice" Property="${PurchaseRequestLine.GrossPrice}" Value="${CraftsmanHourCategory.Tariff1?}" />
						<Assign Name="Set PurchaseRequestLine.PurchaseQuantity" Property="${PurchaseRequestLine.PurchaseQuantity}" Value="=1*${JobSchedulePart.HoursCalculated}" />
						<Assign Name="Set PurchaseRequestLine.Site" Property="${PurchaseRequestLine.Site}" Value="${Job.Site}" />
						<Assign Name="Set PurchaseRequestLine.UnitDescription" Property="${PurchaseRequestLine.UnitDescription}" Value="${UnitDescription}" />
						<Assign Name="Set PurchaseRequestLine.Vendor" Property="${PurchaseRequestLine.Vendor}" Value="${JobSchedulePart.Vendor}" />

						<WorkflowCall Name="PurchaseRequestLine_CopyValuesFromJob" WorkflowName="PurchaseRequestLine_CopyValuesFromJob">
							<Parameter	Name="AutoAnswerCopyJobExpenseCarriers"	Direction="In"		Value="True" />
							<Parameter	Name="PurchaseRequestLine"				Direction="In"		Value="${PurchaseRequestLine}" />
						</WorkflowCall>

						<WorkflowCall Name="PurchaseRequestLine_SetCurrencyRateAndConversionFactor_CalculateAmounts" WorkflowName="PurchaseRequestLine_SetCurrencyRateAndConversionFactor_CalculateAmounts">
							<Parameter	Name="PurchaseRequestLine"	Direction="In"		Value="${PurchaseRequestLine}" />
						</WorkflowCall>

						<ChangeStatus Name="Concept" DomainObject="${PurchaseRequestLine}" NewStatus="PurchaseRequestLineStatus.Concept" />

						<ChangeStatus Name="Approve" DomainObject="${PurchaseRequestLine}" NewStatus="PurchaseRequestLineStatus.Approved" />

						<Assign Name="Increment PurchaseRequestLinesCreatedCount" Property="${PurchaseRequestLinesCreatedCount}" Value="=${PurchaseRequestLinesCreatedCount} + 1" />
					</ForEach>
				</ForEach>
			</ForEach>
		</Transaction>

		<UserContent Name="Post" />

		<Choose Name="check PurchaseRequestLinesCreatedCount">
			<When Name="Check if there are new purchaseRequestLines" Condition="${PurchaseRequestLinesCreatedCount} &gt; 0">
				<Message Name="Feedback+" MessageCode="2389">
					<Parameter	Name="PurchaseRequestLinesCreatedCount"	Direction="In"		Value="${PurchaseRequestLinesCreatedCount}" />
				</Message>
			</When>

			<Otherwise Name="no purchaserequestline is created">
				<Message Name="Feedback-" MessageCode="2394" />
			</Otherwise>
		</Choose>
	</Execution>
</Workflow>