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

ActionField188

Beschrijving: Add InvoiceLine to Invoice. Custom: Nee

Propertiesbewerken

Property Type Accessor
Invoice Invoice Root
FormName String Optional
FormNameForStatusCreated String Optional
FormNameForStatusCreditCreated String Optional

XMLbewerken

<Workflow Name="ActionField188" Version="2025.07.28" WorkflowType="Standard" xmlns="urn:Ultimo.Framework.Workflow-mapping">
	<Security EditLevel="10" ViewLevel="20" UserContentLevel="30" />
	<Description>Add InvoiceLine to Invoice.</Description>
	<Properties>
		<Property	Name="Invoice"							Type="Invoice"				Accessor="Root"		Direction="In" />

		<Property	Name="FormName"							Type="String"				Accessor="Optional"	Direction="In" />
		<Property	Name="FormNameForStatusCreated"			Type="String"				Accessor="Optional"	Direction="In"		Comment="Open this screen after the invoiceline (invoice status is Created) is created" />
		<Property	Name="FormNameForStatusCreditCreated"	Type="String"				Accessor="Optional"	Direction="In"		Comment="Open this screen after the invoiceline (invoice status is CreditCreated) is created" />

		<Property	Name="CreatedInvoiceLine"				Type="InvoiceLine"			Accessor="Internal" />
		<Property	Name="CreatedPurchaseLine"				Type="PurchaseLine"			Accessor="Internal" />
		<Property	Name="Purchase"							Type="Purchase"				Accessor="Internal" />
		<Property	Name="PurchaseFormula"					Type="CollectInputFormula"	Accessor="Internal" />
		<Property	Name="Purchases"						Type="List[Purchase]"		Accessor="Internal" />
		<Property	Name="PurchaseSqlWhereClause"			Type="String"				Accessor="Internal" />
	</Properties>
	<Execution>
		<UserContent Name="Pre" />

		<Validation Name="InvoiceStatus OK?" Condition="${Invoice.Status} == InvoiceStatus.Created || ${Invoice.Status} == InvoiceStatus.CreditCreated" MessageCode="0688">
			<Parameter	Name="Invoice"	Direction="In"		Value="${Invoice}" />
		</Validation>

		<Transaction>
			<GetList Name="Get purchases on invoice" Type="Purchase" OutputProperty="${Purchases}" OrderBy="Id" OrderDirection="Ascending">
				<Joins>
					<Join	Name="PurchaseLines"	Alias="purchaseLine"	Type="InnerJoin" />
					<Join	Name="InvoiceLines"		Alias="invoiceLine"		Type="InnerJoin" />
				</Joins>
				<Filters>
					<PropertyFilter	PropertyName="invoiceLine.Id.Invoice"	Operator="="		PropertyValue="${Invoice}" />
				</Filters>
			</GetList>
		</Transaction>

		<Validation Name="Invoice has purchase" Condition="${Purchases.Count} != 0" MessageCode="0682">
			<Parameter	Name="Invoice"	Direction="In"		Value="${Invoice}" />
		</Validation>

		<Choose Name="Number of purchases on invoice">
			<When Name="More than one" Condition="${Purchases.Count} &gt; 1">
				<Transaction>
					<GetList Name="Get purchases on invoice" Type="Purchase" OutputProperty="${Purchases}" OrderBy="Id" OrderDirection="Ascending">
						<Joins>
							<Join	Name="PurchaseLines"	Alias="purchaseLine"	Type="InnerJoin" />
							<Join	Name="InvoiceLines"		Alias="invoiceLine"		Type="InnerJoin" />
						</Joins>
						<Filters>
							<PropertyFilter	PropertyName="invoiceLine.Id.Invoice"	Operator="="		PropertyValue="${Invoice}" />
						</Filters>
					</GetList>

					<Command Name="Create purchase whereclause" CommandName="Purchase_CreateWhereClause188">
						<Parameter	Name="Currency"					Direction="In"		Value="${Invoice.Currency}" />
						<Parameter	Name="CurrencyConversionFactor"	Direction="In"		Value="${Invoice.CurrencyConversionFactor}" />
						<Parameter	Name="Purchases"				Direction="In"		Value="${Purchases}" />
						<Parameter	Name="Statuses"					Direction="In"		Value="PurchaseStatus.Active,PurchaseStatus.PartReceived,PurchaseStatus.Received" />
						<Parameter	Name="Vendor"					Direction="In"		Value="${Invoice.Vendor}" />
						<Parameter	Name="WhereClause"				Direction="Out"																							OutputProperty="${PurchaseSqlWhereClause}" />
					</Command>
				</Transaction>

				<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="${PurchaseSqlWhereClause}" />
					<Parameter	Name="DomainObject"					Direction="Out"											OutputProperty="${Purchase}" />
				</SystemDialog>
			</When>


			<When Name="Exactly one" Condition="${Purchases.Count} == 1">
				<Transaction>
					<Command Name="Get only purchase" CommandName="Purchases_GetFirst">
						<Parameter	Name="Purchases"	Direction="In"		Value="${Purchases}" />
						<Parameter	Name="Purchase"		Direction="Out"								OutputProperty="${Purchase}" />
					</Command>
				</Transaction>
			</When>

			<Otherwise Name="None" Comment="Error: invoice without invoicelines so no purchase">
				<Stop Name="Stop" Mode="Abort" />
			</Otherwise>
		</Choose>

		<Transaction>
			<Command Name="Create purchaseline" CommandName="PurchaseLine_Create">
				<Parameter	Name="Purchase"				Direction="In"		Value="${Purchase}" />
				<Parameter	Name="PurchaseLineStatus"	Direction="In"		Value="PurchaseLineStatus.AddedInvoiceLine" />
				<Parameter	Name="PurchaseLine"			Direction="Out"													OutputProperty="${CreatedPurchaseLine}" />
			</Command>

			<Command Name="Create invoiceline" CommandName="InvoiceLine_Create">
				<Parameter	Name="Invoice"				Direction="In"		Value="${Invoice}" />
				<Parameter	Name="InvoiceLineStatus"	Direction="In"		Value="InvoiceLineStatus.PurchaseLineAdded" />
				<Parameter	Name="InvoiceLine"			Direction="Out"													OutputProperty="${CreatedInvoiceLine}" />
			</Command>

			<Assign Name="Purchaseline refers to invoiceline" Property="${CreatedPurchaseLine.InvoiceLine}" Value="${CreatedInvoiceLine}" />
			<Assign Name="InvoiceLine refers to purchaseline" Property="${CreatedInvoiceLine.PurchaseLine}" Value="${CreatedPurchaseLine}" />
		</Transaction>

		<Choose Name="Invoice status">
			<When Name="Created" Condition="${Invoice.Status} == InvoiceStatus.Created">
				<Assign Name="FormName = FormNameForStatusCreated" Property="${FormName}" Value="${FormNameForStatusCreated}" />
			</When>

			<Otherwise Name="CreditCreated" Comment="${Invoice.Status} == InvoiceStatus.CreditCreated">
				<Assign Name="FormName = FormNameForStatusCreditCreated" Property="${FormName}" Value="${FormNameForStatusCreditCreated}" />
			</Otherwise>
		</Choose>

		<UserContent Name="Post" />

		<View Name="Open screen to edit purchaseline" 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>