| <?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" |
| xmlns="http://ofbiz.apache.org/Simple-Method" xsi:schemaLocation="http://ofbiz.apache.org/Simple-Method http://ofbiz.apache.org/dtds/simple-methods.xsd"> |
| |
| <simple-method method-name="createWorkEffortAndPartyAssign" short-description="Create Work Effort and assign to a party with a role"> |
| <set-service-fields service-name="createWorkEffort" map="parameters" to-map="create"/> |
| <call-service service-name="createWorkEffort" in-map-name="create"> |
| <result-to-field result-name="workEffortId"/> |
| </call-service> |
| <check-errors /> |
| <make-value value-field="newEntity" entity-name="WorkEffortPartyAssignment"/> |
| <set-pk-fields map="parameters" value-field="newEntity"/> |
| <set-nonpk-fields map="parameters" value-field="newEntity"/> |
| <set field="newEntity.workEffortId" from-field="workEffortId"/> |
| <if-empty field="newEntity.fromDate"> |
| <now-timestamp field="newEntity.fromDate"/> |
| </if-empty> |
| <set field="newEntity.assignedByUserLoginId" from-field="userLogin.userLoginId"/> |
| <create-value value-field="newEntity"/> |
| <field-to-result field="workEffortId"/> |
| </simple-method> |
| |
| <simple-method method-name="createWorkEffort" short-description="Create Work Effort"> |
| <make-value value-field="newEntity" entity-name="WorkEffort"/> |
| <if-empty field="parameters.workEffortId"> |
| <sequenced-id sequence-name="WorkEffort" field="newEntity.workEffortId"/> |
| <else> |
| <check-id field="parameters.workEffortId"/> |
| <check-errors/> |
| <set field="newEntity.workEffortId" from-field="parameters.workEffortId"/> |
| </else> |
| </if-empty> |
| <field-to-result field="newEntity.workEffortId" result-name="workEffortId"/> |
| <set-nonpk-fields map="parameters" value-field="newEntity"/> |
| |
| <now-timestamp field="nowTimestamp"/> |
| <set from-field="nowTimestamp" field="newEntity.lastStatusUpdate"/> |
| <set from-field="nowTimestamp" field="newEntity.lastModifiedDate"/> |
| <set from-field="nowTimestamp" field="newEntity.createdDate"/> |
| <set field="newEntity.revisionNumber" value="1" type="Long"/> |
| <set from-field="userLogin.userLoginId" field="newEntity.lastModifiedByUserLogin"/> |
| <set from-field="userLogin.userLoginId" field="newEntity.createdByUserLogin"/> |
| <create-value value-field="newEntity"/> |
| |
| <!-- create new status entry, and set lastStatusUpdate date --> |
| <make-value value-field="newWorkEffortStatus" entity-name="WorkEffortStatus"/> |
| <set from-field="newEntity.workEffortId" field="newWorkEffortStatus.workEffortId"/> |
| <set from-field="newEntity.currentStatusId" field="newWorkEffortStatus.statusId"/> |
| <set from-field="nowTimestamp" field="newWorkEffortStatus.statusDatetime"/> |
| <set from-field="userLogin.userLoginId" field="newWorkEffortStatus.setByUserLogin"/> |
| <create-value value-field="newWorkEffortStatus"/> |
| |
| <!-- Attach the workeffort to a requirement if passed --> |
| <if-not-empty field="parameters.requirementId"> |
| <make-value value-field="workFullfillment" entity-name="WorkRequirementFulfillment"/> |
| <set from-field="newEntity.workEffortId" field="workFullfillment.workEffortId"/> |
| <set from-field="parameters.requirementId" field="workFullfillment.requirementId"/> |
| <create-value value-field="workFullfillment"/> |
| </if-not-empty> |
| |
| <!-- attach to a customer request if passed and copy attached docs --> |
| <if-not-empty field="parameters.custRequestId"> |
| <!-- check status of customer request if valid --> |
| <entity-one entity-name="CustRequest" value-field="lookedUpValue"/> |
| <set field="goodStatusId" value="CRQ_ACCEPTED"/> |
| <if-compare-field operator="not-equals" field="lookedUpValue.statusId" to-field="goodStatusId" > |
| <set field="entity" value="Customer request"/> |
| <add-error> |
| <fail-property resource="CommonUiLabels" property="CommonErrorStatusNotValid"/> |
| </add-error> |
| <check-errors/> |
| </if-compare-field> |
| <!-- create customer request / work effort relation --> |
| <make-value value-field="custRequestWorkEffort" entity-name="CustRequestWorkEffort"/> |
| <set field="custRequestWorkEffort.workEffortId" from-field="newEntity.workEffortId"/> |
| <set field="custRequestWorkEffort.custRequestId" from-field="parameters.custRequestId"/> |
| <create-value value-field="custRequestWorkEffort"/> |
| <!-- update status of customer request --> |
| <set field="updCustReq.custRequestId" from-field="parameters.custRequestId"/> |
| <set field="updCustReq.statusId" value="CRQ_REVIEWED"/> |
| <set field="updCustReq.webSiteId" from-field="parameters.webSiteId"/> |
| <call-service service-name="setCustRequestStatus" in-map-name="updCustReq"/> |
| <entity-and entity-name="CustRequestContent" list="custRequestContents"> |
| <field-map field-name="custRequestId" from-field="parameters.custRequestId"/> |
| </entity-and> |
| <iterate list="custRequestContents" entry="custRequestContent"> |
| <set field="newWorkEffortContent.workEffortId" from-field="newEntity.workEffortId"/> |
| <set field="newWorkEffortContent.contentId" from-field="custRequestContent.contentId"/> |
| <set field="newWorkEffortContent.workEffortContentTypeId" value="SUPPORTING_MEDIA"/> |
| <call-service service-name="createWorkEffortContent" in-map-name="newWorkEffortContent"/> |
| </iterate> |
| </if-not-empty> |
| </simple-method> |
| <simple-method method-name="updateWorkEffort" short-description="Update Work Effort"> |
| <!-- check permissions before moving on: if update or delete logged in user must be associated OR have the corresponding UPDATE or DELETE permissions --> |
| |
| <!-- temporarily commented out, because users assigned to a project or phase should |
| have the capability to modify status on sub-tasks, right? Hmmmm.... --> |
| |
| <!-- <set from-field="workEffortId" map-name="parameters" to-map-name="findWepaMap"/> |
| <set from-field="partyId" map-name="userLogin" to-map-name="findWepaMap"/> |
| <find-by-and entity-name="WorkEffortPartyAssignment" map="findWepaMap" list="wepaList"/> |
| <if-empty field="wepaList"> |
| <check-permission permission="WORKEFFORTMGR" action="_UPDATE"> |
| <fail-property resource="WorkEffortUiLabels" property="WorkEffortUpdatePermissionError"/> |
| </check-permission> |
| <check-errors/> |
| </if-empty>--> |
| |
| <entity-one entity-name="WorkEffort" value-field="lookedUpValue"/> |
| <clone-value value-field="lookedUpValue" new-value-field="savedValue"/> |
| |
| <now-timestamp field="nowTimestamp"/> |
| |
| <!-- if necessary create new status entry, and set lastStatusUpdate date --> |
| <if> |
| <condition> |
| <and> |
| <not><if-empty field="parameters.currentStatusId"/></not> |
| <if-compare-field field="parameters.currentStatusId" to-field="lookedUpValue.currentStatusId" operator="not-equals"/> |
| </and> |
| </condition> |
| <then> |
| <if-not-empty field="lookedUpValue.currentStatusId"> |
| <!-- check if the status change is a valid change --> |
| <entity-and entity-name="StatusValidChange" list="validChange"> |
| <field-map field-name="statusId" from-field="lookedUpValue.currentStatusId"/> |
| <field-map field-name="statusIdTo" from-field="parameters.currentStatusId"/> |
| </entity-and> |
| |
| <if-empty field="validChange"> |
| <add-error> |
| <fail-property resource="WorkEffortUiLabels" property="WorkEffortStatusChangeNotValid"/> |
| </add-error> |
| <log level="error" message="The status change from ${lookedUpValue.currentStatusId} to ${parameters.currentStatusId} is not a valid change"/> |
| <check-errors/> |
| </if-empty> |
| </if-not-empty> |
| |
| <set from-field="nowTimestamp" field="lookedUpValue.lastStatusUpdate"/> |
| <make-value value-field="newWorkEffortStatus" entity-name="WorkEffortStatus"/> |
| <set from-field="lookedUpValue.workEffortId" field="newWorkEffortStatus.workEffortId"/> |
| <set from-field="parameters.currentStatusId" field="newWorkEffortStatus.statusId"/> |
| <set from-field="parameters.reason" field="newWorkEffortStatus.reason"/> |
| <set from-field="nowTimestamp" field="newWorkEffortStatus.statusDatetime"/> |
| <set from-field="userLogin.userLoginId" field="newWorkEffortStatus.setByUserLogin"/> |
| <create-value value-field="newWorkEffortStatus"/> |
| </then> |
| </if> |
| <!-- after checking status change, set all parameters --> |
| <set-nonpk-fields map="parameters" value-field="lookedUpValue"/> |
| |
| <!-- only save if something has changed --> |
| <if-compare-field field="lookedUpValue" to-field="savedValue" operator="not-equals" type="Object"> |
| <!-- only set lastModifiedDate after comparing new & old to see if anything has changed --> |
| <set from-field="nowTimestamp" field="lookedUpValue.lastModifiedDate"/> |
| <set from-field="userLogin.userLoginId" field="lookedUpValue.lastModifiedByUserLogin"/> |
| <if-not-empty field="lookedUpValue.revisionNumber"> |
| <set field="lookedUpValue.revisionNumber" value="${lookedUpValue.revisionNumber + 1}" type="Long"/> |
| <else> |
| <set field="lookedUpValue.revisionNumber" value="1" type="Long"/> |
| </else> |
| </if-not-empty> |
| <store-value value-field="lookedUpValue"/> |
| </if-compare-field> |
| </simple-method> |
| <simple-method method-name="deleteWorkEffort" short-description="Delete Work Effort"> |
| <!-- check permissions before moving on: if update or delete logged in user must be associated OR have the corresponding UPDATE or DELETE permissions --> |
| <entity-and entity-name="WorkEffortPartyAssignment" list="wepaList"> |
| <field-map field-name="workEffortId" from-field="parameters.workEffortId"/> |
| <field-map field-name="partyId" from-field="userLogin.partyId"/> |
| </entity-and> |
| <if-empty field="wepaList"> |
| <check-permission permission="WORKEFFORTMGR" action="_DELETE"> |
| <fail-property resource="WorkEffortUiLabels" property="WorkEffortDeletePermissionError"/> |
| </check-permission> |
| <check-errors/> |
| </if-empty> |
| |
| <entity-one entity-name="WorkEffort" value-field="lookedUpValue"/> |
| |
| <!-- Remove associated/dependent entries from other entities here --> |
| <remove-related value-field="lookedUpValue" relation-name="WorkEffortKeyword"/> |
| <remove-related value-field="lookedUpValue" relation-name="WorkEffortAttribute"/> |
| <remove-related value-field="lookedUpValue" relation-name="WorkOrderItemFulfillment"/> |
| <remove-related value-field="lookedUpValue" relation-name="FromWorkEffortAssoc"/> |
| <remove-related value-field="lookedUpValue" relation-name="ToWorkEffortAssoc"/> |
| <remove-related value-field="lookedUpValue" relation-name="NoteData"/> |
| <remove-related value-field="lookedUpValue" relation-name="RecurrenceInfo"/> |
| <remove-related value-field="lookedUpValue" relation-name="RuntimeData"/> |
| <remove-related value-field="lookedUpValue" relation-name="WorkEffortPartyAssignment"/> |
| <remove-related value-field="lookedUpValue" relation-name="WorkEffortFixedAssetAssign"/> |
| <remove-related value-field="lookedUpValue" relation-name="WorkEffortSkillStandard"/> |
| <remove-related value-field="lookedUpValue" relation-name="WorkEffortStatus"/> |
| |
| <!-- Delete actual main entity last --> |
| <remove-value value-field="lookedUpValue"/> |
| </simple-method> |
| |
| <simple-method method-name="copyWorkEffort" short-description="Copy a WorkEffort"> |
| <entity-one entity-name="WorkEffort" value-field="sourceWorkEffort"> |
| <field-map field-name="workEffortId" from-field="parameters.sourceWorkEffortId" /> |
| </entity-one> |
| <if-empty field="sourceWorkEffort"> |
| <set field="errorString" value="sourceWorkEffortId = ${parameters.sourceWorkEffortId}" /> |
| <add-error> |
| <fail-property resource="WorkEffortUiLabels" property="WorkEffortNotFound" /> |
| </add-error> |
| <check-errors /> |
| </if-empty> |
| <set field="targetWorkEffortId" from-field="parameters.targetWorkEffortId" /> |
| <if-empty field="targetWorkEffortId"> |
| <sequenced-id sequence-name="WorkEffort" field="targetWorkEffortId" /> |
| </if-empty> |
| <set-service-fields service-name="createWorkEffort" map="sourceWorkEffort" to-map="createWorkEffortCtx"/> |
| <set field="createWorkEffortCtx.workEffortId" from-field="targetWorkEffortId" /> |
| <set field="createWorkEffortCtx.userLogin" from-field="parameters.userLogin" /> |
| <call-service service-name="createWorkEffort" in-map-name="createWorkEffortCtx" /> |
| <check-errors /> |
| <entity-one entity-name="WorkEffort" value-field="targetWorkEffort"> |
| <field-map field-name="workEffortId" from-field="targetWorkEffortId" /> |
| </entity-one> |
| <set field="copyWorkEffortAssocs" from-field="parameters.copyWorkEffortAssocs" default-value="N" /> |
| <if-compare field="copyWorkEffortAssocs" operator="equals" value="Y"> |
| <set-service-fields service-name="copyWorkEffortAssocs" map="parameters" to-map="copyWorkEffortAssocsCtx"/> |
| <set field="copyWorkEffortAssocsCtx.targetWorkEffortId" from-field="targetWorkEffortId" /> |
| <call-service service-name="copyWorkEffortAssocs" in-map-name="copyWorkEffortAssocsCtx" /> |
| <check-errors /> |
| </if-compare> |
| <set field="copyRelatedValues" from-field="parameters.copyRelatedValues" default-value="N" /> |
| <if-compare field="copyRelatedValues" operator="equals" value="Y"> |
| <set field="excludeExpiredRelations" from-field="parameters.excludeExpiredRelations" default-value="N" /> |
| <set field="modelRelationList" from-field="groovy:delegator.getModelEntity('WorkEffort').getRelationsManyList();" /> |
| <iterate list="modelRelationList" entry="modelRelation"> |
| <set field="relatedEntityName" from-field="groovy:modelRelation.getRelEntityName();" /> |
| <if-compare field="relatedEntityName" operator="not-equals" value="WorkEffortAssoc"> |
| <set field="relationName" from-field="groovy:modelRelation.getCombinedName();" /> |
| <set field="keyMap" from-field="groovy:modelRelation.findKeyMap('workEffortId');" set-if-null="true" /> |
| <if-not-empty field="keyMap"> |
| <set field="relatedIdFieldName" from-field="groovy:keyMap.getRelFieldName();" /> |
| <get-related relation-name="${relationName}" list="relationValues" value-field="sourceWorkEffort" /> |
| <if-compare field="excludeExpiredRelations" operator="equals" value="Y"> |
| <set field="fromDateModelField" from-field="groovy:delegator.getModelEntity(relatedEntityName).getField('fromDate');" set-if-null="true" /> |
| <if-not-empty field="fromDateModelField"> |
| <filter-list-by-date list="relationValues" /> |
| </if-not-empty> |
| </if-compare> |
| <iterate list="relationValues" entry="relatedValue"> |
| <clone-value value-field="relatedValue" new-value-field="newRelatedValue" /> |
| <set field="newRelatedValue[relatedIdFieldName]" from-field="targetWorkEffortId" /> |
| <make-value value-field="newRelatedPks" entity-name="${relatedEntityName}" /> |
| <set-pk-fields value-field="newRelatedPks" map="newRelatedValue" /> |
| <find-by-primary-key entity-name="${relatedEntityName}" map="newRelatedPks" value-field="duplicateCheck" /> |
| <if-empty field="duplicateCheck"> |
| <create-value value-field="newRelatedValue" /> |
| </if-empty> |
| </iterate> |
| </if-not-empty> |
| </if-compare> |
| </iterate> |
| </if-compare> |
| <field-to-result field="targetWorkEffortId" result-name="workEffortId" /> |
| </simple-method> |
| |
| <!-- communication event workeffort --> |
| <simple-method method-name="makeCommunicationEventWorkEffort" short-description="Make a Communication Event WorkEffort"> |
| <make-value entity-name="CommunicationEventWorkEff" value-field="lookupMap"/> |
| <set-pk-fields map="parameters" value-field="lookupMap"/> |
| <find-by-primary-key entity-name="CommunicationEventWorkEff" map="lookupMap" value-field="eventWe"/> |
| <if-not-empty field="eventWe.workEffortId"> |
| <set-nonpk-fields map="parameters" value-field="eventWe"/> |
| <set field="eventWe.description" from-field="parameters.relationDescription"/> |
| <store-value value-field="eventWe"/> |
| </if-not-empty> |
| <if-empty field="eventWe.workEffortId"> |
| <set-nonpk-fields map="parameters" value-field="lookupMap"/> |
| <set field="eventWe.description" from-field="parameters.relationDescription"/> |
| <create-value value-field="lookupMap"/> |
| </if-empty> |
| <field-to-result field="lookupMap.workEffortId" result-name="workEffortId"/> |
| <field-to-result field="lookupMap.communicationEventId" result-name="communicationEventId"/> |
| </simple-method> |
| |
| <simple-method method-name="updateCommunicationEventWorkEff" short-description="Update a CommunicationEventWorkEff"> |
| <!-- Find old value --> |
| <make-value entity-name="CommunicationEventWorkEff" value-field="communicationEventWorkEff"/> |
| <set-pk-fields value-field="communicationEventWorkEff" map="parameters"/> |
| <find-by-primary-key entity-name="CommunicationEventWorkEff" map="communicationEventWorkEff" value-field="communicationEventWorkEff"/> |
| <if-empty field="communicationEventWorkEff"> |
| <add-error> |
| <fail-property resource="WorkEffortUiLabels" property="WorkEffortCannotUpdateContactInfo"/> |
| </add-error> |
| </if-empty> |
| <check-errors/> |
| <set-nonpk-fields map="parameters" value-field="communicationEventWorkEff"/> |
| <store-value value-field="communicationEventWorkEff"/> |
| </simple-method> |
| |
| <simple-method method-name="deleteCommunicationEventWorkEff" short-description="Delete a CommunicationEventWorkEff"> |
| <!-- Find old value --> |
| <make-value entity-name="CommunicationEventWorkEff" value-field="communicationEventWorkEff"/> |
| <set-pk-fields value-field="communicationEventWorkEff" map="parameters"/> |
| <find-by-primary-key entity-name="CommunicationEventWorkEff" map="communicationEventWorkEff" value-field="communicationEventWorkEff"/> |
| <if-empty field="communicationEventWorkEff"> |
| <add-error> |
| <fail-property resource="WorkEffortUiLabels" property="WorkEffortCannotDeleteContactInfo"/> |
| </add-error> |
| </if-empty> |
| <check-errors/> |
| <remove-value value-field="communicationEventWorkEff"/> |
| </simple-method> |
| |
| |
| <!-- WorkEffortPartyAssignment --> |
| <simple-method method-name="assignPartyToWorkEffort" short-description="Assign Party to Work Effort"> |
| <!-- check if the requested party Assignment already exist --> |
| <entity-and entity-name="WorkEffortPartyAssignment" list="currentAssignments" filter-by-date="true"> |
| <field-map field-name="workEffortId" from-field="parameters.workEffortId"/> |
| <field-map field-name="partyId" from-field="parameters.partyId"/> |
| <field-map field-name="roleTypeId" from-field="parameters.roleTypeId"/> |
| </entity-and> |
| <if-not-empty field="currentAssignments"> |
| <first-from-list list="currentAssignments" entry="firstAssignment"/> |
| <add-error> |
| <fail-property resource="WorkEffortUiLabels" property="WorkEffortPartyAssignmentError"/> |
| </add-error> |
| </if-not-empty> |
| <check-errors/> |
| |
| <make-value value-field="newEntity" entity-name="WorkEffortPartyAssignment"/> |
| |
| <set-pk-fields map="parameters" value-field="newEntity"/> |
| <set-nonpk-fields map="parameters" value-field="newEntity"/> |
| |
| <if-empty field="newEntity.fromDate"> |
| <now-timestamp field="newEntity.fromDate"/> |
| </if-empty> |
| <field-to-result field="newEntity.fromDate" result-name="fromDate"/> |
| <set field="newEntity.assignedByUserLoginId" from-field="userLogin.userLoginId"/> |
| |
| <if-not-empty field="parameters.statusId"> |
| <now-timestamp field="newEntity.statusDateTime"/> |
| <call-class-method class-name="org.apache.ofbiz.workeffort.workeffort.WorkEffortPartyAssignmentServices" method-name="updateWorkflowEngine"> |
| <field field="newEntity" type="org.apache.ofbiz.entity.GenericValue"/> |
| <field field="userLogin" type="org.apache.ofbiz.entity.GenericValue"/> |
| <field field="dispatcher" type="org.apache.ofbiz.service.LocalDispatcher"/> |
| </call-class-method> |
| </if-not-empty> |
| <create-value value-field="newEntity"/> |
| </simple-method> |
| <simple-method method-name="updatePartyToWorkEffortAssignment" short-description="Update WorkEffortPartyAssignment entity"> |
| <entity-one entity-name="WorkEffortPartyAssignment" value-field="workEffortPartyAssignment"/> |
| <!-- to be dropped later (use now workEffortGenericPermission) |
| <if-compare-field field="userLogin.partyId" to-field="workEffortPartyAssignment.partyId" operator="not-equals"> |
| <check-permission permission="WORKEFFORTMGR" action="_UPDATE"/> |
| <check-errors/> |
| </if-compare-field> |
| --> |
| <set from-field="workEffortPartyAssignment.statusId" field="oldStatusId"/> |
| <set-nonpk-fields map="parameters" value-field="workEffortPartyAssignment"/> |
| |
| <if-compare-field field="parameters.statusId" to-field="oldStatusId" operator="not-equals"> |
| <now-timestamp field="workEffortPartyAssignment.statusDateTime"/> |
| <call-class-method class-name="org.apache.ofbiz.workeffort.workeffort.WorkEffortPartyAssignmentServices" method-name="updateWorkflowEngine" > |
| <field field="workEffortPartyAssignment" type="org.apache.ofbiz.entity.GenericValue"/> |
| <field field="userLogin" type="org.apache.ofbiz.entity.GenericValue"/> |
| <field field="dispatcher" type="org.apache.ofbiz.service.LocalDispatcher"/> |
| </call-class-method> |
| </if-compare-field> |
| <store-value value-field="workEffortPartyAssignment"/> |
| </simple-method> |
| <simple-method method-name="deletePartyToWorkEffortAssignment" short-description="Update WorkEffortPartyAssignment entity"> |
| <set-service-fields service-name="updatePartyToWorkEffortAssignment" map="parameters" to-map="del"/> |
| <now-timestamp field="del.thruDate"/> |
| <call-service service-name="updatePartyToWorkEffortAssignment" in-map-name="del"/> |
| </simple-method> |
| |
| <!-- Create a WorkEffortContactMech --> |
| <simple-method method-name="createWorkEffortContactMech" short-description="Create a WorkEffortContactMech"> |
| <make-value value-field="newValue" entity-name="WorkEffortContactMech"/> |
| <if-empty field="parameters.contactMechId"> |
| <if-not-empty field="parameters.partyId"> |
| <set-service-fields service-name="createPartyContactMech" map="parameters" to-map="context"/> |
| <call-service service-name="createPartyContactMech" in-map-name="context"> |
| <default-message resource="PartyUiLabels" property="PartyContactMechanismSuccessfullyCreated"/> |
| <result-to-field result-name="contactMechId" field="newValue.contactMechId"/> |
| </call-service> |
| <log level="info" message="Party ContactMech created"/> |
| <else> |
| <set-service-fields service-name="createContactMech" map="parameters" to-map="context"/> |
| <call-service service-name="createContactMech" in-map-name="context"> |
| <default-message resource="PartyUiLabels" property="PartyContactMechanismSuccessfullyCreated"/> |
| <result-to-field result-name="contactMechId" field="newValue.contactMechId"/> |
| </call-service> |
| <log level="info" message="ContactMech created"/> |
| </else> |
| </if-not-empty> |
| <else> |
| <set from-field="parameters.contactMechId" field="newValue.contactMechId"/> |
| </else> |
| </if-empty> |
| <log level="info" message="Creating a WorkEffortContactMech"/> |
| <set from-field="parameters.workEffortId" field="newValue.workEffortId"/> |
| <set-nonpk-fields map="parameters" value-field="newValue"/> |
| <field-to-result field="newValue.contactMechId" result-name="contactMechId"/> |
| <field-to-request field="newValue.contactMechId" request-name="contactMechId"/> |
| <now-timestamp field="newValue.fromDate"/> |
| <create-value value-field="newValue"/> |
| </simple-method> |
| |
| <simple-method method-name="updateWorkEffortContactMech" short-description="Update a WorkEffortContactMech"> |
| <make-value entity-name="WorkEffortContactMech" value-field="newWorkEffortContactMech"/> |
| <!-- Find old value --> |
| <entity-one entity-name="WorkEffortContactMech" value-field="workEffortContactMech"/> |
| <if-empty field="workEffortContactMech"> |
| <add-error> |
| <fail-property resource="WorkEffortUiLabels" property="WorkEffortCannotUpdateContactInfo"/> |
| </add-error> |
| </if-empty> |
| <check-errors/> |
| |
| <clone-value value-field="workEffortContactMech" new-value-field="newWorkEffortContactMech"/> |
| |
| <!-- If we already have a new contactMechId don't update ContactMech --> |
| <if-empty field="parameters.newContactMechId"> |
| <log level="info" message="Calling map procs"/> |
| <call-map-processor xml-resource="component://party/minilang/contact/ContactMechMapProcs.xml" |
| processor-name="updateContactMech" in-map-name="parameters" out-map-name="context"/> |
| <to-string field="context.contactMechId"/> |
| <log level="info" message="Calling generic updateContactMech method"/> |
| <call-service service-name="updateContactMech" in-map-name="context"> |
| <default-message property="PartyContactMechanismSuccessfullyUpdated" resource="PartyUiLabels"/> |
| <result-to-field result-name="contactMechId" field="newWorkEffortContactMech.contactMechId"/> |
| </call-service> |
| <else> |
| <set from-field="parameters.newContactMechId" field="newWorkEffortContactMech.contactMechId"/> |
| </else> |
| </if-empty> |
| |
| <if-compare-field to-field="newWorkEffortContactMech.contactMechId" field="parameters.contactMechId" operator="not-equals"> |
| <set-nonpk-fields map="parameters" value-field="newWorkEffortContactMech"/> |
| <now-timestamp field="newWorkEffortContactMech.fromDate"/> |
| <now-timestamp field="workEffortContactMech.thruDate"/> |
| <create-value value-field="newWorkEffortContactMech"/> |
| <store-value value-field="workEffortContactMech"/> |
| </if-compare-field> |
| |
| <field-to-result field="newWorkEffortContactMech.contactMechId" result-name="contactMechId"/> |
| <field-to-request field="newWorkEffortContactMech.contactMechId" request-name="contactMechId"/> |
| </simple-method> |
| |
| <simple-method method-name="createWorkEffortPostalAddress" short-description="Create a PostalAddress for WorkEffort"> |
| <make-value entity-name="WorkEffortContactMech" value-field="newValue"/> |
| <log level="info" message="Creating postal address"/> |
| <if-not-empty field="parameters.addToParty"> |
| <call-map-processor xml-resource="component://party/minilang/contact/PartyContactMechMapProcs.xml" |
| processor-name="postalAddress" in-map-name="parameters" out-map-name="context"/> |
| <call-service service-name="createPartyPostalAddress" in-map-name="context"> |
| <default-message resource="PartyUiLabels" property="PartyContactMechanismSuccessfullyCreated"/> |
| <result-to-field result-name="contactMechId" field="newValue.contactMechId"/> |
| </call-service> |
| <log level="info" message="Party ContactMech created"/> |
| <else> |
| <call-map-processor xml-resource="component://party/minilang/contact/ContactMechMapProcs.xml" |
| processor-name="postalAddress" in-map-name="parameters" out-map-name="context"/> |
| <call-service in-map-name="context" service-name="createPostalAddress"> |
| <default-message resource="PartyUiLabels" property="PartyPostalAddressSuccessfullyCreated"/> |
| <result-to-field result-name="contactMechId" field="newValue.contactMechId"/> |
| </call-service> |
| </else> |
| </if-not-empty> |
| <log level="info" message="ContactMech for postal address was ${newValue.contactMechId}, now creating work effort contact mech"/> |
| <call-map-processor xml-resource="component://workeffort/minilang/workeffort/WorkflowMapProcessors.xml" |
| processor-name="workEffortContactMech" in-map-name="parameters" out-map-name="context2"/> |
| <set from-field="newValue.contactMechId" field="context2.contactMechId"/> |
| <log level="info" message="Copied id to context2: ${context2.contactMechId}"/> |
| <call-service in-map-name="context2" break-on-error="true" service-name="createWorkEffortContactMech"> |
| <default-message resource="PartyUiLabels" property="PartyContactMechanismSuccessfullyCreated"/> |
| </call-service> |
| <field-to-request field="newValue.contactMechId" request-name="contactMechId"/> |
| <field-to-result field="newValue.contactMechId" result-name="contactMechId"/> |
| </simple-method> |
| |
| <simple-method method-name="updateWorkEffortPostalAddress" short-description="Update a PostalAddress for WorkEffort"> |
| <make-value entity-name="WorkEffortContactMech" value-field="newValue"/> |
| <call-map-processor xml-resource="component://party/minilang/contact/ContactMechMapProcs.xml" |
| processor-name="postalAddress" in-map-name="parameters" out-map-name="context"/> |
| <call-service in-map-name="context" service-name="updatePostalAddress"> |
| <default-message resource="PartyUiLabels" property="PartyPostalAddressSuccessfullyUpdated"/> |
| <result-to-field result-name="contactMechId" field="newValue.contactMechId"/> |
| </call-service> |
| <call-map-processor xml-resource="component://workeffort/minilang/workeffort/WorkflowMapProcessors.xml" |
| processor-name="workEffortContactMech" in-map-name="parameters" out-map-name="context2"/> |
| <set from-field="newValue.contactMechId" field="context2.newContactMechId"/> |
| <set field="context2.contactMechTypeId" value="POSTAL_ADDRESS"/> |
| <log level="info" message="Copied id to context2: ${context2.newContactMechId}"/> |
| <call-service in-map-name="context2" service-name="updateWorkEffortContactMech"> |
| <default-message resource="PartyUiLabels" property="PartyContactMechanismSuccessfullyUpdated"/> |
| </call-service> |
| <field-to-request field="newValue.contactMechId" request-name="contactMechId"/> |
| <field-to-result field="newValue.contactMechId" result-name="contactMechId"/> |
| </simple-method> |
| |
| <simple-method method-name="createWorkEffortTelecomNumber" short-description="Create a TelecomNumber for WorkEffort"> |
| <make-value entity-name="WorkEffortContactMech" value-field="newValue"/> |
| <log level="info" message="Creating telecom number"/> |
| <if-not-empty field="parameters.addToParty"> |
| <call-map-processor xml-resource="component://party/minilang/contact/PartyContactMechMapProcs.xml" |
| processor-name="telecomNumber" in-map-name="parameters" out-map-name="context"/> |
| <call-service service-name="createPartyTelecomNumber" in-map-name="context"> |
| <default-message resource="PartyUiLabels" property="PartyContactMechanismSuccessfullyCreated"/> |
| <result-to-field result-name="contactMechId" field="newValue.contactMechId"/> |
| </call-service> |
| <log level="info" message="Party ContactMech created"/> |
| <else> |
| <call-map-processor xml-resource="component://party/minilang/contact/ContactMechMapProcs.xml" |
| processor-name="telecomNumber" in-map-name="parameters" out-map-name="context"/> |
| <call-service in-map-name="context" service-name="createTelecomNumber"> |
| <default-message resource="PartyUiLabels" property="PartyTelecomNumberSuccessfullyCreated"/> |
| <result-to-field result-name="contactMechId" field="newValue.contactMechId"/> |
| </call-service> |
| </else> |
| </if-not-empty> |
| <call-map-processor xml-resource="component://workeffort/minilang/workeffort/WorkflowMapProcessors.xml" |
| processor-name="workEffortContactMech" in-map-name="parameters" out-map-name="context2"/> |
| <set from-field="newValue.contactMechId" field="context2.contactMechId"/> |
| <log level="info" message="Copied id to context2: ${context2.contactMechId}"/> |
| <call-service in-map-name="context2" break-on-error="true" service-name="createWorkEffortContactMech"> |
| <default-message resource="PartyUiLabels" property="PartyContactMechanismSuccessfullyCreated"/> |
| </call-service> |
| <field-to-request field="newValue.contactMechId" request-name="contactMechId"/> |
| <field-to-result field="newValue.contactMechId" result-name="contactMechId"/> |
| </simple-method> |
| |
| <simple-method method-name="updateWorkEffortTelecomNumber" short-description="Update a TelecomNumber for WorkEffort"> |
| <make-value entity-name="WorkEffortContactMech" value-field="newValue"/> |
| <call-map-processor xml-resource="component://party/minilang/contact/ContactMechMapProcs.xml" |
| processor-name="telecomNumber" in-map-name="parameters" out-map-name="context"/> |
| <call-service in-map-name="context" service-name="updateTelecomNumber"> |
| <default-message resource="PartyUiLabels" property="PartyTelecomNumberSuccessfullyUpdated"/> |
| <result-to-field result-name="contactMechId" field="newValue.contactMechId"/> |
| </call-service> |
| |
| <call-map-processor xml-resource="component://workeffort/minilang/workeffort/WorkflowMapProcessors.xml" |
| processor-name="workEffortContactMech" in-map-name="parameters" out-map-name="context2"/> |
| <set from-field="newValue.contactMechId" field="context2.newContactMechId"/> |
| <set field="context2.contactMechTypeId" value="TELECOM_NUMBER"/> |
| <log level="info" message="Copied id to context2: ${context2.newContactMechId}"/> |
| <call-service in-map-name="context2" service-name="updateWorkEffortContactMech"> |
| <default-message resource="PartyUiLabels" property="PartyContactMechanismSuccessfullyUpdated"/> |
| </call-service> |
| <log level="info" message="Setting result id: ${newValue.contactMechId}"/> |
| <field-to-request field="newValue.contactMechId" request-name="contactMechId"/> |
| <field-to-result field="newValue.contactMechId" result-name="contactMechId"/> |
| </simple-method> |
| |
| <simple-method method-name="createWorkEffortEmailAddress" short-description="Create an email address for WorkEffort"> |
| <call-map-processor xml-resource="component://workeffort/minilang/workeffort/WorkflowMapProcessors.xml" |
| processor-name="emailAddress" in-map-name="parameters" out-map-name="cwecmMap"/> |
| <check-errors/> |
| <set field="cwecmMap.contactMechTypeId" value="EMAIL_ADDRESS"/> |
| <call-service service-name="createWorkEffortContactMech" in-map-name="cwecmMap"> |
| <default-message resource="PartyUiLabels" property="PartyContactMechanismSuccessfullyCreated"/> |
| <result-to-result result-name="contactMechId"/> |
| <result-to-request result-name="contactMechId"/> |
| </call-service> |
| </simple-method> |
| <simple-method method-name="updateWorkEffortEmailAddress" short-description="Update an email address for WorkEffort"> |
| <call-map-processor xml-resource="component://workeffort/minilang/workeffort/WorkflowMapProcessors.xml" |
| processor-name="emailAddress" in-map-name="parameters" out-map-name="uwecmMap"/> |
| <check-errors/> |
| <set field="uwecmMap.contactMechTypeId" value="EMAIL_ADDRESS"/> |
| <call-service service-name="updateWorkEffortContactMech" in-map-name="uwecmMap"> |
| <default-message resource="PartyUiLabels" property="PartyTelecomNumberSuccessfullyUpdated"/> |
| <result-to-result result-name="contactMechId"/> |
| <result-to-request result-name="contactMechId"/> |
| </call-service> |
| </simple-method> |
| |
| <simple-method method-name="quickAssignPartyToWorkEffort" short-description="Quick Assign Party To WorkEffort as Owner"> |
| <if-not-empty field="parameters.quickAssignPartyId"> |
| <now-timestamp field="nowTimestamp"/> |
| <!-- add a party assignment for the creator of the event, use the list method and let the EE do the update or create... --> |
| <make-value value-field="newPartyRole" entity-name="PartyRole"/> |
| <set from-field="parameters.quickAssignPartyId" field="newPartyRole.partyId"/> |
| <set value="CAL_OWNER" field="newPartyRole.roleTypeId"/> |
| <field-to-list field="newPartyRole" list="newPartyRoleList"/> |
| <store-list list="newPartyRoleList"/> |
| |
| <make-value value-field="newWorkEffortPartyAssignment" entity-name="WorkEffortPartyAssignment"/> |
| <set from-field="parameters.workEffortId" field="newWorkEffortPartyAssignment.workEffortId"/> |
| <set from-field="parameters.quickAssignPartyId" field="newWorkEffortPartyAssignment.partyId"/> |
| <set value="CAL_OWNER" field="newWorkEffortPartyAssignment.roleTypeId"/> |
| <set value="PRTYASGN_ASSIGNED" field="newWorkEffortPartyAssignment.statusId"/> |
| <set from-field="nowTimestamp" field="newWorkEffortPartyAssignment.fromDate"/> |
| <create-value value-field="newWorkEffortPartyAssignment"/> |
| </if-not-empty> |
| </simple-method> |
| <simple-method method-name="quickAssignPartyToWorkEffortWithRole" short-description="Quick Assign Party To WorkEffort"> |
| <if-not-empty field="parameters.quickAssignPartyId"> |
| <!-- add a party assignment for the creator of the event, use the list method and let the EE do the update or create... --> |
| <make-value value-field="newPartyRole" entity-name="PartyRole"/> |
| <set from-field="parameters.quickAssignPartyId" field="newPartyRole.partyId"/> |
| <set from-field="parameters.roleTypeId" field="newPartyRole.roleTypeId"/> |
| <set field="newPartyRoleList[]" from-field="newPartyRole"/> |
| <store-list list="newPartyRoleList"/> |
| |
| <make-value value-field="newWorkEffortPartyAssignment" entity-name="WorkEffortPartyAssignment"/> |
| <set from-field="parameters.workEffortId" field="newWorkEffortPartyAssignment.workEffortId"/> |
| <set from-field="parameters.quickAssignPartyId" field="newWorkEffortPartyAssignment.partyId"/> |
| <set from-field="parameters.roleTypeId" field="newWorkEffortPartyAssignment.roleTypeId"/> |
| <set value="CAL_ACCEPTED" field="newWorkEffortPartyAssignment.statusId"/> |
| <now-timestamp field="newWorkEffortPartyAssignment.fromDate"/> |
| <create-value value-field="newWorkEffortPartyAssignment"/> |
| </if-not-empty> |
| </simple-method> |
| <simple-method method-name="createWorkEffortNote" short-description="Create Work Effort Note"> |
| <make-value value-field="newEntity" entity-name="NoteData"/> |
| <sequenced-id sequence-name="NoteData" field="newEntity.noteId"/> |
| <field-to-result field="newEntity.noteId" result-name="noteId"/> |
| <set from-field="parameters.noteInfo" field="newEntity.noteInfo"/> |
| <if-not-empty field="parameters.noteParty"> |
| <set from-field="parameters.noteParty" field="newEntity.noteParty"/> |
| <else> |
| <set field="newEntity.noteParty" from-field="parameters.userLogin.partyId"></set> |
| </else> |
| </if-not-empty> |
| <set from-field="parameters.noteName" field="newEntity.noteName"/> |
| <now-timestamp field="newEntity.noteDateTime"/> |
| <create-value value-field="newEntity"/> |
| |
| <!-- create new status entry, and set lastStatusUpdate date --> |
| <make-value value-field="newWorkEffortNote" entity-name="WorkEffortNote"/> |
| <set from-field="newEntity.noteId" field="newWorkEffortNote.noteId"/> |
| <set from-field="parameters.workEffortId" field="newWorkEffortNote.workEffortId"/> |
| <set from-field="parameters.internalNote" field="newWorkEffortNote.internalNote"/> |
| <create-value value-field="newWorkEffortNote"/> |
| </simple-method> |
| <simple-method method-name="updateWorkEffortNote" short-description="Update Work Effort Note"> |
| <entity-one entity-name="WorkEffortNote" value-field="lookedUpValue"/> |
| <entity-one entity-name="NoteData" value-field="lookedUpValueForNoteData"/> |
| <set-nonpk-fields map="parameters" value-field="lookedUpValueForNoteData"/> |
| <set-nonpk-fields map="parameters" value-field="lookedUpValue"/> |
| <store-value value-field="lookedUpValue"/> |
| <store-value value-field="lookedUpValueForNoteData"/> |
| </simple-method> |
| <simple-method method-name="createWorkEffortAndAssoc" short-description="Create a WorkEffort and association"> |
| <if-empty field="parameters.fromDate"> |
| <now-timestamp field="parameters.fromDate"/> |
| <else> |
| <entity-one entity-name="WorkEffortAssoc" value-field="lookedUpValue"/> |
| </else> |
| </if-empty> |
| <if-not-empty field="lookedUpValue"> |
| <add-error> |
| <fail-property resource="WorkEffortUiLabels" property="WorkEffortWorkEffortAssocIdAlreadyExist"/> |
| </add-error> |
| <check-errors/> |
| <else> |
| <if-empty field="parameters.workEffortIdTo"> |
| <set-service-fields service-name="createWorkEffort" map="parameters" to-map="createWorkeEffortParams"/> |
| <call-service in-map-name="createWorkeEffortParams" service-name="createWorkEffort"> |
| <result-to-result result-name="workEffortId"/> |
| <result-to-field result-name="workEffortId" field="workEffortIdTo"/> |
| </call-service> |
| <set field="parameters.workEffortIdTo" from-field="workEffortIdTo"/> |
| </if-empty> |
| <set-service-fields service-name="createWorkEffortAssoc" map="parameters" to-map="createWorkEffortAssocParams"/> |
| <call-service in-map-name="createWorkEffortAssocParams" service-name="createWorkEffortAssoc"/> |
| </else> |
| </if-not-empty> |
| </simple-method> |
| |
| <simple-method method-name="createWorkEffortAssoc" short-description="Create a WorkEffort association"> |
| <if-empty field="parameters.fromDate"> |
| <now-timestamp field="parameters.fromDate"/> |
| <else> |
| <entity-one entity-name="WorkEffortAssoc" value-field="lookedUpValue"/> |
| </else> |
| </if-empty> |
| |
| <if-not-empty field="lookedUpValue"> |
| <add-error> |
| <fail-property resource="WorkEffortUiLabels" property="WorkEffortWorkEffortAssocIdAlreadyExist"/> |
| </add-error> |
| <check-errors/> |
| <else> |
| <make-value value-field="newEntity" entity-name="WorkEffortAssoc"/> |
| <set-pk-fields map="parameters" value-field="newEntity"/> |
| <set-nonpk-fields map="parameters" value-field="newEntity"/> |
| <if-empty field="newEntity.sequenceNum"> |
| <set field="newEntity.sequenceNum" value="0" type="Long"/> |
| </if-empty> |
| <create-value value-field="newEntity"/> |
| </else> |
| </if-not-empty> |
| </simple-method> |
| |
| <simple-method method-name="copyWorkEffortAssocs" short-description="Copy WorkEffort associations"> |
| <set field="deepCopy" from-field="parameters.deepCopy" default-value="N" /> |
| <set field="excludeExpiredAssocs" from-field="parameters.excludeExpiredAssocs" default-value="N" /> |
| <entity-and entity-name="WorkEffortAssoc" list="workEffortAssocs"> |
| <field-map field-name="workEffortIdFrom" from-field="parameters.sourceWorkEffortId" /> |
| </entity-and> |
| <if-compare field="excludeExpiredAssocs" operator="equals" value="Y"> |
| <filter-list-by-date list="workEffortAssocs" /> |
| </if-compare> |
| <iterate list="workEffortAssocs" entry="workEffortAssoc"> |
| <set field="workEffortIdTo" from-field="workEffortAssoc.workEffortIdTo" /> |
| <if-compare field="deepCopy" operator="equals" value="Y"> |
| <clear-field field="copyWorkEffortCtx" /> |
| <set-service-fields service-name="copyWorkEffort" map="parameters" to-map="copyWorkEffortCtx"/> |
| <clear-field field="copyWorkEffortCtx.targetWorkEffortId"/> |
| <set field="copyWorkEffortCtx.sourceWorkEffortId" from-field="workEffortIdTo" /> |
| <set field="copyWorkEffortCtx.copyWorkEffortAssocs" value="Y" /> |
| <call-service service-name="copyWorkEffort" in-map-name="copyWorkEffortCtx"> |
| <result-to-field result-name="workEffortId" field="workEffortIdTo" /> |
| </call-service> |
| <check-errors /> |
| </if-compare> |
| <clone-value value-field="workEffortAssoc" new-value-field="newWorkEffortAssoc" /> |
| <set field="newWorkEffortAssoc.workEffortIdFrom" from-field="parameters.targetWorkEffortId" /> |
| <set field="newWorkEffortAssoc.workEffortIdTo" from-field="workEffortIdTo" /> |
| <create-value value-field="newWorkEffortAssoc" /> |
| </iterate> |
| </simple-method> |
| |
| <simple-method method-name="assignInventoryToWorkEffort" short-description="Create or update WorkEffortInventoryAssign"> |
| <set value="Create or update WorkEffortInventoryAssign" field="operationName"/> |
| |
| <entity-one entity-name="WorkEffortInventoryAssign" value-field="foundEntity"/> |
| <if-not-empty field="foundEntity"> |
| <calculate field="foundEntity.quantity" type="Double"> |
| <calcop operator="get" field="foundEntity.quantity"/> |
| <calcop operator="get" field="parameters.quantity"/> |
| </calculate> |
| <store-value value-field="foundEntity"/> |
| <else> |
| <make-value value-field="newEntity" entity-name="WorkEffortInventoryAssign"/> |
| <set-pk-fields map="parameters" value-field="newEntity"/> |
| <set-nonpk-fields map="parameters" value-field="newEntity"/> |
| <create-value value-field="newEntity"/> |
| </else> |
| </if-not-empty> |
| </simple-method> |
| |
| <!-- CustRequestItem workeffort --> |
| <simple-method method-name="checkCustRequestItemExists" short-description="Checks to see if a CustRequestItem exists"> |
| <make-value entity-name="CustRequestItem" value-field="lookupMap"/> |
| <set-pk-fields map="parameters" value-field="lookupMap"/> |
| <find-by-primary-key entity-name="CustRequestItem" map="lookupMap" value-field="custRequestItem"/> |
| <if-not-empty field="custRequestItem"> |
| <set field="custRequestItemExists" value="true"/> |
| <field-to-result field="custRequestItemExists"/> |
| <log level="always" message="custRequestItemExists: ${custRequestItemExists}"/> |
| <else> |
| <log level="always" message="custRequestItemExists: empty"/> |
| </else> |
| </if-not-empty> |
| </simple-method> |
| |
| <simple-method method-name="setWorkEffortFixedAssetAssign" short-description="Based on task's estimate dates, write assign entries for the fixed asset the task is assigned to"> |
| <entity-one entity-name="WorkEffort" value-field="workEffort"/> |
| <set from-field="workEffort.workEffortId" field="findMap.workEffortId"/> |
| <set from-field="workEffort.fixedAssetId" field="findMap.fixedAssetId"/> |
| <find-by-and entity-name="WorkEffortFixedAssetAssign" map="findMap" list="existingAssignments"/> |
| <filter-list-by-date list="existingAssignments"/> |
| <iterate list="existingAssignments" entry="existingAssignment"> |
| <remove-value value-field="existingAssignment"/> |
| </iterate> |
| <make-value value-field="newEntity" entity-name="WorkEffortFixedAssetAssign"/> |
| <set from-field="workEffort.workEffortId" field="newEntity.workEffortId"/> |
| <set from-field="workEffort.fixedAssetId" field="newEntity.fixedAssetId"/> |
| <set from-field="workEffort.currentStatusId" field="newEntity.statusId"/> |
| <set from-field="workEffort.estimatedStartDate" field="newEntity.fromDate"/> |
| <set from-field="workEffort.estimatedCompletionDate" field="newEntity.thruDate"/> |
| <create-value value-field="newEntity"/> |
| </simple-method> |
| |
| <!-- WorkEffort-FixedAsset --> |
| <simple-method method-name="createWorkEffortFixedAssetStd" |
| short-description="Create a WorkEffort FixedAsset Standard"> |
| <entity-one entity-name="WorkEffortFixedAssetStd" value-field="lookedUpValue"/> |
| <if-not-empty field="lookedUpValue"> |
| <add-error> |
| <fail-property resource="WorkEffortUiLabels" property="WorkEffortFixedAssetAlreadyExist"/> |
| </add-error> |
| <check-errors /> |
| <else> |
| <make-value entity-name="WorkEffortFixedAssetStd" value-field="newWEFixedAssetStd"/> |
| <set-pk-fields map="parameters" value-field="newWEFixedAssetStd"/> |
| <set-nonpk-fields map="parameters" value-field="newWEFixedAssetStd"/> |
| <create-value value-field="newWEFixedAssetStd"/> |
| </else> |
| </if-not-empty> |
| </simple-method> |
| <simple-method method-name="removeWorkEffortFixedAssetStd" |
| short-description="Delete a WorkEffort FixedAsset Standard"> |
| <entity-one entity-name="WorkEffortFixedAssetStd" value-field="lookedUpValue"/> |
| <remove-value value-field="lookedUpValue"/> |
| </simple-method> |
| <simple-method method-name="createWorkEffortFixedAssetAssign" |
| short-description="Create a WorkEffort FixedAsset Assign"> |
| <entity-one entity-name="WorkEffortFixedAssetAssign" value-field="lookedUpValue"/> |
| <if-not-empty field="lookedUpValue"> |
| <add-error> |
| <fail-property resource="WorkEffortUiLabels" property="WorkEffortFixedAssetAlreadyExist"/> |
| </add-error> |
| <else> |
| <make-value entity-name="WorkEffortFixedAssetAssign" value-field="newWEFixedAssetAssign"/> |
| <set-pk-fields map="parameters" value-field="newWEFixedAssetAssign"/> |
| <set-nonpk-fields map="parameters" value-field="newWEFixedAssetAssign"/> |
| <!-- if the user hasn't specified a fromDate, set it from the actual start date of the task |
| if there is no actual start date, default to now (to the current date and time) --> |
| <if-empty field="parameters.fromDate"> |
| <entity-one entity-name="WorkEffort" value-field="prodRunTask"/> |
| <now-timestamp field="newWEFixedAssetAssign.fromDate"/> |
| <if-not-empty field="prodRunTask.estimatedStartDate"> |
| <set field="newWEFixedAssetAssign.fromDate" from-field="prodRunTask.estimatedStartDate"/> |
| </if-not-empty> |
| <if-not-empty field="prodRunTask.actualStartDate"> |
| <set field="newWEFixedAssetAssign.fromDate" from-field="prodRunTask.actualStartDate"/> |
| </if-not-empty> |
| </if-empty> |
| <create-value value-field="newWEFixedAssetAssign"/> |
| </else> |
| </if-not-empty> |
| </simple-method> |
| <simple-method method-name="removeWorkEffortFixedAssetAssign" |
| short-description="Remove a WorkEffort FixedAsset Assign"> |
| <entity-one entity-name="WorkEffortFixedAssetAssign" value-field="lookedUpValue"/> |
| <remove-value value-field="lookedUpValue"/> |
| </simple-method> |
| |
| <!-- Create/Update/Delete Work Effort Review--> |
| <simple-method method-name="createWorkEffortReview" short-description="Create Work Effort Review"> |
| <entity-one entity-name="WorkEffortReview" value-field="lookedUpValue"/> |
| <if-not-empty field="lookedUpValue"> |
| <add-error> |
| <fail-property resource="WorkEffortUiLabels" property="WorkEffortWorkEffortReviewAlreadyExist"/> |
| </add-error> |
| <check-errors/> |
| <else> |
| <make-value entity-name="WorkEffortReview" value-field="newEntity"/> |
| <set-nonpk-fields map="parameters" value-field="newEntity"/> |
| <set-pk-fields map="parameters" value-field="newEntity"/> |
| |
| <if-empty field="newEntity.userLoginId"> |
| <set field="newEntity.userLoginId" from-field="parameters.userLogin.userLoginId"/> |
| </if-empty> |
| <if-empty field="newEntity.reviewDate"> |
| <now-timestamp field="nowTimestamp"/> |
| <set field="newEntity.reviewDate" from-field="nowTimestamp"/> |
| </if-empty> |
| <create-value value-field="newEntity"/> |
| </else> |
| </if-not-empty> |
| </simple-method> |
| <simple-method method-name="deleteWorkEffortReview" |
| short-description="Remove a WorkEffort Review"> |
| <entity-one entity-name="WorkEffortReview" value-field="lookedUpValue"/> |
| <remove-value value-field="lookedUpValue"/> |
| </simple-method> |
| |
| <simple-method method-name="indexWorkEffortKeywords" short-description="Index the Keywords for a WorkEffort" login-required="false"> |
| <!-- this service is meant to be called from an entity ECA for entities that include a workEffortId |
| if it is the WorkEffort entity itself triggering this action, then a worokEffort parameter |
| will be passed and we can save a few cycles looking that up --> |
| <set from-field="parameters.workEffort" field="workEffort"/> |
| <if-empty field="workEffort"> |
| <set from-field="parameters.workEffortId" field="findWorkEffortMap.workEffortId"/> |
| <find-by-primary-key entity-name="WorkEffort" map="findWorkEffortMap" value-field="workEffort"/> |
| </if-empty> |
| <check-errors /> |
| <!-- index keywords --> |
| <call-class-method class-name="org.apache.ofbiz.workeffort.workeffort.WorkEffortKeywordIndex" method-name="indexKeywords"> |
| <field field="workEffort" type="org.apache.ofbiz.entity.GenericValue"/> |
| </call-class-method> |
| </simple-method> |
| |
| <simple-method method-name="createWorkEffortKeyword" short-description="Create Work Effort Keyword"> |
| <entity-one entity-name="WorkEffortKeyword" value-field="lookedUpValue"/> |
| <if-not-empty field="lookedUpValue"> |
| <add-error> |
| <fail-property resource="WorkEffortUiLabels" property="WorkEffortKeywordAlreadyExist"/> |
| </add-error> |
| <else> |
| <make-value value-field="newEntity" entity-name="WorkEffortKeyword"/> |
| <if-empty field="parameters.workEffortId"> |
| <add-error> |
| <fail-property resource="WorkEffortUiLabels" property="WorkEffortIdMissing"/> |
| </add-error> |
| </if-empty> |
| <if-empty field="parameters.keyword"> |
| <add-error> |
| <fail-property resource="ProductUiLabels" property="productevents.keyword_missing"/> |
| </add-error> |
| </if-empty> |
| <check-errors/> |
| <set-pk-fields value-field="newEntity" map="parameters"></set-pk-fields> |
| <set-nonpk-fields map="parameters" value-field="newEntity"/> |
| <create-value value-field="newEntity"/> |
| </else> |
| </if-not-empty> |
| <check-errors/> |
| </simple-method> |
| |
| <simple-method method-name="deleteWorkEffortKeyword" |
| short-description="Remove a WorkEffort Keyword"> |
| <entity-one entity-name="WorkEffortKeyword" value-field="lookedUpValue"/> |
| <remove-value value-field="lookedUpValue"/> |
| </simple-method> |
| |
| <simple-method method-name="createWorkEffortKeywords" short-description="Create all Work Effort Keyword"> |
| <set from-field="parameters.workEffortId" field="findWorkEffortMap.workEffortId"/> |
| <find-by-primary-key entity-name="WorkEffort" map="findWorkEffortMap" value-field="workEffortInstance"/> |
| <call-class-method class-name="org.apache.ofbiz.workeffort.workeffort.WorkEffortKeywordIndex" method-name="indexKeywords"> |
| <field field="workEffortInstance" type="org.apache.ofbiz.entity.GenericValue"/> |
| </call-class-method> |
| </simple-method> |
| |
| <simple-method method-name="deleteWorkEffortKeywords" |
| short-description="Remove all WorkEffort Keyword"> |
| <set from-field="parameters.workEffortId" field="findWorkEffortMap.workEffortId"/> |
| <find-by-primary-key entity-name="WorkEffort" map="findWorkEffortMap" value-field="workEffortInstance"/> |
| <if-not-empty field="workEffortInstance.workEffortId"> |
| <remove-related relation-name="WorkEffortKeyword" value-field="workEffortInstance"/> |
| </if-not-empty> |
| <check-errors/> |
| </simple-method> |
| |
| <simple-method method-name="duplicateWorkEffort" short-description="Duplicate a WorkEffort"> |
| <set field="removeWorkEffortAssocs" from-field="parameters.removeWorkEffortAssocs" default-value="N" /> |
| <set field="removeWorkEffortContents" from-field="parameters.removeWorkEffortContents" default-value="N" /> |
| <set field="removeWorkEffortNotes" from-field="parameters.removeWorkEffortNotes" default-value="N" /> |
| <set field="removeWorkEffortAssignmentRates" from-field="parameters.removeWorkEffortAssignmentRates" default-value="N" /> |
| <if> |
| <condition> |
| <or> |
| <if-compare field="removeWorkEffortAssocs" operator="equals" value="Y" /> |
| <if-compare field="removeWorkEffortContents" operator="equals" value="Y" /> |
| <if-compare field="removeWorkEffortNotes" operator="equals" value="Y" /> |
| <if-compare field="removeWorkEffortAssignmentRates" operator="equals" value="Y" /> |
| </or> |
| </condition> |
| <then> |
| <check-permission permission="WORKEFFORTMGR" action="_DELETE"> |
| <fail-property resource="WorkEffortUiLabels" property="WorkEffortDeletePermissionError" /> |
| </check-permission> |
| <check-errors /> |
| </then> |
| </if> |
| |
| <!-- Get the old WorkEffort --> |
| <set field="workEffortId" from-field="parameters.workEffortId"/> |
| <if-empty field="workEffortId"> |
| <sequenced-id sequence-name="WorkEffort" field="workEffortId"/> |
| </if-empty> |
| <entity-one entity-name="WorkEffort" value-field="oldWorkEffort"> |
| <field-map field-name="workEffortId" from-field="parameters.oldWorkEffortId"/> |
| </entity-one> |
| |
| <!-- Check the status to give to the new WorkEffort --> |
| <if-empty field="parameters.statusId"> |
| <entity-one entity-name="StatusItem" value-field="oldStatus"> |
| <field-map field-name="statusId" from-field="oldWorkEffort.currentStatusId"/> |
| </entity-one> |
| <entity-and entity-name="StatusItem" list="statusList"> |
| <field-map field-name="statusTypeId" from-field="oldStatus.statusTypeId"/> |
| <order-by field-name="sequenceId"/> |
| </entity-and> |
| <set field="oldWorkEffort.currentStatusId" from-field="statusList[0].statusId"/> |
| <else> |
| <set field="oldWorkEffort.currentStatusId" from-field="parameters.statusId"/> |
| </else> |
| </if-empty> |
| |
| <!-- Create the new WorkEffort from the old one and the status --> |
| <set-service-fields service-name="createWorkEffort" map="oldWorkEffort" to-map="createWorkEffortCtx"/> |
| <set field="createWorkEffortCtx.workEffortId" from-field="workEffortId"/> |
| <set field="createWorkEffortCtx.userLogin" from-field="parameters.userLogin"/> |
| <call-service service-name="createWorkEffort" in-map-name="createWorkEffortCtx"/> |
| <check-errors /> |
| <entity-one entity-name="WorkEffort" value-field="newWorkEffort" /> |
| <set field="workEffortAssocFindContext.workEffortIdFrom" from-field="parameters.oldWorkEffortId" /> |
| <set field="reverseWorkEffortFindContext.workEffortIdTo" from-field="parameters.oldWorkEffortId" /> |
| <set field="duplicateWorkEffortAssocs" from-field="parameters.duplicateWorkEffortAssocs" default-value="N" /> |
| <if-compare field="duplicateWorkEffortAssocs" operator="equals" value="Y"> |
| <find-by-and entity-name="WorkEffortAssoc" map="workEffortAssocFindContext" list="foundValues" /> |
| <iterate list="foundValues" entry="foundValue"> |
| <clone-value value-field="foundValue" new-value-field="newTempValue" /> |
| <set from-field="workEffortId" field="newTempValue.workEffortIdFrom" /> |
| <create-value value-field="newTempValue" /> |
| </iterate> |
| <entity-and entity-name="WorkEffortAssoc" list="foundValues"> |
| <field-map field-name="workEffortIdTo" from-field="parameters.oldWorkEffortId" /> |
| </entity-and> |
| <iterate list="foundValues" entry="foundValue"> |
| <clone-value value-field="foundValue" new-value-field="newTempValue" /> |
| <set from-field="workEffortId" field="newTempValue.workEffortIdTo" /> |
| <create-value value-field="newTempValue" /> |
| </iterate> |
| </if-compare> |
| <set field="workEffortFindContext.workEffortId" from-field="parameters.oldWorkEffortId" /> |
| <set field="duplicateWorkEffortNotes" from-field="parameters.duplicateWorkEffortNotes" default-value="N" /> |
| <if-compare field="duplicateWorkEffortNotes" operator="equals" value="Y"> |
| <find-by-and entity-name="WorkEffortNote" map="workEffortFindContext" list="foundValues" /> |
| <iterate list="foundValues" entry="foundValue"> |
| <clone-value value-field="foundValue" new-value-field="newTempValue" /> |
| <set from-field="workEffortId" field="newTempValue.workEffortId" /> |
| <create-value value-field="newTempValue" /> |
| </iterate> |
| </if-compare> |
| <set field="duplicateWorkEffortContents" from-field="parameters.duplicateWorkEffortContents" default-value="N" /> |
| <if-compare field="duplicateWorkEffortContents" operator="equals" value="Y"> |
| <find-by-and entity-name="WorkEffortContent" map="workEffortFindContext" list="foundValues" /> |
| <iterate list="foundValues" entry="foundValue"> |
| <clone-value value-field="foundValue" new-value-field="newTempValue" /> |
| <set from-field="workEffortId" field="newTempValue.workEffortId" /> |
| <create-value value-field="newTempValue" /> |
| </iterate> |
| </if-compare> |
| <set field="duplicateWorkEffortAssignmentRates" from-field="parameters.duplicateWorkEffortAssignmentRates" default-value="N" /> |
| <if-compare field="duplicateWorkEffortAssignmentRates" operator="equals" value="Y"> |
| <find-by-and entity-name="RateAmount" map="workEffortFindContext" list="foundValuesAll" /> |
| <filter-list-by-date list="foundValuesAll" to-list="foundValues" /> |
| <iterate list="foundValues" entry="foundValue"> |
| <clone-value value-field="foundValue" new-value-field="newTempValue" /> |
| <set from-field="workEffortId" field="newTempValue.workEffortId" /> |
| <create-value value-field="newTempValue" /> |
| </iterate> |
| </if-compare> |
| <if-compare field="removeWorkEffortAssocs" operator="equals" value="Y"> |
| <remove-by-and entity-name="WorkEffortAssoc" map="workEffortAssocFindContext" /> |
| <!-- small difference here, also do the reverse assocs... --> |
| <remove-by-and entity-name="WorkEffortAssoc" map="reverseWorkEffortFindContext" /> |
| </if-compare> |
| <if-compare field="removeWorkEffortContents" operator="equals" value="Y"> |
| <remove-by-and entity-name="WorkEffortContent" map="workEffortFindContext" /> |
| </if-compare> |
| <if-compare field="removeWorkEffortNotes" operator="equals" value="Y"> |
| <remove-by-and entity-name="WorkEffortNote" map="workEffortFindContext" /> |
| </if-compare> |
| <if-compare field="removeWorkEffortAssignmentRates" operator="equals" value="Y"> |
| <remove-by-and entity-name="RateAmount" map="workEffortFindContext" /> |
| </if-compare> |
| <field-to-result field="workEffortId"/> |
| </simple-method> |
| |
| <!-- WorkEffort ServiceTest Services --> |
| <simple-method method-name="testCreateEventService" short-description="test to create new event (workeffort) service" login-required="false"> |
| <log level="info" message="====================Create an event test case=========================================="/> |
| <set field="createEventMap.workEffortTypeId" value="EVENT"/> |
| <set field="createEventMap.quickAssignPartyId" value="DemoCustomer"/> |
| <set field="createEventMap.workEffortName" value="Create Work Effort"/> |
| <set field="createEventMap.currentStatusId" value="CAL_TENTATIVE"/> |
| <entity-one entity-name="UserLogin" value-field="createEventMap.userLogin"> |
| <field-map field-name="userLoginId" value="system"/> |
| </entity-one> |
| <call-service service-name="createWorkEffort" in-map-name="createEventMap"> |
| <result-to-field result-name="workEffortId" field="eventMap.workEffortId"/> |
| </call-service> |
| <call-simple-method method-name="testUpdateEventService"/> |
| <entity-one entity-name="WorkEffort" value-field="workEffort"> |
| <field-map field-name="workEffortId" from-field="eventMap.workEffortId"/> |
| </entity-one> |
| <assert> |
| <not><if-empty field="workEffort"/></not> |
| <if-compare-field field="workEffort.workEffortId" to-field="eventMap.workEffortId" operator="equals"/> |
| <if-compare-field field="workEffort.workEffortTypeId" to-field="updateEventMap.workEffortTypeId" operator="equals"/> |
| <if-compare-field field="workEffort.workEffortName" to-field="updateEventMap.workEffortName" operator="equals"/> |
| <if-compare-field field="workEffort.currentStatusId" to-field="updateEventMap.currentStatusId" operator="equals"/> |
| </assert> |
| <check-errors/> |
| </simple-method> |
| <simple-method method-name="testUpdateEventService" short-description="test to update an event(workeffort) service" login-required="false"> |
| <log level="info" message="====================Update an event test case=========================================="/> |
| <set field="updateEventMap.workEffortId" from-field="eventMap.workEffortId"/> |
| <set field="updateEventMap.workEffortTypeId" value="EVENT"/> |
| <set field="updateEventMap.workEffortName" value="Update an event"/> |
| <set field="updateEventMap.currentStatusId" value="CAL_ACCEPTED"/> |
| <entity-one entity-name="UserLogin" value-field="updateEventMap.userLogin"> |
| <field-map field-name="userLoginId" value="system"/> |
| </entity-one> |
| <call-service service-name="updateWorkEffort" in-map-name="updateEventMap"/> |
| <check-errors/> |
| </simple-method> |
| <simple-method method-name="testCreateProjectService" short-description="test to create new project(workeffort) service" login-required="false"> |
| <log level="info" message="====================Create a new project test case=========================================="/> |
| <set field="createProjectMap.workEffortTypeId" value="PROJECT"/> |
| <set field="createProjectMap.quickAssignPartyId" value="DemoCustomer"/> |
| <set field="createProjectMap.workEffortName" value="Create a project"/> |
| <set field="createProjectMap.currentStatusId" value="CAL_TENTATIVE"/> |
| <entity-one entity-name="UserLogin" value-field="createProjectMap.userLogin"> |
| <field-map field-name="userLoginId" value="system"/> |
| </entity-one> |
| <call-service service-name="createWorkEffort" in-map-name="createProjectMap"> |
| <result-to-field result-name="workEffortId" field="projectMap.workEffortId"/> |
| </call-service> |
| <call-simple-method method-name="testUpdateProjectService"/> |
| <call-simple-method method-name="testCreateWorkEffortNoteService"/> |
| <entity-one entity-name="WorkEffort" value-field="workEffort"> |
| <field-map field-name="workEffortId" from-field="projectMap.workEffortId"/> |
| </entity-one> |
| <entity-one entity-name="NoteData" value-field="noteData"> |
| <field-map field-name="noteId" from-field="workEffortNoteMap.noteId"/> |
| </entity-one> |
| <assert> |
| <not><if-empty field="workEffort"/></not> |
| <if-compare-field field="workEffort.workEffortId" to-field="projectMap.workEffortId" operator="equals"/> |
| <if-compare-field field="workEffort.workEffortTypeId" to-field="updateProjectMap.workEffortTypeId" operator="equals"/> |
| <if-compare-field field="workEffort.workEffortName" to-field="updateProjectMap.workEffortName" operator="equals"/> |
| <if-compare-field field="workEffort.currentStatusId" to-field="updateProjectMap.currentStatusId" operator="equals"/> |
| </assert> |
| <assert> |
| <not><if-empty field="noteData"/></not> |
| <if-compare-field field="noteData.noteParty" to-field="createWorkEffortNoteMap.noteParty" operator="equals"/> |
| <if-compare-field field="noteData.noteInfo" to-field="createWorkEffortNoteMap.noteInfo" operator="equals"/> |
| </assert> |
| <check-errors/> |
| </simple-method> |
| <simple-method method-name="testUpdateProjectService" short-description="test to update an project(workeffort) service" login-required="false"> |
| <log level="info" message="====================Update a project test case=========================================="/> |
| <set field="updateProjectMap.workEffortId" from-field="projectMap.workEffortId"/> |
| <set field="updateProjectMap.workEffortTypeId" value="PROJECT"/> |
| <set field="updateProjectMap.workEffortName" value="Update a project"/> |
| <set field="updateProjectMap.currentStatusId" value="CAL_ACCEPTED"/> |
| <entity-one entity-name="UserLogin" value-field="updateProjectMap.userLogin"> |
| <field-map field-name="userLoginId" value="system"/> |
| </entity-one> |
| <call-service service-name="updateWorkEffort" in-map-name="updateProjectMap"/> |
| <check-errors/> |
| </simple-method> |
| <simple-method method-name="testCreateWorkEffortNoteService" short-description="test to create new workeffort note service" login-required="false"> |
| <log level="info" message="====================Create a work effort note test case=========================================="/> |
| <set field="createWorkEffortNoteMap.workEffortId" from-field="projectMap.workEffortId"/> |
| <set field="createWorkEffortNoteMap.noteParty" value="DemoCustomer"/> |
| <set field="createWorkEffortNoteMap.noteInfo" value="This is a note for party 'DemoCustomer'"/> |
| <entity-one entity-name="UserLogin" value-field="createWorkEffortNoteMap.userLogin"> |
| <field-map field-name="userLoginId" value="system"/> |
| </entity-one> |
| <call-service service-name="createWorkEffortNote" in-map-name="createWorkEffortNoteMap"> |
| <result-to-field result-name="noteId" field="workEffortNoteMap.noteId"/> |
| </call-service> |
| <check-errors/> |
| </simple-method> |
| |
| <simple-method method-name="getHours" |
| short-description="get the planned and estimated hours for a task and add to the highInfo map"> |
| |
| <!-- input is 'lowInfo' map output is 'highInfo map --> |
| <!-- hoursPartyId: if provided only the hours of that party --> |
| <!-- add the planned hours together --> |
| <get-related value-field="lowInfo" relation-name="WorkEffortSkillStandard" list="estimates"/> |
| <if-not-empty field="estimates"> |
| <iterate list="estimates" entry="estimate"> |
| <if-not-empty field="estimate.estimatedDuration"> |
| <if-not-empty field="highInfo.plannedHours"> |
| <calculate field="highInfo.plannedHours" type="Double"> |
| <calcop operator="add" field="estimate.estimatedDuration"> |
| <calcop operator="get" field="highInfo.plannedHours"/> |
| </calcop> |
| </calculate> |
| <else> |
| <set field="highInfo.plannedHours" from-field="estimate.estimatedDuration" type="Double"/> |
| </else> |
| </if-not-empty> |
| </if-not-empty> |
| </iterate> |
| </if-not-empty> |
| <!-- get the actual billed / non billed hours --> |
| <get-related value-field="lowInfo" relation-name="TimeEntry" list="actuals"/> |
| <if-not-empty field="actuals"> |
| <iterate list="actuals" entry="actual"> |
| <if-not-empty field="actual.hours"> |
| <get-related-one value-field="actual" relation-name="Timesheet" to-value-field="timesheet"/> |
| |
| <!-- check if only a part of the registered hours need to be taken into account --> |
| <set field="originalActualHours" from-field="actual.hours" type="Double"/> |
| <entity-condition entity-name="PartyRate" list="partyRates"> |
| <condition-list combine="and"> |
| <condition-expr field-name="partyId" from-field="timesheet.partyId"/> |
| <condition-expr field-name="rateTypeId" from-field="actual.rateTypeId"/> |
| <condition-expr field-name="fromDate" operator="less-equals" from-field="actual.fromDate"/> |
| <condition-list combine="or"> |
| <condition-expr field-name="thruDate" operator="equals" from-field="nullField"/> |
| <condition-expr field-name="thruDate" operator="greater-equals" from-field="actual.fromDate"/> |
| </condition-list> |
| </condition-list> |
| </entity-condition> |
| <if-not-empty field="partyRates"> |
| <first-from-list list="partyRates" entry="partyRate"/> |
| <if-not-empty field="partyRate.percentageUsed"> |
| <calculate field="actual.hours" type="Double"> |
| <calcop operator="multiply" field="actual.hours"> |
| <calcop operator="get" field="partyRate.percentageUsed"/> |
| </calcop> |
| </calculate> |
| <calculate field="actual.hours" type="Double"> |
| <calcop operator="divide" field="actual.hours"> |
| <number value="100"/> |
| </calcop> |
| </calculate> |
| </if-not-empty> |
| </if-not-empty> |
| <if> |
| <condition> |
| <or> |
| <if-empty field="parameters.hoursPartyId"/> |
| <and> |
| <not><if-empty field="parameters.hoursPartyId"/></not> |
| <if-compare-field field="timesheet.partyId" to-field="parameters.hoursPartyId" operator="equals"/> |
| </and> |
| </or> |
| </condition> |
| <then> |
| <if-not-empty field="highInfo.originalActualHours"> |
| <calculate field="highInfo.originalActualHours" type="Double"> |
| <calcop operator="get" field="highInfo.originalActualHours"> |
| <calcop operator="add" field="originalActualHours"/> |
| </calcop> |
| </calculate> |
| <else> |
| <set field="highInfo.originalActualHours" from-field="originalActualHours" type="Double"/> |
| </else> |
| </if-not-empty> |
| <if-not-empty field="highInfo.actualHours"> |
| <calculate field="highInfo.actualHours" type="Double"> |
| <calcop operator="get" field="highInfo.actualHours"> |
| <calcop operator="add" field="actual.hours"/> |
| </calcop> |
| </calculate> |
| <else> |
| <set field="highInfo.actualHours" from-field="actual.hours" type="Double"/> |
| </else> |
| </if-not-empty> |
| <if-empty field="actual.invoiceId"> |
| <if-not-empty field="highInfo.actualNonBilledHours"> |
| <calculate field="highInfo.actualNonBilledHours" type="Double"> |
| <calcop operator="get" field="highInfo.actualNonBilledHours"> |
| <calcop operator="add" field="actual.hours"/> |
| </calcop> |
| </calculate> |
| <else> |
| <set field="highInfo.actualNonBilledHours" from-field="actual.hours" type="Double"/> |
| </else> |
| </if-not-empty> |
| </if-empty> |
| </then> |
| </if> |
| <!-- keep also a general total for the actual hours of all participants --> |
| <if-not-empty field="highInfo.actualTotalHours"> |
| <calculate field="highInfo.actualTotalHours" type="Double"> |
| <calcop operator="add" field="actual.hours"> |
| <calcop operator="get" field="highInfo.actualTotalHours"/> |
| </calcop> |
| </calculate> |
| <else> |
| <set field="highInfo.actualTotalHours" from-field="actual.hours" type="Double"/> |
| </else> |
| </if-not-empty> |
| <!-- keep also a general total for the actual hours of all participants however not yet billed --> |
| <if-empty field="actual.invoiceId"> |
| <if-not-empty field="highInfo.actualNonBilledTotalHours"> |
| <calculate field="highInfo.actualNonBilledTotalHours" type="Double"> |
| <calcop operator="add" field="actual.hours"> |
| <calcop operator="get" field="highInfo.actualNonBilledTotalHours"/> |
| </calcop> |
| </calculate> |
| <else> |
| <set field="highInfo.actualNonBilledTotalHours" from-field="actual.hours" type="Double"/> |
| </else> |
| </if-not-empty> |
| </if-empty> |
| </if-not-empty> |
| </iterate> |
| </if-not-empty> |
| </simple-method> |
| <!-- iCalendar services --> |
| |
| <simple-method method-name="getICalWorkEfforts" short-description="Get All Work Efforts Related To An iCalendar Publish Point" login-required="false"> |
| <!-- Servlet already confirmed workEffortId is a valid publish point --> |
| <set field="workEffortId" from-field="parameters.workEffortId"/> |
| <entity-condition entity-name="WorkEffortPartyAssignment" list="assignedParties" filter-by-date="true"> |
| <condition-list combine="and"> |
| <condition-expr field-name="workEffortId" from-field="workEffortId"/> |
| <condition-expr field-name="roleTypeId" value="ICAL_MEMBER"/> |
| </condition-list> |
| </entity-condition> |
| <iterate list="assignedParties" entry="assignedParty"> |
| <entity-condition list="resultList" entity-name="WorkEffortAndPartyAssign" filter-by-date="true"> |
| <condition-list combine="and"> |
| <condition-expr field-name="scopeEnumId" value="WES_PUBLIC"/> |
| <condition-expr field-name="workEffortTypeId" value="PUBLISH_PROPS" operator="not-equals"/> |
| <condition-expr field-name="workEffortTypeId" operator="equals" from-field="parameters.workEffortTypeId" ignore-if-empty="true"/> |
| <condition-expr field-name="partyId" from-field="assignedParty.partyId"/> |
| </condition-list> |
| </entity-condition> |
| <list-to-list list="resultList" to-list="workEfforts"/> |
| </iterate> |
| <entity-and entity-name="WorkEffortFixedAssetAssign" list="assignedFixedAssets" filter-by-date="true"> |
| <field-map field-name="workEffortId" from-field="workEffortId"/> |
| </entity-and> |
| <iterate list="assignedFixedAssets" entry="assignedFixedAsset"> |
| <entity-condition list="resultList" entity-name="WorkEffortAndFixedAssetAssign" filter-by-date="true"> |
| <condition-list combine="and"> |
| <condition-expr field-name="scopeEnumId" value="WES_PUBLIC"/> |
| <condition-expr field-name="workEffortTypeId" value="PUBLISH_PROPS" operator="not-equals"/> |
| <condition-expr field-name="workEffortTypeId" operator="equals" from-field="parameters.workEffortTypeId" ignore-if-empty="true"/> |
| <condition-expr field-name="fixedAssetId" from-field="assignedFixedAsset.fixedAssetId"/> |
| </condition-list> |
| </entity-condition> |
| <list-to-list list="resultList" to-list="workEfforts"/> |
| </iterate> |
| <entity-condition entity-name="WorkEffortAssocToView" list="resultList" filter-by-date="true"> |
| <condition-list combine="and"> |
| <condition-expr field-name="workEffortIdFrom" operator="equals" from-field="workEffortId"/> |
| <condition-expr field-name="workEffortTypeId" operator="equals" from-field="parameters.workEffortTypeId" ignore-if-empty="true"/> |
| </condition-list> |
| </entity-condition> |
| <list-to-list list="resultList" to-list="workEfforts"/> |
| <set field="workEfforts" from-field="groovy:org.apache.ofbiz.workeffort.workeffort.WorkEffortWorker.removeDuplicateWorkEfforts(workEfforts);" type="List"/> |
| <field-to-result field="workEfforts"/> |
| </simple-method> |
| |
| <simple-method method-name="getPartyICalUrl" short-description="Get The Party iCalendar URL" login-required="false"> |
| <!-- RFC 2445 4.8.4.1 and 4.8.4.3 Value must be a URI (4.3.3) --> |
| <set field="partyId" from-field="parameters.partyId"/> |
| <entity-condition entity-name="PartyContactWithPurpose" list="contactMechs"> |
| <condition-list combine="and"> |
| <condition-list combine="or"> |
| <condition-expr field-name="contactMechPurposeTypeId" value="ICAL_URL"/> |
| <condition-expr field-name="contactMechPurposeTypeId" value="PRIMARY_EMAIL"/> |
| </condition-list> |
| <condition-expr field-name="partyId" from-field="partyId"/> |
| <condition-expr field-name="purposeThruDate" from-field="null"/> |
| </condition-list> |
| <order-by field-name="contactMechPurposeTypeId"/> |
| </entity-condition> |
| <if-compare field="util:size(contactMechs)" operator="greater" value="0" type="Integer"> |
| <field-to-result field="contactMechs[0].infoString" result-name="iCalUrl"/> |
| </if-compare> |
| </simple-method> |
| |
| </simple-methods> |