You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ofbiz.apache.org by ap...@apache.org on 2009/08/12 17:42:23 UTC

svn commit: r803564 - in /ofbiz/trunk/applications/accounting/script/org/ofbiz/accounting: finaccount/FinAccountServices.xml ledger/AcctgTransServices.xml

Author: apatel
Date: Wed Aug 12 15:42:23 2009
New Revision: 803564

URL: http://svn.apache.org/viewvc?rev=803564&view=rev
Log:
Patch for marking the status of AcctgTransEntries as Reconciled when Financial Account reconciled. Patch from OFBIZ-2816.
Thanks Chirag and Sumit for help.

Modified:
    ofbiz/trunk/applications/accounting/script/org/ofbiz/accounting/finaccount/FinAccountServices.xml
    ofbiz/trunk/applications/accounting/script/org/ofbiz/accounting/ledger/AcctgTransServices.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?rev=803564&r1=803563&r2=803564&view=diff
==============================================================================
--- ofbiz/trunk/applications/accounting/script/org/ofbiz/accounting/finaccount/FinAccountServices.xml (original)
+++ ofbiz/trunk/applications/accounting/script/org/ofbiz/accounting/finaccount/FinAccountServices.xml Wed Aug 12 15:42:23 2009
@@ -693,7 +693,6 @@
                 <set field="quickCreateAcctgTransAndEntriesMap.acctgTransTypeId" value="OUTGOING_PAYMENT"/>
             </else>
             </if-compare>
-            <set field="quickCreateAcctgTransAndEntriesMap.reconcileStatusId" value="AES_RECONCILED"/>
             <set field="quickCreateAcctgTransAndEntriesMap.isPosted" value="Y"/>
             <if-compare field="parameters.debitCreditFlag" operator="equals" value="D">
                 <set field="quickCreateAcctgTransAndEntriesMap.debitGlAccountId" from-field="parameters.glAccountId"/>
@@ -703,7 +702,18 @@
                 <set field="quickCreateAcctgTransAndEntriesMap.creditGlAccountId" from-field="parameters.glAccountId"/>
             </else>    
             </if-compare>
-            <call-service service-name="quickCreateAcctgTransAndEntries" in-map-name="quickCreateAcctgTransAndEntriesMap"/>
+            <call-service service-name="quickCreateAcctgTransAndEntries" in-map-name="quickCreateAcctgTransAndEntriesMap">
+                <result-to-field result-name="acctgTransId"/>
+            </call-service>
+            <entity-and entity-name="AcctgTransEntry" list="acctgTransEntries">
+                <field-map field-name="acctgTransId"/>
+            </entity-and>
+            <iterate list="acctgTransEntries" entry="acctgTransEntry">
+                <set-service-fields service-name="createGlReconciliationEntry" map="acctgTransEntry" to-map="createGlReconciliationEntryMap"/>
+                <set field="createGlReconciliationEntryMap.glReconciliationId" from-field="finAccountTrans.glReconciliationId"/>
+                <set field="createGlReconciliationEntryMap.reconciledAmount" from-field="acctgTransEntry.amount"/>
+                <call-service service-name="createGlReconciliationEntry" in-map-name="createGlReconciliationEntryMap"/>
+            </iterate>
         <else>
             <property-to-field property="AccountingNotAdjustmentFinAccountTrans" resource="AccountingUiLabels" field="errorMessage"/>
             <field-to-result field="errorMessage" result-name="errorMessage"/>
@@ -716,10 +726,9 @@
         <set field="finAccountTrans" from-field="parameters.finAccountTrans"/>
         <get-related-one relation-name="FinAccount" value-field="finAccountTrans" to-value-field="finAccount"/>
         <if-compare field="finAccountTrans.finAccountTransTypeId" operator="equals" value="DEPOSIT">
-            <set field="finAccountTrans" from-field="parameters.finAccountTrans"/>
             <if-empty field="finAccountTrans.paymentId">
                 <entity-and entity-name="Payment" list="payments">
-                    <field-map field-name="finAccountTransId" from-field="finAccountTrans.finAccountTransid"/>
+                    <field-map field-name="finAccountTransId" from-field="finAccountTrans.finAccountTransId"/>
                 </entity-and>
             <else>
                 <get-related-one relation-name="Payment" value-field="finAccountTrans" to-value-field="payment"/>
@@ -728,32 +737,35 @@
             </if-empty>
             <iterate list="payments" entry="payment">
                 <clear-field field="createAcctgTransAndEntriesMap"/>
