You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ofbiz.apache.org by as...@apache.org on 2007/12/27 00:55:52 UTC

svn commit: r606978 - in /ofbiz/trunk/applications/accounting: config/ script/org/ofbiz/accounting/ledger/ src/org/ofbiz/accounting/ webapp/accounting/WEB-INF/ widget/

Author: ashish
Date: Wed Dec 26 15:55:48 2007
New Revision: 606978

URL: http://svn.apache.org/viewvc?rev=606978&view=rev
Log:
Applied patch from JIRA Issue # OFBIZ-1494.
Description :- Implement new screen and Java event to create an account reconciliation.
For a general description about the process: http://en.wikipedia.org/wiki/Bank_reconciliation

Thanks Santosh Malivya and Jyotsna Rathore for working on this.
Special thanks to Pranay Pandey for providing the improvement to this work.

Added:
    ofbiz/trunk/applications/accounting/src/org/ofbiz/accounting/ReconcileEvents.java   (with props)
Modified:
    ofbiz/trunk/applications/accounting/config/AccountingUiLabels.properties
    ofbiz/trunk/applications/accounting/script/org/ofbiz/accounting/ledger/GeneralLedgerServices.xml
    ofbiz/trunk/applications/accounting/webapp/accounting/WEB-INF/controller.xml
    ofbiz/trunk/applications/accounting/widget/GlForms.xml
    ofbiz/trunk/applications/accounting/widget/GlScreens.xml
    ofbiz/trunk/applications/accounting/widget/Menus.xml

Modified: ofbiz/trunk/applications/accounting/config/AccountingUiLabels.properties
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/accounting/config/AccountingUiLabels.properties?rev=606978&r1=606977&r2=606978&view=diff
==============================================================================
--- ofbiz/trunk/applications/accounting/config/AccountingUiLabels.properties (original)
+++ ofbiz/trunk/applications/accounting/config/AccountingUiLabels.properties Wed Dec 26 15:55:48 2007
@@ -43,6 +43,10 @@
 
 ListAccounts=List Gl Accounts
 
+AccountingAcctRecon=Account Reconciliation
+AccountingAcctRecons=Account Reconciliations
+AccountingCreateAcctRecons=Create Account Reconciliation
+AccountingEditAcctRecon = Edit Account Reconciliation
 AccountingAccount=Account
 AccountingAccountId=Account ID
 AccountingAccounting=Accounting

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=606978&r1=606977&r2=606978&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 Wed Dec 26 15:55:48 2007
@@ -241,7 +241,8 @@
         <!-- update the status of the AcctgTransEntry to reconciled -->
         <set field="updateAcctgTransEntryInMap.acctgTransId" from-field="parameters.acctgTransId"/>
         <set field="updateAcctgTransEntryInMap.acctgTransEntrySeqId" from-field="parameters.acctgTransEntrySeqId"/>
-        <set field="updateAcctgTransEntryInMap.acctgTransEntrySeqId" value="AES_RECONCILED"/>
+        <set field="updateAcctgTransEntryInMap.reconcileStatusId" value="AES_RECONCILED"/>
+        <set field="updateAcctgTransEntryInMap.amount" from-field="parameters.reconciledAmount"/>
         <call-service service-name="updateAcctgTransEntry" in-map-name="updateAcctgTransEntryInMap"/>
         <check-errors/>
 

