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}&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}&organizationPartyId=${organizationPartyId}&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> |
Free forum by Nabble | Edit this page |