<?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="migrateStatusToGlReconciliation" short-description="Migrate statusId to GlReconciliation entity">
        <entity-condition entity-name="GlReconciliation" list="glReconciliationList">
            <use-iterator/>
        </entity-condition>
        <iterate list="glReconciliationList" entry="glReconciliation">
            <if-empty field="glReconciliation.statusId">
                <if-empty field="glReconciliation.reconciledBalance">
                    <set field="glReconciliation.statusId" value="GLREC_CREATED"/>
                <else>
                    <set field="glReconciliation.statusId" value="GLREC_RECONCILED"/>
                </else>
                </if-empty>
                <store-value value-field="glReconciliation"/>
            </if-empty>
        </iterate>
    </simple-method>

    <simple-method method-name="migrateStatusToFinAccountTrans" short-description="Migrate statusId to FinAccountTrans entity">
        <entity-condition entity-name="FinAccountTrans" list="finAccountTransList">
            <use-iterator/>
        </entity-condition>    
        <iterate list="finAccountTransList" entry="finAccountTrans">
            <if-empty field="finAccountTrans.statusId">
                <set field="finAccountTrans.statusId" value="FINACT_TRNS_APPROVED"/>
                <store-value value-field="finAccountTrans"/>
            </if-empty>
        </iterate>
    </simple-method>

    <simple-method method-name="migrateFixedAssetMaintMeter" short-description="Copy FixedAssetMaintMeter To FixedAssetMeter">
        <entity-condition entity-name="FixedAssetMaintMeter" list="maintMeterList"/>
        <iterate list="maintMeterList" entry="maintMeter">
            <make-value value-field="newEntity" entity-name="FixedAssetMeter"/>
            <set-pk-fields map="maintMeter" value-field="newEntity"/>
            <set-nonpk-fields map="maintMeter" value-field="newEntity"/>
            <set field="newEntity.readingDate" from-field="maintMeter.createdStamp"/>
            <entity-one entity-name="FixedAssetMeter" value-field="lookedUpValue" auto-field-map="false">
                <field-map field-name="fixedAssetId" from-field="newEntity.fixedAssetId"/>
                <field-map field-name="productMeterTypeId" from-field="newEntity.productMeterTypeId"/>
                <field-map field-name="readingDate" from-field="newEntity.readingDate"/>
            </entity-one>
            <if-empty field="lookedUpValue">
                <create-value value-field="newEntity"/>
                <check-errors/>
            </if-empty>
        </iterate>
    </simple-method>
 
    <simple-method method-name="migrateAgreementWorkEffortAppl" short-description="Copy AgreementWorkEffortAppl To AgreementWorkEffortApplic">
        <entity-condition entity-name="OldAgreementWorkEffortAppl" list="agreementWorkEffortApplList"/>
        <iterate list="agreementWorkEffortApplList" entry="agreementWorkEffortAppl">
            <make-value value-field="newEntity" entity-name="AgreementWorkEffortApplic"/>
            <set-pk-fields map="agreementWorkEffortAppl" value-field="newEntity"/>
            <create-value value-field="newEntity"/>
            <check-errors/>
        </iterate>
    </simple-method>        
</simple-methods>
