Author: jonesde
Date: Mon Mar 26 20:44:30 2007
New Revision: 522728
URL: http://svn.apache.org/viewvc?view=rev&rev=522728
Log:
To help with integrating efforts and to get the FinAccount balance field
maintenance services in places committing all of this; note that the GL posting
service is NOT yet complete, but is benign right now and shouldn't interfere
with anything (ie it doesn't change anything in the database yet)
Added:
ofbiz/trunk/applications/accounting/script/org/ofbiz/accounting/finaccount/FinAccountGlPostServices.xml
(with props)
ofbiz/trunk/applications/accounting/servicedef/eecas.xml (with props)
Modified:
ofbiz/trunk/applications/accounting/script/org/ofbiz/accounting/finaccount/FinAccountServices.xml
ofbiz/trunk/applications/accounting/servicedef/secas.xml
ofbiz/trunk/applications/accounting/servicedef/services_finaccount.xml
Added:
ofbiz/trunk/applications/accounting/script/org/ofbiz/accounting/finaccount/FinAccountGlPostServices.xml
URL:
http://svn.apache.org/viewvc/ofbiz/trunk/applications/accounting/script/org/ofbiz/accounting/finaccount/FinAccountGlPostServices.xml?view=auto&rev=522728
==============================================================================
---
ofbiz/trunk/applications/accounting/script/org/ofbiz/accounting/finaccount/FinAccountGlPostServices.xml
(added)
+++
ofbiz/trunk/applications/accounting/script/org/ofbiz/accounting/finaccount/FinAccountGlPostServices.xml
Mon Mar 26 20:44:30 2007
@@ -0,0 +1,67 @@
+<?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://www.ofbiz.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 -->
+ <!-- NOTE: this will behave differently depending on how the
FinAccount is used, see comments on different GlAccounts for trans entries
below -->
+
+ <entity-one entity-name="FinAccountTrans"
value-name="finAccountTrans"/>
+ <set field="finAccountId" from-field="finAccountTrans.finAccountId"/>
+ <entity-one entity-name="FinAccount" value-name="finAccount"/>
+
+ <set field="organizationPartyId"
from-field="finAccount.organizationPartyId"/>
+
+ <!-- Figure out which GlAccount to post to using
finAccount.postToGlAccountId or if not specified then use
FinAccountTypeGlAccount -->
+ <if-not-empty field-name="finAccount.postToGlAccountId">
+ <set field="glAccountId"
from-field="finAccount.postToGlAccountId"/>
+
+ <else>
+ <entity-one entity-name="FinAccountTypeGlAccount"
value-name="finAccountTypeGlAccount" auto-field-map="false">
+ <field-map field-name="organizationPartyId"/>
+ <field-map field-name="finAccountTypeId"
env-name="finAccount.finAccountTypeId"/>
+ </entity-one>
+ <if-not-empty field-name="finAccountTypeGlAccount">
+ <set field="glAccountId"
from-field="finAccountTypeGlAccount.glAccountId"/>
+ </if-not-empty>
+ </else>
+ </if-not-empty>
+
+ <!-- Make sure we have the organizationPartyId and the glAccountId -->
+ <if-empty field-name="glAccountId">
+ <add-error><fail-message message="Cannot post FinAccountTrans with
ID [${parameters.finAccountTransId}] to GL, could not find
glAccountId"/></add-error>
+ </if-empty>
+ <if-empty field-name="organizationPartyId">
+ <add-error><fail-message message="Cannot post FinAccountTrans with
ID [${parameters.finAccountTransId}] to GL, could not find
organizationPartyId"/></add-error>
+ </if-empty>
+ <check-errors/>
+
+ <!-- TODO: 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 acount received or
something -->
+
+ <!-- TODO: Post the finAccountTrans.amount to the given GlAccount -->
+
+ </simple-method>
+</simple-methods>
Propchange:
ofbiz/trunk/applications/accounting/script/org/ofbiz/accounting/finaccount/FinAccountGlPostServices.xml
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
ofbiz/trunk/applications/accounting/script/org/ofbiz/accounting/finaccount/FinAccountGlPostServices.xml
------------------------------------------------------------------------------
svn:keywords = "Date Rev Author URL Id"
Propchange:
ofbiz/trunk/applications/accounting/script/org/ofbiz/accounting/finaccount/FinAccountGlPostServices.xml
------------------------------------------------------------------------------
svn:mime-type = text/xml
Modified:
ofbiz/trunk/applications/accounting/script/org/ofbiz/accounting/finaccount/FinAccountServices.xml
URL:
http://svn.apache.org/viewvc/ofbiz/trunk/applications/accounting/script/org/ofbiz/accounting/finaccount/FinAccountServices.xml?view=diff&rev=522728&r1=522727&r2=522728
==============================================================================
---
ofbiz/trunk/applications/accounting/script/org/ofbiz/accounting/finaccount/FinAccountServices.xml
(original)
+++
ofbiz/trunk/applications/accounting/script/org/ofbiz/accounting/finaccount/FinAccountServices.xml
Mon Mar 26 20:44:30 2007
@@ -113,4 +113,62 @@
</if-empty>
<store-value value-name="finAccountAuth"/>
</simple-method>
+
+ <!-- Some methods to maintain FinAccount.actualBalance and
FinAccount.availableBalance -->
+ <simple-method method-name="updateFinAccountBalancesFromTrans"
short-description="">
+ <if-not-empty field-name="parameters.finAccountId">
+ <set field="finAccountId" from-field="parameters.finAccountId"/>
+ <else>
+ <entity-one entity-name="FinAccountTrans"
value-name="mainFinAccountTrans"/>
+ <set field="finAccountId"
from-field="mainFinAccountTrans.finAccountId"/>
+ </else>
+ </if-not-empty>
+
+ <call-simple-method
method-name="inlineUpdateFinAccountActualAndAvailableBalance"/>
+ </simple-method>
+ <simple-method method-name="updateFinAccountBalancesFromAuth"
short-description="">
+ <if-not-empty field-name="parameters.finAccountId">
+ <set field="finAccountId" from-field="parameters.finAccountId"/>
+ <else>
+ <entity-one entity-name="FinAccountAuth"
value-name="mainFinAccountAuth"/>
+ <set field="finAccountId"
from-field="mainFinAccountAuth.finAccountId"/>
+ </else>
+ </if-not-empty>
+
+ <call-simple-method
method-name="inlineUpdateFinAccountActualAndAvailableBalance"/>
+ </simple-method>
+ <simple-method
method-name="inlineUpdateFinAccountActualAndAvailableBalance"
short-description="">
+ <!-- NOTE: finAccountId should always be in place -->
+ <!-- Get all of the records for the account from the database and sum
everything up again, make sure we don't have any errors propagated over time -->
+
+ <entity-condition entity-name="FinAccountTrans"
list-name="finAccountTransList">
+ <condition-expr field-name="finAccountId" env-name="finAccountId"/>
+ </entity-condition>
+ <iterate entry-name="finAccountTrans" list-name="finAccountTransList">
+ <calculate field-name="actualBalanceSum" type="BigDecimal">
+ <calcop operator="add" field-name="actualBalanceSum">
+ <calcop operator="get"
field-name="finAccountTrans.amount"/>
+ </calcop>
+ </calculate>
+ </iterate>
+
+ <!-- start with the actual balance, and subtract off
FinAccountAuth.amount -->
+ <set field="availableBalanceSum" from-field="actualBalanceSum"/>
+ <entity-condition entity-name="FinAccountAuth"
list-name="finAccountAuthList">
+ <condition-expr field-name="finAccountId" env-name="finAccountId"/>
+ </entity-condition>
+ <iterate entry-name="finAccountAuth" list-name="finAccountAuthList">
+ <calculate field-name="availableBalanceSum" type="BigDecimal">
+ <calcop operator="add" field-name="availableBalanceSum">
+ <calcop operator="negative"
field-name="finAccountAuth.amount"/>
+ </calcop>
+ </calculate>
+ </iterate>
+
+ <!-- Okay, now just store the results -->
+ <entity-one entity-name="FinAccount" value-name="finAccount"/>
+ <set field="finAccount.actualBalance" from-field="actualBalanceSum"/>
+ <set field="finAccount.availableBalance"
from-field="availableBalanceSum"/>
+ <store-value value-name="finAccount"/>
+ </simple-method>
</simple-methods>
Added: ofbiz/trunk/applications/accounting/servicedef/eecas.xml
URL:
http://svn.apache.org/viewvc/ofbiz/trunk/applications/accounting/servicedef/eecas.xml?view=auto&rev=522728
==============================================================================
--- ofbiz/trunk/applications/accounting/servicedef/eecas.xml (added)
+++ ofbiz/trunk/applications/accounting/servicedef/eecas.xml Mon Mar 26
20:44:30 2007
@@ -0,0 +1,32 @@
+<?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.
+-->
+
+<entity-eca xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:noNamespaceSchemaLocation="http://www.ofbiz.org/dtds/entity-eca.xsd">
+
+ <!-- To maintain FinAccount.actualBalance and FinAccount.availableBalance
-->
+ <eca entity="FinAccountTrans" operation="create-store" event="return">
+ <action service="updateFinAccountBalancesFromTrans" mode="sync"/>
+ </eca>
+ <!-- To maintain FinAccount.availableBalance -->
+ <eca entity="FinAccountAuth" operation="create-store" event="return">
+ <action service="updateFinAccountBalancesFromAuth" mode="sync"/>
+ </eca>
+</entity-eca>
Propchange: ofbiz/trunk/applications/accounting/servicedef/eecas.xml
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: ofbiz/trunk/applications/accounting/servicedef/eecas.xml
------------------------------------------------------------------------------
svn:keywords = "Date Rev Author URL Id"
Propchange: ofbiz/trunk/applications/accounting/servicedef/eecas.xml
------------------------------------------------------------------------------
svn:mime-type = text/xml
Modified: ofbiz/trunk/applications/accounting/servicedef/secas.xml
URL:
http://svn.apache.org/viewvc/ofbiz/trunk/applications/accounting/servicedef/secas.xml?view=diff&rev=522728&r1=522727&r2=522728
==============================================================================
--- ofbiz/trunk/applications/accounting/servicedef/secas.xml (original)
+++ ofbiz/trunk/applications/accounting/servicedef/secas.xml Mon Mar 26
20:44:30 2007
@@ -110,4 +110,9 @@
<action service="sampleInvoiceAffiliateCommission" mode="sync"/>
</eca>
-->
+
+ <!-- FinAccountTrans SECAs -->
+ <eca service="createFinAccountTrans" event="commit">
+ <action service="postFinAccountTransToGl" mode="sync"/>
+ </eca>
</service-eca>
Modified: ofbiz/trunk/applications/accounting/servicedef/services_finaccount.xml
URL:
http://svn.apache.org/viewvc/ofbiz/trunk/applications/accounting/servicedef/services_finaccount.xml?view=diff&rev=522728&r1=522727&r2=522728
==============================================================================
--- ofbiz/trunk/applications/accounting/servicedef/services_finaccount.xml
(original)
+++ ofbiz/trunk/applications/accounting/servicedef/services_finaccount.xml Mon
Mar 26 20:44:30 2007
@@ -42,14 +42,29 @@
<description>Delete a Financial Account</description>
<auto-attributes mode="IN" optional="false" include="pk"/>
</service>
-
+ <service name="updateFinAccountBalancesFromTrans" engine="simple"
+ location="org/ofbiz/accounting/finaccount/FinAccountServices.xml"
invoke="updateFinAccountActualBalanceFromTrans">
+ <description>Update FinAccount.actualBalance and
FinAccount.availableBalance based on a new FinAccountTrans; meant to be called
as an EECA as it is for data maintenance</description>
+ <attribute name="finAccountTransId" type="String" mode="IN"
optional="false"/>
+ </service>
+ <service name="updateFinAccountBalancesFromAuth" engine="simple"
+ location="org/ofbiz/accounting/finaccount/FinAccountServices.xml"
invoke="updateFinAccountBalancesFromAuth">
+ <description>Update FinAccount.availableBalance based on a new
FinAccountAuth; meant to be called as an EECA as it is for data
maintenance</description>
+ <attribute name="finAccountAuthId" type="String" mode="IN"
optional="false"/>
+ </service>
+
<service name="createFinAccountTrans" engine="simple"
default-entity-name="FinAccountTrans"
location="org/ofbiz/accounting/finaccount/FinAccountServices.xml"
invoke="createFinAccountTrans">
<description>Create a new Financial Account Transaction. Will use
current timestamp for entryDate and trasanctionDate if none is
provided.</description>
<auto-attributes mode="IN" optional="true" include="nonpk"/>
<auto-attributes mode="OUT" optional="false" include="pk"/>
</service>
-
+ <service name="postFinAccountTransToGl" engine="simple"
+
location="org/ofbiz/accounting/finaccount/FinAccountGlPostServices.xml"
invoke="postFinAccountTransToGl">
+ <description>Post a Financial Account Transaction to the General
Ledger; meant to be called as an SECA</description>
+ <attribute name="finAccountTransId" type="String" mode="IN"
optional="false"/>
+ </service>
+
<service name="createFinAccountRole" engine="simple"
default-entity-name="FinAccountRole"
location="org/ofbiz/accounting/finaccount/FinAccountServices.xml"
invoke="createFinAccountRole">
<description>Create a new Financial Account Role</description>
@@ -57,31 +72,29 @@
<auto-attributes mode="IN" optional="false" include="pk"/>
<override name="fromDate" optional="true"/>
</service>
-
<service name="updateFinAccountRole" engine="simple"
default-entity-name="FinAccountRole"
location="org/ofbiz/accounting/finaccount/FinAccountServices.xml"
invoke="updateFinAccountRole">
<description>Update a Financial Account Role</description>
<auto-attributes mode="IN" optional="true" include="nonpk"/>
<auto-attributes mode="IN" optional="false" include="pk"/>
</service>
-
<service name="deleteFinAccountRole" engine="simple"
default-entity-name="FinAccountRole"
location="org/ofbiz/accounting/finaccount/FinAccountServices.xml"
invoke="deleteFinAccountRole">
<description>Remove a Financial Account Role</description>
<auto-attributes mode="IN" optional="false" include="pk"/>
</service>
- <service name="createFinAccountAuth" engine="simple"
default-entity-name="FinAccountAuth"
+ <service name="createFinAccountAuth" engine="simple"
default-entity-name="FinAccountAuth"
location="org/ofbiz/accounting/finaccount/FinAccountServices.xml"
invoke="createFinAccountAuth">
<description>Lower level service for creating authorization against a
fin account. Will use current time for authorizationDate and thruDate if not
supplied.</description>
<auto-attributes mode="IN" optional="true" include="nonpk"/>
<auto-attributes mode="OUT" optional="false" include="pk"/>
</service>
- <service name="expireFinAccountAuth" engine="simple"
default-entity-name="FinAccountAuth"
+ <service name="expireFinAccountAuth" engine="simple"
default-entity-name="FinAccountAuth"
location="org/ofbiz/accounting/finaccount/FinAccountServices.xml"
invoke="expireFinAccountAuth">
<description>Expires a fin account authorization. Will use current
time if no time is supplied in parameter</description>
- <attribute type="String" mode="IN" name="finAccountAuthId"
optional="false"/>
- <attribute type="Timestamp" mode="IN" name="expireDateTime"
optional="true"/>
+ <attribute name="finAccountAuthId" type="String" mode="IN"
optional="false"/>
+ <attribute name="expireDateTime" type="Timestamp" mode="IN"
optional="true"/>
</service>
<!-- these services use the product store's fin account settings -->