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

ActionField108

Beschrijving: Add a ReceiptLine with status PurchaseLineAdded to a Receipt. Also create a PurchaseLine for the added ReceiptLine (Receipt status must be Created or PreApproved). Custom: Nee

Propertiesbewerken

Property Type Accessor
Receipt Receipt Root
FormName UltimoString Optional
SelectReceivedPurchases Boolean Optional

XMLbewerken

<Workflow Name="ActionField108" Version="2025.07.28" WorkflowType="Standard" xmlns="urn:Ultimo.Framework.Workflow-mapping">
	<Security EditLevel="10" ViewLevel="20" UserContentLevel="30" />
	<Description>Add a ReceiptLine with status PurchaseLineAdded to a Receipt. Also create a PurchaseLine for the added ReceiptLine (Receipt status must be Created or PreApproved).</Description>
	<Properties>
		<Property	Name="Receipt"					Type="Receipt"			Accessor="Root"		Direction="In" />

		<Property	Name="FormName"					Type="UltimoString"		Accessor="Optional"	Direction="In"						Comment="Open this screen with the created ReceiptLine" />
		<Property	Name="SelectReceivedPurchases"	Type="Boolean"			Accessor="Optional"	Direction="In"		Default="False"	Comment="When False only select Purchases with statuses Active,PartReceived when True also select Purchases with status Received" />

		<Property	Name="CreatedPurchaseLine"		Type="PurchaseLine"		Accessor="Internal" />
		<Property	Name="Purchase"					Type="Purchase"			Accessor="Internal" />
		<Property	Name="Purchases"				Type="List[Purchase]"	Accessor="Internal" />
		<Property	Name="Statuses"					Type="List[Status]"		Accessor="Internal" />
	</Properties>
	<Execution>
		<UserContent Name="Pre" />

		<Transaction>
			<Validation Name="Validate Receipt status" Condition="${Receipt.Status} == ReceiptStatus.Created || ${Receipt.Status} == ReceiptStatus.PreApproved" MessageCode="0514">
				<Parameter	Name="Receipt"	Direction="In"		Value="${Receipt}" />
			</Validation>

			<When Name="SelectReceivedPurchases is true" Condition="${SelectReceivedPurchases} == True">
				<Assign Name="Set Statuses" Property="${Statuses}" Value="PurchaseStatus.Active,PurchaseStatus.PartReceived,PurchaseStatus.Received" />
			</When>

			<When Name="SelectReceivedPurchases is False" Condition="${SelectReceivedPurchases} == False">
				<Assign Name="Set Statuses" Property="${Statuses}" Value="PurchaseStatus.Active,PurchaseStatus.PartReceived" />
			</When>

			<GetList Name="Get Purchases" Type="Purchase" OutputProperty="${Purchases}" OrderBy="Id" OrderDirection="Ascending">
				<Filters>
					<InFilter PropertyName="Status" Values="${Statuses}" />
					<InFilter PropertyName="Id">
						<Subquery Type="ReceiptLine">
							<Joins>
								<Join	Name="PurchaseLine"	Alias="purchaseLine"	Type="InnerJoin" />
							</Joins>
							<Filters>
								<PropertyFilter	PropertyName="Id.Receipt"	Operator="="		PropertyValue="${Receipt}" />
							</Filters>
							<Properties>
								<Property Name="purchaseLine.Id.Purchase.Id" Alias="PurchaseId" Type="Property" />
							</Properties>
						</Subquery>
					</InFilter>
				</Filters>
			</GetList>

			<Validation Name="No Purchase" Condition="${Purchases} != Empty" MessageCode="2340">
				<Parameter	Name="Purchase"	Direction="In"		Value="${Purchase}" />
			</Validation>
		</Transaction>

		<Choose Name="Count">
			<When Name="Just One" Condition="${Purchases.Count} == 1">
				<Assign Name="Set Purchase" Property="${Purchase}" Value="=#elementat(${Purchases},0)" />
			</When>

			<Otherwise Name="More than one">
				<SystemDialog Name="DialogSelectPurchase" DialogName="SelectDomainObject">
					<Parameter	Name="EntityName"					Direction="In"		Value="Purchase" />
					<Parameter	Name="SelectionListConfiguration"	Direction="In"		Value="Default" />
					<Parameter	Name="SqlWhereClause"				Direction="In"		Value="PchId in (#foreach(${PossiblePurchase} in ${Purchases})#each'${PossiblePurchase.Id}'#between, #end)" />
					<Parameter	Name="DomainObject"					Direction="Out"																													OutputProperty="${Purchase}" />
				</SystemDialog>
			</Otherwise>
		</Choose>

		<Transaction>
			<Comment><![CDATA[Validation Kept just in case]]></Comment>

			<When Name="SelectReceivedPurchases is true" Condition="${SelectReceivedPurchases} == True">
				<Validation Name="Validate Purchase status" Condition="${Purchase.Status} == PurchaseStatus.Active || ${Purchase.Status} == PurchaseStatus.PartReceived || ${Purchase.Status} == PurchaseStatus.Received" MessageCode="2717">
					<Parameter	Name="Purchase"	Direction="In"		Value="${Purchase}" />
				</Validation>
			</When>

			<When Name="SelectReceivedPurchases is False" Condition="${SelectReceivedPurchases} == False">
				<Validation Name="Validate Purchase status" Condition="${Purchase.Status} == PurchaseStatus.Active || ${Purchase.Status} == PurchaseStatus.PartReceived" MessageCode="0515">
					<Parameter	Name="Purchase"	Direction="In"		Value="${Purchase}" />
				</Validation>
			</When>

			<WorkflowCall Name="Purchase_CreateReceiptLine" WorkflowName="Purchase_CreateReceiptLine">
				<Parameter	Name="Purchase"				Direction="In"		Value="${Purchase}" />
				<Parameter	Name="Receipt"				Direction="In"		Value="${Receipt}" />
				<Parameter	Name="CreatedPurchaseLine"	Direction="Out"							OutputProperty="${CreatedPurchaseLine}" />
			</WorkflowCall>
		</Transaction>

		<UserContent Name="Post" />

		<View Name="Go to PurchaseLine screen" ViewName="DataEntryScreen">
			<Parameter	Name="DomainObject"			Direction="In"		Value="${CreatedPurchaseLine}" />
			<Parameter	Name="FocusEditableField"	Direction="In"		Value="True" />
			<Parameter	Name="ScreenName"			Direction="In"		Value="${FormName}" />
		</View>
	</Execution>
</Workflow>