Categorie: reference
Bijgewerkt: 2026-04-08
actionfield workflow actionfield136
ActionField136
Beschrijving: Create InvoiceLines for Purchase or Receipt (depending on property PurchaseAddType). Custom: Nee
Propertiesbewerken
| Property | Type | Accessor |
|---|---|---|
| Invoice | Invoice | Root |
| Contexts | List[Context] | Optional |
| PurchaseAddType | PurchaseAddType | Optional |
| Statuses | List[Status] | Optional |
XMLbewerken
<Workflow Name="ActionField136" Version="2025.07.28" WorkflowType="Standard" xmlns="urn:Ultimo.Framework.Workflow-mapping">
<Security EditLevel="10" ViewLevel="20" UserContentLevel="30" />
<Description>Create InvoiceLines for Purchase or Receipt (depending on property PurchaseAddType).</Description>
<Properties>
<Property Name="Invoice" Type="Invoice" Accessor="Root" Direction="In" />
<Property Name="Contexts" Type="List[Context]" Accessor="Optional" Direction="In" Default="PurchaseContext.Purchase" Comment="Only select Purchases with these contexts" />
<Property Name="PurchaseAddType" Type="PurchaseAddType" Accessor="Optional" Direction="In" Default="None" Comment="Add InvoiceLines from None/Purchase/Receipt" />
<Property Name="Statuses" Type="List[Status]" Accessor="Optional" Direction="InOut" Default="PurchaseStatus.Active, PurchaseStatus.PartReceived, PurchaseStatus.Received" Comment="Statuses other than those in default are ignored, subset is allowed" />
<Property Name="InvoiceLineCount" Type="Int64" Accessor="Internal" />
<Property Name="NegativePurchaseLines" Type="Boolean" Accessor="Internal" />
<Property Name="Purchase" Type="Purchase" Accessor="Internal" />
<Property Name="Purchases" Type="List[Purchase]" Accessor="Internal" />
<Property Name="PurchaseSqlWhereClause" Type="String" Accessor="Internal" />
<Property Name="ReceiptChosen" Type="Receipt" Accessor="Internal" />
<Property Name="ReceiptLines" Type="List[ReceiptLine]" Accessor="Internal" />
<Property Name="Receipts" Type="List[Receipt]" Accessor="Internal" />
<Property Name="ReceiptSqlWhereClause" Type="String" Accessor="Internal" />
</Properties>
<Execution>
<UserContent Name="Pre" />
<Transaction>
<When Name="When only one purchase allowed per invoice" Condition="#{UltimoSettings.InvoiceMorePurchaseAllowed} == False">
<GetCount Name="Get a count of the number of invoice lines for this invoice" Type="InvoiceLine" OutputProperty="${InvoiceLineCount}">
<Filters>
<PropertyFilter PropertyName="Id.Invoice" Operator="=" PropertyValue="${Invoice}" />
</Filters>
</GetCount>
<Validation Name="ValidateNoLinesOnInvoiceYet" Condition="${InvoiceLineCount} == 0" MessageCode="0820" />
</When>
<Validation Name="InvoiceStatus OK?" Condition="${Invoice.Status} == InvoiceStatus.Created" MessageCode="0681">
<Parameter Name="Invoice" Direction="In" Value="${Invoice}" />
</Validation>
<When Name="PurchaseAddType is not none" Condition="${PurchaseAddType} != None">
<GetCount Name="Get invoicelinecount with purchaseline" Type="InvoiceLine" OutputProperty="${InvoiceLineCount}">
<Joins>
<Join Name="Id.Invoice" Alias="invoice" Type="InnerJoin" />
</Joins>
<Filters>
<PropertyFilter PropertyName="Id.Invoice" Operator="=" PropertyValue="${Invoice}" />
<PropertyFilter PropertyName="invoice.PurchaseAddType" Operator="!=" PropertyValue="${PurchaseAddType}" />
</Filters>
</GetCount>
<Validation Name="Check if invoice is based on purchase/receipt" Condition="${InvoiceLineCount} == 0" MessageCode="2341">
<Parameter Name="Invoice" Direction="In" Value="${Invoice}" />
</Validation>
</When>
</Transaction>
<Choose Name="Check PurchaseAddType">
<When Name="PurchaseAddType is Purchase" Condition="${PurchaseAddType} == Purchase">
<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>
<ForEach Name="Validate Statuses against those allowed" In="${Statuses}" As="Status">
<When Name="When status is not allowed" Condition="${Status} != PurchaseStatus.Active && ${Status} != PurchaseStatus.PartReceived && ${Status} != PurchaseStatus.Received">
<RemoveFromList Name="Remove status from list" List="${Statuses}" Item="${Status}" />
</When>
</ForEach>
<Command Name="Create whereclause for purchaseselection" CommandName="Purchase_CreateWhereClauseWithVendorAndCurrency">
<Parameter Name="Contexts" Direction="In" Value="${Contexts}" />
<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="${Statuses}" />
<Parameter Name="Vendor" Direction="In" Value="${Invoice.Vendor}" />
<Parameter Name="WhereClause" Direction="Out" OutputProperty="${PurchaseSqlWhereClause}" />
</Command>
</Transaction>
<SystemDialog Name="SelectDomainObject" 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>
<Transaction>
<WorkflowCall Name="Create invoicelines from purchaselines" WorkflowName="Purchase_CreateInvoiceLines">
<Parameter Name="Invoice" Direction="In" Value="${Invoice}" />
<Parameter Name="Purchase" Direction="In" Value="${Purchase}" />
<Parameter Name="NegativePurchaseLines" Direction="Out" OutputProperty="${NegativePurchaseLines}" />
</WorkflowCall>
</Transaction>
</When>
<When Name="PurchaseAddType is Receipt" Condition="${PurchaseAddType} == Receipt">
<Transaction>
<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>
<Command Name="Create whereclause for Receiptselection" CommandName="Receipt_CreateWhereClauseWithVendorAndCurrency">
<Parameter Name="Contexts" Direction="In" Value="ReceiptContext.Standard" />
<Parameter Name="Currency" Direction="In" Value="${Invoice.Currency}" />
<Parameter Name="CurrencyConversionFactor" Direction="In" Value="${Invoice.CurrencyConversionFactor}" />
<Parameter Name="Receipts" Direction="In" Value="${Receipts}" />
<Parameter Name="Statuses" Direction="In" Value="ReceiptStatus.Approved" />
<Parameter Name="Vendor" Direction="In" Value="${Invoice.Vendor}" />
<Parameter Name="WhereClause" Direction="Out" OutputProperty="${ReceiptSqlWhereClause}" />
</Command>
<SystemDialog Name="SelectDomainObject" DialogName="SelectDomainObject">
<Parameter Name="EntityName" Direction="In" Value="Receipt" />
<Parameter Name="SelectionListConfiguration" Direction="In" Value="Default" />
<Parameter Name="SqlWhereClause" Direction="In" Value="${ReceiptSqlWhereClause}" />
<Parameter Name="DomainObject" Direction="Out" OutputProperty="${ReceiptChosen}" />
</SystemDialog>
<Transaction>
<GetList Name="Get ReceiptLines " Type="ReceiptLine" OutputProperty="${ReceiptLines}" OrderBy="Id" OrderDirection="Ascending">
<Joins>
<Join Name="PurchaseLine" Alias="purchaseLine" Type="InnerJoin" />
</Joins>
<Filters>
<PropertyFilter PropertyName="Id.Receipt" Operator="=" PropertyValue="${ReceiptChosen}" />
<PropertyFilter PropertyName="purchaseLine.ReceivedQuantity" Operator=">" PropertyValue="0" />
</Filters>
</GetList>
<When Name="ReceiptLines are created" Condition="${ReceiptLines.Count} > 0">
<Choose Name="Check Purchase.UseFixedExchangeRate">
<When Name="Purchase.UseFixedExchangeRate is true" Condition="${ReceiptChosen.Purchase.UseFixedExchangeRate?} == True">
<Assign Name="Set Invoice.CurrencyConversionFactor" Property="${Invoice.CurrencyConversionFactor}" Value="${ReceiptChosen.Purchase.CurrencyConversionFactor}" />
<Assign Name="Set Invoice.CurrencyRate" Property="${Invoice.CurrencyRate}" Value="${ReceiptChosen.Purchase.CurrencyRate}" />
</When>
<Otherwise Name="Get new ExchangeRate">
<Command Name="FindExchangeRate" CommandName="FindExchangeRate">
<Parameter Name="CounterCurrency" Direction="In" Value="${ReceiptChosen.Currency?}" />
<Parameter Name="Date" Direction="In" Value="#{Environment.CurrentDateTime}" />
<Parameter Name="ConversionFactor" Direction="Out" OutputProperty="${Invoice.CurrencyConversionFactor}" />
<Parameter Name="Rate" Direction="Out" OutputProperty="${Invoice.CurrencyRate}" />
</Command>
</Otherwise>
</Choose>
<Assign Name="Set Invoice.Currency" Property="${Invoice.Currency}" Value="${ReceiptChosen.Currency?}" />
<Assign Name="Set Invoice.PurchaseAddType" Property="${Invoice.PurchaseAddType}" Value="Receipt" />
<Assign Name="Set Invoice.Vendor" Property="${Invoice.Vendor}" Value="${ReceiptChosen.Vendor}" />
</When>
<ForEach Name="For each ReceiptLine" In="${ReceiptLines}" As="ReceiptLine">
<Command Name="Create invoiceline from receiptline" CommandName="PurchaseLine_CreateInvoiceLine">
<Parameter Name="Invoice" Direction="In" Value="${Invoice}" />
<Parameter Name="PurchaseLine" Direction="In" Value="${ReceiptLine.PurchaseLine}" />
<Parameter Name="ReceiptLine" Direction="In" Value="${ReceiptLine}" />
</Command>
</ForEach>
</Transaction>
</When>
</Choose>
<UserContent Name="Post" />
<When Name="Negative purchaselines encountered » Yes" Condition="${NegativePurchaseLines} == True">
<Message Name="ummPURCHCONTNEG" MessageCode="0587" />
</When>
</Execution>
</Workflow>