Added: ofbiz/trunk/applications/accounting/src/org/ofbiz/accounting/ReconcileEvents.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/accounting/src/org/ofbiz/accounting/ReconcileEvents.java?rev=606978&view=auto
==============================================================================
--- ofbiz/trunk/applications/accounting/src/org/ofbiz/accounting/ReconcileEvents.java (added)
+++ ofbiz/trunk/applications/accounting/src/org/ofbiz/accounting/ReconcileEvents.java Wed Dec 26 15:55:48 2007
@@ -0,0 +1,145 @@
+/*******************************************************************************
+ * 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.
+ *******************************************************************************/
+package org.ofbiz.accounting;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import java.util.Map;
+import java.util.List;
+import java.util.Iterator;
+
+import org.ofbiz.base.util.Debug;
+import org.ofbiz.base.util.UtilHttp;
+import org.ofbiz.base.util.UtilMisc;
+import org.ofbiz.base.util.UtilDateTime;
+import org.ofbiz.base.util.UtilValidate;
+import org.ofbiz.entity.GenericDelegator;
+import org.ofbiz.entity.GenericEntityException;
+import org.ofbiz.entity.GenericValue;
+import org.ofbiz.service.LocalDispatcher;
+import org.ofbiz.service.ServiceUtil;
+import org.ofbiz.service.GenericServiceException;
+
+public class ReconcileEvents {
+	
+public static final String module = ReconcileEvents.class.getName();
+public static String createReconcileAccount(HttpServletRequest request,HttpServletResponse response) {
+    LocalDispatcher dispatcher = (LocalDispatcher) request.getAttribute("dispatcher");
+    final GenericDelegator delegator = (GenericDelegator)request.getAttribute("delegator");
+    GenericValue userLogin = (GenericValue) request.getSession().getAttribute("userLogin");
+    Map ctx = UtilHttp.getParameterMap(request);
+    String acctgTransId;
+    String acctgTransEntrySeqId;
+    String glAccountId = null;
+    String organizationPartyId = null;
+    double reconciledBalance = 0.00;
+    boolean isSelected;
+    String debitCreditFlag;
+    int rowCount = 0;
+    if (ctx.containsKey("_rowCount")) {
+        rowCount = Integer.parseInt((String)ctx.get("_rowCount")); //get the number of rows
+    }
+    for (int i = 0; i < rowCount; i++) {  //for calculating amount per glAccountId
+        double amount = 0.00;
+        String suffix = UtilHttp.MULTI_ROW_DELIMITER + i;
+        isSelected = (ctx.containsKey("_rowSubmit" + suffix) && "Y".equalsIgnoreCase((String)ctx.get("_rowSubmit" + suffix)));
+        if (!isSelected) {
+            continue;
+        }
+        acctgTransId = (String) ctx.get("acctgTransId" + suffix);
+        acctgTransEntrySeqId = (String) ctx.get("acctgTransEntrySeqId" + suffix);
+        organizationPartyId = (String) ctx.get("organizationPartyId" + suffix);
+        glAccountId = (String) ctx.get("glAccountId" + suffix);
+        GenericValue acctgTransEntry;
+        try {
+            List acctgTransEntries = delegator.findByAnd("AcctgTransEntry", UtilMisc.toMap("acctgTransId", acctgTransId, "acctgTransEntrySeqId", acctgTransEntrySeqId));
+            if (UtilValidate.isNotEmpty(acctgTransEntries)) {
+                Iterator acctgTransEntryItr = acctgTransEntries.iterator();
+                while (acctgTransEntryItr.hasNext()) {  //calculate amount for each AcctgTransEntry according to glAccountId based on debit and credit
+      	            acctgTransEntry = (GenericValue) acctgTransEntryItr.next();
+                    debitCreditFlag = (String) acctgTransEntry.getString("debitCreditFlag");
+                    if ("D".equalsIgnoreCase(debitCreditFlag)) {
+                        amount += acctgTransEntry.getDouble("amount"); //for debit
+                    } else {
+                          amount -= acctgTransEntry.getDouble("amount"); //for credit
+                    }
+                }
+            }
+            reconciledBalance += amount;  //total balance per glAccountId
+        } catch (GenericEntityException e) {
+            Debug.logError(e, module);
+        	return "error";
+        }
+        
+    }
+    Map fieldMap = UtilMisc.toMap("glReconciliationName", "Reconciliation at date " + UtilDateTime.nowTimestamp(), "glAccountId", glAccountId, "organizationPartyId", organizationPartyId, "reconciledDate", UtilDateTime.nowTimestamp(), "reconciledBalance", new Double(reconciledBalance), "userLogin", userLogin);
+    Map glReconResult = null;
+    try {
+    	glReconResult = dispatcher.runSync("createGlReconciliation", fieldMap); //create GlReconciliation for the glAccountId
+        if (ServiceUtil.isError(glReconResult)) {
+            return "error";
+         }
+    } catch (GenericServiceException e) {
+        Debug.logError(e, module);
+    	return "error";
+    }
+    String glReconciliationId = (String) glReconResult.get("glReconciliationId");
+    String reconciledAmount;
+    for (int i = 0; i < rowCount; i++) {
+        String suffix = UtilHttp.MULTI_ROW_DELIMITER + i;
+        isSelected = (ctx.containsKey("_rowSubmit" + suffix) && "Y".equalsIgnoreCase((String)ctx.get("_rowSubmit" + suffix)));
+        if (!isSelected) {
+            continue;
+        }
+        acctgTransId = (String) ctx.get("acctgTransId" + suffix);
+        acctgTransEntrySeqId = (String) ctx.get("acctgTransEntrySeqId" + suffix);
+        GenericValue acctgTransEntry;
+        try {
+            List acctgTransEntries = delegator.findByAnd("AcctgTransEntry", UtilMisc.toMap("acctgTransId", acctgTransId, "acctgTransEntrySeqId", acctgTransEntrySeqId));
+            if (UtilValidate.isNotEmpty(acctgTransEntries)) {
+                Iterator acctgTransEntryItr = acctgTransEntries.iterator();
+                while (acctgTransEntryItr.hasNext()) {
+                    acctgTransEntry = (GenericValue) acctgTransEntryItr.next();
+                    reconciledAmount = acctgTransEntry.getString("amount");
+                    acctgTransId = acctgTransEntry.getString("acctgTransId");
+                    acctgTransEntrySeqId = acctgTransEntry.getString("acctgTransEntrySeqId");
+                    Map glReconEntryMap = UtilMisc.toMap("glReconciliationId", glReconciliationId, "acctgTransId", acctgTransId, "acctgTransEntrySeqId", acctgTransEntrySeqId, "reconciledAmount", reconciledAmount, "userLogin", userLogin);
+                    Map glReconEntryResult = null;
+                    try {
+                    	glReconEntryResult = dispatcher.runSync("createGlReconciliationEntry", glReconEntryMap);
+                        if (ServiceUtil.isError(glReconEntryResult)) {
+                            return "error";
+                        }
+                    } catch (GenericServiceException e) {
+                        Debug.logError(e, module);
+                    	return "error";
+                    }
+                }
+            }
+        } catch (GenericEntityException e) {
+            Debug.logError(e, module);
+        	return "error";
+        }
+    }
+    ctx.put("glReconciliationId", glReconciliationId);
+    request.setAttribute("glReconciliationId", glReconciliationId);
+    return "success";
+  }
+}
\ No newline at end of file