-                <set field="partyIdTo" from-field="payment.partyIdTo"/>
-                <set field="partyIdFrom" from-field="payment.partyIdFrom"/>
                 <get-related relation-name="AcctgTrans" list="acctgTransList" value-field="payment"/>
-                <iterate list="acctgTransList" entry="acctgTrans">
-                    <get-related relation-name="AcctgTransEntry" list="acctgTransEntries" value-field="acctgTrans"/>
-                    <set-service-fields service-name="createAcctgTransAndEntries" map="acctgTrans" to-map="createAcctgTransAndEntriesMap"/>
-                </iterate>
-                <clear-field field="createAcctgTransAndEntries.acctgTransId"/>
-                <set field="createAcctgTransAndEntries.transactionDate" from-field="nowTimestamp"/>
-                <set field="createAcctgTransAndEntries.postedDate" from-field="nowTimestamp"/>
+                <first-from-list list="acctgTransList" entry="acctgTrans"/>
+                <set-service-fields service-name="createAcctgTransAndEntries" map="acctgTrans" to-map="createAcctgTransAndEntriesMap"/>
                 <set field="entryAmount" type="BigDecimal" value="0"/>
-                <iterate list="acctgTransEntries" entry="oldAcctgTransEntry">
-                    <if-compare field="oldAcctgTransEntry.debitCreditFlag" operator="equals" value="D">
-                        <make-value value-field="newAcctgTransEntry" entity-name="AcctgTransEntry"/>
-                        <set field="newAcctgTransEntry.glAccountId" from-field="oldAcctgTransEntry.glAccountId"/>
-                        <set field="organizationPartyId" from-field="oldAcctgTransEntry.organizationPartyId"/>
-                        <set field="newAcctgTransEntry.organizationPartyId" from-field="organizationPartyId"/>
-                        <set field="newAcctgTransEntry.partyId" from-field="oldAcctgTransEntry.ownerPartyId"/>
-                        <set field="newAcctgTransEntry.amount" from-field="oldAcctgTransEntry.amount"/>
-                        <set field="newAcctgTransEntry.acctgTransEntryTypeId" from-field="oldAcctgTransEntry.acctgTransEntryTypeId"/>
-                        <set field="newAcctgTransEntry.debitCreditFlag" value="C"/>
-                        <set field="newAcctgTransEntry.reconcileStatusId" value="AES_RECONCILED"/>
-                        <set field="entryAmount" type="BigDecimal" value="${entryAmount + newAcctgTransEntry.amount}"/>
-                        <field-to-list field="newAcctgTransEntry" list="createAcctgTransAndEntriesMap.acctgTransEntries"/>
-                    </if-compare>
+                <iterate list="acctgTransList" entry="acctgTrans">
+                    <if-compare field="acctgTrans.acctgTransTypeId" operator="not-equals" value="PAYMENT_APPL">
+                        <get-related relation-name="AcctgTransEntry" list="acctgTransEntries" value-field="acctgTrans"/>
+                    </if-compare> 
+                    <iterate list="acctgTransEntries" entry="oldAcctgTransEntry">
+                        <if-compare field="oldAcctgTransEntry.debitCreditFlag" operator="equals" value="D">
+                            <make-value value-field="newAcctgTransEntry" entity-name="AcctgTransEntry"/>
+                            <set field="newAcctgTransEntry.glAccountId" from-field="oldAcctgTransEntry.glAccountId"/>
+                            <set field="organizationPartyId" from-field="oldAcctgTransEntry.organizationPartyId"/>
+                            <set field="newAcctgTransEntry.organizationPartyId" from-field="organizationPartyId"/>
+                            <set field="newAcctgTransEntry.partyId" from-field="oldAcctgTransEntry.ownerPartyId"/>
+                            <set field="newAcctgTransEntry.amount" from-field="oldAcctgTransEntry.amount"/>
+                            <set field="newAcctgTransEntry.acctgTransEntryTypeId" from-field="oldAcctgTransEntry.acctgTransEntryTypeId"/>
+                            <set field="newAcctgTransEntry.debitCreditFlag" value="C"/>
+                            <set field="entryAmount" type="BigDecimal" value="${entryAmount + newAcctgTransEntry.amount}"/>
+                            <field-to-list field="newAcctgTransEntry" list="createAcctgTransAndEntriesMap.acctgTransEntries"/>
+                        </if-compare>
+                        <set-service-fields service-name="updateAcctgTransEntry" map="oldAcctgTransEntry" to-map="updateAcctgTransEntryMap"/>
+                        <set field="updateAcctgTransEntryMap.reconcileStatusId" value="AES_RECONCILED"/>
+                        <call-service service-name="updateAcctgTransEntry" in-map-name="updateAcctgTransEntryMap"/>
+                    </iterate>
                 </iterate>
