| <?xml version="1.0" encoding="UTF-8" ?> |
| <!-- |
| Licensed to the Apache Software Foundation (ASF) under one |
| or more contributor license agreements. See the NOTICE file |
| distributed with this work for additional information |
| regarding copyright ownership. The ASF licenses this file |
| to you under the Apache License, Version 2.0 (the |
| "License"); you may not use this file except in compliance |
| with the License. You may obtain a copy of the License at |
| |
| http://www.apache.org/licenses/LICENSE-2.0 |
| |
| Unless required by applicable law or agreed to in writing, |
| software distributed under the License is distributed on an |
| "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| KIND, either express or implied. See the License for the |
| specific language governing permissions and limitations |
| under the License. |
| --> |
| |
| <simple-methods xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |
| xsi:noNamespaceSchemaLocation="http://ofbiz.apache.org/dtds/simple-methods.xsd"> |
| |
| |
| <simple-method method-name="createCommunicationEventWithPermission" short-description="Create a CommunicationEvent with permission check"> |
| <set field="parameters.permission" value="true"/> |
| <call-simple-method method-name="createCommunicationEvent"/> |
| </simple-method> |
| |
| <simple-method method-name="createCommunicationEventWithoutPermission" short-description="Create a CommunicationEvent without permission check"> |
| <set field="parameters.permission" value="false"/> |
| <call-simple-method method-name="createCommunicationEvent"/> |
| </simple-method> |
| |
| <simple-method method-name="createCommunicationEvent" short-description="Create a CommunicationEvent with or w/o permission check"> |
| <if-not-empty field="parameters.parentCommEventId"> |
| <entity-and list-name="roles" entity-name="CommunicationEventRole"> |
| <field-map field-name="communicationEventId" env-name="parameters.parentCommEventId"/> |
| <field-map field-name="partyId" env-name="parameters.partyIdFrom"/> |
| </entity-and> |
| <if-not-empty field="roles"> |
| <first-from-list list-name="roles" entry-name="role"/> |
| <set field="newStat.communicationEventId" from-field="parameters.parentCommEventId"/> |
| <set field="newStat.partyId" from-field="parameters.partyIdFrom"/> |
| <set field="newStat.roleTypeId" from-field="role.roleTypeId"/> |
| <set field="newStat.statusId" value="COM_ROLE_COMPLETED"/> |
| <call-service service-name="setCommunicationEventRoleStatus" in-map-name="newStat"/> |
| </if-not-empty> |
| </if-not-empty> |
| |
| <if-empty field="parameters.statusId"> |
| <set value="COM_ENTERED" field="parameters.statusId"/> |
| </if-empty> |
| |
| <make-value value-name="newEntity" entity-name="CommunicationEvent"/> |
| <set-nonpk-fields map-name="parameters" value-name="newEntity"/> |
| |
| <if-empty field="parameters.communicationEventId"> |
| <sequenced-id-to-env sequence-name="CommunicationEvent" env-name="newEntity.communicationEventId"/> |
| <else> |
| <set field="newEntity.communicationEventId" from-field="parameters.communicationEventId"/> |
| </else> |
| </if-empty> |
| <field-to-result field-name="newEntity.communicationEventId" result-name="communicationEventId"/> |
| |
| <!-- if only contactMechId and no partyIdTo is provided for creation email address find the related party --> |
| <if-empty field="parameters.partyIdTo"> |
| <if-not-empty field="parameters.contactMechIdTo"> |
| <entity-and entity-name="PartyAndContactMech" list-name="partyContactMechs" filter-by-date="true"> |
| <field-map field-name="contactMechId" env-name="parameters.contactMechIdTo"/> |
| <field-map field-name="contactMechTypeId" value="EMAIL_ADDRESS"/> |
| </entity-and> |
| <first-from-list entry-name="partyContactMech" list-name="partyContactMechs"/> |
| <set field="newEntity.partyIdTo" from-field="partyContactMech.partyId"/> |
| </if-not-empty> |
| </if-empty> |
| |
| <now-timestamp-to-env env-name="newEntity.entryDate"/> |
| <create-value value-name="newEntity"/> |
| |
| <if-not-empty field="parameters.productId"> |
| <make-value value-name="eventProduct" entity-name="CommunicationEventProduct"/> |
| <set from-field="parameters.productId" field="eventProduct.productId"/> |
| <set from-field="newEntity.communicationEventId" field="eventProduct.communicationEventId"/> |
| <create-value value-name="eventProduct"/> |
| </if-not-empty> |
| <if-not-empty field="parameters.orderId"> |
| <make-value value-name="eventOrder" entity-name="CommunicationEventOrder"/> |
| <set from-field="parameters.orderId" field="eventOrder.orderId"/> |
| <set from-field="newEntity.communicationEventId" field="eventOrder.communicationEventId"/> |
| <create-value value-name="eventOrder"/> |
| </if-not-empty> |
| <if-not-empty field="parameters.custReqId"> |
| <make-value value-name="eventRequest" entity-name="CustRequestCommEvent"/> |
| <set from-field="parameters.custReqId" field="eventRequest.custReqId"/> |
| <set from-field="newEntity.communicationEventId" field="eventRequest.communicationEventId"/> |
| <create-value value-name="eventRequest"/> |
| </if-not-empty> |
| |
| <!-- partyIdTo role--> |
| <if-not-empty field="newEntity.partyIdTo"> |
| <set field="commRole.communicationEventId" from-field="newEntity.communicationEventId" /> |
| <set field="commRole.partyId" from-field="newEntity.partyIdTo" /> |
| <set field="commRole.roleTypeId" value="ADDRESSEE" /> |
| <set field="commRole.contactMechId" from-field="newEntity.contactMechIdTo" /> |
| <set field="commRole.statusId" value="COM_ROLE_CREATED" /> |
| <if-compare field="parameters.permission" value="true" operator="equals"> |
| <call-service service-name="createCommunicationEventRole" in-map-name="commRole"/> |
| <else> |
| <call-service service-name="createCommunicationEventRoleWithoutPermission" in-map-name="commRole"/> |
| </else> |
| </if-compare> |
| </if-not-empty> |
| |
| <!-- partyIdFrom role--> |
| <if-not-empty field="newEntity.partyIdFrom"> |
| <set field="commRole.communicationEventId" from-field="newEntity.communicationEventId" /> |
| <set field="commRole.partyId" from-field="newEntity.partyIdFrom" /> |
| <set field="commRole.roleTypeId" value="ORIGINATOR" /> |
| <set field="commRole.contactMechId" from-field="newEntity.contactMechIdFrom" /> |
| <set field="commRole.statusId" value="COM_ROLE_COMPLETED" /> |
| <if-compare field="parameters.permission" value="true" operator="equals"> |
| <call-service service-name="createCommunicationEventRole" in-map-name="commRole"/> |
| <else> |
| <call-service service-name="createCommunicationEventRoleWithoutPermission" in-map-name="commRole"/> |
| </else> |
| </if-compare> |
| </if-not-empty> |
| </simple-method> |
| |
| <simple-method method-name="updateCommunicationEvent" |
| short-description="Update a CommunicationEvent"> |
| <entity-one entity-name="CommunicationEvent" value-name="event" /> |
| <set field="oldStatusId" from-field="event.statusId" /> |
| <set-nonpk-fields map-name="parameters" value-name="event" /> |
| <if-compare-field operator="not-equals" field="event.statusId" |
| to-field="oldStatusId"> |
| <call-simple-method method-name="setCommunicationEventStatus" /> |
| </if-compare-field> |
| |
| <!-- if the from- or to-party changed change also the roles --> |
| <if-not-empty field="parameters.partyIdFrom"> |
| <if-compare operator="not-equals" value="parameters.partIdFrom" field="event.partyIdFrom"> |
| <!-- check if role exist then delete old role --> |
| <entity-one entity-name="CommunicationEventRole" |
| value-name="roleFrom"> |
| <field-map field-name="communicationEventId" env-name="event.communicationEventId" /> |
| <field-map field-name="partyId" env-name="parameters.partyIdFrom" /> |
| <field-map field-name="roleTypeId" value="ORIGINATOR" /> |
| </entity-one> |
| <if-not-empty field="roleFrom"> |
| <remove-value value-name="roleFrom" /> |
| </if-not-empty> |
| <!-- add new role --> |
| <set field="newRoleFrom.communicationEventId" from-field="event.communicationEventId" /> |
| <set field="newRoleFrom.partyId" from-field="event.partyIdFrom" /> |
| <set field="newRoleFrom.roleTypeId" value="ORIGINATOR" /> |
| <set field="newRoleFrom.contactMechId" from-field="event.contactMechIdFrom" /> |
| <call-service service-name="createCommunicationEventRole" |
| in-map-name="newRoleFrom" /> |
| </if-compare> |
| </if-not-empty> |
| <if-empty field="parameters.partyIdTo"> |
| <if-not-empty field="parameters.contactMechIdTo"> |
| <entity-and entity-name="PartyAndContactMech" list-name="partyContactMechs" filter-by-date="true"> |
| <field-map field-name="contactMechId" env-name="parameters.contactMechIdTo"/> |
| <field-map field-name="contactMechTypeId" value="EMAIL_ADDRESS"/> |
| </entity-and> |
| <first-from-list entry-name="partyContactMech" list-name="partyContactMechs"/> |
| <set field="parameters.partyIdTo" from-field="partyContactMech.partyId"/> |
| <set field="event.partyIdTo" from-field="partyContactMech.partyId"/> |
| </if-not-empty> |
| </if-empty> |
| <if-not-empty field="parameters.partyIdTo"> |
| <if-compare operator="not-equals" value="parameters.partIdTo" |
| field="event.partyIdTo"> |
| <!-- check if role exist then delete old role --> |
| <entity-one entity-name="CommunicationEventRole" |
| value-name="roleTo"> |
| <field-map field-name="communicationEventId" env-name="event.communicationEventId" /> |
| <field-map field-name="partyId" env-name="event.partyIdTo" /> |
| <field-map field-name="roleTypeId" value="ADDRESSEE" /> |
| </entity-one> |
| <if-not-empty field="roleTo"> |
| <remove-value value-name="roleTo" /> |
| </if-not-empty> |
| <!-- add new role --> |
| <set field="newRoleTo.communicationEventId" from-field="event.communicationEventId" /> |
| <set field="newRoleTo.partyId" from-field="event.partyIdTo" /> |
| <set field="newRoleTo.roleTypeId" value="ADDRESSEE" /> |
| <set field="newRoleTo.contactMechId" from-field="event.contactMechIdTo" /> |
| <call-service service-name="createCommunicationEventRole" |
| in-map-name="newRoleTo" /> |
| </if-compare> |
| </if-not-empty> |
| <store-value value-name="event" /> |
| </simple-method> |
| |
| <simple-method method-name="deleteCommunicationEvent" short-description="Delete a CommunicationEvent"> |
| <entity-one entity-name="CommunicationEvent" value-name="event"/> |
| <!-- remove related links to content --> |
| <get-related value-name="event" relation-name="CommEventContentAssoc" list-name="contentAssocs"/> |
| <if-not-empty field="contentAssocs"> |
| <iterate entry-name="contentAssoc" list-name="contentAssocs"> |
| <remove-value value-name="contentAssoc"/> |
| <!-- delete content and dataresource too if requested --> |
| <if-compare field="parameters.delContentDataResource" value="Y" operator="equals"> |
| <get-related value-name="contentAssoc" relation-name="FromContent" list-name="contents"/> |
| <if-not-empty field="contents"> |
| <iterate entry-name="content" list-name="contents"> |
| <remove-related value-name="content" relation-name="ContentRole"/> |
| <remove-value value-name="content"/> |
| <get-related-one value-name="content" relation-name="DataResource" to-value-name="dataResource"/> |
| <if-not-empty field="dataResource"> |
| <get-related-one value-name="dataResource" relation-name="ImageDataResource" to-value-name="imageDataResource"/> |
| <if-not-empty field="imageDataResource"> |
| <remove-value value-name="imageDataResource"/> |
| </if-not-empty> |
| <get-related-one value-name="dataResource" relation-name="ElectronicText" to-value-name="electronicText"/> |
| <if-not-empty field="electronicText"> |
| <remove-value value-name="electronicText"/> |
| </if-not-empty> |
| <remove-related value-name="dataResource" relation-name="DataResourceRole"/> |
| <remove-value value-name="dataResource"/> |
| </if-not-empty> |
| </iterate> |
| </if-not-empty> |
| </if-compare> |
| </iterate> |
| </if-not-empty> |
| <!-- delete the roles when exist and the event itself --> |
| <remove-related value-name="event" relation-name="CommunicationEventRole"/> |
| <remove-value value-name="event"/> |
| </simple-method> |
| <simple-method method-name="deleteCommunicationEventWorkEffort" short-description="delete commEvent and workEffort"> |
| |
| <entity-one entity-name="CommunicationEvent" value-name="event"/> |
| <!-- remove related workeffort when this is the only communicationevent connected to it --> |
| <get-related value-name="event" relation-name="CommunicationEventWorkEff" list-name="workEffortComs"/> |
| <if-not-empty field="workEffortComs"> |
| <iterate entry-name="workEffortCom" list-name="workEffortComs"> |
| <remove-value value-name="workEffortCom"/> |
| <get-related-one value-name="workEffortCom" relation-name="WorkEffort" to-value-name="workEffort"/> |
| <get-related value-name="workEffort" relation-name="CommunicationEventWorkEff" list-name="otherComs"/> |
| <if-empty field="otherComs"> |
| <log level="info" message="remove workeffort ${workEffort.workEffortId} and related parties and status"/> |
| <remove-related value-name="workEffort" relation-name="WorkEffortPartyAssignment"/> |
| <remove-related value-name="workEffort" relation-name="WorkEffortPartyAssignment"/> |
| <remove-related value-name="workEffort" relation-name="WorkEffortStatus"/> |
| <remove-related value-name="workEffort" relation-name="WorkEffortKeyword"/> |
| <remove-value value-name="workEffort"/> |
| </if-empty> |
| </iterate> |
| </if-not-empty> |
| <!-- delete the event itself --> |
| <call-service service-name="deleteCommunicationEvent" in-map-name="parameters"/> |
| </simple-method> |
| <!-- since these ancillary operations on communication event cause them to be updated, |
| they will all use the CME_UPDATE permission --> |
| <simple-method method-name="createCommunicationEventPurpose" short-description="Create a CommunicationEventPurpose"> |
| |
| <make-value value-name="newEntity" entity-name="CommunicationEventPurpose"/> |
| <set-pk-fields map-name="parameters" value-name="newEntity"/> |
| <set-nonpk-fields map-name="parameters" value-name="newEntity"/> |
| <create-value value-name="newEntity"/> |
| </simple-method> |
| <simple-method method-name="removeCommunicationEventPurpose" short-description="Remove a CommunicationEventPurpose"> |
| <entity-one entity-name="CommunicationEventPurpose" value-name="eventPurpose"/> |
| <remove-value value-name="eventPurpose"/> |
| </simple-method> |
| <simple-method method-name="createCommunicationEventRole" |
| short-description="Create a CommunicationEventRole"> |
| <!-- check if role already exist, then ignore --> |
| <entity-one entity-name="CommunicationEventRole" value-name="communicationEventRole" /> |
| <if-empty field="communicationEventRole"> |
| <entity-one entity-name="UserLogin" value-name="sysUserLogin"> |
| <field-map field-name="userLoginId" value="system"/> |
| </entity-one> |
| <set-service-fields service-name="createPartyRole" map-name="parameters" to-map-name="partyRole"/> |
| <set field="partyRole.userLogin" from-field="sysUserLogin"/> |
| <call-service service-name="createPartyRole" in-map-name="partyRole" include-user-login="false"/> |
| <make-value value-name="newEntity" entity-name="CommunicationEventRole" /> |
| <set-pk-fields map-name="parameters" value-name="newEntity" /> |
| <set-nonpk-fields map-name="parameters" value-name="newEntity" /> |
| <if-empty field="newEntity.statusId"> |
| <set field="newEntity.statusId" value="COM_ROLE_CREATED" /> |
| </if-empty> |
| <create-value value-name="newEntity" /> |
| </if-empty> |
| </simple-method> |
| <simple-method method-name="updateCommunicationEventRole" short-description="Create a CommunicationEventRole"> |
| <entity-one value-name="eventRole" entity-name="CommunicationEventRole" /> |
| <if-not-empty field="eventRole"> |
| <set-nonpk-fields map-name="parameters" value-name="eventRole" /> |
| <store-value value-name="eventRole" /> |
| </if-not-empty> |
| </simple-method> |
| <simple-method method-name="removeCommunicationEventRole" short-description="Remove a CommunicationEventRole"> |
| <entity-one entity-name="CommunicationEventRole" value-name="eventRole"/> |
| <if-not-empty field="eventRole"> |
| <remove-value value-name="eventRole"/> |
| <if-compare field="parameters.deleteCommEventIfLast" operator="equals" value="Y"> |
| <entity-and list-name="roles" entity-name="CommunicationEventRole"> |
| <field-map field-name="communicationEventId" env-name="eventRole.communicationEventId"/> |
| </entity-and> |
| <if-empty field="roles"> |
| <set-service-fields service-name="deleteCommunicationEvent" map-name="parameters" to-map-name="inMapDel"/> |
| <call-service service-name="deleteCommunicationEvent" in-map-name="inMapDel"/> |
| </if-empty> |
| </if-compare> |
| </if-not-empty> |
| </simple-method> |
| |
| <simple-method method-name="markEventRead" short-description="Marks a Communication Event as Read"> |
| <if-empty field="parameters.communicationEventId"> |
| <set from-field="parameters.messageId" field="parameters.communicationEventId"/> |
| </if-empty> |
| <entity-one entity-name="CommunicationEvent" value-name="event"/> |
| |
| <if> |
| <condition> |
| <or> |
| <if-compare-field field="event.partyIdTo" to-field="userLogin.partyId" operator="equals"/> |
| <if-has-permission permission="PARTYMGR" action="_CME_UPDATE"/> |
| </or> |
| </condition> |
| <then> |
| <if> |
| <condition> |
| <or> |
| <if-compare field="event.statusId" operator="equals" value="COM_ENTERED"/> |
| <if-compare field="event.statusId" operator="equals" value="COM_PENDING"/> |
| </or> |
| </condition> |
| <then> |
| <set value="COM_READ" field="event.statusId"/> |
| <store-value value-name="event"/> |
| </then> |
| </if> |
| </then> |
| </if> |
| </simple-method> |
| |
| <simple-method method-name="sendEmailDated" |
| short-description="Checks for email communication events with the status COM_IN_PROGRESS and a startdate which is expired, then send the email"> |
| <now-timestamp-to-env env-name="nowDate" /> |
| <entity-condition entity-name="CommunicationEvent" list-name="communicationEvents"> |
| <condition-list combine="and"> |
| <condition-list combine="or"> |
| <condition-expr field-name="communicationEventTypeId" operator="equals" value="EMAIL_COMMUNICATION" /> |
| <condition-expr field-name="communicationEventTypeId" operator="equals" value="AUTO_EMAIL_COMM" /> |
| </condition-list> |
| <condition-expr field-name="statusId" operator="equals" value="COM_IN_PROGRESS" /> |
| <condition-list combine="or"> |
| <condition-expr field-name="datetimeStarted" operator="less" env-name="nowDate" /> |
| <condition-expr field-name="datetimeStarted" operator="equals" env-name="nullField" /> |
| </condition-list> |
| </condition-list> |
| </entity-condition> |
| <iterate entry-name="communicationEvent" list-name="communicationEvents"> |
| <set-service-fields service-name="sendCommEventAsEmail" map-name="communicationEvent" to-map-name="inMap"/> |
| <call-service service-name="sendCommEventAsEmail" in-map-name="inMap" require-new-transaction="true"/> |
| </iterate> |
| <set field="cookie" from-field="parameters.cookie" type="Integer"/> |
| <calculate field-name="cookie" type="Integer"> |
| <calcop operator="add"> |
| <number value="1"/> |
| <calcop operator="get" field-name="cookie"/> |
| </calcop> |
| </calculate> |
| <set field="pk.runtimeDataId" value="TESTID"/> |
| <find-by-primary-key map-name="pk" value-name="runtimeData" entity-name="RuntimeData"/> |
| <set field="newData.runtimeDataId" from-field="pk.runtimeDataId"/> |
| <set field="newData.cookie" from-field="cookie"/> |
| <call-class-method method-name="serialize" class-name="org.ofbiz.entity.serialize.XmlSerializer" ret-field-name="dummy"> |
| <field field-name="newData" type="Object"/> |
| </call-class-method> |
| <log level="always" message="${dummy}"></log> |
| <set field="runtimeData.runtimeInfo" from-field="dummy"/> |
| <store-value value-name="runtimeData"/> |
| </simple-method> |
| |
| <simple-method method-name="allocateMsgToParty" short-description="Allocate an emailaddress to an existing/new party, update the communication event accordingly"> |
| |
| <entity-one entity-name="CommunicationEvent" value-name="communicationEvent"/> |
| <if-empty field="communicationEvent"> |
| <add-error><fail-message message="Communication Event ID: ${parameters.commnicationEventId} not found"/></add-error> |
| </if-empty> |
| |
| <if-empty field="parameters.partyId"> |
| <if-empty field="parameters.emailAddress"> |
| <add-error><fail-message message="Email address is required"/></add-error> |
| </if-empty> |
| |
| <if-empty field="parameters.lastName"> |
| <add-error><fail-message message="Please enter a lastName"/></add-error> |
| </if-empty> |
| |
| <if-empty field="parameters.firstName"> |
| <add-error><fail-message message="Please enter a firstName"/></add-error> |
| <check-errors/> |
| </if-empty> |
| </if-empty> |
| |
| <check-errors/> |
| |
| <!-- create partyId if not provided --> |
| <if-empty field="parameters.partyId"> |
| <set-service-fields service-name="createPerson" map-name="parameters" to-map-name="newParty"/> |
| <call-service service-name="createPerson" in-map-name="newParty"> |
| <result-to-field result-name="partyId" field-name="parameters.partyId"/> |
| </call-service> |
| </if-empty> |
| |
| <!-- allocate email to the party --> |
| <if-not-empty field="parameters.emailAddress"> |
| <entity-one entity-name="Party" value-name="party" /> |
| <if-empty field="party"> |
| <add-error> |
| <fail-message message="Party ID: ${parameters.partyId} not found" /> |
| </add-error> |
| <check-errors /> |
| </if-empty> |
| <set field="newEmail.contactMechPurposeTypeId" value="PRIMARY_EMAIL" /> |
| <set field="newEmail.partyId" from-field="parameters.partyId" /> |
| <set field="newEmail.emailAddress" from-field="parameters.emailAddress" /> |
| <call-service service-name="createPartyEmailAddress" |
| in-map-name="newEmail"> |
| <result-to-field result-name="contactMechId" |
| field-name="inCom.contactMechIdFrom" /> |
| </call-service> |
| </if-not-empty> |
| |
| <!-- update the communication event --> |
| <set field="inCom.communicationEventId" from-field="parameters.communicationEventId"/> |
| <set field="inCom.partyIdFrom" from-field="parameters.partyId"/> |
| <set field="inCom.statusId" value="COM_ENTERED"/> |
| <call-service service-name="updateCommunicationEvent" in-map-name="inCom"/> |
| |
| <field-to-request field-name="parameters.communicationEventId" request-name="communicationEventId"/> |
| <entity-one entity-name="PartyNameView" value-name="nameView"/> |
| <set field="_event_message_" value="Email addres: ${parameters.emailAddress} allocated to party: ${nameView.groupName}${nameView.firstName} ${nameView.middleName} ${nameView.lastName}[${parameters.partyId}]"/> |
| </simple-method> |
| |
| <simple-method method-name="createCustRequestCommEvent" short-description="Create CustRequestCommEvent" > |
| <make-value value-name="newEntity" entity-name="CustRequestCommEvent"/> |
| <set-pk-fields map-name="parameters" value-name="newEntity"/> |
| <create-value value-name="newEntity"/> |
| </simple-method> |
| |
| <simple-method method-name="setCommunicationEventStatus" short-description="Set The Communication Event Status"> |
| <entity-one entity-name="CommunicationEvent" value-name="communicationEvent"/> |
| <field-to-result field-name="communicationEvent.statusId" result-name="oldStatusId"/> |
| <if-compare-field field="communicationEvent.statusId" to-field="parameters.statusId" operator="not-equals"> |
| <entity-one entity-name="StatusValidChange" value-name="statusChange"> |
| <field-map field-name="statusId" env-name="communicationEvent.statusId"/> |
| <field-map field-name="statusIdTo" env-name="parameters.statusId"/> |
| </entity-one> |
| <if-empty field="statusChange"> |
| <add-error><fail-message message="Status is not a valid change"/></add-error> |
| <log level="error" message="Cannot change from ${communicationEvent.statusId} to ${parameters.statusId}"/> |
| <check-errors/> |
| <else> |
| <set field="communicationEvent.statusId" from-field="parameters.statusId"/> |
| <store-value value-name="communicationEvent"/> |
| <!-- if complete, set all role status fields to 'complete' (intentionally ignoring the status change checking)--> |
| <if-compare operator="equals" value="COM_COMPLETE" field="parameters.statusId"> |
| <get-related value-name="communicationEvent" relation-name="CommunicationEventRole" list-name="updRoles"/> |
| <iterate entry-name="updRole" list-name="updRoles"> |
| <set field="updRole.statusId" value="COM_ROLE_COMPLETED"/> |
| <store-value value-name="updRole"/> |
| </iterate> |
| </if-compare> |
| </else> |
| </if-empty> |
| </if-compare-field> |
| </simple-method> |
| <simple-method method-name="setCommunicationEventRoleStatus" short-description="Set The Communication Event Status for a specific role"> |
| <entity-one entity-name="CommunicationEventRole" value-name="communicationEventRole"/> |
| <field-to-result field-name="communicationEventRole.statusId" result-name="oldStatusId"/> |
| <if-compare-field field="communicationEventRole.statusId" to-field="parameters.statusId" operator="not-equals"> |
| <entity-one entity-name="StatusValidChange" value-name="statusChange"> |
| <field-map field-name="statusId" env-name="communicationEventRole.statusId"/> |
| <field-map field-name="statusIdTo" env-name="parameters.statusId"/> |
| </entity-one> |
| <if-empty field="statusChange"> |
| <add-error><fail-message message="Status is not a valid change"/></add-error> |
| <log level="error" message="Cannot change from ${communicationEventRole.statusId} to ${parameters.statusId}"/> |
| <check-errors/> |
| <else> |
| <set field="communicationEventRole.statusId" from-field="parameters.statusId"/> |
| <store-value value-name="communicationEventRole"/> |
| </else> |
| </if-empty> |
| </if-compare-field> |
| </simple-method> |
| </simple-methods> |