Propchange: ofbiz/trunk/applications/accounting/src/org/ofbiz/accounting/ReconcileEvents.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: ofbiz/trunk/applications/accounting/src/org/ofbiz/accounting/ReconcileEvents.java
------------------------------------------------------------------------------
    svn:keywords = Date Rev Author URL Id

Propchange: ofbiz/trunk/applications/accounting/src/org/ofbiz/accounting/ReconcileEvents.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Modified: ofbiz/trunk/applications/accounting/webapp/accounting/WEB-INF/controller.xml
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/accounting/webapp/accounting/WEB-INF/controller.xml?rev=606978&r1=606977&r2=606978&view=diff
==============================================================================
--- ofbiz/trunk/applications/accounting/webapp/accounting/WEB-INF/controller.xml (original)
+++ ofbiz/trunk/applications/accounting/webapp/accounting/WEB-INF/controller.xml Wed Dec 26 15:55:48 2007
@@ -1445,6 +1445,33 @@
         <security https="true" auth="true"/>
         <response name="success" type="view" value="ViewGlReconciliation"/>
     </request-map>
+    
+    <request-map uri="findGlAccountReconciliation">
+        <security https="true" auth="true"/>
+        <response name="success" type="view" value="FindGlAccountReconciliation"/>
+        <response type="view" name="error"  value="FindGlAccountReconciliation"/>     
+    </request-map>
+    <request-map uri="EditGlReconciliation">
+        <security https="true" auth="true"/>
+        <event type="java" path="org.ofbiz.accounting.ReconcileEvents" invoke="createReconcileAccount"/>
+        <response name="success" type="view" value="EditGlReconciliation"/>
+        <response name="error" type="view" value="FindGlAccountReconciliation"/>
+    </request-map>
+    <request-map uri="EditGlReconciliations">
+        <security https="true" auth="true"/>
+        <response type="view" name="success" value="EditGlReconciliation"/>   
+    </request-map>
+    <request-map uri="updateGlReconciliation">
+        <security https="true" auth="true"/>
+        <event type="service" invoke="updateGlReconciliation"/>
+        <response type="view" name="success" value="EditGlReconciliation"/>
+    </request-map>
+    <request-map uri="findGlAccountReconciliations">
+        <security https="true" auth="true"/>
+        <response name="success" type="view" value="FindGlAccountReconciliations"/>
+        <response type="view" name="error"  value="FindGlAccountReconciliations"/>     
+    </request-map>
+    
     <!-- ================ check requests ================= -->
     <request-map uri="listChecksToPrint">
         <security https="true" auth="true"/>