+                <clear-field field="createAcctgTransAndEntriesMap.acctgTransId"/>
+                <set field="createAcctgTransAndEntriesMap.transactionDate" from-field="nowTimestamp"/>
+                <set field="createAcctgTransAndEntriesMap.postedDate" from-field="nowTimestamp"/>
                 <make-value value-field="newAcctgTransEntry" entity-name="AcctgTransEntry"/>
                 <set field="newAcctgTransEntry.glAccountId" from-field="finAccount.postToGlAccountId"/>
                 <set field="newAcctgTransEntry.organizationPartyId" from-field="organizationPartyId"/>
@@ -761,9 +773,19 @@
                 <set field="newAcctgTransEntry.amount" from-field="entryAmount"/>
                 <set field="newAcctgTransEntry.acctgTransEntryTypeId" value="_NA_"/>
                 <set field="newAcctgTransEntry.debitCreditFlag" value="D"/>
-                <set field="newAcctgTransEntry.reconcileStatusId" value="AES_RECONCILED"/>
                 <field-to-list field="newAcctgTransEntry" list="createAcctgTransAndEntriesMap.acctgTransEntries"/>
-                <call-service service-name="createAcctgTransAndEntries" in-map-name="createAcctgTransAndEntriesMap"/>
+                <call-service service-name="createAcctgTransAndEntries" in-map-name="createAcctgTransAndEntriesMap">
+                    <result-to-field result-name="acctgTransId"/>
+                </call-service>
+                <entity-and entity-name="AcctgTransEntry" list="acctgTransEntries">
+                    <field-map field-name="acctgTransId"/>
+                </entity-and>
+                <iterate list="acctgTransEntries" entry="acctgTransEntry">
+                    <set-service-fields service-name="createGlReconciliationEntry" map="acctgTransEntry" to-map="createGlReconciliationEntryMap"/>
+                    <set field="createGlReconciliationEntryMap.glReconciliationId" from-field="finAccountTrans.glReconciliationId"/>
+                    <set field="createGlReconciliationEntryMap.reconciledAmount" from-field="acctgTransEntry.amount"/>
+                    <call-service service-name="createGlReconciliationEntry" in-map-name="createGlReconciliationEntryMap"/>
+                </iterate>
             </iterate>
         <else>
             <property-to-field property="AccountingNotDepositFinAccountTrans" resource="AccountingUiLabels" field="errorMessage"/>
@@ -777,10 +799,9 @@
         <set field="finAccountTrans" from-field="parameters.finAccountTrans"/>
         <get-related-one relation-name="FinAccount" value-field="finAccountTrans" to-value-field="finAccount"/>
         <if-compare field="finAccountTrans.finAccountTransTypeId" operator="equals" value="WITHDRAWAL">
-            <set field="finAccountTrans" from-field="parameters.finAccountTrans"/>
             <if-empty field="finAccountTrans.paymentId">
                 <entity-and entity-name="Payment" list="payments">
-                    <field-map field-name="finAccountTransId" from-field="finAccountTrans.finAccountTransid"/>
+                    <field-map field-name="finAccountTransId" from-field="finAccountTrans.finAccountTransId"/>
                 </entity-and>
             <else>
                 <get-related-one relation-name="Payment" value-field="finAccountTrans" to-value-field="payment"/>
@@ -789,32 +810,35 @@
             </if-empty>
             <iterate list="payments" entry="payment">
                 <clear-field field="createAcctgTransAndEntriesMap"/>
-                <set field="partyIdTo" from-field="payment.partyIdTo"/>
-                <set field="partyIdFrom" from-field="payment.partyIdFrom"/>
                 <get-related relation-name="AcctgTrans" list="acctgTransList" value-field="payment"/>
