<?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="phoneNumber">
        <process field="phoneContactMechId">
            <copy to-field="contactMechId" set-if-null="false"/>
        </process>
        <process field="countryCode">
            <copy/>
            <not-empty>
                <fail-property resource="PartyUiLabels" property="PartyCountryCodeMissing"/>
            </not-empty>
        </process>
        <process field="areaCode">
            <copy/>
            <not-empty>
                <fail-property resource="PartyUiLabels" property="PartyAreaCodeMissingError"/>
            </not-empty>
        </process>
        <process field="contactNumber">
            <copy/>
            <not-empty>
                <fail-property resource="PartyUiLabels" property="PartyContactTelephoneMissingError"/>
            </not-empty>
        </process>
        <process field="extension">
            <copy/>
        </process>
    </simple-map-processor>

    <simple-map-processor name="shipToAddress">
        <process field="shipToContactMechId">
            <copy to-field="contactMechId" set-if-null="false"/>
        </process>
        <process field="shipToName">
            <copy to-field="toName" set-if-null="false"/>
        </process>
        <process field="shipToAttnName">
            <copy to-field="attnName" set-if-null="false"/>
        </process>
        <process field="shipToAddress1">
            <copy to-field="address1"/>
            <not-empty>
                <fail-property resource="PartyUiLabels" property="PartyAddressLine1MissingError"/>
            </not-empty>
        </process>
        <process field="shipToAddress2">
            <copy to-field="address2"/>
        </process>
        <process field="shipToCity">
            <copy to-field="city"/>
            <not-empty>
                <fail-property resource="PartyUiLabels" property="PartyCityMissing"/>
            </not-empty>
        </process>
        <process field="shipToStateProvinceGeoId">
            <copy to-field="stateProvinceGeoId"/>
            <not-empty>
                <fail-property resource="PartyUiLabels" property="PartyStateMissingError"/>
            </not-empty>
        </process>
        <process field="shipToPostalCode">
            <copy to-field="postalCode"/>
            <not-empty>
                <fail-property resource="PartyUiLabels" property="PartyPostalInformationNotFound"/>
            </not-empty>
        </process>
        <process field="shipToCountryGeoId">
            <copy to-field="countryGeoId"/>
            <not-empty>
                <fail-property resource="PartyUiLabels" property="PartyCountryMissing"/>
            </not-empty>
        </process>
    </simple-map-processor>

    <simple-map-processor name="billToAddress">
        <process field="billToContactMechId">
            <copy to-field="contactMechId" set-if-null="false"/>
        </process>
        <process field="billToName">
            <copy to-field="toName" set-if-null="false"/>
        </process>
        <process field="billToAttnName">
            <copy to-field="attnName" set-if-null="false"/>
        </process>
        <process field="billToAddress1">
            <copy to-field="address1"/>
            <not-empty>
                <fail-property resource="PartyUiLabels" property="PartyAddressLine1MissingError"/>
            </not-empty>
        </process>
        <process field="billToAddress2">
            <copy to-field="address2"/>
        </process>
        <process field="billToCity">
            <copy to-field="city"/>
            <not-empty>
                <fail-property resource="PartyUiLabels" property="PartyCityMissing"/>
            </not-empty>
        </process>
        <process field="billToStateProvinceGeoId">
            <copy to-field="stateProvinceGeoId"/>
            <not-empty>
                <fail-property resource="PartyUiLabels" property="PartyStateMissingError"/>
            </not-empty>
        </process>
        <process field="billToPostalCode">
            <copy to-field="postalCode"/>
            <not-empty>
                <fail-property resource="PartyUiLabels" property="PartyPostalInformationNotFound"/>
            </not-empty>
        </process>
        <process field="billToCountryGeoId">
            <copy to-field="countryGeoId"/>
            <not-empty>
                <fail-property resource="PartyUiLabels" property="PartyCountryMissing"/>
            </not-empty>
        </process>
    </simple-map-processor>

    <simple-map-processor name="shipToPhone">
        <process field="shipToCountryCode">
            <copy to-field="countryCode"/>
            <not-empty><fail-property resource="PartyUiLabels" property="PartyCountryCodeMissing"/></not-empty>
        </process>
        <process field="shipToAreaCode">
            <copy to-field="areaCode"/>
            <not-empty><fail-property resource="PartyUiLabels" property="PartyAreaCodeMissingError"/></not-empty>
        </process>
        <process field="shipToContactNumber">
            <copy to-field="contactNumber"/>
            <not-empty><fail-property resource="PartyUiLabels" property="PartyContactTelephoneMissingError"/></not-empty>
        </process>
        <process field="shipToExtension"><copy to-field="extension"/></process>
    </simple-map-processor>

    <simple-map-processor name="billToPhone">
        <process field="billToCountryCode">
            <copy to-field="countryCode"/>
            <not-empty><fail-property resource="PartyUiLabels" property="PartyCountryCodeMissing"/></not-empty>
        </process>
        <process field="billToAreaCode">
            <copy to-field="areaCode"/>
            <not-empty><fail-property resource="PartyUiLabels" property="PartyAreaCodeMissingError"/></not-empty>
        </process>
        <process field="billToContactNumber">
            <copy to-field="contactNumber"/>
            <not-empty><fail-property resource="PartyUiLabels" property="PartyContactTelephoneMissingError"/></not-empty>
        </process>
        <process field="billToExtension"><copy to-field="extension"/></process>
    </simple-map-processor>

</simple-map-processors>