@@ -1751,7 +1778,10 @@
     <view-map name="ListGlAccountsExport" type="screenxml" page="component://accounting/widget/GlobalGlAccountsScreens.xml#ListGlAccountsExport" content-type="text/xml"/>
     <view-map name="GlAccountNavigate" type="screen" page="component://accounting/widget/GlobalGlAccountsScreens.xml#GlAccountNavigate"/>
     <view-map name="AssignGlAccount" type="screen" page="component://accounting/widget/GlobalGlAccountsScreens.xml#AssignGlAccount"/>
- 
+    <view-map name="FindGlAccountReconciliation" type="screen" page="component://accounting/widget/GlScreens.xml#FindGlAccountReconciliation"/>   
+    <view-map name="FindGlAccountReconciliations" type="screen" page="component://accounting/widget/GlScreens.xml#FindGlAccountReconciliations"/>   
+    <view-map name="EditGlReconciliation" type="screen" page="component://accounting/widget/GlScreens.xml#EditGlReconciliation"/>   
+    
     <view-map name="EditGlobalGlAccount" type="screen" page="component://accounting/widget/GlobalGlAccountsScreens.xml#AddGlAccount"/>
     <!-- NOTE/TODO: these 2 appear to never have been implemented all the way, just request and view defs so far... -->
     <view-map name="EditGlobalGlAccountOrganizations" type="screen" page="component://accounting/widget/GlobalGlAccountsScreens.xml#EditGlobalGlAccountOrganizations"/>

Modified: ofbiz/trunk/applications/accounting/widget/GlForms.xml
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/accounting/widget/GlForms.xml?rev=606978&r1=606977&r2=606978&view=diff
==============================================================================
--- ofbiz/trunk/applications/accounting/widget/GlForms.xml (original)
+++ ofbiz/trunk/applications/accounting/widget/GlForms.xml Wed Dec 26 15:55:48 2007
@@ -635,4 +635,98 @@
         </field>
         <field name="createButton" widget-style="smallSubmit"><submit button-type="button"/></field>
     </form>