-                <iterate list="acctgTransList" entry="acctgTrans">
-                    <get-related relation-name="AcctgTransEntry" list="acctgTransEntries" value-field="acctgTrans"/>
-                    <set-service-fields service-name="createAcctgTransAndEntries" map="acctgTrans" to-map="createAcctgTransAndEntriesMap"/>
-                </iterate>
-                <clear-field field="createAcctgTransAndEntries.acctgTransId"/>
-                <set field="createAcctgTransAndEntries.transactionDate" from-field="nowTimestamp"/>
-                <set field="createAcctgTransAndEntries.postedDate" from-field="nowTimestamp"/>
+                <first-from-list list="acctgTransList" entry="acctgTrans"/>
+                <set-service-fields service-name="createAcctgTransAndEntries" map="acctgTrans" to-map="createAcctgTransAndEntriesMap"/>
                 <set field="entryAmount" type="BigDecimal" value="0"/>
-                <iterate list="acctgTransEntries" entry="oldAcctgTransEntry">
-                    <if-compare field="oldAcctgTransEntry.debitCreditFlag" operator="equals" value="C">
-                        <make-value value-field="newAcctgTransEntry" entity-name="AcctgTransEntry"/>
-                        <set field="newAcctgTransEntry.glAccountId" from-field="oldAcctgTransEntry.glAccountId"/>
-                        <set field="organizationPartyId" from-field="oldAcctgTransEntry.organizationPartyId"/>
-                        <set field="newAcctgTransEntry.organizationPartyId" from-field="organizationPartyId"/>
-                        <set field="newAcctgTransEntry.partyId" from-field="oldAcctgTransEntry.ownerPartyId"/>
-                        <set field="newAcctgTransEntry.amount" from-field="oldAcctgTransEntry.amount"/>
-                        <set field="newAcctgTransEntry.acctgTransEntryTypeId" from-field="oldAcctgTransEntry.acctgTransEntryTypeId"/>
-                        <set field="newAcctgTransEntry.debitCreditFlag" value="D"/>
-                        <set field="newAcctgTransEntry.reconcileStatusId" value="AES_RECONCILED"/>
-                        <set field="entryAmount" type="BigDecimal" value="${entryAmount + newAcctgTransEntry.amount}"/>
-                        <field-to-list field="newAcctgTransEntry" list="createAcctgTransAndEntriesMap.acctgTransEntries"/>
-                    </if-compare>
+                <iterate list="acctgTransList" entry="acctgTrans">
+                    <if-compare field="acctgTrans.acctgTransTypeId" operator="not-equals" value="PAYMENT_APPL">
+                        <get-related relation-name="AcctgTransEntry" list="acctgTransEntries" value-field="acctgTrans"/>
+                    </if-compare> 
+                    <iterate list="acctgTransEntries" entry="oldAcctgTransEntry">
+                        <if-compare field="oldAcctgTransEntry.debitCreditFlag" operator="equals" value="C">
+                            <make-value value-field="newAcctgTransEntry" entity-name="AcctgTransEntry"/>
+                            <set field="newAcctgTransEntry.glAccountId" from-field="oldAcctgTransEntry.glAccountId"/>
+                            <set field="organizationPartyId" from-field="oldAcctgTransEntry.organizationPartyId"/>
+                            <set field="newAcctgTransEntry.organizationPartyId" from-field="organizationPartyId"/>
+                            <set field="newAcctgTransEntry.partyId" from-field="oldAcctgTransEntry.ownerPartyId"/>
+                            <set field="newAcctgTransEntry.amount" from-field="oldAcctgTransEntry.amount"/>
+                            <set field="newAcctgTransEntry.acctgTransEntryTypeId" from-field="oldAcctgTransEntry.acctgTransEntryTypeId"/>
+                            <set field="newAcctgTransEntry.debitCreditFlag" value="D"/>
+                            <set field="entryAmount" type="BigDecimal" value="${entryAmount + newAcctgTransEntry.amount}"/>
+                            <field-to-list field="newAcctgTransEntry" list="createAcctgTransAndEntriesMap.acctgTransEntries"/>
+                        </if-compare>
+                        <set-service-fields service-name="updateAcctgTransEntry" map="oldAcctgTransEntry" to-map="updateAcctgTransEntryMap"/>
+                        <set field="updateAcctgTransEntry.reconcileStatusId" value="AES_RECONCILED"/>
+                        <call-service service-name="updateAcctgTransEntry" in-map-name="updateAcctgTransEntryMap"/>
+                    </iterate>
                 </iterate>
