<?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"
        xmlns="http://ofbiz.apache.org/Simple-Method" xsi:schemaLocation="http://ofbiz.apache.org/Simple-Method http://ofbiz.apache.org/dtds/simple-methods.xsd">
  <simple-map-processor name="person">
    <process field="firstName"><copy/><not-empty><fail-property resource="PartyUiLabels" property="PartyFirstNameMissing"/></not-empty></process>
    <process field="salutation"><copy/></process>
    <process field="middleName"><copy/></process>
    <process field="lastName"><copy/><not-empty><fail-property resource="PartyUiLabels" property="PartyLastNameMissingError"/></not-empty></process>
    <process field="personalTitle"><copy/></process>
    <process field="suffix"><copy/></process>
    <process field="nickname"><copy/></process>
    <process field="gender"><copy/></process>
    <process field="firstNameLocal"><copy/></process>
    <process field="middleNameLocal"><copy/></process>
    <process field="lastNameLocal"><copy/></process>
    <process field="otherLocal"><copy/></process>
    <process field="memberId"><copy/></process>
    <process field="birthDate"><convert type="Date"><fail-property resource="PartyUiLabels" property="PartyBirthDateMissingError"/></convert></process>
    <process field="deceasedDate"><convert type="Date"><fail-property resource="PartyUiLabels" property="PartyDeceasedDateMissingError"/></convert></process>
    <process field="height"><convert type="Double"><fail-property resource="PartyUiLabels" property="PartyHeightNotValidNumber"/></convert></process>
    <process field="weight"><convert type="Double"><fail-property resource="PartyUiLabels" property="PartyWeightNotValidNumber"/></convert></process>
    <process field="mothersMaidenName"><copy/></process>
    <process field="maritalStatus"><copy/></process>
    <process field="socialSecurityNumber"><copy/></process>
    <process field="passportNumber"><copy/></process>
    <process field="passportExpireDate"><convert type="Date"><fail-property resource="PartyUiLabels" property="PartyPassportExpireDateNotValidDate"/></convert></process>
    <process field="totalYearsWorkExperience"><convert type="Double"><fail-property resource="PartyUiLabels" property="PartyTotalYearsWorkNotValidNumber"/></convert></process>
    <process field="comments"><copy/></process>
    <process field="employmentStatusEnumId"><copy/></process>
    <process field="residenceStatusEnumId"><copy/></process>
    <process field="occupation"><copy/></process>
    <process field="yearsWithEmployer"><copy/></process>
    <process field="monthsWithEmployer"><copy/></process>
    <process field="existingCustomer"><copy/></process>
    <process field="cardId"><copy/></process>
  </simple-map-processor>

  <simple-map-processor name="partyGroup">
    <process field="groupName"><copy/><not-empty><fail-property resource="PartyUiLabels" property="PartyGroupNameMissing"/></not-empty></process>
    <process field="partyTypeId"><copy/></process>
    <process field="comments"><copy/></process>
    <process field="officeSiteName"><copy/></process>
    <process field="annualRevenue"><copy/></process>
    <process field="numEmployees"><convert type="Long"><fail-property resource="PartyUiLabels" property="PartyGroupNumEmployeeIsInvalid"/></convert></process>
    <process field="tickerSymbol"><copy/></process>
  </simple-map-processor>
</simple-map-processors>
