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

ActionField1801

Beschrijving: Change ReplacedByArticle. Custom: Nee

Propertiesbewerken

Property Type Accessor
Article Article Root

XMLbewerken

<Workflow Name="ActionField1801" Version="2025.07.28" WorkflowType="Standard" xmlns="urn:Ultimo.Framework.Workflow-mapping">
	<Security EditLevel="10" ViewLevel="20" UserContentLevel="30" />
	<Description>Change ReplacedByArticle.</Description>
	<Properties>
		<Property	Name="Article"					Type="Article"				Accessor="Root"		Direction="In" />

		<Property	Name="AlternativeArticles"		Type="List[ObjectArticle]"	Accessor="Internal" />
		<Property	Name="Articles"					Type="List[Article]"		Accessor="Internal" />
		<Property	Name="ArticleSelected"			Type="Article"				Accessor="Internal" />
		<Property	Name="ObjectArticleCreated"		Type="ObjectArticle"		Accessor="Internal" />
		<Property	Name="ObjectArticlesToDelete"	Type="List[ObjectArticle]"	Accessor="Internal" />
		<Property	Name="ReplacementForArticles"	Type="List[ObjectArticle]"	Accessor="Internal" />
	</Properties>
	<Execution>
		<UserContent Name="Pre" />

		<Validation Name="ValidateEmployeeAndDate" Condition="${Article.ReplacedByArticle} == Empty || (${Article.ReplacedByEmployee} == Empty &amp;&amp; ${Article.ReplacedByDate}== Empty)" MessageCode="3707">
			<Parameter	Name="Article"	Direction="In"		Value="${Article}" />
		</Validation>

		<SystemDialog Name="DialogSelectObjectArticles" DialogName="SelectDomainObject">
			<Parameter	Name="EntityName"					Direction="In"		Value="Article" />
			<Parameter	Name="SelectionListConfiguration"	Direction="In"		Value="Default" />
			<Parameter	Name="SqlWhereClause"				Direction="In"		Value="artid &lt;&gt; '${Article.Id}' AND artid &lt;&gt; '${Article.ReplacedByArticle.Id?}' and ArtReplacedByArtId IS NULL" />
			<Parameter	Name="DomainObject"					Direction="Out"																																	OutputProperty="${ArticleSelected}" />
		</SystemDialog>

		<Transaction>
			<When Name="ReplacedByArticle was filled" Condition="${Article.ReplacedByArticle} != Empty">
				<GetList Name="Get ObjectArticlesToDelete" Type="ObjectArticle" OutputProperty="${ObjectArticlesToDelete}" OrderBy="Id" OrderDirection="Ascending">
					<Filters>
						<CombinedFilter FilterOperator="Or">
							<PropertyFilter	PropertyName="ReplacementForArticle"	Operator="="		PropertyValue="${Article}" />
							<PropertyFilter	PropertyName="Article"					Operator="="		PropertyValue="${Article}" />
						</CombinedFilter>
						<PropertyFilter	PropertyName="Context"	Operator="="		PropertyValue="ObjectArticleContext.Replacement" />
					</Filters>
				</GetList>

				<ForEach Name="Foreach ObjectArticleToDelete" In="${ObjectArticlesToDelete}" As="ObjectArticleToDelete">
					<DeleteObject Name="Delete ObjectArticlesToDelete" DomainObject="${ObjectArticleToDelete}" />
				</ForEach>
			</When>

			<Assign Name="Assign ReplacedByArticle" Property="${Article.ReplacedByArticle}" Value="${ArticleSelected}" />

			<GetList Name="Get Articles" Type="Article" OutputProperty="${Articles}" OrderBy="Id" OrderDirection="Ascending">
				<Filters>
					<PropertyFilter	PropertyName="ReplacedByArticle"	Operator="="		PropertyValue="${Article}" />
				</Filters>
			</GetList>

			<ForEach Name="Foreach Article" In="${Articles}" As="ReplacedByArtId">
				<Assign Name="Assign ReplacedByArticle" Property="${ReplacedByArtId.ReplacedByArticle}" Value="${ArticleSelected}" />
			</ForEach>

			<GetList Name="Get ReplacementForArticles" Type="ObjectArticle" OutputProperty="${ReplacementForArticles}" OrderBy="Id" OrderDirection="Ascending">
				<Filters>
					<PropertyFilter	PropertyName="Article"	Operator="="		PropertyValue="${Article}" />
					<PropertyFilter	PropertyName="Context"	Operator="="		PropertyValue="ObjectArticleContext.Replacement" />
				</Filters>
			</GetList>

			<ForEach Name="Foreach ReplacementForArticle" In="${ReplacementForArticles}" As="ReplacementForArticle">
				<Insert Name="Create ObjectArticle" ObjectType="ObjectArticle" OutputProperty="${ObjectArticleCreated}">
					<Parameter	Name="Context"					Direction="In"		Value="ObjectArticleContext.Replacement" />
					<Parameter	Name="Article"					Direction="In"		Value="${Article.ReplacedByArticle}" />
					<Parameter	Name="ReplacementForArticle"	Direction="In"		Value="${ReplacementForArticle.ReplacementForArticle}" />
				</Insert>
			</ForEach>

			<GetList Name="Get Alternative Articles" Type="ObjectArticle" OutputProperty="${AlternativeArticles}" OrderBy="Id" OrderDirection="Ascending">
				<Filters>
					<PropertyFilter	PropertyName="Article"	Operator="="		PropertyValue="${Article}" />
					<PropertyFilter	PropertyName="Context"	Operator="="		PropertyValue="ObjectArticleContext.Alternative" />
				</Filters>
			</GetList>

			<ForEach Name="Foreach AlternativeArticle" In="${AlternativeArticles}" As="AlternativeArticle">
				<GetItem Name="Get ObjectArticle" Type="ObjectArticle" OutputProperty="${ObjectArticleCreated}">
					<Filters>
						<PropertyFilter	PropertyName="Context"				Operator="="		PropertyValue="ObjectArticleContext.Alternative" />
						<PropertyFilter	PropertyName="AlternativeArticle"	Operator="="		PropertyValue="${AlternativeArticle.AlternativeArticle}" />
						<PropertyFilter	PropertyName="Article"				Operator="="		PropertyValue="${Article.ReplacedByArticle}" />
					</Filters>
				</GetItem>

				<When Name="ObjectArticleCreated does not exists" Condition="${ObjectArticleCreated} == Empty &amp;&amp; ${Article.ReplacedByArticle} != ${AlternativeArticle.AlternativeArticle}">
					<Insert Name="Create ObjectArticle" ObjectType="ObjectArticle" OutputProperty="${ObjectArticleCreated}">
						<Parameter	Name="Context"				Direction="In"		Value="ObjectArticleContext.Alternative" />
						<Parameter	Name="AlternativeArticle"	Direction="In"		Value="${AlternativeArticle.AlternativeArticle}" />
						<Parameter	Name="Article"				Direction="In"		Value="${Article.ReplacedByArticle}" />
					</Insert>

					<Copy Name="Copy AlternativeArticle" Source="${AlternativeArticle}" Target="${ObjectArticleCreated}" CopyType="OnlySetIfEmpty" CustomOnly="False" />
				</When>
			</ForEach>

			<Insert Name="Create ObjectArticle" ObjectType="ObjectArticle" OutputProperty="${ObjectArticleCreated}">
				<Parameter	Name="Context"					Direction="In"		Value="ObjectArticleContext.Replacement" />
				<Parameter	Name="Article"					Direction="In"		Value="${Article.ReplacedByArticle}" />
				<Parameter	Name="ReplacementForArticle"	Direction="In"		Value="${Article}" />
			</Insert>
		</Transaction>

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