<?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-map-processors xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:noNamespaceSchemaLocation="http://ofbiz.apache.org/dtds/simple-methods-v2.xsd">
  <simple-map-processor name="assignmentMap">
    <process field="workEffortId"><copy/><not-empty><fail-property resource="WorkEffortUiLabels" property="WorkEffortIdMissing"/></not-empty></process>
    <process field="partyId"><copy/><not-empty><fail-property resource="PartyUiLabels" property="PartyPartyIdMissing"/></not-empty></process>
    <process field="roleTypeId"><copy/><not-empty><fail-property resource="PartyUiLabels" property="PartyRoleTypeIdMissing"/></not-empty></process>
    <process field="fromDate">
        <convert type="Timestamp"><fail-property resource="WorkEffortUiLabels" property="WorkEffortFromDateIsNotValid"/></convert></process>
  </simple-map-processor>
  <simple-map-processor name="createWorkEffortMap">
    <process field="workEffortTypeId"><copy/><not-empty><fail-property resource="WorkEffortUiLabels" property="WorkEffortIdMissing"/></not-empty></process>
    <process field="workEffortPurposeTypeId"><copy/></process>
    <process field="workEffortParentId"><copy/></process>
    <process field="currentStatusId"><copy/><not-empty><fail-property resource="WorkEffortUiLabels" property="WorkEffortStatusIdMissing"/></not-empty></process>
    <process field="universalId"><copy/></process>
    <process field="scopeEnumId"><copy/></process>
    <process field="priority"><copy/>
        <convert type="Long"><fail-property resource="WorkEffortUiLabels" property="WorkEffortPriorityFormatNotCorrect"/></convert>
    </process>
    <process field="percentComplete"><copy/></process>
    <process field="workEffortName"><copy/><not-empty><fail-property resource="WorkEffortUiLabels" property="WorkEffortNameIsMissing"/></not-empty></process>
    <process field="description"><copy/></process>
    <process field="locationDesc"><copy/></process>
    <process field="fixedAssetId"><copy/></process>
    <process field="facilityId"><copy/></process>
    <process field="estimatedStartDate"><copy/></process>
    <process field="estimatedCompletionDate"><copy/></process>
    <process field="actualStartDate"><copy/></process>
    <process field="actualCompletionDate"><copy/></process>
    <process field="estimatedMilliSeconds"><copy/></process>
    <process field="actualMilliSeconds"><copy/></process>
    <process field="totalMilliSecondsAllowed"><copy/></process>
    <process field="totalMoneyAllowed"><copy/></process>
    <process field="moneyUomId"><copy/></process>
    <process field="specialTerms"><copy/></process>
    <process field="timeTransparency"><copy/></process>
    <process field="infoUrl"><copy/></process>
    <process field="recurrenceInfoId"><copy/></process>
    <process field="runtimeDataId"><copy/></process>
    <process field="noteId"><copy/></process>
    <process field="serviceLoaderName"><copy/></process>
    <process field="workflowPackageId"><copy/></process>
    <process field="workflowPackageVersion"><copy/></process>
    <process field="workflowProcessId"><copy/></process>
    <process field="workflowProcessVersion"><copy/></process>
    <process field="workflowActivityId"><copy/></process>
    <process field="quickAssignPartyId"><copy/></process>
  </simple-map-processor>
  <simple-map-processor name="workEffortContactMech">
    <process field="workEffortId"><copy/><not-empty><fail-property resource="WorkEffortUiLabels" property="WorkEffortIdMissing"/></not-empty></process>
    <process field="contactMechId"><copy/></process>
    <process field="comments"><copy/></process>
  </simple-map-processor>
  <simple-map-processor name="emailAddress">
    <process field="contactMechId"><copy set-if-null="false"/></process>
    <process field="workEffortId"><copy/></process>
    <process field="emailAddress">
        <copy to-field="infoString"/>
        <not-empty><fail-property resource="WorkEffortUiLabels" property="WorkEffortEmailAddressIsMissing"/></not-empty>
        <validate-method method="isEmail"><fail-property resource="WorkEffortUiLabels" property="WorkEffortEmailAddressNotFormatted"/></validate-method></process>
  </simple-map-processor>
  <simple-map-processor name="createWorkEffortAssocMap">
      <process field="workEffortIdFrom"><copy/></process>
      <process field="workEffortIdTo"><copy/></process>
      <process field="workEffortAssocTypeId"><copy/></process>
      <process field="sequenceNum"><copy/></process>
      <process field="fromDate"><copy/></process>
      <process field="thruDate"><copy/></process>
  </simple-map-processor>
  <simple-map-processor name="createWorkEffortNoteMap">
    <process field="workEffortId"><copy/></process>
    <process field="internalNote"><copy/></process>
    <process field="noteName"><copy/></process>
    <process field="noteParty"><copy/></process>
    <process field="noteInfo"><copy/><not-empty><fail-property resource="WorkEffortUiLabels" property="WorkEffortNoteMissing"/></not-empty></process>
  </simple-map-processor>
</simple-map-processors>