+                <clear-field field="createAcctgTransAndEntriesMap.acctgTransId"/>
+                <set field="createAcctgTransAndEntriesMap.transactionDate" from-field="nowTimestamp"/>
+                <set field="createAcctgTransAndEntriesMap.postedDate" from-field="nowTimestamp"/>
                 <make-value value-field="newAcctgTransEntry" entity-name="AcctgTransEntry"/>
                 <set field="newAcctgTransEntry.glAccountId" from-field="finAccount.postToGlAccountId"/>
                 <set field="newAcctgTransEntry.organizationPartyId" from-field="organizationPartyId"/>
@@ -822,9 +846,19 @@
                 <set field="newAcctgTransEntry.amount" from-field="entryAmount"/>
                 <set field="newAcctgTransEntry.acctgTransEntryTypeId" value="_NA_"/>
                 <set field="newAcctgTransEntry.debitCreditFlag" value="C"/>
-                <set field="newAcctgTransEntry.reconcileStatusId" value="AES_RECONCILED"/>
                 <field-to-list field="newAcctgTransEntry" list="createAcctgTransAndEntriesMap.acctgTransEntries"/>
-                <call-service service-name="createAcctgTransAndEntries" in-map-name="createAcctgTransAndEntriesMap"/>
+                <call-service service-name="createAcctgTransAndEntries" in-map-name="createAcctgTransAndEntriesMap">
+                    <result-to-field result-name="acctgTransId"/>
+                </call-service>
+                <entity-and entity-name="AcctgTransEntry" list="acctgTransEntries">
+                    <field-map field-name="acctgTransId"/>
+                </entity-and>
+                <iterate list="acctgTransEntries" entry="acctgTransEntry">
+                    <set-service-fields service-name="createGlReconciliationEntry" map="acctgTransEntry" to-map="createGlReconciliationEntryMap"/>
+                    <set field="createGlReconciliationEntryMap.glReconciliationId" from-field="finAccountTrans.glReconciliationId"/>
+                    <set field="createGlReconciliationEntryMap.reconciledAmount" from-field="acctgTransEntry.amount"/>
+                    <call-service service-name="createGlReconciliationEntry" in-map-name="createGlReconciliationEntryMap"/>
+                </iterate>
             </iterate>
         <else>
             <property-to-field property="AccountingNotWithdrawalFinAccountTrans" resource="AccountingUiLabels" field="errorMessage"/>

Modified: ofbiz/trunk/applications/accounting/script/org/ofbiz/accounting/ledger/AcctgTransServices.xml
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/accounting/script/org/ofbiz/accounting/ledger/AcctgTransServices.xml?rev=803564&r1=803563&r2=803564&view=diff
==============================================================================
--- ofbiz/trunk/applications/accounting/script/org/ofbiz/accounting/ledger/AcctgTransServices.xml (original)
+++ ofbiz/trunk/applications/accounting/script/org/ofbiz/accounting/ledger/AcctgTransServices.xml Wed Aug 12 15:42:23 2009
@@ -120,12 +120,19 @@
         <!-- call-simple-method method-name="updateAcctgTransLastModified"/ -->
     </simple-method>
     <simple-method method-name="updateAcctgTransEntry" short-description="Update Entry To AcctgTrans">
-        <entity-one entity-name="AcctgTrans" value-field="acctgTrans"/>
-        <if-compare field="acctgTrans.isPosted" operator="equals" value="Y">
-            <add-error><fail-property resource="AccountingUiLabels" property="AccountingTransactionHasBeenAlreadyPosted"/></add-error>
-            <check-errors/>
-        </if-compare>
         <entity-one entity-name="AcctgTransEntry" value-field="lookedUpValue"/>
+        <!-- Only status change will be allowed in case of posted entry -->
+        <make-value entity-name="AcctgTransEntry" value-field="acctgTransEntry"/>
+        <set field="acctgTransEntry" from-field="lookedUpValue"/>
+        <set-nonpk-fields map="parameters" value-field="acctgTransEntry"/>
+        <set field="lookedUpValue.reconcileStatusId" from-field="acctgTransEntry.reconcileStatusId"/>
+        <if-compare-field field="acctgTransEntry" operator="not-equals" to-field="lookedUpValue">
+            <entity-one entity-name="AcctgTrans" value-field="acctgTrans"/>
+            <if-compare field="acctgTrans.isPosted" operator="equals" value="Y">
+                <add-error><fail-property resource="AccountingUiLabels" property="AccountingTransactionHasBeenAlreadyPosted"/></add-error>
+                <check-errors/>
+            </if-compare>
+        </if-compare-field>
         <set-nonpk-fields map="parameters" value-field="lookedUpValue"/>
         <store-value value-field="lookedUpValue"/>