<?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"
        xsi:noNamespaceSchemaLocation="http://ofbiz.apache.org/dtds/simple-methods-v2.xsd">

    <!-- FinAccountTrans Services -->
    <simple-method method-name="postFinAccountTransToGl" short-description="Post a Financial Account Transaction to the General Ledger">
        <!-- NOTE: this is not yet complete -->
        <now-timestamp field="nowTimestamp"/>
        <entity-one entity-name="FinAccountTrans" value-field="finAccountTrans"/>
        <set field="finAccountId" from-field="finAccountTrans.finAccountId"/>
        <entity-one entity-name="FinAccount" value-field="finAccount"/>
        <set field="organizationPartyId" from-field="finAccount.organizationPartyId"/>

        <if-not-empty field="finAccount.postToGlAccountId">
            <set field="glAccountId" from-field="finAccount.postToGlAccountId"/>
            <else>
                <entity-one entity-name="FinAccountTypeGlAccount" value-field="finAccountTypeGlAccount" auto-field-map="false">
                    <field-map field-name="organizationPartyId"/>
                    <field-map field-name="finAccountTypeId" from-field="finAccount.finAccountTypeId"/>
                </entity-one>
                <if-not-empty field="finAccountTypeGlAccount">
                    <set field="glAccountId" from-field="finAccountTypeGlAccount.glAccountId"/>
                </if-not-empty>
            </else>
        </if-not-empty>

        <!-- set values for AcctgTrans -->
        <set field="quickCreateAcctgTransAndEntries.finAccountTransId" from-field="parameters.finAccountTransId"/>
        <set field="quickCreateAcctgTransAndEntries.transactionDate" from-field="nowTimestamp"/>
        <set field="quickCreateAcctgTransAndEntries.glFiscalTypeId" value="ACTUAL"/>
        <set field="quickCreateAcctgTransAndEntries.partyId" from-field="finAccountTrans.partyId"/>
        <set field="quickCreateAcctgTransAndEntries.isPosted" value="N"/>
        
        <!-- set values for AcctgTransEntry -->
        <set field="quickCreateAcctgTransAndEntries.organizationPartyId" from-field="finAccount.organizationPartyId"/>
        <set field="quickCreateAcctgTransAndEntries.amount" from-field="finAccountTrans.amount"/>
        <set field="quickCreateAcctgTransAndEntries.acctgTransEntryTypeId" value="_NA_"/>

        <!-- Find the other side to post to/from -
            if payment directory to account do from Payment;
            if from account refill product purchase pull from special account where those funds wait;
            if purchase on account, balance like bank account received or something -->
        <if>
            <condition><if-compare field="finAccountTrans.finAccountTransTypeId" operator="equals" value="DEPOSIT"/></condition>
            <then>
                <!-- TODO: somehow check to see if the deposit was not from a product, or didn't get into the general CUSTOMER CREDITS 213000 account -->
                <!--
                    Handle the case where a product is purchased to deposit to account.
                    The Product should be setup so that funds go to the general CUSTOMER CREDITS account, 213000.
                    This will simply transfer from that account to the configured account above.
                -->
                <set field="quickCreateAcctgTransAndEntries.creditGlAccountId" from-field="parameters.glAccountId"/>
                <set field="quickCreateAcctgTransAndEntries.debitGlAccountId" from-field="glAccountId"/>
                <set field="quickCreateAcctgTransAndEntries.acctgTransTypeId" value="RECEIPT"/>
            </then>
            <else-if>
                <condition><if-compare field="finAccountTrans.finAccountTransTypeId" operator="equals" value="WITHDRAWAL"/></condition>
                <then>
                    <!-- TODO: somehow determine if this is an order placed against the account or some other type of withdrawal -->
                    <!-- TODO: handle order placed against (paid for with) the account -->

                    <set field="quickCreateAcctgTransAndEntries.debitGlAccountId" from-field="glAccountId"/>
                    <set field="quickCreateAcctgTransAndEntries.creditGlAccountId" from-field="parameters.glAccountId"/>
                    <set field="quickCreateAcctgTransAndEntries.acctgTransTypeId" value="PAYMENT_ACCTG_TRANS"/>
                </then>
            </else-if>
            <else-if>
                <condition><if-compare field="finAccountTrans.finAccountTransTypeId" operator="equals" value="ADJUSTMENT"/></condition>
                <then>
                    <!-- if positive will go to one account for write-off, if negative will go to another account for a fee -->
                    <!-- these will reverse depending on positive/negative amount -->
                    <if-compare field="finAccountTrans.amount" operator="less" value="0">
                        <set field="quickCreateAcctgTransAndEntries.debitGlAccountId" from-field="parameters.glAccountId"/>
                        <set field="quickCreateAcctgTransAndEntries.creditGlAccountId" from-field="glAccountId"/>
                        <set field="quickCreateAcctgTransAndEntries.acctgTransTypeId" value="OUTGOING_PAYMENT"/>
                    <else>
                        <set field="quickCreateAcctgTransAndEntries.creditGlAccountId" from-field="parameters.glAccountId"/>
                        <set field="quickCreateAcctgTransAndEntries.debitGlAccountId" from-field="glAccountId"/>
                        <set field="quickCreateAcctgTransAndEntries.acctgTransTypeId" value="INCOMING_PAYMENT"/>
                    </else>
                    </if-compare>
                </then>
            </else-if>
        </if>

        <!-- Make sure we have the glAccountId, glAccountIdOffset, organizationPartyId -->
        <if-empty field="quickCreateAcctgTransAndEntries.debitGlAccountId">
            <set field="creditDebit" value="Debit"/>
            <set field="requiredField" value="glAccountId"/>
            <add-error>
                <fail-property resource="AccountingErrorUiLabels" property="AccountingFinAccountCannotPost"/>
            </add-error>
        </if-empty>
        <if-empty field="quickCreateAcctgTransAndEntries.creditGlAccountId">
            <set field="creditDebit" value="credit"/>
            <set field="requiredField" value="glAccountId"/>
            <add-error>
                <fail-property resource="AccountingErrorUiLabels" property="AccountingFinAccountCannotPost"/>
            </add-error>
        </if-empty>
        <if-empty field="organizationPartyId">
            <set field="creditDebit" value=""/>
            <set field="requiredField" value="organizationPartyId"/>
            <add-error>
                <fail-property resource="AccountingErrorUiLabels" property="AccountingFinAccountCannotPost"/>
            </add-error>
        </if-empty>
        <check-errors/>
        <call-service service-name="quickCreateAcctgTransAndEntries" in-map-name="quickCreateAcctgTransAndEntries" include-user-login="true"/>
    </simple-method>
</simple-methods>