+    <form name="FindGlAccountReconciliation" type="single" title="" target="findGlAccountReconciliation">
+        <field name="organizationPartyId"><hidden/></field>
+        <field name="glAccountId" widget-style="selectBox">
+            <drop-down allow-empty="false">
+                <entity-options entity-name="GlAccount" description="${glAccountId}: ${accountName}" key-field-name="glAccountId">
+                    <entity-order-by field-name="glAccountId"/>
+                </entity-options>
+            </drop-down>
+        </field>
+        <field name="performSearch"><hidden value="Y"/></field> 
+        <field name="submitButton" title="${uiLabelMap.CommonSearch}" widget-style="buttontext"><submit button-type="text-link"/></field>
+    </form>
+    <form name="ListGlAccountReconciliation" type="multi" use-row-submit="true" target="EditGlReconciliation?organizationPartyId=${organizationPartyId}&amp;tabButtonItem=AccountReconciliation">
+        <actions>
+            <entity-condition entity-name="AcctgTransEntry">
+                <condition-list>
+                    <condition-expr field-name="organizationPartyId" env-name="organizationPartyId"/>
+                    <condition-expr field-name="reconcileStatusId" operator="equals" value="AES_NOT_RECONCILED"/>
+                    <condition-expr field-name="glAccountId" operator="equals" value="${glAccountId}"/>
+                </condition-list>
+                <order-by field-name="-lastUpdatedStamp"/>
+            </entity-condition>
+        </actions>
+       
+        <field name="acctgTransId"><display/></field>
+        <field name="acctgTransEntrySeqId"><display/></field>
+        <field name="glAccountId"><display/></field>
+        <field name="partyId"><display/></field>
+        <field name="productId"><display/></field>
+        <field name="organizationPartyId"><display/></field>
+        <field name="amount"><display/></field>
+        <field name="_rowSubmit" title="${uiLabelMap.CommonSelect}"><check/></field>
+        <field name="submitButton" title="${uiLabelMap.AccountingCreateAcctRecons}" widget-style="buttontext"><submit button-type="text-link"/></field>
+    </form>
+    <form name="EditGlReconciliation" type="single" target="updateGlReconciliation?tabButtonItem=${tabButtonItem}" default-map-name="glReconciliation">
+        <auto-fields-service service-name="updateGlReconciliation"/>
+        <field name="glReconciliationId"><display/></field>
+        <field name="glReconciliationName"><text/></field>
+        <field name="description"><text/></field>
+        <field name="glAccountId"><display/></field>
+        <field name="reconciledDate"><date-time/></field>
+        <field name="organizationPartyId"><display/></field>
+        <field name="reconciledBalance"><display/></field>
+        <field use-when="glReconciliationId!=null" name="updateButton" title="${uiLabelMap.CommonUpdate}" widget-style="buttontext" ><submit button-type="text-link"/></field>
+    </form>
+    <form name="ListGlReconciliationEntries" type="list" use-row-submit="true">
+        <actions>
+            <entity-condition entity-name="GlReconciliationEntry">
+                <condition-list>
+                    <condition-expr field-name="glReconciliationId" env-name="glReconciliationId"/>
+                </condition-list>
+            </entity-condition>
+        </actions>
+        <field name="glReconciliationId"><display/></field>
+        <field name="acctgTransId"><display/></field>
+        <field name="acctgTransEntrySeqId"><display/></field>
+        <field name="reconciledAmount"><display/></field>
+        <field name="lastUpdatedStamp"><display/></field>
+    </form>
+    <form name="FindGlAccountReconciliations" type="single" title="" target="findGlAccountReconciliations">
+        <field name="organizationPartyId"><hidden/></field>
+        <field name="glAccountId" widget-style="selectBox">
+            <drop-down allow-empty="false">
+                <entity-options entity-name="GlAccount" description="${glAccountId}: ${accountName}" key-field-name="glAccountId">
+                    <entity-order-by field-name="glAccountId"/>
+                </entity-options>
+            </drop-down>
+        </field>
+        <field name="fromDate"><date-time/></field>
+        <field name="thruDate"><date-time/></field>
+        <field name="performSearch"><hidden value="Y"/></field> 
+        <field name="submitButton" title="${uiLabelMap.CommonSearch}" widget-style="buttontext"><submit button-type="text-link"/></field>
+    </form>
+    <form name="ListGlAccountReconciliations" type="list" default-entity-name="GlReconciliation">
+        <actions>
+            <entity-condition entity-name="GlReconciliation">
+                <condition-list>
+                    <condition-expr field-name="glAccountId"  operator="equals" value="${glAccountId}"/>
+                    <condition-expr field-name="reconciledDate" operator="greater-equals" env-name="parameters.fromDate" ignore-if-empty="true"/>
+                    <condition-expr field-name="reconciledDate" operator="less" env-name="parameters.thruDate" ignore-if-empty="true"/>
+                </condition-list>
+            </entity-condition>
+        </actions>
+        <field name="glReconciliationId">
+            <hyperlink also-hidden="false" description="${glReconciliationId}" target="EditGlReconciliations?glReconciliationId=${glReconciliationId}&amp;organizationPartyId=${organizationPartyId}&amp;tabButtonItem=AccountReconciliations"/>
+        </field>
+        <field name="glReconciliationName"><display/></field>
+        <field name="description"><display/></field>
+        <field name="createdByUserLogin"><display/></field>
+        <field name="lastModifiedByUserLogin"><display/></field>
+        <field name="glAccountId"><display/></field>
+        <field name="organizationPartyId"><display/></field>
+        <field name="reconciledBalance"><display/></field>
+    </form>
 </forms>

Modified: ofbiz/trunk/applications/accounting/widget/GlScreens.xml
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/accounting/widget/GlScreens.xml?rev=606978&r1=606977&r2=606978&view=diff
==============================================================================
--- ofbiz/trunk/applications/accounting/widget/GlScreens.xml (original)
+++ ofbiz/trunk/applications/accounting/widget/GlScreens.xml Wed Dec 26 15:55:48 2007
@@ -335,5 +335,95 @@
             </widgets>
         </section>
     </screen>
