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

ActionField1041

Beschrijving: Change ArticleGroup on Article. Custom: Nee

Propertiesbewerken

Property Type Accessor
Article Article Root
ArticleGroupContext Context Optional

XMLbewerken

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

		<Property	Name="ArticleGroupContext"							Type="Context"			Accessor="Optional"	Direction="In"		Default="1"									Comment="Only ArticleGroups of this context are selectable (Default 1-Standard)" />

		<Property	Name="ArticleGroup"									Type="ArticleGroup"		Accessor="Internal" />
		<Property	Name="ArticleInventoryMethodUpdatedArticleGroup"	Type="Boolean"			Accessor="Internal" />
		<Property	Name="Articles"										Type="List[Article]"	Accessor="Internal" />
		<Property	Name="Batches"										Type="List[Batch]"		Accessor="Internal" />
		<Property	Name="ChangeInventoryMethod"						Type="RequestResult"	Accessor="Internal" />
		<Property	Name="CopyObjectFeatures"							Type="RequestResult"	Accessor="Internal"						Default="Yes" />
		<Property	Name="ObjectFeatureCount"							Type="Int64"			Accessor="Internal" />
		<Property	Name="OldArticleGroup"								Type="ArticleGroup"		Accessor="Internal"						Default="${Article.ArticleGroup}" />
		<Property	Name="UseOwnInventoryMethod"						Type="Boolean"			Accessor="Internal"						Default="${Article.UseOwnInventoryMethod}" />
	</Properties>
	<Execution>
		<UserContent Name="Pre" />

		<SystemDialog Name="DialogSelectArticleGroup" DialogName="SelectDomainObject">
			<Parameter	Name="EntityName"					Direction="In"		Value="ArticleGroup" />
			<Parameter	Name="SelectionListConfiguration"	Direction="In"		Value="Default" />
			<Parameter	Name="SqlWhereClause"				Direction="In"		Value="AgContext = ${ArticleGroupContext}" />
			<Parameter	Name="DomainObject"					Direction="Out"													OutputProperty="${ArticleGroup}" />
		</SystemDialog>

		<When Name="Article.UseOwnInventoryMethod = false" Condition="${Article.UseOwnInventoryMethod} == False &amp;&amp; ${Article.RegisterStock} == True">
			<When Name="inventory method will be changed" Condition="${Article.InventoryMethod} != ${ArticleGroup.InventoryMethod?}">
				<Question Name="Change Inventory Method As well" Type="YesNoCancel" MessageCode="2120" OutputProperty="${ChangeInventoryMethod}">
					<Parameter	Name="ArticleGroup"	Direction="In"		Value="${ArticleGroup}" />
					<Parameter	Name="NewMethod"	Direction="In"		Value="${ArticleGroup.InventoryMethod?}" />
					<Parameter	Name="OldMethod"	Direction="In"		Value="${Article.InventoryMethod}" />
				</Question>

				<Choose Name="Change?">
					<When Name="Still Changing" Condition="${ChangeInventoryMethod} == Yes">
						<AddToList Name="Add Article to Articles" List="${Articles}" Item="${Article}" />

						<WorkflowCall Name="Article_CheckCreateBatches" WorkflowName="Article_CheckCreateBatches">
							<Parameter	Name="Articles"				Direction="In"		Value="${Articles}" />
							<Parameter	Name="NewInventoryMethod"	Direction="In"		Value="${ArticleGroup.InventoryMethod?}" />
							<Parameter	Name="OldInventoryMethod"	Direction="In"		Value="${Article.InventoryMethod?}" />
							<Parameter	Name="OriginalDomainObject"	Direction="In"		Value="${Article}" />
						</WorkflowCall>

						<WorkflowCall Name="ActionField1088_Article_ChangeInventoryMethod" WorkflowName="Article_ChangeInventoryMethod">
							<Parameter	Name="DomainObject"					Direction="In"		Value="${Article}" />
							<Parameter	Name="InventoryMethod"				Direction="In"		Value="${ArticleGroup.InventoryMethod?}" />
							<Parameter	Name="UseAutoAnswerInventoryMethod"	Direction="In"		Value="True" />
						</WorkflowCall>
					</When>

					<Otherwise Name="Not Changing">
						<Assign Name="UseOwnInventoryMethod becomes true" Property="${UseOwnInventoryMethod}" Value="True" />
					</Otherwise>
				</Choose>
			</When>
		</When>

		<Transaction>
			<GetCount Name="Count objectfeatures for article" Type="ObjectFeature" OutputProperty="${ObjectFeatureCount}">
				<Filters>
					<PropertyFilter	PropertyName="Article"	Operator="="		PropertyValue="${Article}" />
				</Filters>
			</GetCount>
		</Transaction>

		<When Name="HasFeatures" Condition="${ObjectFeatureCount} &gt; 0">
			<Question Name="AskCopyFeaturesFromArticleGroupToArticle" Type="YesNo" MessageCode="2370" OutputProperty="${CopyObjectFeatures}">
				<Parameter	Name="Article"		Direction="In"		Value="${Article}" />
				<Parameter	Name="FeatureCount"	Direction="In"		Value="${ObjectFeatureCount}" />
			</Question>
		</When>

		<Transaction>
			<Assign Name="Set new articlegroup" Property="${Article.ArticleGroup}" Value="${ArticleGroup}" />
			<Assign Name="Set AddToBillOfMaterials" Property="${Article.AddToBillOfMaterials}" Value="${ArticleGroup.AddToBillOfMaterials?}" />

			<When Name="ArticleGroup Changed and previous not Empty" Condition="${OldArticleGroup} != Empty &amp;&amp; ${ArticleGroup} != ${OldArticleGroup}">
				<WorkflowCall Name="ArticleGroup_UpdateInventoryMethodWhenAllArticlesHaveSameInventoryMethod" WorkflowName="ArticleGroup_UpdateInventoryMethodWhenAllArticlesHaveSameInventoryMethod">
					<Parameter	Name="ArticleGroup"	Direction="In"		Value="${OldArticleGroup}" />
				</WorkflowCall>
			</When>

			<Assign Name="Set UseOwnInventoryMethod" Property="${Article.UseOwnInventoryMethod}" Value="${UseOwnInventoryMethod}" />

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

			<ForEach Name="Loop batches" In="${Batches}" As="Batch">
				<Assign Name="Set articlegroup" Property="${Batch.ArticleGroup}" Value="${ArticleGroup}" Comment="command Article_CreateTempBatch is called before the assignment" />
			</ForEach>

			<WorkflowCall Name="Article_UpdateArticlegroupInventoryMethod" WorkflowName="Article_UpdateArticlegroupInventoryMethod">
				<Parameter	Name="Article"										Direction="In"		Value="${Article}" />
				<Parameter	Name="ArticleInventoryMethodUpdatedArticleGroup"	Direction="Out"							OutputProperty="${ArticleInventoryMethodUpdatedArticleGroup}" />
			</WorkflowCall>

			<When Name="Answer is Yes" Condition="${CopyObjectFeatures} == Yes">
				<WorkflowCall Name="Article_CopyFeaturesFromArticleGroup" WorkflowName="Article_CopyFeaturesFromArticleGroup">
					<Parameter	Name="Article"	Direction="In"		Value="${Article}" />
				</WorkflowCall>
			</When>
		</Transaction>

		<UserContent Name="Post" />

		<When Name="Change on Article" Condition="${ArticleInventoryMethodUpdatedArticleGroup} == True">
			<Message Name="Changed To ArticleInventoryMethod" MessageCode="2116" />
		</When>
	</Execution>
</Workflow>