Author: jacopoc
Date: Mon Dec 10 02:20:07 2007
New Revision: 602841
URL: http://svn.apache.org/viewvc?rev=602841&view=rev
Log:
Enhanced the account type/id mapping service to support the upcoming posting
services for payment, payment applications and invoices.
Modified:
ofbiz/trunk/applications/accounting/script/org/ofbiz/accounting/ledger/GeneralLedgerServices.xml
ofbiz/trunk/applications/accounting/servicedef/services_ledger.xml
Modified:
ofbiz/trunk/applications/accounting/script/org/ofbiz/accounting/ledger/GeneralLedgerServices.xml
URL:
http://svn.apache.org/viewvc/ofbiz/trunk/applications/accounting/script/org/ofbiz/accounting/ledger/GeneralLedgerServices.xml?rev=602841&r1=602840&r2=602841&view=diff
==============================================================================
---
ofbiz/trunk/applications/accounting/script/org/ofbiz/accounting/ledger/GeneralLedgerServices.xml
(original)
+++
ofbiz/trunk/applications/accounting/script/org/ofbiz/accounting/ledger/GeneralLedgerServices.xml
Mon Dec 10 02:20:07 2007
@@ -310,21 +310,17 @@
<!-- if the glAccountId is empty, but we have a
glAccountTypeId, then we will determine the
correct glAccountId from the gl setup settings -->
<if-empty field-name="acctgTransEntry.glAccountId">
- <if-not-empty field-name="acctgTransEntry.glAccountTypeId">
- <clear-field
field-name="getGlAccountFromAccountTypeInMap"/>
- <!-- if this is an inventory variance pass the
glAccountTypeId as the varianceReasonId, it will be used to lookup the account
id in the VarianceReasonGlAccount entity -->
- <if-compare field-name="parameters.acctgTransTypeId"
operator="equals" value="ITEM_VARIANCE_ACCTG_">
- <set
field="getGlAccountFromAccountTypeInMap.varianceReasonId"
from-field="acctgTransEntry.glAccountTypeId"/>
- </if-compare>
- <if-not-empty field-name="acctgTransEntry.productId">
- <set
field="getGlAccountFromAccountTypeInMap.productId"
from-field="acctgTransEntry.productId"/>
- </if-not-empty>
- <set
field="getGlAccountFromAccountTypeInMap.glAccountTypeId"
from-field="acctgTransEntry.glAccountTypeId"/>
- <set
field="getGlAccountFromAccountTypeInMap.organizationPartyId"
from-field="acctgTransEntry.organizationPartyId"/>
- <call-service
service-name="getGlAccountFromAccountType"
in-map-name="getGlAccountFromAccountTypeInMap">
- <result-to-field result-name="glAccountId"
field-name="acctgTransEntry.glAccountId"/>
- </call-service>
- </if-not-empty>
+ <clear-field
field-name="getGlAccountFromAccountTypeInMap"/>
+ <set
field="getGlAccountFromAccountTypeInMap.organizationPartyId"
from-field="acctgTransEntry.organizationPartyId"/>
+ <set
field="getGlAccountFromAccountTypeInMap.acctgTransTypeId"
from-field="parameters.acctgTransTypeId"/>
+ <set
field="getGlAccountFromAccountTypeInMap.glAccountTypeId"
from-field="acctgTransEntry.glAccountTypeId"/>
+ <set
field="getGlAccountFromAccountTypeInMap.debitCreditFlag"
from-field="acctgTransEntry.debitCreditFlag"/>
+ <set field="getGlAccountFromAccountTypeInMap.productId"
from-field="acctgTransEntry.productId"/>
+ <set field="getGlAccountFromAccountTypeInMap.invoiceId"
from-field="parameters.invoiceId"/>
+ <set field="getGlAccountFromAccountTypeInMap.paymentId"
from-field="parameters.paymentId"/>
+ <call-service service-name="getGlAccountFromAccountType"
in-map-name="getGlAccountFromAccountTypeInMap">
+ <result-to-field result-name="glAccountId"
field-name="acctgTransEntry.glAccountId"/>
+ </call-service>
</if-empty>
<if-empty field-name="acctgTransEntry.origAmount">
<set field="acctgTransEntry.origAmount"
from-field="acctgTransEntry.amount"/>
@@ -382,17 +378,63 @@
<!-- Miscellaneous services for product and inventory -->
- <simple-method method-name="getGlAccountFromAccountType"
short-description="Look up a GlAccountId from GlAccountTypeId">
- <if-not-empty field-name="parameters.varianceReasonId">
+ <simple-method method-name="getGlAccountFromAccountType"
short-description="Look up a GlAccountId from GlAccountTypeId">
+ <!-- if this is an inventory variance then the glAccountTypeId
contains the varianceReasonId; the value is used to lookup the account id in
the VarianceReasonGlAccount entity -->
+ <if-compare field-name="parameters.acctgTransTypeId" operator="equals"
value="ITEM_VARIANCE_ACCTG_">
<entity-one entity-name="VarianceReasonGlAccount"
value-name="varianceReasonGlAccount">
<field-map field-name="organizationPartyId"
env-name="parameters.organizationPartyId"/>
- <field-map field-name="varianceReasonId"
env-name="parameters.varianceReasonId"/>
+ <field-map field-name="varianceReasonId"
env-name="parameters.glAccountTypeId"/>
</entity-one>
<if-not-empty field-name="varianceReasonGlAccount.glAccountId">
<field-to-result
field-name="varianceReasonGlAccount.glAccountId" result-name="glAccountId"/>
</if-not-empty>
<return/>
- </if-not-empty>
+ </if-compare>
+ <if>
+ <condition>
+ <and>
+ <or>
+ <and>
+ <if-compare
field-name="parameters.acctgTransTypeId" operator="equals"
value="OUTGOING_PAYMENT"/>
+ <if-compare
field-name="parameters.debitCreditFlag" operator="equals" value="C"/>
+ </and>
+ <and>
+ <if-compare
field-name="parameters.acctgTransTypeId" operator="equals"
value="INCOMING_PAYMENT"/>
+ <if-compare
field-name="parameters.debitCreditFlag" operator="equals" value="D"/>
+ </and>
+ </or>
+ <not><if-empty field-name="parameters.paymentId"/></not>
+ </and>
+ </condition>
+ <then>
+ <entity-one entity-name="Payment" value-name="payment"/>
+ <get-related-one value-name="payment"
relation-name="PaymentMethod" to-value-name="paymentMethod"/>
+ <if-not-empty field-name="paymentMethod.glAccountId">
+ <field-to-result field-name="paymentMethod.glAccountId"
result-name="glAccountId"/>
+ <return/>
+ </if-not-empty>
+ <if-compare field-name="payment.paymentMethodTypeId"
operator="equals" value="CREDIT_CARD">
+ <get-related-one value-name="payment"
relation-name="CreditCard" to-value-name="creditCard"/>
+ <entity-one entity-name="CreditCardTypeGlAccount"
value-name="creditCardTypeGlAccount">
+ <field-map field-name="cardType"
env-name="creditCard.cardType"/>
+ <field-map field-name="organizationPartyId"
env-name="parameters.organizationPartyId"/>
+ </entity-one>
+ <if-not-empty
field-name="creditCardTypeGlAccount.glAccountId">
+ <field-to-result
field-name="creditCardTypeGlAccount.glAccountId" result-name="glAccountId"/>
+ <return/>
+ </if-not-empty>
+ </if-compare>
+ <entity-one entity-name="PaymentMethodTypeGlAccount"
value-name="paymentMethodTypeGlAccount">
+ <field-map field-name="paymentMethodTypeId"
env-name="payment.paymentMethodTypeId"/>
+ <field-map field-name="organizationPartyId"
env-name="parameters.organizationPartyId"/>
+ </entity-one>
+ <if-not-empty
field-name="paymentMethodTypeGlAccount.glAccountId">
+ <field-to-result
field-name="paymentMethodTypeGlAccount.glAccountId" result-name="glAccountId"/>
+ <return/>
+ </if-not-empty>
+ <return/>
+ </then>
+ </if>
<if-not-empty field-name="parameters.productId">
<entity-one entity-name="ProductGlAccount"
value-name="lookedUpValue" use-cache="true"/>
<!-- if nothing found look if the parameters.productId is member
of any ProductCategory in ProductCategoryGlAccount -->
@@ -414,6 +456,52 @@
</iterate>
</if-empty>
</if-not-empty>
+ <if>
+ <condition>
+ <and>
+ <or>
+ <and>
+ <if-compare
field-name="parameters.acctgTransTypeId" operator="equals"
value="PURCHASE_INVOICE"/>
+ <if-compare
field-name="parameters.debitCreditFlag" operator="equals" value="D"/>
+ </and>
+ <and>
+ <if-compare
field-name="parameters.acctgTransTypeId" operator="equals"
value="SALES_INVOICE"/>
+ <if-compare
field-name="parameters.debitCreditFlag" operator="equals" value="C"/>
+ </and>
+ </or>
+ <not><if-empty field-name="parameters.invoiceId"/></not>
+ <not><if-empty
field-name="parameters.acctgTransTypeId"/></not>
+ </and>
+ </condition>
+ <then>
+ <if-not-empty field-name="parameters.productId">
+ <entity-one entity-name="GlAccountTypeDefault"
value-name="glAccountTypeDefault" use-cache="true">
+ <field-map field-name="organizationPartyId"
env-name="parameters.organizationPartyId"/>
+ <field-map field-name="glAccountTypeId"
value="SALES_ACCOUNT"/>
+ </entity-one>
+ <if-not-empty
field-name="glAccountTypeDefault.glAccountId">
+ <field-to-result
field-name="glAccountTypeDefault.glAccountId" result-name="glAccountId"/>
+ <return/>
+ </if-not-empty>
+ </if-not-empty>
+ <entity-one entity-name="InvoiceItemTypeGlAccount"
value-name="invoiceItemTypeGlAccount">
+ <field-map field-name="invoiceItemTypeId"
env-name="parameters.acctgTransTypeId"/>
+ <field-map field-name="organizationPartyId"
env-name="parameters.organizationPartyId"/>
+ </entity-one>
+ <if-not-empty
field-name="invoiceItemTypeGlAccount.glAccountId">
+ <field-to-result
field-name="invoiceItemTypeGlAccount.glAccountId" result-name="glAccountId"/>
+ <return/>
+ </if-not-empty>
+ <entity-one entity-name="InvoiceItemType"
value-name="invoiceItemType">
+ <field-map field-name="invoiceItemTypeId"
env-name="parameters.acctgTransTypeId"/>
+ </entity-one>
+ <if-not-empty field-name="invoiceItemType.defaultGlAccountId">
+ <field-to-result
field-name="invoiceItemType.defaultGlAccountId" result-name="glAccountId"/>
+ <return/>
+ </if-not-empty>
+ <return/>
+ </then>
+ </if>
<!-- if nothing found or if no such parameters were passed
(lookedUpValue empty in both cases), try GlAccountTypeDefault -->
<if-empty field-name="lookedUpValue.glAccountId">
Modified: ofbiz/trunk/applications/accounting/servicedef/services_ledger.xml
URL:
http://svn.apache.org/viewvc/ofbiz/trunk/applications/accounting/servicedef/services_ledger.xml?rev=602841&r1=602840&r2=602841&view=diff
==============================================================================
--- ofbiz/trunk/applications/accounting/servicedef/services_ledger.xml
(original)
+++ ofbiz/trunk/applications/accounting/servicedef/services_ledger.xml Mon Dec
10 02:20:07 2007
@@ -286,9 +286,11 @@
<description>Look up a GlAccountId first in ProductGlAccount by
productId and productGlAccountTypeId, if not found,
then in organizationPartyId and glAccountTypeId </description>
<attribute name="organizationPartyId" type="String" mode="IN"
optional="false"/>
- <attribute name="glAccountTypeId" type="String" mode="IN"
optional="false"/>
+ <attribute name="glAccountTypeId" type="String" mode="IN"
optional="true"/>
+ <attribute name="acctgTransTypeId" type="String" mode="IN"
optional="true"/>
+ <attribute name="debitCreditFlag" type="String" mode="IN"
optional="true"/>
<attribute name="productId" type="String" mode="IN" optional="true"/>
- <attribute name="varianceReasonId" type="String" mode="IN"
optional="true"/>
+ <attribute name="paymentId" type="String" mode="IN" optional="true"/>
<attribute name="glAccountId" type="String" mode="OUT"
optional="true"/>
</service>
<service name="getInventoryItemOwner" default-entity-name="InventoryItem"
engine="simple"