+
+    <screen name="FindGlAccountReconciliation">
+        <section>
+            <actions>
+                <set field="titleProperty" value="AccountingAcctRecon"/>
+                <set field="tabButtonItem" value="AccountReconciliation"/>
+                <set field="organizationPartyId" from-field="parameters.organizationPartyId" global="true"/>
+                <set field="glAccountId" from-field="parameters.glAccountId"/>
+            </actions>
+            <widgets>
+                <decorator-screen name="CommonPartyAccountsDecorator" location="${parameters.mainDecoratorLocation}">
+                    <decorator-section name="body">
+                        <container style="screenlet">
+                            <container style="body">
+                                <include-form name="FindGlAccountReconciliation" location="component://accounting/widget/GlForms.xml"/>
+                            </container>
+                        </container>
+                        <section>
+                            <condition>
+                                <if-compare field-name="parameters.performSearch" operator="equals" value="Y"/>
+                            </condition>
+                            <widgets>
+                                <include-form name="ListGlAccountReconciliation" location="component://accounting/widget/GlForms.xml"/>
+                            </widgets>
+                        </section>
+                    </decorator-section>
+                </decorator-screen>
+            </widgets>
+        </section>
+    </screen>
+    <screen name="EditGlReconciliation">
+        <section>
+            <actions>
+                <set field="titleProperty" value="AccountingEditAcctRecon"/>
+                <set field="tabButtonItem" from-field="parameters.tabButtonItem" global="true"/>
+                <set field="organizationPartyId" from-field="parameters.organizationPartyId" global="true"/>
+                <set field="glReconciliationId" from-field="parameters.glReconciliationId" global="true"/>
+                <entity-one entity-name="GlReconciliation" value-name="glReconciliation"/>
+            </actions>
+            <widgets>
+                <decorator-screen name="CommonPartyAccountsDecorator" location="${parameters.mainDecoratorLocation}">
+                    <decorator-section name="body">
+                        <section>
+                            <widgets>
+                                <container style="screenlet">
+                                    <container style="body">
+                                        <include-form name="EditGlReconciliation" location="component://accounting/widget/GlForms.xml"/>
+                                    </container>
+                                </container>
+                            </widgets>
+                        </section>
+                        <section>
+                            <widgets>
+                                <include-form name="ListGlReconciliationEntries" location="component://accounting/widget/GlForms.xml"/>
+                            </widgets>
+                        </section>
+                    </decorator-section>
+                </decorator-screen>
+            </widgets>
+        </section>
+    </screen>
+    <screen name="FindGlAccountReconciliations">
+        <section>
+            <actions>
+                <set field="titleProperty" value="AccountingAcctRecons"/>
+                <set field="tabButtonItem" value="AccountReconciliations"/>
+                <set field="organizationPartyId" from-field="parameters.organizationPartyId" global="true"/>
+                <set field="glAccountId" from-field="parameters.glAccountId"/>
+            </actions>
+            <widgets>
+                <decorator-screen name="CommonPartyAccountsDecorator" location="${parameters.mainDecoratorLocation}">
+                    <decorator-section name="body">
+                        <container style="screenlet">
+                            <container style="body">
+                                <include-form name="FindGlAccountReconciliations" location="component://accounting/widget/GlForms.xml"/>
+                            </container>
+                        </container>
+                        <section>
+                            <condition>
+                                <if-compare field-name="parameters.performSearch" operator="equals" value="Y"/>
+                            </condition>
+                            <widgets>
+                                <include-form name="ListGlAccountReconciliations" location="component://accounting/widget/GlForms.xml"/>
+                            </widgets>
+                        </section>
+                    </decorator-section>
+                </decorator-screen>
+            </widgets>
+        </section>
+    </screen>
 </screens>
 

Modified: ofbiz/trunk/applications/accounting/widget/Menus.xml
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/accounting/widget/Menus.xml?rev=606978&r1=606977&r2=606978&view=diff
==============================================================================
--- ofbiz/trunk/applications/accounting/widget/Menus.xml (original)
+++ ofbiz/trunk/applications/accounting/widget/Menus.xml Wed Dec 26 15:55:48 2007
@@ -424,6 +424,12 @@
         <menu-item name="PartyAccountsSummary" title="${uiLabelMap.AcctgPartyGlJournalSummary}">
             <link target="PartyAccountsSummary?organizationPartyId=${organizationPartyId}"/>
         </menu-item>
+        <menu-item name="AccountReconciliation" title="${uiLabelMap.AccountingAcctRecon}">
+            <link target="findGlAccountReconciliation?organizationPartyId=${organizationPartyId}"/>
+        </menu-item>
+        <menu-item name="AccountReconciliations" title="${uiLabelMap.AccountingAcctRecons}">
+            <link target="findGlAccountReconciliations?organizationPartyId=${organizationPartyId}"/>
+        </menu-item>
         <menu-item name="FindAcctgTrans" title="${uiLabelMap.AccountingAcctgTranss}">
             <link target="FindAcctgTrans?organizationPartyId=${organizationPartyId}"/>
         </menu-item>