| <?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"> |
| |
| <!-- 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> |