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

ActionField365

Beschrijving: Delete InvoiceLines with linked PurchaseLines of this Invoice. Custom: Nee

Propertiesbewerken

Property Type Accessor
Invoice Invoice Root

XMLbewerken

<Workflow Name="ActionField365" Version="2025.07.28" WorkflowType="Standard" xmlns="urn:Ultimo.Framework.Workflow-mapping">
	<Security EditLevel="10" ViewLevel="20" UserContentLevel="30" />
	<Description>Delete InvoiceLines with linked PurchaseLines of this Invoice.</Description>
	<Properties>
		<Property	Name="Invoice"		Type="Invoice"				Accessor="Root"		Direction="In" />

		<Property	Name="InvoiceLines"	Type="List[InvoiceLine]"	Accessor="Internal" />
		<Property	Name="Purchase"		Type="Purchase"				Accessor="Internal" />
		<Property	Name="Purchases"	Type="List[Purchase]"		Accessor="Internal" />
		<Property	Name="Receipt"		Type="Receipt"				Accessor="Internal" />
		<Property	Name="Receipts"		Type="List[Receipt]"		Accessor="Internal" />
	</Properties>
	<Execution>
		<UserContent Name="Pre" />

		<Validation Name="InvoiceStatus OK?" Condition="${Invoice.Status} == InvoiceStatus.Created || ${Invoice.Status} == InvoiceStatus.CreditCreated || ${Invoice.Status} == InvoiceStatus.CreatedNoPurchase || ${Invoice.Status} == InvoiceStatus.CreditCreatedNoPurchase" MessageCode="0686">
			<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="InvoiceLines"	Alias="invoiceLine"	Type="InnerJoin" />
				</Joins>
				<Filters>
					<PropertyFilter	PropertyName="invoiceLine.Id.Invoice"	Operator="="		PropertyValue="${Invoice}" />
				</Filters>
			</GetList>

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

		<Validation Name="Items Added" Condition="${Invoice.PurchaseAddType} != None &amp;&amp; ( (${Purchases} != Empty &amp;&amp; ${Purchases.Count} != 0) || (${Receipts} != Empty &amp;&amp; ${Receipts.Count} != 0) )" MessageCode="2342">
			<Parameter	Name="Invoice"	Direction="In"		Value="${Invoice}" />
		</Validation>

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

				<When Name="More than one" Condition="${Purchases.Count} &gt; 1">
					<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>
				</When>

				<ContinuationQuestion Name="Continue Purchase" MessageCode="2345">
					<Parameter	Name="DomainObject"	Direction="In"		Value="${Purchase}" />
				</ContinuationQuestion>
			</When>

			<Otherwise Name="Receipt">
				<When Name="One" Condition="${Receipts.Count} == 1">
					<Assign Name="Set Receipt" Property="${Receipt}" Value="=#elementat(${Receipts},0)" />
				</When>

				<When Name="More than one" Condition="${Receipts.Count} &gt; 1">
					<SystemDialog Name="DialogSelectReceipt" DialogName="SelectDomainObject">
						<Parameter	Name="EntityName"					Direction="In"		Value="Receipt" />
						<Parameter	Name="SelectionListConfiguration"	Direction="In"		Value="Default" />
						<Parameter	Name="SqlWhereClause"				Direction="In"		Value="RcpId in (#foreach(${PossibleReceipt} in ${Receipts})#each'${PossibleReceipt.Id}'#between, #end)" />
						<Parameter	Name="DomainObject"					Direction="Out"																													OutputProperty="${Receipt}" />
					</SystemDialog>
				</When>

				<ContinuationQuestion Name="Continue Receipt" MessageCode="2345">
					<Parameter	Name="DomainObject"	Direction="In"		Value="${Receipt}" />
				</ContinuationQuestion>
			</Otherwise>
		</Choose>

		<Transaction>
			<GetList Name="Get invoicelines of selected Receipt" Type="InvoiceLine" OutputProperty="${InvoiceLines}" OrderBy="Id" OrderDirection="Ascending">
				<Filters>
					<CombinedFilter FilterOperator="And">
						<PropertyFilter	PropertyName="Id.Invoice"	Operator="="		PropertyValue="${Invoice}" />
						<WhenFilter Condition="${Receipt} != Empty">
							<PropertyFilter	PropertyName="ReceiptLine.Id.Receipt"	Operator="="		PropertyValue="${Receipt}" />
						</WhenFilter>
						<WhenFilter Condition="${Purchase} != Empty">
							<PropertyFilter	PropertyName="PurchaseLine.Id.Purchase"	Operator="="		PropertyValue="${Purchase}" />
						</WhenFilter>
					</CombinedFilter>
				</Filters>
			</GetList>

			<ForEach Name="Foreach invoiceline" In="${InvoiceLines}" As="InvoiceLine">
				<DeleteObject Name="Delete invoiceline" DomainObject="${InvoiceLine}" />
			</ForEach>
		</Transaction>

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