ActionField286
Beschrijving: Changes the progress status of a job and/or books hours. If applicable, sets the release condition of an equipment. Custom: Nee
Propertiesbewerken
| Property | Type | Accessor |
|---|---|---|
| Job | Job | Root |
| AllowedProgressStatusList | List[ProgressStatus] | Optional |
| AskForDocumentDescription | Boolean | Optional |
| AskForDocumentType | Boolean | Optional |
| AskForSite | Boolean | Optional |
| BookHours | Boolean | Optional |
| BookHoursDurationIntervalInMinutes | Int32? | Optional |
| DefaultProgressStatusIdForQualityNotOk | UltimoString | Optional |
| DefaultProgressStatusIdForQualityOk | UltimoString | Optional |
| DialogTitleLabel | String | Optional |
| DocumentContext | Context | Optional |
| DocumentFileSystemPath | FileSystemPath | Optional |
| DocumentStatus | Status | Optional |
| DocumentUserAsManager | Boolean | Optional |
| Employee | Employee | Optional |
| EmployeeFilter | String | Optional |
| EnableDate | Boolean | Optional |
| EnableToChangeEquipmentStatusWhenChangingJobStatus | Boolean | Optional |
| EquipmentStatusesWithoutReleaseCondition | List[Status] | Optional |
| MaxBookHours | Int32? | Optional |
| NotifyAboutUnapprovedProductsOnActivate | Boolean | Optional |
| ProgressStatusContext | Context | Optional |
| ProgressStatusDialogOptions | ProgressStatusDialogOptions | Optional |
| ReleaseCondition | ReleaseCondition | Optional |
| ShowLinkDocument | Boolean | Optional |
| SplitHoursForPreviousDay | Boolean | Optional |
| UseReleaseCondition | Boolean | Optional |
| WorkDescriptionLabel | UltimoString | Optional |
Gerelateerde workflowsbewerken
| Workflow | Beschrijving |
|---|---|
Job_ActionField286_AddDocuments |
Upload file and create ObjectDocument for Job. |
Job_Actionfield286_BookHours |
BookHours |
Job_Actionfield286_MultijobTemplateLineExist |
Check MultijobTemplate/ JobSuccessors |
Job_Actionfield286_ProcessMultiJobTemplate |
Process MultiJobTemplate |
Job_Actionfield286_ReleaseCondition |
Validate ReleaseCondition on Job |
Job_Actionfield286_SetMultiJobTemplate |
Set MultiJobTemplate properties on job |
Job_Actionfield286_SetUseReleaseCondition |
Validate ReleaseCondition on Job |
Job_Actionfield286_SetValuesAndShowDialog |
Changes the progress status of a job and/or books hours. If applicable, sets the release condition of an equipment.(AF286).Set values and showDialog Dialog_HourRegistration |
Job_Actionfield286_ValidateBookHours |
Validate BookHours |
Job_Actionfield286_ValidateJobMaterial |
Validate JobMaterial |
Job_Actionfield286_ValidateTargetDate |
Validate Job.TargetDate for MultijobTemplate |
XMLbewerken
<Workflow Name="ActionField286" Version="2025.07.28" WorkflowType="Standard" xmlns="urn:Ultimo.Framework.Workflow-mapping">
<Security EditLevel="10" ViewLevel="20" UserContentLevel="30" />
<Description>Changes the progress status of a job and/or books hours. If applicable, sets the release condition of an equipment.</Description>
<Properties>
<Property Name="Job" Type="Job" Accessor="Root" Direction="In" />
<Property Name="AllowedProgressStatusList" Type="List[ProgressStatus]" Accessor="Optional" Direction="In" Comment="List of Allowed Progressstatuses" />
<Property Name="AskForDocumentDescription" Type="Boolean" Accessor="Optional" Direction="In" Default="#{Settings.DocumentUpload.AskForDocumentDescription}" Comment="Input field documentDescription is displayed in the dialog when this property is set to true" />
<Property Name="AskForDocumentType" Type="Boolean" Accessor="Optional" Direction="In" Default="#{Settings.DocumentUpload.AskForDocumentType}" Comment="Input field documentType is displayed in the dialog when this property is set to true" />
<Property Name="AskForSite" Type="Boolean" Accessor="Optional" Direction="In" Default="#{Settings.DocumentUpload.AskForSite}" Comment="Input field site is displayed in the dialog when this property is set to true" />
<Property Name="BookHours" Type="Boolean" Accessor="Optional" Direction="In" Default="=#settingenabled(${Job}, Job.BookHours) ? #getsetting(${Job}, Job.BookHours) : False" Comment="True in order to use hour registration." />
<Property Name="BookHoursDurationIntervalInMinutes" Type="Int32?" Accessor="Optional" Direction="In" Default="=#settingenabled(${Job}, Job.BookHoursDurationIntervalInMinutes) ? #getsetting(${Job}, Job.BookHoursDurationIntervalInMinutes) : 15" Comment="Interval in minutes shown in the dropdown." />
<Property Name="DefaultProgressStatusIdForQualityNotOk" Type="UltimoString" Accessor="Optional" Direction="In" Comment="Used for Bulk PM only. Progress status used for the jobs created from the InspectionLines, which are not marked Quality OK" />
<Property Name="DefaultProgressStatusIdForQualityOk" Type="UltimoString" Accessor="Optional" Direction="In" Comment="Used for Bulk PM only. Progress status used for the jobs created from the InspectionLines, which are marked Quality OK" />
<Property Name="DialogTitleLabel" Type="String" Accessor="Optional" Direction="In" Comment="Label code used for dialog title." />
<Property Name="DocumentContext" Type="Context" Accessor="Optional" Direction="In" Default="DocumentContext.Standard" Comment="Create Document with this context" />
<Property Name="DocumentFileSystemPath" Type="FileSystemPath" Accessor="Optional" Direction="In" Default="001" Comment="Location of the files" />
<Property Name="DocumentStatus" Type="Status" Accessor="Optional" Direction="In" Default="DocumentStatus.Active" Comment="Create Document with this status" />
<Property Name="DocumentUserAsManager" Type="Boolean" Accessor="Optional" Direction="In" Default="False" Comment="Set Document.ManageEmployee to User." />
<Property Name="Employee" Type="Employee" Accessor="Optional" Direction="In" Default="#{User.EmployeeId}" Comment="Employee used as default for hour registration and status transition." />
<Property Name="EmployeeFilter" Type="String" Accessor="Optional" Direction="In" Default="EmpContext = 1 AND EMPCOMPID=N'#{Company.Id}'" Comment="Filter used for employees shown in the employee selection dropdown. Format: EmpContext = 1 AND EmpSkcId = TD" />
<Property Name="EnableDate" Type="Boolean" Accessor="Optional" Direction="In" Default="True" Comment="Prevent users can set the date manual" />
<Property Name="EnableToChangeEquipmentStatusWhenChangingJobStatus" Type="Boolean" Accessor="Optional" Direction="In" Default="=#settingenabled(${Job}, Job.EnableToChangeEquipmentStatusWhenChangingJobStatus) ? #getsetting(${Job}, Job.EnableToChangeEquipmentStatusWhenChangingJobStatus) : False" Comment="In dialog 'Update Progress' allows to change the status of the equipment registered on the job." />
<Property Name="EquipmentStatusesWithoutReleaseCondition" Type="List[Status]" Accessor="Optional" Direction="In" Default="Empty" Comment="Set here the equipment statuses that dont need a releasecondition" />
<Property Name="MaxBookHours" Type="Int32?" Accessor="Optional" Direction="In" Default="=#settingenabled(${Job}, Job.MaxBookHours) ? #getsetting(${Job}, Job.MaxBookHours) : 10" Comment="Maximum number of hours to book shown in the dropdown." />
<Property Name="NotifyAboutUnapprovedProductsOnActivate" Type="Boolean" Accessor="Optional" Direction="In" Default="True" Comment="Set to False to suppress notification about open/quoted products" />
<Property Name="ProgressStatusContext" Type="Context" Accessor="Optional" Direction="In" Comment="Context for the possible progress status records." />
<Property Name="ProgressStatusDialogOptions" Type="ProgressStatusDialogOptions" Accessor="Optional" Direction="In" Default="TextAndStatus" Comment="Allow user to modify both text and status." />
<Property Name="ReleaseCondition" Type="ReleaseCondition" Accessor="Optional" Direction="In" Comment="When given, it will be shown in the dialog." />
<Property Name="ShowLinkDocument" Type="Boolean" Accessor="Optional" Direction="In" Default="=#settingenabled(${Job}, Job.ShowLinkDocument) ? #getsetting(${Job}, Job.ShowLinkDocument) : True" Comment="When given, a field to attach documents will be shown in the dialog." />
<Property Name="SplitHoursForPreviousDay" Type="Boolean" Accessor="Optional" Direction="In" Default="=#settingenabled(${Job}, Job.SplitHoursForPreviousDay) ? #getsetting(${Job}, Job.SplitHoursForPreviousDay) : True" Comment="True when hours worked during previous day should be booked on that day instead of on ActivityDay." />
<Property Name="UseReleaseCondition" Type="Boolean" Accessor="Optional" Direction="In" Default="True" Comment="True to use release condition." />
<Property Name="WorkDescriptionLabel" Type="UltimoString" Accessor="Optional" Direction="In" Comment="Label code used for workdescription." />
<Property Name="ActivityDate" Type="DateTime?" Accessor="Internal" />
<Property Name="ChangedStatusDate" Type="DateTime?" Accessor="Internal" />
<Property Name="ConcessionPolicy" Type="UltimoString" Accessor="Internal" />
<Property Name="CraftsmanHourCategory" Type="CraftsmanHourCategory" Accessor="Internal" />
<Property Name="DocumentDescription" Type="UltimoString" Accessor="Internal" Comment="Description of the document typed by the user in the dialog box. This property works together with the property AskForDocumentDescription" />
<Property Name="DocumentTargetFile" Type="UltimoString" Accessor="Internal" />
<Property Name="DocumentType" Type="DocumentType" Accessor="Internal" Comment="Type of document selected by the user in the dialog box. This property works together with the property AskForDocumentType" />
<Property Name="DocumentUploadFile" Type="String" Accessor="Internal" />
<Property Name="EquipmentNewProgressStatus" Type="ProgressStatus" Accessor="Internal" Comment="Optionally, equipment on job can be given a new progress status" />
<Property Name="EquipmentRemark" Type="UltimoString" Accessor="Internal" />
<Property Name="EquipmentRemarkAsEnteredByUser" Type="UltimoString" Accessor="Internal" />
<Property Name="HourCode" Type="HourCode" Accessor="Internal" />
<Property Name="HoursWorked" Type="Decimal?" Accessor="Internal" />
<Property Name="HoursWorkedBetweenMidnightAndBookMoment" Type="Decimal?" Accessor="Internal" />
<Property Name="HourTariffCategory" Type="HourTariffCategory" Accessor="Internal" />
<Property Name="MultijobTemplate" Type="MultijobTemplate" Accessor="Internal" />
<Property Name="NewProgressStatus" Type="ProgressStatus" Accessor="Internal" />
<Property Name="NonUpdatedEquipmentList" Type="List[Equipment]" Accessor="Internal" Comment="Equipment whose status was not changed because it differs from parent equipment." />
<Property Name="Now" Type="DateTime" Accessor="Internal" Default="#{Environment.CurrentDateTime}" />
<Property Name="OldProgressStatus" Type="ProgressStatus" Accessor="Internal" />
<Property Name="OpenAndQuotedProductsCount" Type="Int64" Accessor="Internal" />
<Property Name="ReleaseDate" Type="Date?" Accessor="Internal" />
<Property Name="Site" Type="Site" Accessor="Internal" Default="${Job.Site}" Comment="Site selected by the user in the dialog box. This property works together with the property AskForSite" />
<Property Name="StatusCreatedReportDate" Type="DateTime" Accessor="Internal" />
<Property Name="SuccessorItems" Type="List[SuccessorItem]" Accessor="Internal" />
<Property Name="WorkDescription" Type="UltimoString" Accessor="Internal" />
</Properties>
<Settings>
<SettingsGroup Name="Job">
<Setting Name="RequestedProgressStatusHoursEmployee" Type="Employee" Value="Empty" />
<Setting Name="RequestedProgressStatusHoursSpent" Type="Decimal" Value="0" />
<Setting Name="RequestedProgressStatusId" Type="String" Value="Empty" />
<Setting Name="RequestedProgressStatusWorkDescription" Type="UltimoString" Value="Empty" />
<Setting Name="ShowMessageWaitingForMaterial" Type="Boolean" Value="False" Comment="Deprecated, replaced by ShowMessageMaterialInStockIndicator (#1099249, #1094345)" />
<Setting Name="WriteReleaseCondition" Type="Boolean" Value="False" />
</SettingsGroup>
<SettingsGroup Name="EmployeeLabourLine">
<Setting Name="SkipUpdateJobWeekLabour" Type="Boolean" Value="True" />
</SettingsGroup>
<SettingsGroup Name="JobInspectionLine">
<Setting Name="JobTextField" Type="JobTextField" Value="Text" />
<Setting Name="ProgressStatusIdForQualityNotOk" Type="UltimoString" Value="Empty" />
<Setting Name="ProgressStatusIdForQualityOk" Type="UltimoString" Value="Empty" />
</SettingsGroup>
</Settings>
<Execution>
<UserContent Name="Pre" />
<When Name="Progress status can be updated via dialog" Condition="${ProgressStatusDialogOptions} == TextAndStatus || ${ProgressStatusDialogOptions} == StatusOnly">
<WorkflowCall Name="DomainObject_ValidateProgressStatusIsTrashed" WorkflowName="DomainObject_ValidateProgressStatusIsTrashed">
<Parameter Name="DomainObject" Direction="In" Value="${Job}" />
</WorkflowCall>
</When>
<WorkflowCall Name="Job_Actionfield286_ValidateJobMaterial" WorkflowName="Job_Actionfield286_ValidateJobMaterial">
<Parameter Name="Job" Direction="In" Value="${Job}" />
</WorkflowCall>
<WorkflowCall Name="Job_Actionfield286_SetValuesAndShowDialog" WorkflowName="Job_Actionfield286_SetValuesAndShowDialog">
<Parameter Name="AllowedProgressStatusList" Direction="In" Value="${AllowedProgressStatusList}" />
<Parameter Name="BookHoursDurationIntervalInMinutes" Direction="In" Value="${BookHoursDurationIntervalInMinutes}" />
<Parameter Name="DefaultProgressStatusIdForQualityNotOk" Direction="In" Value="${DefaultProgressStatusIdForQualityNotOk}" />
<Parameter Name="DefaultProgressStatusIdForQualityOk" Direction="In" Value="${DefaultProgressStatusIdForQualityOk}" />
<Parameter Name="DialogTitleLabel" Direction="In" Value="${DialogTitleLabel}" />
<Parameter Name="EmployeeFilter" Direction="In" Value="${EmployeeFilter}" />
<Parameter Name="EnableDate" Direction="In" Value="${EnableDate}" />
<Parameter Name="EnableToChangeEquipmentStatusWhenChangingJobStatus" Direction="In" Value="${EnableToChangeEquipmentStatusWhenChangingJobStatus}" />
<Parameter Name="EquipmentStatusesWithoutReleaseCondition" Direction="In" Value="${EquipmentStatusesWithoutReleaseCondition}" />
<Parameter Name="Job" Direction="In" Value="${Job}" />
<Parameter Name="MaxBookHours" Direction="In" Value="${MaxBookHours}" />
<Parameter Name="ProgressStatusContext" Direction="In" Value="${ProgressStatusContext}" />
<Parameter Name="ProgressStatusDialogOptions" Direction="In" Value="${ProgressStatusDialogOptions}" />
<Parameter Name="ShowLinkDocument" Direction="In" Value="${ShowLinkDocument}" />
<Parameter Name="UseReleaseCondition" Direction="In" Value="${UseReleaseCondition}" />
<Parameter Name="WorkDescriptionLabel" Direction="In" Value="${WorkDescriptionLabel}" />
<Parameter Name="BookHours" Direction="InOut" Value="${BookHours}" OutputProperty="${BookHours}" />
<Parameter Name="Employee" Direction="InOut" Value="${Employee}" OutputProperty="${Employee}" />
<Parameter Name="ReleaseCondition" Direction="InOut" Value="${ReleaseCondition}" OutputProperty="${ReleaseCondition}" />
<Parameter Name="ActivityDate" Direction="Out" OutputProperty="${ActivityDate}" />
<Parameter Name="ConcessionPolicy" Direction="Out" OutputProperty="${ConcessionPolicy}" />
<Parameter Name="DocumentUploadFile" Direction="Out" OutputProperty="${DocumentUploadFile}" />
<Parameter Name="EquipmentNewProgressStatus" Direction="Out" OutputProperty="${EquipmentNewProgressStatus}" />
<Parameter Name="EquipmentRemark" Direction="Out" OutputProperty="${EquipmentRemark}" />
<Parameter Name="EquipmentRemarkAsEnteredByUser" Direction="Out" OutputProperty="${EquipmentRemarkAsEnteredByUser}" />
<Parameter Name="HourCode" Direction="Out" OutputProperty="${HourCode}" />
<Parameter Name="HoursWorked" Direction="Out" OutputProperty="${HoursWorked}" />
<Parameter Name="HourTariffCategory" Direction="Out" OutputProperty="${HourTariffCategory}" />
<Parameter Name="NewProgressStatus" Direction="Out" OutputProperty="${NewProgressStatus}" />
<Parameter Name="ReleaseDate" Direction="Out" OutputProperty="${ReleaseDate}" />
<Parameter Name="WorkDescription" Direction="Out" OutputProperty="${WorkDescription}" />
</WorkflowCall>
<UserContent Name="AfterDialog" />
<WorkflowCall Name="Get FDA e-signature for Job" WorkflowName="Job_SignElectronically">
<Parameter Name="EquipmentNewProgressStatus" Direction="In" Value="${EquipmentNewProgressStatus}" />
<Parameter Name="EquipmentReason" Direction="In" Value="${EquipmentRemarkAsEnteredByUser}" />
<Parameter Name="Job" Direction="In" Value="${Job}" />
<Parameter Name="JobNewProgressStatus" Direction="In" Value="${NewProgressStatus}" />
</WorkflowCall>
<Validation Name="ActivityState_ummCHOOSEPROGRESSSTATUS" Condition="${ProgressStatusDialogOptions} == None || ${ProgressStatusDialogOptions} == TextOnly || ${Job.ProgressStatus} == Empty || ${NewProgressStatus} != Empty" MessageCode="0689" />
<When Name="Document selected" Condition="${DocumentUploadFile} != Empty">
<WorkflowCall Name="Dialog_AskForDocumentDetails" WorkflowName="Dialog_AskForDocumentDetails">
<Parameter Name="AskForDocumentDescription" Direction="In" Value="${AskForDocumentDescription}" />
<Parameter Name="AskForDocumentType" Direction="In" Value="${AskForDocumentType}" />
<Parameter Name="AskForSite" Direction="In" Value="${AskForSite}" />
<Parameter Name="DocumentDescription" Direction="InOut" Value="${DocumentDescription}" OutputProperty="${DocumentDescription}" />
<Parameter Name="DocumentType" Direction="InOut" Value="${DocumentType}" OutputProperty="${DocumentType}" />
<Parameter Name="Site" Direction="InOut" Value="${Site}" OutputProperty="${Site}" />
</WorkflowCall>
</When>
<Assign Name="RequestedProgressStatusId" Property="#{Settings.Job.RequestedProgressStatusId}" Value="${NewProgressStatus.Id?}" Comment="To pass on progress status when job skips statuses. e.g. job status changes from 'Open' to 'Finished'." />
<Assign Name="RequestedProgressStatusHoursSpent" Property="#{Settings.Job.RequestedProgressStatusHoursSpent}" Value="${HoursWorked}" Comment="To pass on hours when job skips statuses. e.g. job status changes from 'Open' to 'Finished'." />
<Assign Name="RequestedProgressStatusWorkDescription" Property="#{Settings.Job.RequestedProgressStatusWorkDescription}" Value="${WorkDescription}" Comment="To pass on work description when job skips statuses. e.g. job status changes from 'Open' to 'Finished'." />
<Assign Name="RequestedProgressStatusHoursEmployee" Property="#{Settings.Job.RequestedProgressStatusHoursEmployee}" Value="${Employee}" Comment="The employee the hours are registered for." />
<Assign Name="MultijobTemplate" Property="${MultijobTemplate}" Value="${Job.MultijobTemplate}" />
<Assign Name="SkipQuestion" Property="#{Settings.EquipmentMeasurementPointValue.SkipQuestion}" Value="True" Comment="Skip question in EquipmentMeasurementPoint_ProcessValues to prevent Transaction error" />
<When Name="if MultijobTemplate has no value, try to squeeze it from the job's ServiceDeskReportType" Condition="${MultijobTemplate} == Empty && ${Job.Multijob} == Empty && ${Job.ServiceDeskReportType.MultijobTemplate?} != Empty">
<Assign Name="Fill MultijobTemplate column" Property="${MultijobTemplate}" Value="${Job.ServiceDeskReportType.MultijobTemplate}" />
</When>
<Assign Name="StatusCreatedReportDate" Property="${StatusCreatedReportDate}" Value="${Job.StatusCreatedReportDate}" />
<WorkflowCall Name="Job_Actionfield286_ValidateTargetDate" WorkflowName="Job_Actionfield286_ValidateTargetDate">
<Parameter Name="Job" Direction="In" Value="${Job}" />
<Parameter Name="MultijobTemplate" Direction="In" Value="${MultijobTemplate}" />
</WorkflowCall>
<When Name="Edit template lines if there are any and if subsjobs can be generated" Condition="${MultijobTemplate} != Empty">
<WorkflowCall Name="Job_EditTemplate" WorkflowName="Job_EditTemplate" Comment="call dialog for template line selection">
<Parameter Name="Job" Direction="In" Value="${Job}" />
<Parameter Name="JobStatus" Direction="In" Value="${NewProgressStatus.NextStatus}" />
<Parameter Name="MultijobTemplate" Direction="In" Value="${MultijobTemplate}" />
<Parameter Name="StatusCreatedReportDate" Direction="In" Value="${StatusCreatedReportDate}" />
<Parameter Name="SuccessorItems" Direction="Out" OutputProperty="${SuccessorItems}" />
</WorkflowCall>
</When>
<WorkflowCall Name="Job_Actionfield286_MultijobTemplateLineExist" WorkflowName="Job_Actionfield286_MultijobTemplateLineExist">
<Parameter Name="Job" Direction="In" Value="${Job}" />
<Parameter Name="NewProgressStatus" Direction="In" Value="${NewProgressStatus}" />
</WorkflowCall>
<Transaction>
<WorkflowCall Name="Job_Actionfield286_SetMultiJobTemplate" WorkflowName="Job_Actionfield286_SetMultiJobTemplate">
<Parameter Name="Job" Direction="In" Value="${Job}" />
<Parameter Name="MultijobTemplate" Direction="In" Value="${MultijobTemplate}" />
</WorkflowCall>
<WorkflowCall Name="Job_Actionfield286_ValidateBookHours" WorkflowName="Job_Actionfield286_ValidateBookHours">
<Parameter Name="BookHours" Direction="In" Value="${BookHours}" />
<Parameter Name="HourCode" Direction="In" Value="${HourCode}" />
<Parameter Name="HoursWorked" Direction="In" Value="${HoursWorked}" />
<Parameter Name="HourTariffCategory" Direction="In" Value="${HourTariffCategory}" />
<Parameter Name="Job" Direction="In" Value="${Job}" />
</WorkflowCall>
<WorkflowCall Name="Job_Actionfield286_ReleaseCondition" WorkflowName="Job_Actionfield286_ReleaseCondition">
<Parameter Name="ConcessionPolicy" Direction="In" Value="${ConcessionPolicy}" />
<Parameter Name="EquipmentStatusesWithoutReleaseCondition" Direction="In" Value="${EquipmentStatusesWithoutReleaseCondition}" />
<Parameter Name="Job" Direction="In" Value="${Job}" />
<Parameter Name="NewProgressStatus" Direction="In" Value="${NewProgressStatus}" />
<Parameter Name="ReleaseDate" Direction="In" Value="${ReleaseDate}" />
<Parameter Name="UseReleaseCondition" Direction="In" Value="${UseReleaseCondition}" />
<Parameter Name="ReleaseCondition" Direction="InOut" Value="${ReleaseCondition}" OutputProperty="${ReleaseCondition}" />
</WorkflowCall>
<Choose Name="WriteHoursToDB">
<When Name="BookHoursOnJob?" Condition="${BookHours} == True && ${HoursWorked} != Empty && ${HoursWorked} != 0">
<When Name="HourTariffCategory is empty" Condition="${HourTariffCategory} == Empty">
<Validation Name="Employee has Craftsman" Condition="${Employee.Craftsman} != Empty" MessageCode="0408">
<Parameter Name="Employee" Direction="In" Value="${Employee}" />
</Validation>
<WorkflowCall Name="Craftsman_GetHourCategory" WorkflowName="Craftsman_GetHourCategory">
<Parameter Name="Craftsman" Direction="In" Value="${Employee.Craftsman}" />
<Parameter Name="Job" Direction="In" Value="${Job}" />
<Parameter Name="CraftsmanHourCategory" Direction="Out" OutputProperty="${CraftsmanHourCategory}" />
</WorkflowCall>
<Assign Name="HourTariffCategory set by CraftsmanHourCategory" Property="${HourTariffCategory}" Value="${CraftsmanHourCategory.Id.HourTariffCategory}" />
</When>
<WorkflowCall Name="Job_Actionfield286_BookHours" WorkflowName="Job_Actionfield286_BookHours">
<Parameter Name="ActivityDate" Direction="In" Value="${ActivityDate}" />
<Parameter Name="Employee" Direction="In" Value="${Employee}" />
<Parameter Name="HourCode" Direction="In" Value="${HourCode}" />
<Parameter Name="HoursWorked" Direction="In" Value="${HoursWorked}" />
<Parameter Name="HoursWorkedBetweenMidnightAndBookMoment" Direction="In" Value="${HoursWorkedBetweenMidnightAndBookMoment}" />
<Parameter Name="HourTariffCategory" Direction="In" Value="${HourTariffCategory}" />
<Parameter Name="Job" Direction="In" Value="${Job}" />
<Parameter Name="Now" Direction="In" Value="${Now}" />
<Parameter Name="SplitHoursForPreviousDay" Direction="In" Value="${SplitHoursForPreviousDay}" />
<Parameter Name="WorkDescription" Direction="In" Value="${WorkDescription}" />
</WorkflowCall>
<When Name="WhenCopyText" Condition="#{UltimoSettings.CopyJobWeekLabourTextToJob} != 0">
<Command Name="Job_AppendComment" CommandName="Job_AppendComment">
<Parameter Name="Date" Direction="In" Value="${Now}" />
<Parameter Name="Description" Direction="In" Value="${WorkDescription}" />
<Parameter Name="Employee" Direction="In" Value="#{User.EmployeeId}" />
<Parameter Name="Job" Direction="In" Value="${Job}" />
</Command>
</When>
</When>
<Otherwise Name="AppendCommentToJob">
<Command Name="Job_AppendComment" CommandName="Job_AppendComment">
<Parameter Name="Date" Direction="In" Value="${Now}" />
<Parameter Name="Description" Direction="In" Value="${WorkDescription}" />
<Parameter Name="Employee" Direction="In" Value="#{User.EmployeeId}" />
<Parameter Name="Job" Direction="In" Value="${Job}" />
</Command>
</Otherwise>
</Choose>
<When Name="Only update ProgressStatus when != TextOnly" Condition="${ProgressStatusDialogOptions} == TextOnly && ${NewProgressStatus} == Empty">
<Assign Name="Set NewProgressStatus to original" Property="${NewProgressStatus}" Value="${Job.ProgressStatus}" />
</When>
<WorkflowCall Name="Job_ChangeProgressStatus" WorkflowName="Job_ChangeProgressStatus">
<Parameter Name="Employee" Direction="In" Value="${Employee}" />
<Parameter Name="EquipmentNewProgressStatus" Direction="In" Value="${EquipmentNewProgressStatus}" />
<Parameter Name="EquipmentRemark" Direction="In" Value="${EquipmentRemark}" />
<Parameter Name="HoursWorked" Direction="In" Value="${HoursWorked}" />
<Parameter Name="Job" Direction="In" Value="${Job}" />
<Parameter Name="NewProgressStatus" Direction="In" Value="${NewProgressStatus}" />
<Parameter Name="Now" Direction="In" Value="${Now}" />
<Parameter Name="StatusFinishedDateTime" Direction="In" Value="${ActivityDate}" />
<Parameter Name="WorkDescription" Direction="In" Value="${WorkDescription}" />
<Parameter Name="OldProgressStatus" Direction="InOut" Value="${OldProgressStatus}" OutputProperty="${OldProgressStatus}" />
<Parameter Name="NonUpdatedEquipmentList" Direction="Out" OutputProperty="${NonUpdatedEquipmentList}" />
</WorkflowCall>
<When Name="WriteReleaseCondition?" Condition="#{Settings.Job.WriteReleaseCondition} == True">
<Command Name="Job_WriteReleaseCondition" CommandName="Job_WriteReleaseCondition">
<Parameter Name="Description" Direction="In" Value="${ConcessionPolicy}" />
<Parameter Name="Job" Direction="In" Value="${Job}" />
<Parameter Name="ReleaseCondition" Direction="In" Value="${ReleaseCondition}" />
<Parameter Name="ReleaseConditionDate" Direction="In" Value="${ReleaseDate}" />
</Command>
</When>
<When Name="Document selected" Condition="${DocumentUploadFile} != Empty">
<WorkflowCall Name="Upload file and create ObjectDocument" WorkflowName="Job_ActionField286_AddDocuments">
<Parameter Name="DocumentContext" Direction="In" Value="${DocumentContext}" />
<Parameter Name="DocumentDescription" Direction="In" Value="${DocumentDescription}" />
<Parameter Name="DocumentStatus" Direction="In" Value="${DocumentStatus}" />
<Parameter Name="DocumentType" Direction="In" Value="${DocumentType}" />
<Parameter Name="DocumentUploadFile" Direction="In" Value="${DocumentUploadFile}" />
<Parameter Name="FileSystemPath" Direction="In" Value="${DocumentFileSystemPath}" />
<Parameter Name="Job" Direction="In" Value="${Job}" />
<Parameter Name="Site" Direction="In" Value="${Site}" />
<Parameter Name="UserAsManager" Direction="In" Value="${DocumentUserAsManager}" />
<Parameter Name="DocumentTargetFile" Direction="Out" OutputProperty="${DocumentTargetFile}" />
</WorkflowCall>
</When>
</Transaction>
<When Name="Document selected" Condition="${DocumentUploadFile} != Empty">
<MoveFile Name="Move to document directory" SourceFile="Upload\${DocumentUploadFile}" TargetFile="${DocumentTargetFile}" />
</When>
<When Name="IfMultiTemplateExist" Condition="${Job.MultijobTemplate} != Empty">
<WorkflowCall Name="Job_Actionfield286_ProcessMultiJobTemplate" WorkflowName="Job_Actionfield286_ProcessMultiJobTemplate">
<Parameter Name="Job" Direction="In" Value="${Job}" />
<Parameter Name="SuccessorItems" Direction="In" Value="${SuccessorItems}" />
</WorkflowCall>
</When>
<WorkflowCall Name="Job_UseStockProgressStatus_ShowToastMessageMaterialInStock" WorkflowName="Job_UseStockProgressStatus_ShowToastMessageMaterialInStock">
<Parameter Name="Job" Direction="In" Value="${Job}" />
</WorkflowCall>
<When Name="When job is now active" Condition="${Job.Status} == JobStatus.Active && ${NotifyAboutUnapprovedProductsOnActivate}">
<Transaction>
<GetCount Name="Count open/quoted products for job" Type="JobJobPlan" OutputProperty="${OpenAndQuotedProductsCount}">
<Filters>
<PropertyFilter PropertyName="Job" Operator="=" PropertyValue="${Job}" />
<InFilter PropertyName="Status" Values="JobJobPlanStatus.Created, JobJobPlanStatus.Quotation" />
</Filters>
</GetCount>
</Transaction>
<When Name="When open/quoted products found" Condition="${OpenAndQuotedProductsCount} != 0">
<Message Name="NotifyUserProductsAwaitingApproval" MessageCode="2677">
<Parameter Name="Job" Direction="In" Value="${Job}" />
</Message>
</When>
</When>
<When Name="When status change for underlying equipment was skipped" Condition="${NonUpdatedEquipmentList} != Empty && ${NonUpdatedEquipmentList.Count} > 0">
<Message Name="Show underlying equipment whose status was not changed because it differs from parent" MessageCode="3522">
<Parameter Name="NewProgressStatusDescription" Direction="In" Value="${EquipmentNewProgressStatus.Description}" />
<Parameter Name="NonUpdatedEquipmentList" Direction="In" Value="${NonUpdatedEquipmentList}" />
</Message>
</When>
<UserContent Name="Post" />
</Execution>
</Workflow>
Sub-workflow XMLbewerken
Job_ActionField286_AddDocumentsbewerken
Beschrijving: Upload file and create ObjectDocument for Job.
<Workflow Name="Job_ActionField286_AddDocuments" Version="2025.07.28" WorkflowType="Standard" xmlns="urn:Ultimo.Framework.Workflow-mapping">
<Security EditLevel="10" ViewLevel="20" UserContentLevel="30" />
<Description>Upload file and create ObjectDocument for Job.</Description>
<Properties>
<Property Name="Job" Type="Job" Accessor="Root" Direction="In" />
<Property Name="DocumentContext" Type="Context" Accessor="Optional" Direction="In" Default="DocumentContext.Standard" Comment="Create Document with this context" />
<Property Name="DocumentDescription" Type="UltimoString" Accessor="Optional" Direction="In" Comment="Description of the document typed by the user in the dialog box.This property works together with the property AskForDocumentDescription" />
<Property Name="DocumentStatus" Type="Status" Accessor="Optional" Direction="In" Default="DocumentStatus.Active" Comment="Create Document with this status" />
<Property Name="DocumentType" Type="DocumentType" Accessor="Optional" Direction="In" Comment="Type of document selected by the user in the dialog box.This property works together with the property AskForDocumentType" />
<Property Name="DocumentUploadFile" Type="String" Accessor="Optional" Direction="In" />
<Property Name="FileSystemPath" Type="FileSystemPath" Accessor="Optional" Direction="In" Comment="Location of the files" />
<Property Name="Site" Type="Site" Accessor="Optional" Direction="In" Comment="Site selected by the user in the dialog box.This property works together with the property AskForSite" />
<Property Name="UserAsManager" Type="Boolean" Accessor="Optional" Direction="In" Default="False" Comment="Set Document.ManageEmployee to User." />
<Property Name="DocumentTargetFile" Type="UltimoString" Accessor="Optional" Direction="Out" />
<Property Name="Document" Type="Document" Accessor="Internal" />
<Property Name="RealFileExtension" Type="String" Accessor="Internal" />
<Property Name="RealFileGuid" Type="String" Accessor="Internal" />
<Property Name="RealFileName" Type="String" Accessor="Internal" />
</Properties>
<Execution>
<UserContent Name="Pre" />
<UnformatText Name="GetFileNameAndExtension" Text="${DocumentUploadFile}" Mask="(.*)_(.*)[\.](.*)" CaseSensitive="True">
<Parameter Name="1" Direction="Out" OutputProperty="${RealFileName}" />
<Parameter Name="2" Direction="Out" OutputProperty="${RealFileGuid}" />
<Parameter Name="3" Direction="Out" OutputProperty="${RealFileExtension}" />
</UnformatText>
<Transaction>
<Insert Name="Create a Document" ObjectType="Document" OutputProperty="${Document}">
<Parameter Name="Context" Direction="In" Value="${DocumentContext}" />
<Parameter Name="Status" Direction="In" Value="${DocumentStatus}" />
<Parameter Name="Description" Direction="In" Value="${DocumentDescription}" />
<Parameter Name="DocumentType" Direction="In" Value="${DocumentType}" />
<Parameter Name="FileSystemPath" Direction="In" Value="${FileSystemPath}" />
<Parameter Name="ManageEmployee" Direction="In" Value="#{User.EmployeeId}" />
<Parameter Name="Site" Direction="In" Value="${Site}" />
</Insert>
<AssignWhenEmpty Name="Set Description with doc id" Property="${Document.Description}" Value="=#concat(${Document.Id}, '-' ,${RealFileName}, '.' , ${RealFileExtension})" />
<Assign Name="Set FileName with doc id" Property="${Document.FileName}" Value="=#concat(${Document.Id}, '-' ,${RealFileName}, '.' , ${RealFileExtension})" />
<Command Name="Link the Document to the Job" CommandName="CreateObjectDocument">
<Parameter Name="Document" Direction="In" Value="${Document}" />
<Parameter Name="DomainObject" Direction="In" Value="${Job}" />
</Command>
<ChangeStatus Name="Change Status" DomainObject="${Document}" NewStatus="${DocumentStatus}" />
<When Name="User as manager" Condition="${UserAsManager} == True">
<Assign Name="Assign User" Property="${Document.ManageEmployee}" Value="#{User.EmployeeId}" />
</When>
</Transaction>
<Assign Name="DocumentTargetFile" Property="${DocumentTargetFile}" Value="${FileSystemPath.FileServicePath}\${Document.FileName}" />
<UserContent Name="Post" />
</Execution>
</Workflow>
Job_Actionfield286_BookHoursbewerken
Beschrijving: BookHours
<Workflow Name="Job_Actionfield286_BookHours" Version="2025.07.28" WorkflowType="Standard" xmlns="urn:Ultimo.Framework.Workflow-mapping">
<Security EditLevel="10" ViewLevel="20" UserContentLevel="30" />
<Description>BookHours</Description>
<Properties>
<Property Name="Job" Type="Job" Accessor="Root" Direction="In" />
<Property Name="ActivityDate" Type="DateTime?" Accessor="Optional" Direction="In" />
<Property Name="Employee" Type="Employee" Accessor="Optional" Direction="In" />
<Property Name="HourCode" Type="HourCode" Accessor="Optional" Direction="In" />
<Property Name="HoursWorked" Type="Decimal?" Accessor="Optional" Direction="In" />
<Property Name="HoursWorkedBetweenMidnightAndBookMoment" Type="Decimal?" Accessor="Optional" Direction="In" />
<Property Name="HourTariffCategory" Type="HourTariffCategory" Accessor="Optional" Direction="In" />
<Property Name="Now" Type="DateTime" Accessor="Optional" Direction="In" />
<Property Name="SplitHoursForPreviousDay" Type="Boolean" Accessor="Optional" Direction="In" />
<Property Name="WorkDescription" Type="UltimoString" Accessor="Optional" Direction="In" />
<Property Name="StartOfDayActivityDate" Type="DateTime" Accessor="Internal" Comment="Used to compose ActivityDate at 0:00am after dialog" />
</Properties>
<Execution>
<UserContent Name="Pre" />
<Assign Name="Set StartOfDayActivityDate, 0:00am" Property="${StartOfDayActivityDate}" Value="=#setdatetime(${ActivityDate.Date}, 0, 0)" />
<Assign Name="Hours between StartOfDayActivityDate and ActivityDate" Property="${HoursWorkedBetweenMidnightAndBookMoment}" Value="=#getdatedifference('h', ${StartOfDayActivityDate}, ${ActivityDate}, False)" />
<When Name="Date to book hours on is before today" Condition="#getdatedifference('d', ${Now}, ${ActivityDate}) < 0">
<Assign Name="SplitHoursForPreviousDay" Property="${SplitHoursForPreviousDay}" Value="False" />
</When>
<Choose Name="Check whether hours should be split between days">
<When Name="When SplitHoursForPreviousDay is True and HoursWorked greater than HoursWorkedBetweenMidnightAndBookMoment between StartOfDayActivityDate and ActivityDate" Condition="${SplitHoursForPreviousDay} == True && (${HoursWorked} > ${HoursWorkedBetweenMidnightAndBookMoment})">
<WorkflowCall Name="book for previous day" WorkflowName="Job_BookHours">
<Parameter Name="BookDate" Direction="In" Value="=#adddays(${ActivityDate.Date}, -1)" />
<Parameter Name="Description" Direction="In" Value="${WorkDescription}" />
<Parameter Name="Employee" Direction="In" Value="${Employee}" />
<Parameter Name="HourCode" Direction="In" Value="${HourCode}" />
<Parameter Name="HoursWorked" Direction="In" Value="=${HoursWorked} - ${HoursWorkedBetweenMidnightAndBookMoment}" Comment="HoursWorkedBetweenMidnightAndBookMoment = time since midnight" />
<Parameter Name="HourTariffCategory" Direction="In" Value="${HourTariffCategory}" />
<Parameter Name="Job" Direction="In" Value="${Job}" />
</WorkflowCall>
<WorkflowCall Name="book for ActivityDay" WorkflowName="Job_BookHours">
<Parameter Name="BookDate" Direction="In" Value="${ActivityDate.Date}" />
<Parameter Name="Description" Direction="In" Value="${WorkDescription}" />
<Parameter Name="Employee" Direction="In" Value="${Employee}" />
<Parameter Name="HourCode" Direction="In" Value="${HourCode}" />
<Parameter Name="HoursWorked" Direction="In" Value="${HoursWorkedBetweenMidnightAndBookMoment}" Comment="HoursWorkedBetweenMidnightAndBookMoment = time since midnight" />
<Parameter Name="HourTariffCategory" Direction="In" Value="${HourTariffCategory}" />
<Parameter Name="Job" Direction="In" Value="${Job}" />
</WorkflowCall>
</When>
<Otherwise Name="Otherwise SplitHoursForPreviousDay is False and/or all HoursWorked during ActivityDate">
<WorkflowCall Name="Job_BookHours" WorkflowName="Job_BookHours">
<Parameter Name="BookDate" Direction="In" Value="${ActivityDate.Date}" />
<Parameter Name="Description" Direction="In" Value="${WorkDescription}" />
<Parameter Name="Employee" Direction="In" Value="${Employee}" />
<Parameter Name="HourCode" Direction="In" Value="${HourCode}" />
<Parameter Name="HoursWorked" Direction="In" Value="${HoursWorked}" />
<Parameter Name="HourTariffCategory" Direction="In" Value="${HourTariffCategory}" />
<Parameter Name="Job" Direction="In" Value="${Job}" />
</WorkflowCall>
</Otherwise>
</Choose>
<UserContent Name="Post" />
</Execution>
</Workflow>
Job_Actionfield286_MultijobTemplateLineExistbewerken
Beschrijving: Check MultijobTemplate/ JobSuccessors
<Workflow Name="Job_Actionfield286_MultijobTemplateLineExist" Version="2025.07.28" WorkflowType="Standard" xmlns="urn:Ultimo.Framework.Workflow-mapping">
<Security EditLevel="10" ViewLevel="20" UserContentLevel="30" />
<Description>Check MultijobTemplate/ JobSuccessors</Description>
<Properties>
<Property Name="Job" Type="Job" Accessor="Root" Direction="In" />
<Property Name="NewProgressStatus" Type="ProgressStatus" Accessor="Optional" Direction="In" />
<Property Name="ActivatedJob" Type="RequestResult" Accessor="Internal" Default="Yes" />
<Property Name="FinishedJob" Type="RequestResult" Accessor="Internal" Default="Yes" />
<Property Name="JobSuccessors" Type="List[JobSuccessors]" Accessor="Internal" />
<Property Name="MessageString" Type="String" Accessor="Internal" />
</Properties>
<Execution>
<UserContent Name="Pre" />
<When Name="IfNextStatusIsFinishAndJobIsSubjob" Condition="${NewProgressStatus} != Empty && ${NewProgressStatus} != ${Job.ProgressStatus} && ${NewProgressStatus.NextStatus} == JobStatus.Finished && ${Job.Multijob} != Empty && ${Job.Multijob} != ${Job}">
<Transaction>
<GetList Name="GetJobSuccessorWithDependencyEndToEnd" Type="JobSuccessors" OutputProperty="${JobSuccessors}" OrderBy="Id" OrderDirection="Ascending" Comment="Check end-to-end dependency with other subjobs of the multi-job">
<Joins>
<Join Name="Id.Job" Alias="job" Type="InnerJoin" />
<Join Name="job.Multijob" Alias="multijob" Type="InnerJoin" />
<Join Name="JobLink" Alias="jobLink" Type="InnerJoin" />
</Joins>
<Filters>
<PropertyFilter PropertyName="multijob.Id" Operator="=" PropertyValue="${Job.Multijob.Id}" />
<PropertyFilter PropertyName="job.Id" Operator="!=" PropertyValue="${Job.Multijob.Id}" />
<PropertyFilter PropertyName="Id.LinkJob" Operator="=" PropertyValue="${Job}" />
<CombinedFilter FilterOperator="Or">
<CombinedFilter FilterOperator="And">
<PropertyFilter PropertyName="jobLink.JobLinkType" Operator="=" PropertyValue="StartToEnd" Comment="StartToEnd" />
<InFilter PropertyName="job.Status" Values="JobStatus.Requested,JobStatus.Created,JobStatus.Approved" />
</CombinedFilter>
<CombinedFilter FilterOperator="And">
<PropertyFilter PropertyName="jobLink.JobLinkType" Operator="=" PropertyValue="EndToEnd" Comment="EndToEnd" />
<InFilter PropertyName="job.Status" Values="JobStatus.Requested,JobStatus.Created,JobStatus.Approved,JobStatus.Active" />
</CombinedFilter>
</CombinedFilter>
</Filters>
</GetList>
</Transaction>
<When Name="JobSuccessorsCountIsNotZero" Condition="${JobSuccessors} != Empty">
<ForEach Name="Loop predecessor jobs" In="${JobSuccessors}" As="JobSuccessor">
<Assign Name="Fill MessageString" Property="${MessageString}" Value="=#concat(${MessageString}, ${JobSuccessor.Id.Job.Id}, ' ')" />
</ForEach>
<Question Name="CheckJobSuccessorWithDependencyEndToEnd" Type="YesNo" MessageCode="1289" Default="No" OutputProperty="${FinishedJob}">
<Parameter Name="DependentJobs" Direction="In" Value="=#trim(${MessageString})" />
<Parameter Name="Description" Direction="In" Value="${NewProgressStatus.Description}" />
<Parameter Name="Job" Direction="In" Value="${Job}" />
</Question>
<When Name="AnswerIsNo" Condition="${FinishedJob} == No">
<Stop Name="Stop" Mode="Abort" />
</When>
</When>
</When>
<When Name="IfNextStatusIsActiveAndJobIsSubjob" Condition="${NewProgressStatus} != Empty && ${NewProgressStatus} != ${Job.ProgressStatus} && (${NewProgressStatus.NextStatus} == JobStatus.Active || ${NewProgressStatus.NextStatus} == JobStatus.Finished) && ${Job.Multijob} != Empty && ${Job.Multijob} != ${Job}">
<Transaction>
<GetList Name="GetJobSuccessorWithDependencyEndToStart" Type="JobSuccessors" OutputProperty="${JobSuccessors}" OrderBy="Id" OrderDirection="Ascending" Comment="Check end-to-start dependency with other subjobs of the multi-job">
<Joins>
<Join Name="Id.Job" Alias="job" Type="InnerJoin" />
<Join Name="job.Multijob" Alias="multijob" Type="InnerJoin" />
<Join Name="JobLink" Alias="jobLink" Type="InnerJoin" />
</Joins>
<Filters>
<PropertyFilter PropertyName="multijob.Id" Operator="=" PropertyValue="${Job.Multijob.Id}" />
<PropertyFilter PropertyName="job.Id" Operator="!=" PropertyValue="${Job.Multijob.Id}" />
<PropertyFilter PropertyName="Id.LinkJob" Operator="=" PropertyValue="${Job}" />
<CombinedFilter FilterOperator="Or">
<CombinedFilter FilterOperator="And">
<PropertyFilter PropertyName="jobLink.JobLinkType" Operator="=" PropertyValue="StartToStart" Comment="StartToStart" />
<InFilter PropertyName="job.Status" Values="JobStatus.Requested,JobStatus.Created,JobStatus.Approved" />
</CombinedFilter>
<CombinedFilter FilterOperator="And">
<PropertyFilter PropertyName="jobLink.JobLinkType" Operator="=" PropertyValue="EndToStart" Comment="EndToStart" />
<InFilter PropertyName="job.Status" Values="JobStatus.Requested,JobStatus.Created,JobStatus.Approved,JobStatus.Active" />
</CombinedFilter>
</CombinedFilter>
</Filters>
</GetList>
</Transaction>
<When Name="JobSuccessorsCountIsNotZero" Condition="${JobSuccessors} != Empty">
<ForEach Name="Loop predecessor jobs" In="${JobSuccessors}" As="JobSuccessor">
<Assign Name="Fill MessageString" Property="${MessageString}" Value="=#concat(${MessageString}, ${JobSuccessor.Id.Job.Id})" />
<Assign Name="Fill MessageString" Property="${MessageString}" Value="=#concat(${MessageString}, ' ')" />
</ForEach>
<Question Name="CheckJobSuccessorWithDependencyEndToStart" Type="YesNo" MessageCode="1285" Default="No" OutputProperty="${ActivatedJob}">
<Parameter Name="DependentJobs" Direction="In" Value="=#trim(${MessageString})" />
<Parameter Name="Description" Direction="In" Value="${NewProgressStatus.Description}" />
<Parameter Name="Job" Direction="In" Value="${Job}" />
</Question>
<When Name="AnswerIsNo" Condition="${ActivatedJob} == No">
<Stop Name="Stop" Mode="Abort" />
</When>
</When>
</When>
<UserContent Name="Post" />
</Execution>
</Workflow>
Job_Actionfield286_ProcessMultiJobTemplatebewerken
Beschrijving: Process MultiJobTemplate
<Workflow Name="Job_Actionfield286_ProcessMultiJobTemplate" Version="2025.07.28" WorkflowType="Standard" xmlns="urn:Ultimo.Framework.Workflow-mapping">
<Security EditLevel="10" ViewLevel="20" UserContentLevel="30" />
<Description>Process MultiJobTemplate</Description>
<Properties>
<Property Name="Job" Type="Job" Accessor="Root" Direction="In" />
<Property Name="SuccessorItems" Type="List[SuccessorItem]" Accessor="Optional" Direction="In" Comment="List of selected SuccessorItems" />
<Property Name="HasReachedApplyStatus" Type="Boolean" Accessor="Internal" />
<Property Name="SubjobsGenerated" Type="Int32" Accessor="Internal" />
</Properties>
<Execution>
<UserContent Name="Pre" />
<Command Name="Job_CheckStatus" CommandName="Job_CheckStatus">
<Parameter Name="ApplyStatus" Direction="In" Value="${Job.MultijobTemplate.ApplyRecordStatus}" />
<Parameter Name="Status" Direction="In" Value="${Job.Status}" />
<Parameter Name="HasReachedApplyStatus" Direction="Out" OutputProperty="${HasReachedApplyStatus}" />
</Command>
<When Name="IsApplyStatusEqualToJobStatus" Condition="${HasReachedApplyStatus} == True">
<WorkflowCall Name="Job_GenerateSubJobs" WorkflowName="Job_GenerateSubJobs">
<Parameter Name="Job" Direction="In" Value="${Job}" />
<Parameter Name="SuccessorItems" Direction="In" Value="${SuccessorItems}" />
<Parameter Name="SubjobsGenerated" Direction="Out" OutputProperty="${SubjobsGenerated}" />
</WorkflowCall>
<When Name="Show Message?" Condition="#{Settings.Job.ShowMultijobGenerateSubJobsDialog} == True && ${SubjobsGenerated} > 0">
<Message Name="SubjobsGenerated" MessageCode="1398">
<Parameter Name="Job" Direction="In" Value="${Job}" />
<Parameter Name="SubjobsGenerated" Direction="In" Value="${SubjobsGenerated}" />
</Message>
<WorkflowCall Name="Job_WarnIfScheduledStartDateIsInThePast" WorkflowName="Job_WarnIfScheduledStartDateIsInThePast">
<Parameter Name="Job" Direction="In" Value="${Job}" />
</WorkflowCall>
</When>
</When>
<UserContent Name="Post" />
</Execution>
</Workflow>
Job_Actionfield286_ReleaseConditionbewerken
Beschrijving: Validate ReleaseCondition on Job
<Workflow Name="Job_Actionfield286_ReleaseCondition" Version="2025.07.28" WorkflowType="Standard" xmlns="urn:Ultimo.Framework.Workflow-mapping">
<Security EditLevel="10" ViewLevel="20" UserContentLevel="30" />
<Description>Validate ReleaseCondition on Job</Description>
<Properties>
<Property Name="Job" Type="Job" Accessor="Root" Direction="In" />
<Property Name="ConcessionPolicy" Type="UltimoString" Accessor="Optional" Direction="In" />
<Property Name="EquipmentStatusesWithoutReleaseCondition" Type="List[Status]" Accessor="Optional" Direction="In" Default="Empty" Comment="Set here the equipment statuses that dont need a releasecondition" />
<Property Name="NewProgressStatus" Type="ProgressStatus" Accessor="Optional" Direction="In" />
<Property Name="ReleaseDate" Type="Date?" Accessor="Optional" Direction="In" />
<Property Name="UseReleaseCondition" Type="Boolean" Accessor="Optional" Direction="In" Comment="True to use release condition." />
<Property Name="ReleaseCondition" Type="ReleaseCondition" Accessor="Optional" Direction="InOut" Comment="When given, it will be shown in the dialog." />
<Property Name="CheckDate" Type="Date?" Accessor="Internal" />
<Property Name="UsePmWorkOrderFrequencyStartDate" Type="Boolean" Accessor="Internal" />
</Properties>
<Execution>
<UserContent Name="Pre" />
<WorkflowCall Name="Job_Actionfield286_SetUseReleaseCondition" WorkflowName="Job_Actionfield286_SetUseReleaseCondition">
<Parameter Name="EquipmentStatusesWithoutReleaseCondition" Direction="In" Value="${EquipmentStatusesWithoutReleaseCondition}" />
<Parameter Name="Job" Direction="In" Value="${Job}" />
<Parameter Name="UseReleaseCondition" Direction="InOut" Value="${UseReleaseCondition}" OutputProperty="${UseReleaseCondition}" />
</WorkflowCall>
<When Name="UseReleaseCondition?" Condition="${UseReleaseCondition} == True && ${NewProgressStatus} != Empty && (${NewProgressStatus.NextStatus} == JobStatus.Finished || ${NewProgressStatus.NextStatus} == JobStatus.Closed || ${NewProgressStatus.NextStatus} == JobStatus.Completed)">
<Validation Name="ReleaseCondition must be set" Condition="${ReleaseCondition} != Empty" MessageCode="0692" />
<When Name="SetReleaseDate?" Condition="${ReleaseCondition.SetReleaseDate} == True">
<When Name="PmWorkOrder?" Condition="${Job.PmWorkOrder} != Empty">
<When Name="PmWorkOrder.Dynamic?" Condition="${Job.PmWorkOrder.Dynamic} == True">
<Assign Name="set active date" Property="${Job.PmWorkOrder.LastMaintenanceDate}" Value="${Job.StatusActiveDate.Date?}" />
</When>
<Assign Name="checkDate by PmWorkOrder TimeNextMaintenanceDate" Property="${CheckDate}" Value="${Job.PmWorkOrder.TimeNextMaintenanceDate}" />
<Assign Name="set UsePmWorkOrderFrequencyStartDate to true" Property="${UsePmWorkOrderFrequencyStartDate}" Value="True" />
</When>
<When Name="Equipment present?" Condition="${UsePmWorkOrderFrequencyStartDate} == False && ${Job.Equipment} != Empty">
<Assign Name="checkDate by Equipment NextPmMaintenanceDate" Property="${CheckDate}" Value="${Job.Equipment.NextPmMaintenanceDate}" />
</When>
</When>
<Validation Name="ConcessionPolicy and ReleaseDate mandatory check" Condition="(${ReleaseCondition.SetConcessionPolicy} == False || ${ConcessionPolicy} != Empty) && (${ReleaseCondition.SetReleaseDate} == False || ${ReleaseDate} != Empty)" MessageCode="1644">
<Parameter Name="ConcessionPolicyValid" Direction="In" Value="=${ReleaseCondition.SetConcessionPolicy} == False || ${ConcessionPolicy} != Empty" />
<Parameter Name="ReleaseDateValid" Direction="In" Value="=${ReleaseCondition.SetReleaseDate} == False || ${ReleaseDate} != Empty" />
</Validation>
<When Name="check releaseDate?" Condition="${ReleaseCondition.SetReleaseDate} == True">
<Validation Name="ReleaseDate >= System Date" Condition="${ReleaseDate} >= #{Environment.CurrentDate}" MessageCode="0695" />
<Validation Name="CheckDate validation" Condition="${CheckDate} == Empty || ${ReleaseDate} < ${CheckDate}" MessageCode="0697">
<Parameter Name="MaintenanceDate" Direction="In" Value="${CheckDate}" />
</Validation>
</When>
<Assign Name="WriteReleaseCondition = true" Property="#{Settings.Job.WriteReleaseCondition}" Value="True" />
</When>
<UserContent Name="Post" />
</Execution>
</Workflow>
Job_Actionfield286_SetMultiJobTemplatebewerken
Beschrijving: Set MultiJobTemplate properties on job
<Workflow Name="Job_Actionfield286_SetMultiJobTemplate" Version="2025.07.28" WorkflowType="Standard" xmlns="urn:Ultimo.Framework.Workflow-mapping">
<Security EditLevel="10" ViewLevel="20" UserContentLevel="30" />
<Description>Set MultiJobTemplate properties on job</Description>
<Properties>
<Property Name="Job" Type="Job" Accessor="Root" Direction="In" />
<Property Name="MultijobTemplate" Type="MultijobTemplate" Accessor="Optional" Direction="In" Comment="Multijobtemplate of the job" />
</Properties>
<Execution>
<UserContent Name="Pre" />
<Assign Name="Set MultijobTemplate" Property="${Job.MultijobTemplate}" Value="${MultijobTemplate}" />
<When Name="Multijob template value set?" Condition="${MultijobTemplate} != Empty">
<Assign Name="Copy working days" Property="${Job.UseWorkScheduleForPlanning}" Value="${MultijobTemplate.UseWorkScheduleForPlanning}" />
</When>
<UserContent Name="Post" />
</Execution>
</Workflow>
Job_Actionfield286_SetUseReleaseConditionbewerken
Beschrijving: Validate ReleaseCondition on Job
<Workflow Name="Job_Actionfield286_SetUseReleaseCondition" Version="2025.07.28" WorkflowType="Standard" xmlns="urn:Ultimo.Framework.Workflow-mapping">
<Security EditLevel="10" ViewLevel="20" UserContentLevel="30" />
<Description>Validate ReleaseCondition on Job</Description>
<Properties>
<Property Name="Job" Type="Job" Accessor="Root" Direction="In" />
<Property Name="EquipmentStatusesWithoutReleaseCondition" Type="List[Status]" Accessor="Optional" Direction="In" Default="Empty" Comment="Set here the equipment statuses that dont need a releasecondition" />
<Property Name="UseReleaseCondition" Type="Boolean" Accessor="Optional" Direction="InOut" Comment="True to use release condition." />
</Properties>
<Execution>
<UserContent Name="Pre" />
<When Name="Check UseReleaseCondition" Condition="${Job.ReleaseCondition} != Empty" Comment="ReleaseCondition can be set only one time ">
<Assign Name="UseReleaseCondition" Property="${UseReleaseCondition}" Value="False" />
</When>
<When Name="Check UseReleaseCondition" Condition="${Job.Equipment} == Empty" Comment="ReleaseCondition can be set only when job has an equipment">
<Assign Name="UseReleaseCondition" Property="${UseReleaseCondition}" Value="False" />
</When>
<When Name="Name" Condition="${UseReleaseCondition} == True && ${Job.WorkOrderType} != Empty">
<Assign Name="UseReleaseCondition" Property="${UseReleaseCondition}" Value="${Job.WorkOrderType.UseReleaseCondition}" />
</When>
<When Name="Check UseReleaseCondition" Condition="${EquipmentStatusesWithoutReleaseCondition} != Empty && ${Job.Equipment} != Empty && #containselement(${EquipmentStatusesWithoutReleaseCondition}, ${Job.Equipment.Status}, False) == True">
<Assign Name="UseReleaseCondition" Property="${UseReleaseCondition}" Value="False" />
</When>
<UserContent Name="Post" />
</Execution>
</Workflow>
Job_Actionfield286_SetValuesAndShowDialogbewerken
Beschrijving: Changes the progress status of a job and/or books hours. If applicable, sets the release condition of an equipment.(AF286).Set values and showDialog Dialog_HourRegistration
<Workflow Name="Job_Actionfield286_SetValuesAndShowDialog" Version="2025.07.28" WorkflowType="Standard" xmlns="urn:Ultimo.Framework.Workflow-mapping">
<Security EditLevel="10" ViewLevel="20" UserContentLevel="30" />
<Description>Changes the progress status of a job and/or books hours. If applicable, sets the release condition of an equipment.(AF286).Set values and showDialog Dialog_HourRegistration</Description>
<Properties>
<Property Name="Job" Type="Job" Accessor="Root" Direction="In" />
<Property Name="AllowedProgressStatusList" Type="List[ProgressStatus]" Accessor="Optional" Direction="In" Default="Empty" Comment="List of Allowed ProgressStatuses" />
<Property Name="BookHoursDurationIntervalInMinutes" Type="Int32?" Accessor="Optional" Direction="In" Default="15" Comment="Interval in minutes shown in the dropdown." />
<Property Name="DefaultProgressStatusIdForQualityNotOk" Type="UltimoString" Accessor="Optional" Direction="In" Comment="Used for Bulk PM only. Progress status used for the jobs created from the InspectionLines, which are not marked Quality OK" />
<Property Name="DefaultProgressStatusIdForQualityOk" Type="UltimoString" Accessor="Optional" Direction="In" Comment="Used for Bulk PM only. Progress status used for the jobs created from the InspectionLines, which are marked Quality OK" />
<Property Name="DialogTitleLabel" Type="String" Accessor="Optional" Direction="In" Comment="Label code used for dialog title." />
<Property Name="EmployeeFilter" Type="String" Accessor="Optional" Direction="In" Default="EmpContext = 1 AND EMPCOMPID=N'#{Company.Id}'" Comment="Filter used for employees shown in the employee selection dropdown. Format: EmpContext = 1 AND EmpSkcId = TD" />
<Property Name="EnableDate" Type="Boolean" Accessor="Optional" Direction="In" Default="True" Comment="Prevent users can set the date manual" />
<Property Name="EnableToChangeEquipmentStatusWhenChangingJobStatus" Type="Boolean" Accessor="Optional" Direction="In" Default="False" Comment="In dialog 'Update Progress' allows to change the status of the equipment registered on the job." />
<Property Name="EquipmentStatusesWithoutReleaseCondition" Type="List[Status]" Accessor="Optional" Direction="In" Default="Empty" Comment="Set here the equipment statuses that dont need a releasecondition" />
<Property Name="MaxBookHours" Type="Int32?" Accessor="Optional" Direction="In" Default="10" Comment="Maximum number of hours to book and shown in the drop-down list." />
<Property Name="ProgressStatusContext" Type="Context" Accessor="Optional" Direction="In" Comment="Context for the possible progress status records." />
<Property Name="ProgressStatusDialogOptions" Type="ProgressStatusDialogOptions" Accessor="Optional" Direction="In" Default="TextAndStatus" Comment="Allow user to modify both text and status." />
<Property Name="ShowLinkDocument" Type="Boolean" Accessor="Optional" Direction="In" Default="True" Comment="Set Document.ManageEmployee to User." />
<Property Name="UseReleaseCondition" Type="Boolean" Accessor="Optional" Direction="In" Default="True" Comment="True to use release condition." />
<Property Name="WorkDescriptionLabel" Type="UltimoString" Accessor="Optional" Direction="In" Comment="Label code used for workdescription." />
<Property Name="ActivityDate" Type="DateTime?" Accessor="Optional" Direction="InOut" />
<Property Name="BookHours" Type="Boolean" Accessor="Optional" Direction="InOut" Default="True" Comment="True in order to use hour registration." />
<Property Name="ConcessionPolicy" Type="UltimoString" Accessor="Optional" Direction="InOut" />
<Property Name="Employee" Type="Employee" Accessor="Optional" Direction="InOut" Default="#{User.EmployeeId}" Comment="Employee used as default for hour registration and status transition." />
<Property Name="HourCode" Type="HourCode" Accessor="Optional" Direction="InOut" />
<Property Name="HoursWorked" Type="Decimal?" Accessor="Optional" Direction="InOut" />
<Property Name="HourTariffCategory" Type="HourTariffCategory" Accessor="Optional" Direction="InOut" />
<Property Name="NewProgressStatus" Type="ProgressStatus" Accessor="Optional" Direction="InOut" />
<Property Name="ReleaseCondition" Type="ReleaseCondition" Accessor="Optional" Direction="InOut" Comment="When given, it will be shown in the dialog." />
<Property Name="ReleaseDate" Type="Date?" Accessor="Optional" Direction="InOut" />
<Property Name="WorkDescription" Type="UltimoString" Accessor="Optional" Direction="InOut" />
<Property Name="DocumentUploadFile" Type="String" Accessor="Optional" Direction="Out" Comment="Job document" />
<Property Name="EquipmentNewProgressStatus" Type="ProgressStatus" Accessor="Optional" Direction="Out" Comment="Optionally, equipment on job can be given a new progress status" />
<Property Name="EquipmentRemark" Type="UltimoString" Accessor="Optional" Direction="Out" Comment="Optional remark for equipment status change" />
<Property Name="EquipmentRemarkAsEnteredByUser" Type="UltimoString" Accessor="Optional" Direction="Out" Comment="Optional remark for equipment status change as entered in the dialog" />
</Properties>
<Execution>
<UserContent Name="Pre" />
<Assign Name="Set ProgressStatusIdForQualityOk for BulkPO" Property="#{Settings.JobInspectionLine.ProgressStatusIdForQualityOk}" Value="${DefaultProgressStatusIdForQualityOk}" />
<Assign Name="Set ProgressStatusIdForQualityNotOk for BulkPO" Property="#{Settings.JobInspectionLine.ProgressStatusIdForQualityNotOk}" Value="${DefaultProgressStatusIdForQualityNotOk}" />
<Validation Name="Job Status" Condition="${Job.Status} != JobStatus.Closed" MessageCode="0684" />
<When Name="Check parameters" Condition="(${ProgressStatusDialogOptions} == None || ${ProgressStatusDialogOptions} == TextOnly) && ${UseReleaseCondition} == False && ${BookHours} == False">
<Message Name="HourRegistrationDialog wrong configuration" MessageCode="1912" />
<Stop Name="Stop" Mode="Abort" />
</When>
<When Name="Book hours only valid is employee is allowed to book hours" Condition="(${BookHours} == True && #{User.IsSuper} == False && ${Employee.SelectForBookHours} == False) || #{Company.MatchesCompanyOfCurrentEmployee}==False">
<Assign Name="Disable book hours" Property="${BookHours}" Value="False" />
</When>
<When Name="if bookhours" Condition="${BookHours} == True">
<Validation Name="Job WorkOrderType" Condition="${Job.WorkOrderType} != Empty" MessageCode="0685">
<Parameter Name="Job" Direction="In" Value="${Job}" />
</Validation>
</When>
<WorkflowCall Name="Dialog_HourRegistration" WorkflowName="Dialog_HourRegistration">
<Parameter Name="AllowedProgressStatusList" Direction="In" Value="${AllowedProgressStatusList}" />
<Parameter Name="BookHours" Direction="In" Value="${BookHours}" />
<Parameter Name="BookHoursDurationIntervalInMinutes" Direction="In" Value="${BookHoursDurationIntervalInMinutes}" />
<Parameter Name="DialogTitleLabel" Direction="In" Value="${DialogTitleLabel}" />
<Parameter Name="EmployeeFilter" Direction="In" Value="${EmployeeFilter}" />
<Parameter Name="EnableDate" Direction="In" Value="${EnableDate}" />
<Parameter Name="EnableToChangeEquipmentStatusWhenChangingJobStatus" Direction="In" Value="${EnableToChangeEquipmentStatusWhenChangingJobStatus}" />
<Parameter Name="EquipmentStatusesWithoutReleaseCondition" Direction="In" Value="${EquipmentStatusesWithoutReleaseCondition}" />
<Parameter Name="Job" Direction="In" Value="${Job}" />
<Parameter Name="MaxBookHours" Direction="In" Value="${MaxBookHours}" />
<Parameter Name="ProgressStatusContext" Direction="In" Value="${ProgressStatusContext}" />
<Parameter Name="ProgressStatusDialogOptions" Direction="In" Value="${ProgressStatusDialogOptions}" />
<Parameter Name="ShowLinkDocument" Direction="In" Value="${ShowLinkDocument}" />
<Parameter Name="UseReleaseCondition" Direction="In" Value="${UseReleaseCondition}" />
<Parameter Name="WorkDescriptionLabel" Direction="In" Value="${WorkDescriptionLabel}" />
<Parameter Name="Employee" Direction="InOut" Value="${Employee}" OutputProperty="${Employee}" />
<Parameter Name="ReleaseCondition" Direction="InOut" Value="${ReleaseCondition}" OutputProperty="${ReleaseCondition}" />
<Parameter Name="ActivityDate" Direction="Out" OutputProperty="${ActivityDate}" />
<Parameter Name="ConcessionPolicy" Direction="Out" OutputProperty="${ConcessionPolicy}" />
<Parameter Name="DocumentUploadFile" Direction="Out" OutputProperty="${DocumentUploadFile}" />
<Parameter Name="EquipmentNewProgressStatus" Direction="Out" OutputProperty="${EquipmentNewProgressStatus}" />
<Parameter Name="EquipmentRemark" Direction="Out" OutputProperty="${EquipmentRemark}" />
<Parameter Name="EquipmentRemarkAsEnteredByUser" Direction="Out" OutputProperty="${EquipmentRemarkAsEnteredByUser}" />
<Parameter Name="HourCode" Direction="Out" OutputProperty="${HourCode}" />
<Parameter Name="HoursWorked" Direction="Out" OutputProperty="${HoursWorked}" />
<Parameter Name="HourTariffCategory" Direction="Out" OutputProperty="${HourTariffCategory}" />
<Parameter Name="NewProgressStatus" Direction="Out" OutputProperty="${NewProgressStatus}" />
<Parameter Name="ReleaseDate" Direction="Out" OutputProperty="${ReleaseDate}" />
<Parameter Name="WorkDescription" Direction="Out" OutputProperty="${WorkDescription}" />
</WorkflowCall>
<UserContent Name="Post" />
</Execution>
</Workflow>
Job_Actionfield286_ValidateBookHoursbewerken
Beschrijving: Validate BookHours
<Workflow Name="Job_Actionfield286_ValidateBookHours" Version="2025.07.28" WorkflowType="Standard" xmlns="urn:Ultimo.Framework.Workflow-mapping">
<Security EditLevel="10" ViewLevel="20" UserContentLevel="30" />
<Description>Validate BookHours</Description>
<Properties>
<Property Name="Job" Type="Job" Accessor="Root" Direction="In" />
<Property Name="BookHours" Type="Boolean" Accessor="Optional" Direction="In" />
<Property Name="HourCode" Type="HourCode" Accessor="Optional" Direction="In" />
<Property Name="HoursWorked" Type="Decimal?" Accessor="Optional" Direction="In" />
<Property Name="HourTariffCategory" Type="HourTariffCategory" Accessor="Optional" Direction="In" />
<Property Name="HourDialogModus" Type="HourDialogModus" Accessor="Internal" Default="#{UltimoSettings.HourDialogModus}" />
</Properties>
<Execution>
<UserContent Name="Pre" />
<When Name="if bookhours" Condition="${BookHours} == True && ${HoursWorked} != Empty && ${HoursWorked} != 0">
<When Name="When HourDialogModus is not set" Condition="${HourDialogModus} == NotSet">
<Assign Name="Set HourDialogModus to default value" Property="${HourDialogModus}" Value="HourTariffCategory" />
</When>
<When Name="HourDialogModus?" Condition="${HourDialogModus} == HourTariffCategory">
<AssignWhenEmpty Name="HourCode" Property="${HourCode}" Value="${Job.WorkOrderType.HourCode?}" />
</When>
<Validation Name="HourCode" Condition="${HourCode} != Empty" MessageCode="0757">
<Parameter Name="DialogModus" Direction="In" Value="${HourDialogModus}" />
<Parameter Name="Job" Direction="In" Value="${Job}" />
</Validation>
<When Name="HourTariffCategory modus?" Condition="${HourDialogModus} == HourTariffCategory || ${HourDialogModus} == HourCodeAndHourTariffCategory">
<Validation Name="HourTariffCategory" Condition="${HourTariffCategory} != Empty" MessageCode="0691" />
</When>
</When>
<UserContent Name="Post" />
</Execution>
</Workflow>
Job_Actionfield286_ValidateJobMaterialbewerken
Beschrijving: Validate JobMaterial
<Workflow Name="Job_Actionfield286_ValidateJobMaterial" Version="2025.07.28" WorkflowType="Standard" xmlns="urn:Ultimo.Framework.Workflow-mapping">
<Security EditLevel="10" ViewLevel="20" UserContentLevel="30" />
<Description>Validate JobMaterial</Description>
<Properties>
<Property Name="Job" Type="Job" Accessor="Root" Direction="In" />
<Property Name="JobMaterials" Type="List[JobMaterial]" Accessor="Internal" />
</Properties>
<Execution>
<UserContent Name="Pre" />
<When Name="StockLevelPerSite is true" Condition="#{UltimoSettings.StockLevelPerSite} == true">
<Transaction>
<GetList Name="Get JobMaterials" Type="JobMaterial" OutputProperty="${JobMaterials}" OrderBy="Id" OrderDirection="Ascending">
<Filters>
<CombinedFilter FilterOperator="And">
<PropertyFilter PropertyName="Id.Job" Operator="=" PropertyValue="${Job}" />
<InFilter PropertyName="Status" Values="JobMaterialStatus.None,JobMaterialStatus.Created" />
</CombinedFilter>
</Filters>
</GetList>
</Transaction>
<When Name="There are JobMaterials" Condition="${JobMaterials.Count} > 0">
<Validation Name="Check job.site is null" Condition="${Job.Site} != Empty" MessageCode="3629">
<Parameter Name="Job" Direction="In" Value="${Job}" />
</Validation>
<ForEach Name="ForEach JobMaterial" In="${JobMaterials}" As="JobMaterial">
<Validation Name="Check Article" Condition="${JobMaterial.Article} != Empty" MessageCode="0390">
<Parameter Name="JobMaterial" Direction="In" Value="${JobMaterial}" />
</Validation>
<When Name="StockLevelPerSite is true" Condition="#{UltimoSettings.StockLevelPerSite} == true">
<Validation Name="Check job.site != jobmat.Site" Condition="${Job.Site} == ${JobMaterial.Site}" MessageCode="3630">
<Parameter Name="JobMaterial" Direction="In" Value="${JobMaterial}" />
</Validation>
</When>
</ForEach>
</When>
</When>
<UserContent Name="Post" />
</Execution>
</Workflow>
Job_Actionfield286_ValidateTargetDatebewerken
Beschrijving: Validate Job.TargetDate for MultijobTemplate
<Workflow Name="Job_Actionfield286_ValidateTargetDate" Version="2025.07.28" WorkflowType="Standard" xmlns="urn:Ultimo.Framework.Workflow-mapping">
<Security EditLevel="10" ViewLevel="20" UserContentLevel="30" />
<Description>Validate Job.TargetDate for MultijobTemplate </Description>
<Properties>
<Property Name="Job" Type="Job" Accessor="Root" Direction="In" />
<Property Name="MultijobTemplate" Type="MultijobTemplate" Accessor="Optional" Direction="In" />
<Property Name="Result" Type="Boolean" Accessor="Internal" />
<Property Name="WorkSchedule" Type="WorkSchedule" Accessor="Internal" />
</Properties>
<Execution>
<UserContent Name="Pre" />
<When Name="Type of schedule is duration in working days" Condition="${MultijobTemplate} != Empty && ${MultijobTemplate.UseWorkScheduleForPlanning} == True">
<Assign Name="Set working day schedule" Property="${WorkSchedule}" Value="#{UltimoSettings.JobSchedule}" />
<When Name="Check TargetDate" Condition="${MultijobTemplate.ScheduledStartType} == ScheduledStartBeforeScheduledCompletion">
<Validation Name="Job has a TargetDate?" Condition="${Job.TargetDate} != Empty" MessageCode="3539">
<Parameter Name="Job" Direction="In" Value="${Job}" />
<Parameter Name="MultijobTemplate" Direction="In" Value="${MultijobTemplate}" />
</Validation>
<Transaction>
<Command Name="CheckWhetherTargetDateIsWithinBounds" CommandName="IsDateWithinBoundsOfSchedule">
<Parameter Name="Date" Direction="In" Value="${Job.TargetDate.Date}" />
<Parameter Name="WorkSchedule" Direction="In" Value="${WorkSchedule}" />
<Parameter Name="Result" Direction="Out" OutputProperty="${Result}" />
</Command>
</Transaction>
<Validation Name="IsDateValid" Condition="${Result} == True" MessageCode="1384">
<Parameter Name="Job" Direction="In" Value="${Job}" />
<Parameter Name="TargetDate" Direction="In" Value="${Job.TargetDate}" />
</Validation>
</When>
</When>
<UserContent Name="Post" />
</Execution>
</Workflow>