==== Patch <commit-11012008a> level 1
Source: [No source]
Target: a8845c50-7012-0410-95d3-8e1449b9b1e4:/trunk/mifos:12249
        (https://mifos.dev.java.net/svn/mifos/trunk/mifos)
Log:
commit for 11/01
Index: BirtReportDesign/ActiveLoansByLoanOfficer.rptdesign
==================================================================
--- BirtReportDesign/ActiveLoansByLoanOfficer.rptdesign	(revision 12249)

+++ BirtReportDesign/ActiveLoansByLoanOfficer.rptdesign	(patch commit-11012008a level 1)

@@ -11,15 +11,6 @@

         </structure>

     </list-property>

     <parameters>

-        <scalar-parameter name="reportName" id="1126">

-            <property name="hidden">false</property>

-            <property name="valueType">static</property>

-            <property name="dataType">string</property>

-            <property name="controlType">text-box</property>

-            <structure name="format">

-                <property name="category">Unformatted</property>

-            </structure>

-        </scalar-parameter>

         <scalar-parameter name="userId" id="157">

             <property name="hidden">true</property>

             <property name="valueType">static</property>

Index: BirtReportDesign/DetailedAgingPortfolioAtRisk.rptdesign
==================================================================
--- BirtReportDesign/DetailedAgingPortfolioAtRisk.rptdesign	(revision 12249)

+++ BirtReportDesign/DetailedAgingPortfolioAtRisk.rptdesign	(patch commit-11012008a level 1)

@@ -5,8 +5,8 @@

     <property name="units">in</property>

     <property name="comments">Copyright (c) 2006 &lt;&lt;Your Company Name here>></property>

     <parameters>

-        <scalar-parameter name="reportName" id="1626">

-            <property name="hidden">false</property>

+        <scalar-parameter name="mifosHiddenParam" id="1626">

+            <property name="hidden">true</property>

             <property name="valueType">static</property>

             <property name="dataType">string</property>

             <property name="controlType">text-box</property>

@@ -73,10 +73,9 @@

     </parameters>

     <data-sources>

         <script-data-source name="Scripted Data Source" id="4">

-            <method name="open"><![CDATA[Packages.java.util.logging.Logger.getLogger("").info("DS-OPEN");
+            <method name="open"><![CDATA[var logger = Packages.java.util.logging.Logger.getLogger("");
 Packages.org.mifos.application.productdefinition.persistence.LoanPrdPersistence.enableThreadCacheForReports();
 var userId = reportContext.getParameterValue("userId");
-
 reportsDataService = new Packages.org.mifos.application.reports.business.service.ReportsDataService();
 reportsDataService.initialize(userId);]]></method>

             <method name="close"><![CDATA[reportsDataService = null;
Index: BirtReportDesign/LayoutReport.rptconfig
==================================================================
--- BirtReportDesign/LayoutReport.rptconfig	(revision 12249)

+++ BirtReportDesign/LayoutReport.rptconfig	(patch commit-11012008a level 1)

@@ -0,0 +1,3 @@

+<?xml version="1.0" encoding="UTF-8"?>

+<!-- Written by Eclipse BIRT 2.0 -->

+<report xmlns="http://www.eclipse.org/birt/2005/design" version="3.2.6" id="1"/>

Index: BirtReportDesign/LayoutReport.rptdesign
==================================================================
--- BirtReportDesign/LayoutReport.rptdesign	(revision 12249)

+++ BirtReportDesign/LayoutReport.rptdesign	(patch commit-11012008a level 1)

@@ -0,0 +1,3085 @@

+<?xml version="1.0" encoding="UTF-8"?>

+<!-- Written by Eclipse BIRT 2.0 -->

+<report xmlns="http://www.eclipse.org/birt/2005/design" version="3.2.6" id="1">

+    <property name="createdBy">Eclipse BIRT Designer Version 2.1.2.v20070205-1728 Build &lt;20070205-1728></property>

+    <property name="units">in</property>

+    <property name="includeResource">BirtReportResource/GrameenKootaCollectionSheetReportResource</property>

+    <property name="comments">Copyright (c) 2006 &lt;&lt;Your Company Name here>></property>

+    <parameters>

+        <cascading-parameter-group name="branch_loanofficer_center" id="905">

+            <property name="dataSetMode">multiple</property>

+            <parameters>

+                <scalar-parameter name="branchId" id="906">

+                    <property name="valueType">dynamic</property>

+                    <property name="dataType">integer</property>

+                    <text-property name="promptText" key="collection.sheet.report.parameter.branch"></text-property>

+                    <property name="allowNull">false</property>

+                    <property name="controlType">list-box</property>

+                    <property name="dataSetName">BranchOffices</property>

+                    <expression name="valueExpr">row["ds_branchId"]</expression>

+                    <expression name="labelExpr">row["ds_branchName"]</expression>

+                    <property name="mustMatch">true</property>

+                    <property name="defaultValue">-3</property>

+                    <structure name="format">

+                        <property name="category">Unformatted</property>

+                    </structure>

+                </scalar-parameter>

+                <scalar-parameter name="loanOfficerId" id="907">

+                    <property name="valueType">dynamic</property>

+                    <property name="dataType">integer</property>

+                    <text-property name="promptText" key="collection.sheet.report.parameter.loanofficer"></text-property>

+                    <property name="allowNull">false</property>

+                    <property name="controlType">list-box</property>

+                    <property name="dataSetName">LoanOfficers</property>

+                    <expression name="valueExpr">row["ds_loanOfficerId"]</expression>

+                    <expression name="labelExpr">row["ds_loanOfficerName"]</expression>

+                    <property name="mustMatch">true</property>

+                    <property name="defaultValue">-3</property>

+                    <structure name="format">

+                        <property name="category">Unformatted</property>

+                    </structure>

+                </scalar-parameter>

+                <scalar-parameter name="centerId" id="908">

+                    <property name="valueType">dynamic</property>

+                    <property name="dataType">integer</property>

+                    <text-property name="promptText" key="collection.sheet.report.parameter.center"></text-property>

+                    <property name="allowNull">false</property>

+                    <property name="controlType">list-box</property>

+                    <property name="dataSetName">Centers</property>

+                    <expression name="valueExpr">row["ds_centerId"]</expression>

+                    <expression name="labelExpr">row["ds_centerName"]</expression>

+                    <property name="mustMatch">true</property>

+                    <property name="defaultValue">-3</property>

+                    <structure name="format">

+                        <property name="category">Unformatted</property>

+                    </structure>

+                </scalar-parameter>

+                <scalar-parameter name="meetingDate" id="961">

+                    <property name="valueType">dynamic</property>

+                    <property name="dataType">dateTime</property>

+                    <text-property name="promptText" key="collection.sheet.report.parameter.meetingdate"></text-property>

+                    <property name="allowNull">false</property>

+                    <property name="controlType">list-box</property>

+                    <property name="dataSetName">MeetingDates</property>

+                    <expression name="valueExpr">row["ds_meetingDate"]</expression>

+                    <expression name="labelExpr">row["ds_meetingDisplayDate"]</expression>

+                    <property name="mustMatch">true</property>

+                    <property name="defaultValue">01/01/1970</property>

+                    <structure name="format">

+                        <property name="category">Unformatted</property>

+                    </structure>

+                </scalar-parameter>

+            </parameters>

+        </cascading-parameter-group>

+        <scalar-parameter name="userId" id="996">

+            <property name="hidden">true</property>

+            <property name="valueType">static</property>

+            <property name="dataType">integer</property>

+            <property name="controlType">text-box</property>

+            <structure name="format">

+                <property name="category">Unformatted</property>

+            </structure>

+        </scalar-parameter>

+    </parameters>

+    <data-sources>

+        <script-data-source name="MifosCollectionSheet" id="259">

+            <method name="open"><![CDATA[logger = Packages.java.util.logging.Logger.getLogger("");

+

+ALL_ID = new Packages.java.lang.Integer(-1);

+SELECT_ID = new Packages.java.lang.Integer(-2);

+NA_ID = new Packages.java.lang.Integer(-3);

+userId = params["userId"];

+CUSTOMER_LEVEL_GROUP  = 2;

+CUSTOMER_LEVEL_CENTER = 3;

+MAX_PRODUCT_COUNT = 2;

+//user config variable: customerLevel

+//set this to either CUSTOMER_LEVEL_CENTER or CUSTOMER_LEVEL_GROUP

+customerLevel = CUSTOMER_LEVEL_CENTER;

+

+customerLevelLabel = (customerLevel == CUSTOMER_LEVEL_CENTER) ? "Center" : "Group";

+

+try {

+	dateFormat = new Packages.java.text.SimpleDateFormat("dd/MM/yyyy");

+    //collectionSheetService = new Packages.org.mifos.application.reports.business.service.CollectionSheetReportService();

+    collectionSheetService = Packages.org.mifos.application.reports.business.service.CollectionSheetReportServiceFactory.getCacheEnabledCollectionSheetReportService();

+} catch (e) {

+	logger.info("MCSReport: Ds-open: exception : MifosScriptedDS : "+e);

+}]]></method>

+            <method name="close"><![CDATA[collectionSheetService = null;]]></method>

+        </script-data-source>

+    </data-sources>

+    <data-sets>

+        <script-data-set name="Collections" id="260">

+            <list-property name="resultSetHints">

+                <structure>

+                    <property name="position">1</property>

+                    <property name="name">member_id</property>

+                    <property name="dataType">integer</property>

+                </structure>

+                <structure>

+                    <property name="position">2</property>

+                    <property name="name">group_id</property>

+                    <property name="dataType">integer</property>

+                </structure>

+                <structure>

+                    <property name="position">3</property>

+                    <property name="name">center_id</property>

+                    <property name="dataType">integer</property>

+                </structure>

+                <structure>

+                    <property name="position">4</property>

+                    <property name="name">member_name</property>

+                    <property name="dataType">string</property>

+                </structure>

+                <structure>

+                    <property name="position">5</property>

+                    <property name="name">group_name</property>

+                    <property name="dataType">string</property>

+                </structure>

+                <structure>

+                    <property name="position">6</property>

+                    <property name="name">center_name</property>

+                    <property name="dataType">string</property>

+                </structure>

+                <structure>

+                    <property name="position">7</property>

+                    <property name="name">loan_1_balance</property>

+                    <property name="dataType">float</property>

+                </structure>

+                <structure>

+                    <property name="position">8</property>

+                    <property name="name">loan_1_issues</property>

+                    <property name="dataType">float</property>

+                </structure>

+                <structure>

+                    <property name="position">9</property>

+                    <property name="name">loan_1_due</property>

+                    <property name="dataType">float</property>

+                </structure>

+                <structure>

+                    <property name="position">10</property>

+                    <property name="name">loan_2_balance</property>

+                    <property name="dataType">float</property>

+                </structure>

+                <structure>

+                    <property name="position">11</property>

+                    <property name="name">loan_2_issues</property>

+                    <property name="dataType">float</property>

+                </structure>

+                <structure>

+                    <property name="position">12</property>

+                    <property name="name">loan_2_due</property>

+                    <property name="dataType">float</property>

+                </structure>

+                <structure>

+                    <property name="position">13</property>

+                    <property name="name">savings_1_balance</property>

+                    <property name="dataType">float</property>

+                </structure>

+                <structure>

+                    <property name="position">14</property>

+                    <property name="name">savings_1_due</property>

+                    <property name="dataType">float</property>

+                </structure>

+                <structure>

+                    <property name="position">15</property>

+                    <property name="name">savings_2_balance</property>

+                    <property name="dataType">float</property>

+                </structure>

+                <structure>

+                    <property name="position">16</property>

+                    <property name="name">savings_2_due</property>

+                    <property name="dataType">float</property>

+                </structure>

+                <structure>

+                    <property name="position">17</property>

+                    <property name="name">other_fee</property>

+                    <property name="dataType">float</property>

+                </structure>

+                <structure>

+                    <property name="position">18</property>

+                    <property name="name">other_fine</property>

+                    <property name="dataType">float</property>

+                </structure>

+                <structure>

+                    <property name="position">19</property>

+                    <property name="name">loan_officer_id</property>

+                    <property name="dataType">integer</property>

+                </structure>

+                <structure>

+                    <property name="position">20</property>

+                    <property name="name">loan_officer_name</property>

+                    <property name="dataType">string</property>

+                </structure>

+                <structure>

+                    <property name="position">21</property>

+                    <property name="name">branch_name</property>

+                    <property name="dataType">string</property>

+                </structure>

+                <structure>

+                    <property name="position">22</property>

+                    <property name="name">loan_1_name</property>

+                    <property name="dataType">string</property>

+                </structure>

+                <structure>

+                    <property name="position">23</property>

+                    <property name="name">loan_2_name</property>

+                    <property name="dataType">string</property>

+                </structure>

+                <structure>

+                    <property name="position">24</property>

+                    <property name="name">savings_1_name</property>

+                    <property name="dataType">string</property>

+                </structure>

+                <structure>

+                    <property name="position">25</property>

+                    <property name="name">savings_2_name</property>

+                    <property name="dataType">string</property>

+                </structure>

+                <structure>

+                    <property name="position">26</property>

+                    <property name="name">customer_level_label</property>

+                    <property name="dataType">string</property>

+                </structure>

+            </list-property>

+            <list-property name="columnHints">

+                <structure>

+                    <property name="columnName">member_id</property>

+                </structure>

+                <structure>

+                    <property name="columnName">group_id</property>

+                </structure>

+                <structure>

+                    <property name="columnName">center_id</property>

+                </structure>

+                <structure>

+                    <property name="columnName">member_name</property>

+                </structure>

+                <structure>

+                    <property name="columnName">balance_bskl</property>

+                </structure>

+                <structure>

+                    <property name="columnName">center_name</property>

+                </structure>

+                <structure>

+                    <property name="columnName">loan_1_balance</property>

+                </structure>

+                <structure>

+                    <property name="columnName">loan_2_balance</property>

+                </structure>

+                <structure>

+                    <property name="columnName">savings_1_balance</property>

+                </structure>

+                <structure>

+                    <property name="columnName">savings_2_balance</property>

+                </structure>

+                <structure>

+                    <property name="columnName">loan_1_due</property>

+                </structure>

+                <structure>

+                    <property name="columnName">loan_2_due</property>

+                </structure>

+                <structure>

+                    <property name="columnName">savings_1_due</property>

+                </structure>

+                <structure>

+                    <property name="columnName">savings_2_due</property>

+                </structure>

+                <structure>

+                    <property name="columnName">group_name</property>

+                </structure>

+                <structure>

+                    <property name="columnName">kendra_name</property>

+                </structure>

+                <structure>

+                    <property name="columnName">loan_officer_id</property>

+                </structure>

+                <structure>

+                    <property name="columnName">loan_officer_name</property>

+                </structure>

+                <structure>

+                    <property name="columnName">branch_name</property>

+                </structure>

+                <structure>

+                    <property name="columnName">loan_1_issues</property>

+                </structure>

+                <structure>

+                    <property name="columnName">loan_2_issues</property>

+                </structure>

+                <structure>

+                    <property name="columnName">loan_1_name</property>

+                </structure>

+                <structure>

+                    <property name="columnName">loan_2_name</property>

+                </structure>

+                <structure>

+                    <property name="columnName">savings_1_name</property>

+                </structure>

+                <structure>

+                    <property name="columnName">savings_2_name</property>

+                </structure>

+                <structure>

+                    <property name="columnName">customer_level_label</property>

+                </structure>

+            </list-property>

+            <structure name="cachedMetaData">

+                <list-property name="resultSet">

+                    <structure>

+                        <property name="position">1</property>

+                        <property name="name">member_id</property>

+                        <property name="dataType">integer</property>

+                    </structure>

+                    <structure>

+                        <property name="position">2</property>

+                        <property name="name">group_id</property>

+                        <property name="dataType">integer</property>

+                    </structure>

+                    <structure>

+                        <property name="position">3</property>

+                        <property name="name">center_id</property>

+                        <property name="dataType">integer</property>

+                    </structure>

+                    <structure>

+                        <property name="position">4</property>

+                        <property name="name">member_name</property>

+                        <property name="dataType">string</property>

+                    </structure>

+                    <structure>

+                        <property name="position">5</property>

+                        <property name="name">group_name</property>

+                        <property name="dataType">string</property>

+                    </structure>

+                    <structure>

+                        <property name="position">6</property>

+                        <property name="name">center_name</property>

+                        <property name="dataType">string</property>

+                    </structure>

+                    <structure>

+                        <property name="position">7</property>

+                        <property name="name">loan_1_balance</property>

+                        <property name="dataType">float</property>

+                    </structure>

+                    <structure>

+                        <property name="position">8</property>

+                        <property name="name">loan_1_issues</property>

+                        <property name="dataType">float</property>

+                    </structure>

+                    <structure>

+                        <property name="position">9</property>

+                        <property name="name">loan_1_due</property>

+                        <property name="dataType">float</property>

+                    </structure>

+                    <structure>

+                        <property name="position">10</property>

+                        <property name="name">loan_2_balance</property>

+                        <property name="dataType">float</property>

+                    </structure>

+                    <structure>

+                        <property name="position">11</property>

+                        <property name="name">loan_2_issues</property>

+                        <property name="dataType">float</property>

+                    </structure>

+                    <structure>

+                        <property name="position">12</property>

+                        <property name="name">loan_2_due</property>

+                        <property name="dataType">float</property>

+                    </structure>

+                    <structure>

+                        <property name="position">13</property>

+                        <property name="name">savings_1_balance</property>

+                        <property name="dataType">float</property>

+                    </structure>

+                    <structure>

+                        <property name="position">14</property>

+                        <property name="name">savings_1_due</property>

+                        <property name="dataType">float</property>

+                    </structure>

+                    <structure>

+                        <property name="position">15</property>

+                        <property name="name">savings_2_balance</property>

+                        <property name="dataType">float</property>

+                    </structure>

+                    <structure>

+                        <property name="position">16</property>

+                        <property name="name">savings_2_due</property>

+                        <property name="dataType">float</property>

+                    </structure>

+                    <structure>

+                        <property name="position">17</property>

+                        <property name="name">other_fee</property>

+                        <property name="dataType">float</property>

+                    </structure>

+                    <structure>

+                        <property name="position">18</property>

+                        <property name="name">other_fine</property>

+                        <property name="dataType">float</property>

+                    </structure>

+                    <structure>

+                        <property name="position">19</property>

+                        <property name="name">loan_officer_id</property>

+                        <property name="dataType">integer</property>

+                    </structure>

+                    <structure>

+                        <property name="position">20</property>

+                        <property name="name">loan_officer_name</property>

+                        <property name="dataType">string</property>

+                    </structure>

+                    <structure>

+                        <property name="position">21</property>

+                        <property name="name">branch_name</property>

+                        <property name="dataType">string</property>

+                    </structure>

+                    <structure>

+                        <property name="position">22</property>

+                        <property name="name">loan_1_name</property>

+                        <property name="dataType">string</property>

+                    </structure>

+                    <structure>

+                        <property name="position">23</property>

+                        <property name="name">loan_2_name</property>

+                        <property name="dataType">string</property>

+                    </structure>

+                    <structure>

+                        <property name="position">24</property>

+                        <property name="name">savings_1_name</property>

+                        <property name="dataType">string</property>

+                    </structure>

+                    <structure>

+                        <property name="position">25</property>

+                        <property name="name">savings_2_name</property>

+                        <property name="dataType">string</property>

+                    </structure>

+                    <structure>

+                        <property name="position">26</property>

+                        <property name="name">customer_level_label</property>

+                        <property name="dataType">string</property>

+                    </structure>

+                </list-property>

+            </structure>

+            <property name="dataSource">MifosCollectionSheet</property>

+            <method name="open"><![CDATA[collectionSheetReportsIterator = collectionSheetService.getCollectionSheets(params["branchId"],params["loanOfficerId"],

+    params["centerId"],params["meetingDate"], customerLevel).iterator();]]></method>

+            <method name="fetch"><![CDATA[if(!collectionSheetReportsIterator.hasNext()) return false;

+var collectionSheetRow = collectionSheetReportsIterator.next();

+row["member_id"] = collectionSheetRow.getCustomerId();

+row["group_id"] = collectionSheetRow.getGroupId();

+row["center_id"] = collectionSheetRow.getCenterId();

+row["loan_officer_id"] = collectionSheetRow.getLoanOfficerId();

+row["member_name"] = collectionSheetRow.getCustomerName();

+row["branch_name"] = collectionSheetRow.getBranchName();

+row["center_name"] = collectionSheetRow.getCenterName();

+row["group_name"] = collectionSheetRow.getGroupName();

+row["loan_officer_name"] = collectionSheetRow.getLoanOfficerName();

+row["customer_level_label"] = customerLevelLabel;

+

+for(var i=0;i<MAX_PRODUCT_COUNT;i++){

+	var loanProduct = collectionSheetRow.getLoanProduct(i);

+	row["loan_"+(i+1)+"_balance"] = loanProduct.getBalance();

+	row["loan_"+(i+1)+"_due"] = loanProduct.getDue();

+	row["loan_"+(i+1)+"_issues"] = loanProduct.getIssues();

+	row["loan_"+(i+1)+"_name"] = loanProduct.getOfferingShortName();

+}

+

+for(var i=0;i<MAX_PRODUCT_COUNT;i++){

+	var savingsProduct = collectionSheetRow.getSavingsProduct(i);

+	row["savings_"+(i+1)+"_balance"] = savingsProduct.getBalance();

+	row["savings_"+(i+1)+"_due"] = savingsProduct.getDue();

+	row["savings_"+(i+1)+"_name"] = savingsProduct.getOfferingShortName();

+}

+

+row["other_fine"] = collectionSheetRow.getOtherFine();

+row["other_fee"] = collectionSheetRow.getOtherFee();

+

+return true;]]></method>

+            <method name="close"><![CDATA[collectionSheetReportsIterator=null;]]></method>

+        </script-data-set>

+        <script-data-set name="BranchOffices" id="902">

+            <list-property name="resultSetHints">

+                <structure>

+                    <property name="position">1</property>

+                    <property name="name">ds_branchId</property>

+                    <property name="dataType">integer</property>

+                </structure>

+                <structure>

+                    <property name="position">2</property>

+                    <property name="name">ds_branchName</property>

+                    <property name="dataType">string</property>

+                </structure>

+            </list-property>

+            <list-property name="columnHints">

+                <structure>

+                    <property name="columnName">ds_branchId</property>

+                </structure>

+                <structure>

+                    <property name="columnName">ds_branchName</property>

+                </structure>

+            </list-property>

+            <structure name="cachedMetaData">

+                <list-property name="resultSet">

+                    <structure>

+                        <property name="position">1</property>

+                        <property name="name">ds_branchId</property>

+                        <property name="dataType">integer</property>

+                    </structure>

+                    <structure>

+                        <property name="position">2</property>

+                        <property name="name">ds_branchName</property>

+                        <property name="dataType">string</property>

+                    </structure>

+                </list-property>

+            </structure>

+            <property name="dataSource">MifosCollectionSheet</property>

+            <method name="open"><![CDATA[try {

+	branchOfficeIterator = collectionSheetService.getBranchOffices(userId).iterator();

+} catch(e) {

+	logger.info("MCSReport: BranchOffices: open: exception : "+e);

+}]]></method>

+            <method name="fetch"><![CDATA[if (!branchOfficeIterator.hasNext()) return false;

+

+var branchOffice = branchOfficeIterator.next();

+row["ds_branchId"] = branchOffice.getId();

+row["ds_branchName"] = branchOffice.getDisplayName();

+return true;]]></method>

+        </script-data-set>

+        <script-data-set name="LoanOfficers" id="903">

+            <list-property name="resultSetHints">

+                <structure>

+                    <property name="position">0</property>

+                    <property name="name">ds_loanOfficerId</property>

+                    <property name="dataType">integer</property>

+                </structure>

+                <structure>

+                    <property name="position">1</property>

+                    <property name="name">ds_loanOfficerName</property>

+                    <property name="dataType">string</property>

+                </structure>

+            </list-property>

+            <list-property name="columnHints">

+                <structure>

+                    <property name="columnName">ds_loanOfficerId</property>

+                </structure>

+                <structure>

+                    <property name="columnName">ds_loanOfficerName</property>

+                </structure>

+            </list-property>

+            <structure name="cachedMetaData">

+                <list-property name="resultSet">

+                    <structure>

+                        <property name="position">1</property>

+                        <property name="name">ds_loanOfficerId</property>

+                        <property name="dataType">integer</property>

+                    </structure>

+                    <structure>

+                        <property name="position">2</property>

+                        <property name="name">ds_loanOfficerName</property>

+                        <property name="dataType">string</property>

+                    </structure>

+                </list-property>

+            </structure>

+            <property name="dataSource">MifosCollectionSheet</property>

+            <method name="open"><![CDATA[try {

+	var branchId = params["branchId"];

+	loanOfficerIterator = collectionSheetService.getActiveLoanOfficers(userId, branchId).iterator();

+} catch(e) {

+	logger.info("MCSReport: LoanOfficers: open: exception : "+e);

+}]]></method>

+            <method name="fetch"><![CDATA[if(!loanOfficerIterator.hasNext()) return false;

+

+var loanOfficer = loanOfficerIterator.next();

+row["ds_loanOfficerId"] = loanOfficer.getId();

+row["ds_loanOfficerName"] = loanOfficer.getDisplayName();

+return true;]]></method>

+            <method name="close"><![CDATA[loanOfficerIterator = null;]]></method>

+        </script-data-set>

+        <script-data-set name="Centers" id="904">

+            <list-property name="resultSetHints">

+                <structure>

+                    <property name="position">0</property>

+                    <property name="name">ds_centerId</property>

+                    <property name="dataType">integer</property>

+                </structure>

+                <structure>

+                    <property name="position">1</property>

+                    <property name="name">ds_centerName</property>

+                    <property name="dataType">string</property>

+                </structure>

+            </list-property>

+            <list-property name="columnHints">

+                <structure>

+                    <property name="columnName">ds_centerId</property>

+                </structure>

+                <structure>

+                    <property name="columnName">ds_centerName</property>

+                </structure>

+            </list-property>

+            <structure name="cachedMetaData">

+                <list-property name="resultSet">

+                    <structure>

+                        <property name="position">1</property>

+                        <property name="name">ds_centerId</property>

+                        <property name="dataType">integer</property>

+                    </structure>

+                    <structure>

+                        <property name="position">2</property>

+                        <property name="name">ds_centerName</property>

+                        <property name="dataType">string</property>

+                    </structure>

+                </list-property>

+            </structure>

+            <property name="dataSource">MifosCollectionSheet</property>

+            <method name="open"><![CDATA[try {

+	var branch = params["branchId"];

+	var officer = params["loanOfficerId"];

+	

+	if(!(officer instanceof Packages.java.lang.Integer)) {

+		var pbs = new Packages.org.mifos.application.personnel.business.service.PersonnelBusinessService();

+		//logger.info("User"+params["userId"]);

+		officer = pbs.getPersonnel(Packages.java.lang.Short.valueOf(""+params["userId"])).isLoanOfficer() ? -2 : -1;

+	}  

+	if(customerLevel == CUSTOMER_LEVEL_CENTER){

+	    centerIterator = collectionSheetService.getActiveCentersForLoanOfficer(officer, branch).iterator();

+	}else if(customerLevel == CUSTOMER_LEVEL_GROUP){

+	    centerIterator = collectionSheetService.getActiveGroupsForLoanOfficer(officer,branch).iterator();

+	}else{

+	    logger.info("MCSReport : Centers open: Invalid customer level:" + customerLevel);

+	}

+} catch(e) {

+	logger.info("MCSReport: CenterOffices: open: exception : "+e);

+}]]></method>

+            <method name="fetch"><![CDATA[if(!centerIterator.hasNext()) return false;

+	

+var center = centerIterator.next();

+row["ds_centerId"] = center.getId();

+row["ds_centerName"] = center.getDisplayName();

+return true;]]></method>

+            <method name="close"><![CDATA[centerIterator = null;]]></method>

+        </script-data-set>

+        <script-data-set name="MeetingDates" id="909">

+            <list-property name="resultSetHints">

+                <structure>

+                    <property name="position">1</property>

+                    <property name="name">ds_meetingDate</property>

+                    <property name="dataType">date-time</property>

+                </structure>

+                <structure>

+                    <property name="position">2</property>

+                    <property name="name">ds_meetingDisplayDate</property>

+                    <property name="dataType">string</property>

+                </structure>

+            </list-property>

+            <list-property name="columnHints">

+                <structure>

+                    <property name="columnName">ds_meetingDate</property>

+                </structure>

+                <structure>

+                    <property name="columnName">ds_meetingDisplayDate</property>

+                </structure>

+            </list-property>

+            <structure name="cachedMetaData">

+                <list-property name="resultSet">

+                    <structure>

+                        <property name="position">1</property>

+                        <property name="name">ds_meetingDate</property>

+                        <property name="dataType">date-time</property>

+                    </structure>

+                    <structure>

+                        <property name="position">2</property>

+                        <property name="name">ds_meetingDisplayDate</property>

+                        <property name="dataType">string</property>

+                    </structure>

+                </list-property>

+            </structure>

+            <property name="dataSource">MifosCollectionSheet</property>

+            <method name="open"><![CDATA[try {

+	var branchId = params["branchId"];

+	var loanOfficerId = params["loanOfficerId"];

+	if(loanOfficerId instanceof Packages.java.lang.Integer && NA_ID.equals(loanOfficerId) && !NA_ID.equals(branchId)) {

+		loanOfficerId = ALL_ID;

+	}  

+	if(!(loanOfficerId instanceof Packages.java.lang.Integer)) {

+		loanOfficerId = SELECT_ID.equals(branchId) ? SELECT_ID : ALL_ID;

+	}  

+	var centerId = params["centerId"];

+	if(!(centerId instanceof Packages.java.lang.Integer)) {

+		centerId = SELECT_ID.equals(loanOfficerId)? SELECT_ID : ALL_ID;		

+	}

+	

+	if(customerLevel == 3){

+        meetingDateIterator = collectionSheetService.getMeetingDatesForCenter(

+		    branchId, centerId,loanOfficerId).iterator();	

+	}else if(customerLevel == 2){

+	    meetingDateIterator = collectionSheetService.getMeetingDatesForGroup(

+		    branchId, centerId,loanOfficerId).iterator();	

+	}else {

+	    logger.info("MCSReport: MeetingDates: open: invalid customerLevel:" + customerLevel);

+	}

+	

+} catch(e) {

+	logger.info("MCSReport: MeetingDates: open: exception : "+e);

+}]]></method>

+            <method name="fetch"><![CDATA[if(!meetingDateIterator.hasNext()) return false;

+var meetingDate = meetingDateIterator.next();

+row["ds_meetingDate"] = meetingDate.getDate();

+row["ds_meetingDisplayDate"] = meetingDate.getDisplayDate();

+return true;]]></method>

+            <method name="close"><![CDATA[meetingDateIterator = null;]]></method>

+        </script-data-set>

+    </data-sets>

+    <styles>

+        <style name="pageNumber" id="53">

+            <property name="textAlign">center</property>

+            <property name="verticalAlign">top</property>

+        </style>

+        <style name="pageHeaderLeft" id="62">

+            <property name="fontFamily">"Arial"</property>

+            <property name="fontSize">18pt</property>

+        </style>

+        <style name="pageHeaderRight" id="63">

+            <property name="fontFamily">"Arial"</property>

+            <property name="fontSize">25pt</property>

+            <property name="color">#C0C0C0</property>

+            <property name="textAlign">right</property>

+            <property name="verticalAlign">top</property>

+        </style>

+        <style name="pageHeader" id="64">

+            <property name="borderBottomStyle">solid</property>

+            <property name="borderBottomWidth">2pt</property>

+        </style>

+        <style name="tableHeader" id="239">

+            <property name="backgroundColor">#C0C0C0</property>

+            <property name="fontFamily">"Arial"</property>

+            <property name="fontSize">12pt</property>

+            <property name="fontWeight">bold</property>

+            <property name="textAlign">center</property>

+        </style>

+        <style name="tableSubheader" id="240">

+            <property name="fontFamily">"Arial"</property>

+            <property name="fontSize">9pt</property>

+            <property name="fontWeight">bold</property>

+            <property name="textAlign">center</property>

+        </style>

+        <style name="tableMainSubheader" id="245">

+            <property name="backgroundColor">#C0C0C0</property>

+            <property name="fontFamily">"Arial"</property>

+            <property name="fontSize">10pt</property>

+            <property name="fontWeight">bold</property>

+            <property name="textAlign">center</property>

+            <property name="verticalAlign">top</property>

+        </style>

+        <style name="pageSubheaderRight" id="251">

+            <property name="fontFamily">"Arial"</property>

+            <property name="fontSize">10pt</property>

+            <property name="textAlign">right</property>

+        </style>

+        <style name="pageSubheaderLeft" id="252">

+            <property name="fontFamily">"Arial"</property>

+            <property name="fontSize">10pt</property>

+        </style>

+        <style name="pageSubheader" id="253">

+            <property name="marginBottom">10pt</property>

+        </style>

+        <style name="groupFooter" id="379">

+            <property name="fontFamily">"Arial"</property>

+            <property name="fontSize">8pt</property>

+            <property name="borderBottomStyle">double</property>

+            <property name="borderBottomWidth">2pt</property>

+            <property name="borderTopStyle">solid</property>

+            <property name="borderTopWidth">1pt</property>

+            <property name="paddingRight">5px</property>

+            <property name="textAlign">right</property>

+        </style>

+        <style name="rightColumnBorder" id="381">

+            <property name="borderRightStyle">solid</property>

+            <property name="borderRightWidth">1pt</property>

+        </style>

+        <style name="rightBorder" id="382">

+            <property name="borderRightStyle">solid</property>

+            <property name="borderRightWidth">1pt</property>

+        </style>

+        <style name="aggregateHeader" id="694">

+            <property name="fontFamily">"Arial"</property>

+            <property name="fontSize">12pt</property>

+            <property name="fontWeight">bold</property>

+        </style>

+        <style name="groupRowHeader" id="757">

+            <property name="fontFamily">"Arial"</property>

+            <property name="fontSize">8pt</property>

+            <property name="fontWeight">bold</property>

+        </style>

+        <style name="reportSummaryHeader" id="759">

+            <property name="fontFamily">"Arial"</property>

+            <property name="fontSize">11pt</property>

+            <property name="fontWeight">bold</property>

+            <property name="borderBottomStyle">solid</property>

+            <property name="borderBottomWidth">thin</property>

+            <property name="borderTopStyle">solid</property>

+            <property name="borderTopWidth">thin</property>

+            <property name="verticalAlign">bottom</property>

+        </style>

+        <style name="summaryText" id="824">

+            <property name="fontFamily">"Arial"</property>

+            <property name="fontSize">12pt</property>

+        </style>

+        <style name="idText" id="835">

+            <property name="textAlign">center</property>

+        </style>

+        <style name="numberFormat" id="836">

+            <property name="fontFamily">"Arial"</property>

+            <property name="paddingRight">5px</property>

+            <property name="textAlign">right</property>

+        </style>

+        <style name="signatureLine" id="871">

+            <property name="borderBottomStyle">dotted</property>

+            <property name="borderBottomWidth">1pt</property>

+        </style>

+        <style name="rowText" id="995">

+            <property name="fontFamily">"Arial"</property>

+            <property name="fontSize">8pt</property>

+        </style>

+        <style name="centerFooter" id="1004">

+            <property name="fontFamily">"Arial"</property>

+            <property name="fontSize">8pt</property>

+            <property name="borderBottomColor">#808080</property>

+            <property name="borderBottomStyle">solid</property>

+            <property name="borderBottomWidth">thin</property>

+            <property name="borderLeftColor">#808080</property>

+            <property name="borderLeftStyle">none</property>

+            <property name="borderLeftWidth">thin</property>

+            <property name="borderRightColor">#808080</property>

+            <property name="borderRightStyle">none</property>

+            <property name="borderRightWidth">thin</property>

+        </style>

+    </styles>

+    <page-setup>

+        <simple-master-page name="Simple MasterPage" id="2">

+            <property name="type">a4</property>

+            <property name="orientation">landscape</property>

+            <property name="topMargin">0.5cm</property>

+            <property name="leftMargin">0.5cm</property>

+            <property name="bottomMargin">0.5cm</property>

+            <property name="rightMargin">0.5cm</property>

+            <page-header>

+                <grid id="48">

+                    <property name="style">pageNumber</property>

+                    <property name="width">100%</property>

+                    <column id="49"/>

+                    <row id="50">

+                        <cell id="51">

+                            <text id="52">

+                                <property name="fontFamily">"Arial"</property>

+                                <property name="contentType">html</property>

+                                <text-property name="content"><![CDATA[Page <value-of>pageNumber</value-of>]]></text-property>

+                            </text>

+                        </cell>

+                    </row>

+                </grid>

+            </page-header>

+        </simple-master-page>

+    </page-setup>

+    <body>

+        <table id="135">

+            <property name="width">100%</property>

+            <property name="dataSet">Collections</property>

+            <list-property name="boundDataColumns">

+                <structure>

+                    <property name="name">member_id</property>

+                    <expression name="expression">dataSetRow["member_id"]</expression>

+                    <property name="dataType">integer</property>

+                </structure>

+                <structure>

+                    <property name="name">member_name</property>

+                    <expression name="expression">dataSetRow["member_name"]</expression>

+                    <property name="dataType">string</property>

+                </structure>

+                <structure>

+                    <property name="name">loan_1_balance</property>

+                    <expression name="expression">dataSetRow["loan_1_balance"]</expression>

+                    <property name="dataType">float</property>

+                </structure>

+                <structure>

+                    <property name="name">loan_2_balance</property>

+                    <expression name="expression">dataSetRow["loan_2_balance"]</expression>

+                    <property name="dataType">float</property>

+                </structure>

+                <structure>

+                    <property name="name">savings_1_balance</property>

+                    <expression name="expression">dataSetRow["savings_1_balance"]</expression>

+                    <property name="dataType">float</property>

+                </structure>

+                <structure>

+                    <property name="name">savings_2_balance</property>

+                    <expression name="expression">dataSetRow["savings_2_balance"]</expression>

+                    <property name="dataType">float</property>

+                </structure>

+                <structure>

+                    <property name="name">loan_1_due</property>

+                    <expression name="expression">dataSetRow["loan_1_due"]</expression>

+                    <property name="dataType">float</property>

+                </structure>

+                <structure>

+                    <property name="name">loan_2_due</property>

+                    <expression name="expression">dataSetRow["loan_2_due"]</expression>

+                    <property name="dataType">float</property>

+                </structure>

+                <structure>

+                    <property name="name">savings_1_due</property>

+                    <expression name="expression">dataSetRow["savings_1_due"]</expression>

+                    <property name="dataType">float</property>

+                </structure>

+                <structure>

+                    <property name="name">savings_2_due</property>

+                    <expression name="expression">dataSetRow["savings_2_due"]</expression>

+                    <property name="dataType">float</property>

+                </structure>

+                <structure>

+                    <property name="name">due_total</property>

+                    <expression name="expression">row["loan_1_due"]+row["loan_2_due"]</expression>

+                    <property name="dataType">float</property>

+                </structure>

+                <structure>

+                    <property name="name">other_fee</property>

+                    <expression name="expression">dataSetRow["other_fee"]</expression>

+                    <property name="dataType">float</property>

+                </structure>

+                <structure>

+                    <property name="name">other_fine</property>

+                    <expression name="expression">dataSetRow["other_fine"]</expression>

+                    <property name="dataType">float</property>

+                </structure>

+                <structure>

+                    <property name="name">group_id</property>

+                    <expression name="expression">row["group_name"]</expression>

+                    <property name="dataType">string</property>

+                </structure>

+                <structure>

+                    <property name="name">center_id</property>

+                    <expression name="expression">dataSetRow["center_id"]</expression>

+                    <property name="dataType">integer</property>

+                </structure>

+                <structure>

+                    <property name="name">group_name</property>

+                    <expression name="expression">dataSetRow["group_name"]</expression>

+                    <property name="dataType">string</property>

+                </structure>

+                <structure>

+                    <property name="name">center_name</property>

+                    <expression name="expression">dataSetRow["center_name"]</expression>

+                    <property name="dataType">string</property>

+                </structure>

+                <structure>

+                    <property name="name">group_loan_1_balance_total</property>

+                    <expression name="expression">Total.sum(row["loan_1_balance"])</expression>

+                    <property name="dataType">float</property>

+                    <property name="aggregateOn">group</property>

+                </structure>

+                <structure>

+                    <property name="name">center_loan_1_balance_total</property>

+                    <expression name="expression">Total.sum(row["group_loan_1_balance_total"])</expression>

+                    <property name="dataType">float</property>

+                    <property name="aggregateOn">center_group</property>

+                </structure>

+                <structure>

+                    <property name="name">group_loan_2_balance_total</property>

+                    <expression name="expression">Total.sum(row["loan_2_balance"])</expression>

+                    <property name="dataType">float</property>

+                    <property name="aggregateOn">group</property>

+                </structure>

+                <structure>

+                    <property name="name">group_savings_1_balance_total</property>

+                    <expression name="expression">Total.sum(row["savings_1_balance"])</expression>

+                    <property name="dataType">float</property>

+                    <property name="aggregateOn">group</property>

+                </structure>

+                <structure>

+                    <property name="name">group_savings_2_balance_total</property>

+                    <expression name="expression">Total.sum(row["savings_2_balance"])</expression>

+                    <property name="dataType">float</property>

+                    <property name="aggregateOn">group</property>

+                </structure>

+                <structure>

+                    <property name="name">group_loan_1_due_total</property>

+                    <expression name="expression">Total.sum(row["loan_1_due"])</expression>

+                    <property name="dataType">float</property>

+                    <property name="aggregateOn">group</property>

+                </structure>

+                <structure>

+                    <property name="name">group_loan_2_due_total</property>

+                    <expression name="expression">Total.sum(row["loan_2_due"])</expression>

+                    <property name="dataType">float</property>

+                    <property name="aggregateOn">group</property>

+                </structure>

+                <structure>

+                    <property name="name">group_savings_1_due_total</property>

+                    <expression name="expression">Total.sum(row["savings_1_due"])</expression>

+                    <property name="dataType">float</property>

+                    <property name="aggregateOn">group</property>

+                </structure>

+                <structure>

+                    <property name="name">group_savings_2_due_total</property>

+                    <expression name="expression">Total.sum(row["savings_2_due"])</expression>

+                    <property name="dataType">float</property>

+                    <property name="aggregateOn">group</property>

+                </structure>

+                <structure>

+                    <property name="name">group_due_total</property>

+                    <expression name="expression">Total.sum(row["due_total"])</expression>

+                    <property name="dataType">float</property>

+                    <property name="aggregateOn">group</property>

+                </structure>

+                <structure>

+                    <property name="name">group_other_fee_total</property>

+                    <expression name="expression">Total.sum(row["other_fee"])</expression>

+                    <property name="dataType">float</property>

+                    <property name="aggregateOn">group</property>

+                </structure>

+                <structure>

+                    <property name="name">group_other_fine_total</property>

+                    <expression name="expression">Total.sum(row["other_fine"])</expression>

+                    <property name="dataType">float</property>

+                    <property name="aggregateOn">group</property>

+                </structure>

+                <structure>

+                    <property name="name">center_loan_2_balance_total</property>

+                    <expression name="expression">Total.sum(row["group_loan_2_balance_total"])</expression>

+                    <property name="dataType">float</property>

+                    <property name="aggregateOn">center_group</property>

+                </structure>

+                <structure>

+                    <property name="name">center_other_fine_total</property>

+                    <expression name="expression">Total.sum(row["group_other_fine_total"])</expression>

+                    <property name="dataType">float</property>

+                    <property name="aggregateOn">center_group</property>

+                </structure>

+                <structure>

+                    <property name="name">center_savings_1_balance_total</property>

+                    <expression name="expression">Total.sum(row["group_savings_1_balance_total"])</expression>

+                    <property name="dataType">float</property>

+                    <property name="aggregateOn">center_group</property>

+                </structure>

+                <structure>

+                    <property name="name">center_savings_2_balance_total</property>

+                    <expression name="expression">Total.sum(row["group_savings_2_balance_total"])</expression>

+                    <property name="dataType">float</property>

+                    <property name="aggregateOn">center_group</property>

+                </structure>

+                <structure>

+                    <property name="name">center_loan_1_due_total</property>

+                    <expression name="expression">Total.sum(row["group_loan_1_due_total"])</expression>

+                    <property name="dataType">float</property>

+                    <property name="aggregateOn">center_group</property>

+                </structure>

+                <structure>

+                    <property name="name">center_loan_2_due_total</property>

+                    <expression name="expression">Total.sum(row["group_loan_2_due_total"])</expression>

+                    <property name="dataType">float</property>

+                    <property name="aggregateOn">center_group</property>

+                </structure>

+                <structure>

+                    <property name="name">center_savings_1_due_total</property>

+                    <expression name="expression">Total.sum(row["group_savings_1_due_total"])</expression>

+                    <property name="dataType">float</property>

+                    <property name="aggregateOn">center_group</property>

+                </structure>

+                <structure>

+                    <property name="name">center_savings_2_due_total</property>

+                    <expression name="expression">Total.sum(row["group_savings_2_due_total"])</expression>

+                    <property name="dataType">float</property>

+                    <property name="aggregateOn">center_group</property>

+                </structure>

+                <structure>

+                    <property name="name">center_due_total</property>

+                    <expression name="expression">Total.sum(row["group_due_total"])</expression>

+                    <property name="dataType">float</property>

+                    <property name="aggregateOn">center_group</property>

+                </structure>

+                <structure>

+                    <property name="name">center_other_fee_total</property>

+                    <expression name="expression">Total.sum(row["group_other_fee_total"])</expression>

+                    <property name="dataType">float</property>

+                    <property name="aggregateOn">center_group</property>

+                </structure>

+                <structure>

+                    <property name="name">loan_officer_id</property>

+                    <expression name="expression">dataSetRow["loan_officer_id"]</expression>

+                    <property name="dataType">integer</property>

+                </structure>

+                <structure>

+                    <property name="name">loan_officer_name</property>

+                    <expression name="expression">dataSetRow["loan_officer_name"]</expression>

+                    <property name="dataType">string</property>

+                </structure>

+                <structure>

+                    <property name="name">branch_name</property>

+                    <expression name="expression">dataSetRow["branch_name"]</expression>

+                    <property name="dataType">string</property>

+                </structure>

+                <structure>

+                    <property name="name">rpt_center_name</property>

+                    <expression name="expression">row["center_name"]</expression>

+                    <property name="dataType">string</property>

+                </structure>

+                <structure>

+                    <property name="name">due_collection</property>

+                    <expression name="expression">row["center_due_total"]</expression>

+                    <property name="dataType">float</property>

+                </structure>

+                <structure>

+                    <property name="name">other_collection</property>

+                    <expression name="expression">row["center_other_fine_total"]+row["center_other_fee_total"]</expression>

+                    <property name="dataType">float</property>

+                </structure>

+                <structure>

+                    <property name="name">total_collection</property>

+                    <expression name="expression">row["other_collection"]+row["due_collection"]</expression>

+                    <property name="dataType">float</property>

+                </structure>

+                <structure>

+                    <property name="name">rpt_branch</property>

+                    <expression name="expression">row["branch_name"]</expression>

+                    <property name="dataType">string</property>

+                </structure>

+                <structure>

+                    <property name="name">rpt_center</property>

+                    <expression name="expression">row["center_name"]</expression>

+                    <property name="dataType">string</property>

+                </structure>

+                <structure>

+                    <property name="name">rpt_loanOfficer</property>

+                    <expression name="expression">row["loan_officer_name"]</expression>

+                    <property name="dataType">string</property>

+                </structure>

+                <structure>

+                    <property name="name">rpt_meetingDate</property>

+                    <expression name="expression">new Packages.java.text.SimpleDateFormat("dd/MM/yyyy").format(params["meetingDate"])</expression>

+                    <property name="dataType">string</property>

+                </structure>

+                <structure>

+                    <property name="name">loan_1_issues</property>

+                    <expression name="expression">dataSetRow["loan_1_issues"]</expression>

+                    <property name="dataType">float</property>

+                </structure>

+                <structure>

+                    <property name="name">group_loan_1_issues_total</property>

+                    <expression name="expression">Total.sum(row["loan_1_issues"])</expression>

+                    <property name="dataType">float</property>

+                    <property name="aggregateOn">group</property>

+                </structure>

+                <structure>

+                    <property name="name">center_loan_1_issues_total</property>

+                    <expression name="expression">Total.sum(row["group_loan_1_issues_total"])</expression>

+                    <property name="dataType">float</property>

+                    <property name="aggregateOn">center_group</property>

+                </structure>

+                <structure>

+                    <property name="name">loan_2_issues</property>

+                    <expression name="expression">dataSetRow["loan_2_issues"]</expression>

+                    <property name="dataType">float</property>

+                </structure>

+                <structure>

+                    <property name="name">group_loan_2_issues_total</property>

+                    <expression name="expression">Total.sum(row["loan_2_issues"])</expression>

+                    <property name="dataType">float</property>

+                    <property name="aggregateOn">group</property>

+                </structure>

+                <structure>

+                    <property name="name">center_loan_2_issues_total</property>

+                    <expression name="expression">Total.sum(row["group_loan_2_issues_total"])</expression>

+                    <property name="dataType">float</property>

+                    <property name="aggregateOn">center_group</property>

+                </structure>

+                <structure>

+                    <property name="name">loan_1_name</property>

+                    <expression name="expression">dataSetRow["loan_1_name"]</expression>

+                    <property name="dataType">string</property>

+                </structure>

+                <structure>

+                    <property name="name">loan_2_name</property>

+                    <expression name="expression">dataSetRow["loan_2_name"]</expression>

+                    <property name="dataType">string</property>

+                </structure>

+                <structure>

+                    <property name="name">savings_1_name</property>

+                    <expression name="expression">dataSetRow["savings_1_name"]</expression>

+                    <property name="dataType">string</property>

+                </structure>

+                <structure>

+                    <property name="name">savings_2_name</property>

+                    <expression name="expression">dataSetRow["savings_2_name"]</expression>

+                    <property name="dataType">string</property>

+                </structure>

+                <structure>

+                    <property name="name">customer_level_label</property>

+                    <expression name="expression">dataSetRow["customer_level_label"]</expression>

+                    <property name="dataType">string</property>

+                </structure>

+            </list-property>

+            <column id="175">

+                <property name="width">1cm</property>

+            </column>

+            <column id="176">

+                <property name="width">4cm</property>

+            </column>

+            <column id="177">

+                <property name="width">1.7cm</property>

+            </column>

+            <column id="178">

+                <property name="width">1.7cm</property>

+            </column>

+            <column id="179">

+                <property name="width">1.7cm</property>

+            </column>

+            <column id="180">

+                <property name="width">1.7cm</property>

+            </column>

+            <column id="181">

+                <property name="width">1.7cm</property>

+            </column>

+            <column id="182">

+                <property name="width">1.7cm</property>

+            </column>

+            <column id="183">

+                <property name="width">1.7cm</property>

+            </column>

+            <column id="184">

+                <property name="width">1.7cm</property>

+            </column>

+            <column id="185">

+                <property name="width">1.7cm</property>

+            </column>

+            <column id="186">

+                <property name="width">1.7cm</property>

+            </column>

+            <column id="208">

+                <property name="width">1.7cm</property>

+            </column>

+            <column id="851">

+                <property name="width">1.7cm</property>

+            </column>

+            <column id="978">

+                <property name="width">1.7cm</property>

+            </column>

+            <column id="866">

+                <property name="width">1cm</property>

+            </column>

+            <group id="727">

+                <property name="groupName">loan_officer_group</property>

+                <property name="interval">none</property>

+                <property name="sortDirection">asc</property>

+                <expression name="keyExpr">row["loan_officer_id"]</expression>

+                <expression name="toc">row["loan_officer_name"]</expression>

+                <property name="repeatHeader">false</property>

+                <property name="hideDetail">false</property>

+                <property name="pageBreakAfter">always-excluding-last</property>

+                <property name="pageBreakBefore">auto</property>

+                <header>

+                    <row id="945">

+                        <property name="height">0.1in</property>

+                        <list-property name="visibility">

+                            <structure>

+                                <property name="format">all</property>

+                                <expression name="valueExpr">true</expression>

+                            </structure>

+                        </list-property>

+                        <cell id="946"/>

+                        <cell id="947"/>

+                        <cell id="948"/>

+                        <cell id="949"/>

+                        <cell id="950"/>

+                        <cell id="951"/>

+                        <cell id="952"/>

+                        <cell id="953"/>

+                        <cell id="954"/>

+                        <cell id="955"/>

+                        <cell id="956"/>

+                        <cell id="957"/>

+                        <cell id="958"/>

+                        <cell id="959"/>

+                        <cell id="962"/>

+                        <cell id="960"/>

+                    </row>

+                </header>

+            </group>

+            <group id="538">

+                <property name="groupName">center_group</property>

+                <property name="interval">none</property>

+                <property name="sortDirection">asc</property>

+                <expression name="keyExpr">row["center_id"]</expression>

+                <expression name="toc">row["center_name"]</expression>

+                <property name="repeatHeader">false</property>

+                <property name="hideDetail">false</property>

+                <property name="pageBreakAfter">always-excluding-last</property>

+                <property name="pageBreakBefore">auto</property>

+                <header>

+                    <row id="539">

+                        <cell id="436">

+                            <property name="colSpan">16</property>

+                            <property name="rowSpan">1</property>

+                            <grid id="54">

+                                <property name="width">100%</property>

+                                <column id="55"/>

+                                <column id="56"/>

+                                <row id="57">

+                                    <cell id="58">

+                                        <property name="style">pageHeader</property>

+                                        <label id="60">

+                                            <property name="style">pageHeaderLeft</property>

+                                            <text-property name="text" key="collection.sheet.title">Collection Sheet Report</text-property>

+                                        </label>

+                                    </cell>

+                                    <cell id="59">

+                                        <property name="style">pageHeader</property>

+                                        <label id="61">

+                                            <property name="style">pageHeaderRight</property>

+                                            <property name="color">#808080</property>

+                                            <text-property name="text" key="collection.sheet.local.title">Grameen Foundation</text-property>

+                                        </label>

+                                    </cell>

+                                </row>

+                            </grid>

+                        </cell>

+                    </row>

+                    <row id="568">

+                        <cell id="422">

+                            <property name="colSpan">16</property>

+                            <property name="rowSpan">1</property>

+                            <grid id="65">

+                                <property name="style">pageSubheader</property>

+                                <property name="borderBottomColor">#000000</property>

+                                <property name="borderBottomStyle">solid</property>

+                                <property name="borderBottomWidth">thin</property>

+                                <property name="width">100%</property>

+                                <column id="66">

+                                    <property name="width">0.67in</property>

+                                </column>

+                                <column id="921"/>

+                                <column id="67">

+                                    <property name="width">7.7in</property>

+                                </column>

+                                <column id="924"/>

+                                <row id="68">

+                                    <cell id="69">

+                                        <property name="style">pageSubheaderLeft</property>

+                                        <label id="926">

+                                            <text-property name="text" key="collection.sheet.branch.label"></text-property>

+                                        </label>

+                                    </cell>

+                                    <cell id="919">

+                                        <property name="style">pageSubheaderLeft</property>

+                                        <data id="898">

+                                            <property name="resultSetColumn">rpt_branch</property>

+                                        </data>

+                                    </cell>

+                                    <cell id="70">

+                                        <property name="style">pageSubheaderRight</property>

+                                        <label id="927">

+                                            <text-property name="text" key="collection.sheet.loanofficer.label"></text-property>

+                                        </label>

+                                    </cell>

+                                    <cell id="922">

+                                        <property name="style">pageSubheaderRight</property>

+                                        <property name="textAlign">left</property>

+                                        <data id="900">

+                                            <property name="resultSetColumn">rpt_loanOfficer</property>

+                                        </data>

+                                    </cell>

+                                </row>

+                                <row id="71">

+                                    <cell id="72">

+                                        <property name="style">pageSubheaderLeft</property>

+                                        <label id="1003">

+                                            <text-property name="text" key="collection.sheet.center.label">Center   :</text-property>

+                                        </label>

+                                    </cell>

+                                    <cell id="920">

+                                        <property name="style">pageSubheaderLeft</property>

+                                        <data id="899">

+                                            <property name="resultSetColumn">rpt_center</property>

+                                        </data>

+                                    </cell>

+                                    <cell id="73">

+                                        <property name="style">pageSubheaderRight</property>

+                                        <label id="928">

+                                            <text-property name="text" key="collection.sheet.meetingdate.label"></text-property>

+                                        </label>

+                                    </cell>

+                                    <cell id="923">

+                                        <property name="style">pageSubheaderRight</property>

+                                        <property name="textAlign">left</property>

+                                        <data id="901">

+                                            <property name="resultSetColumn">rpt_meetingDate</property>

+                                        </data>

+                                    </cell>

+                                </row>

+                            </grid>

+                        </cell>

+                    </row>

+                    <row id="610">

+                        <cell id="137">

+                            <property name="style">tableHeader</property>

+                            <property name="borderLeftColor">#808080</property>

+                            <property name="borderLeftStyle">solid</property>

+                            <property name="borderLeftWidth">thin</property>

+                            <property name="borderRightColor">#808080</property>

+                            <property name="borderRightStyle">solid</property>

+                            <property name="borderRightWidth">thin</property>

+                            <property name="borderTopColor">#808080</property>

+                            <property name="borderTopStyle">solid</property>

+                            <property name="borderTopWidth">thin</property>

+                            <label id="187">

+                                <text-property name="text" key="collection.sheet.table.member.id">ID</text-property>

+                            </label>

+                        </cell>

+                        <cell id="138">

+                            <property name="style">tableHeader</property>

+                            <property name="borderLeftColor">#808080</property>

+                            <property name="borderLeftStyle">solid</property>

+                            <property name="borderLeftWidth">thin</property>

+                            <property name="borderRightColor">#808080</property>

+                            <property name="borderRightStyle">solid</property>

+                            <property name="borderRightWidth">thin</property>

+                            <property name="borderTopColor">#808080</property>

+                            <property name="borderTopStyle">solid</property>

+                            <property name="borderTopWidth">thin</property>

+                            <label id="188">

+                                <text-property name="text" key="collection.sheet.table.member.name">Member</text-property>

+                            </label>

+                        </cell>

+                        <cell id="139">

+                            <property name="colSpan">4</property>

+                            <property name="rowSpan">1</property>

+                            <property name="style">tableHeader</property>

+                            <property name="borderLeftColor">#808080</property>

+                            <property name="borderLeftStyle">solid</property>

+                            <property name="borderLeftWidth">thin</property>

+                            <property name="borderRightColor">#808080</property>

+                            <property name="borderRightStyle">solid</property>

+                            <property name="borderRightWidth">thin</property>

+                            <property name="borderTopColor">#808080</property>

+                            <property name="borderTopStyle">solid</property>

+                            <property name="borderTopWidth">thin</property>

+                            <label id="202">

+                                <text-property name="text" key="collection.sheet.table.balances">Balances</text-property>

+                            </label>

+                        </cell>

+                        <cell id="143">

+                            <property name="colSpan">4</property>

+                            <property name="rowSpan">1</property>

+                            <property name="style">tableHeader</property>

+                            <property name="borderLeftColor">#808080</property>

+                            <property name="borderLeftStyle">solid</property>

+                            <property name="borderLeftWidth">thin</property>

+                            <property name="borderRightColor">#808080</property>

+                            <property name="borderRightStyle">solid</property>

+                            <property name="borderRightWidth">thin</property>

+                            <property name="borderTopColor">#808080</property>

+                            <property name="borderTopStyle">solid</property>

+                            <property name="borderTopWidth">thin</property>

+                            <label id="203">

+                                <text-property name="text" key="collection.sheet.table.due">Dues</text-property>

+                            </label>

+                        </cell>

+                        <cell id="244">

+                            <property name="style">tableHeader</property>

+                            <property name="borderLeftColor">#808080</property>

+                            <property name="borderLeftStyle">solid</property>

+                            <property name="borderLeftWidth">thin</property>

+                            <property name="borderRightColor">#808080</property>

+                            <property name="borderRightStyle">solid</property>

+                            <property name="borderRightWidth">thin</property>

+                            <property name="borderTopColor">#808080</property>

+                            <property name="borderTopStyle">solid</property>

+                            <property name="borderTopWidth">thin</property>

+                        </cell>

+                        <cell id="148">

+                            <property name="colSpan">2</property>

+                            <property name="rowSpan">1</property>

+                            <property name="style">tableHeader</property>

+                            <property name="borderLeftColor">#808080</property>

+                            <property name="borderLeftStyle">solid</property>

+                            <property name="borderLeftWidth">thin</property>

+                            <property name="borderRightColor">#808080</property>

+                            <property name="borderRightStyle">solid</property>

+                            <property name="borderRightWidth">thin</property>

+                            <property name="borderTopColor">#808080</property>

+                            <property name="borderTopStyle">solid</property>

+                            <property name="borderTopWidth">thin</property>

+                            <label id="209">

+                                <text-property name="text" key="collection.sheet.table.other.collection">Other Collections</text-property>

+                            </label>

+                        </cell>

+                        <cell id="839">

+                            <property name="colSpan">2</property>

+                            <property name="rowSpan">1</property>

+                            <property name="style">tableHeader</property>

+                            <property name="borderLeftColor">#808080</property>

+                            <property name="borderLeftStyle">solid</property>

+                            <property name="borderLeftWidth">thin</property>

+                            <property name="borderRightColor">#808080</property>

+                            <property name="borderRightStyle">solid</property>

+                            <property name="borderRightWidth">thin</property>

+                            <property name="borderTopColor">#808080</property>

+                            <property name="borderTopStyle">solid</property>

+                            <property name="borderTopWidth">thin</property>

+                            <text id="891">

+                                <property name="contentType">html</property>

+                                <text-property name="content" key="collection.sheet.table.issues"><![CDATA[Issues]]></text-property>

+                            </text>

+                        </cell>

+                        <cell id="854">

+                            <property name="style">tableHeader</property>

+                            <property name="borderLeftColor">#808080</property>

+                            <property name="borderLeftStyle">solid</property>

+                            <property name="borderLeftWidth">thin</property>

+                            <property name="borderRightColor">#808080</property>

+                            <property name="borderRightStyle">solid</property>

+                            <property name="borderRightWidth">thin</property>

+                            <property name="borderTopColor">#808080</property>

+                            <property name="borderTopStyle">solid</property>

+                            <property name="borderTopWidth">thin</property>

+                            <label id="890">

+                                <text-property name="text" key="collection.sheet.table.att">Att</text-property>

+                            </label>

+                        </cell>

+                    </row>

+                    <row id="596">

+                        <cell id="190">

+                            <property name="style">tableMainSubheader</property>

+                            <property name="borderBottomColor">#808080</property>

+                            <property name="borderBottomStyle">solid</property>

+                            <property name="borderBottomWidth">thin</property>

+                            <property name="borderLeftColor">#808080</property>

+                            <property name="borderLeftStyle">solid</property>

+                            <property name="borderLeftWidth">thin</property>

+                            <property name="borderRightColor">#808080</property>

+                            <property name="borderRightStyle">solid</property>

+                            <property name="borderRightWidth">thin</property>

+                        </cell>

+                        <cell id="191">

+                            <property name="style">tableMainSubheader</property>

+                            <property name="borderBottomColor">#808080</property>

+                            <property name="borderBottomStyle">solid</property>

+                            <property name="borderBottomWidth">thin</property>

+                            <property name="borderLeftColor">#808080</property>

+                            <property name="borderLeftStyle">solid</property>

+                            <property name="borderLeftWidth">thin</property>

+                            <property name="borderRightColor">#808080</property>

+                            <property name="borderRightStyle">solid</property>

+                            <property name="borderRightWidth">thin</property>

+                        </cell>

+                        <cell id="192">

+                            <property name="colSpan">2</property>

+                            <property name="rowSpan">1</property>

+                            <property name="style">tableMainSubheader</property>

+                            <property name="borderBottomColor">#808080</property>

+                            <property name="borderBottomStyle">solid</property>

+                            <property name="borderBottomWidth">thin</property>

+                            <property name="borderLeftColor">#808080</property>

+                            <property name="borderLeftStyle">solid</property>

+                            <property name="borderLeftWidth">thin</property>

+                            <property name="borderRightColor">#808080</property>

+                            <property name="borderRightStyle">solid</property>

+                            <property name="borderRightWidth">thin</property>

+                            <label id="224">

+                                <text-property name="text" key="collection.sheet.table.balances.loan">Loan Instance</text-property>

+                            </label>

+                        </cell>

+                        <cell id="194">

+                            <property name="colSpan">2</property>

+                            <property name="rowSpan">1</property>

+                            <property name="style">tableMainSubheader</property>

+                            <property name="borderBottomColor">#808080</property>

+                            <property name="borderBottomStyle">solid</property>

+                            <property name="borderBottomWidth">thin</property>

+                            <property name="borderLeftColor">#808080</property>

+                            <property name="borderLeftStyle">solid</property>

+                            <property name="borderLeftWidth">thin</property>

+                            <property name="borderRightColor">#808080</property>

+                            <property name="borderRightStyle">solid</property>

+                            <property name="borderRightWidth">thin</property>

+                            <label id="225">

+                                <text-property name="text" key="collection.sheet.table.balances.savings">Savings Instance</text-property>

+                            </label>

+                        </cell>

+                        <cell id="196">

+                            <property name="colSpan">2</property>

+                            <property name="rowSpan">1</property>

+                            <property name="style">tableMainSubheader</property>

+                            <property name="borderBottomColor">#808080</property>

+                            <property name="borderBottomStyle">solid</property>

+                            <property name="borderBottomWidth">thin</property>

+                            <property name="borderLeftColor">#808080</property>

+                            <property name="borderLeftStyle">solid</property>

+                            <property name="borderLeftWidth">thin</property>

+                            <property name="borderRightColor">#808080</property>

+                            <property name="borderRightStyle">solid</property>

+                            <property name="borderRightWidth">thin</property>

+                            <label id="226">

+                                <text-property name="text" key="collection.sheet.table.due.loan">Loan Instance</text-property>

+                            </label>

+                        </cell>

+                        <cell id="198">

+                            <property name="colSpan">2</property>

+                            <property name="rowSpan">1</property>

+                            <property name="style">tableMainSubheader</property>

+                            <property name="borderBottomColor">#808080</property>

+                            <property name="borderBottomStyle">solid</property>

+                            <property name="borderBottomWidth">thin</property>

+                            <property name="borderLeftColor">#808080</property>

+                            <property name="borderLeftStyle">solid</property>

+                            <property name="borderLeftWidth">thin</property>

+                            <property name="borderRightColor">#808080</property>

+                            <property name="borderRightStyle">solid</property>

+                            <property name="borderRightWidth">thin</property>

+                            <label id="227">

+                                <text-property name="text" key="collection.sheet.table.balances.savings">Savings Instance</text-property>

+                            </label>

+                        </cell>

+                        <cell id="200">

+                            <property name="style">tableMainSubheader</property>

+                            <property name="borderBottomColor">#808080</property>

+                            <property name="borderBottomStyle">solid</property>

+                            <property name="borderBottomWidth">thin</property>

+                            <property name="borderLeftColor">#808080</property>

+                            <property name="borderLeftStyle">solid</property>

+                            <property name="borderLeftWidth">thin</property>

+                            <property name="borderRightColor">#808080</property>

+                            <property name="borderRightStyle">solid</property>

+                            <property name="borderRightWidth">thin</property>

+                            <label id="228">

+                                <text-property name="text" key="collection.sheet.table.due.loan.total">Total Due</text-property>

+                            </label>

+                        </cell>

+                        <cell id="201">

+                            <property name="style">tableMainSubheader</property>

+                            <property name="borderBottomColor">#808080</property>

+                            <property name="borderBottomStyle">solid</property>

+                            <property name="borderBottomWidth">thin</property>

+                            <property name="borderLeftColor">#808080</property>

+                            <property name="borderLeftStyle">solid</property>

+                            <property name="borderLeftWidth">thin</property>

+                            <property name="borderRightColor">#808080</property>

+                            <property name="borderRightStyle">solid</property>

+                            <property name="borderRightWidth">thin</property>

+                        </cell>

+                        <cell id="205">

+                            <property name="style">tableMainSubheader</property>

+                            <property name="borderBottomColor">#808080</property>

+                            <property name="borderBottomStyle">solid</property>

+                            <property name="borderBottomWidth">thin</property>

+                            <property name="borderLeftColor">#808080</property>

+                            <property name="borderLeftStyle">solid</property>

+                            <property name="borderLeftWidth">thin</property>

+                            <property name="borderRightColor">#808080</property>

+                            <property name="borderRightStyle">solid</property>

+                            <property name="borderRightWidth">thin</property>

+                        </cell>

+                        <cell id="840">

+                            <property name="colSpan">2</property>

+                            <property name="rowSpan">1</property>

+                            <property name="style">tableMainSubheader</property>

+                            <property name="borderBottomColor">#808080</property>

+                            <property name="borderBottomStyle">solid</property>

+                            <property name="borderBottomWidth">thin</property>

+                            <property name="borderLeftColor">#808080</property>

+                            <property name="borderLeftStyle">solid</property>

+                            <property name="borderLeftWidth">thin</property>

+                            <property name="borderRightColor">#808080</property>

+                            <property name="borderRightStyle">solid</property>

+                            <property name="borderRightWidth">thin</property>

+                            <text id="979">

+                                <property name="contentType">html</property>

+                                <text-property name="content" key="collection.sheet.table.issues.subheader"><![CDATA[Loan Instance]]></text-property>

+                            </text>

+                        </cell>

+                        <cell id="855">

+                            <property name="style">tableMainSubheader</property>

+                            <property name="borderBottomColor">#808080</property>

+                            <property name="borderBottomStyle">solid</property>

+                            <property name="borderBottomWidth">thin</property>

+                            <property name="borderLeftColor">#808080</property>

+                            <property name="borderLeftStyle">solid</property>

+                            <property name="borderLeftWidth">thin</property>

+                            <property name="borderRightColor">#808080</property>

+                            <property name="borderRightStyle">solid</property>

+                            <property name="borderRightWidth">thin</property>

+                        </cell>

+                    </row>

+                    <row id="582">

+                        <cell id="211">

+                            <property name="style">tableSubheader</property>

+                            <property name="borderLeftColor">#808080</property>

+                            <property name="borderLeftStyle">solid</property>

+                            <property name="borderLeftWidth">thin</property>

+                            <property name="borderRightColor">#808080</property>

+                            <property name="borderRightStyle">solid</property>

+                            <property name="borderRightWidth">thin</property>

+                            <property name="borderTopColor">#808080</property>

+                            <property name="borderTopStyle">solid</property>

+                            <property name="borderTopWidth">thin</property>

+                        </cell>

+                        <cell id="212">

+                            <property name="style">tableSubheader</property>

+                            <property name="borderRightColor">#808080</property>

+                            <property name="borderRightStyle">solid</property>

+                            <property name="borderRightWidth">thin</property>

+                        </cell>

+                        <cell id="213">

+                            <property name="style">tableSubheader</property>

+                            <data id="985">

+                                <property name="resultSetColumn">loan_1_name</property>

+                            </data>

+                        </cell>

+                        <cell id="214">

+                            <property name="style">tableSubheader</property>

+                            <property name="borderRightColor">#808080</property>

+                            <property name="borderRightStyle">solid</property>

+                            <property name="borderRightWidth">thin</property>

+                            <data id="986">

+                                <property name="resultSetColumn">loan_2_name</property>

+                            </data>

+                        </cell>

+                        <cell id="215">

+                            <property name="style">tableSubheader</property>

+                            <data id="987">

+                                <property name="resultSetColumn">savings_1_name</property>

+                            </data>

+                        </cell>

+                        <cell id="216">

+                            <property name="style">tableSubheader</property>

+                            <property name="borderRightColor">#808080</property>

+                            <property name="borderRightStyle">solid</property>

+                            <property name="borderRightWidth">1pt</property>

+                            <data id="988">

+                                <property name="resultSetColumn">savings_2_name</property>

+                            </data>

+                        </cell>

+                        <cell id="217">

+                            <property name="style">tableSubheader</property>

+                            <data id="989">

+                                <property name="resultSetColumn">loan_1_name</property>

+                            </data>

+                        </cell>

+                        <cell id="218">

+                            <property name="style">tableSubheader</property>

+                            <property name="borderRightColor">#808080</property>

+                            <property name="borderRightStyle">solid</property>

+                            <property name="borderRightWidth">1pt</property>

+                            <data id="990">

+                                <property name="resultSetColumn">loan_2_name</property>

+                            </data>

+                        </cell>

+                        <cell id="219">

+                            <property name="style">tableSubheader</property>

+                            <data id="991">

+                                <property name="resultSetColumn">savings_1_name</property>

+                            </data>

+                        </cell>

+                        <cell id="220">

+                            <property name="style">tableSubheader</property>

+                            <property name="borderRightColor">#808080</property>

+                            <property name="borderRightStyle">solid</property>

+                            <property name="borderRightWidth">1pt</property>

+                            <data id="992">

+                                <property name="resultSetColumn">savings_2_name</property>

+                            </data>

+                        </cell>

+                        <cell id="221">

+                            <property name="style">tableSubheader</property>

+                            <property name="borderRightColor">#808080</property>

+                            <property name="borderRightStyle">solid</property>

+                            <property name="borderRightWidth">1pt</property>

+                        </cell>

+                        <cell id="222">

+                            <property name="style">tableSubheader</property>

+                            <property name="borderRightColor">#808080</property>

+                            <property name="borderRightStyle">solid</property>

+                            <property name="borderRightWidth">1pt</property>

+                            <label id="237">

+                                <text-property name="text" key="collection.sheet.table.other.collection.fees">Fees</text-property>

+                            </label>

+                        </cell>

+                        <cell id="223">

+                            <property name="style">tableSubheader</property>

+                            <property name="borderRightColor">#808080</property>

+                            <property name="borderRightStyle">solid</property>

+                            <property name="borderRightWidth">1pt</property>

+                            <label id="238">

+                                <text-property name="text" key="collection.sheet.table.other.collection.fines">Fine</text-property>

+                            </label>

+                        </cell>

+                        <cell id="841">

+                            <property name="style">tableSubheader</property>

+                            <property name="borderRightColor">#808080</property>

+                            <property name="borderRightStyle">solid</property>

+                            <property name="borderRightWidth">1pt</property>

+                            <data id="993">

+                                <property name="resultSetColumn">loan_1_name</property>

+                            </data>

+                        </cell>

+                        <cell id="967">

+                            <property name="style">tableSubheader</property>

+                            <property name="borderRightColor">#808080</property>

+                            <property name="borderRightStyle">solid</property>

+                            <property name="borderRightWidth">1pt</property>

+                            <data id="994">

+                                <property name="resultSetColumn">loan_2_name</property>

+                            </data>

+                        </cell>

+                        <cell id="856">

+                            <property name="style">tableSubheader</property>

+                            <property name="borderRightColor">#808080</property>

+                            <property name="borderRightStyle">solid</property>

+                            <property name="borderRightWidth">1pt</property>

+                        </cell>

+                    </row>

+                </header>

+                <footer>

+                    <row id="553">

+                        <list-property name="visibility">

+                            <structure>

+                                <property name="format">all</property>

+                                <expression name="valueExpr">customerLevel == CUSTOMER_LEVEL_GROUP</expression>

+                            </structure>

+                        </list-property>

+                        <cell id="554">

+                            <property name="style">centerFooter</property>

+                            <property name="borderLeftColor">#808080</property>

+                            <property name="borderLeftStyle">solid</property>

+                            <property name="borderLeftWidth">thin</property>

+                            <property name="borderRightColor">#808080</property>

+                            <property name="borderRightStyle">solid</property>

+                            <property name="borderRightWidth">1pt</property>

+                        </cell>

+                        <cell id="555">

+                            <property name="style">centerFooter</property>

+                            <property name="borderRightColor">#808080</property>

+                            <property name="borderRightStyle">solid</property>

+                            <property name="borderRightWidth">1pt</property>

+                            <data id="758">

+                                <property name="style">groupRowHeader</property>

+                                <property name="resultSetColumn">rpt_center_name</property>

+                            </data>

+                        </cell>

+                        <cell id="556">

+                            <property name="style">centerFooter</property>

+                            <property name="textAlign">right</property>

+                            <data id="384">

+                                <structure name="numberFormat">

+                                    <property name="category">Currency</property>

+                                    <property name="pattern">###0.00</property>

+                                </structure>

+                                <property name="resultSetColumn">center_loan_1_balance_total</property>

+                            </data>

+                        </cell>

+                        <cell id="557">

+                            <property name="style">centerFooter</property>

+                            <property name="borderRightColor">#808080</property>

+                            <property name="borderRightStyle">solid</property>

+                            <property name="borderRightWidth">1pt</property>

+                            <property name="textAlign">right</property>

+                            <data id="395">

+                                <structure name="numberFormat">

+                                    <property name="category">Currency</property>

+                                    <property name="pattern">###0.00</property>

+                                </structure>

+                                <property name="resultSetColumn">center_loan_2_balance_total</property>

+                            </data>

+                        </cell>

+                        <cell id="558">

+                            <property name="style">centerFooter</property>

+                            <property name="textAlign">right</property>

+                            <data id="409">

+                                <structure name="numberFormat">

+                                    <property name="category">Currency</property>

+                                    <property name="pattern">###0.00</property>

+                                </structure>

+                                <property name="resultSetColumn">center_savings_1_balance_total</property>

+                            </data>

+                        </cell>

+                        <cell id="559">

+                            <property name="style">centerFooter</property>

+                            <property name="borderRightColor">#808080</property>

+                            <property name="borderRightStyle">solid</property>

+                            <property name="borderRightWidth">1pt</property>

+                            <property name="textAlign">right</property>

+                            <data id="410">

+                                <structure name="numberFormat">

+                                    <property name="category">Currency</property>

+                                    <property name="pattern">###0.00</property>

+                                </structure>

+                                <property name="resultSetColumn">center_savings_2_balance_total</property>

+                            </data>

+                        </cell>

+                        <cell id="560">

+                            <property name="style">centerFooter</property>

+                            <property name="textAlign">right</property>

+                            <data id="411">

+                                <structure name="numberFormat">

+                                    <property name="category">Currency</property>

+                                    <property name="pattern">###0.00</property>

+                                </structure>

+                                <property name="resultSetColumn">center_loan_1_due_total</property>

+                            </data>

+                        </cell>

+                        <cell id="561">

+                            <property name="style">centerFooter</property>

+                            <property name="borderRightColor">#808080</property>

+                            <property name="borderRightStyle">solid</property>

+                            <property name="borderRightWidth">1pt</property>

+                            <property name="textAlign">right</property>

+                            <data id="412">

+                                <structure name="numberFormat">

+                                    <property name="category">Currency</property>

+                                    <property name="pattern">###0.00</property>

+                                </structure>

+                                <property name="resultSetColumn">center_loan_2_due_total</property>

+                            </data>

+                        </cell>

+                        <cell id="562">

+                            <property name="style">centerFooter</property>

+                            <property name="textAlign">right</property>

+                            <data id="413">

+                                <structure name="numberFormat">

+                                    <property name="category">Currency</property>

+                                    <property name="pattern">###0.00</property>

+                                </structure>

+                                <property name="resultSetColumn">center_savings_1_due_total</property>

+                            </data>

+                        </cell>

+                        <cell id="563">

+                            <property name="style">centerFooter</property>

+                            <property name="borderRightColor">#808080</property>

+                            <property name="borderRightStyle">solid</property>

+                            <property name="borderRightWidth">1pt</property>

+                            <property name="textAlign">right</property>

+                            <data id="415">

+                                <structure name="numberFormat">

+                                    <property name="category">Currency</property>

+                                    <property name="pattern">###0.00</property>

+                                </structure>

+                                <property name="resultSetColumn">center_savings_2_due_total</property>

+                            </data>

+                        </cell>

+                        <cell id="564">

+                            <property name="style">centerFooter</property>

+                            <property name="borderRightColor">#808080</property>

+                            <property name="borderRightStyle">solid</property>

+                            <property name="borderRightWidth">1pt</property>

+                            <property name="textAlign">right</property>

+                            <data id="416">

+                                <structure name="numberFormat">

+                                    <property name="category">Currency</property>

+                                    <property name="pattern">###0.00</property>

+                                </structure>

+                                <property name="resultSetColumn">center_due_total</property>

+                            </data>

+                        </cell>

+                        <cell id="565">

+                            <property name="style">centerFooter</property>

+                            <property name="borderRightColor">#808080</property>

+                            <property name="borderRightStyle">solid</property>

+                            <property name="borderRightWidth">1pt</property>

+                            <property name="textAlign">right</property>

+                            <data id="417">

+                                <structure name="numberFormat">

+                                    <property name="category">Currency</property>

+                                    <property name="pattern">###0.00</property>

+                                </structure>

+                                <property name="resultSetColumn">center_other_fee_total</property>

+                            </data>

+                        </cell>

+                        <cell id="566">

+                            <property name="style">centerFooter</property>

+                            <property name="borderRightColor">#808080</property>

+                            <property name="borderRightStyle">solid</property>

+                            <property name="borderRightWidth">1pt</property>

+                            <property name="textAlign">right</property>

+                            <data id="418">

+                                <structure name="numberFormat">

+                                    <property name="category">Currency</property>

+                                    <property name="pattern">###0.00</property>

+                                </structure>

+                                <property name="resultSetColumn">center_other_fine_total</property>

+                            </data>

+                        </cell>

+                        <cell id="844">

+                            <property name="style">centerFooter</property>

+                            <property name="borderRightColor">#808080</property>

+                            <property name="borderRightStyle">solid</property>

+                            <property name="borderRightWidth">1pt</property>

+                            <property name="textAlign">right</property>

+                            <data id="913">

+                                <structure name="numberFormat">

+                                    <property name="category">Currency</property>

+                                    <property name="pattern">###0.00</property>

+                                </structure>

+                                <property name="resultSetColumn">center_loan_1_issues_total</property>

+                            </data>

+                        </cell>

+                        <cell id="970">

+                            <property name="style">centerFooter</property>

+                            <property name="borderRightColor">#808080</property>

+                            <property name="borderRightStyle">solid</property>

+                            <property name="borderRightWidth">1pt</property>

+                            <property name="textAlign">right</property>

+                            <data id="984">

+                                <structure name="numberFormat">

+                                    <property name="category">Currency</property>

+                                    <property name="pattern">###0.00</property>

+                                </structure>

+                                <property name="resultSetColumn">center_loan_2_issues_total</property>

+                            </data>

+                        </cell>

+                        <cell id="859">

+                            <property name="style">centerFooter</property>

+                            <property name="borderRightColor">#808080</property>

+                            <property name="borderRightStyle">solid</property>

+                            <property name="borderRightWidth">1pt</property>

+                        </cell>

+                    </row>

+                    <row id="611">

+                        <cell id="612">

+                            <label id="761"/>

+                        </cell>

+                        <cell id="613"/>

+                        <cell id="614"/>

+                        <cell id="615"/>

+                        <cell id="616"/>

+                        <cell id="617"/>

+                        <cell id="618"/>

+                        <cell id="619"/>

+                        <cell id="620"/>

+                        <cell id="621"/>

+                        <cell id="622"/>

+                        <cell id="623"/>

+                        <cell id="624"/>

+                        <cell id="845"/>

+                        <cell id="971"/>

+                        <cell id="860"/>

+                    </row>

+                    <row id="625">

+                        <cell id="626"/>

+                        <cell id="627">

+                            <property name="colSpan">15</property>

+                            <property name="rowSpan">1</property>

+                            <grid id="639">

+                                <property name="width">100%</property>

+                                <column id="640">

+                                    <property name="width">1.5in</property>

+                                </column>

+                                <column id="641">

+                                    <property name="width">0.989in</property>

+                                </column>

+                                <column id="642">

+                                    <property name="width">1.7916666667in</property>

+                                </column>

+                                <column id="643">

+                                    <property name="width">0.989in</property>

+                                </column>

+                                <column id="644">

+                                    <property name="width">1.4375in</property>

+                                </column>

+                                <column id="645">

+                                    <property name="width">0.8020833333in</property>

+                                </column>

+                                <column id="646">

+                                    <property name="width">1.2916666667in</property>

+                                </column>

+                                <column id="647">

+                                    <property name="width">1.9895833333in</property>

+                                </column>

+                                <row id="648">

+                                    <cell id="649">

+                                        <property name="colSpan">1</property>

+                                        <property name="rowSpan">1</property>

+                                        <property name="style">reportSummaryHeader</property>

+                                        <property name="borderLeftColor">#000000</property>

+                                        <property name="borderLeftStyle">solid</property>

+                                        <property name="borderLeftWidth">thin</property>

+                                        <property name="borderRightColor">#000000</property>

+                                        <property name="borderRightStyle">solid</property>

+                                        <property name="borderRightWidth">thin</property>

+                                        <property name="paddingLeft">10px</property>

+                                        <label id="760">

+                                            <property name="fontSize">11pt</property>

+                                            <property name="textAlign">left</property>

+                                            <text-property name="text" key="collection.sheet.summary.collection">Collections</text-property>

+                                        </label>

+                                    </cell>

+                                    <cell id="915">

+                                        <property name="style">reportSummaryHeader</property>

+                                        <property name="borderRightColor">#000000</property>

+                                        <property name="borderRightStyle">solid</property>

+                                        <property name="borderRightWidth">thin</property>

+                                        <property name="paddingRight">5px</property>

+                                        <label id="1001">

+                                            <property name="fontSize">11pt</property>

+                                            <property name="textAlign">right</property>

+                                            <text-property name="text">Amount</text-property>

+                                        </label>

+                                    </cell>

+                                    <cell id="651">

+                                        <property name="colSpan">1</property>

+                                        <property name="rowSpan">1</property>

+                                        <property name="style">reportSummaryHeader</property>

+                                        <property name="borderRightColor">#000000</property>

+                                        <property name="borderRightStyle">solid</property>

+                                        <property name="borderRightWidth">thin</property>

+                                        <property name="paddingLeft">10px</property>

+                                        <label id="762">

+                                            <property name="fontSize">11pt</property>

+                                            <property name="textAlign">left</property>

+                                            <text-property name="text" key="collection.sheet.summary.disbursement">Disbursements</text-property>

+                                        </label>

+                                    </cell>

+                                    <cell id="916">

+                                        <property name="style">reportSummaryHeader</property>

+                                        <property name="borderRightColor">#000000</property>

+                                        <property name="borderRightStyle">solid</property>

+                                        <property name="borderRightWidth">thin</property>

+                                        <property name="paddingLeft">0px</property>

+                                        <property name="paddingRight">5px</property>

+                                        <label id="1002">

+                                            <property name="textAlign">right</property>

+                                            <text-property name="text">Amount</text-property>

+                                        </label>

+                                    </cell>

+                                    <cell id="917">

+                                        <property name="style">reportSummaryHeader</property>

+                                        <property name="borderRightColor">#000000</property>

+                                        <property name="borderRightStyle">solid</property>

+                                        <property name="borderRightWidth">thin</property>

+                                        <property name="paddingLeft">10px</property>

+                                    </cell>

+                                    <cell id="918">

+                                        <property name="style">reportSummaryHeader</property>

+                                        <property name="paddingLeft">10px</property>

+                                    </cell>

+                                    <cell id="655">

+                                        <property name="style">reportSummaryHeader</property>

+                                        <property name="borderLeftColor">#000000</property>

+                                        <property name="borderLeftStyle">solid</property>

+                                        <property name="borderLeftWidth">thin</property>

+                                        <property name="borderRightColor">#000000</property>

+                                        <property name="borderRightStyle">solid</property>

+                                        <property name="borderRightWidth">thin</property>

+                                        <label id="763">

+                                            <property name="textAlign">center</property>

+                                            <text-property name="text" key="collection.sheet.summary.amount.taken.back">Amount taken back to Office</text-property>

+                                        </label>

+                                    </cell>

+                                    <cell id="656">

+                                        <property name="fontFamily">"Arial"</property>

+                                        <property name="fontSize">11pt</property>

+                                        <property name="fontWeight">bold</property>

+                                        <property name="borderRightColor">#000000</property>

+                                        <property name="borderRightStyle">solid</property>

+                                        <property name="borderRightWidth">thin</property>

+                                        <property name="borderTopColor">#000000</property>

+                                        <property name="borderTopStyle">solid</property>

+                                        <property name="borderTopWidth">thin</property>

+                                        <label id="764">

+                                            <property name="fontSize">10pt</property>

+                                            <property name="textAlign">left</property>

+                                            <text-property name="text" key="collection.sheet.summary.announcements">Announcements:</text-property>

+                                        </label>

+                                    </cell>

+                                </row>

+                                <row id="657">

+                                    <property name="style">summaryText</property>

+                                    <cell id="658">

+                                        <property name="borderLeftColor">#000000</property>

+                                        <property name="borderLeftStyle">solid</property>

+                                        <property name="borderLeftWidth">thin</property>

+                                        <property name="borderRightColor">#000000</property>

+                                        <property name="borderRightStyle">solid</property>

+                                        <property name="borderRightWidth">thin</property>

+                                        <property name="paddingLeft">10px</property>

+                                        <label id="765">

+                                            <property name="fontSize">10pt</property>

+                                            <text-property name="text" key="collection.sheet.summary.collection.due">Due Collection</text-property>

+                                        </label>

+                                    </cell>

+                                    <cell id="659">

+                                        <property name="style">numberFormat</property>

+                                        <property name="borderRightColor">#000000</property>

+                                        <property name="borderRightStyle">solid</property>

+                                        <property name="borderRightWidth">thin</property>

+                                        <data id="771">

+                                            <property name="fontSize">10pt</property>

+                                            <structure name="numberFormat">

+                                                <property name="category">Currency</property>

+                                                <property name="pattern">###0.00</property>

+                                            </structure>

+                                            <property name="resultSetColumn">due_collection</property>

+                                        </data>

+                                    </cell>

+                                    <cell id="660">

+                                        <property name="borderRightColor">#000000</property>

+                                        <property name="borderRightStyle">solid</property>

+                                        <property name="borderRightWidth">thin</property>

+                                        <property name="paddingLeft">10px</property>

+                                        <label id="774">

+                                            <property name="fontSize">10pt</property>

+                                            <text-property name="text" key="collection.sheet.summary.disbursement.due">Due Disbursement</text-property>

+                                        </label>

+                                    </cell>

+                                    <cell id="661">

+                                        <property name="borderRightColor">#000000</property>

+                                        <property name="borderRightStyle">solid</property>

+                                        <property name="borderRightWidth">thin</property>

+                                        <property name="paddingLeft">10px</property>

+                                    </cell>

+                                    <cell id="662">

+                                        <property name="borderRightColor">#000000</property>

+                                        <property name="borderRightStyle">solid</property>

+                                        <property name="borderRightWidth">thin</property>

+                                        <property name="paddingLeft">10px</property>

+                                        <label id="778">

+                                            <property name="fontSize">10pt</property>

+                                            <text-property name="text" key="collection.sheet.summary.application.taken">Applications Taken</text-property>

+                                        </label>

+                                    </cell>

+                                    <cell id="663">

+                                        <property name="paddingLeft">10px</property>

+                                    </cell>

+                                    <cell id="664">

+                                        <property name="borderLeftColor">#000000</property>

+                                        <property name="borderLeftStyle">solid</property>

+                                        <property name="borderLeftWidth">thin</property>

+                                        <property name="borderRightColor">#000000</property>

+                                        <property name="borderRightStyle">solid</property>

+                                        <property name="borderRightWidth">thin</property>

+                                    </cell>

+                                    <cell id="665">

+                                        <property name="borderRightColor">#000000</property>

+                                        <property name="borderRightStyle">solid</property>

+                                        <property name="borderRightWidth">thin</property>

+                                    </cell>

+                                </row>

+                                <row id="666">

+                                    <property name="style">summaryText</property>

+                                    <cell id="667">

+                                        <property name="borderLeftColor">#000000</property>

+                                        <property name="borderLeftStyle">solid</property>

+                                        <property name="borderLeftWidth">thin</property>

+                                        <property name="borderRightColor">#000000</property>

+                                        <property name="borderRightStyle">solid</property>

+                                        <property name="borderRightWidth">thin</property>

+                                        <property name="paddingLeft">10px</property>

+                                        <label id="766">

+                                            <property name="fontSize">10pt</property>

+                                            <text-property name="text" key="collection.sheet.summary.collection.other">Other Collection</text-property>

+                                        </label>

+                                    </cell>

+                                    <cell id="668">

+                                        <property name="style">numberFormat</property>

+                                        <property name="borderRightColor">#000000</property>

+                                        <property name="borderRightStyle">solid</property>

+                                        <property name="borderRightWidth">thin</property>

+                                        <data id="772">

+                                            <property name="fontSize">10pt</property>

+                                            <structure name="numberFormat">

+                                                <property name="category">Currency</property>

+                                                <property name="pattern">###0.00</property>

+                                            </structure>

+                                            <property name="resultSetColumn">other_collection</property>

+                                        </data>

+                                    </cell>

+                                    <cell id="669">

+                                        <property name="borderRightColor">#000000</property>

+                                        <property name="borderRightStyle">solid</property>

+                                        <property name="borderRightWidth">thin</property>

+                                        <property name="paddingLeft">10px</property>

+                                        <label id="775">

+                                            <property name="fontSize">10pt</property>

+                                            <text-property name="text" key="collection.sheet.summary.disbursement.actual">Actual Disbursement</text-property>

+                                        </label>

+                                    </cell>

+                                    <cell id="670">

+                                        <property name="borderRightColor">#000000</property>

+                                        <property name="borderRightStyle">solid</property>

+                                        <property name="borderRightWidth">thin</property>

+                                        <property name="paddingLeft">10px</property>

+                                    </cell>

+                                    <cell id="671">

+                                        <property name="borderRightColor">#000000</property>

+                                        <property name="borderRightStyle">solid</property>

+                                        <property name="borderRightWidth">thin</property>

+                                        <property name="paddingLeft">10px</property>

+                                        <label id="779">

+                                            <property name="fontSize">10pt</property>

+                                            <text-property name="text" key="collection.sheet.summary.loans.issued">No. of Loans Issued</text-property>

+                                        </label>

+                                    </cell>

+                                    <cell id="672">

+                                        <property name="paddingLeft">10px</property>

+                                    </cell>

+                                    <cell id="673">

+                                        <property name="borderLeftColor">#000000</property>

+                                        <property name="borderLeftStyle">solid</property>

+                                        <property name="borderLeftWidth">thin</property>

+                                        <property name="borderRightColor">#000000</property>

+                                        <property name="borderRightStyle">solid</property>

+                                        <property name="borderRightWidth">thin</property>

+                                    </cell>

+                                    <cell id="674">

+                                        <property name="borderRightColor">#000000</property>

+                                        <property name="borderRightStyle">solid</property>

+                                        <property name="borderRightWidth">thin</property>

+                                    </cell>

+                                </row>

+                                <row id="675">

+                                    <property name="style">summaryText</property>

+                                    <cell id="676">

+                                        <property name="borderLeftColor">#000000</property>

+                                        <property name="borderLeftStyle">solid</property>

+                                        <property name="borderLeftWidth">thin</property>

+                                        <property name="borderRightColor">#000000</property>

+                                        <property name="borderRightStyle">solid</property>

+                                        <property name="borderRightWidth">thin</property>

+                                        <property name="paddingLeft">10px</property>

+                                    </cell>

+                                    <cell id="677">

+                                        <property name="style">numberFormat</property>

+                                        <property name="borderRightColor">#000000</property>

+                                        <property name="borderRightStyle">solid</property>

+                                        <property name="borderRightWidth">thin</property>

+                                    </cell>

+                                    <cell id="678">

+                                        <property name="borderRightColor">#000000</property>

+                                        <property name="borderRightStyle">solid</property>

+                                        <property name="borderRightWidth">thin</property>

+                                        <property name="paddingLeft">10px</property>

+                                        <label id="776">

+                                            <property name="fontSize">10pt</property>

+                                            <text-property name="text" key="collection.sheet.summary.disbursement.other">Other Disbursement</text-property>

+                                        </label>

+                                    </cell>

+                                    <cell id="679">

+                                        <property name="borderRightColor">#000000</property>

+                                        <property name="borderRightStyle">solid</property>

+                                        <property name="borderRightWidth">thin</property>

+                                        <property name="paddingLeft">10px</property>

+                                    </cell>

+                                    <cell id="680">

+                                        <property name="borderRightColor">#000000</property>

+                                        <property name="borderRightStyle">solid</property>

+                                        <property name="borderRightWidth">thin</property>

+                                        <property name="paddingLeft">10px</property>

+                                        <label id="780">

+                                            <property name="fontSize">10pt</property>

+                                            <text-property name="text" key="collection.sheet.summary.absent">Absentees / Defaults</text-property>

+                                        </label>

+                                    </cell>

+                                    <cell id="681">

+                                        <property name="paddingLeft">10px</property>

+                                    </cell>

+                                    <cell id="682">

+                                        <property name="borderLeftColor">#000000</property>

+                                        <property name="borderLeftStyle">solid</property>

+                                        <property name="borderLeftWidth">thin</property>

+                                        <property name="borderRightColor">#000000</property>

+                                        <property name="borderRightStyle">solid</property>

+                                        <property name="borderRightWidth">thin</property>

+                                    </cell>

+                                    <cell id="683">

+                                        <property name="borderRightColor">#000000</property>

+                                        <property name="borderRightStyle">solid</property>

+                                        <property name="borderRightWidth">thin</property>

+                                    </cell>

+                                </row>

+                                <row id="684">

+                                    <property name="style">summaryText</property>

+                                    <cell id="685">

+                                        <property name="fontSize">11pt</property>

+                                        <property name="borderLeftColor">#000000</property>

+                                        <property name="borderLeftStyle">solid</property>

+                                        <property name="borderLeftWidth">thin</property>

+                                        <property name="borderRightColor">#000000</property>

+                                        <property name="borderRightStyle">solid</property>

+                                        <property name="borderRightWidth">thin</property>

+                                        <property name="paddingLeft">10px</property>

+                                        <label id="999">

+                                            <property name="fontSize">11pt</property>

+                                            <property name="fontWeight">bold</property>

+                                            <text-property name="text" key="collection.sheet.summary.collection.total">Total Collection</text-property>

+                                        </label>

+                                    </cell>

+                                    <cell id="686">

+                                        <property name="borderRightColor">#000000</property>

+                                        <property name="borderRightStyle">solid</property>

+                                        <property name="borderRightWidth">thin</property>

+                                        <property name="paddingRight">5px</property>

+                                        <data id="1000">

+                                            <property name="fontSize">10pt</property>

+                                            <property name="fontWeight">bold</property>

+                                            <structure name="numberFormat">

+                                                <property name="category">Currency</property>

+                                                <property name="pattern">###0.00</property>

+                                            </structure>

+                                            <property name="textAlign">right</property>

+                                            <property name="resultSetColumn">total_collection</property>

+                                        </data>

+                                    </cell>

+                                    <cell id="687">

+                                        <property name="fontSize">11pt</property>

+                                        <property name="borderRightColor">#000000</property>

+                                        <property name="borderRightStyle">solid</property>

+                                        <property name="borderRightWidth">thin</property>

+                                        <property name="paddingLeft">10px</property>

+                                        <label id="777">

+                                            <property name="fontWeight">bold</property>

+                                            <text-property name="text" key="collection.sheet.summary.disbursement.total">Total Disbursement</text-property>

+                                        </label>

+                                    </cell>

+                                    <cell id="688">

+                                        <property name="borderRightColor">#000000</property>

+                                        <property name="borderRightStyle">solid</property>

+                                        <property name="borderRightWidth">thin</property>

+                                        <property name="paddingLeft">10px</property>

+                                    </cell>

+                                    <cell id="689">

+                                        <property name="borderRightColor">#000000</property>

+                                        <property name="borderRightStyle">solid</property>

+                                        <property name="borderRightWidth">thin</property>

+                                        <property name="paddingLeft">10px</property>

+                                    </cell>

+                                    <cell id="690">

+                                        <property name="paddingLeft">10px</property>

+                                    </cell>

+                                    <cell id="691">

+                                        <property name="borderLeftColor">#000000</property>

+                                        <property name="borderLeftStyle">solid</property>

+                                        <property name="borderLeftWidth">thin</property>

+                                        <property name="borderRightColor">#000000</property>

+                                        <property name="borderRightStyle">solid</property>

+                                        <property name="borderRightWidth">thin</property>

+                                    </cell>

+                                    <cell id="692">

+                                        <property name="borderRightColor">#000000</property>

+                                        <property name="borderRightStyle">solid</property>

+                                        <property name="borderRightWidth">thin</property>

+                                    </cell>

+                                </row>

+                                <row id="825">

+                                    <property name="style">summaryText</property>

+                                    <cell id="826">

+                                        <property name="borderBottomColor">#000000</property>

+                                        <property name="borderBottomStyle">solid</property>

+                                        <property name="borderBottomWidth">thin</property>

+                                        <property name="borderLeftColor">#000000</property>

+                                        <property name="borderLeftStyle">solid</property>

+                                        <property name="borderLeftWidth">thin</property>

+                                        <property name="borderRightColor">#000000</property>

+                                        <property name="borderRightStyle">solid</property>

+                                        <property name="borderRightWidth">thin</property>

+                                        <label id="834"/>

+                                    </cell>

+                                    <cell id="827">

+                                        <property name="borderBottomColor">#000000</property>

+                                        <property name="borderBottomStyle">solid</property>

+                                        <property name="borderBottomWidth">thin</property>

+                                        <property name="borderRightColor">#000000</property>

+                                        <property name="borderRightStyle">solid</property>

+                                        <property name="borderRightWidth">thin</property>

+                                    </cell>

+                                    <cell id="828">

+                                        <property name="borderBottomColor">#000000</property>

+                                        <property name="borderBottomStyle">solid</property>

+                                        <property name="borderBottomWidth">thin</property>

+                                        <property name="borderRightColor">#000000</property>

+                                        <property name="borderRightStyle">solid</property>

+                                        <property name="borderRightWidth">thin</property>

+                                        <property name="paddingLeft">10px</property>

+                                    </cell>

+                                    <cell id="829">

+                                        <property name="borderBottomColor">#000000</property>

+                                        <property name="borderBottomStyle">solid</property>

+                                        <property name="borderBottomWidth">thin</property>

+                                        <property name="borderRightColor">#000000</property>

+                                        <property name="borderRightStyle">solid</property>

+                                        <property name="borderRightWidth">thin</property>

+                                        <property name="paddingLeft">10px</property>

+                                    </cell>

+                                    <cell id="830">

+                                        <property name="borderBottomColor">#000000</property>

+                                        <property name="borderBottomStyle">solid</property>

+                                        <property name="borderBottomWidth">thin</property>

+                                        <property name="borderRightColor">#000000</property>

+                                        <property name="borderRightStyle">solid</property>

+                                        <property name="borderRightWidth">thin</property>

+                                        <property name="paddingLeft">10px</property>

+                                    </cell>

+                                    <cell id="831">

+                                        <property name="borderBottomColor">#000000</property>

+                                        <property name="borderBottomStyle">solid</property>

+                                        <property name="borderBottomWidth">thin</property>

+                                        <property name="paddingLeft">10px</property>

+                                    </cell>

+                                    <cell id="832">

+                                        <property name="borderBottomColor">#000000</property>

+                                        <property name="borderBottomStyle">solid</property>

+                                        <property name="borderBottomWidth">thin</property>

+                                        <property name="borderLeftColor">#000000</property>

+                                        <property name="borderLeftStyle">solid</property>

+                                        <property name="borderLeftWidth">thin</property>

+                                        <property name="borderRightColor">#000000</property>

+                                        <property name="borderRightStyle">solid</property>

+                                        <property name="borderRightWidth">thin</property>

+                                    </cell>

+                                    <cell id="833">

+                                        <property name="borderBottomColor">#000000</property>

+                                        <property name="borderBottomStyle">solid</property>

+                                        <property name="borderBottomWidth">thin</property>

+                                        <property name="borderRightColor">#000000</property>

+                                        <property name="borderRightStyle">solid</property>

+                                        <property name="borderRightWidth">thin</property>

+                                    </cell>

+                                </row>

+                            </grid>

+                        </cell>

+                    </row>

+                    <row id="781">

+                        <cell id="782">

+                            <label id="795"/>

+                        </cell>

+                        <cell id="783"/>

+                        <cell id="784"/>

+                        <cell id="785"/>

+                        <cell id="786"/>

+                        <cell id="787"/>

+                        <cell id="788"/>

+                        <cell id="789"/>

+                        <cell id="790"/>

+                        <cell id="791"/>

+                        <cell id="792"/>

+                        <cell id="793"/>

+                        <cell id="794"/>

+                        <cell id="847"/>

+                        <cell id="973"/>

+                        <cell id="862"/>

+                    </row>

+                    <row id="872">

+                        <cell id="873">

+                            <label id="888"/>

+                        </cell>

+                        <cell id="874"/>

+                        <cell id="875"/>

+                        <cell id="876"/>

+                        <cell id="877"/>

+                        <cell id="878"/>

+                        <cell id="879"/>

+                        <cell id="880"/>

+                        <cell id="881"/>

+                        <cell id="882"/>

+                        <cell id="883"/>

+                        <cell id="884"/>

+                        <cell id="885"/>

+                        <cell id="886"/>

+                        <cell id="974"/>

+                        <cell id="887"/>

+                    </row>

+                    <row id="796">

+                        <cell id="797"/>

+                        <cell id="798">

+                            <property name="colSpan">1</property>

+                            <property name="rowSpan">1</property>

+                            <property name="style">signatureLine</property>

+                        </cell>

+                        <cell id="1019"/>

+                        <cell id="800"/>

+                        <cell id="801">

+                            <property name="colSpan">1</property>

+                            <property name="rowSpan">1</property>

+                        </cell>

+                        <cell id="1016">

+                            <property name="colSpan">2</property>

+                            <property name="rowSpan">1</property>

+                            <property name="style">signatureLine</property>

+                        </cell>

+                        <cell id="804">

+                            <property name="colSpan">1</property>

+                            <property name="rowSpan">1</property>

+                        </cell>

+                        <cell id="895"/>

+                        <cell id="806">

+                            <property name="colSpan">2</property>

+                            <property name="rowSpan">1</property>

+                            <property name="style">signatureLine</property>

+                        </cell>

+                        <cell id="892"/>

+                        <cell id="809"/>

+                        <cell id="848">

+                            <property name="colSpan">1</property>

+                            <property name="rowSpan">1</property>

+                            <property name="style">signatureLine</property>

+                        </cell>

+                        <cell id="1011">

+                            <property name="style">signatureLine</property>

+                        </cell>

+                        <cell id="1012"/>

+                    </row>

+                    <row id="810">

+                        <property name="style">summaryText</property>

+                        <cell id="811"/>

+                        <cell id="812">

+                            <property name="colSpan">1</property>

+                            <property name="rowSpan">1</property>

+                            <label id="1007">

+                                <property name="textAlign">center</property>

+                                <text-property name="text" key="collection.sheet.signature.center.leader">Center Leader</text-property>

+                            </label>

+                        </cell>

+                        <cell id="1006"/>

+                        <cell id="814"/>

+                        <cell id="815">

+                            <property name="colSpan">1</property>

+                            <property name="rowSpan">1</property>

+                        </cell>

+                        <cell id="1017">

+                            <property name="colSpan">2</property>

+                            <property name="rowSpan">1</property>

+                            <label id="1018">

+                                <property name="textAlign">center</property>

+                                <text-property name="text" key="collection.sheet.signature.center.manager">Center Manager</text-property>

+                            </label>

+                        </cell>

+                        <cell id="818">

+                            <property name="colSpan">1</property>

+                            <property name="rowSpan">1</property>

+                        </cell>

+                        <cell id="894"/>

+                        <cell id="820">

+                            <property name="colSpan">2</property>

+                            <property name="rowSpan">1</property>

+                            <label id="869">

+                                <property name="textAlign">center</property>

+                                <text-property name="text" key="collection.sheet.signature.cashier">Cashier</text-property>

+                            </label>

+                        </cell>

+                        <cell id="893"/>

+                        <cell id="823"/>

+                        <cell id="849">

+                            <property name="colSpan">2</property>

+                            <property name="rowSpan">1</property>

+                            <label id="1015">

+                                <property name="textAlign">center</property>

+                                <text-property name="text" key="collection.sheet.signature.branch.manager">Branch Manager</text-property>

+                            </label>

+                        </cell>

+                        <cell id="1014"/>

+                    </row>

+                </footer>

+            </group>

+            <group id="334">

+                <property name="groupName">group</property>

+                <property name="interval">none</property>

+                <property name="sortDirection">asc</property>

+                <expression name="keyExpr">row["group_id"]</expression>

+                <property name="repeatHeader">false</property>

+                <property name="hideDetail">false</property>

+                <property name="pageBreakAfter">auto</property>

+                <property name="pageBreakBefore">auto</property>

+                <footer>

+                    <row id="349">

+                        <cell id="350">

+                            <property name="borderLeftColor">#808080</property>

+                            <property name="borderLeftStyle">solid</property>

+                            <property name="borderLeftWidth">thin</property>

+                            <property name="borderRightColor">#808080</property>

+                            <property name="borderRightStyle">solid</property>

+                            <property name="borderRightWidth">thin</property>

+                        </cell>

+                        <cell id="351">

+                            <property name="style">groupFooter</property>

+                            <property name="borderRightColor">#808080</property>

+                            <property name="borderRightStyle">solid</property>

+                            <property name="borderRightWidth">1pt</property>

+                            <property name="textAlign">left</property>

+                            <data id="363">

+                                <property name="style">groupRowHeader</property>

+                                <property name="resultSetColumn">group_id</property>

+                            </data>

+                        </cell>

+                        <cell id="352">

+                            <property name="style">groupFooter</property>

+                            <data id="378">

+                                <structure name="numberFormat">

+                                    <property name="category">Currency</property>

+                                    <property name="pattern">###0.00</property>

+                                </structure>

+                                <property name="resultSetColumn">group_loan_1_balance_total</property>

+                            </data>

+                        </cell>

+                        <cell id="353">

+                            <property name="style">groupFooter</property>

+                            <property name="borderRightColor">#808080</property>

+                            <property name="borderRightStyle">solid</property>

+                            <property name="borderRightWidth">thin</property>

+                            <data id="385">

+                                <structure name="numberFormat">

+                                    <property name="category">Currency</property>

+                                    <property name="pattern">###0.00</property>

+                                </structure>

+                                <property name="resultSetColumn">group_loan_2_balance_total</property>

+                            </data>

+                        </cell>

+                        <cell id="354">

+                            <property name="style">groupFooter</property>

+                            <data id="406">

+                                <structure name="numberFormat">

+                                    <property name="category">Currency</property>

+                                    <property name="pattern">###0.00</property>

+                                </structure>

+                                <property name="resultSetColumn">group_savings_1_balance_total</property>

+                            </data>

+                        </cell>

+                        <cell id="355">

+                            <property name="style">groupFooter</property>

+                            <property name="borderRightColor">#808080</property>

+                            <property name="borderRightStyle">solid</property>

+                            <property name="borderRightWidth">1pt</property>

+                            <data id="387">

+                                <structure name="numberFormat">

+                                    <property name="category">Currency</property>

+                                    <property name="pattern">###0.00</property>

+                                </structure>

+                                <property name="resultSetColumn">group_savings_2_balance_total</property>

+                            </data>

+                        </cell>

+                        <cell id="356">

+                            <property name="style">groupFooter</property>

+                            <data id="388">

+                                <structure name="numberFormat">

+                                    <property name="category">Currency</property>

+                                    <property name="pattern">###0.00</property>

+                                </structure>

+                                <property name="resultSetColumn">group_loan_1_due_total</property>

+                            </data>

+                        </cell>

+                        <cell id="357">

+                            <property name="style">groupFooter</property>

+                            <property name="borderRightColor">#808080</property>

+                            <property name="borderRightStyle">solid</property>

+                            <property name="borderRightWidth">1pt</property>

+                            <data id="389">

+                                <structure name="numberFormat">

+                                    <property name="category">Currency</property>

+                                    <property name="pattern">###0.00</property>

+                                </structure>

+                                <property name="resultSetColumn">group_loan_2_due_total</property>

+                            </data>

+                        </cell>

+                        <cell id="358">

+                            <property name="style">groupFooter</property>

+                            <data id="390">

+                                <structure name="numberFormat">

+                                    <property name="category">Currency</property>

+                                    <property name="pattern">###0.00</property>

+                                </structure>

+                                <property name="resultSetColumn">group_savings_1_due_total</property>

+                            </data>

+                        </cell>

+                        <cell id="359">

+                            <property name="style">groupFooter</property>

+                            <property name="borderRightColor">#808080</property>

+                            <property name="borderRightStyle">solid</property>

+                            <property name="borderRightWidth">1pt</property>

+                            <data id="391">

+                                <structure name="numberFormat">

+                                    <property name="category">Currency</property>

+                                    <property name="pattern">###0.00</property>

+                                </structure>

+                                <property name="resultSetColumn">group_savings_2_due_total</property>

+                            </data>

+                        </cell>

+                        <cell id="360">

+                            <property name="style">groupFooter</property>

+                            <property name="borderRightColor">#808080</property>

+                            <property name="borderRightStyle">solid</property>

+                            <property name="borderRightWidth">1pt</property>

+                            <data id="392">

+                                <structure name="numberFormat">

+                                    <property name="category">Currency</property>

+                                    <property name="pattern">###0.00</property>

+                                </structure>

+                                <property name="resultSetColumn">group_due_total</property>

+                            </data>

+                        </cell>

+                        <cell id="361">

+                            <property name="style">groupFooter</property>

+                            <property name="borderRightColor">#808080</property>

+                            <property name="borderRightStyle">solid</property>

+                            <property name="borderRightWidth">1pt</property>

+                            <data id="393">

+                                <structure name="numberFormat">

+                                    <property name="category">Currency</property>

+                                    <property name="pattern">###0.00</property>

+                                </structure>

+                                <property name="resultSetColumn">group_other_fee_total</property>

+                            </data>

+                        </cell>

+                        <cell id="362">

+                            <property name="style">groupFooter</property>

+                            <property name="borderRightColor">#808080</property>

+                            <property name="borderRightStyle">solid</property>

+                            <property name="borderRightWidth">1pt</property>

+                            <data id="394">

+                                <structure name="numberFormat">

+                                    <property name="category">Currency</property>

+                                    <property name="pattern">###0.00</property>

+                                </structure>

+                                <property name="resultSetColumn">group_other_fine_total</property>

+                            </data>

+                        </cell>

+                        <cell id="843">

+                            <property name="style">groupFooter</property>

+                            <property name="borderRightColor">#808080</property>

+                            <property name="borderRightStyle">solid</property>

+                            <property name="borderRightWidth">1pt</property>

+                            <data id="912">

+                                <structure name="numberFormat">

+                                    <property name="category">Currency</property>

+                                    <property name="pattern">###0.00</property>

+                                </structure>

+                                <property name="resultSetColumn">group_loan_1_issues_total</property>

+                            </data>

+                        </cell>

+                        <cell id="969">

+                            <property name="style">groupFooter</property>

+                            <property name="borderRightColor">#808080</property>

+                            <property name="borderRightStyle">solid</property>

+                            <property name="borderRightWidth">1pt</property>

+                            <data id="983">

+                                <structure name="numberFormat">

+                                    <property name="category">Currency</property>

+                                    <property name="pattern">###0.00</property>

+                                </structure>

+                                <property name="resultSetColumn">group_loan_2_issues_total</property>

+                            </data>

+                        </cell>

+                        <cell id="858">

+                            <property name="style">groupFooter</property>

+                            <property name="borderRightColor">#808080</property>

+                            <property name="borderRightStyle">solid</property>

+                            <property name="borderRightWidth">1pt</property>

+                        </cell>

+                    </row>

+                </footer>

+            </group>

+            <detail>

+                <row id="149">

+                    <property name="style">rowText</property>

+                    <cell id="150">

+                        <property name="style">idText</property>

+                        <property name="borderLeftColor">#808080</property>

+                        <property name="borderLeftStyle">solid</property>

+                        <property name="borderLeftWidth">thin</property>

+                        <property name="borderRightColor">#808080</property>

+                        <property name="borderRightStyle">solid</property>

+                        <property name="borderRightWidth">thin</property>

+                        <data id="261">

+                            <structure name="numberFormat">

+                                <property name="category">Custom</property>

+                                <property name="pattern">00</property>

+                            </structure>

+                            <property name="resultSetColumn">member_id</property>

+                        </data>

+                    </cell>

+                    <cell id="151">

+                        <property name="borderRightColor">#808080</property>

+                        <property name="borderRightStyle">solid</property>

+                        <property name="borderRightWidth">thin</property>

+                        <data id="262">

+                            <property name="resultSetColumn">member_name</property>

+                        </data>

+                    </cell>

+                    <cell id="152">

+                        <property name="style">numberFormat</property>

+                        <data id="263">

+                            <structure name="numberFormat">

+                                <property name="category">Currency</property>

+                                <property name="pattern">###0.00</property>

+                            </structure>

+                            <property name="resultSetColumn">loan_1_balance</property>

+                        </data>

+                    </cell>

+                    <cell id="153">

+                        <property name="style">numberFormat</property>

+                        <property name="borderRightColor">#808080</property>

+                        <property name="borderRightStyle">solid</property>

+                        <property name="borderRightWidth">thin</property>

+                        <data id="264">

+                            <structure name="numberFormat">

+                                <property name="category">Currency</property>

+                                <property name="pattern">###0.00</property>

+                            </structure>

+                            <property name="resultSetColumn">loan_2_balance</property>

+                        </data>

+                    </cell>

+                    <cell id="154">

+                        <property name="style">numberFormat</property>

+                        <data id="265">

+                            <structure name="numberFormat">

+                                <property name="category">Currency</property>

+                                <property name="pattern">###0.00</property>

+                            </structure>

+                            <property name="resultSetColumn">savings_1_balance</property>

+                        </data>

+                    </cell>

+                    <cell id="155">

+                        <property name="style">numberFormat</property>

+                        <property name="borderRightColor">#808080</property>

+                        <property name="borderRightStyle">solid</property>

+                        <property name="borderRightWidth">1pt</property>

+                        <data id="266">

+                            <structure name="numberFormat">

+                                <property name="category">Currency</property>

+                                <property name="pattern">###0.00</property>

+                            </structure>

+                            <property name="resultSetColumn">savings_2_balance</property>

+                        </data>

+                    </cell>

+                    <cell id="156">

+                        <property name="style">numberFormat</property>

+                        <data id="267">

+                            <structure name="numberFormat">

+                                <property name="category">Currency</property>

+                                <property name="pattern">###0.00</property>

+                            </structure>

+                            <property name="resultSetColumn">loan_1_due</property>

+                        </data>

+                    </cell>

+                    <cell id="157">

+                        <property name="style">numberFormat</property>

+                        <property name="borderRightColor">#808080</property>

+                        <property name="borderRightStyle">solid</property>

+                        <property name="borderRightWidth">1pt</property>

+                        <data id="268">

+                            <structure name="numberFormat">

+                                <property name="category">Currency</property>

+                                <property name="pattern">###0.00</property>

+                            </structure>

+                            <property name="resultSetColumn">loan_2_due</property>

+                        </data>

+                    </cell>

+                    <cell id="158">

+                        <property name="style">numberFormat</property>

+                        <data id="269">

+                            <structure name="numberFormat">

+                                <property name="category">Currency</property>

+                                <property name="pattern">###0.00</property>

+                            </structure>

+                            <property name="resultSetColumn">savings_1_due</property>

+                        </data>

+                    </cell>

+                    <cell id="159">

+                        <property name="style">numberFormat</property>

+                        <property name="borderRightColor">#808080</property>

+                        <property name="borderRightStyle">solid</property>

+                        <property name="borderRightWidth">1pt</property>

+                        <data id="270">

+                            <structure name="numberFormat">

+                                <property name="category">Currency</property>

+                                <property name="pattern">###0.00</property>

+                            </structure>

+                            <property name="resultSetColumn">savings_2_due</property>

+                        </data>

+                    </cell>

+                    <cell id="160">

+                        <property name="style">numberFormat</property>

+                        <property name="borderRightColor">#808080</property>

+                        <property name="borderRightStyle">solid</property>

+                        <property name="borderRightWidth">1pt</property>

+                        <data id="273">

+                            <structure name="numberFormat">

+                                <property name="category">Currency</property>

+                                <property name="pattern">###0.00</property>

+                            </structure>

+                            <property name="resultSetColumn">due_total</property>

+                        </data>

+                    </cell>

+                    <cell id="161">

+                        <property name="style">numberFormat</property>

+                        <property name="borderRightColor">#808080</property>

+                        <property name="borderRightStyle">solid</property>

+                        <property name="borderRightWidth">1pt</property>

+                        <data id="274">

+                            <structure name="numberFormat">

+                                <property name="category">Currency</property>

+                                <property name="pattern">###0.00</property>

+                            </structure>

+                            <property name="resultSetColumn">other_fee</property>

+                        </data>

+                    </cell>

+                    <cell id="206">

+                        <property name="style">numberFormat</property>

+                        <property name="borderRightColor">#808080</property>

+                        <property name="borderRightStyle">solid</property>

+                        <property name="borderRightWidth">1pt</property>

+                        <data id="275">

+                            <structure name="numberFormat">

+                                <property name="category">Currency</property>

+                                <property name="pattern">###0.00</property>

+                            </structure>

+                            <property name="resultSetColumn">other_fine</property>

+                        </data>

+                    </cell>

+                    <cell id="842">

+                        <property name="style">numberFormat</property>

+                        <property name="borderRightColor">#808080</property>

+                        <property name="borderRightStyle">solid</property>

+                        <property name="borderRightWidth">1pt</property>

+                        <data id="911">

+                            <structure name="numberFormat">

+                                <property name="category">Currency</property>

+                                <property name="pattern">###0.00</property>

+                            </structure>

+                            <property name="resultSetColumn">loan_1_issues</property>

+                        </data>

+                    </cell>

+                    <cell id="968">

+                        <property name="style">numberFormat</property>

+                        <property name="borderRightColor">#808080</property>

+                        <property name="borderRightStyle">solid</property>

+                        <property name="borderRightWidth">1pt</property>

+                        <data id="982">

+                            <structure name="numberFormat">

+                                <property name="category">Currency</property>

+                                <property name="pattern">###0.00</property>

+                            </structure>

+                            <property name="resultSetColumn">loan_2_issues</property>

+                        </data>

+                    </cell>

+                    <cell id="857">

+                        <property name="style">numberFormat</property>

+                        <property name="borderRightColor">#808080</property>

+                        <property name="borderRightStyle">solid</property>

+                        <property name="borderRightWidth">1pt</property>

+                    </cell>

+                </row>

+            </detail>

+            <footer>

+                <row id="162">

+                    <cell id="163"/>

+                    <cell id="164"/>

+                    <cell id="165"/>

+                    <cell id="166"/>

+                    <cell id="167"/>

+                    <cell id="168"/>

+                    <cell id="169"/>

+                    <cell id="170"/>

+                    <cell id="171"/>

+                    <cell id="172"/>

+                    <cell id="173"/>

+                    <cell id="174"/>

+                    <cell id="207"/>

+                    <cell id="850"/>

+                    <cell id="977"/>

+                    <cell id="865"/>

+                </row>

+            </footer>

+        </table>

+    </body>

+</report>

Index: BirtWebViewer/webcontent/birt/ajax/ui/dialog/BirtParameterDialog.js
==================================================================
--- BirtWebViewer/webcontent/birt/ajax/ui/dialog/BirtParameterDialog.js	(revision 12249)

+++ BirtWebViewer/webcontent/birt/ajax/ui/dialog/BirtParameterDialog.js	(patch commit-11012008a level 1)

@@ -541,8 +541,14 @@

 				param.value = this.__parameter[i].value;

 				

 				//replace the URL parameter			

-				var reg = new RegExp( "&" + param.name + "[^&]*&*", "g" );

-				action = action.replace( reg, "&" );

+				// commented - let's not remove query param from URL even if

+				// the same param exists as POST param, because the cascade param

+				// dropdown does not send the userId if it's only a hidden param

+				

+				//var reg = new RegExp( "&" + param.name + "[^&]*&*", "g" );

+				//action = action.replace( reg, "&" );

+				

+				// end comment

 			}

 		}

 

Index: BirtWebViewer/webcontent/birt/pages/parameter/ComboBoxParameterFragment.jsp
==================================================================
--- BirtWebViewer/webcontent/birt/pages/parameter/ComboBoxParameterFragment.jsp	(revision 12249)

+++ BirtWebViewer/webcontent/birt/pages/parameter/ComboBoxParameterFragment.jsp	(patch commit-11012008a level 1)

@@ -29,8 +29,9 @@

 %>

 <!--For Mifos Birt reports-->

 <TR>

-	<TD NOWRAP>

-	</TD>

+    <!-- below TD commented for alignment -->

+	<!-- <TD NOWRAP>

+	</TD>-->

 	<TD NOWRAP class = "fontnormal" align="right">

 	<%if ( parameterBean.isRequired( ) )

 		{

@@ -44,7 +45,8 @@

 		

 		

 	</TD>

-	<TD NOWRAP></TD>

+	<!-- below TD commented for alignment -->

+	<!-- <TD NOWRAP></TD> -->

 	<TD NOWRAP WIDTH="50%">

 		<INPUT TYPE="HIDDEN"

 			ID="<%= encodedParameterName + "_value" %>"

Index: BirtWebViewer/webcontent/birt/pages/parameter/HiddenParameterFragment.jsp
==================================================================
--- BirtWebViewer/webcontent/birt/pages/parameter/HiddenParameterFragment.jsp	(revision 12249)

+++ BirtWebViewer/webcontent/birt/pages/parameter/HiddenParameterFragment.jsp	(patch commit-11012008a level 1)

@@ -37,6 +37,19 @@

 		<INPUT TYPE="HIDDEN"
 			NAME="<%= encodedParameterName %>"
 			VALUE="<%= value %>"/>		
+		    <!-- For Mifos Birt report -->
+		    <font class="fontnormalRedBold">
+		    <%
+			    String message = request.getParameter("mifosErrorMessage");
+	 		    if (message != null && request.getAttribute("errorHasBeenShown") == null) { 
+	 		        request.setAttribute("errorHasBeenShown", "true");			    		 		    
+			    	String[] messages = message.split("~");
+			    	for(int i=0;i<messages.length;i++){	    
+			    		out.println("<li>" + messages[i] + "</li>");
+			    	}
+			    }
+		    %>
+		    </font>						
 	</TD>
 </TR>
 
Index: BirtWebViewer/webcontent/birt/pages/parameter/ParameterGroupFragment.jsp
==================================================================
--- BirtWebViewer/webcontent/birt/pages/parameter/ParameterGroupFragment.jsp	(revision 12249)

+++ BirtWebViewer/webcontent/birt/pages/parameter/ParameterGroupFragment.jsp	(patch commit-11012008a level 1)

@@ -22,7 +22,7 @@

 -----------------------------------------------------------------------------%>

 <jsp:useBean id="fragments" type="java.util.Collection" scope="request" />

 <jsp:useBean id="attributeBean" type="org.eclipse.birt.report.context.BaseAttributeBean" scope="request" />

-

+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

 <%-----------------------------------------------------------------------------

 	Content fragment

 -----------------------------------------------------------------------------%>

@@ -62,6 +62,17 @@

 	}

 %>	

 		<TABLE CLASS="birtviewer_parameter_dialog_Label">

+		<TR><TD COLSPAN="2" ALIGN="CENTER">

+

+		<c:if test="${reportErrors ne null}">

+			Error occurred while generating report

+			<div align="left"><ul class="fontnormalRedBold">

+			<c:forEach items="${reportErrors.allErrorMessages}" var="error">

+				<li><c:out value="${error}"/></li>

+			</c:forEach>

+			</ul></div>

+		</c:if>

+		</TD></TR>

 		<%

 			if ( fragments != null )

 			{

Index: BirtWebViewer/webcontent/birt/pages/parameter/TextBoxParameterFragment.jsp
==================================================================
--- BirtWebViewer/webcontent/birt/pages/parameter/TextBoxParameterFragment.jsp	(revision 12249)

+++ BirtWebViewer/webcontent/birt/pages/parameter/TextBoxParameterFragment.jsp	(patch commit-11012008a level 1)

@@ -27,17 +27,11 @@

 	String encodedParameterName = ParameterAccessor.htmlEncode( parameterBean.getName( ) );

 %>

 <TR>

-	<TD NOWRAP>

-	<!-- For Mifos Birt reports hide

+	<!--<TD NOWRAP>

 		<IMG SRC="birt/images/parameter.gif" ALT="<%= parameterBean.getDisplayName( ) %>" TITLE="<%= parameterBean.getToolTip( ) %>"/>

-	-->	

-	</TD>

-	<TD NOWRAP>

-	    <!-- For Mifos Birt reports hide

-		<FONT TITLE="<%= parameterBean.getToolTip( ) %>">

-		

-		<LABEL FOR="<%= encodedParameterName %>"><%= parameterBean.getDisplayName( ) %>:</LABEL></FONT>

-		-->	

+	</TD>-->

+	<TD NOWRAP class = "fontnormal" align="right">

+		<FONT TITLE="<%= parameterBean.getToolTip( ) %>"><LABEL FOR="<%= encodedParameterName %>"><%= parameterBean.getDisplayName( ) %>:</LABEL></FONT>

 		<%-- is required --%>

 		<%

 		if ( parameterBean.isRequired( ) )

@@ -48,9 +42,9 @@

 		}

 		%>

 	</TD>

-</TR>

+<!--</TR>

 <TR>

-	<TD NOWRAP></TD>

+	<TD NOWRAP></TD>-->

 	<TD NOWRAP WIDTH="100%">

 <%

 	if ( parameterBean.allowNull( ) )

@@ -81,7 +75,6 @@

 <%

 	}

 %>

-<!-- For Mifos Birt reports hide

 		<INPUT CLASS="BirtViewer_parameter_dialog_Input"

 			TYPE="<%= parameterBean.isValueConcealed( )? "PASSWORD" : "TEXT" %>"

 			NAME="<%= encodedParameterName %>"

@@ -90,43 +83,7 @@

 			VALUE="<%= ParameterAccessor.htmlEncode( ( parameterBean.getValue( ) == null )? "" : parameterBean.getValue( ) ) %>" 

 			<%= ( parameterBean.allowNull( ) && parameterBean.getValue( ) == null )? "DISABLED='true'" : "" %>

             >

--->

-<!-- For Mifos Birt reports add-->

-        <table width="70%" cellspacing="0" cellpadding="0" border="0">

-             <tbody>

-                  <tr>

-                    <td class="headingorange" width="70%" valign="top" height="24" align="left">

-                        <LABEL><%= ParameterAccessor.htmlEncode( ( parameterBean.getValue( ) == null )? "" : parameterBean.getValue( ) ) %></LABEL>

-                        <br/>

-                    </td>

-                  </tr>

-             </tbody>

-         </table>

-         <div class="fontnormal">

-         <LABEL>Enter the parameters on which the report will be generated. The report will be generated as a pdf. 

-		     <FONT COLOR="red"><LABEL>*</LABEL></FONT><LABEL>Fields marked with an asterisk are required. </LABEL>

-             </br>

-         </div>

-         <div class="fontnormalbold">

-             </br>

-             <LABEL>&nbsp;Generate Report:</LABEL>

-         </div>

-         <!-- For Mifos Birt report -->

-	    <font class="fontnormalRedBold">

-	    <%

-		    String message = request.getParameter("message");

-		    if (message != null) {

-		    	String[] messages = message.split("~");

-		    	for(int i=0;i<messages.length;i++){

-	    %>

-	    <%

-		    		out.println("<li>" + messages[i] + "</li>");

-		    	}

-		    }

-	    %>

-	    </font>

-	    <!-- END -->

-<!-- End -->

+

 <%

 	if ( parameterBean.allowNull( ) && !parameterBean.allowBlank( ) )

 	{

Index: build.xml
==================================================================
--- build.xml	(revision 12249)

+++ build.xml	(patch commit-11012008a level 1)

@@ -32,6 +32,7 @@

 	<property name="src.dir" value="${basedir}/src"/>
 	<property name="birt.web.viewer.dir" value="${basedir}/BirtWebViewer"/>
 	<property name="birt.report.design.dir" value="${basedir}/BirtReportDesign"/>
+	<property name="birt.report.resource.dir" value="${basedir}/BirtReportResource"/>
 	<property name="test.dir" value="${basedir}/test"/>
 	<property name="sql.dir" value="${basedir}/sql"/>
 	<property name="build.dir" value="${basedir}/build"/>
@@ -193,7 +194,6 @@

 		<copy todir="${build.src.dir}/pages">
 			<fileset dir="${src.dir}/org/mifos/doc-root"/>
 		</copy>
-
 		<copy todir="${build.classes}/org/mifos/application">
 			<fileset dir="${src.dir}/org/mifos/application">
 				<exclude name="**/*.java"/>
@@ -217,6 +217,7 @@

                 	unless="my.hibernate.properties.present" />
 			</fileset>
 		</copy>
+		<copy file="${conf.dir}/ehcache.xml" todir="${build.classes}/conf"/>
 		<copy todir="${build.web-inf}/services/MifosService/META-INF">
 			<fileset dir="${src.dir}/org/mifos/api/resources">
 				<include name="services.xml"/>
@@ -257,6 +258,9 @@

 		<copy todir="${build.src.dir}/report">
 			<fileset dir="${birt.report.design.dir}" />
 		</copy>
+		<copy todir="${build.src.dir}/report/BirtReportResource">
+			<fileset dir="${birt.report.resource.dir}" />
+		</copy>
 	</target>
 
 	<target name="lib" depends="compile" description="Build the mifos library">
@@ -414,7 +418,7 @@

 			<fileset dir="${build.src.dir}" excludes="**/web.xml" />
 		</war>
 	</target>
-
+	
 	<target name="dist" 
 		depends="clean,compile,copy_files,compile_test,copy_test_files,run_test,war,deploy" 
 		description="Compiles, runs test, builds a distributable war and places in the dist directory. Copies to the web server in use. Does not rebuild the production database"
@@ -578,7 +582,7 @@

 			todir="${deploy.destination}"
 		/>
 	</target>
-
+	
 	<target name="javadoc">
 		<mkdir dir="${doc.dir}/api"/>
 		<javadoc packagenames="org.*"
Index: conf/ehcache.xml
==================================================================
--- conf/ehcache.xml	(revision 12249)

+++ conf/ehcache.xml	(patch commit-11012008a level 1)

@@ -0,0 +1,45 @@

+<ehcache>

+

+	<!-- Sets the path to the directory where cache .data files are created.

+		

+		If the path is a Java System Property it is replaced by

+		its value in the running VM.

+		

+		The following properties are translated:

+		user.home - User's home directory

+		user.dir - User's current working directory

+		java.io.tmpdir - Default temp file path -->

+	<diskStore path="java.io.tmpdir" />

+

+

+	<!--Default Cache configuration. These will applied to caches programmatically created through

+		the CacheManager.

+		

+		The following attributes are required for defaultCache:

+		

+		maxInMemory       - Sets the maximum number of objects that will be created in memory

+		eternal           - Sets whether elements are eternal. If eternal,  timeouts are ignored and the element

+		is never expired.

+		timeToIdleSeconds - Sets the time to idle for an element before it expires.

+		i.e. The maximum amount of time between accesses before an element expires

+		Is only used if the element is not eternal.

+		Optional attribute. A value of 0 means that an Element can idle for infinity

+		timeToLiveSeconds - Sets the time to live for an element before it expires.

+		i.e. The maximum time between creation time and when an element expires.

+		Is only used if the element is not eternal.

+		overflowToDisk    - Sets whether elements can overflow to disk when the in-memory cache

+		has reached the maxInMemory limit.

+		

+	-->

+	<defaultCache maxElementsInMemory="100000" eternal="false"

+		timeToIdleSeconds="86400" timeToLiveSeconds="86400"

+		overflowToDisk="true" diskPersistent="false"

+		diskExpiryThreadIntervalSeconds="120" />

+	<cache name="org.mifos.application.reports.business.service.cache" maxElementsInMemory="10000"

+		eternal="false" overflowToDisk="true" timeToIdleSeconds="86400"

+		timeToLiveSeconds="86400"/>

+	<cache name="twentyFourHourCache" maxElementsInMemory="10000"

+		eternal="false" overflowToDisk="true" timeToIdleSeconds="86400"

+		timeToLiveSeconds="86400"/>

+</ehcache>

+

Index: lib/spring-modules-cache.jar
==================================================================
Cannot display: file marked as a binary type.

Property changes on: lib/spring-modules-cache.jar
___________________________________________________________________
Name: svn:mime-type
 +application/octet-stream

Index: src/org/mifos/META-INF/struts-config.xml
==================================================================
--- src/org/mifos/META-INF/struts-config.xml	(revision 12249)

+++ src/org/mifos/META-INF/struts-config.xml	(patch commit-11012008a level 1)

@@ -37,7 +37,34 @@

         <form-bean name="savingsActionForm"
                    type="org.mifos.application.accounts.savings.struts.actionforms.SavingsActionForm"/>
     </form-beans>
-
+	<global-exceptions>
+        <exception type="org.mifos.framework.exceptions.SystemException"
+                   handler="org.mifos.framework.exceptions.MifosExceptionHandler"
+                   key="exception.framework.SystemException"
+                   scope="request"
+                   path="/pages/framework/jsp/error.jsp"/>
+        <exception type="org.mifos.framework.exceptions.ApplicationException"
+                   handler="org.mifos.framework.exceptions.MifosExceptionHandler"
+                   key="exception.framework.ApplicationException"
+                   scope="request"/>
+        <exception type="org.mifos.framework.exceptions.PageExpiredException"
+                   handler="org.mifos.framework.exceptions.MifosExceptionHandler"
+                   key="exception.framework.PageExpiredException"
+                   scope="request"
+                   path="/pages/framework/jsp/pageexpirederror.jsp"/>
+        <exception type="org.mifos.framework.exceptions.ConnectionNotFoundException"
+                   handler="org.mifos.framework.exceptions.MifosExceptionHandler"
+                   key="exception.framework.ConnectionNotFoundException"
+                   scope="request" path="/pages/framework/jsp/error.jsp"/>
+        <exception type="org.mifos.framework.exceptions.ServiceUnavailableException"
+                   handler="org.mifos.framework.exceptions.MifosExceptionHandler"
+                   key="exception.framework.ServiceUnavailableException"
+                   scope="request" path="/pages/framework/jsp/error.jsp"/>
+    </global-exceptions>
+    <global-forwards>
+        <forward name="welcome" path="/loginAction.do?method=load"/>
+        <forward name="load_main_page" path="/pages/application/login/jsp/login.jsp"/>
+    </global-forwards>
     <global-exceptions>
         <exception type="org.mifos.framework.exceptions.SystemException"
                    handler="org.mifos.framework.exceptions.MifosExceptionHandler"
Index: src/org/mifos/META-INF/web.xml
==================================================================
--- src/org/mifos/META-INF/web.xml	(revision 12249)

+++ src/org/mifos/META-INF/web.xml	(patch commit-11012008a level 1)

@@ -75,6 +75,16 @@

 		<url-pattern>*.do</url-pattern>
 	</servlet-mapping>
 	
+	<!-- Birt Reports Validation Flow Servlet -->
+	<servlet>
+	    <servlet-name>BirtReportValidationController</servlet-name>
+	    <servlet-class>org.mifos.application.reports.action.BirtReportValidationAction</servlet-class>
+	</servlet>
+	<servlet-mapping>
+	    <servlet-name>BirtReportValidationController</servlet-name>
+	    <url-pattern>/birtReports</url-pattern>
+	</servlet-mapping>
+	
 	<!-- pages/actions which don't go through struts -->
 	<servlet>
 	    <servlet-name>Dispatcher</servlet-name>
Index: src/org/mifos/META-INF/ehcache.xml
==================================================================
--- src/org/mifos/META-INF/ehcache.xml	(revision 12249)

+++ src/org/mifos/META-INF/ehcache.xml	(patch commit-11012008a level 1)

@@ -0,0 +1,42 @@

+<ehcache>

+

+	<!-- Sets the path to the directory where cache .data files are created.

+		

+		If the path is a Java System Property it is replaced by

+		its value in the running VM.

+		

+		The following properties are translated:

+		user.home - User's home directory

+		user.dir - User's current working directory

+		java.io.tmpdir - Default temp file path -->

+	<diskStore path="java.io.tmpdir" />

+

+

+	<!--Default Cache configuration. These will applied to caches programmatically created through

+		the CacheManager.

+		

+		The following attributes are required for defaultCache:

+		

+		maxInMemory       - Sets the maximum number of objects that will be created in memory

+		eternal           - Sets whether elements are eternal. If eternal,  timeouts are ignored and the element

+		is never expired.

+		timeToIdleSeconds - Sets the time to idle for an element before it expires.

+		i.e. The maximum amount of time between accesses before an element expires

+		Is only used if the element is not eternal.

+		Optional attribute. A value of 0 means that an Element can idle for infinity

+		timeToLiveSeconds - Sets the time to live for an element before it expires.

+		i.e. The maximum time between creation time and when an element expires.

+		Is only used if the element is not eternal.

+		overflowToDisk    - Sets whether elements can overflow to disk when the in-memory cache

+		has reached the maxInMemory limit.

+		

+	-->

+	<defaultCache maxElementsInMemory="100000" eternal="false"

+		timeToIdleSeconds="86400" timeToLiveSeconds="86400"

+		overflowToDisk="true" diskPersistent="false"

+		diskExpiryThreadIntervalSeconds="120" />

+	<cache name="org.mifos.application.reports.business.service.cache" maxElementsInMemory="10000"

+		eternal="false" overflowToDisk="true" timeToIdleSeconds="86400"

+		timeToLiveSeconds="86400"/>

+</ehcache>

+

Index: src/org/mifos/META-INF/ehcache.xsd
==================================================================
Index: src/org/mifos/application/NamedQueryConstants.java
==================================================================
--- src/org/mifos/application/NamedQueryConstants.java	(revision 12249)

+++ src/org/mifos/application/NamedQueryConstants.java	(patch commit-11012008a level 1)

@@ -340,6 +340,17 @@

 
 	public String MASTERDATA_ACTIVE_BRANCHES = "masterdata.activeBranches";
 	public String GET_FIELD_TYPE = "getFieldType";
+	
+	public static final String COLLECTION_SHEET_FOR_SPECIFIED_CUSTOMER = "collectionSheet.getCollectionSheetForCenterWithSpecifiedMeetingDate";
+	public static final String COLLECTION_SHEETS_FOR_MEETING_DATE = "collectionSheet.getCollectionSheetForMeetingDate";
+	public static final String COLLECTION_SHEET_CUSTOMERS_ON_MEETING_DATE_FOR_LOAN_OFFICER = "CollectionSheetCustomer.collectionSheetForSpecifiedMeetingDateAndLoanOfficer";
+	public static final String COLLECTION_SHEET_CUSTOMERS_ON_MEETING_DATE = "CollectionSheetCustomer.collectionSheetForSpecifiedMeetingDate";
+	public static final String COLLECTION_SHEETS_OF_CHILDREN_ON_MEETING_DATE = "CollectionSheetCustomer.collectionSheetOfCustomersUnderAParentForSpecifiedMeetingDate";
+	public static final String GET_ACTIVE_BRANCHES_AS_SELECTION_ITEM = "SelectionItem.get_active_offices";
+	public static final String GET_ACTIVE_LOAN_OFFICERS_UNDER_OFFICE_AS_SELECTION_ITEM = "SelectionItem.get_active_loanofficers_under_office";
+	public static final String GET_ACTIVE_CUSTOMERS_UNDER_LOAN_OFFICER_AS_SELECTION_ITEM = "SelectionItem.get_active_customers_under_loanofficers";
+	public static final String GET_MEETING_DATES_AS_SELECTION_ITEM = "DateSelectionItem.get_meeting_dates";
+	
 	/**M2 queries*/
 	/**Personnel Queries*/
 	public String MASTERDATA_ACTIVE_LOANOFFICERS_INBRANCH = "masterdata.activeloanofficers";
Index: src/org/mifos/application/accounts/loan/business/LoanBO.java
==================================================================
--- src/org/mifos/application/accounts/loan/business/LoanBO.java	(revision 12249)

+++ src/org/mifos/application/accounts/loan/business/LoanBO.java	(patch commit-11012008a level 1)

@@ -206,20 +206,29 @@

 	private Short recurMonth;
 	
 
-	protected LoanBO() {
-		super();
-		this.loanOffering = null;
-		this.loanSummary = null;
+	protected LoanBO() {		
+		this(null, null, null, null, null);
 		this.loanPrdPersistence = null;
-		this.performanceHistory = null;
 		this.loanActivityDetails = new HashSet<LoanActivityEntity>();
         this.redone = false;
- 		this.maxMinLoanAmount = null;
-		this.maxMinNoOfInstall = null;
     	parentAccount=null;
     	loanAccountDetails=new HashSet<LoanBO>();
 	}
+	
+	public LoanBO(LoanOfferingBO loanOffering){
+		this(loanOffering, null, null, null, null);
+	}
 
+	private LoanBO(LoanOfferingBO loanOffering, LoanSummaryEntity loanSummary, MaxMinLoanAmount maxMinLoanAmount, 
+			MaxMinNoOfInstall maxMinNoOfInstall, LoanPerformanceHistoryEntity performanceHistory) {
+		this.loanOffering = loanOffering;
+		this.loanSummary = loanSummary;
+		this.maxMinLoanAmount = maxMinLoanAmount;
+		this.maxMinNoOfInstall = maxMinNoOfInstall;
+		this.performanceHistory = performanceHistory;		
+	}
+	
+
 	public static LoanBO redoLoan(UserContext userContext,
 			LoanOfferingBO loanOffering, CustomerBO customer,
 			AccountState accountState, Money loanAmount,
@@ -3406,7 +3415,8 @@

 	public RankType getWeekRank() {
 		return monthRank!=null ? RankType.getRankType(monthRank.getId()) : null;
 	}
-	
 
-	
+	public boolean isOfProductOffering(LoanOfferingBO loanOfferingBO) {
+		return this.loanOffering.equals(loanOfferingBO);
+	}
 }
Index: src/org/mifos/application/accounts/savings/business/SavingsBO.java
==================================================================
--- src/org/mifos/application/accounts/savings/business/SavingsBO.java	(revision 12249)

+++ src/org/mifos/application/accounts/savings/business/SavingsBO.java	(patch commit-11012008a level 1)

@@ -137,6 +137,11 @@

 		savingsActivityDetails = new HashSet<SavingsActivityEntity>();
 	}
 
+	public SavingsBO(SavingsOfferingBO savingsOffering) {
+		this.savingsOffering = savingsOffering;
+		
+	}
+
 	public Money getRecommendedAmount() {
 		return recommendedAmount;
 	}
@@ -2144,4 +2149,8 @@

 		}else
 			return trxnDate.equals(DateUtils.getCurrentDateWithoutTimeStamp());
 	}
+
+	public boolean isOfProductOffering(SavingsOfferingBO productOffering) {
+		return savingsOffering.equals(productOffering);
+	}
 }
Index: src/org/mifos/application/collectionsheet/business/CollSheetCustBO.hbm.xml
==================================================================
--- src/org/mifos/application/collectionsheet/business/CollSheetCustBO.hbm.xml	(revision 12249)

+++ src/org/mifos/application/collectionsheet/business/CollSheetCustBO.hbm.xml	(patch commit-11012008a level 1)

@@ -103,7 +103,32 @@

 						
 						
 		]]>
+	</query>	
+	<!--This query returns list of collection sheets for specified customer at given meeting date-->
+	<query name="CollectionSheetCustomer.collectionSheetForSpecifiedMeetingDateAndLoanOfficer">
+		<![CDATA[ from org.mifos.application.collectionsheet.business.CollSheetCustBO collectionSheet
+					where collectionSheet.custLevel = :CUSTOMER_LEVEL
+					and collectionSheet.collectionSheet.collSheetDate= :MEETING_DATE
+					and collectionSheet.custId = :CUSTOMER_ID
+					and collectionSheet.loanOfficerId = :LOAN_OFFICER_ID
+		]]>
 	</query>
-	
-	
+	<!--This query returns list of collection sheets for specified customer at given meeting date-->
+	<query name="CollectionSheetCustomer.collectionSheetForSpecifiedMeetingDate">
+		<![CDATA[ from org.mifos.application.collectionsheet.business.CollSheetCustBO collectionSheet
+					where collectionSheet.custLevel = :CUSTOMER_LEVEL
+					and collectionSheet.collectionSheet.collSheetDate= :MEETING_DATE
+					and collectionSheet.custId = :CUSTOMER_ID
+					and collectionSheet.loanOfficerId = :LOAN_OFFICER_ID
+		]]>
+	</query>
+	<!--This query returns list of collection sheets for childrens of specified customer at given meeting date-->
+	<query name="CollectionSheetCustomer.collectionSheetOfCustomersUnderAParentForSpecifiedMeetingDate">
+		<![CDATA[ from org.mifos.application.collectionsheet.business.CollSheetCustBO collectionSheet
+					where collectionSheet.custLevel = :CUSTOMER_LEVEL
+					and collectionSheet.collectionSheet.collSheetDate= :MEETING_DATE
+					and collectionSheet.parentCustomerId = :PARENT_CUSTOMER_ID
+					and collectionSheet.loanOfficerId = :LOAN_OFFICER_ID
+		]]>
+	</query>
 </hibernate-mapping>

\ No newline at end of file

Index: src/org/mifos/application/collectionsheet/business/CollSheetCustBO.java
==================================================================
--- src/org/mifos/application/collectionsheet/business/CollSheetCustBO.java	(revision 12249)

+++ src/org/mifos/application/collectionsheet/business/CollSheetCustBO.java	(patch commit-11012008a level 1)

@@ -96,6 +96,24 @@

 	
 	private Short loanOfficerId ;
 	
+	public CollSheetCustBO(Integer custId, String custDisplayName,
+			Short custLevel, Short custOfficeId, String searchId, Short loanOfficerId) {
+		super();
+		this.custId = custId;
+		this.custDisplayName = custDisplayName;
+		this.custLevel = custLevel;
+		this.custOfficeId = custOfficeId;
+		this.searchId = searchId;
+		this.loanOfficerId = loanOfficerId;
+		collectionSheetLoanDetails = new HashSet<CollSheetLnDetailsEntity>();
+		collSheetSavingsDetails = new HashSet<CollSheetSavingsDetailsEntity>();
+	}
+
+	public CollSheetCustBO() {
+		this(null, null, null, null, null, null);
+	}
+
+
 	public Long getCollSheetCustId() {
 		return collSheetCustId;
 	}
Index: src/org/mifos/application/collectionsheet/business/CollSheetLnDetailsEntity.java
==================================================================
--- src/org/mifos/application/collectionsheet/business/CollSheetLnDetailsEntity.java	(revision 12249)

+++ src/org/mifos/application/collectionsheet/business/CollSheetLnDetailsEntity.java	(patch commit-11012008a level 1)

@@ -37,6 +37,8 @@

  */
 package org.mifos.application.collectionsheet.business;
 
+import java.io.Serializable;
+
 import org.mifos.application.accounts.business.AccountActionDateEntity;
 import org.mifos.application.accounts.loan.business.LoanBO;
 import org.mifos.application.accounts.loan.business.LoanScheduleEntity;
@@ -49,6 +51,7 @@

 import org.mifos.framework.exceptions.ApplicationException;
 import org.mifos.framework.exceptions.SystemException;
 import org.mifos.framework.util.helpers.Money;
+import org.mifos.framework.util.helpers.MoneyUtils;
 
 public class CollSheetLnDetailsEntity extends PersistentObject {
 
@@ -290,7 +293,8 @@

 	public void addAccountDetails(AccountActionDateEntity accountActionDate)
 			throws SystemException, ApplicationException {
 		LoanScheduleEntity loanSchedule = (LoanScheduleEntity) accountActionDate;
-		LoanBO loan = new LoanPersistence().getAccount(loanSchedule.getAccount().getAccountId());
+		LoanBO loan = new LoanPersistence().getAccount(loanSchedule
+				.getAccount().getAccountId());
 		this.accountId = loanSchedule.getAccount().getAccountId();
 		this.currentInstallmentNo = loanSchedule.getInstallmentId();
 		MifosLogManager.getLogger(LoggerConstants.COLLECTIONSHEETLOGGER).debug(
@@ -333,7 +337,8 @@

 				&& null != collectionSheetLoanDetailsObj.getLoanDetailsId()) {
 			return loanDetailsId.equals(collectionSheetLoanDetailsObj
 					.getLoanDetailsId());
-		} else if (null != this.collectionSheetCustomer
+		}
+		else if (null != this.collectionSheetCustomer
 				&& null != collectionSheetLoanDetailsObj
 						.getCollectionSheetCustomer()) {
 			return this.accountId.equals(collectionSheetLoanDetailsObj
@@ -341,7 +346,8 @@

 					&& this.collectionSheetCustomer
 							.equals(collectionSheetLoanDetailsObj
 									.getCollectionSheetCustomer());
-		} else {
+		}
+		else {
 			return super.equals(collectionSheetLoanDetailsObj);
 		}
 
@@ -356,15 +362,17 @@

 	 * This sets accountId,amntToBeDisbursed and sets installment id to null
 	 * because installments haven't begun yet.
 	 */
-    public void addDisbursalDetails(LoanBO loan) {
-		MifosLogManager.getLogger(LoggerConstants.COLLECTIONSHEETLOGGER).debug("inside add disbursaldetails");
-		
+	public void addDisbursalDetails(LoanBO loan) {
+		MifosLogManager.getLogger(LoggerConstants.COLLECTIONSHEETLOGGER).debug(
+				"inside add disbursaldetails");
+
 		this.accountId = loan.getAccountId();
 		// TODO check in case of interest deducted at disbursement this should
 		// show the loan amount to be disbursed.
 		this.amntToBeDisbursed = loan.getLoanAmount();
-		if(loan.isInterestDeductedAtDisbursement()){
-			LoanScheduleEntity loanSchedule = (LoanScheduleEntity)loan.getAccountActionDate(CollectionSheetConstants.FIRST_INSTALLMENT);
+		if (loan.isInterestDeductedAtDisbursement()) {
+			LoanScheduleEntity loanSchedule = (LoanScheduleEntity) loan
+					.getAccountActionDate(CollectionSheetConstants.FIRST_INSTALLMENT);
 			this.interestDue = loanSchedule.getInterestDue();
 			this.feesDue = loanSchedule.getTotalFeeDue();
 		}
@@ -373,4 +381,12 @@

 		this.originalLoanAmnt = loan.getLoanAmount();
 		this.totalPrincipalDue = this.originalLoanAmnt;
 	}
+
+	public Money getTotalFees() {
+		return MoneyUtils.add(getFeesDue(), getFeesOverDue());
+	}
+
+	public Money getTotalPenalty() {
+		return MoneyUtils.add(getPenaltyDue(), getPenaltyOverDue());
+	}
 }
Index: src/org/mifos/application/collectionsheet/business/CollectionSheetBO.hbm.xml
==================================================================
--- src/org/mifos/application/collectionsheet/business/CollectionSheetBO.hbm.xml	(revision 12249)

+++ src/org/mifos/application/collectionsheet/business/CollectionSheetBO.hbm.xml	(patch commit-11012008a level 1)

@@ -12,13 +12,29 @@

 		<property name="statusFlag" column="STATUS_FLAG" type="short"/>
 		<property name="runDate" column="RUN_DATE" type="date"/>
 		
-		<set name="collectionSheetCustomers"   cascade="all"  table="COLL_SHEET_CUSTOMER" inverse="true">
-			<key column="COLL_SHEET_ID"  />
-			
+		<set name="collectionSheetCustomers" cascade="all"  table="COLL_SHEET_CUSTOMER" inverse="true">
+			<key column="COLL_SHEET_ID"/>
 			<one-to-many class="org.mifos.application.collectionsheet.business.CollSheetCustBO" />
 		</set>
-		
 	</class>
-	
-	
+
+    <query name="collectionSheet.getCollectionSheetForMeetingDate">
+            <![CDATA[from org.mifos.application.collectionsheet.business.CollectionSheetBO 
+            collectionSheet where collectionSheet.collSheetDate = :MEETING_DATE]]>
+    </query>	   
+
+	<!-- Query to retrieve meeting date for specified center -->
+	<sql-query name="collectionSheet.getCollectionSheetForCenterWithSpecifiedMeetingDate">
+		<return alias="collectionSheet" class="org.mifos.application.collectionsheet.business.CollectionSheetBO"/>
+		<![CDATA[
+			SELECT {collectionSheet.*} from coll_sheet collectionSheet, coll_sheet_customer 
+				where coll_sheet_customer.cust_id=:CUSTOMER_ID 
+				and coll_sheet_customer.cust_level=:CUSTOMER_LEVEL 
+				and coll_sheet_customer.cust_office_id=:OFFICE_ID
+				and coll_sheet_customer.loan_officer_id=:LOAN_OFFICER_ID 
+				and collectionSheet.coll_sheet_date > :FROM_DATE
+				and collectionSheet.coll_sheet_id=coll_sheet_customer.coll_sheet_id
+				order by collectionSheet.coll_sheet_date desc
+		]]>
+	</sql-query>	
 </hibernate-mapping>

\ No newline at end of file

Index: src/org/mifos/application/collectionsheet/business/CollectionSheetBO.java
==================================================================
--- src/org/mifos/application/collectionsheet/business/CollectionSheetBO.java	(revision 12249)

+++ src/org/mifos/application/collectionsheet/business/CollectionSheetBO.java	(patch commit-11012008a level 1)

@@ -71,6 +71,17 @@

 
 	private Set<CollSheetCustBO> collectionSheetCustomers;
 
+	public CollectionSheetBO(Date collSheetDate, Date runDate, Set<CollSheetCustBO> collectionSheetCustomers, Short statusFlag) {
+		super();
+		this.collSheetDate = collSheetDate;
+		this.runDate = runDate;
+		this.collectionSheetCustomers = collectionSheetCustomers;
+		this.statusFlag = statusFlag;
+		for(CollSheetCustBO customer: collectionSheetCustomers) {
+			customer.setCollectionSheet(this);
+		}
+	}
+
 	public Date getCollSheetDate() {
 		return collSheetDate;
 	}
Index: src/org/mifos/application/customer/business/CustomerBO.java
==================================================================
--- src/org/mifos/application/customer/business/CustomerBO.java	(revision 12249)

+++ src/org/mifos/application/customer/business/CustomerBO.java	(patch commit-11012008a level 1)

@@ -152,13 +152,21 @@

 	private Set<CustomerBO> children;
 
 	protected CustomerBO() {
-		super();
-		this.customerId = null;
+		this(null, null, null, null, null);
 		this.globalCustNum = null;
-		this.customerLevel = null;
-		this.formedByPersonnel = null;
 	}
 
+	
+	public CustomerBO(Integer customerId, CustomerLevelEntity customerLevel, PersonnelBO formedByPersonnel, PersonnelBO personnel, String displayName) {
+		super();
+		this.customerId = customerId;
+		this.customerLevel = customerLevel;
+		this.formedByPersonnel = formedByPersonnel;
+		this.personnel = personnel;
+		this.displayName = displayName;
+	}
+
+
 	protected CustomerBO(UserContext userContext, String displayName,
 			CustomerLevel customerLevel, CustomerStatus customerStatus,
 			String externalId, Date mfiJoiningDate, Address address,
Index: src/org/mifos/application/customer/center/business/CenterBO.java
==================================================================
--- src/org/mifos/application/customer/center/business/CenterBO.java	(revision 12249)

+++ src/org/mifos/application/customer/center/business/CenterBO.java	(patch commit-11012008a level 1)

@@ -10,6 +10,7 @@

 import org.mifos.application.configuration.exceptions.ConfigurationException;
 import org.mifos.application.configuration.util.helpers.ConfigurationConstants;
 import org.mifos.application.customer.business.CustomerBO;
+import org.mifos.application.customer.business.CustomerLevelEntity;
 import org.mifos.application.customer.business.CustomerPerformanceHistory;
 import org.mifos.application.customer.business.CustomerPositionView;
 import org.mifos.application.customer.center.persistence.CenterPersistence;
@@ -23,6 +24,7 @@

 import org.mifos.application.fees.business.FeeView;
 import org.mifos.application.master.business.CustomFieldView;
 import org.mifos.application.meeting.business.MeetingBO;
+import org.mifos.application.personnel.business.PersonnelBO;
 import org.mifos.framework.business.util.Address;
 import org.mifos.framework.components.logger.LoggerConstants;
 import org.mifos.framework.components.logger.MifosLogManager;
@@ -33,7 +35,6 @@

 public class CenterBO extends CustomerBO {
 
 	private MifosLogger logger = MifosLogManager.getLogger(LoggerConstants.CENTERLOGGER);
-	
 	public CenterBO(UserContext userContext, String displayName,
 			Address address, List<CustomFieldView> customFields,
 			List<FeeView> fees, String externalId, Date mfiJoiningDate,
@@ -59,6 +60,10 @@

 		super();
 	}
 	
+	public CenterBO(Integer customerId, CustomerLevelEntity customerLevel, PersonnelBO formedByPersonnel, PersonnelBO personnel, String displayName) {
+		super(customerId, customerLevel, formedByPersonnel, personnel, displayName);
+	}
+	
 	@Override
 	public boolean isActive() {
 		return getStatus() == CustomerStatus.CENTER_ACTIVE;
Index: src/org/mifos/application/customer/group/business/GroupBO.java
==================================================================
--- src/org/mifos/application/customer/group/business/GroupBO.java	(revision 12249)

+++ src/org/mifos/application/customer/group/business/GroupBO.java	(patch commit-11012008a level 1)

@@ -47,6 +47,7 @@

 import org.mifos.application.configuration.util.helpers.ConfigurationConstants;
 import org.mifos.application.customer.business.CustomerBO;
 import org.mifos.application.customer.business.CustomerHierarchyEntity;
+import org.mifos.application.customer.business.CustomerLevelEntity;
 import org.mifos.application.customer.business.CustomerPositionView;
 import org.mifos.application.customer.business.CustomerStatusEntity;
 import org.mifos.application.customer.center.business.CenterBO;
@@ -64,10 +65,10 @@

 import org.mifos.application.meeting.business.MeetingBO;
 import org.mifos.application.office.business.OfficeBO;
 import org.mifos.application.office.persistence.OfficePersistence;
+import org.mifos.application.personnel.business.PersonnelBO;
 import org.mifos.application.util.helpers.YesNoFlag;
 import org.mifos.config.ClientRules;
 import org.mifos.framework.business.util.Address;
-import org.mifos.framework.components.configuration.business.Configuration;
 import org.mifos.framework.components.logger.LoggerConstants;
 import org.mifos.framework.components.logger.MifosLogManager;
 import org.mifos.framework.components.logger.MifosLogger;
@@ -131,6 +132,10 @@

 				officeId, parentCustomer, meeting, loanOfficerId);
 		validateFields(displayName, formedById, trained, trainedDate);
 	}
+	
+	public GroupBO(int customerId, CustomerLevelEntity customerLevel, PersonnelBO formedByPersonnel, PersonnelBO personnel, String displayName) {
+		super(customerId, customerLevel, formedByPersonnel, personnel, displayName);
+	}	
 
 	@Override
 	public boolean isActive() {
Index: src/org/mifos/application/office/business/OfficeBO.java
==================================================================
--- src/org/mifos/application/office/business/OfficeBO.java	(revision 12249)

+++ src/org/mifos/application/office/business/OfficeBO.java	(patch commit-11012008a level 1)

@@ -60,10 +60,7 @@

 	private Set<OfficeBO> children;
 
 	public OfficeBO() {
-		super();
-		maxChildCount = null;
-		officeId = null;
-		operationMode = null;
+		this(null, null, null, null);
 		status = new OfficeStatusEntity(OfficeStatus.ACTIVE);
 		address = new OfficeAddressEntity();
 	}
@@ -145,6 +142,14 @@

 		verifyFields(officeName, shortName, level, operationMode, parentOffice);
 	}
 
+	public OfficeBO(Short officeId, String officeName, Integer maxChildCount, Short operationMode) {
+		super();
+		this.officeId = officeId;
+		this.officeName = officeName;
+		this.maxChildCount = maxChildCount;
+		this.operationMode = operationMode;
+	}
+
 	@Override
 	public void setCreatedDate(Date createdDate) {
 		this.createdDate = createdDate;
Index: src/org/mifos/application/personnel/business/PersonnelBO.java
==================================================================
--- src/org/mifos/application/personnel/business/PersonnelBO.java	(revision 12249)

+++ src/org/mifos/application/personnel/business/PersonnelBO.java	(patch commit-11012008a level 1)

@@ -1,5 +1,7 @@

 package org.mifos.application.personnel.business;
 
+import static org.mifos.application.reports.util.helpers.ReportsConstants.*;
+
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.HashSet;
@@ -20,6 +22,7 @@

 import org.mifos.application.personnel.util.helpers.PersonnelConstants;
 import org.mifos.application.personnel.util.helpers.PersonnelLevel;
 import org.mifos.application.personnel.util.helpers.PersonnelStatus;
+import org.mifos.application.reports.util.helpers.ReportsConstants;
 import org.mifos.application.rolesandpermission.business.RoleBO;
 import org.mifos.config.Localization;
 import org.mifos.framework.business.BusinessObject;
@@ -85,7 +88,7 @@

 	private Set<PersonnelNotesEntity> personnelNotes;
 
 	private MifosLogger logger = MifosLogManager.getLogger(LoggerConstants.PERSONNEL_LOGGER);
-	
+
 	public static PersonnelBO ALL_PERSONNEL = new PersonnelBO();
 	static {
 		ALL_PERSONNEL.setDisplayName("ALL");
@@ -139,15 +142,20 @@

 	}
 
 	PersonnelBO() {
-		this.level = null;
+		this(null, null, null, null);
 		this.personnelDetails = new PersonnelDetailsEntity();
 		this.preferredLocale = new SupportedLocalesEntity();
 		this.customFields = new HashSet<PersonnelCustomFieldEntity>();
 		this.personnelNotes = new HashSet<PersonnelNotesEntity>();
-		this.personnelId = null;
-		this.userName = null;
 	}
 
+	public PersonnelBO(Short personnelId, String userName, String displayName, PersonnelLevelEntity level) {
+		this.personnelId = personnelId;
+		this.userName = userName;
+		this.displayName = displayName;
+		this.level = level;
+	}
+
 	public String getAge() {
 		if (this.personnelDetails != null
 				&& this.personnelDetails.getDob() != null
Index: src/org/mifos/application/personnel/business/PersonnelLevelEntity.java
==================================================================
--- src/org/mifos/application/personnel/business/PersonnelLevelEntity.java	(revision 12249)

+++ src/org/mifos/application/personnel/business/PersonnelLevelEntity.java	(patch commit-11012008a level 1)

@@ -12,6 +12,9 @@

 
 	private final PersonnelLevelEntity parent;
 
+	public static final PersonnelLevelEntity NON_LOAN_OFFICER_LEVEL_ENTITY = new PersonnelLevelEntity(
+			PersonnelLevel.NON_LOAN_OFFICER);
+
 	public PersonnelLevelEntity(PersonnelLevel level) {
 		super(level.getValue());
 		this.parent = null;
@@ -31,8 +34,8 @@

 		return parent;
 	}
 
-    @Override
+	@Override
 	public String toString() {
-        return PersonnelLevel.fromInt(getId()).toString();
-    }
+		return PersonnelLevel.fromInt(getId()).toString();
+	}
 }
Index: src/org/mifos/application/productdefinition/business/LoanOfferingBO.java
==================================================================
--- src/org/mifos/application/productdefinition/business/LoanOfferingBO.java	(revision 12249)

+++ src/org/mifos/application/productdefinition/business/LoanOfferingBO.java	(patch commit-11012008a level 1)

@@ -55,6 +55,7 @@

 import org.mifos.application.meeting.exceptions.MeetingException;
 import org.mifos.application.meeting.util.helpers.MeetingType;
 import org.mifos.application.meeting.util.helpers.RecurrenceType;
+import org.mifos.application.office.business.OfficeBO;
 import org.mifos.application.productdefinition.exceptions.ProductDefinitionException;
 import org.mifos.application.productdefinition.persistence.LoanPrdPersistence;
 import org.mifos.application.productdefinition.struts.actionforms.LoanPrdActionForm;
@@ -358,18 +359,40 @@

 	}
 
 	protected LoanOfferingBO() {
-		principalGLcode = null;
-		interestGLcode = null;
-		loanOfferingFunds = new HashSet<LoanOfferingFundEntity>();
-		loanOfferingFees = new HashSet<LoanOfferingFeesEntity>();
-		loanAmountFromLastLoan = new HashSet<LoanAmountFromLastLoanAmountBO>();
-		loanAmountFromLoanCycle = new HashSet<LoanAmountFromLoanCycleBO>();
-		noOfInstallFromLastLoan = new HashSet<NoOfInstallFromLastLoanAmountBO>();
-		noOfInstallFromLoanCycle = new HashSet<NoOfInstallFromLoanCycleBO>();
-		loanAmountSameForAllLoan = new HashSet<LoanAmountSameForAllLoanBO>();
-		noOfInstallSameForAllLoan = new HashSet<NoOfInstallSameForAllLoanBO>();
+		this(null, null, null, null, null, null, new HashSet<LoanOfferingFundEntity>(), 
+				new HashSet<LoanOfferingFeesEntity>(), new HashSet<LoanAmountFromLastLoanAmountBO>(), 
+				new HashSet<LoanAmountFromLoanCycleBO>(), new HashSet<NoOfInstallFromLastLoanAmountBO>(), 
+				new HashSet<NoOfInstallFromLoanCycleBO>(), new HashSet<LoanAmountSameForAllLoanBO>(), 
+				new HashSet<NoOfInstallSameForAllLoanBO>());
+	}
 
+	private LoanOfferingBO(Short prdOfferingId, String globalPrdOfferingNum, 
+			ProductTypeEntity prdType, OfficeBO office,
+			GLCodeEntity principalGLcode, 
+			GLCodeEntity interestGLcode, 
+			Set<LoanOfferingFundEntity> loanOfferingFunds, 
+			Set<LoanOfferingFeesEntity> loanOfferingFees, 
+			Set<LoanAmountFromLastLoanAmountBO> loanAmountFromLastLoan, 
+			Set<LoanAmountFromLoanCycleBO> loanAmountFromLoanCycle, Set<NoOfInstallFromLastLoanAmountBO> noOfInstallFromLastLoan, Set<NoOfInstallFromLoanCycleBO> noOfInstallFromLoanCycle, Set<LoanAmountSameForAllLoanBO> loanAmountSameForAllLoan, Set<NoOfInstallSameForAllLoanBO> noOfInstallSameForAllLoan) {
+		super(prdOfferingId, globalPrdOfferingNum, prdType, office);
+		this.principalGLcode = principalGLcode;
+		this.interestGLcode = interestGLcode;
+		this.loanOfferingFunds = loanOfferingFunds;
+		this.loanOfferingFees = loanOfferingFees;
+		this.loanAmountFromLastLoan = loanAmountFromLastLoan;
+		this.loanAmountFromLoanCycle = loanAmountFromLoanCycle;
+		this.noOfInstallFromLastLoan = noOfInstallFromLastLoan;
+		this.noOfInstallFromLoanCycle = noOfInstallFromLoanCycle;
+		this.loanAmountSameForAllLoan = loanAmountSameForAllLoan;
+		this.noOfInstallSameForAllLoan = noOfInstallSameForAllLoan;
+	}
 
+	public LoanOfferingBO(Short prdOfferingId) {
+		this(prdOfferingId, null, null, null, null, null, new HashSet<LoanOfferingFundEntity>(), 
+				new HashSet<LoanOfferingFeesEntity>(), new HashSet<LoanAmountFromLastLoanAmountBO>(), 
+				new HashSet<LoanAmountFromLoanCycleBO>(), new HashSet<NoOfInstallFromLastLoanAmountBO>(), 
+				new HashSet<NoOfInstallFromLoanCycleBO>(), new HashSet<LoanAmountSameForAllLoanBO>(), 
+				new HashSet<NoOfInstallSameForAllLoanBO>());
 	}
 
 	public GracePeriodTypeEntity getGracePeriodType() {
Index: src/org/mifos/application/productdefinition/business/PrdOfferingBO.java
==================================================================
--- src/org/mifos/application/productdefinition/business/PrdOfferingBO.java	(revision 12249)

+++ src/org/mifos/application/productdefinition/business/PrdOfferingBO.java	(patch commit-11012008a level 1)

@@ -103,14 +103,19 @@

 			.getLogger(LoggerConstants.PRDDEFINITIONLOGGER);
 
 	protected PrdOfferingBO() {
-		prdOfferingId = null;
-		globalPrdOfferingNum = null;
-		prdType = null;
-		office = null;
+		this(null, null, null, null);
 		prdApplicableMaster = null;
 		collectionProductMix=null;
 		prdOfferingNotAllowedId=null;
 	}
+	
+	protected PrdOfferingBO(Short prdOfferingId, String globalPrdOfferingNum, ProductTypeEntity prdType,
+			OfficeBO office){
+		this.prdOfferingId = prdOfferingId;
+		this.globalPrdOfferingNum = globalPrdOfferingNum;
+		this.prdType = prdType;
+		this.office = office;		
+	}
 
 	protected PrdOfferingBO(UserContext userContext, String prdOfferingName,
 			String prdOfferingShortName, ProductCategoryBO prdCategory,
@@ -154,6 +159,10 @@

 		prdLogger.debug("creating product offering done");
 	}
 
+	public PrdOfferingBO(Short prdOfferingId) {
+		this(prdOfferingId, null, null, null);		
+	}
+
 	public Short getPrdOfferingId() {
 		return prdOfferingId;
 	}
@@ -458,4 +467,30 @@

 		this.setPrdMixFlag(YesNoFlag.YES.getValue());
 		new PrdOfferingPersistence().createOrUpdate(this);
 	}
+
+	@Override
+	public int hashCode() {
+		final int PRIME = 31;
+		int result = 1;
+		result = PRIME * result + ((prdOfferingId == null) ? 0 : prdOfferingId.hashCode());
+		return result;
+	}
+
+	@Override
+	public boolean equals(Object obj) {
+		if (this == obj)
+			return true;
+		if (obj == null)
+			return false;
+		if (getClass() != obj.getClass())
+			return false;
+		final PrdOfferingBO other = (PrdOfferingBO) obj;
+		if (prdOfferingId == null) {
+			if (other.prdOfferingId != null)
+				return false;
+		}
+		else if (!prdOfferingId.equals(other.prdOfferingId))
+			return false;
+		return true;
+	}
 }
Index: src/org/mifos/application/productdefinition/business/SavingsOfferingBO.java
==================================================================
--- src/org/mifos/application/productdefinition/business/SavingsOfferingBO.java	(revision 12249)

+++ src/org/mifos/application/productdefinition/business/SavingsOfferingBO.java	(patch commit-11012008a level 1)

@@ -83,6 +83,10 @@

 	private MifosLogger prdLogger = MifosLogManager
 			.getLogger(LoggerConstants.PRDDEFINITIONLOGGER);
 
+	public SavingsOfferingBO(){
+		this(null, null, null, new HashSet<PrdOfferingMeetingEntity>());
+	}
+	
 	public SavingsOfferingBO(UserContext userContext, String prdOfferingName,
 			String prdOfferingShortName, ProductCategoryBO prdCategory,
 			PrdApplicableMasterEntity prdApplicableMaster, Date startDate,
@@ -137,11 +141,17 @@

 				+ getGlobalPrdOfferingNum());
 	}
 
-	protected SavingsOfferingBO() {
-		depositGLCode = null;
-		interestGLCode = null;
-		savingsOfferingMeetings = new HashSet<PrdOfferingMeetingEntity>();
+	protected SavingsOfferingBO(Short prdOfferingId, GLCodeEntity depositGLCode, 
+			GLCodeEntity interestGLCode, HashSet<PrdOfferingMeetingEntity> savingsOfferingMeetings) {
+		super(prdOfferingId);
+		this.depositGLCode = depositGLCode;
+		this.interestGLCode = interestGLCode;
+		this.savingsOfferingMeetings = savingsOfferingMeetings;
 	}
+	
+	public SavingsOfferingBO(Short prdOfferingId){
+		this(prdOfferingId, null, null, new HashSet<PrdOfferingMeetingEntity>());
+	}
 
 	private Set<PrdOfferingMeetingEntity> getSavingsOfferingMeetings() {
 		return savingsOfferingMeetings;
Index: src/org/mifos/application/productdefinition/persistence/LoanPrdPersistence.java
==================================================================
--- src/org/mifos/application/productdefinition/persistence/LoanPrdPersistence.java	(revision 12249)

+++ src/org/mifos/application/productdefinition/persistence/LoanPrdPersistence.java	(patch commit-11012008a level 1)

@@ -52,6 +52,7 @@

 import org.mifos.framework.exceptions.PersistenceException;
 import org.mifos.framework.persistence.Persistence;
 
+
 public class LoanPrdPersistence extends Persistence {
 	
 	private static ThreadLocal<Map> reportsCacheTL = new ThreadLocal<Map>();
Index: src/org/mifos/application/reports/business/service/ReportsDataService.java
==================================================================
--- src/org/mifos/application/reports/business/service/ReportsDataService.java	(revision 12249)

+++ src/org/mifos/application/reports/business/service/ReportsDataService.java	(patch commit-11012008a level 1)

@@ -14,6 +14,7 @@

 import org.mifos.application.productdefinition.business.service.LoanPrdBusinessService;

 import org.mifos.framework.exceptions.PersistenceException;

 import org.mifos.framework.exceptions.ServiceException;

+import org.mifos.framework.util.helpers.NumberUtils;

 

 public class ReportsDataService {

 

@@ -36,7 +37,7 @@

 

 	public void initialize(Integer userId) throws ServiceException {

 		this.personnel = personnelBusinessService

-				.getPersonnel(convertIntegerToShort(userId));

+				.getPersonnel(NumberUtils.convertIntegerToShort(userId));

 	}

 

 	public List<OfficeBO> getActiveBranchesUnderUser() throws ServiceException {

@@ -51,7 +52,7 @@

 		}

 		else {

 			loanOfficers = personnelBusinessService

-					.getActiveLoanOfficersUnderOffice(convertIntegerToShort(branchId));

+					.getActiveLoanOfficersUnderOffice(NumberUtils.convertIntegerToShort(branchId));

 			loanOfficers.add(PersonnelBO.ALL_PERSONNEL);

 		}

 		return loanOfficers;

@@ -69,18 +70,18 @@

 			Integer loanOfficerId, Integer loanProductId)

 			throws PersistenceException {

 		return loanPersistence.getLoanAccountsInActiveBadStanding(

-				convertIntegerToShort(branchId),

-				convertIntegerToShort(loanOfficerId),

-				convertIntegerToShort(loanProductId));

+				NumberUtils.convertIntegerToShort(branchId),

+				NumberUtils.convertIntegerToShort(loanOfficerId),

+				NumberUtils.convertIntegerToShort(loanProductId));

 	}

 

 	public List<LoanBO> getActiveLoansBothInGoodAndBadStandingByLoanOfficer(

 			Integer branchId, Integer loanOfficerId, Integer loanProductId)

 			throws PersistenceException {

 		return loanPersistence.getActiveLoansBothInGoodAndBadStandingByLoanOfficer(

-						convertIntegerToShort(branchId),

-						convertIntegerToShort(loanOfficerId),

-						convertIntegerToShort(loanProductId));

+						NumberUtils.convertIntegerToShort(branchId),

+						NumberUtils.convertIntegerToShort(loanOfficerId),

+						NumberUtils.convertIntegerToShort(loanProductId));

 	}

 

 	public BigDecimal getTotalOutstandingPrincipalOfLoanAccountsInActiveGoodStanding(

@@ -88,9 +89,9 @@

 			throws PersistenceException {

 		return loanPersistence

 				.getTotalOutstandingPrincipalOfLoanAccountsInActiveGoodStanding(

-						convertIntegerToShort(branchId),

-						convertIntegerToShort(loanOfficerId),

-						convertIntegerToShort(loanProductId));

+						NumberUtils.convertIntegerToShort(branchId),

+						NumberUtils.convertIntegerToShort(loanOfficerId),

+						NumberUtils.convertIntegerToShort(loanProductId));

 	}

 

 

@@ -119,12 +120,5 @@

 		return personnel;

 	}

 

-	private Short convertIntegerToShort(Integer intValue) {

-		if (intValue == null) {

-			return null;

-		}

-		return intValue.shortValue();

-	}

 

-

 }

Index: src/org/mifos/application/reports/business/service/CollectionSheetReportService.java
==================================================================
--- src/org/mifos/application/reports/business/service/CollectionSheetReportService.java	(revision 12249)

+++ src/org/mifos/application/reports/business/service/CollectionSheetReportService.java	(patch commit-11012008a level 1)

@@ -0,0 +1,514 @@

+package org.mifos.application.reports.business.service;

+

+import static org.mifos.application.reports.ui.DateSelectionItem.NA_MEETING_DATE;

+import static org.mifos.application.reports.ui.SelectionItem.ALL_CENTER_SELECTION_ITEM;

+import static org.mifos.application.reports.ui.SelectionItem.ALL_GROUP_SELECTION_ITEM;

+import static org.mifos.application.reports.ui.SelectionItem.ALL_LOAN_OFFICER_SELECTION_ITEM;

+import static org.mifos.application.reports.ui.SelectionItem.NA_BRANCH_OFFICE_SELECTION_ITEM;

+import static org.mifos.application.reports.ui.SelectionItem.NA_CENTER_SELECTION_ITEM;

+import static org.mifos.application.reports.ui.SelectionItem.NA_GROUP_SELECTION_ITEM;

+import static org.mifos.application.reports.ui.SelectionItem.NA_LOAN_OFFICER_SELECTION_ITEM;

+import static org.mifos.application.reports.ui.SelectionItem.SELECT_BRANCH_OFFICE_SELECTION_ITEM;

+import static org.mifos.application.reports.ui.SelectionItem.SELECT_CENTER_SELECTION_ITEM;

+import static org.mifos.application.reports.ui.SelectionItem.SELECT_GROUP_SELECTION_ITEM;

+import static org.mifos.application.reports.ui.SelectionItem.SELECT_LOAN_OFFICER_SELECTION_ITEM;

+import static org.mifos.framework.util.helpers.NumberUtils.convertIntegerToShort;

+import static org.mifos.framework.util.helpers.NumberUtils.convertShortToInteger;

+

+import java.util.ArrayList;

+import java.util.Calendar;

+import java.util.Date;

+import java.util.List;

+

+import org.mifos.application.accounts.business.service.AccountBusinessService;

+import org.mifos.application.accounts.loan.business.LoanBO;

+import org.mifos.application.accounts.savings.business.SavingsBO;

+import org.mifos.application.collectionsheet.business.CollSheetCustBO;

+import org.mifos.application.collectionsheet.business.CollSheetLnDetailsEntity;

+import org.mifos.application.collectionsheet.business.CollSheetSavingsDetailsEntity;

+import org.mifos.application.customer.business.CustomerBO;

+import org.mifos.application.customer.business.service.CustomerBusinessService;

+import org.mifos.application.customer.util.helpers.CustomerLevel;

+import org.mifos.application.office.business.OfficeBO;

+import org.mifos.application.office.business.service.OfficeBusinessService;

+import org.mifos.application.personnel.business.PersonnelBO;

+import org.mifos.application.personnel.business.service.PersonnelBusinessService;

+import org.mifos.application.productdefinition.business.LoanOfferingBO;

+import org.mifos.application.productdefinition.business.SavingsOfferingBO;

+import org.mifos.application.productdefinition.business.service.LoanPrdBusinessService;

+import org.mifos.application.productdefinition.business.service.SavingsPrdBusinessService;

+import org.mifos.application.reports.business.dto.CollectionSheetReportDTO;

+import org.mifos.application.reports.ui.DateSelectionItem;

+import org.mifos.application.reports.ui.SelectionItem;

+import org.mifos.framework.exceptions.PersistenceException;

+import org.mifos.framework.exceptions.ServiceException;

+import org.mifos.framework.util.CollectionUtils;

+import org.mifos.framework.util.helpers.DateUtils;

+import org.mifos.framework.util.helpers.NumberUtils;

+import org.mifos.framework.util.helpers.Predicate;

+

+// public interface for services used by collection sheet report

+public class CollectionSheetReportService implements

+		ICollectionSheetReportService {

+	private final OfficeBusinessService officeBusinessService;

+	private final PersonnelBusinessService personnelBusinessService;

+	private final CustomerBusinessService customerBusinessService;

+	private final CollectionSheetService collectionSheetService;

+	private final LoanPrdBusinessService loanProductBusinessService;

+	private final AccountBusinessService accountBusinessService;

+	private final SavingsPrdBusinessService savingsProductBusinessService;

+	private final ReportProductOfferingService reportProductOfferingService;

+	private final IReportsParameterService reportsParameterService;

+

+	CollectionSheetReportService(CollectionSheetService collectionSheetService,

+			OfficeBusinessService officeBusinessService,

+			PersonnelBusinessService personnelBusinessService,

+			CustomerBusinessService customerBusinessService,

+			AccountBusinessService accountBusinessService,

+			LoanPrdBusinessService loanProductBusinessService,

+			SavingsPrdBusinessService savingsProductBusinessService,

+			ReportProductOfferingService reportProductOfferingService,

+			IReportsParameterService reportsParameterService) {

+		super();

+		this.collectionSheetService = collectionSheetService;

+		this.officeBusinessService = officeBusinessService;

+		this.personnelBusinessService = personnelBusinessService;

+		this.customerBusinessService = customerBusinessService;

+		this.accountBusinessService = accountBusinessService;

+		this.loanProductBusinessService = loanProductBusinessService;

+		this.savingsProductBusinessService = savingsProductBusinessService;

+		this.reportProductOfferingService = reportProductOfferingService;

+		this.reportsParameterService = reportsParameterService;

+	}

+

+	CollectionSheetReportService() {

+		this(new CollectionSheetService(), new OfficeBusinessService(),

+				new PersonnelBusinessService(), new CustomerBusinessService(),

+				new AccountBusinessService(), new LoanPrdBusinessService(),

+				new SavingsPrdBusinessService(),

+				new ReportProductOfferingService(),

+				new ReportsParameterService());

+	}

+

+	public List<SelectionItem> getBranchOffices(Integer userId)

+			throws ServiceException, PersistenceException {

+		ArrayList<SelectionItem> branchOffices = new ArrayList<SelectionItem>();

+		PersonnelBO personnel = personnelBusinessService

+				.getPersonnel(convertIntegerToShort(userId));

+		List<SelectionItem> offices = new ArrayList<SelectionItem>();

+		if (personnel != null)

+			offices = reportsParameterService

+					.getActiveBranchesUnderUser(personnel.getOfficeSearchId());

+

+		if (offices.isEmpty()) {

+			branchOffices.add(NA_BRANCH_OFFICE_SELECTION_ITEM);

+		}

+		else {

+			branchOffices.add(SELECT_BRANCH_OFFICE_SELECTION_ITEM);

+			branchOffices.addAll(offices);

+		}

+		return branchOffices;

+	}

+

+	public List<SelectionItem> getActiveLoanOfficers(Integer userId,

+			Integer branchIdIntValue) throws ServiceException,

+			PersistenceException {

+		List<SelectionItem> officers = new ArrayList<SelectionItem>();

+		Short branchId = convertIntegerToShort(branchIdIntValue);

+

+		if (isBranchNA(branchId)) {

+			officers.add(NA_LOAN_OFFICER_SELECTION_ITEM);

+			return officers;

+		}

+		if (isSelectBranch(branchId)) {

+			officers.add(SELECT_LOAN_OFFICER_SELECTION_ITEM);

+			return officers;

+		}

+

+		PersonnelBO personnel = personnelBusinessService

+				.getPersonnel(convertIntegerToShort(userId));

+		if (personnel == null) {

+			officers.add(NA_LOAN_OFFICER_SELECTION_ITEM);

+			return officers;

+		}

+

+		if (personnel.isLoanOfficer()) {

+			officers.add(SELECT_LOAN_OFFICER_SELECTION_ITEM);

+			officers.add(new SelectionItem(personnel.getPersonnelId(),

+					personnel.getDisplayName()));

+			return officers;

+		}

+

+		List<SelectionItem> loanOfficers = reportsParameterService

+				.getActiveLoanOfficersUnderOffice(branchId);

+		officers.add(loanOfficers.isEmpty() ? NA_LOAN_OFFICER_SELECTION_ITEM

+				: ALL_LOAN_OFFICER_SELECTION_ITEM);

+		officers.addAll(loanOfficers);

+		return officers;

+	}

+

+	public List<SelectionItem> getActiveCentersForLoanOfficer(

+			Integer loanOfficerIdIntValue, Integer branchIdIntValue)

+			throws ServiceException, PersistenceException {

+		List<SelectionItem> activeCenters = new ArrayList<SelectionItem>();

+		Short loanOfficerId = convertIntegerToShort(loanOfficerIdIntValue);

+		if (loanOfficerId == null

+				|| SELECT_LOAN_OFFICER_SELECTION_ITEM.sameAs(loanOfficerId)) {

+			activeCenters.add(SELECT_CENTER_SELECTION_ITEM);

+			return activeCenters;

+		}

+		if (NA_LOAN_OFFICER_SELECTION_ITEM.sameAs(loanOfficerId)) {

+			activeCenters.add(NA_CENTER_SELECTION_ITEM);

+			return activeCenters;

+		}

+		List<SelectionItem> loanOfficers = null;

+		if (isLoanOfficerAll(loanOfficerId)) {

+			loanOfficers = reportsParameterService

+					.getActiveLoanOfficersUnderOffice(convertIntegerToShort(branchIdIntValue));

+		}

+		else {

+			PersonnelBO loanOfficer = personnelBusinessService

+					.getPersonnel(loanOfficerId);

+			loanOfficers = CollectionUtils.asList(new SelectionItem(loanOfficer

+					.getPersonnelId(), loanOfficer.getDisplayName()));

+		}

+		List<SelectionItem> allCentersUnderBranch = new ArrayList<SelectionItem>();

+		for (SelectionItem loanOfficer : loanOfficers) {

+			List<SelectionItem> activeCentersUnderUser = reportsParameterService

+								.getActiveCentersUnderUser(

+										convertIntegerToShort(branchIdIntValue),

+										loanOfficer.getId());

+			allCentersUnderBranch.addAll(activeCentersUnderUser);

+		}

+		activeCenters

+				.add(allCentersUnderBranch.isEmpty() ? NA_CENTER_SELECTION_ITEM

+						: ALL_CENTER_SELECTION_ITEM);

+		activeCenters.addAll(allCentersUnderBranch);

+		return activeCenters;

+	}

+

+	public List<SelectionItem> getActiveGroupsForLoanOfficer(

+			Integer loanOfficerId, Integer branchId) throws ServiceException,

+			PersistenceException {

+		List<SelectionItem> activeGroups = new ArrayList<SelectionItem>();

+		Short loanOfficerIdShort = NumberUtils

+				.convertIntegerToShort(loanOfficerId);

+

+		if (addCustomerIfSelectOrNALoanOfficer(activeGroups,

+				loanOfficerIdShort, CustomerLevel.GROUP))

+			return activeGroups;

+		List<SelectionItem> allGroupsUnderBranch = new ArrayList<SelectionItem>();

+		List<SelectionItem> activeLoanOfficers = new ArrayList<SelectionItem>();

+		Short branchIdShort = NumberUtils.convertIntegerToShort(branchId);

+		if (isLoanOfficerAll(loanOfficerIdShort)) {

+			activeLoanOfficers = reportsParameterService

+					.getActiveLoanOfficersUnderOffice(branchIdShort);

+		}

+		else {

+			PersonnelBO loanOfficer = personnelBusinessService

+					.getPersonnel(loanOfficerIdShort);

+			activeLoanOfficers = CollectionUtils

+					.asList(new SelectionItem(loanOfficer.getPersonnelId(),

+							loanOfficer.getDisplayName()));

+		}

+		for (SelectionItem loanOfficer : activeLoanOfficers) {

+			allGroupsUnderBranch.addAll(reportsParameterService

+					.getActiveGroupsUnderUser(branchIdShort, loanOfficer

+							.getId()));

+		}

+		activeGroups

+				.add(allGroupsUnderBranch.isEmpty() ? NA_GROUP_SELECTION_ITEM

+						: ALL_GROUP_SELECTION_ITEM);

+		activeGroups.addAll(allGroupsUnderBranch);

+		return activeGroups;

+	}

+

+	private List<DateSelectionItem> getMeetingDates(Integer branchIdIntValue,

+			Integer officerIdIntValue, Integer customerId,

+			CustomerLevel customerLevel) throws PersistenceException,

+			ServiceException {

+		List<DateSelectionItem> meetingDates = new ArrayList<DateSelectionItem>();

+		if (branchIdIntValue == null

+				|| SELECT_BRANCH_OFFICE_SELECTION_ITEM.sameAs(branchIdIntValue)

+				|| NA_BRANCH_OFFICE_SELECTION_ITEM.sameAs(branchIdIntValue)

+				|| SELECT_LOAN_OFFICER_SELECTION_ITEM.sameAs(officerIdIntValue)

+				|| NA_LOAN_OFFICER_SELECTION_ITEM.sameAs(officerIdIntValue)

+				|| SELECT_CENTER_SELECTION_ITEM.sameAs(customerId)

+				|| NA_CENTER_SELECTION_ITEM.sameAs(customerId)

+				|| SELECT_GROUP_SELECTION_ITEM.sameAs(customerId)

+				|| NA_GROUP_SELECTION_ITEM.sameAs(customerId)) {

+			meetingDates.add(NA_MEETING_DATE);

+			return meetingDates;

+		}

+

+		Short branchId = convertIntegerToShort(branchIdIntValue);

+		Short officerId = convertIntegerToShort(officerIdIntValue);

+		if (ALL_CENTER_SELECTION_ITEM.sameAs(customerId)

+				|| ALL_GROUP_SELECTION_ITEM.sameAs(customerId)) {

+			List<SelectionItem> officers = new ArrayList<SelectionItem>();

+			if (ALL_LOAN_OFFICER_SELECTION_ITEM.sameAs(officerIdIntValue)) {

+				officers = reportsParameterService

+						.getActiveLoanOfficersUnderOffice(branchId);

+			}

+			else {

+				officers = CollectionUtils.asList(new SelectionItem(

+						convertIntegerToShort(officerIdIntValue), null));

+			}

+			for (SelectionItem officer : officers) {

+				List<SelectionItem> customers = new ArrayList<SelectionItem>();

+				if (CustomerLevel.GROUP.equals(customerLevel))

+					customers = reportsParameterService

+							.getActiveGroupsUnderUser(branchId, officer.getId());

+				else customers = reportsParameterService

+						.getActiveCentersUnderUser(branchId, officer.getId());

+				for (SelectionItem customer : customers) {

+					List<DateSelectionItem> meetingDatesForCustomer = reportsParameterService

+							.getMeetingDates(branchId, officer.getId(),

+									convertShortToInteger(customer.getId()),

+									customerLevel, today());

+					if (meetingDatesForCustomer != null)

+						meetingDates.addAll(meetingDatesForCustomer);

+				}

+			}

+		}

+		else {

+			if (isLoanOfficerAll(officerId)) {

+				CustomerBO customer = customerBusinessService

+						.getCustomer(customerId);

+				officerId = customer.getPersonnel().getPersonnelId();

+			}

+			List<DateSelectionItem> meetingDatesForOfficerBranchCustomer = reportsParameterService

+					.getMeetingDates(branchId, officerId, customerId,

+							customerLevel, today());

+			if (meetingDatesForOfficerBranchCustomer != null)

+				meetingDates.addAll(meetingDatesForOfficerBranchCustomer);

+		}

+		if (meetingDates.isEmpty())

+			meetingDates.add(NA_MEETING_DATE);

+		return meetingDates;

+	}

+

+	public List<DateSelectionItem> getMeetingDatesForGroup(Integer branchId,

+			Integer groupId, Integer officerId) throws PersistenceException,

+			ServiceException {

+		return getMeetingDates(branchId, officerId, groupId,

+				CustomerLevel.GROUP);

+	}

+

+	public List<DateSelectionItem> getMeetingDatesForCenter(Integer branchId,

+			Integer groupId, Integer officerId) throws PersistenceException,

+			ServiceException {

+		return getMeetingDates(branchId, officerId, groupId,

+				CustomerLevel.CENTER);

+	}

+

+	private List<CollectionSheetReportDTO> getCollectionSheets(

+			Integer branchId, Integer officerId, Integer customerId,

+			Date meetingDate, CustomerLevel customerLevel) throws Exception {

+		OfficeBO office = officeBusinessService.getOffice(NumberUtils

+				.convertIntegerToShort(branchId));

+		List<CustomerBO> applicableCustomers = getApplicableCustomers(branchId,

+				officerId, customerId, customerLevel);

+		java.sql.Date sqlMeetingDate = DateUtils.convertToSqlDate(meetingDate);

+		List<CollectionSheetReportDTO> collectionSheetReport = new ArrayList<CollectionSheetReportDTO>();

+		for (CustomerBO customer : applicableCustomers) {

+			if (CustomerLevel.CENTER.equals(customerLevel))

+				collectionSheetReport.addAll(collectCenterLevelData(office,

+						customer, sqlMeetingDate));

+			else if (CustomerLevel.GROUP.equals(customerLevel)) {

+				List<CollSheetCustBO> groupCollectionSheets = collectionSheetService

+						.getCollectionSheetForCustomerOnMeetingDate(

+								sqlMeetingDate, customer.getCustomerId(),

+								NumberUtils.convertIntegerToShort(officerId),

+								customerLevel);

+				collectionSheetReport.addAll(collectGroupLevelData(office,

+						customer, sqlMeetingDate, groupCollectionSheets));

+			}

+		}

+		return collectionSheetReport;

+	}

+

+	public List<CollectionSheetReportDTO> getCollectionSheets(Integer branchId,

+			Integer officerId, Integer customerId, Date meetingDate,

+			Integer customerLevel) throws Exception {

+		return getCollectionSheets(branchId, officerId, customerId,

+				meetingDate, CustomerLevel.getLevel(NumberUtils

+						.convertIntegerToShort(customerLevel)));

+	}

+

+	private List<CustomerBO> getApplicableCustomers(Integer branchId,

+			Integer officerId, Integer customerId, CustomerLevel level)

+			throws ServiceException {

+		List<CustomerBO> activeCenters = new ArrayList<CustomerBO>();

+		if (ALL_CENTER_SELECTION_ITEM.sameAs(customerId)

+				|| ALL_GROUP_SELECTION_ITEM.sameAs(customerId)) {

+			List<PersonnelBO> activeLoanOfficers = new ArrayList<PersonnelBO>();

+			if (ALL_LOAN_OFFICER_SELECTION_ITEM.sameAs(officerId)) {

+				activeLoanOfficers

+						.addAll(personnelBusinessService

+								.getActiveLoanOfficersUnderOffice(convertIntegerToShort(branchId)));

+			}

+			else {

+				activeLoanOfficers.add(personnelBusinessService

+						.getPersonnel(convertIntegerToShort(officerId)));

+			}

+			for (PersonnelBO loanOfficer : activeLoanOfficers) {

+				if (CustomerLevel.CENTER.equals(level))

+					activeCenters.addAll(customerBusinessService

+							.getActiveCentersUnderUser(loanOfficer));

+				else if (CustomerLevel.GROUP.equals(level))

+					activeCenters.addAll(customerBusinessService

+							.getGroupsUnderUser(loanOfficer));

+			}

+			return activeCenters;

+		}

+		activeCenters.add(customerBusinessService.getCustomer(customerId));

+		return activeCenters;

+	}

+

+	CollSheetLnDetailsEntity getLoanProduct(CollSheetCustBO collectionSheet,

+			final LoanOfferingBO productOffering) throws Exception {

+		return CollectionUtils.find(collectionSheet

+				.getCollectionSheetLoanDetails(),

+				new Predicate<CollSheetLnDetailsEntity>() {

+					public boolean evaluate(CollSheetLnDetailsEntity loanDetail)

+							throws Exception {

+						return ((LoanBO) accountBusinessService

+								.getAccount(loanDetail.getAccountId()))

+								.isOfProductOffering(productOffering);

+					}

+				});

+	}

+

+	CollSheetSavingsDetailsEntity getSavingProduct(

+			CollSheetCustBO collectionSheet,

+			final SavingsOfferingBO productOffering) throws Exception {

+		return CollectionUtils.find(collectionSheet

+				.getCollSheetSavingsDetails(),

+				new Predicate<CollSheetSavingsDetailsEntity>() {

+					public boolean evaluate(

+							CollSheetSavingsDetailsEntity savingDetail)

+							throws Exception {

+						return ((SavingsBO) accountBusinessService

+								.getAccount(savingDetail.getAccountId()))

+								.isOfProductOffering(productOffering);

+					}

+				});

+	}

+

+	LoanOfferingBO getLoanOffering(Short productOfferingId)

+			throws ServiceException {

+		return loanProductBusinessService.getLoanOffering(productOfferingId);

+	}

+

+	SavingsOfferingBO getSavingsOffering(Short savingsOfferingId)

+			throws ServiceException {

+		return savingsProductBusinessService

+				.getSavingsProduct(savingsOfferingId);

+	}

+

+

+	private List<CollectionSheetReportDTO> collectCenterLevelData(

+			OfficeBO office, CustomerBO center, java.sql.Date meetingDate)

+			throws Exception {

+		List<CollectionSheetReportDTO> collectionSheets = new ArrayList<CollectionSheetReportDTO>();

+		List<CollSheetCustBO> centerCollectionSheets = collectionSheetService

+				.getCollectionSheetForCustomerOnMeetingDate(meetingDate, center

+						.getCustomerId(), center.getPersonnel()

+						.getPersonnelId(), CustomerLevel.CENTER);

+		for (CollSheetCustBO centerCollectionSheet : centerCollectionSheets) {

+			List<CollSheetCustBO> collectionSheetForGroups = collectionSheetService

+					.getCollectionSheetForGroups(meetingDate,

+							centerCollectionSheet, center.getPersonnel()

+									.getPersonnelId());

+			collectionSheets.addAll(collectGroupLevelData(office, center,

+					meetingDate, collectionSheetForGroups));

+		}

+		return collectionSheets;

+	}

+

+	private List<CollectionSheetReportDTO> collectGroupLevelData(

+			OfficeBO office, CustomerBO customer, java.sql.Date meetingDate,

+			List<CollSheetCustBO> groupCollectionSheets) throws Exception {

+		LoanOfferingBO loanOffering1 = getLoanOffering(reportProductOfferingService

+				.getLoanProduct1());

+		LoanOfferingBO loanOffering2 = getLoanOffering(reportProductOfferingService

+				.getLoanProduct2());

+		SavingsOfferingBO savingsOffering1 = getSavingsOffering(reportProductOfferingService

+				.getSavingsProduct1());

+		SavingsOfferingBO savingsOffering2 = getSavingsOffering(reportProductOfferingService

+				.getSavingsProduct2());

+		List<CollectionSheetReportDTO> collectionSheetReport = new ArrayList<CollectionSheetReportDTO>();

+		try {

+			for (CollSheetCustBO groupCollectionSheet : groupCollectionSheets) {

+				List<CollSheetCustBO> clientCollectionSheets = collectionSheetService

+						.getCollectionSheetForCustomers(meetingDate,

+								groupCollectionSheet, customer.getPersonnel()

+										.getPersonnelId());

+				for (CollSheetCustBO clientCollectionSheet : clientCollectionSheets) {

+					collectionSheetReport

+							.add(new CollectionSheetReportDTO(

+									getLoanProduct(clientCollectionSheet,

+											loanOffering1),

+									getLoanProduct(clientCollectionSheet,

+											loanOffering2),

+									getSavingProduct(clientCollectionSheet,

+											savingsOffering1),

+									getSavingProduct(clientCollectionSheet,

+											savingsOffering2),

+									clientCollectionSheet.getCustId(),

+									clientCollectionSheet.getParentCustomerId(),

+									clientCollectionSheet.getCustDisplayName(),

+									office.getOfficeName(),

+									groupCollectionSheet.getCustDisplayName(),

+									customer, loanOffering1

+											.getPrdOfferingShortName(),

+									loanOffering2.getPrdOfferingShortName(),

+									savingsOffering1.getPrdOfferingShortName(),

+									savingsOffering2.getPrdOfferingShortName()));

+				}

+			}

+		}

+		catch (Exception e) {

+			System.err.println(e);

+			e.printStackTrace();

+		}

+		return collectionSheetReport;

+	}

+

+	private boolean addCustomerIfSelectOrNALoanOfficer(List customers,

+			Short loanOfficerId, CustomerLevel customerLevel) {

+		if (loanOfficerId == null

+				|| SELECT_LOAN_OFFICER_SELECTION_ITEM.sameAs(loanOfficerId)) {

+			customers.add(SelectionItem.SELECT_GROUP_SELECTION_ITEM);

+			return true;

+		}

+		else if (NA_LOAN_OFFICER_SELECTION_ITEM.sameAs(loanOfficerId)) {

+			customers.add(NA_GROUP_SELECTION_ITEM);

+			return true;

+		}

+		return false;

+	}

+

+	private boolean isSelectBranch(Short branchId) {

+		return branchId == null

+				|| SELECT_BRANCH_OFFICE_SELECTION_ITEM.getId().equals(branchId);

+	}

+

+	private boolean isBranchNA(Short branchId) {

+		return NA_BRANCH_OFFICE_SELECTION_ITEM.getId().equals(branchId);

+	}

+

+	private boolean isLoanOfficerAll(Short loanOfficerIdShort) {

+		return ALL_LOAN_OFFICER_SELECTION_ITEM.sameAs(loanOfficerIdShort);

+	}

+

+	private java.sql.Date today() {

+		//		return DateUtils.sqlToday();

+		return DateUtils.getSqlDate(2007, Calendar.JUNE, 30);

+	}

+

+	public void invalidateCachedReportParameters() {

+		reportsParameterService.invalidate();

+	}

+}

Index: src/org/mifos/application/reports/business/service/CollectionSheetReportServiceFactory.java
==================================================================
--- src/org/mifos/application/reports/business/service/CollectionSheetReportServiceFactory.java	(revision 12249)

+++ src/org/mifos/application/reports/business/service/CollectionSheetReportServiceFactory.java	(patch commit-11012008a level 1)

@@ -0,0 +1,25 @@

+package org.mifos.application.reports.business.service;

+

+import org.mifos.framework.util.helpers.FilePaths;

+import org.springframework.context.support.ClassPathXmlApplicationContext;

+

+public class CollectionSheetReportServiceFactory {

+	private static final String COLLECTION_SHEET_REPORT_SERVICE_BEAN = "collectionSheetReportService";

+	private static ICollectionSheetReportService CACHE_ENABLED_INSTANCE = null;

+

+	public static ICollectionSheetReportService getCacheEnabledCollectionSheetReportService() {

+		if (CACHE_ENABLED_INSTANCE == null)

+			initCacheEnabledReportService();

+		return CACHE_ENABLED_INSTANCE;

+	}

+

+	private static void initCacheEnabledReportService() {

+		CACHE_ENABLED_INSTANCE = (ICollectionSheetReportService) new ClassPathXmlApplicationContext(

+				FilePaths.REPORT_SERVICE_BEAN_FILE)

+				.getBean(COLLECTION_SHEET_REPORT_SERVICE_BEAN);

+	}

+

+	public static ICollectionSheetReportService getCollectionSheetReportService() {

+		return new CollectionSheetReportService();

+	}

+}

Index: src/org/mifos/application/reports/business/service/CollectionSheetService.java
==================================================================
--- src/org/mifos/application/reports/business/service/CollectionSheetService.java	(revision 12249)

+++ src/org/mifos/application/reports/business/service/CollectionSheetService.java	(patch commit-11012008a level 1)

@@ -0,0 +1,70 @@

+package org.mifos.application.reports.business.service;

+

+import java.sql.Date;

+import java.util.HashMap;

+import java.util.List;

+import java.util.Map;

+

+import org.mifos.application.NamedQueryConstants;

+import org.mifos.application.collectionsheet.business.CollSheetCustBO;

+import org.mifos.application.collectionsheet.persistence.CollectionSheetPersistence;

+import org.mifos.application.customer.util.helpers.CustomerLevel;

+import org.mifos.framework.exceptions.PersistenceException;

+

+public class CollectionSheetService {

+	public List<CollSheetCustBO> getCollectionSheetForCustomerOnMeetingDate(

+			Date meetingDate, Integer centerId, Short loanOfficerId,

+			CustomerLevel customerLevel) throws PersistenceException {

+		Map parameters = populateQueryParams(meetingDate, centerId,

+				customerLevel);

+		parameters.put("LOAN_OFFICER_ID", loanOfficerId);

+		return retrieveCollectionSheetCustomers(

+				NamedQueryConstants.COLLECTION_SHEET_CUSTOMERS_ON_MEETING_DATE_FOR_LOAN_OFFICER,

+				parameters);

+	}

+

+	public List<CollSheetCustBO> getCollectionSheetForCustomers(

+			Date meetingDate, CollSheetCustBO parent, Short loanOfficerId)

+			throws PersistenceException {

+		return retrieveCollectionSheetOfChildrensOnMeetingDate(meetingDate,

+				parent, CustomerLevel.CLIENT, loanOfficerId);

+	}

+

+	public List<CollSheetCustBO> getCollectionSheetForGroups(Date meetingDate,

+			CollSheetCustBO parent, Short loanOfficerId)

+			throws PersistenceException {

+		return retrieveCollectionSheetOfChildrensOnMeetingDate(meetingDate,

+				parent, CustomerLevel.GROUP, loanOfficerId);

+	}

+

+	private List<CollSheetCustBO> retrieveCollectionSheetOfChildrensOnMeetingDate(

+			Date meetingDate, CollSheetCustBO parent,

+			CustomerLevel childrenLevel, Short loanOfficerId)

+			throws PersistenceException {

+		Map parameters = new HashMap();

+		parameters.put("CUSTOMER_LEVEL", childrenLevel.getValue());

+		parameters.put("MEETING_DATE", meetingDate);

+		parameters.put("PARENT_CUSTOMER_ID", parent.getCustId());

+		parameters.put("LOAN_OFFICER_ID", loanOfficerId);

+		List<CollSheetCustBO> collectionSheetOfChildrens = retrieveCollectionSheetCustomers(

+				NamedQueryConstants.COLLECTION_SHEETS_OF_CHILDREN_ON_MEETING_DATE,

+				parameters);

+		return collectionSheetOfChildrens;

+	}

+

+	private Map populateQueryParams(Date meetingDate, Integer centerId,

+			CustomerLevel customerLevel) {

+		Map parameters = new HashMap();

+		parameters.put("CUSTOMER_LEVEL", customerLevel.getValue());

+		parameters.put("MEETING_DATE", meetingDate);

+		parameters.put("CUSTOMER_ID", centerId);

+		return parameters;

+	}

+

+	private List<CollSheetCustBO> retrieveCollectionSheetCustomers(

+			String queryName, Map parameters) throws PersistenceException {

+		List<CollSheetCustBO> centersCollectionSheet = new CollectionSheetPersistence()

+				.executeNamedQuery(queryName, parameters);

+		return centersCollectionSheet;

+	}

+}

Index: src/org/mifos/application/reports/business/service/ICollectionSheetReportService.java
==================================================================
--- src/org/mifos/application/reports/business/service/ICollectionSheetReportService.java	(revision 12249)

+++ src/org/mifos/application/reports/business/service/ICollectionSheetReportService.java	(patch commit-11012008a level 1)

@@ -0,0 +1,44 @@

+package org.mifos.application.reports.business.service;

+

+import java.util.Date;

+import java.util.List;

+

+import org.mifos.application.reports.business.dto.CollectionSheetReportDTO;

+import org.mifos.application.reports.ui.DateSelectionItem;

+import org.mifos.application.reports.ui.SelectionItem;

+import org.mifos.framework.exceptions.PersistenceException;

+import org.mifos.framework.exceptions.ServiceException;

+

+

+public interface ICollectionSheetReportService {

+

+	public List<SelectionItem> getBranchOffices(Integer userId)

+			throws ServiceException, PersistenceException;

+

+	public List<SelectionItem> getActiveLoanOfficers(Integer userId,

+			Integer branchIdIntValue) throws ServiceException,

+			PersistenceException;

+

+	public List<SelectionItem> getActiveCentersForLoanOfficer(

+			Integer loanOfficerIdIntValue, Integer branchIdIntValue)

+			throws ServiceException, PersistenceException;

+

+	public List<SelectionItem> getActiveGroupsForLoanOfficer(

+			Integer loanOfficerId, Integer branchId) throws ServiceException,

+			PersistenceException;

+

+	public List<CollectionSheetReportDTO> getCollectionSheets(

+			Integer branchId, Integer officerId, Integer centerId,

+			Date meetingDate, Integer customerLevel) throws Exception;

+

+	public List<DateSelectionItem> getMeetingDatesForGroup(Integer branchId,

+			Integer groupId, Integer officerId) throws PersistenceException,

+			ServiceException;

+

+	public List<DateSelectionItem> getMeetingDatesForCenter(Integer branchId,

+			Integer groupId, Integer officerId) throws PersistenceException,

+			ServiceException;

+

+	public void invalidateCachedReportParameters();

+

+}

Index: src/org/mifos/application/reports/business/service/IReportsParameterService.java
==================================================================
--- src/org/mifos/application/reports/business/service/IReportsParameterService.java	(revision 12249)

+++ src/org/mifos/application/reports/business/service/IReportsParameterService.java	(patch commit-11012008a level 1)

@@ -0,0 +1,31 @@

+package org.mifos.application.reports.business.service;

+

+import java.util.Date;

+import java.util.List;

+

+import org.mifos.application.customer.util.helpers.CustomerLevel;

+import org.mifos.application.reports.ui.DateSelectionItem;

+import org.mifos.application.reports.ui.SelectionItem;

+import org.mifos.framework.exceptions.PersistenceException;

+

+

+public interface IReportsParameterService {

+

+	public abstract List<SelectionItem> getActiveBranchesUnderUser(

+			String officeSearchId) throws PersistenceException;

+

+	public abstract List<SelectionItem> getActiveLoanOfficersUnderOffice(

+			Short branchId) throws PersistenceException;

+

+	public abstract List<SelectionItem> getActiveCentersUnderUser(

+			Short branchId, Short loanOfficerId) throws PersistenceException;

+

+	public abstract List<DateSelectionItem> getMeetingDates(Short branchId,

+			Short loanOfficerId, Integer centerId, CustomerLevel customerLevel, Date from)

+			throws PersistenceException;

+

+	public abstract List<SelectionItem> getActiveGroupsUnderUser(Short branchId,

+			Short loanOfficerId) throws PersistenceException;

+	

+	public boolean invalidate();

+}

Index: src/org/mifos/application/reports/business/service/ReportProductOfferingService.java
==================================================================
--- src/org/mifos/application/reports/business/service/ReportProductOfferingService.java	(revision 12249)

+++ src/org/mifos/application/reports/business/service/ReportProductOfferingService.java	(patch commit-11012008a level 1)

@@ -0,0 +1,54 @@

+package org.mifos.application.reports.business.service;

+

+import java.io.IOException;

+import java.util.Properties;

+

+import org.mifos.application.reports.exceptions.ReportServiceInitializationException;

+import org.mifos.framework.util.helpers.FilePaths;

+

+public class ReportProductOfferingService {

+

+	private static final String LOAN_PRODUCT_IDS = "loan.product.ids";

+	private static final String SAVINGS_PRODUCT_IDS = "savings.product.ids";

+	private static final String IDS_DELIMITER = "\\s*,\\s*";

+	

+	private String[] configuredSavingProducts;

+	private String[] configuredLoanProducts;

+

+	public ReportProductOfferingService() {

+		try {

+			init();

+		}

+		catch (IOException e) {

+			throw new ReportServiceInitializationException("Failed to initialize Report Product Offering Service", e);

+		}

+	}

+

+	public void init() throws IOException {

+		Properties properties = new Properties();

+		properties

+				.load(getClass()

+						.getResourceAsStream(

+								FilePaths.REPORT_PRODUCT_OFFERING_CONFIG));

+		configuredSavingProducts = properties

+				.getProperty(SAVINGS_PRODUCT_IDS).split(IDS_DELIMITER);

+		configuredLoanProducts = properties.getProperty(LOAN_PRODUCT_IDS)

+				.split(IDS_DELIMITER);

+	}

+

+	public Short getLoanProduct1() {

+		return Short.valueOf(configuredLoanProducts[0]);

+	}

+	

+	public Short getLoanProduct2() {

+		return Short.valueOf(configuredLoanProducts[1]);

+	}

+

+	public Short getSavingsProduct1() {

+		return Short.valueOf(configuredSavingProducts[0]);

+	}

+

+	public Short getSavingsProduct2() {

+		return Short.valueOf(configuredSavingProducts[1]);

+	}

+}

Index: src/org/mifos/application/reports/business/service/ReportsParameterService.java
==================================================================
--- src/org/mifos/application/reports/business/service/ReportsParameterService.java	(revision 12249)

+++ src/org/mifos/application/reports/business/service/ReportsParameterService.java	(patch commit-11012008a level 1)

@@ -0,0 +1,66 @@

+package org.mifos.application.reports.business.service;

+

+import java.util.Date;

+import java.util.List;

+

+import org.mifos.application.customer.util.helpers.CustomerLevel;

+import org.mifos.application.reports.persistence.DateSelectionItemPersistence;

+import org.mifos.application.reports.persistence.SelectionItemPersistence;

+import org.mifos.application.reports.ui.DateSelectionItem;

+import org.mifos.application.reports.ui.SelectionItem;

+import org.mifos.framework.exceptions.PersistenceException;

+

+public class ReportsParameterService implements IReportsParameterService {

+

+	private SelectionItemPersistence selectionItemPersistence;

+	private DateSelectionItemPersistence dateSelectionItemPersistence;

+

+	public ReportsParameterService(

+			SelectionItemPersistence selectionItemPersistence,

+			DateSelectionItemPersistence dateSelectionItemPersistence) {

+		super();

+		this.selectionItemPersistence = selectionItemPersistence;

+		this.dateSelectionItemPersistence = dateSelectionItemPersistence;

+	}

+

+	public ReportsParameterService() {

+		selectionItemPersistence = new SelectionItemPersistence();

+		dateSelectionItemPersistence = new DateSelectionItemPersistence();

+	}

+

+	public List<SelectionItem> getActiveBranchesUnderUser(String officeSearchId)

+			throws PersistenceException {

+		return selectionItemPersistence

+				.getActiveBranchesUnderUser(officeSearchId);

+	}

+

+	public List<SelectionItem> getActiveLoanOfficersUnderOffice(Short branchId)

+			throws PersistenceException {

+		return selectionItemPersistence

+				.getActiveLoanOfficersUnderOffice(branchId);

+	}

+

+	public List<SelectionItem> getActiveCentersUnderUser(Short branchId,

+			Short loanOfficerId) throws PersistenceException {

+		return selectionItemPersistence.getActiveCentersUnderUser(branchId,

+				loanOfficerId);

+	}

+

+	public List<DateSelectionItem> getMeetingDates(Short branchId,

+			Short loanOfficerId, Integer centerId, CustomerLevel customerLevel,

+			Date from) throws PersistenceException {

+		return dateSelectionItemPersistence.getMeetingDates(branchId,

+				loanOfficerId, centerId, customerLevel.getValue(), from);

+	}

+

+	public List<SelectionItem> getActiveGroupsUnderUser(Short branchId,

+			Short loanOfficerId) throws PersistenceException {

+		return selectionItemPersistence.getActiveGroupsUnderUser(branchId,

+				loanOfficerId);

+	}

+

+	// dummy method called to invalidate the cache

+	public boolean invalidate() {

+		return true;

+	}

+}

Index: src/org/mifos/application/reports/business/CollectionSheetReportParameters.java
==================================================================
--- src/org/mifos/application/reports/business/CollectionSheetReportParameters.java	(revision 12249)

+++ src/org/mifos/application/reports/business/CollectionSheetReportParameters.java	(patch commit-11012008a level 1)

@@ -0,0 +1,134 @@

+package org.mifos.application.reports.business;

+

+import static org.mifos.application.reports.ui.SelectionItem.NA_CENTER_SELECTION_ITEM;

+import static org.mifos.application.reports.ui.SelectionItem.NA_LOAN_OFFICER_SELECTION_ITEM;

+import static org.mifos.application.reports.ui.SelectionItem.SELECT_BRANCH_OFFICE_SELECTION_ITEM;

+import static org.mifos.application.reports.ui.SelectionItem.SELECT_CENTER_SELECTION_ITEM;

+import static org.mifos.application.reports.ui.SelectionItem.SELECT_LOAN_OFFICER_SELECTION_ITEM;

+import static org.mifos.application.reports.util.helpers.CollectionSheetReportConstants.BRANCH_ID_PARAM;

+import static org.mifos.application.reports.util.helpers.CollectionSheetReportConstants.CENTER_ID_INVALID_MSG;

+import static org.mifos.application.reports.util.helpers.CollectionSheetReportConstants.CENTER_ID_PARAM;

+import static org.mifos.application.reports.util.helpers.CollectionSheetReportConstants.LOAN_OFFICER_ID_INVALID_MSG;

+import static org.mifos.application.reports.util.helpers.CollectionSheetReportConstants.LOAN_OFFICER_ID_PARAM;

+import static org.mifos.application.reports.util.helpers.CollectionSheetReportConstants.MEETING_DATE_INVALID_MSG;

+import static org.mifos.application.reports.util.helpers.CollectionSheetReportConstants.MEETING_DATE_PARAM;

+import static org.mifos.application.reports.util.helpers.CollectionSheetReportConstants.REPORT_PARAMS_ARRAY;

+

+import java.text.ParseException;

+import java.text.SimpleDateFormat;

+import java.util.Date;

+

+import javax.servlet.http.HttpServletRequest;

+

+import org.mifos.application.reports.business.validator.Errors;

+import org.mifos.application.reports.ui.DateSelectionItem;

+import org.mifos.framework.servlet.ModifiableParameterServletRequest;

+import org.mifos.framework.util.helpers.NumberUtils;

+

+public class CollectionSheetReportParameters implements ReportParameterForm {

+

+	public static final SimpleDateFormat REPORT_DATE_PARAM_FORMAT = new SimpleDateFormat(

+			"MM/dd/yyyy hh:mm:ss a");

+	private final String branchId;

+	private final String loanOfficerId;

+	private final String centerId;

+	private final String meetingDate;

+

+	public CollectionSheetReportParameters(String branchId,

+			String loanOfficerId, String centerId, String meetingDate) {

+		this.branchId = branchId;

+		this.loanOfficerId = loanOfficerId;

+		this.centerId = centerId;

+		this.meetingDate = meetingDate;

+	}

+

+	public void validate(Errors errors) {

+		addErrorIfInvalid(errors, branchId,

+				SELECT_BRANCH_OFFICE_SELECTION_ITEM

+						.getId(), BRANCH_ID_PARAM, "branchId.invalid");

+		addErrorIfInvalid(errors, loanOfficerId,

+				SELECT_LOAN_OFFICER_SELECTION_ITEM

+						.getId(), LOAN_OFFICER_ID_PARAM,

+				LOAN_OFFICER_ID_INVALID_MSG);

+		addErrorIfInvalid(errors, loanOfficerId,

+				NA_LOAN_OFFICER_SELECTION_ITEM

+						.getId(), LOAN_OFFICER_ID_PARAM,

+				LOAN_OFFICER_ID_INVALID_MSG);

+		addErrorIfInvalid(errors, centerId,

+				SELECT_CENTER_SELECTION_ITEM.getId(),

+				CENTER_ID_PARAM, CENTER_ID_INVALID_MSG);

+		addErrorIfInvalid(errors, centerId,

+				NA_CENTER_SELECTION_ITEM.getId(),

+				CENTER_ID_PARAM, CENTER_ID_INVALID_MSG);

+		addErrorIfInvalid(errors, meetingDate,

+				DateSelectionItem.NA_MEETING_DATE.getDate(),

+				MEETING_DATE_PARAM, MEETING_DATE_INVALID_MSG);

+	}

+

+	private void addErrorIfInvalid(Errors errors, String parameter,

+			Date notAvailableDate, String fieldName, String errorCode) {

+		Date date = null;

+		try {

+			date = REPORT_DATE_PARAM_FORMAT.parse(parameter);

+		}

+		catch (ParseException e) {

+		}

+		if (notAvailableDate.equals(date)) {

+			errors.rejectValue(fieldName, errorCode);

+		}

+	}

+

+	private void addErrorIfInvalid(Errors errors, String parameter,

+			Integer selectValue, String fieldName, String errorCode) {

+		if (!NumberUtils.isDigits(parameter)

+				|| selectValue.equals(Integer.valueOf(parameter))) {

+			errors.rejectValue(fieldName, errorCode);

+		}

+	}

+

+	private void addErrorIfInvalid(Errors errors, String parameter,

+			Short selectValue, String fieldName, String errorCode) {

+		if (!NumberUtils.isDigits(parameter)

+				|| selectValue.equals(Short.valueOf(parameter))) {

+			errors.rejectValue(fieldName, errorCode);

+		}

+	}

+

+	public static CollectionSheetReportParameters build(

+			HttpServletRequest request) {

+		return new CollectionSheetReportParameters(extractBranchId(request),

+				extractLoanOfficerId(request), extractCenterId(request),

+				extractMeetingDate(request));

+	}

+

+	private static String getParameter(HttpServletRequest request,

+			String paramName) {

+		String parameter = request.getParameter(paramName);

+		return parameter != null ? parameter : request.getAttribute(parameter)

+				.toString();

+	}

+

+	public void removeRequestParameters(

+			ModifiableParameterServletRequest modifiedRequest, Errors errors) {

+		for (String reportParam : REPORT_PARAMS_ARRAY) {

+			if (errors.getFieldError(reportParam) != null)

+				modifiedRequest.removeParameter(reportParam);

+		}

+	}

+

+	private static String extractMeetingDate(HttpServletRequest request) {

+		return getParameter(request, MEETING_DATE_PARAM);

+	}

+

+	private static String extractCenterId(HttpServletRequest request) {

+		return getParameter(request, CENTER_ID_PARAM);

+	}

+

+	private static String extractLoanOfficerId(HttpServletRequest request) {

+		return getParameter(request, LOAN_OFFICER_ID_PARAM);

+	}

+

+	private static String extractBranchId(HttpServletRequest request) {

+		return getParameter(request, BRANCH_ID_PARAM);

+	}

+}

Index: src/org/mifos/application/reports/business/DetailedAgingPortfolioReportParameters.java
==================================================================
--- src/org/mifos/application/reports/business/DetailedAgingPortfolioReportParameters.java	(revision 12249)

+++ src/org/mifos/application/reports/business/DetailedAgingPortfolioReportParameters.java	(patch commit-11012008a level 1)

@@ -0,0 +1,64 @@

+package org.mifos.application.reports.business;

+

+import static org.mifos.application.reports.util.helpers.CollectionSheetReportConstants.REPORT_PARAMS_ARRAY;

+

+import javax.servlet.http.HttpServletRequest;

+

+import org.mifos.application.reports.business.validator.Errors;

+import org.mifos.framework.servlet.ModifiableParameterServletRequest;

+import org.mifos.framework.util.helpers.NumberUtils;

+import org.mifos.framework.util.helpers.ServletUtils;

+

+public class DetailedAgingPortfolioReportParameters implements ReportParameterForm{

+

+	public static final String BRANCH_ID_PARAM = "branchId";

+	public static final String LOAN_OFFICER_ID_PARAM = "loanOfficerId";

+	public static final String LOAN_PRODUCT_ID = "loanProductId";

+	

+	public static final String BRANCH_ID_INVALID_MSG = "branchId.invalid";

+	public static final String LOAN_OFFICER_ID_INVALID_MSG = "loanOfficerId.invalid";

+	public static final String LOAN_PRODUCT_ID_INVALID_MSG = "loanProductId.invalid";

+

+	private final String branchId;

+	private final String loanOfficerId;

+	private final String productId;

+

+	public static final String VALID_ID = "1";

+

+	public static final String INVALID_ID = "-2";

+

+	DetailedAgingPortfolioReportParameters(String branchId, String loanOfficerId,String productId) {

+		this.branchId = branchId;

+		this.loanOfficerId = loanOfficerId;

+		this.productId = productId;

+	}

+

+	public void validate(Errors errors) {

+	    addErrorIfInvalid(errors, branchId, BRANCH_ID_PARAM, BRANCH_ID_INVALID_MSG);	

+	    addErrorIfInvalid(errors, loanOfficerId, LOAN_OFFICER_ID_PARAM, LOAN_OFFICER_ID_INVALID_MSG);

+	    addErrorIfInvalid(errors, productId, LOAN_PRODUCT_ID, LOAN_PRODUCT_ID_INVALID_MSG);

+	}

+

+	private void addErrorIfInvalid(Errors errors, String parameter,

+			String fieldName, String errorCode) {

+		if (!NumberUtils.isDigits(parameter)

+				|| Integer.valueOf(INVALID_ID).equals(Integer.valueOf(parameter))) {

+			errors.rejectValue(fieldName, errorCode);

+		}

+	}

+

+	public static DetailedAgingPortfolioReportParameters build(HttpServletRequest request) {

+		return new DetailedAgingPortfolioReportParameters(

+				ServletUtils.getParameter(request, BRANCH_ID_PARAM),

+				ServletUtils.getParameter(request, LOAN_OFFICER_ID_PARAM),

+				ServletUtils.getParameter(request, LOAN_PRODUCT_ID)

+				);

+	}

+

+	public void removeRequestParameters(ModifiableParameterServletRequest modifiedRequest, Errors errors) {

+		for (String reportParam : REPORT_PARAMS_ARRAY) {

+			if (errors.getFieldError(reportParam) != null)

+				modifiedRequest.removeParameter(reportParam);

+		}

+	}

+}

Index: src/org/mifos/application/reports/business/ReportParameterForm.java
==================================================================
--- src/org/mifos/application/reports/business/ReportParameterForm.java	(revision 12249)

+++ src/org/mifos/application/reports/business/ReportParameterForm.java	(patch commit-11012008a level 1)

@@ -0,0 +1,10 @@

+package org.mifos.application.reports.business;

+

+import org.mifos.application.reports.business.validator.Errors;

+import org.mifos.framework.servlet.ModifiableParameterServletRequest;

+

+public interface ReportParameterForm {

+	public void validate(Errors errors);

+

+	public void removeRequestParameters(ModifiableParameterServletRequest modifiedRequest, Errors errors);

+}

Index: src/org/mifos/application/reports/business/dto	(new directory)
==================================================================
Index: src/org/mifos/application/reports/business/dto/CollectionSheetReportDTO.java
==================================================================
--- src/org/mifos/application/reports/business/dto/CollectionSheetReportDTO.java	(revision 12249)

+++ src/org/mifos/application/reports/business/dto/CollectionSheetReportDTO.java	(patch commit-11012008a level 1)

@@ -0,0 +1,105 @@

+package org.mifos.application.reports.business.dto;

+

+import org.mifos.application.collectionsheet.business.CollSheetLnDetailsEntity;

+import org.mifos.application.collectionsheet.business.CollSheetSavingsDetailsEntity;

+import org.mifos.application.customer.business.CustomerBO;

+import org.mifos.framework.util.helpers.NumberUtils;

+

+// Understands collection sheet report properties

+public class CollectionSheetReportDTO {

+	private final Integer customerId;

+	private final Integer groupId;

+	private final Integer centerId;

+	private final Integer loanOfficerId;

+	private final String customerName;

+	private final String branchName;

+	private final String centerName;

+	private final String groupName;

+	private final String loanOfficerName;

+	private final LoanProductDetails[] loanProducts;

+	private SavingsProductDetails[] savingsProducts;

+

+	public CollectionSheetReportDTO(

+			CollSheetLnDetailsEntity loanDetailsEntity1,

+			CollSheetLnDetailsEntity loanDetailsEntity2,

+			CollSheetSavingsDetailsEntity mm1SavingsDetailEntity,

+			CollSheetSavingsDetailsEntity mm2SavingsDetailEntity,

+			Integer customerId, Integer groupId, String customerName,

+			String branchName, String groupName, CustomerBO center,

+			String loanOfferingShortName1, String loanOfferingShortName2,

+			String savingsOfferingShortName1, String savingsOfferingShortName2) {

+

+		loanProducts = new LoanProductDetails[2];

+		loanProducts[0] = new LoanProductDetails(loanDetailsEntity1, loanOfferingShortName1);

+		loanProducts[1] = new LoanProductDetails(loanDetailsEntity2, loanOfferingShortName2);

+

+		this.customerId = customerId;

+		this.groupId = groupId;

+		this.loanOfficerId = NumberUtils.convertShortToInteger(center

+				.getPersonnel().getPersonnelId());

+		this.loanOfficerName = center.getPersonnel().getDisplayName();

+		this.customerName = customerName;

+		centerId = center.getCustomerId();

+		centerName = center.getDisplayName();

+		this.branchName = branchName;

+		this.groupName = groupName;

+

+		savingsProducts = new SavingsProductDetails[2];

+		savingsProducts[0] = new SavingsProductDetails(mm1SavingsDetailEntity, savingsOfferingShortName1);

+		savingsProducts[1] = new SavingsProductDetails(mm2SavingsDetailEntity, savingsOfferingShortName2);

+	}

+

+	public SavingsProductDetails getSavingsProduct(int index) {

+		return savingsProducts[index];

+	}

+

+	public LoanProductDetails getLoanProduct(int index) {

+		return loanProducts[index];

+	}

+

+

+	public String getBranchName() {

+		return branchName;

+	}

+

+	public Integer getCenterId() {

+		return centerId;

+	}

+

+	public String getCenterName() {

+		return centerName;

+	}

+

+	public Integer getCustomerId() {

+		return customerId;

+	}

+

+	public String getCustomerName() {

+		return customerName;

+	}

+

+	public Integer getGroupId() {

+		return groupId;

+	}

+

+	public String getGroupName() {

+		return groupName;

+	}

+

+	public Integer getLoanOfficerId() {

+		return loanOfficerId;

+	}

+

+	public String getLoanOfficerName() {

+		return loanOfficerName;

+	}

+

+	public Double getOtherFee() {

+		return loanProducts[0].getOtherFee() + loanProducts[1].getOtherFee();

+	}

+

+	public Double getOtherFine() {

+		return loanProducts[0].getOtherFine() + loanProducts[1].getOtherFine();

+	}

+

+}

Index: src/org/mifos/application/reports/business/dto/LoanProductDetails.java
==================================================================
--- src/org/mifos/application/reports/business/dto/LoanProductDetails.java	(revision 12249)

+++ src/org/mifos/application/reports/business/dto/LoanProductDetails.java	(patch commit-11012008a level 1)

@@ -0,0 +1,56 @@

+package org.mifos.application.reports.business.dto;

+

+import org.mifos.application.collectionsheet.business.CollSheetLnDetailsEntity;

+import org.mifos.framework.util.helpers.MoneyUtils;

+

+public class LoanProductDetails {

+	private final Double balance;

+	private final Double due;

+	private final Double otherFee;

+	private final Double otherFine;

+	private final Double issues;

+	private final String offeringShortName;

+

+	public LoanProductDetails(CollSheetLnDetailsEntity loanDetails,

+			String offeringShortName) {

+		this.offeringShortName = offeringShortName;

+		if (loanDetails == null) {

+			balance = due = issues = otherFee = otherFine = 0d;

+		}

+		else {

+			balance = MoneyUtils.getMoneyDoubleValue(loanDetails

+					.getTotalPrincipalDue());

+			due = MoneyUtils.getMoneyDoubleValue(loanDetails.getTotalAmntDue());

+			issues = MoneyUtils.getMoneyDoubleValue(loanDetails

+					.getAmntToBeDisbursed());

+			otherFee = MoneyUtils.getMoneyDoubleValue(loanDetails

+					.getTotalFees());

+			otherFine = MoneyUtils.getMoneyDoubleValue(loanDetails

+					.getTotalPenalty());

+		}

+	}

+

+	public Double getBalance() {

+		return balance;

+	}

+

+	public Double getDue() {

+		return due;

+	}

+

+	public Double getIssues() {

+		return issues;

+	}

+

+	Double getOtherFee() {

+		return otherFee;

+	}

+

+	Double getOtherFine() {

+		return otherFine;

+	}

+

+	public String getOfferingShortName() {

+		return offeringShortName;

+	}

+}

Index: src/org/mifos/application/reports/business/dto/SavingsProductDetails.java
==================================================================
--- src/org/mifos/application/reports/business/dto/SavingsProductDetails.java	(revision 12249)

+++ src/org/mifos/application/reports/business/dto/SavingsProductDetails.java	(patch commit-11012008a level 1)

@@ -0,0 +1,37 @@

+package org.mifos.application.reports.business.dto;

+

+import org.mifos.application.collectionsheet.business.CollSheetSavingsDetailsEntity;

+import org.mifos.framework.util.helpers.MoneyUtils;

+

+public class SavingsProductDetails {

+

+	private final Double balance;

+	private final Double due;

+	private final String offeringShortName;

+

+	public SavingsProductDetails(CollSheetSavingsDetailsEntity savingsDetails,

+			String offeringShortName) {

+		this.offeringShortName = offeringShortName;

+		if (savingsDetails != null) {

+			balance = MoneyUtils.getMoneyDoubleValue(savingsDetails

+					.getAccountBalance());

+			due = MoneyUtils.getMoneyDoubleValue(savingsDetails

+					.getRecommendedAmntDue());

+		}

+		else {

+			balance = due = 0d;

+		}

+	}

+

+	public Double getBalance() {

+		return balance;

+	}

+

+	public Double getDue() {

+		return due;

+	}

+

+	public String getOfferingShortName() {

+		return offeringShortName;

+	}

+}

Index: src/org/mifos/application/reports/business/validator	(new directory)
==================================================================
Index: src/org/mifos/application/reports/business/validator/CollectionSheetReportParamValidator.java
==================================================================
--- src/org/mifos/application/reports/business/validator/CollectionSheetReportParamValidator.java	(revision 12249)

+++ src/org/mifos/application/reports/business/validator/CollectionSheetReportParamValidator.java	(patch commit-11012008a level 1)

@@ -0,0 +1,26 @@

+package org.mifos.application.reports.business.validator;

+

+import javax.servlet.http.HttpServletRequest;

+

+import org.mifos.application.reports.business.CollectionSheetReportParameters;

+import org.mifos.application.reports.business.ReportParameterForm;

+import org.mifos.framework.servlet.ModifiableParameterServletRequest;

+

+

+public class CollectionSheetReportParamValidator implements

+		ReportParameterValidator<CollectionSheetReportParameters> {

+	public static final ReportParameterValidator INSTANCE = new CollectionSheetReportParamValidator();

+

+	public void validate(CollectionSheetReportParameters target, Errors errors) {

+		target.validate(errors);

+	}

+

+	public CollectionSheetReportParameters buildReportParameterForm(

+			HttpServletRequest request) {

+		return CollectionSheetReportParameters.build(request);

+	}

+

+	public void removeRequestParameters(ModifiableParameterServletRequest modifiedRequest, ReportParameterForm form, Errors errors) {

+		form.removeRequestParameters(modifiedRequest, errors);

+	}

+}

Index: src/org/mifos/application/reports/business/validator/DetailedAgingPortfolioReportParamValidator.java
==================================================================
--- src/org/mifos/application/reports/business/validator/DetailedAgingPortfolioReportParamValidator.java	(revision 12249)

+++ src/org/mifos/application/reports/business/validator/DetailedAgingPortfolioReportParamValidator.java	(patch commit-11012008a level 1)

@@ -0,0 +1,25 @@

+package org.mifos.application.reports.business.validator;

+

+import javax.servlet.http.HttpServletRequest;

+

+import org.mifos.application.reports.business.DetailedAgingPortfolioReportParameters;

+import org.mifos.application.reports.business.ReportParameterForm;

+import org.mifos.framework.servlet.ModifiableParameterServletRequest;

+

+public class DetailedAgingPortfolioReportParamValidator  implements

+		ReportParameterValidator<DetailedAgingPortfolioReportParameters> {

+

+	public static final ReportParameterValidator INSTANCE = new DetailedAgingPortfolioReportParamValidator();

+	

+	public DetailedAgingPortfolioReportParameters buildReportParameterForm(HttpServletRequest request) {

+		return DetailedAgingPortfolioReportParameters.build(request);

+	}

+

+	public void removeRequestParameters(ModifiableParameterServletRequest modifiedRequest, ReportParameterForm form, Errors errors) {

+		form.removeRequestParameters(modifiedRequest, errors);

+	}

+

+	public void validate(DetailedAgingPortfolioReportParameters target, Errors errors) {

+		target.validate(errors);

+	}

+}

Index: src/org/mifos/application/reports/business/validator/Errors.java
==================================================================
--- src/org/mifos/application/reports/business/validator/Errors.java	(revision 12249)

+++ src/org/mifos/application/reports/business/validator/Errors.java	(patch commit-11012008a level 1)

@@ -0,0 +1,58 @@

+package org.mifos.application.reports.business.validator;

+

+import java.util.ArrayList;

+import java.util.List;

+import java.util.Locale;

+

+import org.mifos.application.master.MessageLookup;

+

+public class Errors {

+	List<ErrorEntry> errors;

+	private final Locale locale;

+

+	public Errors(Locale locale) {

+		this.locale = locale;

+		errors = new ArrayList<ErrorEntry>();

+	}

+

+	public void rejectValue(String fieldName, String errorCode) {

+		errors.add(new ErrorEntry(fieldName, errorCode));

+	}

+

+	public List<String> getAllErrorMessages() {

+		List<String> errorMessages = new ArrayList<String>();

+		for (ErrorEntry entry : errors) {

+			errorMessages.add(MessageLookup.getInstance().lookup(

+					entry.errorCode, locale));

+

+		}

+		return errorMessages;

+	}

+

+	public boolean hasErrors() {

+		return !errors.isEmpty();

+	}

+

+	public List<ErrorEntry> getErrors() {

+		return errors;

+	}

+

+	public static class ErrorEntry {

+		final String fieldName;

+		final String errorCode;

+

+		public ErrorEntry(String fieldName, String errorCode) {

+			super();

+			this.fieldName = fieldName;

+			this.errorCode = errorCode;

+		}

+	}

+

+	public ErrorEntry getFieldError(String fieldName) {

+		for (ErrorEntry errorEntry : errors) {

+			if(errorEntry.fieldName.equals(fieldName))

+				return errorEntry;

+		}

+		return null;

+	}

+}

Index: src/org/mifos/application/reports/business/validator/ReportParameterValidator.java
==================================================================
--- src/org/mifos/application/reports/business/validator/ReportParameterValidator.java	(revision 12249)

+++ src/org/mifos/application/reports/business/validator/ReportParameterValidator.java	(patch commit-11012008a level 1)

@@ -0,0 +1,12 @@

+package org.mifos.application.reports.business.validator;

+

+import javax.servlet.http.HttpServletRequest;

+

+import org.mifos.application.reports.business.ReportParameterForm;

+import org.mifos.framework.servlet.ModifiableParameterServletRequest;

+

+public interface ReportParameterValidator<T extends ReportParameterForm> {

+	public void validate(T target, Errors errors);

+	public T buildReportParameterForm(HttpServletRequest request);

+	public void removeRequestParameters(ModifiableParameterServletRequest modifiedRequest, ReportParameterForm form, Errors errors);

+}

Index: src/org/mifos/application/reports/exceptions/ReportServiceInitializationException.java
==================================================================
--- src/org/mifos/application/reports/exceptions/ReportServiceInitializationException.java	(revision 12249)

+++ src/org/mifos/application/reports/exceptions/ReportServiceInitializationException.java	(patch commit-11012008a level 1)

@@ -0,0 +1,9 @@

+package org.mifos.application.reports.exceptions;

+

+public class ReportServiceInitializationException extends RuntimeException {

+

+	public ReportServiceInitializationException(String message, Throwable cause) {

+		super(message, cause);

+	}

+

+}

Index: src/org/mifos/application/reports/persistence/DateSelectionItemPersistence.java
==================================================================
--- src/org/mifos/application/reports/persistence/DateSelectionItemPersistence.java	(revision 12249)

+++ src/org/mifos/application/reports/persistence/DateSelectionItemPersistence.java	(patch commit-11012008a level 1)

@@ -0,0 +1,29 @@

+package org.mifos.application.reports.persistence;

+

+import java.util.Date;

+import java.util.HashMap;

+import java.util.List;

+import java.util.Map;

+

+import org.mifos.application.NamedQueryConstants;

+import org.mifos.application.collectionsheet.util.helpers.CollectionSheetConstants;

+import org.mifos.application.reports.ui.DateSelectionItem;

+import org.mifos.framework.exceptions.PersistenceException;

+import org.mifos.framework.persistence.Persistence;

+

+public class DateSelectionItemPersistence extends Persistence {

+	public List<DateSelectionItem> getMeetingDates(Short branchId,

+			Short loanOfficerId, Integer customerId, Short customerLevel, Date from)

+			throws PersistenceException {

+		Map<String, Object> queryParameters = new HashMap<String, Object>();

+		queryParameters.put("COLL_SHEET_RUN_STATUS", CollectionSheetConstants.COLLECTION_SHEET_GENERATION_SUCCESSFUL);

+		queryParameters.put("customerId", customerId);

+		queryParameters.put("CUSTOMER_LEVEL", customerLevel);

+		queryParameters.put("branchId", branchId);

+		queryParameters.put("loanOfficerId", loanOfficerId);

+		queryParameters.put("fromDate", from);

+		return executeNamedQuery(

+				NamedQueryConstants.GET_MEETING_DATES_AS_SELECTION_ITEM,

+				queryParameters);

+	}

+}

Index: src/org/mifos/application/reports/persistence/SelectionItemPersistence.java
==================================================================
--- src/org/mifos/application/reports/persistence/SelectionItemPersistence.java	(revision 12249)

+++ src/org/mifos/application/reports/persistence/SelectionItemPersistence.java	(patch commit-11012008a level 1)

@@ -0,0 +1,75 @@

+package org.mifos.application.reports.persistence;

+

+import static org.mifos.application.NamedQueryConstants.GET_ACTIVE_BRANCHES_AS_SELECTION_ITEM;

+import static org.mifos.application.NamedQueryConstants.GET_ACTIVE_CUSTOMERS_UNDER_LOAN_OFFICER_AS_SELECTION_ITEM;

+import static org.mifos.application.NamedQueryConstants.GET_ACTIVE_LOAN_OFFICERS_UNDER_OFFICE_AS_SELECTION_ITEM;

+

+import java.util.HashMap;

+import java.util.List;

+import java.util.Map;

+

+import org.mifos.application.NamedQueryConstants;

+import org.mifos.application.customer.util.helpers.CustomerLevel;

+import org.mifos.application.customer.util.helpers.CustomerStatus;

+import org.mifos.application.office.util.helpers.OfficeLevel;

+import org.mifos.application.office.util.helpers.OfficeStatus;

+import org.mifos.application.personnel.util.helpers.PersonnelLevel;

+import org.mifos.application.personnel.util.helpers.PersonnelStatus;

+import org.mifos.application.reports.ui.SelectionItem;

+import org.mifos.framework.exceptions.PersistenceException;

+import org.mifos.framework.persistence.Persistence;

+

+public class SelectionItemPersistence extends Persistence {

+	public List<SelectionItem> getActiveBranchesUnderUser(String officeSearchId)

+			throws PersistenceException {

+		Map<String, Object> queryParameters = new HashMap<String, Object>();

+		queryParameters.put("officeLevelId", OfficeLevel.BRANCHOFFICE

+				.getValue());

+		queryParameters.put("officeSearchId", officeSearchId + "%");

+		queryParameters.put("ACTIVE", OfficeStatus.ACTIVE.getValue());

+		return executeNamedQuery(GET_ACTIVE_BRANCHES_AS_SELECTION_ITEM,

+				queryParameters);

+	}

+

+	public List<SelectionItem> getActiveLoanOfficersUnderOffice(Short officeId)

+			throws PersistenceException {

+		Map<String, Object> queryParameters = new HashMap<String, Object>();

+		queryParameters.put("officeId", officeId);

+		queryParameters.put("personnelLevelId", PersonnelLevel.LOAN_OFFICER

+				.getValue());

+		queryParameters.put("ACTIVE", PersonnelStatus.ACTIVE.getValue());

+		return executeNamedQuery(

+				GET_ACTIVE_LOAN_OFFICERS_UNDER_OFFICE_AS_SELECTION_ITEM,

+				queryParameters);

+	}

+

+	public List<SelectionItem> getActiveCentersUnderUser(Short branchId,

+			Short loanOfficerId) throws PersistenceException {

+		HashMap<String, Object> queryParameters = populateCustomerQueryParams(

+				branchId, loanOfficerId, CustomerLevel.CENTER.getValue(),

+				CustomerStatus.CENTER_ACTIVE.getValue());

+		return executeNamedQuery(

+				GET_ACTIVE_CUSTOMERS_UNDER_LOAN_OFFICER_AS_SELECTION_ITEM,

+				queryParameters);

+	}

+

+	private HashMap<String, Object> populateCustomerQueryParams(Short branchId,

+			Short loanOfficerId, Short customerLevel, Short customerStatus) {

+		HashMap<String, Object> queryParameters = new HashMap<String, Object>();

+		queryParameters.put("personnelId", loanOfficerId);

+		queryParameters.put("officeId", branchId);

+		queryParameters.put("customerLevelId", customerLevel);

+		queryParameters.put("ACTIVE", customerStatus);

+		return queryParameters;

+	}

+

+	public List<SelectionItem> getActiveGroupsUnderUser(Short officeId,

+			Short personnelId) throws PersistenceException {

+		HashMap<String, Object> queryParameters = populateCustomerQueryParams(

+				officeId, personnelId, CustomerLevel.GROUP.getValue(),

+				CustomerStatus.GROUP_ACTIVE.getValue());

+		return executeNamedQuery(

+				NamedQueryConstants.GET_ACTIVE_CUSTOMERS_UNDER_LOAN_OFFICER_AS_SELECTION_ITEM,

+				queryParameters);

+	}

+}

Index: src/org/mifos/application/reports/struts/action/BirtReportValidationFilter.java
==================================================================
--- src/org/mifos/application/reports/struts/action/BirtReportValidationFilter.java	(revision 12249)

+++ src/org/mifos/application/reports/struts/action/BirtReportValidationFilter.java	(patch commit-11012008a level 1)

@@ -12,34 +12,42 @@

 import javax.servlet.http.HttpServletResponse;

 

 public class BirtReportValidationFilter implements Filter {

-	

+

 	private String errorMessage;

+	private FilterConfig filterConfig;

 

 	public void doFilter(ServletRequest request, ServletResponse response,

 			FilterChain chain) throws IOException, ServletException {

 		errorMessage = "";

 		String currentReport = request.getParameter("__report");

-		

+

 		HashMap<String, String> errorMessages = new HashMap<String, String>();

 		errorMessages.put("branchId", "Please select a Branch Office.");

-		errorMessages.put("loanOfficerId",  "Please select a Loan Officer.");

+		errorMessages.put("loanOfficerId", "Please select a Loan Officer.");

 		errorMessages.put("loanProductId", "Please select a Loan Procuct.");

-		

-		reportFilter(currentReport, "report/ActiveLoansByLoanOfficer.rptdesign", errorMessages, request);

-		reportFilter(currentReport, "report/DetailedAgingPortfolioAtRisk.rptdesign", errorMessages, request);

-		

-		if(errorMessage.length() == 0) {

+

+		reportFilter(currentReport,

+				"report/ActiveLoansByLoanOfficer.rptdesign", errorMessages,

+				request);

+		reportFilter(currentReport,

+				"report/DetailedAgingPortfolioAtRisk.rptdesign", errorMessages,

+				request);

+

+		if (errorMessage.length() == 0) {

 			chain.doFilter(request, response);

 		}

 		else {

 			showError(request, response);

+

 		}

 	}

 

-	private void reportFilter(String currentReport, String expectedReport, HashMap<String, String> parameters, ServletRequest request) {

-		if(currentReport.equals(expectedReport)) {

-			for(String parameter : parameters.keySet()){

-				if(request.getParameter(parameter) != null &&request.getParameter(parameter).equals("-2")) {

+	private void reportFilter(String currentReport, String expectedReport,

+			HashMap<String, String> parameters, ServletRequest request) {

+		if (currentReport.equals(expectedReport)) {

+			for (String parameter : parameters.keySet()) {

+				if (request.getParameter(parameter) != null

+						&& request.getParameter(parameter).equals("-2")) {

 					addErrorMessage(parameters.get(parameter));

 				}

 			}

@@ -52,17 +60,18 @@

 

 	private void showError(ServletRequest request, ServletResponse response)

 			throws IOException, ServletException {

-		HttpServletResponse httpServletResponse = (HttpServletResponse) response;

-		httpServletResponse

-				.sendRedirect("/mifos/run?__report="

-						+ request.getParameter("__report") + "&reportName="

-						+ request.getParameter("reportName") + "&userId="

-						+ request.getParameter("userId") + "&__format="

-						+ request.getParameter("__format") + "&message="

-						+ errorMessage);

+		

+		HttpServletResponse httpServletResponse = (HttpServletResponse) response;		

+		httpServletResponse.sendRedirect("run?__report="

+				+ request.getParameter("__report") + "&reportName="

+				+ request.getParameter("reportName") + "&userId="

+				+ request.getParameter("userId") + "&__format="

+				+ request.getParameter("__format") + "&mifosErrorMessage="

+				+ errorMessage);

 	}

 

-	public void init(FilterConfig arg0) throws ServletException {

+	public void init(FilterConfig filterConfig) throws ServletException {

+		this.filterConfig = filterConfig;

 	}

 

 	public void destroy() {

Index: src/org/mifos/application/reports/util/helpers/ReportsConstants.java
==================================================================
--- src/org/mifos/application/reports/util/helpers/ReportsConstants.java	(revision 12249)

+++ src/org/mifos/application/reports/util/helpers/ReportsConstants.java	(patch commit-11012008a level 1)

@@ -38,6 +38,8 @@

 
 package org.mifos.application.reports.util.helpers;
 
+import java.util.Date;
+
 public interface ReportsConstants {
 	public String GETPATH_REPORTS="reportsAction";
 	public String GETREPORTPAGE="getReportPage";
@@ -81,6 +83,13 @@

 	public static final String ERROR_REPORTALREADYEXIST="error.reportAlreadyExist";
 	public static final String ERROR_REPORTACTIVITYIDISNULL="error.reportActivityIdIsNull";
 	public static final String ERROR_NOMOREDYNAMICACTIVITYID="error.noMoreDynamicActivityId";
-	
-	
+//added by collection sheet report module
+	public static final String SELECT_DISPLAY_NAME = "---Select---";
+	public static final String NOT_APPLICABLE_DISPLAY_NAME = "---N/A---";
+	public static final String ALL_DISPLAY_NAME = "ALL";
+	public static final Short NOT_APPLICABLE_ID = new Short("-3");
+	public static final Short SELECT_ID = new Short("-2");
+	public static final Short ALL_ID = new Short("-1");
+	public static final Date NA_DATE = new Date(0l);
+//ended by collection sheet report module
 }
Index: src/org/mifos/application/reports/util/helpers/CollectionSheetReportConstants.java
==================================================================
--- src/org/mifos/application/reports/util/helpers/CollectionSheetReportConstants.java	(revision 12249)

+++ src/org/mifos/application/reports/util/helpers/CollectionSheetReportConstants.java	(patch commit-11012008a level 1)

@@ -0,0 +1,18 @@

+package org.mifos.application.reports.util.helpers;

+

+

+

+public class CollectionSheetReportConstants {

+

+	public static final String LOAN_OFFICER_ID_INVALID_MSG = "loanOfficerId.invalid";

+	public static final String CENTER_ID_INVALID_MSG = "centerId.invalid";

+	public static final String MEETING_DATE_INVALID_MSG = "meetingDate.invalid";

+	

+	public static final String BRANCH_ID_PARAM = "branchId";

+	public static final String LOAN_OFFICER_ID_PARAM = "loanOfficerId";

+	public static final String CENTER_ID_PARAM = "centerId";

+	public static final String MEETING_DATE_PARAM = "meetingDate";

+	public static final String[] REPORT_PARAMS_ARRAY = {BRANCH_ID_PARAM, LOAN_OFFICER_ID_PARAM, CENTER_ID_PARAM, 

+		MEETING_DATE_PARAM};

+

+}

Index: src/org/mifos/application/reports/action	(new directory)
==================================================================
Index: src/org/mifos/application/reports/action/BirtReportValidationAction.java
==================================================================
--- src/org/mifos/application/reports/action/BirtReportValidationAction.java	(revision 12249)

+++ src/org/mifos/application/reports/action/BirtReportValidationAction.java	(patch commit-11012008a level 1)

@@ -0,0 +1,68 @@

+package org.mifos.application.reports.action;

+

+import java.io.IOException;

+import java.util.HashMap;

+import java.util.Map;

+

+import javax.servlet.ServletException;

+import javax.servlet.http.HttpServlet;

+import javax.servlet.http.HttpServletRequest;

+import javax.servlet.http.HttpServletResponse;

+

+import org.mifos.application.reports.business.ReportParameterForm;

+import org.mifos.application.reports.business.validator.CollectionSheetReportParamValidator;

+import org.mifos.application.reports.business.validator.DetailedAgingPortfolioReportParamValidator;

+import org.mifos.application.reports.business.validator.Errors;

+import org.mifos.application.reports.business.validator.ReportParameterValidator;

+import org.mifos.framework.security.util.UserContext;

+import org.mifos.framework.servlet.ModifiableParameterServletRequest;

+

+public class BirtReportValidationAction extends HttpServlet {

+

+	private static final String ERRORS = "reportErrors";

+	private static Map<String, ReportParameterValidator<ReportParameterForm>> reportValidators = new HashMap<String, ReportParameterValidator<ReportParameterForm>>();

+

+	static {

+		reportValidators.put("report/LayoutReport.rptdesign",

+				CollectionSheetReportParamValidator.INSTANCE);

+		reportValidators.put("report/DetailedAgingPortfolioAtRisk.rptdesign", 

+				DetailedAgingPortfolioReportParamValidator.INSTANCE);

+		reportValidators.put("report/ActiveLoansByLoanOfficer.rptdesign", 

+				DetailedAgingPortfolioReportParamValidator.INSTANCE);		

+	}

+

+	@Override

+	protected void doGet(HttpServletRequest request,

+			HttpServletResponse response) throws ServletException, IOException {

+		validateReportParameters(request, response);

+	}

+

+	@Override

+	protected void doPost(HttpServletRequest request,

+			HttpServletResponse response) throws ServletException, IOException {

+		doGet(request, response);

+	}

+

+	private void validateReportParameters(HttpServletRequest request,

+			HttpServletResponse response) throws ServletException, IOException {

+		ReportParameterValidator validator = reportValidators.get(request

+				.getParameter("__report"));

+		if (validator == null || request.getParameter("branchId") == null) {

+			request.getRequestDispatcher("/run").forward(request, response);

+			return;

+		}

+

+		ReportParameterForm form = validator.buildReportParameterForm(request);

+		Errors errors = new Errors(((UserContext) request.getSession()

+				.getAttribute("UserContext")).getPreferredLocale());

+		validator.validate(form, errors);

+		ModifiableParameterServletRequest modifiedRequest = new ModifiableParameterServletRequest(

+				request);

+

+		if (errors.hasErrors()) {

+			request.setAttribute(ERRORS, errors);

+			validator.removeRequestParameters(modifiedRequest, form, errors);

+		}

+		request.getRequestDispatcher("/run").forward(modifiedRequest, response);

+	}

+}

Index: src/org/mifos/application/reports/resources	(new directory)
==================================================================
Index: src/org/mifos/application/reports/resources/reportproducts.properties
==================================================================
--- src/org/mifos/application/reports/resources/reportproducts.properties	(revision 12249)

+++ src/org/mifos/application/reports/resources/reportproducts.properties	(patch commit-11012008a level 1)

@@ -0,0 +1,2 @@

+loan.product.ids=1, 2

+savings.product.ids=5, 7

Index: src/org/mifos/application/reports/ui	(new directory)
==================================================================
Index: src/org/mifos/application/reports/ui/DateSelectionItem.hbm.xml
==================================================================
--- src/org/mifos/application/reports/ui/DateSelectionItem.hbm.xml	(revision 12249)

+++ src/org/mifos/application/reports/ui/DateSelectionItem.hbm.xml	(patch commit-11012008a level 1)

@@ -0,0 +1,28 @@

+<?xml version="1.0" encoding='UTF-8'?>

+<!DOCTYPE hibernate-mapping PUBLIC

+                            "-//Hibernate/Hibernate Mapping DTD 3.0//EN"

+                            "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >

+<hibernate-mapping>

+	<class name="org.mifos.application.reports.ui.DateSelectionItem"

+		mutable="false">

+		<id name="date" type="date" access="field" />

+	</class>

+	<sql-query name="DateSelectionItem.get_meeting_dates">

+		<return alias="dateItem"

+			class="org.mifos.application.reports.ui.DateSelectionItem"

+			 />

+		<![CDATA[

+			SELECT DISTINCT(COLL_SHEET.COLL_SHEET_DATE) as {dateItem.date}

+			  	from COLL_SHEET, COLL_SHEET_CUSTOMER

+				where COLL_SHEET_CUSTOMER.COLL_SHEET_ID=COLL_SHEET.COLL_SHEET_ID

+				and COLL_SHEET.STATUS_FLAG=:COLL_SHEET_RUN_STATUS

+				and COLL_SHEET_CUSTOMER.CUST_ID=:customerId

+				and COLL_SHEET_CUSTOMER.CUST_LEVEL=:CUSTOMER_LEVEL

+				and COLL_SHEET_CUSTOMER.CUST_OFFICE_ID=:branchId

+				and COLL_SHEET_CUSTOMER.LOAN_OFFICER_ID=:loanOfficerId

+				and COLL_SHEET.COLL_SHEET_DATE>:fromDate

+				order by COLL_SHEET.COLL_SHEET_DATE desc

+		]]>

+	</sql-query>

+	<!--DATE_FORMAT(COLL_SHEET.COLL_SHEET_DATE, '%d/%m/%Y') as {dateItem.displayDate-->

+</hibernate-mapping>

\ No newline at end of file

Index: src/org/mifos/application/reports/ui/DateSelectionItem.java
==================================================================
--- src/org/mifos/application/reports/ui/DateSelectionItem.java	(revision 12249)

+++ src/org/mifos/application/reports/ui/DateSelectionItem.java	(patch commit-11012008a level 1)

@@ -0,0 +1,80 @@

+package org.mifos.application.reports.ui;

+

+import static org.mifos.application.reports.util.helpers.ReportsConstants.NA_DATE;

+import static org.mifos.application.reports.util.helpers.ReportsConstants.NOT_APPLICABLE_DISPLAY_NAME;

+

+import java.io.Serializable;

+import java.text.DateFormat;

+import java.text.SimpleDateFormat;

+import java.util.Date;

+

+import org.mifos.framework.util.LocalizationConverter;

+

+public class DateSelectionItem implements Serializable {

+

+	private static final SimpleDateFormat DEFAULT_DATE_FORMAT = new SimpleDateFormat(

+			"dd/MM/yyyy");

+	public static final DateSelectionItem NA_MEETING_DATE = new DateSelectionItem(

+			NA_DATE, NOT_APPLICABLE_DISPLAY_NAME);

+

+	private Date date;

+	private String displayDate;

+	// For Hibernate

+	public DateSelectionItem() {

+		super();

+	}

+

+	public DateSelectionItem(Date date) {

+		this.date = date;

+	}

+

+	public DateSelectionItem(Date date, String display) {

+		this.date = date;

+		this.displayDate = display;

+	}

+

+	private DateFormat getDateFormat() {

+		DateFormat dateFormat;

+		try {

+			dateFormat = LocalizationConverter.getInstance().getDateFormat();

+		}

+		catch (RuntimeException e) {

+			dateFormat = DEFAULT_DATE_FORMAT;

+		}

+		return dateFormat;

+	}

+

+	public Date getDate() {

+		return date;

+	}

+

+	public String getDisplayDate() {

+		return displayDate != null ? displayDate : getDateFormat().format(date);

+	}

+

+	@Override

+	public int hashCode() {

+		final int PRIME = 31;

+		int result = 1;

+		result = PRIME * result + ((date == null) ? 0 : date.hashCode());

+		return result;

+	}

+

+	@Override

+	public boolean equals(Object obj) {

+		if (this == obj)

+			return true;

+		if (obj == null)

+			return false;

+		if (getClass() != obj.getClass())

+			return false;

+		final DateSelectionItem other = (DateSelectionItem) obj;

+		if (date == null) {

+			if (other.date != null)

+				return false;

+		}

+		else if (!date.equals(other.date))

+			return false;

+		return true;

+	}

+}

Index: src/org/mifos/application/reports/ui/SelectionItem.hbm.xml
==================================================================
--- src/org/mifos/application/reports/ui/SelectionItem.hbm.xml	(revision 12249)

+++ src/org/mifos/application/reports/ui/SelectionItem.hbm.xml	(patch commit-11012008a level 1)

@@ -0,0 +1,41 @@

+<?xml version="1.0" encoding='UTF-8'?>

+<!DOCTYPE hibernate-mapping PUBLIC

+                            "-//Hibernate/Hibernate Mapping DTD 3.0//EN"

+                            "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >

+<hibernate-mapping>

+	<class name="org.mifos.application.reports.ui.SelectionItem">

+		<composite-id>

+		<key-property name="id" type="short" access="field" />

+		<key-property name="displayName" type="string" access="field" />

+		</composite-id>

+	</class>

+	<sql-query name="SelectionItem.get_active_offices">

+		<return alias="branchOffice"

+			class="org.mifos.application.reports.ui.SelectionItem" />

+		<![CDATA[

+			SELECT OFFICE_ID as {branchOffice.id}, DISPLAY_NAME as {branchOffice.displayName} from office 

+				where SEARCH_ID like :officeSearchId and

+				OFFICE_LEVEL_ID=:officeLevelId and STATUS_ID=:ACTIVE order by office.DISPLAY_NAME

+		]]>

+	</sql-query>

+	<sql-query

+		name="SelectionItem.get_active_loanofficers_under_office">

+		<return alias="loanOfficer"

+			class="org.mifos.application.reports.ui.SelectionItem" />

+		<![CDATA[SELECT PERSONNEL_ID as {loanOfficer.id}, DISPLAY_NAME as {loanOfficer.displayName} from PERSONNEL 

+	        	   	where PERSONNEL.LEVEL_ID=:personnelLevelId and 

+	    			PERSONNEL.OFFICE_ID=:officeId and PERSONNEL.PERSONNEL_STATUS=:ACTIVE

+	         		order by PERSONNEL.DISPLAY_NAME]]>

+	</sql-query>

+	<sql-query

+		name="SelectionItem.get_active_customers_under_loanofficers">

+		<return alias="center"

+			class="org.mifos.application.reports.ui.SelectionItem" />

+		<![CDATA[SELECT CUSTOMER_ID as {center.id}, DISPLAY_NAME as {center.displayName} from CUSTOMER 

+  	   				where CUSTOMER.LOAN_OFFICER_ID=:personnelId and 

+  	   				CUSTOMER.BRANCH_ID=:officeId and 

+  	   				CUSTOMER.CUSTOMER_LEVEL_ID=:customerLevelId 

+  	   				and CUSTOMER.STATUS_ID=:ACTIVE

+		]]>

+	</sql-query>

+</hibernate-mapping>

\ No newline at end of file

Index: src/org/mifos/application/reports/ui/SelectionItem.java
==================================================================
--- src/org/mifos/application/reports/ui/SelectionItem.java	(revision 12249)

+++ src/org/mifos/application/reports/ui/SelectionItem.java	(patch commit-11012008a level 1)

@@ -0,0 +1,101 @@

+package org.mifos.application.reports.ui;

+

+import static org.mifos.application.reports.util.helpers.ReportsConstants.ALL_DISPLAY_NAME;

+import static org.mifos.application.reports.util.helpers.ReportsConstants.ALL_ID;

+import static org.mifos.application.reports.util.helpers.ReportsConstants.NOT_APPLICABLE_DISPLAY_NAME;

+import static org.mifos.application.reports.util.helpers.ReportsConstants.NOT_APPLICABLE_ID;

+import static org.mifos.application.reports.util.helpers.ReportsConstants.SELECT_DISPLAY_NAME;

+import static org.mifos.application.reports.util.helpers.ReportsConstants.SELECT_ID;

+import static org.mifos.framework.util.helpers.NumberUtils.convertIntegerToShort;

+

+import java.io.Serializable;

+

+public class SelectionItem implements Serializable {

+	public static final SelectionItem ALL_LOAN_OFFICER_SELECTION_ITEM = new SelectionItem(

+			ALL_ID, ALL_DISPLAY_NAME);

+	public static final SelectionItem SELECT_LOAN_OFFICER_SELECTION_ITEM = new SelectionItem(

+			SELECT_ID, SELECT_DISPLAY_NAME);

+	public static final SelectionItem NA_LOAN_OFFICER_SELECTION_ITEM = new SelectionItem(

+			NOT_APPLICABLE_ID, NOT_APPLICABLE_DISPLAY_NAME);

+

+	public static final SelectionItem SELECT_BRANCH_OFFICE_SELECTION_ITEM = new SelectionItem(

+			SELECT_ID, SELECT_DISPLAY_NAME);

+	public static final SelectionItem NA_BRANCH_OFFICE_SELECTION_ITEM = new SelectionItem(

+			NOT_APPLICABLE_ID, NOT_APPLICABLE_DISPLAY_NAME);

+	public static final SelectionItem ALL_CENTER_SELECTION_ITEM = new SelectionItem(ALL_ID,

+			ALL_DISPLAY_NAME);

+	public static final SelectionItem NA_CENTER_SELECTION_ITEM = new SelectionItem(

+			NOT_APPLICABLE_ID, NOT_APPLICABLE_DISPLAY_NAME);

+	public static final SelectionItem SELECT_CENTER_SELECTION_ITEM = new SelectionItem(

+			SELECT_ID, SELECT_DISPLAY_NAME);

+	

+	public static final SelectionItem SELECT_GROUP_SELECTION_ITEM = new SelectionItem(

+			SELECT_ID, SELECT_DISPLAY_NAME);	

+	public static final SelectionItem NA_GROUP_SELECTION_ITEM = new SelectionItem(

+			NOT_APPLICABLE_ID,NOT_APPLICABLE_DISPLAY_NAME);	

+	public static final SelectionItem ALL_GROUP_SELECTION_ITEM = new SelectionItem(

+			ALL_ID, ALL_DISPLAY_NAME);	

+

+	private String displayName;

+	private Short id;

+

+	public SelectionItem(Short id, String displayName) {

+		super();

+		this.displayName = displayName;

+		this.id = id;

+	}

+

+	public SelectionItem() {

+		super();

+	}

+

+	public Short getId() {

+		return id;

+	}

+

+	public String getDisplayName() {

+		return displayName;

+	}

+

+	@Override

+	public int hashCode() {

+		final int PRIME = 31;

+		int result = 1;

+		result = PRIME * result + ((displayName == null) ? 0 : displayName.hashCode());

+		result = PRIME * result + ((id == null) ? 0 : id.hashCode());

+		return result;

+	}

+

+	@Override

+	public boolean equals(Object obj) {

+		if (this == obj)

+			return true;

+		if (obj == null)

+			return false;

+		if (getClass() != obj.getClass())

+			return false;

+		final SelectionItem other = (SelectionItem) obj;

+		if (displayName == null) {

+			if (other.displayName != null)

+				return false;

+		}

+		else if (!displayName.equals(other.displayName))

+			return false;

+		if (id == null) {

+			if (other.id != null)

+				return false;

+		}

+		else if (!id.equals(other.id))

+			return false;

+		return true;

+	}

+

+	public boolean sameAs(Integer id) {

+		return this.id.equals(convertIntegerToShort(id));

+	}

+

+	public boolean sameAs(Short id) {

+		return this.id.equals(id);

+	}

+

+}

Index: src/org/mifos/config/applicationContext.xml
==================================================================
--- src/org/mifos/config/applicationContext.xml	(revision 12249)

+++ src/org/mifos/config/applicationContext.xml	(patch commit-11012008a level 1)

@@ -3,7 +3,6 @@

 	xmlns="http://www.springframework.org/schema/beans"

 	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

 	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">

-

     <!-- This MessageSource will load localized text from external

          resource bundle files  -->

     <bean id="messageSource"

@@ -13,6 +12,7 @@

         <property name="basenames">

             <list>

                 <value>org/mifos/config/resources/MessageLookupMessages</value>

+                <value>org/mifos/config/resources/reporterrors</value>

             </list>

         </property>

     </bean>

@@ -76,5 +76,4 @@

             </map>

         </property>

     </bean>

-    

 </beans>

\ No newline at end of file

Index: src/org/mifos/config/resources/reporterrors.properties
==================================================================
--- src/org/mifos/config/resources/reporterrors.properties	(revision 12249)

+++ src/org/mifos/config/resources/reporterrors.properties	(patch commit-11012008a level 1)

@@ -0,0 +1,5 @@

+branchId.invalid = Select a valid Branch

+centerId.invalid = Select a valid Center

+loanOfficerId.invalid = Select a valid Loan Officer

+meetingDate.invalid = Select a valid Meeting Date

+loanProductId.invalid = Select a valid Loan Product

Index: src/org/mifos/config/reportServices.xml
==================================================================
--- src/org/mifos/config/reportServices.xml	(revision 12249)

+++ src/org/mifos/config/reportServices.xml	(patch commit-11012008a level 1)

@@ -0,0 +1,93 @@

+<beans xmlns="http://www.springframework.org/schema/beans"

+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

+	xmlns:ehcache="http://www.springmodules.org/schema/ehcache"

+	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd

+	http://www.springmodules.org/schema/ehcache http://www.springmodules.org/schema/cache/springmodules-ehcache.xsd">

+	<bean id="cacheManager"

+		class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean">

+		<property name="configLocation">

+			<value>classpath:conf/ehcache.xml</value>

+		</property>

+	</bean>

+	<bean id="cacheProviderFacade"

+		class="org.springmodules.cache.provider.ehcache.EhCacheFacade">

+		<property name="cacheManager" ref="cacheManager" />

+	</bean>

+	<bean id="collectionSheetService"

+		class="org.mifos.application.reports.business.service.CollectionSheetService" />

+	<bean id="officeBusinessService"

+		class="org.mifos.application.office.business.service.OfficeBusinessService" />

+	<bean id="personnelBusinessService"

+		class="org.mifos.application.personnel.business.service.PersonnelBusinessService" />

+	<bean id="customerBusinessService"

+		class="org.mifos.application.customer.business.service.CustomerBusinessService" />

+	<bean id="accountBusinessService"

+		class="org.mifos.application.accounts.business.service.AccountBusinessService" />

+	<bean id="loanPrdBusinessService"

+		class="org.mifos.application.productdefinition.business.service.LoanPrdBusinessService" />

+	<bean id="savingsPrdBusinessService"

+		class="org.mifos.application.productdefinition.business.service.SavingsPrdBusinessService" />

+	<bean id="reportProductOfferingService"

+		class="org.mifos.application.reports.business.service.ReportProductOfferingService" />

+

+	<bean id="selectionItemPersistence"

+		class="org.mifos.application.reports.persistence.SelectionItemPersistence" />

+	<bean id="dateSelectionItemPersistence"

+		class="org.mifos.application.reports.persistence.DateSelectionItemPersistence" />

+	<bean id="reportParameterService"

+		class="org.mifos.application.reports.business.service.ReportsParameterService">

+		<constructor-arg ref="selectionItemPersistence" />

+		<constructor-arg ref="dateSelectionItemPersistence" />

+	</bean>

+	<bean id="reportParameterServiceProxy"

+		class="org.springmodules.cache.interceptor.proxy.CacheProxyFactoryBean">

+		<property name="cacheProviderFacade" ref="cacheProviderFacade" />

+		<property name="cachingModels">

+			<props>

+				<prop key="get*">

+					cacheName=org.mifos.application.reports.business.service.cache

+				</prop>

+			</props>

+		</property>

+		<property name="flushingModels">

+			<props>

+				<prop key="invalidate">

+					cacheNames=org.mifos.application.reports.business.service.cache

+				</prop>

+			</props>

+		</property>

+		<property name="target" ref="reportParameterService" />

+	</bean>

+	<bean id="defaultCollectionSheetReportService"

+		class="org.mifos.application.reports.business.service.CollectionSheetReportService">

+		<constructor-arg ref="collectionSheetService" />

+		<constructor-arg ref="officeBusinessService" />

+		<constructor-arg ref="personnelBusinessService" />

+		<constructor-arg ref="customerBusinessService" />

+		<constructor-arg ref="accountBusinessService" />

+		<constructor-arg ref="loanPrdBusinessService" />

+		<constructor-arg ref="savingsPrdBusinessService" />

+		<constructor-arg ref="reportProductOfferingService" />

+		<!--<constructor-arg ref="reportParameterServiceProxy" />-->

+		<constructor-arg>

+			<bean factory-method="decorate"

+				class="org.mifos.framework.business.service.ServiceDecoratorFactory">

+				<constructor-arg

+					type="org.mifos.application.reports.business.service.IReportsParameterService"

+					ref="reportParameterServiceProxy" />

+			</bean>

+		</constructor-arg>

+	</bean>

+	<bean id="collectionSheetReportService" factory-method="decorate"

+		class="org.mifos.framework.business.service.ServiceDecoratorFactory">

+		<constructor-arg

+			type="org.mifos.application.reports.business.service.ICollectionSheetReportService"

+			ref="defaultCollectionSheetReportService" />

+		<constructor-arg>

+			<bean

+				class="org.mifos.framework.components.logger.ServiceLogger">

+				<constructor-arg value="CollectionSheetReportService" />

+			</bean>

+		</constructor-arg>

+	</bean>

+</beans>

\ No newline at end of file

Index: src/org/mifos/doc-root/application/reports/jsp/birtReport.jsp
==================================================================
--- src/org/mifos/doc-root/application/reports/jsp/birtReport.jsp	(revision 12249)

+++ src/org/mifos/doc-root/application/reports/jsp/birtReport.jsp	(patch commit-11012008a level 1)

@@ -5,6 +5,6 @@

 

 <tiles:insert definition=".reportRender">

 <tiles:put name="body" type="string">

-    <iframe style="border:none; padding:0px;" width="1024px" height="100%" frameborder=0 src="<c:url value='/run' />?__report=report/<c:out value='${reportFile}' />&reportName=<c:out value='${reportName}' />&userId=<c:out value='${sessionScope.UserContext.id}'/>&__format=pdf"></iframe>

+	<iframe style="border:none; padding:0px;" width="1024px" height="100%" frameborder=0 src="<c:url value='/birtReports' />?__report=report/<c:out value='${reportFile}' />&reportName=<c:out value='${reportName}' />&userId=<c:out value='${sessionScope.UserContext.id}'/>&__format=pdf"></iframe>

 </tiles:put>

 </tiles:insert>

Index: src/org/mifos/framework/business/service/ServiceDecoratorFactory.java
==================================================================
--- src/org/mifos/framework/business/service/ServiceDecoratorFactory.java	(revision 12249)

+++ src/org/mifos/framework/business/service/ServiceDecoratorFactory.java	(patch commit-11012008a level 1)

@@ -0,0 +1,32 @@

+package org.mifos.framework.business.service;

+

+import java.lang.reflect.Proxy;

+

+import org.mifos.application.reports.business.service.ICollectionSheetReportService;

+import org.mifos.application.reports.business.service.IReportsParameterService;

+import org.mifos.framework.components.logger.ServiceLogger;

+

+public class ServiceDecoratorFactory {

+	private static Object newInstance(Object obj, ServiceLogger logger) {

+		return Proxy.newProxyInstance(obj.getClass().getClassLoader(), obj

+				.getClass().getInterfaces(), new ServiceProxy(obj

+				, logger));

+	}

+

+	public static ICollectionSheetReportService decorate(

+			ICollectionSheetReportService service, ServiceLogger logger) {

+		return (ICollectionSheetReportService) newInstance(service, logger);

+	}

+

+	public static IReportsParameterService decorate(

+			IReportsParameterService service) {

+		return (IReportsParameterService) newInstance(service, ServiceLogger.MUTED_LOGGER);

+	}

+	

+	//  this generic implementation is not working with spring container, not sure why, but would love to have 

+	//	this in place instead of the above specific method	

+	//	public static<T> T getLoggerWrappedService(

+	//			T service) {

+	//		return (T) newInstance(service);

+	//	}

+}

Index: src/org/mifos/framework/business/service/ServiceProxy.java
==================================================================
--- src/org/mifos/framework/business/service/ServiceProxy.java	(revision 12249)

+++ src/org/mifos/framework/business/service/ServiceProxy.java	(patch commit-11012008a level 1)

@@ -0,0 +1,36 @@

+package org.mifos.framework.business.service;

+

+import java.lang.reflect.InvocationHandler;

+import java.lang.reflect.InvocationTargetException;

+import java.lang.reflect.Method;

+

+import org.mifos.framework.components.logger.ServiceLogger;

+

+public class ServiceProxy implements InvocationHandler {

+	private Object service;

+	private final ServiceLogger logger;

+

+	ServiceProxy(Object service, ServiceLogger logger) {

+		this.service = service;

+		this.logger = logger;

+	}

+

+	public Object invoke(Object proxy, Method method, Object[] args) {

+		Object result = null;

+		try {

+			logger.startOfServiceCall(method, args);

+			result = method.invoke(service, args);

+			logger.endOfServiceCall(method, args);

+		}

+		catch (InvocationTargetException e) {

+			throw new RuntimeException(e);

+		}

+		catch (IllegalArgumentException e) {

+			throw new RuntimeException(e);

+		}

+		catch (IllegalAccessException e) {

+			throw new RuntimeException(e);

+		}

+		return result;

+	}

+}

Index: src/org/mifos/framework/components/batchjobs/helpers/CollectionSheetReportParameterCachingHelper.java
==================================================================
--- src/org/mifos/framework/components/batchjobs/helpers/CollectionSheetReportParameterCachingHelper.java	(revision 12249)

+++ src/org/mifos/framework/components/batchjobs/helpers/CollectionSheetReportParameterCachingHelper.java	(patch commit-11012008a level 1)

@@ -0,0 +1,96 @@

+/**

+

+ * CollectionSheetHelper.java    version: 1.0

+

+ 

+

+ * Copyright (c) 2005-2006 Grameen Foundation USA

+

+ * 1029 Vermont Avenue, NW, Suite 400, Washington DC 20005

+

+ * All rights reserved.

+

+ 

+

+ * Apache License 

+ * Copyright (c) 2005-2006 Grameen Foundation USA 

+ * 

+

+ * Licensed 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. 

+ * 

+ * See also http://www.apache.org/licenses/LICENSE-2.0.html for an explanation of the license 

+

+ * and how it is applied.  

+

+ *

+

+ */

+package org.mifos.framework.components.batchjobs.helpers;

+

+import static org.mifos.framework.util.helpers.NumberUtils.convertShortToInteger;

+

+import java.util.List;

+

+import org.mifos.application.office.business.OfficeBO;

+import org.mifos.application.office.business.service.OfficeBusinessService;

+import org.mifos.application.reports.business.service.CollectionSheetReportServiceFactory;

+import org.mifos.application.reports.business.service.ICollectionSheetReportService;

+import org.mifos.application.reports.ui.SelectionItem;

+import org.mifos.framework.components.batchjobs.MifosTask;

+import org.mifos.framework.components.batchjobs.TaskHelper;

+import org.mifos.framework.components.batchjobs.exceptions.BatchJobException;

+import org.mifos.framework.exceptions.PersistenceException;

+import org.mifos.framework.exceptions.ServiceException;

+import org.mifos.framework.util.helpers.NumberUtils;

+

+public class CollectionSheetReportParameterCachingHelper extends TaskHelper {

+

+	private static final Integer MIFOS_USER_ID = new Integer(1);

+

+	public CollectionSheetReportParameterCachingHelper(MifosTask mifosTask) {

+		super(mifosTask);

+	}

+

+	@Override

+	public void execute(long timeInMillis) throws BatchJobException {

+		ICollectionSheetReportService collectionSheetService = CollectionSheetReportServiceFactory

+				.getCacheEnabledCollectionSheetReportService();

+		collectionSheetService.invalidateCachedReportParameters();

+		try {

+			List<OfficeBO> branchOffices = new OfficeBusinessService()

+					.getBranchOffices();

+			for (OfficeBO branchOffice : branchOffices) {

+

+				Integer officeId = NumberUtils

+						.convertShortToInteger(branchOffice.getOfficeId());

+				collectionSheetService.getActiveLoanOfficers(MIFOS_USER_ID,

+						officeId);

+				Integer allLoanOfficerId = convertShortToInteger(SelectionItem.ALL_LOAN_OFFICER_SELECTION_ITEM

+						.getId());

+				collectionSheetService.getActiveCentersForLoanOfficer(

+						allLoanOfficerId, officeId);

+				collectionSheetService

+						.getMeetingDatesForCenter(

+								officeId,

+								convertShortToInteger(SelectionItem.ALL_GROUP_SELECTION_ITEM

+										.getId()), allLoanOfficerId);

+			}

+		}

+		catch (ServiceException e) {

+			throw new BatchJobException(e);

+		}

+		catch (PersistenceException e) {

+			throw new BatchJobException(e);

+		}

+	}

+}

Index: src/org/mifos/framework/components/batchjobs/helpers/CollectionSheetReportParameterCachingTask.java
==================================================================
--- src/org/mifos/framework/components/batchjobs/helpers/CollectionSheetReportParameterCachingTask.java	(revision 12249)

+++ src/org/mifos/framework/components/batchjobs/helpers/CollectionSheetReportParameterCachingTask.java	(patch commit-11012008a level 1)

@@ -0,0 +1,13 @@

+package org.mifos.framework.components.batchjobs.helpers;

+

+import org.mifos.framework.components.batchjobs.MifosTask;

+import org.mifos.framework.components.batchjobs.TaskHelper;

+

+public class CollectionSheetReportParameterCachingTask extends MifosTask {

+	

+	@Override

+	public TaskHelper getTaskHelper() {

+		return new CollectionSheetReportParameterCachingHelper(this);

+	}

+

+}

Index: src/org/mifos/framework/components/logger/ServiceLogger.java
==================================================================
--- src/org/mifos/framework/components/logger/ServiceLogger.java	(revision 12249)

+++ src/org/mifos/framework/components/logger/ServiceLogger.java	(patch commit-11012008a level 1)

@@ -0,0 +1,56 @@

+package org.mifos.framework.components.logger;

+

+import java.lang.reflect.Method;

+import java.util.Arrays;

+import java.util.Date;

+

+public class ServiceLogger {

+

+	public static final ServiceLogger MUTED_LOGGER = new ServiceLogger() {

+		@Override

+		public void endOfServiceCall(Method method, Object[] args) {}

+

+		@Override

+		public void startOfServiceCall(Method method, Object[] args) {}

+	};

+	

+	public static final ServiceLogger ARGS_LOGGER = new ServiceLogger() {

+		@Override

+		public void endOfServiceCall(Method method, Object[] args) {}

+

+		@Override

+		public void startOfServiceCall(Method method, Object[] args) {

+			logger.error(method.getName()+":"+Arrays.toString(args));

+			for (Object arg : args) {

+				if (arg instanceof Date) {

+					logger.error("Date"+((Date)arg).getTime());

+				}

+			}

+		}

+	};

+	

+	protected final String serviceName;

+	protected MifosLogger logger;

+	private long startTime;

+

+	public ServiceLogger() {

+		this(null);

+	}

+

+	public ServiceLogger(String serviceName) {

+		this.serviceName = serviceName;

+		logger = MifosLogManager.getLogger(LoggerConstants.FRAMEWORKLOGGER);

+	}

+

+	public void startOfServiceCall(Method method, Object[] args) {

+		logger.info("Calling Service  : " + serviceName + " "

+				+ method.getName());

+		startTime = System.currentTimeMillis();

+	}

+

+	public void endOfServiceCall(Method method, Object[] args) {

+		logger.info("Finished Service : "

+				+ (System.currentTimeMillis() - startTime) + " " + serviceName

+				+ " " + method.getName());

+	}

+}

Index: src/org/mifos/framework/persistence/DatabaseVersionPersistence.java
==================================================================
--- src/org/mifos/framework/persistence/DatabaseVersionPersistence.java	(revision 12249)

+++ src/org/mifos/framework/persistence/DatabaseVersionPersistence.java	(patch commit-11012008a level 1)

@@ -16,7 +16,7 @@

 import org.mifos.application.accounts.util.helpers.AccountActionTypes;

 import org.mifos.application.accounts.util.helpers.AccountStateFlag;

 import org.mifos.application.holiday.persistence.Upgrade104;

-import org.mifos.application.master.persistence.Upgrade167;

+//import org.mifos.application.master.persistence.Upgrade167;

 import org.mifos.application.master.persistence.Upgrade169;

 import org.mifos.application.productsmix.persistence.Upgrade127;

 import org.mifos.application.reports.business.ReportsCategoryBO;

@@ -67,7 +67,7 @@

 		register144(register);

 		register145(register);

 		register146(register);

-		register(register, new Upgrade167());

+//		register(register, new Upgrade167());

 		register(register, new Upgrade169());

 		return Collections.unmodifiableMap(register);

 	}

Index: src/org/mifos/framework/util/helpers/DateUtils.java
==================================================================
--- src/org/mifos/framework/util/helpers/DateUtils.java	(revision 12249)

+++ src/org/mifos/framework/util/helpers/DateUtils.java	(patch commit-11012008a level 1)

@@ -57,13 +57,17 @@

 
 
 public class DateUtils {
-	
+
 	// three different types of date direction validation
-	public enum DIRECTION {FUTURE, PAST, NONE}
+	public enum DIRECTION {
+		FUTURE, PAST, NONE
+	}
 
 	private final static String dbFormat = "yyyy-MM-dd";
-	private final static Locale internalLocale = Localization.getInstance().getMainLocale(); 
-	private static String dateSeparator = LocalizationConverter.getInstance().getDateSeparatorForCurrentLocale();
+	private final static Locale internalLocale = Localization.getInstance()
+			.getMainLocale();
+	private static String dateSeparator = LocalizationConverter.getInstance()
+			.getDateSeparatorForCurrentLocale();
 
 	public static String convertUserToDbFmt(String userDate, String userPattern) {
 		try {
@@ -76,9 +80,8 @@

 			throw new InvalidDateException(userDate);
 		}
 	}
-	
-	public static String getDateSeparator()
-	{
+
+	public static String getDateSeparator() {
 		return dateSeparator;
 	}
 
@@ -89,15 +92,15 @@

 			SimpleDateFormat userFormat = new SimpleDateFormat(userPattern);
 			return userFormat.format(date);
 		}
-		
+
 		catch (ParseException e) {
 			throw new InvalidDateException(dbDate);
 		}
 	}
-	
+
 	public static String getUserLocaleDate(Locale locale, Date databaseDate) {
 		SimpleDateFormat shortFormat = (SimpleDateFormat) DateFormat
-			.getDateInstance(DateFormat.SHORT, locale);
+				.getDateInstance(DateFormat.SHORT, locale);
 		return shortFormat.format(databaseDate);
 	}
 
@@ -114,8 +117,8 @@

 				throw e;
 			}
 			catch (Exception e) {
-				System.out.println("databaseDate=" + databaseDate
-						+ ", locale=" + locale);
+				System.out.println("databaseDate=" + databaseDate + ", locale="
+						+ locale);
 				throw new FrameworkRuntimeException(e);
 			}
 		}
@@ -123,9 +126,10 @@

 			return "";
 		}
 	}
-	
+
 	public static String getUserLocaleDate(String databaseDate) {
-		if (internalLocale != null && databaseDate != null && !databaseDate.equals("")) {
+		if (internalLocale != null && databaseDate != null
+				&& !databaseDate.equals("")) {
 			try {
 				SimpleDateFormat shortFormat = (SimpleDateFormat) DateFormat
 						.getDateInstance(DateFormat.SHORT, internalLocale);
@@ -137,8 +141,8 @@

 				throw e;
 			}
 			catch (Exception e) {
-				System.out.println("databaseDate=" + databaseDate
-						+ ", locale=" + internalLocale);
+				System.out.println("databaseDate=" + databaseDate + ", locale="
+						+ internalLocale);
 				throw new FrameworkRuntimeException(e);
 			}
 		}
@@ -146,13 +150,14 @@

 			return "";
 		}
 	}
-	
 
+
 	public static java.util.Date getDate(String value) {
 		if (value != null && !value.equals("")) {
 			try {
-				
-				String formatStr = "dd" + dateSeparator + "MM" + dateSeparator + "yyyy";
+
+				String formatStr = "dd" + dateSeparator + "MM" + dateSeparator
+						+ "yyyy";
 				SimpleDateFormat format = new SimpleDateFormat(formatStr);
 				// Enable this once we've taken a bit more of a look
 				// at where this gets called, run the tests, etc.
@@ -169,7 +174,7 @@

 			return null;
 		}
 	}
-	
+
 	/**
 	 * Converts a string of a date in DB format ("yyyy-MM-dd") to a
 	 * {@link java.util.Date} object.
@@ -184,12 +189,12 @@

 				return format.parse(date);
 			}
 			catch (ParseException e) {
-			throw new RuntimeException(e);
+				throw new RuntimeException(e);
 			}
-		} else
-			return null;
+		}
+		else return null;
 	}
-	
+
 	public static String getCurrentDate() {
 		Calendar currentCalendar = new GregorianCalendar();
 		int year = currentCalendar.get(Calendar.YEAR);
@@ -254,8 +259,9 @@

 		String month = "";
 		String year = "";
 		String token;
-		String separator = LocalizationConverter.getInstance().getDateSeparatorForCurrentLocale();
-		
+		String separator = LocalizationConverter.getInstance()
+				.getDateSeparatorForCurrentLocale();
+
 		MFIfmt = convertToDateTagFormat(MFIfmt);
 		StringTokenizer stfmt = new StringTokenizer(format, separator);
 		StringTokenizer stdt = new StringTokenizer(date, separator);
@@ -276,15 +282,19 @@

 	}
 
 	// parse new-style browser date format... separate m,d,y fields, no js assembling
-	public static java.sql.Date parseBrowserDateFields(HttpServletRequest request, String property) throws InvalidDateException {
+	public static java.sql.Date parseBrowserDateFields(
+			HttpServletRequest request, String property)
+			throws InvalidDateException {
 		String yearStr = request.getParameter(property + "YY");
 		String monthStr = request.getParameter(property + "MM");
 		String dayStr = request.getParameter(property + "DD");
 		return parseBrowserDateFields(yearStr, monthStr, dayStr);
 	}
-	
-	public static java.sql.Date parseBrowserDateFields(String yearStr, String monthStr, String dayStr) {
-		return getDateAsSentFromBrowser(dayStr + dateSeparator + monthStr + dateSeparator + yearStr);
+
+	public static java.sql.Date parseBrowserDateFields(String yearStr,
+			String monthStr, String dayStr) {
+		return getDateAsSentFromBrowser(dayStr + dateSeparator + monthStr
+				+ dateSeparator + yearStr);
 	}
 
 	/**
@@ -298,12 +308,13 @@

 		}
 		try {
 			String formatStr = "d" + dateSeparator + "M" + dateSeparator + "yy";
-			SimpleDateFormat format = new SimpleDateFormat(formatStr, internalLocale);
-			
+			SimpleDateFormat format = new SimpleDateFormat(formatStr,
+					internalLocale);
+
 			format.setLenient(false);
 			return new java.sql.Date(format.parse(value).getTime());
 		}
-		
+
 		catch (ParseException e) {
 			throw new InvalidDateException(value);
 		}
@@ -314,7 +325,7 @@

 	public static boolean isValidDate(String value) {
 		try {
 			SimpleDateFormat shortFormat = (SimpleDateFormat) DateFormat
-					.getDateInstance(DateFormat.SHORT, internalLocale); 
+					.getDateInstance(DateFormat.SHORT, internalLocale);
 			shortFormat.setLenient(false);
 			shortFormat.parse(value);
 			return true;
@@ -324,7 +335,7 @@

 			return false;
 		}
 	}
-	
+
 	public static java.sql.Date getLocaleDate(String value) {
 		if (internalLocale != null && value != null && !value.equals("")) {
 			try {
@@ -372,20 +383,20 @@

 	public static String getMFIFormat() {
 		// TODO change this to pick from app config
 		String formatStr = "dd" + dateSeparator + "mm" + dateSeparator + "yy";
-		
+
 		return formatStr;
 	}
 
 	public static String getMFIShortFormat() {
 		String formatStr = "dd" + dateSeparator + "mm" + dateSeparator + "yy";
-		
+
 		return formatStr;
 	}
 
 	public static String convertToDateTagFormat(String pattern) {
 		char chArray[] = pattern.toCharArray();
 		String separator = dateSeparator;
-		
+
 		StringBuilder fmt = new StringBuilder();
 		boolean d = false;
 		boolean m = false;
@@ -423,7 +434,7 @@

 	public static String createDateString(String day, String month,
 			String year, String format) {
 		String separator = dateSeparator;
-		
+
 		StringTokenizer stfmt = new StringTokenizer(format, separator);
 		String token;
 		StringBuilder dt = new StringBuilder();
@@ -509,7 +520,7 @@

 		int result = date.compareTo(currentDate);
 		return result;
 	}
-	
+
 	public static String makeDateAsSentFromBrowser() {
 		Date date = new Date();
 		return makeDateAsSentFromBrowser(date);
@@ -517,12 +528,13 @@

 
 	public static String makeDateAsSentFromBrowser(Date date) {
 		String formatStr = "d" + dateSeparator + "M" + dateSeparator + "yyyy";
-		
+
 		SimpleDateFormat format = new SimpleDateFormat(formatStr,
 				internalLocale);
 		return format.format(date);
 	}
 
+
 	/**
 	 * Nothing to instantiate here.
 	 */
@@ -537,7 +549,7 @@

 		currentDateCalendar = new GregorianCalendar(year, month, day);
 		return new Date(currentDateCalendar.getTimeInMillis());
 	}
-	
+
 	public static Date getDateWithoutTimeStamp(long timeInMills) {
 		Calendar dateCalendar = new GregorianCalendar();
 		dateCalendar.setTimeInMillis(timeInMills);
@@ -547,67 +559,72 @@

 		dateCalendar = new GregorianCalendar(year, month, day);
 		return new Date(dateCalendar.getTimeInMillis());
 	}
-	
+
 	public static Calendar getCalendarDate(long timeInMills) {
 		Calendar dateCalendar = new GregorianCalendar();
 		dateCalendar.setTimeInMillis(timeInMills);
 		return dateCalendar;
 	}
 
-	public static Date getLastDayOfCurrentYear(){
+	public static Date getLastDayOfCurrentYear() {
 		Calendar cal = Calendar.getInstance();
-		cal.set(Calendar.MONTH,Calendar.DECEMBER);
+		cal.set(Calendar.MONTH, Calendar.DECEMBER);
 		cal.set(Calendar.DAY_OF_MONTH, cal.getActualMaximum(Calendar.DATE));
 		Calendar cal1 = Calendar.getInstance();
-		cal1.set(cal.get(Calendar.YEAR),cal.get(Calendar.MONTH),cal.get(Calendar.DATE),0,0,0);
+		cal1.set(cal.get(Calendar.YEAR), cal.get(Calendar.MONTH), cal
+				.get(Calendar.DATE), 0, 0, 0);
 		return new Date(cal1.getTimeInMillis());
 	}
-	
-	public static Calendar getFistDayOfNextYear(Calendar cal){
-		cal.roll(Calendar.YEAR,1);
-		cal.set(Calendar.MONTH,Calendar.JANUARY);
+
+	public static Calendar getFistDayOfNextYear(Calendar cal) {
+		cal.roll(Calendar.YEAR, 1);
+		cal.set(Calendar.MONTH, Calendar.JANUARY);
 		cal.set(Calendar.DAY_OF_MONTH, cal.getActualMinimum(Calendar.DATE));
 		Calendar cal1 = Calendar.getInstance();
-		cal1.set(cal.get(Calendar.YEAR),cal.get(Calendar.MONTH),cal.get(Calendar.DATE),0,0,0);
+		cal1.set(cal.get(Calendar.YEAR), cal.get(Calendar.MONTH), cal
+				.get(Calendar.DATE), 0, 0, 0);
 		return cal1;
 	}
-	
-	public static Date getLastDayOfNextYear(){
+
+	public static Date getLastDayOfNextYear() {
 		Calendar cal = GregorianCalendar.getInstance();
-		cal.set(Calendar.MONTH,Calendar.DECEMBER);
+		cal.set(Calendar.MONTH, Calendar.DECEMBER);
 		cal.set(Calendar.DAY_OF_MONTH, cal.getActualMaximum(Calendar.DATE));
 		Calendar cal1 = Calendar.getInstance();
-		cal1.set(cal.get(Calendar.YEAR)+1,cal.get(Calendar.MONTH),cal.get(Calendar.DATE),0,0,0);
+		cal1.set(cal.get(Calendar.YEAR) + 1, cal.get(Calendar.MONTH), cal
+				.get(Calendar.DATE), 0, 0, 0);
 		return cal1.getTime();
 	}
-	
-	public static Calendar getLastDayOfYearAfterNextYear(){
+
+	public static Calendar getLastDayOfYearAfterNextYear() {
 		Calendar cal = GregorianCalendar.getInstance();
-		cal.set(Calendar.MONTH,Calendar.DECEMBER);
+		cal.set(Calendar.MONTH, Calendar.DECEMBER);
 		cal.set(Calendar.DAY_OF_MONTH, cal.getActualMaximum(Calendar.DATE));
 		Calendar cal1 = Calendar.getInstance();
-		cal1.set(cal.get(Calendar.YEAR)+2,cal.get(Calendar.MONTH),cal.get(Calendar.DATE),0,0,0);
+		cal1.set(cal.get(Calendar.YEAR) + 2, cal.get(Calendar.MONTH), cal
+				.get(Calendar.DATE), 0, 0, 0);
 		return cal1;
 	}
-	
-	public static Date getCurrentDateOfNextYearWithOutTimeStamp(){
+
+	public static Date getCurrentDateOfNextYearWithOutTimeStamp() {
 		Calendar currentDateCalendar = new GregorianCalendar();
 		int year = currentDateCalendar.get(Calendar.YEAR);
 		int month = currentDateCalendar.get(Calendar.MONTH);
 		int day = currentDateCalendar.get(Calendar.DAY_OF_MONTH);
-		currentDateCalendar = new GregorianCalendar(year+1, month, day);
+		currentDateCalendar = new GregorianCalendar(year + 1, month, day);
 		return new Date(currentDateCalendar.getTimeInMillis());
 	}
-	
-	public static Calendar getFistDayOfYearAfterNextYear(){
+
+	public static Calendar getFistDayOfYearAfterNextYear() {
 		Calendar cal = GregorianCalendar.getInstance();
-		cal.set(Calendar.MONTH,Calendar.JANUARY);
+		cal.set(Calendar.MONTH, Calendar.JANUARY);
 		cal.set(Calendar.DAY_OF_MONTH, cal.getActualMinimum(Calendar.DATE));
 		Calendar cal1 = Calendar.getInstance();
-		cal1.set(cal.get(Calendar.YEAR)+2,cal.get(Calendar.MONTH),cal.get(Calendar.DATE),0,0,0);
+		cal1.set(cal.get(Calendar.YEAR) + 2, cal.get(Calendar.MONTH), cal
+				.get(Calendar.DATE), 0, 0, 0);
 		return cal1;
 	}
-	
+
 	/**
 	 * Not sure why this is just copying over the year, month, and day.
 	 * Also see {@link #getCalendarDate(long)}.
@@ -621,7 +638,7 @@

 		dateCalendar = new GregorianCalendar(year, month, day);
 		return dateCalendar;
 	}
-	
+
 	public static long getNumberOfDaysBetweenTwoDates(Date date1, Date date2) {
 		Calendar cal1 = Calendar.getInstance();
 		Calendar cal2 = Calendar.getInstance();
@@ -640,7 +657,7 @@

 		return ((cal1.getTime().getTime() - cal2.getTime().getTime()) / (24 * 60 * 60 * 1000));
 
 	}
-	
+
 	public static Date getDatePlusXDays(Date date, int dayNombre) {
 		Date dateplus;
 		Calendar cal = Calendar.getInstance();
@@ -650,4 +667,42 @@

 		return dateplus;
 	}
 
+	public static java.sql.Date getSqlDate(int year, int month, int date) {
+		return convertToSqlDate(getCalendarAsOn(year, month, date));
+	}
+
+	public static Calendar getCalendarAsOn(int year, int month, int date) {
+		Calendar calendar = Calendar.getInstance();
+		calendar.set(year, month, date, 0, 0, 0);
+		calendar.set(Calendar.MILLISECOND, 0);
+		return calendar;
+	}
+
+	public static Date getDate(int year, int month, int date) {
+		return getCalendarAsOn(year, month, date).getTime();
+	}
+
+	public static Date currentDate() {
+		return new Date(System.currentTimeMillis());
+	}
+
+	public static java.sql.Date currentDateAsSqlDate() {
+		return convertToSqlDate(currentDate());
+	}
+
+	private static java.sql.Date convertToSqlDate(Calendar calendar) {
+		return new java.sql.Date(calendar.getTimeInMillis());
+	}
+
+	public static java.sql.Date convertToSqlDate(Date date) {
+		return new java.sql.Date(date.getTime());
+	}
+
+	public static java.sql.Date sqlToday() {
+		Calendar calendar = Calendar.getInstance();
+		Calendar calendarAsOnToday = getCalendarAsOn(calendar
+				.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar
+				.get(Calendar.DATE));
+		return convertToSqlDate(calendarAsOnToday);
+	}
 }
Index: src/org/mifos/framework/util/helpers/FilePaths.java
==================================================================
--- src/org/mifos/framework/util/helpers/FilePaths.java	(revision 12249)

+++ src/org/mifos/framework/util/helpers/FilePaths.java	(patch commit-11012008a level 1)

@@ -64,4 +64,6 @@

 		"org/mifos/framework/util/resources/customTableTag/tabletag.xsd";	
 	public static final String CONFIGURABLEMIFOSDBPROPERTIESFILE = 
 		"deploymifosDB.properties";
+	public static final String REPORT_PRODUCT_OFFERING_CONFIG = "/org/mifos/application/reports/resources/reportproducts.properties";
+	public static final String REPORT_SERVICE_BEAN_FILE = "/org/mifos/config/reportServices.xml";
 }
Index: src/org/mifos/framework/util/helpers/MoneyUtils.java
==================================================================
--- src/org/mifos/framework/util/helpers/MoneyUtils.java	(revision 12249)

+++ src/org/mifos/framework/util/helpers/MoneyUtils.java	(patch commit-11012008a level 1)

@@ -0,0 +1,17 @@

+package org.mifos.framework.util.helpers;

+

+public class MoneyUtils {

+

+	public static Money add(Money firstAmount, Money secondAmount) {

+		Money sum = firstAmount == null ? secondAmount : firstAmount

+				.add(secondAmount);

+		return sum;

+	}

+

+	public static Double getMoneyDoubleValue(Money money) {

+		return money == null ? null : money.getAmountDoubleValue();

+	}

+

+	public static final Money ZERO = new Money("0.00");

+

+}

Index: src/org/mifos/framework/util/helpers/NumberUtils.java
==================================================================
--- src/org/mifos/framework/util/helpers/NumberUtils.java	(revision 12249)

+++ src/org/mifos/framework/util/helpers/NumberUtils.java	(patch commit-11012008a level 1)

@@ -0,0 +1,26 @@

+package org.mifos.framework.util.helpers;

+

+public class NumberUtils {

+

+	public static Short convertIntegerToShort(Integer intValue) {

+		if (intValue == null) {

+			return null;

+		}

+		return new Short(intValue.shortValue());

+	}

+

+	public static Integer convertShortToInteger(Short shortValue) {

+		if (shortValue == null) {

+			return null;

+		}

+		return new Integer(shortValue.intValue());

+	}

+

+	public static boolean isDigits(String number) {

+		if (number == null)

+			return false;

+		if (number.startsWith("-"))

+			number = number.substring(1);

+		return org.apache.commons.lang.math.NumberUtils.isDigits(number);

+	}

+}

Index: src/org/mifos/framework/util/helpers/Predicate.java
==================================================================
--- src/org/mifos/framework/util/helpers/Predicate.java	(revision 12249)

+++ src/org/mifos/framework/util/helpers/Predicate.java	(patch commit-11012008a level 1)

@@ -0,0 +1,5 @@

+package org.mifos.framework.util.helpers;

+

+public interface Predicate<T> {

+	public boolean evaluate(T object) throws Exception;

+}

Index: src/org/mifos/framework/util/helpers/ServletUtils.java
==================================================================
--- src/org/mifos/framework/util/helpers/ServletUtils.java	(revision 12249)

+++ src/org/mifos/framework/util/helpers/ServletUtils.java	(patch commit-11012008a level 1)

@@ -0,0 +1,14 @@

+package org.mifos.framework.util.helpers;

+

+import javax.servlet.http.HttpServletRequest;

+

+public class ServletUtils {

+

+	public static String getParameter(HttpServletRequest request,

+			String paramName) {

+		String parameter = request.getParameter(paramName);

+		return parameter != null ? parameter : request.getAttribute(parameter)

+				.toString();

+	}

+

+}

Index: src/org/mifos/framework/util/resources/batchjobs/task.xml
==================================================================
--- src/org/mifos/framework/util/resources/batchjobs/task.xml	(revision 12249)

+++ src/org/mifos/framework/util/resources/batchjobs/task.xml	(patch commit-11012008a level 1)

@@ -11,6 +11,11 @@

 		<delay-time>86400</delay-time>
 	</scheduler>
 	<scheduler>
+		<task-class-name>CollectionSheetReportParameterCachingTask</task-class-name>
+		<initial-time>24:00:00</initial-time>
+		<delay-time>86400</delay-time>
+	</scheduler>
+	<scheduler>
 		<task-class-name>LoanArrearsTask</task-class-name>
 		<initial-time>24:00:00</initial-time>
 		<delay-time>86400</delay-time>
Index: src/org/mifos/framework/util/resources/hibernate.cfg.xml
==================================================================
--- src/org/mifos/framework/util/resources/hibernate.cfg.xml	(revision 12249)

+++ src/org/mifos/framework/util/resources/hibernate.cfg.xml	(patch commit-11012008a level 1)

@@ -133,6 +133,8 @@

 		<mapping resource="org/mifos/application/collectionsheet/business/CollSheetCustBO.hbm.xml" />
 		<mapping resource="org/mifos/application/collectionsheet/business/CollSheetLnDetailsEntity.hbm.xml" />
 		<mapping resource="org/mifos/application/collectionsheet/business/CollSheetSavingsDetailsEntity.hbm.xml" />
+		<mapping resource="org/mifos/application/reports/ui/SelectionItem.hbm.xml" />
+		<mapping resource="org/mifos/application/reports/ui/DateSelectionItem.hbm.xml" />
 		<!-- Mapping files for Master Data -->
 		<mapping resource="org/mifos/application/master/business/MifosCurrency.hbm.xml" />
 		<mapping resource="org/mifos/application/master/business/CountryEntity.hbm.xml" />
Index: src/org/mifos/framework/util/CollectionUtils.java
==================================================================
--- src/org/mifos/framework/util/CollectionUtils.java	(revision 12249)

+++ src/org/mifos/framework/util/CollectionUtils.java	(patch commit-11012008a level 1)

@@ -0,0 +1,38 @@

+package org.mifos.framework.util;

+

+import java.util.ArrayList;

+import java.util.Collection;

+import java.util.HashSet;

+import java.util.List;

+import java.util.Set;

+

+import org.mifos.framework.util.helpers.Predicate;

+

+public class CollectionUtils {

+

+	// Same as commons-collections but with generics

+	public static <T> T find(Collection<T> collections, Predicate<T> predicate)

+			throws Exception {

+		if (collections != null && predicate != null) {

+			for (T item : collections) {

+				if (predicate.evaluate(item))

+					return item;

+			}

+		}

+		return null;

+	}

+

+	public static<T> List<T> asList(

+			T element) {

+		List<T> list = new ArrayList<T>();

+		list.add(element);

+		return list;

+	}

+

+	public static<T> Set<T> asSet(

+			T element) {

+		Set<T> collectionSheetsForMeetingDate = new HashSet<T>();

+		collectionSheetsForMeetingDate.add(element);

+		return collectionSheetsForMeetingDate;

+	}

+}

Index: src/org/mifos/framework/servlet	(new directory)
==================================================================
Index: src/org/mifos/framework/servlet/ModifiableParameterServletRequest.java
==================================================================
--- src/org/mifos/framework/servlet/ModifiableParameterServletRequest.java	(revision 12249)

+++ src/org/mifos/framework/servlet/ModifiableParameterServletRequest.java	(patch commit-11012008a level 1)

@@ -0,0 +1,68 @@

+package org.mifos.framework.servlet;

+

+import java.util.ArrayList;

+import java.util.Enumeration;

+import java.util.HashMap;

+import java.util.List;

+import java.util.Map;

+

+import javax.servlet.http.HttpServletRequest;

+import javax.servlet.http.HttpServletRequestWrapper;

+

+import org.apache.commons.collections.iterators.IteratorEnumeration;

+@SuppressWarnings("deprecation")

+public class ModifiableParameterServletRequest extends

+		HttpServletRequestWrapper {

+	List<String> removedParameterList;

+

+	public ModifiableParameterServletRequest(HttpServletRequest originalRequest) {

+		super(originalRequest);

+		removedParameterList = new ArrayList<String>();

+	}

+

+	public void removeParameter(String string) {

+		removedParameterList.add(string);

+	}

+

+	@Override

+	public String getParameter(String arg0) {

+		if (removedParameterList.contains(arg0))

+			return null;

+		return getRequest().getParameter(arg0);

+	}

+

+	@Override

+	public Map getParameterMap() {

+		Map parameterMap = updatedParameterList();

+		return parameterMap;

+	}

+

+	private Map<String, String> updatedParameterList() {

+		Map<String, String> parameterMap = new HashMap<String, String>(

+				getRequest().getParameterMap());

+		for (String removeParameterName : removedParameterList) {

+			parameterMap.remove(removeParameterName);

+		}

+		return parameterMap;

+	}

+

+	@Override

+	public Enumeration getParameterNames() {

+		Enumeration parameterNames = getRequest().getParameterNames();

+		List paramNames = new ArrayList();

+		while (parameterNames.hasMoreElements()) {

+			Object nextElement = parameterNames.nextElement();

+			if (!removedParameterList.contains(nextElement)) {

+				paramNames.add(nextElement);

+			}

+		}

+		return new IteratorEnumeration(paramNames.iterator());

+	}

+

+	@Override

+	public String[] getParameterValues(String arg0) {

+		if (removedParameterList.contains(arg0))

+			return null;

+		return getRequest().getParameterValues(arg0);

+	}

+}

Index: test/org/mifos/application/ApplicationTestSuite.java
==================================================================
--- test/org/mifos/application/ApplicationTestSuite.java	(revision 12249)

+++ test/org/mifos/application/ApplicationTestSuite.java	(patch commit-11012008a level 1)

@@ -142,7 +142,7 @@

 		suite.addTest(SurveysTestSuite.suite());
 		suite.addTest(PPITestSuite.suite());
 		suite.addTest(ApplicationAcceptedPaymentTypeTestSuite.suite());
-		
+		suite.addTest(CollectionSheetTestSuite.suite());
 		return suite;
 	}
 }
Index: test/org/mifos/application/collectionsheet/business/TestCollSheetBO.java
==================================================================
--- test/org/mifos/application/collectionsheet/business/TestCollSheetBO.java	(revision 12249)

+++ test/org/mifos/application/collectionsheet/business/TestCollSheetBO.java	(patch commit-11012008a level 1)

@@ -9,10 +9,16 @@

 
 import java.sql.Date;
 import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 import java.util.Set;
 
+import org.easymock.internal.ExpectedInvocation;
 import org.hibernate.Session;
+import org.hibernate.Transaction;
+import org.mifos.application.NamedQueryConstants;
 import org.mifos.application.accounts.business.AccountActionDateEntity;
 import org.mifos.application.accounts.business.AccountBO;
 import org.mifos.application.accounts.business.AccountFeesActionDetailEntity;
@@ -45,6 +51,7 @@

 import org.mifos.framework.util.helpers.Money;
 import org.mifos.framework.util.helpers.TestObjectFactory;
 
+import static org.easymock.classextension.EasyMock.createMock;
 
 public class TestCollSheetBO extends MifosTestCase {
 
@@ -520,5 +527,23 @@

 				(short) 16, startDate,
 				savingsOffering);
 	}
-
+	
+	public void testRetrieveCollectionSheetMeetingDateReturnsAllCollectionSheetsForSpecifiedMeeting() throws Exception {
+		Session session = HibernateUtil.getSessionTL();
+		Transaction transaction = session.beginTransaction();
+		Calendar calendar = Calendar.getInstance();
+		calendar.set(2010, Calendar.JANUARY, 0, 0, 0, 0);
+		Date year2010 = new Date(calendar.getTimeInMillis());
+		CollectionSheetBO collectionSheet = new CollectionSheetBO();
+		collectionSheet.setCollSheetDate(year2010);
+		collectionSheet.setRunDate(new Date(System.currentTimeMillis()));
+		collectionSheet.create();
+		HashMap queryParameters = new HashMap();
+		queryParameters.put("MEETING_DATE", year2010);
+		List matchingCollectionSheets = new CollectionSheetPersistence().executeNamedQuery(NamedQueryConstants.COLLECTION_SHEETS_FOR_MEETING_DATE,queryParameters);
+		assertEquals(1, matchingCollectionSheets.size());
+		assertEquals(collectionSheet, matchingCollectionSheets.get(0));
+		transaction.rollback();
+		session.close();
+	}
 }
Index: test/org/mifos/application/collectionsheet/business/TestCollSheetCustBO.java
==================================================================
--- test/org/mifos/application/collectionsheet/business/TestCollSheetCustBO.java	(revision 12249)

+++ test/org/mifos/application/collectionsheet/business/TestCollSheetCustBO.java	(patch commit-11012008a level 1)

@@ -231,5 +231,4 @@

 				loanOffering);
 		return accountBO;
 	}
-
 }
Index: test/org/mifos/application/collectionsheet/business/CollectionSheetBOFixture.java
==================================================================
--- test/org/mifos/application/collectionsheet/business/CollectionSheetBOFixture.java	(revision 12249)

+++ test/org/mifos/application/collectionsheet/business/CollectionSheetBOFixture.java	(patch commit-11012008a level 1)

@@ -0,0 +1,13 @@

+package org.mifos.application.collectionsheet.business;

+

+import java.util.HashSet;

+

+import org.mifos.framework.util.helpers.DateUtils;

+

+public class CollectionSheetBOFixture {

+

+	public static CollectionSheetBO createCollectionSheet() {

+		return new CollectionSheetBO(DateUtils.sqlToday(), DateUtils.sqlToday(), new HashSet<CollSheetCustBO>(), null);

+	}

+

+}

Index: test/org/mifos/application/collectionsheet/business/CollectionSheetBOTest.java
==================================================================
--- test/org/mifos/application/collectionsheet/business/CollectionSheetBOTest.java	(revision 12249)

+++ test/org/mifos/application/collectionsheet/business/CollectionSheetBOTest.java	(patch commit-11012008a level 1)

@@ -0,0 +1,36 @@

+package org.mifos.application.collectionsheet.business;

+

+import java.sql.Date;

+import java.util.Calendar;

+import java.util.HashMap;

+import java.util.List;

+

+import org.hibernate.Session;

+import org.hibernate.Transaction;

+import org.mifos.application.NamedQueryConstants;

+import org.mifos.application.collectionsheet.persistence.CollectionSheetPersistence;

+import org.mifos.framework.MifosTestCase;

+import org.mifos.framework.hibernate.helper.HibernateUtil;

+import org.mifos.framework.util.helpers.DateUtils;

+

+public class CollectionSheetBOTest extends MifosTestCase {

+	public void testRetrieveCollectionSheetMeetingDateReturnsAllCollectionSheetsForSpecifiedMeeting()

+			throws Exception {

+		Session session = HibernateUtil.getSessionTL();

+		Transaction transaction = session.beginTransaction();

+		Date year2010 = DateUtils.getSqlDate(2010, Calendar.JANUARY, 1);

+		CollectionSheetBO collectionSheet = new CollectionSheetBO();

+		collectionSheet.setCollSheetDate(year2010);

+		collectionSheet.setRunDate(new Date(System.currentTimeMillis()));

+		collectionSheet.create();

+		HashMap queryParameters = new HashMap();

+		queryParameters.put("MEETING_DATE", year2010);

+		List matchingCollectionSheets = new CollectionSheetPersistence()

+				.executeNamedQuery(

+						NamedQueryConstants.COLLECTION_SHEETS_FOR_MEETING_DATE,

+						queryParameters);

+		assertEquals(1, matchingCollectionSheets.size());

+		assertEquals(collectionSheet, matchingCollectionSheets.get(0));

+		transaction.rollback();

+	}

+}

Index: test/org/mifos/application/collectionsheet/business/CollectionSheetCustomerBOFixture.java
==================================================================
--- test/org/mifos/application/collectionsheet/business/CollectionSheetCustomerBOFixture.java	(revision 12249)

+++ test/org/mifos/application/collectionsheet/business/CollectionSheetCustomerBOFixture.java	(patch commit-11012008a level 1)

@@ -0,0 +1,10 @@

+package org.mifos.application.collectionsheet.business;

+

+public class CollectionSheetCustomerBOFixture {

+

+	public static CollSheetCustBO createCollectionSheet() {

+		CollSheetCustBO collectionSheet = new CollSheetCustBO();

+		collectionSheet.setCollectionSheet(CollectionSheetBOFixture.createCollectionSheet());

+		return collectionSheet;

+	}

+}

Index: test/org/mifos/application/collectionsheet/business/CollectionSheetLoanDetailsEntityFixture.java
==================================================================
--- test/org/mifos/application/collectionsheet/business/CollectionSheetLoanDetailsEntityFixture.java	(revision 12249)

+++ test/org/mifos/application/collectionsheet/business/CollectionSheetLoanDetailsEntityFixture.java	(patch commit-11012008a level 1)

@@ -0,0 +1,16 @@

+package org.mifos.application.collectionsheet.business;

+

+

+public class CollectionSheetLoanDetailsEntityFixture {

+

+	public static CollSheetLnDetailsEntity createLoanDetails() {

+		return new CollSheetLnDetailsEntity();

+	}

+

+	public static CollSheetLnDetailsEntity createLoanDetails(Integer accountId) {

+		CollSheetLnDetailsEntity collectionSheet = new CollSheetLnDetailsEntity();

+		collectionSheet.setAccountId(accountId);

+		return collectionSheet;

+	}

+

+}

Index: test/org/mifos/application/collectionsheet/business/CollectionSheetReportTestSuite.java
==================================================================
--- test/org/mifos/application/collectionsheet/business/CollectionSheetReportTestSuite.java	(revision 12249)

+++ test/org/mifos/application/collectionsheet/business/CollectionSheetReportTestSuite.java	(patch commit-11012008a level 1)

@@ -0,0 +1,19 @@

+package org.mifos.application.collectionsheet.business;

+

+import junit.framework.Test;

+import junit.framework.TestCase;

+import junit.framework.TestSuite;

+

+import org.mifos.application.reports.business.service.CollectionSheetReportServiceTest;

+import org.mifos.application.reports.business.service.CollectionSheetServiceTest;

+

+

+public class CollectionSheetReportTestSuite extends TestSuite {

+	public static Test suite() throws Exception {

+		TestSuite suite = new TestSuite();

+		suite.addTestSuite(CollectionSheetBOTest.class);

+		suite.addTestSuite(CollectionSheetReportServiceTest.class);

+		suite.addTestSuite(CollectionSheetServiceTest.class);

+		return suite;

+	}

+}

Index: test/org/mifos/application/collectionsheet/business/CollectionSheetSavingDetailsEntityFixture.java
==================================================================
--- test/org/mifos/application/collectionsheet/business/CollectionSheetSavingDetailsEntityFixture.java	(revision 12249)

+++ test/org/mifos/application/collectionsheet/business/CollectionSheetSavingDetailsEntityFixture.java	(patch commit-11012008a level 1)

@@ -0,0 +1,11 @@

+package org.mifos.application.collectionsheet.business;

+

+public class CollectionSheetSavingDetailsEntityFixture {

+

+	public static CollSheetSavingsDetailsEntity createSavingsDetails(Integer accountId) {

+		CollSheetSavingsDetailsEntity savingDetails = new CollSheetSavingsDetailsEntity();

+		savingDetails.setAccountId(accountId);

+		return savingDetails;

+	}

+

+}

Index: test/org/mifos/application/office/business/OfficecFixture.java
==================================================================
--- test/org/mifos/application/office/business/OfficecFixture.java	(revision 12249)

+++ test/org/mifos/application/office/business/OfficecFixture.java	(patch commit-11012008a level 1)

@@ -8,4 +8,7 @@

 		return office;

 	}

 

+	public static OfficeBO createOffice(Short officeId) {

+		return new OfficeBO(officeId, "Some Office", null, null);

+	}

 }

Index: test/org/mifos/application/personnel/business/PersonnelFixture.java
==================================================================
--- test/org/mifos/application/personnel/business/PersonnelFixture.java	(revision 12249)

+++ test/org/mifos/application/personnel/business/PersonnelFixture.java	(patch commit-11012008a level 1)

@@ -2,6 +2,7 @@

 

 import org.mifos.application.office.business.OfficeBO;

 import org.mifos.application.office.business.OfficecFixture;

+import org.mifos.application.personnel.util.helpers.PersonnelLevel;

 

 public class PersonnelFixture {

 

@@ -12,4 +13,23 @@

 		return personnel;

 	}

 

+	public static PersonnelBO createPersonnel(Short personnelId) {

+		PersonnelBO personnel = new PersonnelBO(personnelId, null, null, null);

+		personnel.setOffice(OfficecFixture.createOffice(Short.valueOf("1")));

+		return personnel;

+	}

+

+	public static PersonnelBO createLoanOfficer(Short personnelId) {

+		PersonnelBO personnel = createPersonnel(personnelId);

+		personnel

+				.setLevel(new PersonnelLevelEntity(PersonnelLevel.LOAN_OFFICER));

+		return personnel;

+	}

+

+	public static PersonnelBO createNonLoanOfficer(Short personnelId) {

+		PersonnelBO personnel = createPersonnel(personnelId);

+		personnel.setLevel(new PersonnelLevelEntity(

+				PersonnelLevel.NON_LOAN_OFFICER));

+		return personnel;

+	}

 }

Index: test/org/mifos/application/personnel/business/CustomerFixture.java
==================================================================
--- test/org/mifos/application/personnel/business/CustomerFixture.java	(revision 12249)

+++ test/org/mifos/application/personnel/business/CustomerFixture.java	(patch commit-11012008a level 1)

@@ -0,0 +1,26 @@

+package org.mifos.application.personnel.business;

+

+import org.mifos.application.customer.business.CustomerBO;

+import org.mifos.application.customer.business.CustomerLevelEntity;

+import org.mifos.application.customer.center.business.CenterBO;

+import org.mifos.application.customer.group.business.GroupBO;

+import org.mifos.application.customer.util.helpers.CustomerLevel;

+

+public class CustomerFixture {

+

+	public static CenterBO createCenterBO(Integer customerId) {

+		return createCenterBO(customerId, null);

+	}

+

+	public static CenterBO createCenterBO(Integer customerId,

+			PersonnelBO loanOfficer) {

+		CenterBO center = new CenterBO(customerId, new CustomerLevelEntity(

+				CustomerLevel.CENTER), null, loanOfficer, customerId.toString());

+		return center;

+	}

+	

+	public static GroupBO createGroupBO(Integer customerId, PersonnelBO loanOfficer) {

+		return new GroupBO(customerId, new CustomerLevelEntity(

+				CustomerLevel.CENTER), null, loanOfficer, customerId.toString());

+	}

+}

Index: test/org/mifos/application/reports/business/service/ReportsBusinessServiceTest.java
==================================================================
--- test/org/mifos/application/reports/business/service/ReportsBusinessServiceTest.java	(revision 12249)

+++ test/org/mifos/application/reports/business/service/ReportsBusinessServiceTest.java	(patch commit-11012008a level 1)

@@ -1,25 +1,33 @@

 package org.mifos.application.reports.business.service;

 

+import static org.mifos.framework.util.helpers.NumberUtils.convertShortToInteger;

+

+import java.util.ArrayList;

 import java.util.Collections;

+import java.util.List;

 

 import javax.servlet.ServletContext;

 

 import junit.framework.TestCase;

 

+import org.mifos.application.customer.util.helpers.CustomerLevel;

 import org.mifos.application.reports.business.ReportsJasperMap;

 import org.mifos.application.reports.persistence.ReportsPersistence;

+import org.mifos.application.reports.ui.SelectionItem;

+import org.mifos.framework.exceptions.PersistenceException;

+import org.mifos.framework.exceptions.ServiceException;

 import org.mifos.framework.util.helpers.DatabaseSetup;

 

 import servletunit.HttpServletRequestSimulator;

 import servletunit.ServletContextSimulator;

 

 public class ReportsBusinessServiceTest extends TestCase {

-	

+

 	@Override

 	protected void setUp() throws Exception {

 		DatabaseSetup.initializeHibernate();

 	}

-	

+

 	public void testNothing() throws Exception {

 	}

 

@@ -33,25 +41,22 @@

 	 */

 	public void xtestPdf() throws Exception {

 		ServletContext context = new ServletContextSimulator();

-		HttpServletRequestSimulator request = 

-			new HttpServletRequestSimulator(context);

-		request.getSession().setAttribute("listOfAllParametersForReportId", 

-			Collections.EMPTY_LIST);

+		HttpServletRequestSimulator request = new HttpServletRequestSimulator(

+				context);

+		request.getSession().setAttribute("listOfAllParametersForReportId",

+				Collections.EMPTY_LIST);

 

-		ReportsJasperMap jasperMap = new ReportsJasperMap(

-			null,

-			"listgroups.jrxml");

+		ReportsJasperMap jasperMap = new ReportsJasperMap(null,

+				"listgroups.jrxml");

 		new ReportsPersistence().createJasperMap(jasperMap);

 		short listGroups = jasperMap.getReportId();

-		

-		ReportsJasperMap reRead = 

-			new ReportsPersistence().oneJasperOfReportId(listGroups);

+

+		ReportsJasperMap reRead = new ReportsPersistence()

+				.oneJasperOfReportId(listGroups);

 		assertEquals("listgroups.jrxml", reRead.getReportJasper());

 

-		new ReportsBusinessService().runReport(

-			listGroups, request, 

-			"src/org/mifos/application/reports/uploads/", 

-			ReportsBusinessService.PDF);

+		new ReportsBusinessService().runReport(listGroups, request,

+				"src/org/mifos/application/reports/uploads/",

+				ReportsBusinessService.PDF);

 	}

-

 }

Index: test/org/mifos/application/reports/business/service/AbstractCollectionSheetTestCase.java
==================================================================
--- test/org/mifos/application/reports/business/service/AbstractCollectionSheetTestCase.java	(revision 12249)

+++ test/org/mifos/application/reports/business/service/AbstractCollectionSheetTestCase.java	(patch commit-11012008a level 1)

@@ -0,0 +1,83 @@

+package org.mifos.application.reports.business.service;

+

+import static org.mifos.application.reports.ui.SelectionItem.ALL_CENTER_SELECTION_ITEM;

+import static org.mifos.application.reports.ui.SelectionItem.ALL_LOAN_OFFICER_SELECTION_ITEM;

+import static org.mifos.framework.util.helpers.NumberUtils.*;

+import java.sql.Date;

+import java.util.ArrayList;

+import java.util.List;

+

+import org.mifos.application.collectionsheet.business.CollSheetCustBO;

+import org.mifos.application.customer.util.helpers.CustomerLevel;

+import org.mifos.application.personnel.business.PersonnelBO;

+import org.mifos.application.personnel.business.PersonnelFixture;

+import org.mifos.framework.MifosTestCase;

+import org.mifos.framework.util.helpers.DateUtils;

+import org.mifos.framework.util.helpers.NumberUtils;

+

+public class AbstractCollectionSheetTestCase extends MifosTestCase {

+

+	protected static final Integer ANY_ID = new Integer("1");

+	protected static final Short ANY_SHORT_ID = NumberUtils

+			.convertIntegerToShort(ANY_ID);

+	protected static final Integer BRANCH_ID = Integer.valueOf(400);

+	protected static final Short BRANCH_SHORT_ID = NumberUtils

+			.convertIntegerToShort(BRANCH_ID);

+	protected static final Integer CENTER_ID = Integer.valueOf(500);

+	protected static final Integer LOAN_OFFICER_ID = Integer.valueOf(600);

+	protected static final Short LOAN_OFFICER_SHORT_ID = Short

+			.valueOf(LOAN_OFFICER_ID.shortValue());

+	protected static final int GROUP_ID = Integer.valueOf(200);

+	protected static final Integer ANOTHER_GROUP_ID = Integer.valueOf(201);

+	protected static final Date TODAYS_DATE = DateUtils.currentDateAsSqlDate();

+	protected static final int MAX_COUNT = 10;

+	protected static final Integer ALL_CENTER_ID = convertShortToInteger(ALL_CENTER_SELECTION_ITEM

+			.getId());

+	protected static final Short ALL_LOAN_OFFICER_SHORT_ID = ALL_LOAN_OFFICER_SELECTION_ITEM

+			.getId();

+	protected static final Integer ALL_LOAN_OFFICER_ID = NumberUtils

+			.convertShortToInteger(ALL_LOAN_OFFICER_SHORT_ID);

+	protected static final PersonnelBO LOAN_OFFICER = PersonnelFixture

+			.createLoanOfficer(LOAN_OFFICER_SHORT_ID);

+	protected CollectionSheetService collectionSheetService;

+	protected CollSheetCustBO center;

+	protected CollSheetCustBO group;

+

+	protected Integer s2i(Short s) {

+		return NumberUtils.convertShortToInteger(s);

+	}

+

+	protected Short i2s(Integer s) {

+		return NumberUtils.convertIntegerToShort(s);

+	}

+

+	protected List<CollSheetCustBO> generateClientCollectionSheets(

+			int idStartFrom, CollSheetCustBO parentGroup, Short loanOfficerId) {

+		List<CollSheetCustBO> generatedCollectionSheets = new ArrayList<CollSheetCustBO>();

+		for (int i = idStartFrom; i < idStartFrom + 2; i++) {

+			CollSheetCustBO customer = generateCollectionSheet(i,

+					loanOfficerId, CustomerLevel.CLIENT);

+			customer.setParentCustomerId(parentGroup.getCustId());

+			generatedCollectionSheets.add(customer);

+		}

+		return generatedCollectionSheets;

+	}

+

+	protected CollSheetCustBO generateCollectionSheet(int custId,

+			Short loanOfficerId, CustomerLevel customerLevel) {

+		return new CollSheetCustBO(Integer.valueOf(custId),

+				"Sample Individual Customer", customerLevel.getValue(),

+				ANY_SHORT_ID, "", loanOfficerId);

+	}

+

+	@Override

+	protected void setUp() throws Exception {

+		super.setUp();

+		center = new CollSheetCustBO(CENTER_ID, "Sample Center",

+				CustomerLevel.CENTER.getValue(), ANY_SHORT_ID, "",

+				LOAN_OFFICER_SHORT_ID);

+		group = new CollSheetCustBO(GROUP_ID, "Sample Group",

+				CustomerLevel.GROUP.getValue(), ANY_SHORT_ID, "",

+				LOAN_OFFICER_SHORT_ID);

+	}

+}

Index: test/org/mifos/application/reports/business/service/CollectionSheetReportServiceTest.java
==================================================================
--- test/org/mifos/application/reports/business/service/CollectionSheetReportServiceTest.java	(revision 12249)

+++ test/org/mifos/application/reports/business/service/CollectionSheetReportServiceTest.java	(patch commit-11012008a level 1)

@@ -0,0 +1,890 @@

+package org.mifos.application.reports.business.service;

+

+import static org.easymock.EasyMock.expect;

+import static org.easymock.classextension.EasyMock.createMock;

+import static org.easymock.classextension.EasyMock.replay;

+import static org.easymock.classextension.EasyMock.verify;

+import static org.mifos.application.reports.ui.SelectionItem.ALL_GROUP_SELECTION_ITEM;

+import static org.mifos.application.reports.ui.SelectionItem.ALL_LOAN_OFFICER_SELECTION_ITEM;

+import static org.mifos.application.reports.ui.SelectionItem.NA_BRANCH_OFFICE_SELECTION_ITEM;

+import static org.mifos.application.reports.ui.SelectionItem.NA_CENTER_SELECTION_ITEM;

+import static org.mifos.application.reports.ui.SelectionItem.NA_LOAN_OFFICER_SELECTION_ITEM;

+import static org.mifos.application.reports.ui.SelectionItem.SELECT_BRANCH_OFFICE_SELECTION_ITEM;

+import static org.mifos.application.reports.ui.SelectionItem.SELECT_LOAN_OFFICER_SELECTION_ITEM;

+import static org.mifos.framework.util.CollectionUtils.asList;

+import static org.mifos.framework.util.helpers.NumberUtils.convertIntegerToShort;

+import static org.mifos.framework.util.helpers.NumberUtils.convertShortToInteger;

+

+import java.util.ArrayList;

+import java.util.Calendar;

+import java.util.Date;

+import java.util.List;

+

+import org.mifos.application.accounts.business.service.AccountBusinessService;

+import org.mifos.application.accounts.loan.business.LoanBO;

+import org.mifos.application.accounts.savings.business.SavingsBO;

+import org.mifos.application.collectionsheet.business.CollSheetCustBO;

+import org.mifos.application.collectionsheet.business.CollSheetLnDetailsEntity;

+import org.mifos.application.collectionsheet.business.CollSheetSavingsDetailsEntity;

+import org.mifos.application.collectionsheet.business.CollectionSheetCustomerBOFixture;

+import org.mifos.application.collectionsheet.business.CollectionSheetLoanDetailsEntityFixture;

+import org.mifos.application.collectionsheet.business.CollectionSheetSavingDetailsEntityFixture;

+import org.mifos.application.customer.business.CustomerBO;

+import org.mifos.application.customer.business.service.CustomerBusinessService;

+import org.mifos.application.customer.center.business.CenterBO;

+import org.mifos.application.customer.group.business.GroupBO;

+import org.mifos.application.customer.util.helpers.CustomerLevel;

+import org.mifos.application.office.business.OfficeBO;

+import org.mifos.application.office.business.OfficecFixture;

+import org.mifos.application.office.business.service.OfficeBusinessService;

+import org.mifos.application.personnel.business.CustomerFixture;

+import org.mifos.application.personnel.business.PersonnelBO;

+import org.mifos.application.personnel.business.PersonnelFixture;

+import org.mifos.application.personnel.business.service.PersonnelBusinessService;

+import org.mifos.application.productdefinition.business.LoanOfferingBO;

+import org.mifos.application.productdefinition.business.SavingsOfferingBO;

+import org.mifos.application.productdefinition.business.service.LoanPrdBusinessService;

+import org.mifos.application.productdefinition.business.service.SavingsPrdBusinessService;

+import org.mifos.application.reports.business.dto.CollectionSheetReportDTO;

+import org.mifos.application.reports.ui.DateSelectionItem;

+import org.mifos.application.reports.ui.SelectionItem;

+import org.mifos.application.reports.ui.SelectionItemFixture;

+import org.mifos.framework.components.logger.MifosLogManager;

+import org.mifos.framework.exceptions.PersistenceException;

+import org.mifos.framework.exceptions.ServiceException;

+import org.mifos.framework.util.helpers.DateUtils;

+import org.mifos.framework.util.helpers.FilePaths;

+

+public class CollectionSheetReportServiceTest extends

+		AbstractCollectionSheetTestCase {

+

+	private static final Integer PERSONNEL_ANY_ID = Integer.valueOf(100);

+	private static final Short PERSONNEL_ANY_SHORT_ID = convertIntegerToShort(PERSONNEL_ANY_ID);

+	private static final Short BSKL_PRODUCT_OFFERING_ID = Short.valueOf("1");

+	private static final Short CL_PRODUCT_OFFERING_ID = Short.valueOf("2");

+	private static final Short MM1_SAVINGS_PRODUCT_ID = Short.valueOf("4");

+	private static final Short MM2_SAVINGS_PRODUCT_ID = Short.valueOf("5");

+	private static final Short SK_SAVING_PRD_OFFERING_ID = Short.valueOf("7");

+

+	private static final Integer CL_LOAN_ACCNT_ID = Integer.valueOf(1);

+	private static final Integer BSKL_LOAN_ACCNT_ID = Integer.valueOf(2);

+	private static final Integer MM1_SAVINGS_ACCNT_ID = Integer.valueOf(3);

+	private static final Integer SK_SAVINGS_ACCNT_ID = Integer.valueOf(4);

+

+	private static final OfficeBO OFFICE = OfficecFixture

+			.createOffice(BRANCH_SHORT_ID);

+	private static final SelectionItem OFFICE_SELECTION_ITEM = new SelectionItem(

+			OFFICE.getOfficeId(), OFFICE.getOfficeName());

+	private static final PersonnelBO ANY_PERSONNEL = PersonnelFixture

+			.createNonLoanOfficer(PERSONNEL_ANY_SHORT_ID);

+	private OfficeBusinessService officeBusinessServiceMock;

+	private CollectionSheetReportService collectionSheetReportService;

+	private CustomerBusinessService customerBusinessServiceMock;

+	private List<OfficeBO> branchOffices;

+	private List<SelectionItem> branchOfficesSelectionItems;

+	private PersonnelBusinessService personnelBusinessServiceMock;

+	private List<PersonnelBO> loanOfficers;

+	private List<SelectionItem> loanOfficersSelectionItems;

+	private List<CustomerBO> centers;

+	private List<SelectionItem> centerSelectionItems;

+	private PersonnelBO anyPersonnel;

+	private OfficeBO anyOffice;

+	private CollectionSheetService collectionSheetServiceMock;

+	private java.sql.Date sqlMeetingDate;

+	private Date meetingDate;

+	private List<CollSheetCustBO> anyCollectionSheetCustomer;

+	private AccountBusinessService accountBusinessServiceMock;

+	private LoanPrdBusinessService loanProductBusinessServiceMock;

+	private List<CollSheetCustBO> centerCollectionSheets;

+	private List<CollSheetCustBO> groupsCollectionSheets;

+	private List<CollSheetCustBO> customerCollectionSheets;

+	private CenterBO center;

+	private GroupBO group;

+	private CollSheetCustBO groupCollectionSheet;

+	private CollSheetCustBO centerCollectionSheet;

+	private CollSheetCustBO collectionSheet;

+	private CollSheetLnDetailsEntity bsklLoanDetailsEntity;

+	private LoanOfferingBO bsklLoanProductOffering;

+	private LoanOfferingBO clLoanProductOffering;

+	private CollSheetLnDetailsEntity clLoanDetailsEntity;

+	private SavingsPrdBusinessService savingsProductBusinessServiceMock;

+	private SavingsOfferingBO mm1SavingsProductOffering;

+	private CollSheetSavingsDetailsEntity mm1SavingDetailsEntity;

+	private SavingsOfferingBO skSavingsProductOffering;

+	private CollSheetSavingsDetailsEntity skSavingDetailsEntity;

+	private ReportProductOfferingService reportProductOfferingService;

+	private IReportsParameterService reportsParameterServiceMock;

+

+	public void testGetBranchesCallsOfficeBusinessServiceAndChecksSelect()

+			throws Exception {

+		PersonnelBO personnel = PersonnelFixture

+				.createPersonnel(PERSONNEL_ANY_SHORT_ID);

+

+		expect(

+				reportsParameterServiceMock

+						.getActiveBranchesUnderUser(personnel

+								.getOfficeSearchId())).andReturn(

+				branchOfficesSelectionItems);

+		List<SelectionItem> returnedBranchOffices = retrieveBranchOffices(

+				branchOfficesSelectionItems, personnel);

+		assertEquals(MAX_COUNT + 1, returnedBranchOffices.size());

+		assertEquals(SELECT_BRANCH_OFFICE_SELECTION_ITEM, returnedBranchOffices

+				.get(0));

+	}

+

+	public void testGetNotApplicableBranchOfficeIfNoneExists() throws Exception {

+		List<SelectionItem> returnedBranchOffices = retrieveBranchOffices(

+				new ArrayList<SelectionItem>(), null);

+		assertEquals(1, returnedBranchOffices.size());

+		assertEquals(NA_BRANCH_OFFICE_SELECTION_ITEM, returnedBranchOffices

+				.get(0));

+	}

+

+	private List<SelectionItem> retrieveBranchOffices(

+			List<SelectionItem> branchOffices, PersonnelBO personnel)

+			throws ServiceException, PersistenceException {

+		expect(

+				personnelBusinessServiceMock

+						.getPersonnel(PERSONNEL_ANY_SHORT_ID)).andReturn(

+				personnel);

+		replay(reportsParameterServiceMock);

+		replay(personnelBusinessServiceMock);

+		List<SelectionItem> returnedBranchOffices = collectionSheetReportService

+				.getBranchOffices(PERSONNEL_ANY_ID);

+		verify(reportsParameterServiceMock);

+		verify(personnelBusinessServiceMock);

+		return returnedBranchOffices;

+	}

+

+	public void testGetNotApplicableLoanOfficerIfBranchNotApplicable()

+			throws Exception {

+		replay(personnelBusinessServiceMock);

+		retrieveAndAssertLoanOfficer(NA_BRANCH_OFFICE_SELECTION_ITEM.getId(),

+				NA_LOAN_OFFICER_SELECTION_ITEM);

+	}

+

+	private void setExpectationForAnyUserWhenRetrievingLoanOfficer()

+			throws ServiceException {

+		expect(

+				personnelBusinessServiceMock

+						.getPersonnel(PERSONNEL_ANY_SHORT_ID)).andReturn(

+				ANY_PERSONNEL);

+	}

+

+	public void testGetSelectLoanOfficerIfBranchIdIsSelect() throws Exception {

+		replay(personnelBusinessServiceMock);

+		retrieveAndAssertLoanOfficer(SELECT_BRANCH_OFFICE_SELECTION_ITEM

+				.getId(), SELECT_LOAN_OFFICER_SELECTION_ITEM);

+	}

+

+	public void testGetActiveLoanOfficersWithOptionForAllLoanOfficer()

+			throws Exception {

+		expect(

+				personnelBusinessServiceMock

+						.getPersonnel(PERSONNEL_ANY_SHORT_ID)).andReturn(

+				ANY_PERSONNEL);

+		expect(

+				reportsParameterServiceMock

+						.getActiveLoanOfficersUnderOffice(ANY_SHORT_ID))

+				.andReturn(loanOfficersSelectionItems);

+		replay(personnelBusinessServiceMock);

+		replay(reportsParameterServiceMock);

+		List<SelectionItem> activeLoanOfficers = collectionSheetReportService

+				.getActiveLoanOfficers(PERSONNEL_ANY_ID, ANY_ID);

+		verify(personnelBusinessServiceMock);

+		verify(reportsParameterServiceMock);

+		assertEquals(MAX_COUNT + 1, activeLoanOfficers.size());

+		assertEquals(ALL_LOAN_OFFICER_SELECTION_ITEM, activeLoanOfficers.get(0));

+	}

+

+	public void testWhenBranchOfficeIdIsNull() throws Exception {

+		replay(personnelBusinessServiceMock);

+		List<SelectionItem> activeLoanOfficers = collectionSheetReportService

+				.getActiveLoanOfficers(PERSONNEL_ANY_ID, null);

+		verify(personnelBusinessServiceMock);

+		assertEquals(1, activeLoanOfficers.size());

+		assertEquals(SELECT_LOAN_OFFICER_SELECTION_ITEM, activeLoanOfficers

+				.get(0));

+	}

+

+	public void testRetrieveLoanOfficersReturnNAWhenUserIdDoesNotExist()

+			throws Exception {

+		expect(personnelBusinessServiceMock.getPersonnel(ANY_SHORT_ID))

+				.andReturn(null);

+		replay(personnelBusinessServiceMock);

+		List<SelectionItem> loanOfficers = collectionSheetReportService

+				.getActiveLoanOfficers(ANY_ID, ANY_ID);

+		verify(personnelBusinessServiceMock);

+		assertEquals(1, loanOfficers.size());

+		assertSame(NA_LOAN_OFFICER_SELECTION_ITEM, loanOfficers.get(0));

+	}

+

+	public void testOnlySelfLoanOfficerPopulatedIfUserIsLoanOfficer()

+			throws Exception {

+		expect(

+				personnelBusinessServiceMock

+						.getPersonnel(PERSONNEL_ANY_SHORT_ID)).andReturn(

+				LOAN_OFFICER);

+		replay(personnelBusinessServiceMock);

+		List<SelectionItem> activeLoanOfficers = collectionSheetReportService

+				.getActiveLoanOfficers(PERSONNEL_ANY_ID, BRANCH_ID);

+		assertEquals(1, activeLoanOfficers.size());

+		assertEquals(new SelectionItem(LOAN_OFFICER.getPersonnelId(),

+				LOAN_OFFICER.getDisplayName()), activeLoanOfficers.get(0));

+		verify(personnelBusinessServiceMock);

+	}

+

+	public void testLoanOfficerNAWhenNoneExistsForABranch() throws Exception {

+		setExpectationForAnyUserWhenRetrievingLoanOfficer();

+		expect(

+				reportsParameterServiceMock

+						.getActiveLoanOfficersUnderOffice(ANY_SHORT_ID))

+				.andReturn(new ArrayList<SelectionItem>());

+		replay(personnelBusinessServiceMock);

+		replay(reportsParameterServiceMock);

+		retrieveAndAssertLoanOfficer(anyOffice.getOfficeId(),

+				NA_LOAN_OFFICER_SELECTION_ITEM);

+		verify(personnelBusinessServiceMock);

+		verify(reportsParameterServiceMock);

+	}

+

+	private void retrieveAndAssertLoanOfficer(Short officeId,

+			SelectionItem expectedLoanOfficer) throws ServiceException,

+			PersistenceException {

+		List<SelectionItem> activeLoanOfficers = collectionSheetReportService

+				.getActiveLoanOfficers(PERSONNEL_ANY_ID,

+						convertShortToInteger(officeId));

+		verify(personnelBusinessServiceMock);

+		assertEquals(1, activeLoanOfficers.size());

+		assertEquals(expectedLoanOfficer, activeLoanOfficers.get(0));

+	}

+

+	public void testCenterIsSelectLoanOfficerIsSelect() throws Exception {

+		retrieveAndAssertCenterBO(SELECT_LOAN_OFFICER_SELECTION_ITEM.getId(),

+				SelectionItem.SELECT_CENTER_SELECTION_ITEM);

+	}

+

+	public void testCenterForLoanOfficerIsNotApplicable() throws Exception {

+		retrieveAndAssertCenterBO(NA_LOAN_OFFICER_SELECTION_ITEM.getId(),

+				SelectionItem.NA_CENTER_SELECTION_ITEM);

+	}

+

+	public void testCenterWhenLoanOfficerIdNull() throws Exception {

+		retrieveAndAssertCenterBO(null,

+				SelectionItem.SELECT_CENTER_SELECTION_ITEM);

+	}

+

+	public void testCenterForExistingLoanOfficer() throws Exception {

+		expect(

+				reportsParameterServiceMock.getActiveCentersUnderUser(

+						BRANCH_SHORT_ID, anyPersonnel

+								.getPersonnelId())).andReturn(

+				centerSelectionItems);

+		expect(personnelBusinessServiceMock.getPersonnel(ANY_SHORT_ID))

+				.andReturn(anyPersonnel);

+		replay(reportsParameterServiceMock);

+		replay(personnelBusinessServiceMock);

+		List<SelectionItem> activeCenters = collectionSheetReportService

+				.getActiveCentersForLoanOfficer(ANY_ID, BRANCH_ID);

+		assertEquals(MAX_COUNT + 1, activeCenters.size());

+		assertEquals(SelectionItem.ALL_CENTER_SELECTION_ITEM, activeCenters

+				.get(0));

+		verify(reportsParameterServiceMock);

+		verify(personnelBusinessServiceMock);

+	}

+

+	public void testCenterForAllLoanOfficers() throws Exception {

+		ArrayList<SelectionItem> personnels = new ArrayList<SelectionItem>();

+		SelectionItem otherPersonnel = SelectionItemFixture

+						.createSelectionItem(new Short("2"));

+		personnels.add(otherPersonnel);

+		personnels.add(SelectionItemFixture.createSelectionItem(anyPersonnel.getPersonnelId()));

+		expect(

+				reportsParameterServiceMock

+						.getActiveLoanOfficersUnderOffice(BRANCH_SHORT_ID))

+				.andReturn(personnels);

+		ArrayList<SelectionItem> anyCustomers = new ArrayList<SelectionItem>();

+		SelectionItem anyOneCustomer = SelectionItemFixture

+				.createSelectionItem(1);

+		anyCustomers.add(anyOneCustomer);

+		anyCustomers.add(SelectionItemFixture.createSelectionItem(2));

+		ArrayList<SelectionItem> otherCustomers = new ArrayList<SelectionItem>();

+		SelectionItem otherOneCustomer = SelectionItemFixture

+				.createSelectionItem(3);

+		otherCustomers.add(otherOneCustomer);

+		otherCustomers.add(SelectionItemFixture.createSelectionItem(4));

+		expect(

+				reportsParameterServiceMock.getActiveCentersUnderUser(

+						BRANCH_SHORT_ID, anyPersonnel

+								.getPersonnelId())).andReturn(anyCustomers);

+		expect(

+				reportsParameterServiceMock.getActiveCentersUnderUser(

+						BRANCH_SHORT_ID,

+						otherPersonnel.getId())).andReturn(

+				otherCustomers);

+		replay(reportsParameterServiceMock);

+		replay(personnelBusinessServiceMock);

+		List<SelectionItem> activeCenters = collectionSheetReportService

+				.getActiveCentersForLoanOfficer(

+						s2i(ALL_LOAN_OFFICER_SELECTION_ITEM.getId()), BRANCH_ID);

+		assertEquals(5, activeCenters.size());

+		assertEquals(SelectionItem.ALL_CENTER_SELECTION_ITEM, activeCenters

+				.get(0));

+		assertTrue(activeCenters.contains(anyOneCustomer));

+		assertTrue(activeCenters.contains(otherOneCustomer));

+		verify(reportsParameterServiceMock);

+		verify(personnelBusinessServiceMock);

+	}

+

+	private void retrieveAndAssertCenterBO(Short loanOfficerId,

+			SelectionItem expectedCenter) throws ServiceException,

+			PersistenceException {

+		List<SelectionItem> centersForLoanOfficer = collectionSheetReportService

+				.getActiveCentersForLoanOfficer(

+						convertShortToInteger(loanOfficerId), null);

+		assertEquals(1, centersForLoanOfficer.size());

+		assertEquals(expectedCenter, centersForLoanOfficer.get(0));

+	}

+

+	private void retrieveAndAssertGroupBO(Short loanOfficerId,

+			SelectionItem expectedGroup) throws ServiceException,

+			PersistenceException {

+		List<SelectionItem> groupsForLoanOfficer = collectionSheetReportService

+				.getActiveGroupsForLoanOfficer(

+						convertShortToInteger(loanOfficerId), BRANCH_ID);

+		assertEquals(1, groupsForLoanOfficer.size());

+		assertEquals(expectedGroup, groupsForLoanOfficer.get(0));

+	}

+

+	public void testGetCollectionSheetForGivenBranchLoanOfficerCenterAndMeetingDate()

+			throws Exception {

+		expect(customerBusinessServiceMock.getCustomer(CENTER_ID)).andReturn(

+				center);

+		expect(

+				collectionSheetServiceMock

+						.getCollectionSheetForCustomerOnMeetingDate(

+								sqlMeetingDate, CENTER_ID,

+								LOAN_OFFICER_SHORT_ID, CustomerLevel.CENTER))

+				.andReturn(centerCollectionSheets);

+		expect(

+				collectionSheetServiceMock.getCollectionSheetForGroups(

+						sqlMeetingDate, centerCollectionSheets.get(0),

+						LOAN_OFFICER_SHORT_ID)).andReturn(

+				groupsCollectionSheets);

+

+		expect(

+				collectionSheetServiceMock.getCollectionSheetForCustomers(

+						sqlMeetingDate, groupsCollectionSheets.get(0),

+						LOAN_OFFICER_SHORT_ID)).andReturn(

+				customerCollectionSheets);

+

+		setProductOfferingExpectation();

+		expect(officeBusinessServiceMock.getOffice(BRANCH_SHORT_ID)).andReturn(

+				OFFICE);

+		replay(collectionSheetServiceMock);

+		replay(customerBusinessServiceMock);

+		replay(officeBusinessServiceMock);

+		replay(loanProductBusinessServiceMock);

+		replay(savingsProductBusinessServiceMock);

+		replay(reportProductOfferingService);

+		List<CollectionSheetReportDTO> collectionSheets = collectionSheetReportService

+				.getCollectionSheets(BRANCH_ID, LOAN_OFFICER_ID, CENTER_ID,

+						sqlMeetingDate, s2i(CustomerLevel.CENTER.getValue()));

+		verify(collectionSheetServiceMock);

+		verify(customerBusinessServiceMock);

+		verify(officeBusinessServiceMock);

+		verify(loanProductBusinessServiceMock);

+		verify(savingsProductBusinessServiceMock);

+		verify(reportProductOfferingService);

+		assertEquals(2, collectionSheets.size());

+	}

+

+	private void setProductOfferingExpectation() throws ServiceException {

+		setLoanOfferingExpectation(

+				CollectionSheetReportServiceTest.BSKL_PRODUCT_OFFERING_ID,

+				CollectionSheetReportServiceTest.CL_PRODUCT_OFFERING_ID);

+		setSavingsOfferingExpectation(

+				CollectionSheetReportServiceTest.MM1_SAVINGS_PRODUCT_ID,

+				CollectionSheetReportServiceTest.MM2_SAVINGS_PRODUCT_ID);

+

+	}

+

+	private void setSavingsOfferingExpectation(Short savingProductOffering1,

+			Short savingProductOffering2) throws ServiceException {

+		expect(reportProductOfferingService.getSavingsProduct1()).andReturn(

+				savingProductOffering1);

+		expect(

+				savingsProductBusinessServiceMock

+						.getSavingsProduct(savingProductOffering1)).andReturn(

+				new SavingsOfferingBO(savingProductOffering1));

+		expect(reportProductOfferingService.getSavingsProduct2()).andReturn(

+				savingProductOffering2);

+		expect(

+				savingsProductBusinessServiceMock

+						.getSavingsProduct(savingProductOffering2)).andReturn(

+				new SavingsOfferingBO(savingProductOffering2));

+	}

+

+	private void setLoanOfferingExpectation(Short loanProductOffering1,

+			Short loanProductOffering2) throws ServiceException {

+		expect(reportProductOfferingService.getLoanProduct1()).andReturn(

+				loanProductOffering1);

+		expect(

+				loanProductBusinessServiceMock

+						.getLoanOffering(loanProductOffering1)).andReturn(

+				new LoanOfferingBO(loanProductOffering1));

+		expect(reportProductOfferingService.getLoanProduct2()).andReturn(

+				loanProductOffering2);

+		expect(

+				loanProductBusinessServiceMock

+						.getLoanOffering(loanProductOffering2)).andReturn(

+				new LoanOfferingBO(loanProductOffering2));

+	}

+

+	public void testGetCollectionSheetForAllCenterOffices() throws Exception {

+		expect(personnelBusinessServiceMock.getPersonnel(LOAN_OFFICER_SHORT_ID))

+				.andReturn(LOAN_OFFICER);

+		expect(

+				customerBusinessServiceMock

+						.getActiveCentersUnderUser(LOAN_OFFICER)).andReturn(

+				centers);

+		expect(officeBusinessServiceMock.getOffice(BRANCH_SHORT_ID)).andReturn(

+				OFFICE);

+

+		for (CustomerBO center : centers) {

+			expect(

+					collectionSheetServiceMock

+							.getCollectionSheetForCustomerOnMeetingDate(

+									sqlMeetingDate, center.getCustomerId(),

+									center.getPersonnel().getPersonnelId(),

+									CustomerLevel.CENTER)).andReturn(

+					centerCollectionSheets);

+			expect(

+					collectionSheetServiceMock.getCollectionSheetForGroups(

+							sqlMeetingDate, centerCollectionSheets.get(0),

+							LOAN_OFFICER_SHORT_ID)).andReturn(

+					groupsCollectionSheets);

+

+			expect(

+					collectionSheetServiceMock.getCollectionSheetForCustomers(

+							sqlMeetingDate, groupCollectionSheet,

+							LOAN_OFFICER_SHORT_ID)).andReturn(

+					anyCollectionSheetCustomer);

+			setProductOfferingExpectation();

+		}

+

+		replay(customerBusinessServiceMock);

+		replay(personnelBusinessServiceMock);

+		replay(collectionSheetServiceMock);

+		replay(officeBusinessServiceMock);

+		replay(loanProductBusinessServiceMock);

+		replay(savingsProductBusinessServiceMock);

+		replay(reportProductOfferingService);

+		List<CollectionSheetReportDTO> collectionSheets = collectionSheetReportService

+				.getCollectionSheets(BRANCH_ID, LOAN_OFFICER_ID, ALL_CENTER_ID,

+						meetingDate, s2i(CustomerLevel.CENTER.getValue()));

+		verify(customerBusinessServiceMock);

+		verify(personnelBusinessServiceMock);

+		verify(collectionSheetServiceMock);

+		verify(officeBusinessServiceMock);

+		verify(loanProductBusinessServiceMock);

+		verify(savingsProductBusinessServiceMock);

+		verify(reportProductOfferingService);

+		assertEquals(MAX_COUNT, collectionSheets.size());

+	}

+

+	public void testCollectionSheetForAllLoanOfficerAllCenterOffices()

+			throws Exception {

+		expect(

+				personnelBusinessServiceMock

+						.getActiveLoanOfficersUnderOffice(convertIntegerToShort(BRANCH_ID)))

+				.andReturn(loanOfficers);

+		int centerId = 100;

+		for (PersonnelBO loanOfficer : loanOfficers) {

+			centerId++;

+			ArrayList<CustomerBO> center = new ArrayList<CustomerBO>();

+			center.add(CustomerFixture.createCenterBO(

+					Integer.valueOf(centerId), loanOfficer));

+			expect(

+					customerBusinessServiceMock

+							.getActiveCentersUnderUser(loanOfficer)).andReturn(

+					center);

+			expect(

+					collectionSheetServiceMock

+							.getCollectionSheetForCustomerOnMeetingDate(

+									sqlMeetingDate, Integer.valueOf(centerId),

+									loanOfficer.getPersonnelId(),

+									CustomerLevel.CENTER)).andReturn(

+					centerCollectionSheets);

+			expect(

+					collectionSheetServiceMock.getCollectionSheetForGroups(

+							sqlMeetingDate, centerCollectionSheet, loanOfficer

+									.getPersonnelId())).andReturn(

+					groupsCollectionSheets);

+			expect(

+					collectionSheetServiceMock.getCollectionSheetForCustomers(

+							sqlMeetingDate, groupCollectionSheet, loanOfficer

+									.getPersonnelId())).andReturn(

+					customerCollectionSheets);

+			setProductOfferingExpectation();

+		}

+		expect(officeBusinessServiceMock.getOffice(BRANCH_SHORT_ID)).andReturn(

+				OFFICE);

+		replay(personnelBusinessServiceMock);

+		replay(customerBusinessServiceMock);

+		replay(collectionSheetServiceMock);

+		replay(officeBusinessServiceMock);

+		replay(loanProductBusinessServiceMock);

+		replay(savingsProductBusinessServiceMock);

+		replay(reportProductOfferingService);

+		List<CollectionSheetReportDTO> collectionSheets = collectionSheetReportService

+				.getCollectionSheets(BRANCH_ID, ALL_LOAN_OFFICER_ID,

+						ALL_CENTER_ID, meetingDate, s2i(CustomerLevel.CENTER

+								.getValue()));

+		verify(personnelBusinessServiceMock);

+		verify(customerBusinessServiceMock);

+		verify(collectionSheetServiceMock);

+		verify(officeBusinessServiceMock);

+		verify(loanProductBusinessServiceMock);

+		verify(savingsProductBusinessServiceMock);

+		verify(reportProductOfferingService);

+		assertEquals(MAX_COUNT * 2, collectionSheets.size());

+	}

+

+	public void testBsklProductFilterReturnsLoanProductWithBsklOfferingType()

+			throws Exception {

+		expect(

+				loanProductBusinessServiceMock

+						.getLoanOffering(BSKL_PRODUCT_OFFERING_ID)).andReturn(

+				bsklLoanProductOffering);

+

+		expect(accountBusinessServiceMock.getAccount(BSKL_LOAN_ACCNT_ID))

+				.andReturn(new LoanBO(bsklLoanProductOffering));

+

+		replay(accountBusinessServiceMock);

+		replay(loanProductBusinessServiceMock);

+

+		CollSheetLnDetailsEntity filteredLoanDetailEntity = collectionSheetReportService

+				.getLoanProduct(collectionSheet, collectionSheetReportService

+						.getLoanOffering(BSKL_PRODUCT_OFFERING_ID));

+		assertNotNull(filteredLoanDetailEntity);

+		assertSame(bsklLoanDetailsEntity, filteredLoanDetailEntity);

+		verify(accountBusinessServiceMock);

+		verify(loanProductBusinessServiceMock);

+	}

+

+	public void testClLoanProductFilterReturnsLoanProductWithClLoanOfferingType()

+			throws Exception {

+		expect(

+				loanProductBusinessServiceMock

+						.getLoanOffering(CL_PRODUCT_OFFERING_ID)).andReturn(

+				clLoanProductOffering);

+

+		expect(accountBusinessServiceMock.getAccount(CL_LOAN_ACCNT_ID))

+				.andReturn(new LoanBO(clLoanProductOffering));

+		expect(accountBusinessServiceMock.getAccount(BSKL_LOAN_ACCNT_ID))

+				.andReturn(new LoanBO(bsklLoanProductOffering));

+

+		replay(accountBusinessServiceMock);

+		replay(loanProductBusinessServiceMock);

+

+		CollSheetLnDetailsEntity filteredLoanDetailEntity = collectionSheetReportService

+				.getLoanProduct(collectionSheet, collectionSheetReportService

+						.getLoanOffering(CL_PRODUCT_OFFERING_ID));

+		assertNotNull(filteredLoanDetailEntity);

+		assertSame(clLoanDetailsEntity, filteredLoanDetailEntity);

+		verify(accountBusinessServiceMock);

+		verify(loanProductBusinessServiceMock);

+	}

+

+	public void testMm1SavingsProductFilterReturnsSavingsProductWithMm1OfferingType()

+			throws Exception {

+		expect(

+				savingsProductBusinessServiceMock

+						.getSavingsProduct(MM1_SAVINGS_PRODUCT_ID)).andReturn(

+				mm1SavingsProductOffering);

+

+		expect(accountBusinessServiceMock.getAccount(MM1_SAVINGS_ACCNT_ID))

+				.andReturn(new SavingsBO(mm1SavingsProductOffering));

+		expect(accountBusinessServiceMock.getAccount(SK_SAVINGS_ACCNT_ID))

+				.andReturn(new SavingsBO(skSavingsProductOffering));

+

+		replay(savingsProductBusinessServiceMock);

+		replay(accountBusinessServiceMock);

+

+		CollSheetSavingsDetailsEntity filteredSavingsDetailEntity = collectionSheetReportService

+				.getSavingProduct(collectionSheet, collectionSheetReportService

+						.getSavingsOffering(MM1_SAVINGS_PRODUCT_ID));

+		assertNotNull(filteredSavingsDetailEntity);

+		assertSame(mm1SavingDetailsEntity, filteredSavingsDetailEntity);

+		verify(savingsProductBusinessServiceMock);

+		verify(accountBusinessServiceMock);

+	}

+

+	public void testGetMeetingDatesForCenterWhenSpecifiedBranchOfficerAndCenter()

+			throws Exception {

+		expect(

+				reportsParameterServiceMock.getMeetingDates(BRANCH_SHORT_ID,

+						LOAN_OFFICER_SHORT_ID, CENTER_ID, CustomerLevel.CENTER,

+						DateUtils.getSqlDate(2007, Calendar.JUNE, 30)))

+				.andReturn(new ArrayList<DateSelectionItem>());

+		replay(reportsParameterServiceMock);

+		collectionSheetReportService.getMeetingDatesForCenter(BRANCH_ID,

+				CENTER_ID, LOAN_OFFICER_ID);

+		verify(reportsParameterServiceMock);

+	}

+

+	public void testGetMeetingDatesForGroupsWhenSpecifiedBranchOfficerAndCenter()

+	throws Exception {

+		expect(

+				reportsParameterServiceMock.getMeetingDates(BRANCH_SHORT_ID,

+						LOAN_OFFICER_SHORT_ID, GROUP_ID, CustomerLevel.GROUP,

+						DateUtils.getSqlDate(2007, Calendar.JUNE, 30)))

+						.andReturn(new ArrayList<DateSelectionItem>());

+		replay(reportsParameterServiceMock);

+		collectionSheetReportService.getMeetingDatesForGroup(BRANCH_ID,

+				GROUP_ID, LOAN_OFFICER_ID);

+		verify(reportsParameterServiceMock);

+	}

+	

+	public void testGetMeetingDatesForCeneterWhenSpecifiedBranchAllOfficerAndCenterParameters()

+			throws Exception {

+		expect(reportsParameterServiceMock.getMeetingDates(BRANCH_SHORT_ID,

+				center.getPersonnel().getPersonnelId(), CENTER_ID, CustomerLevel.CENTER,

+				DateUtils.getSqlDate(2007, Calendar.JUNE, 30))).andReturn(new ArrayList<DateSelectionItem>());

+		expect(customerBusinessServiceMock.getCustomer(CENTER_ID)).andReturn(

+				center);

+		replay(customerBusinessServiceMock);

+		replay(reportsParameterServiceMock);

+		collectionSheetReportService.getMeetingDatesForCenter(BRANCH_ID,

+				CENTER_ID, ALL_LOAN_OFFICER_ID);

+		verify(customerBusinessServiceMock);

+		verify(reportsParameterServiceMock);

+	}

+

+	public void testGetMeetingDatesForGroupsWhenSpecifiedBranchAllOfficerAndCenterParameters()

+	throws Exception {

+		expect(reportsParameterServiceMock.getMeetingDates(BRANCH_SHORT_ID,

+				center.getPersonnel().getPersonnelId(), GROUP_ID, CustomerLevel.GROUP,

+				DateUtils.getSqlDate(2007, Calendar.JUNE, 30))).andReturn(new ArrayList<DateSelectionItem>());

+		expect(customerBusinessServiceMock.getCustomer(GROUP_ID)).andReturn(

+				group);

+		replay(customerBusinessServiceMock);

+		replay(reportsParameterServiceMock);

+		collectionSheetReportService.getMeetingDatesForGroup(BRANCH_ID,

+				GROUP_ID, ALL_LOAN_OFFICER_ID);

+		verify(customerBusinessServiceMock);

+		verify(reportsParameterServiceMock);

+	}

+	

+	public void testGetMeetingDatesForCenterWhenNACenter() throws Exception {

+		List<org.mifos.application.reports.ui.DateSelectionItem> meetingDates = collectionSheetReportService

+				.getMeetingDatesForCenter(

+						BRANCH_ID,

+						convertShortToInteger(NA_CENTER_SELECTION_ITEM.getId()),

+						convertShortToInteger(NA_LOAN_OFFICER_SELECTION_ITEM

+								.getId()));

+		assertEquals(1, meetingDates.size());

+	}

+

+	public void testMeetingDateForGroupForNACenter() throws Exception {

+		List<org.mifos.application.reports.ui.DateSelectionItem> meetingDates = collectionSheetReportService

+		.getMeetingDatesForGroup(

+				BRANCH_ID,

+				convertShortToInteger(NA_CENTER_SELECTION_ITEM.getId()),

+				convertShortToInteger(NA_LOAN_OFFICER_SELECTION_ITEM

+						.getId()));

+		assertEquals(1, meetingDates.size());

+	}

+	

+	public void testForALoanOfficerUserOnlyBranchOfficeRelatedPopulated()

+			throws Exception {

+		expect(personnelBusinessServiceMock.getPersonnel(LOAN_OFFICER_SHORT_ID))

+				.andReturn(LOAN_OFFICER);

+		expect(

+				reportsParameterServiceMock

+						.getActiveBranchesUnderUser(LOAN_OFFICER

+								.getOfficeSearchId())).andReturn(

+				asList(OFFICE_SELECTION_ITEM));

+		replay(personnelBusinessServiceMock);

+		replay(reportsParameterServiceMock);

+		List<SelectionItem> offices = collectionSheetReportService

+				.getBranchOffices(LOAN_OFFICER_ID);

+		verify(personnelBusinessServiceMock);

+		verify(reportsParameterServiceMock);

+		assertEquals(2, offices.size());

+		assertSame(SELECT_BRANCH_OFFICE_SELECTION_ITEM, offices.get(0));

+		assertSame(OFFICE_SELECTION_ITEM, offices.get(1));

+	}

+

+	public void testGroupIsSelectLoanOfficerIsSelect() throws Exception {

+		retrieveAndAssertGroupBO(

+				SelectionItem.SELECT_LOAN_OFFICER_SELECTION_ITEM.getId(),

+				SelectionItem.SELECT_GROUP_SELECTION_ITEM);

+	}

+

+	public void testGroupForLoanOfficerIsNotApplicable() throws Exception {

+		retrieveAndAssertGroupBO(SelectionItem.NA_LOAN_OFFICER_SELECTION_ITEM

+				.getId(), SelectionItem.NA_GROUP_SELECTION_ITEM);

+	}

+

+	public void testGroupWhenLoanOfficerIdNull() throws Exception {

+		retrieveAndAssertGroupBO(null,

+				SelectionItem.SELECT_GROUP_SELECTION_ITEM);

+	}

+

+	public void testGetActiveGroupsForLoanOfficerAndBranch() throws Exception {

+		expect(

+				reportsParameterServiceMock.getActiveGroupsUnderUser(

+						BRANCH_SHORT_ID, LOAN_OFFICER.getPersonnelId()))

+				.andReturn(asList(new SelectionItem(Short.valueOf("1"), "")));

+		expect(

+				personnelBusinessServiceMock.getPersonnel(LOAN_OFFICER

+						.getPersonnelId())).andReturn(LOAN_OFFICER);

+		replay(reportsParameterServiceMock);

+		replay(personnelBusinessServiceMock);

+		List<SelectionItem> activeGroupsUnderUser = collectionSheetReportService

+				.getActiveGroupsForLoanOfficer(LOAN_OFFICER_ID, BRANCH_ID);

+		assertEquals(2, activeGroupsUnderUser.size());

+		assertEquals(ALL_GROUP_SELECTION_ITEM, activeGroupsUnderUser.get(0));

+		verify(reportsParameterServiceMock);

+		verify(personnelBusinessServiceMock);

+	}

+

+	public void testGroupForAllLoanOfficers() throws Exception {

+		ArrayList<SelectionItem> personnels = new ArrayList<SelectionItem>();

+		personnels.add(SelectionItemFixture.createSelectionItem(anyPersonnel

+				.getPersonnelId()));

+		SelectionItem otherPersonnel = SelectionItemFixture

+				.createSelectionItem(new Short("2"));

+		personnels.add(otherPersonnel);

+

+		ArrayList<SelectionItem> anyCustomers = new ArrayList<SelectionItem>();

+		SelectionItem anyOneCustomer = SelectionItemFixture

+				.createSelectionItem(new Integer(1));

+		anyCustomers.add(anyOneCustomer);

+		anyCustomers.add(SelectionItemFixture.createSelectionItem(2));

+

+		ArrayList<SelectionItem> otherCustomers = new ArrayList<SelectionItem>();

+		SelectionItem otherOneCustomer = SelectionItemFixture

+				.createSelectionItem(3);

+		otherCustomers.add(otherOneCustomer);

+		otherCustomers.add(SelectionItemFixture.createSelectionItem(4));

+		expect(

+				reportsParameterServiceMock

+						.getActiveLoanOfficersUnderOffice(ANY_SHORT_ID))

+				.andReturn(personnels);

+		expect(

+				reportsParameterServiceMock.getActiveGroupsUnderUser(

+						ANY_SHORT_ID, anyPersonnel.getPersonnelId()))

+				.andReturn(anyCustomers);

+		expect(

+				reportsParameterServiceMock.getActiveGroupsUnderUser(

+						ANY_SHORT_ID, otherPersonnel.getId())).andReturn(

+				otherCustomers);

+

+		replay(reportsParameterServiceMock);

+		replay(personnelBusinessServiceMock);

+

+		List<SelectionItem> activeGroups = collectionSheetReportService

+				.getActiveGroupsForLoanOfficer(ALL_LOAN_OFFICER_ID, ANY_ID);

+		assertEquals(5, activeGroups.size());

+		assertEquals(SelectionItem.ALL_GROUP_SELECTION_ITEM, activeGroups

+				.get(0));

+		assertTrue(activeGroups.contains(new SelectionItem(anyOneCustomer

+				.getId(), anyOneCustomer.getDisplayName())));

+		assertTrue(activeGroups.contains(new SelectionItem(otherOneCustomer

+				.getId(), otherOneCustomer.getDisplayName())));

+		verify(reportsParameterServiceMock);

+		verify(personnelBusinessServiceMock);

+	}

+

+	@Override

+	protected void setUp() throws Exception {

+		super.setUp();

+		meetingDate = DateUtils.getDate(2000, Calendar.JANUARY, 1);

+		sqlMeetingDate = DateUtils.convertToSqlDate(meetingDate);

+		MifosLogManager.configure(FilePaths.LOGFILE);

+		collectionSheetServiceMock = createMock(CollectionSheetService.class);

+		officeBusinessServiceMock = createMock(OfficeBusinessService.class);

+		personnelBusinessServiceMock = createMock(PersonnelBusinessService.class);

+		customerBusinessServiceMock = createMock(CustomerBusinessService.class);

+		accountBusinessServiceMock = createMock(AccountBusinessService.class);

+		loanProductBusinessServiceMock = createMock(LoanPrdBusinessService.class);

+		savingsProductBusinessServiceMock = createMock(SavingsPrdBusinessService.class);

+		reportProductOfferingService = createMock(ReportProductOfferingService.class);

+		reportsParameterServiceMock = createMock(ReportsParameterService.class);

+		collectionSheetReportService = new CollectionSheetReportService(

+				collectionSheetServiceMock, officeBusinessServiceMock,

+				personnelBusinessServiceMock, customerBusinessServiceMock,

+				accountBusinessServiceMock, loanProductBusinessServiceMock,

+				savingsProductBusinessServiceMock,

+				reportProductOfferingService, reportsParameterServiceMock);

+		branchOffices = new ArrayList<OfficeBO>();

+		branchOfficesSelectionItems = new ArrayList<SelectionItem>();

+		loanOfficers = new ArrayList<PersonnelBO>();

+		loanOfficersSelectionItems = new ArrayList<SelectionItem>();

+		centers = new ArrayList<CustomerBO>();

+		centerSelectionItems = new ArrayList<SelectionItem>();

+		for (int i = 0; i < MAX_COUNT; i++) {

+			OfficeBO office = OfficecFixture.createOffice(String.valueOf(i));

+			branchOffices.add(office);

+			branchOfficesSelectionItems.add(new SelectionItem(office

+					.getOfficeId(), office.getOfficeName()));

+			PersonnelBO loanOfficer = PersonnelFixture

+					.createPersonnel(new Short(String.valueOf(i)));

+			loanOfficers.add(loanOfficer);

+			loanOfficersSelectionItems.add(new SelectionItem(loanOfficer

+					.getPersonnelId(), loanOfficer.getDisplayName()));

+			CenterBO centerBO = CustomerFixture.createCenterBO(Integer

+					.valueOf(i), LOAN_OFFICER);

+			centers.add(centerBO);

+			centerSelectionItems.add(new SelectionItem(i2s(centerBO

+					.getCustomerId()), centerBO.getDisplayName()));

+		}

+		anyPersonnel = PersonnelFixture.createPersonnel(ANY_SHORT_ID);

+		anyOffice = OfficecFixture.createOffice(ANY_SHORT_ID);

+		anyCollectionSheetCustomer = new ArrayList<CollSheetCustBO>();

+		anyCollectionSheetCustomer.add(CollectionSheetCustomerBOFixture

+				.createCollectionSheet());

+

+		centerCollectionSheets = new ArrayList<CollSheetCustBO>();

+		centerCollectionSheet = generateCollectionSheet(CENTER_ID,

+				LOAN_OFFICER_SHORT_ID, CustomerLevel.CENTER);

+		centerCollectionSheets.add(centerCollectionSheet);

+

+		groupsCollectionSheets = new ArrayList<CollSheetCustBO>();

+		groupCollectionSheet = generateCollectionSheet(GROUP_ID,

+				LOAN_OFFICER_SHORT_ID, CustomerLevel.GROUP);

+		groupsCollectionSheets.add(groupCollectionSheet);

+

+

+		customerCollectionSheets = generateClientCollectionSheets(700,

+				groupCollectionSheet, LOAN_OFFICER_SHORT_ID);

+

+		center = CustomerFixture.createCenterBO(CENTER_ID, LOAN_OFFICER);

+		group = CustomerFixture.createGroupBO(GROUP_ID, LOAN_OFFICER);

+

+		collectionSheet = CollectionSheetCustomerBOFixture

+				.createCollectionSheet();

+		clLoanDetailsEntity = CollectionSheetLoanDetailsEntityFixture

+				.createLoanDetails(CL_LOAN_ACCNT_ID);

+		bsklLoanDetailsEntity = CollectionSheetLoanDetailsEntityFixture

+				.createLoanDetails(BSKL_LOAN_ACCNT_ID);

+		mm1SavingDetailsEntity = CollectionSheetSavingDetailsEntityFixture

+				.createSavingsDetails(MM1_SAVINGS_ACCNT_ID);

+		skSavingDetailsEntity = CollectionSheetSavingDetailsEntityFixture

+				.createSavingsDetails(SK_SAVINGS_ACCNT_ID);

+		collectionSheet.addCollectionSheetLoanDetail(clLoanDetailsEntity);

+		collectionSheet.addCollectionSheetLoanDetail(bsklLoanDetailsEntity);

+		collectionSheet.addCollectionSheetSavingsDetail(mm1SavingDetailsEntity);

+		collectionSheet.addCollectionSheetSavingsDetail(skSavingDetailsEntity);

+		bsklLoanProductOffering = new LoanOfferingBO(BSKL_PRODUCT_OFFERING_ID);

+		clLoanProductOffering = new LoanOfferingBO(CL_PRODUCT_OFFERING_ID);

+		mm1SavingsProductOffering = new SavingsOfferingBO(

+				MM1_SAVINGS_PRODUCT_ID);

+		skSavingsProductOffering = new SavingsOfferingBO(

+				SK_SAVING_PRD_OFFERING_ID);

+

+	}

+}

Index: test/org/mifos/application/reports/business/service/CollectionSheetServiceTest.java
==================================================================
--- test/org/mifos/application/reports/business/service/CollectionSheetServiceTest.java	(revision 12249)

+++ test/org/mifos/application/reports/business/service/CollectionSheetServiceTest.java	(patch commit-11012008a level 1)

@@ -0,0 +1,127 @@

+package org.mifos.application.reports.business.service;

+

+import java.sql.Date;

+import java.util.Calendar;

+import java.util.HashSet;

+import java.util.List;

+

+import org.hibernate.Session;

+import org.hibernate.Transaction;

+import org.mifos.application.collectionsheet.business.CollSheetCustBO;

+import org.mifos.application.collectionsheet.business.CollectionSheetBO;

+import org.mifos.application.collectionsheet.util.helpers.CollectionSheetConstants;

+import org.mifos.application.customer.util.helpers.CustomerLevel;

+import org.mifos.framework.hibernate.helper.HibernateUtil;

+import org.mifos.framework.util.CollectionUtils;

+import org.mifos.framework.util.helpers.DateUtils;

+

+public class CollectionSheetServiceTest extends AbstractCollectionSheetTestCase {

+	private Session session;

+	private Transaction transaction;

+	HashSet<CollSheetCustBO> generatedCollectionSheets;

+	private Date meetingDate;

+	private CollSheetCustBO anotherGroup;

+

+	public void testReturnsCollectionSheetForMeetingDateCenter()

+			throws Exception {

+		List<CollSheetCustBO> retrievedCenterCollectionSheets = collectionSheetService

+				.getCollectionSheetForCustomerOnMeetingDate(meetingDate,

+						CENTER_ID, LOAN_OFFICER_SHORT_ID, CustomerLevel.CENTER);

+		assertEquals(1, retrievedCenterCollectionSheets.size());

+		assertEquals(center, retrievedCenterCollectionSheets.get(0));

+	}

+

+	public void testReturnsCollectionSheetsForGroup() throws Exception {

+		List<CollSheetCustBO> meetingsForGroups = collectionSheetService

+				.getCollectionSheetForGroups(meetingDate, center,

+						LOAN_OFFICER_SHORT_ID);

+		assertEquals(2, meetingsForGroups.size());

+		assertTrue(meetingsForGroups.contains(group));

+		assertTrue(meetingsForGroups.contains(anotherGroup));

+	}

+

+	public void testCollectionSheetForIndividualCustomer() throws Exception {

+		List<CollSheetCustBO> collectionSheet = collectionSheetService

+				.getCollectionSheetForCustomers(meetingDate, group,

+						LOAN_OFFICER_SHORT_ID);

+		assertEquals(2, collectionSheet.size());

+	}

+

+//	public void testGetCollectionSheetForSpecifiedCenterBranchLoanOfficer()

+//			throws Exception {

+//		List<CollectionSheetBO> collectionSheet = collectionSheetService

+//				.getCollectionSheet(BRANCH_SHORT_ID, CENTER_ID,

+//						LOAN_OFFICER_SHORT_ID, meetingDate, CustomerLevel.CENTER);

+//		assertEquals(1, collectionSheet.size());

+//	}

+

+	@Override

+	protected void setUp() throws Exception {

+		super.setUp();		

+		collectionSheetService = new CollectionSheetService();

+		CollSheetCustBO centerUnderDifferentLoanOfficer = new CollSheetCustBO(

+				CENTER_ID, "Sample Center Under Different Loan Officer",

+				CustomerLevel.CENTER.getValue(), ANY_SHORT_ID, "", ANY_SHORT_ID);

+		CollSheetCustBO groupUnderDifferentLoanOfficer = new CollSheetCustBO(

+				GROUP_ID, "Sample Group", CustomerLevel.GROUP.getValue(),

+				ANY_SHORT_ID, "", ANY_SHORT_ID);

+		anotherGroup = new CollSheetCustBO(ANOTHER_GROUP_ID,

+				"Another Sample Group", CustomerLevel.GROUP.getValue(),

+				ANY_SHORT_ID, "", LOAN_OFFICER_SHORT_ID);

+

+		generatedCollectionSheets = new HashSet<CollSheetCustBO>();

+		group.setParentCustomerId(CENTER_ID);

+		groupUnderDifferentLoanOfficer.setParentCustomerId(CENTER_ID);

+		anotherGroup.setParentCustomerId(CENTER_ID);

+		generatedCollectionSheets.add(center);

+		generatedCollectionSheets.add(centerUnderDifferentLoanOfficer);

+		generatedCollectionSheets.add(group);

+		generatedCollectionSheets.add(groupUnderDifferentLoanOfficer);

+		generatedCollectionSheets.add(anotherGroup);

+

+

+		generatedCollectionSheets.addAll(generateClientCollectionSheets(300,

+				group, LOAN_OFFICER_SHORT_ID));

+		generatedCollectionSheets.addAll(generateClientCollectionSheets(302,

+				anotherGroup, LOAN_OFFICER_SHORT_ID));

+		generatedCollectionSheets.addAll(generateClientCollectionSheets(304,

+				anotherGroup, ANY_SHORT_ID));

+

+		meetingDate = DateUtils.getSqlDate(2001, Calendar.JANUARY, 1);

+		CollectionSheetBO collectionSheetBO = new CollectionSheetBO(

+				meetingDate, TODAYS_DATE, generatedCollectionSheets,

+				CollectionSheetConstants.COLLECTION_SHEET_GENERATION_SUCCESSFUL);

+

+		CollSheetCustBO customerForMeetingDateAfterSpecifiedDate = new CollSheetCustBO(

+				CENTER_ID,

+				"Customer with collectionsheet after specified meeting date",

+				CustomerLevel.CENTER.getValue(), BRANCH_SHORT_ID, "",

+				LOAN_OFFICER_SHORT_ID);

+		CollectionSheetBO collectionSheetBOForCenterBranchLoanOfficer = new CollectionSheetBO(

+				DateUtils.getSqlDate(2002, Calendar.FEBRUARY, 2), TODAYS_DATE,

+				CollectionUtils.asSet(customerForMeetingDateAfterSpecifiedDate),

+				CollectionSheetConstants.COLLECTION_SHEET_GENERATION_SUCCESSFUL);

+		

+		CollSheetCustBO customerForMeetingDateBeforeSpecifiedDate = new CollSheetCustBO(

+				CENTER_ID,

+				"Customer with collection sheet before meeting date",

+				CustomerLevel.CENTER.getValue(), BRANCH_SHORT_ID, "",

+				LOAN_OFFICER_SHORT_ID);

+		CollectionSheetBO collectionSheetBOBeforeSpecifiedMeetingDate = new CollectionSheetBO(

+				DateUtils.getSqlDate(2000, Calendar.DECEMBER, 31), TODAYS_DATE,

+				CollectionUtils.asSet(customerForMeetingDateBeforeSpecifiedDate),

+				CollectionSheetConstants.COLLECTION_SHEET_GENERATION_SUCCESSFUL);

+

+		session = HibernateUtil.getSessionTL();

+		transaction = session.beginTransaction();

+		session.save(collectionSheetBO);

+		session.save(collectionSheetBOForCenterBranchLoanOfficer);

+		session.save(collectionSheetBOBeforeSpecifiedMeetingDate);

+	}

+

+	@Override

+	protected void tearDown() throws Exception {

+		super.tearDown();

+		transaction.rollback();

+	}

+}

Index: test/org/mifos/application/reports/business/CollectionSheetReportParametersTest.java
==================================================================
--- test/org/mifos/application/reports/business/CollectionSheetReportParametersTest.java	(revision 12249)

+++ test/org/mifos/application/reports/business/CollectionSheetReportParametersTest.java	(patch commit-11012008a level 1)

@@ -0,0 +1,103 @@

+package org.mifos.application.reports.business;

+

+import static org.easymock.classextension.EasyMock.createMock;

+import static org.easymock.classextension.EasyMock.replay;

+import static org.easymock.classextension.EasyMock.verify;

+import static org.mifos.application.reports.ui.SelectionItem.NA_CENTER_SELECTION_ITEM;

+import static org.mifos.application.reports.ui.SelectionItem.NA_LOAN_OFFICER_SELECTION_ITEM;

+import static org.mifos.application.reports.ui.SelectionItem.SELECT_BRANCH_OFFICE_SELECTION_ITEM;

+import static org.mifos.application.reports.ui.SelectionItem.SELECT_CENTER_SELECTION_ITEM;

+import static org.mifos.application.reports.ui.SelectionItem.SELECT_LOAN_OFFICER_SELECTION_ITEM;

+

+import java.text.ParseException;

+

+import org.mifos.application.reports.business.validator.Errors;

+import org.mifos.framework.MifosTestCase;

+

+

+public class CollectionSheetReportParametersTest extends MifosTestCase {

+

+	private static final String VALID_DATE = "07/03/2007 12:00:00 AM";

+	private static final String VALID_ID = "0";

+	private CollectionSheetReportParameters reportParams;

+	private Errors errorsMock;

+

+	public void testValidatorReturnsErrorIfBranchIdIsSelect() throws Exception {

+		reportParams = new CollectionSheetReportParameters(String

+				.valueOf(SELECT_BRANCH_OFFICE_SELECTION_ITEM

+						.getId()), VALID_ID, VALID_ID, VALID_DATE);

+		errorsMock.rejectValue("branchId", "branchId.invalid");

+		replay(errorsMock);

+		reportParams.validate(errorsMock);

+		verify(errorsMock);

+	}

+

+	public void testValidatorReturnsLoanOfficerInvalidIfLoanOfficerIsSelect()

+			throws Exception {

+		reportParams = new CollectionSheetReportParameters(VALID_ID, String

+				.valueOf(SELECT_LOAN_OFFICER_SELECTION_ITEM

+						.getId()), VALID_ID, VALID_DATE);

+		errorsMock.rejectValue("loanOfficerId", "loanOfficerId.invalid");

+		replay(errorsMock);

+		reportParams.validate(errorsMock);

+		verify(errorsMock);

+	}

+

+	public void testValidatorReturnsLoanOfficerInvalidIfLoanOfficerIsNA()

+			throws Exception {

+		reportParams = new CollectionSheetReportParameters(VALID_ID, String

+				.valueOf(NA_LOAN_OFFICER_SELECTION_ITEM

+						.getId()), VALID_ID, VALID_DATE);

+		errorsMock.rejectValue("loanOfficerId", "loanOfficerId.invalid");

+		replay(errorsMock);

+		reportParams.validate(errorsMock);

+		verify(errorsMock);

+	}

+

+	public void testValidatorReturnsCenterInvalidIfCenterIsSelect()

+			throws Exception {

+		reportParams = new CollectionSheetReportParameters(VALID_ID, VALID_ID,

+				String.valueOf(SELECT_CENTER_SELECTION_ITEM

+						.getId()), VALID_DATE);

+		errorsMock.rejectValue("centerId", "centerId.invalid");

+		replay(errorsMock);

+		reportParams.validate(errorsMock);

+		verify(errorsMock);

+	}

+

+	public void testValidatorReturnsCenterInvalidIfCenterIsNA()

+			throws Exception {

+		reportParams = new CollectionSheetReportParameters(VALID_ID, VALID_ID,

+				String.valueOf(NA_CENTER_SELECTION_ITEM

+						.getId()), VALID_DATE);

+		errorsMock.rejectValue("centerId", "centerId.invalid");

+		replay(errorsMock);

+		reportParams.validate(errorsMock);

+		verify(errorsMock);

+	}

+

+	public void testValidatorReturnsMeetingDateInvalidIfMeetingDateIsSelect()

+			throws Exception {

+		reportParams = new CollectionSheetReportParameters(VALID_ID, VALID_ID,

+				VALID_ID, VALID_DATE);

+		replay(errorsMock);

+		reportParams.validate(errorsMock);

+		verify(errorsMock);

+	}

+

+	public void testReportDateFormat() throws Exception {

+		try {

+			CollectionSheetReportParameters.REPORT_DATE_PARAM_FORMAT

+					.parse("01/01/1970 05:30:00 AM");

+		}

+		catch (ParseException e) {			

+			fail("Should be parsing given date");

+		}		

+	}

+	

+	@Override

+	protected void setUp() throws Exception {

+		super.setUp();

+		errorsMock = createMock(Errors.class);

+	}

+}

Index: test/org/mifos/application/reports/business/DetailedAgingPortfolioReportParametersTest.java
==================================================================
--- test/org/mifos/application/reports/business/DetailedAgingPortfolioReportParametersTest.java	(revision 12249)

+++ test/org/mifos/application/reports/business/DetailedAgingPortfolioReportParametersTest.java	(patch commit-11012008a level 1)

@@ -0,0 +1,65 @@

+package org.mifos.application.reports.business;

+

+import org.mifos.application.reports.business.validator.Errors;

+import static org.easymock.classextension.EasyMock.createMock;

+import static org.easymock.classextension.EasyMock.replay;

+import static org.easymock.classextension.EasyMock.verify;

+

+import junit.framework.TestCase;

+

+public class DetailedAgingPortfolioReportParametersTest extends TestCase {

+

+	private Errors errorsMock;

+

+	public void testValidatorNoErrorIfAllParamsValid() throws Exception {

+		DetailedAgingPortfolioReportParameters reportParameters = new DetailedAgingPortfolioReportParameters(

+				DetailedAgingPortfolioReportParameters.VALID_ID,

+				DetailedAgingPortfolioReportParameters.VALID_ID,

+				DetailedAgingPortfolioReportParameters.VALID_ID);

+		replay(errorsMock);

+		reportParameters.validate(errorsMock);

+		verify(errorsMock);

+	}

+

+	public void testValidatorReturnsErrorIfBranchIdIsSelect() throws Exception {

+		DetailedAgingPortfolioReportParameters reportParameters = new DetailedAgingPortfolioReportParameters(

+				DetailedAgingPortfolioReportParameters.INVALID_ID,

+				DetailedAgingPortfolioReportParameters.VALID_ID,

+				DetailedAgingPortfolioReportParameters.VALID_ID);

+		errorsMock.rejectValue(DetailedAgingPortfolioReportParameters.BRANCH_ID_PARAM, 

+				DetailedAgingPortfolioReportParameters.BRANCH_ID_INVALID_MSG);

+		replay(errorsMock);

+		reportParameters.validate(errorsMock);

+		verify(errorsMock);

+	}

+	

+	public void testValidatorReturnsErrorIfLoanOfficerIsSelect() throws Exception {

+		DetailedAgingPortfolioReportParameters reportParameters = new DetailedAgingPortfolioReportParameters(

+				DetailedAgingPortfolioReportParameters.VALID_ID,

+				DetailedAgingPortfolioReportParameters.INVALID_ID,

+				DetailedAgingPortfolioReportParameters.VALID_ID);

+		errorsMock.rejectValue(DetailedAgingPortfolioReportParameters.LOAN_OFFICER_ID_PARAM, 

+				DetailedAgingPortfolioReportParameters.LOAN_OFFICER_ID_INVALID_MSG);

+		replay(errorsMock);

+		reportParameters.validate(errorsMock);

+		verify(errorsMock);

+	}

+	

+	public void testValidatorReturnsErrorIfLoanProductIsSelect() throws Exception {

+		DetailedAgingPortfolioReportParameters reportParameters = new DetailedAgingPortfolioReportParameters(

+				DetailedAgingPortfolioReportParameters.VALID_ID,

+				DetailedAgingPortfolioReportParameters.VALID_ID,

+				DetailedAgingPortfolioReportParameters.INVALID_ID);

+		errorsMock.rejectValue(DetailedAgingPortfolioReportParameters.LOAN_PRODUCT_ID,

+				DetailedAgingPortfolioReportParameters.LOAN_PRODUCT_ID_INVALID_MSG);

+		replay(errorsMock);

+		reportParameters.validate(errorsMock);

+		verify(errorsMock);

+	}

+

+	@Override

+	protected void setUp() throws Exception {

+		super.setUp();

+		errorsMock = createMock(Errors.class);

+	}

+}

\ No newline at end of file

Index: test/org/mifos/application/reports/persistence/DateSelectionItemPersistenceTest.java
==================================================================
--- test/org/mifos/application/reports/persistence/DateSelectionItemPersistenceTest.java	(revision 12249)

+++ test/org/mifos/application/reports/persistence/DateSelectionItemPersistenceTest.java	(patch commit-11012008a level 1)

@@ -0,0 +1,44 @@

+package org.mifos.application.reports.persistence;

+

+import java.util.Calendar;

+import java.util.Date;

+import java.util.List;

+

+import org.mifos.application.customer.util.helpers.CustomerLevel;

+import org.mifos.application.reports.ui.DateSelectionItem;

+import org.mifos.framework.MifosTestCase;

+import org.mifos.framework.util.helpers.DateUtils;

+

+public class DateSelectionItemPersistenceTest extends MifosTestCase {

+

+	private static final Date FROM_DATE = DateUtils.getDate(2007,

+								Calendar.JUNE, 1);

+	private static final Short LOAN_OFFICER_ID = Short.valueOf("19");

+	private static final Short BRANCH_ID = Short.valueOf("2");

+

+	public void testRetrievesMeetingDatesFromNamedQueryParamForCenter() throws Exception {

+		List<DateSelectionItem> meetingDates = null;

+		try {

+			meetingDates = new DateSelectionItemPersistence().getMeetingDates(

+					BRANCH_ID, LOAN_OFFICER_ID, 5609,

+					CustomerLevel.CENTER.getValue(), FROM_DATE);

+		}

+		catch (Exception e) {

+			fail("Should not throw any exceptions");

+		}

+		assertFalse(meetingDates.isEmpty());

+	}

+

+	public void testRetrievesMeetingDatesFromNamedQueryParamForGroupLevel() throws Exception {

+		List<DateSelectionItem> meetingDates = null;

+		try {

+			meetingDates = new DateSelectionItemPersistence().getMeetingDates(

+					BRANCH_ID, LOAN_OFFICER_ID, 5612,

+					CustomerLevel.GROUP.getValue(), FROM_DATE);

+		}

+		catch (Exception e) {

+			fail("Should not throw any exceptions");

+		}

+		assertFalse(meetingDates.isEmpty());

+	}

+}

Index: test/org/mifos/application/reports/struts/action/BirtReportValidationFilterTest.java
==================================================================
--- test/org/mifos/application/reports/struts/action/BirtReportValidationFilterTest.java	(revision 12249)

+++ test/org/mifos/application/reports/struts/action/BirtReportValidationFilterTest.java	(patch commit-11012008a level 1)

@@ -0,0 +1,24 @@

+package org.mifos.application.reports.struts.action;

+

+import junit.framework.TestCase;

+import servletunit.FilterChainSimulator;

+import servletunit.HttpServletRequestSimulator;

+import servletunit.HttpServletResponseSimulator;

+import servletunit.ServletContextSimulator;

+

+public class BirtReportValidationFilterTest extends TestCase {

+	public void testValidationForCollectionSheetReportWhenBranchIdIsSelect()

+			throws Exception {

+		BirtReportValidationFilter validationFilter = new BirtReportValidationFilter();

+		HttpServletRequestSimulator request = new HttpServletRequestSimulator(

+						new ServletContextSimulator());

+		HttpServletResponseSimulator response = new HttpServletResponseSimulator();

+		FilterChainSimulator filterChain = new FilterChainSimulator();

+		request.setParameterValue("branchId", new String[]{"-2"});

+		validationFilter.doFilter(request,

+				response, filterChain);

+		assertEquals(HttpServletResponseSimulator.SC_MOVED_TEMPORARILY,response.getStatusCode());

+		assertEquals("/mifos", response.getHeader("Location"));

+		

+	}

+}

Index: test/org/mifos/application/reports/ui	(new directory)
==================================================================
Index: test/org/mifos/application/reports/ui/SelectionItemFixture.java
==================================================================
--- test/org/mifos/application/reports/ui/SelectionItemFixture.java	(revision 12249)

+++ test/org/mifos/application/reports/ui/SelectionItemFixture.java	(patch commit-11012008a level 1)

@@ -0,0 +1,12 @@

+package org.mifos.application.reports.ui;

+

+import static org.mifos.framework.util.helpers.NumberUtils.*;

+public class SelectionItemFixture {

+	public static SelectionItem createSelectionItem(Integer id) {

+		return new SelectionItem(convertIntegerToShort(id), "");

+	}

+

+	public static SelectionItem createSelectionItem(Short personnelId) {

+		return new SelectionItem(personnelId, "");

+	}

+}

Index: test/org/mifos/application/reports/ui/SelectionItemTest.java
==================================================================
--- test/org/mifos/application/reports/ui/SelectionItemTest.java	(revision 12249)

+++ test/org/mifos/application/reports/ui/SelectionItemTest.java	(patch commit-11012008a level 1)

@@ -0,0 +1,66 @@

+package org.mifos.application.reports.ui;

+

+import java.util.List;

+

+import org.mifos.application.reports.persistence.SelectionItemPersistence;

+import org.mifos.framework.MifosTestCase;

+

+public class SelectionItemTest extends MifosTestCase {

+	private static final Short LOAN_OFFICER_ID = Short.valueOf("1");

+	private static final Short BRANCH_ID = Short.valueOf("3");

+	private SelectionItemPersistence selectionItemPersistence;

+

+	public void testRetrievesOfficesThroughNamedQuery() throws Exception {

+		List<SelectionItem> activeBranchesUnderUser = null;

+		try {

+			activeBranchesUnderUser = selectionItemPersistence

+					.getActiveBranchesUnderUser("1.1");

+		}

+		catch (Exception e) {

+			fail("Should not fail while retrieving SelectionItem");

+		}

+		assertFalse(activeBranchesUnderUser.isEmpty());

+	}

+

+	public void testRetrievesLoanOfficersThroughNamedQuery() throws Exception {

+		List<SelectionItem> activeLoanOfficers = null;

+		try {

+			activeLoanOfficers = selectionItemPersistence

+					.getActiveLoanOfficersUnderOffice(Short.valueOf("2"));

+		}

+		catch (Exception e) {

+			fail("Should not fail while retrieving SelectionItem");

+		}

+		assertFalse(activeLoanOfficers.isEmpty());

+	}

+

+	public void testRetrievesActiveCentersThroughNamedQuery() throws Exception {

+		List<SelectionItem> activeCentersUnderUser = null;

+		try {

+			activeCentersUnderUser = selectionItemPersistence

+					.getActiveCentersUnderUser(BRANCH_ID, LOAN_OFFICER_ID);

+		}

+		catch (Exception e) {

+			fail("Should not fail while retrieving SelectionItem");

+		}

+		assertFalse(activeCentersUnderUser.isEmpty());

+	}

+

+	public void testRetrievesActiveGroupsThroughNamedQuery() throws Exception {

+		List<SelectionItem> activeGroupsUnderUser = null;

+		try {

+			activeGroupsUnderUser = selectionItemPersistence

+					.getActiveGroupsUnderUser(BRANCH_ID, LOAN_OFFICER_ID);

+		}

+		catch (Exception e) {

+			fail("Should not fail while retrieving SelectionItem");

+		}

+		assertFalse(activeGroupsUnderUser.isEmpty());

+	}

+

+	@Override

+	protected void setUp() throws Exception {

+		super.setUp();

+		selectionItemPersistence = new SelectionItemPersistence();

+	}

+}

Index: test/org/mifos/framework/components/batchjobs/MifosSchedulerTest.java
==================================================================
--- test/org/mifos/framework/components/batchjobs/MifosSchedulerTest.java	(revision 12249)

+++ test/org/mifos/framework/components/batchjobs/MifosSchedulerTest.java	(patch commit-11012008a level 1)

@@ -20,7 +20,7 @@

 		MifosScheduler mifosScheduler = new MifosScheduler();

 		mifosScheduler.registerTasks();

 		List<String> taskNames = mifosScheduler.getTaskNames();

-		assertEquals(12, taskNames.size());

+		assertEquals(13, taskNames.size());

 		assertTrue(taskNames.contains("ProductStatus"));

 		assertTrue(taskNames.contains("CollectionSheetTask"));

 		assertTrue(taskNames.contains("LoanArrearsTask"));

@@ -33,5 +33,6 @@

 		assertTrue(taskNames.contains("GenerateMeetingsForCustomerAndSavingsTask"));

 		assertTrue(taskNames.contains("LoanArrearsAgingTask"));

 		assertTrue(taskNames.contains("ApplyHolidayChangesTask"));

+		assertTrue(taskNames.contains("CollectionSheetReportParameterCachingTask"));

 	}

 }

Index: test/org/mifos/framework/util/helpers/MockObjectHelpers.java
==================================================================
--- test/org/mifos/framework/util/helpers/MockObjectHelpers.java	(revision 12249)

+++ test/org/mifos/framework/util/helpers/MockObjectHelpers.java	(patch commit-11012008a level 1)

@@ -0,0 +1,20 @@

+package org.mifos.framework.util.helpers;

+

+import org.easymock.EasyMock;

+import org.easymock.IArgumentMatcher;

+

+public class MockObjectHelpers {

+

+	public static java.sql.Date eqAnySqlDate() {

+		EasyMock.reportMatcher(new IArgumentMatcher() {

+			public void appendTo(StringBuffer message) {

+				return;

+			}

+	

+			public boolean matches(Object other) {

+				return true;

+			}});

+		return null;

+	}	

+

+}

Index: BirtReportResource	(new directory)
==================================================================
Index: BirtReportResource/GrameenKootaCollectionSheetReportResource.properties
==================================================================
--- BirtReportResource/GrameenKootaCollectionSheetReportResource.properties	(revision 12249)

+++ BirtReportResource/GrameenKootaCollectionSheetReportResource.properties	(patch commit-11012008a level 1)

@@ -0,0 +1,46 @@

+#

+#Wed Dec 26 15:49:13 IST 2007

+collection.sheet.title=Collection Sheet Report

+collection.sheet.signature.center.leader=Center Leader

+collection.sheet.center.label=Center  \:

+collection.sheet.table.issues=Issues

+collection.sheet.table.other.collection=Other Collections

+collection.sheet.summary.loans.issued=No. of Loans Issued

+collection.sheet.table.other.collection.fines=Fines

+collection.sheet.summary.disbursement.other=Other Disbursement

+collection.sheet.summary.collection=Collections

+collection.sheet.signature.cashier=Cashier

+collection.sheet.table.att=Att

+collection.sheet.summary.absent=Absentees / Defaults

+collection.sheet.summary.collection.due=Due Collection

+collection.sheet.table.member.id=ID

+collection.sheet.report.parameter.meetingdate=Select Meeting Date

+collection.sheet.summary.collection.total=Total Collection

+collection.sheet.summary.disbursement=Disbursements

+collection.sheet.table.issues.subheader=Loan Instance

+collection.sheet.signature.center.manager=Center Manager

+collection.sheet.table.due.savings=Savings Instance

+collection.sheet.report.parameter.center=Select Center

+collection.sheet.report.parameter.group=Select Group

+collection.sheet.report.parameter.branch=Select Branch

+collection.sheet.meetingdate.label=Meeting Date \:

+collection.sheet.signature.branch.manager=Branch Manager

+collection.sheet.local.title=Grameen Koota

+collection.sheet.table.balances.savings=Savings Instance

+collection.sheet.table.due.loan=Loan Instance

+collection.sheet.summary.disbursement.actual=Actual Disbursement

+collection.sheet.report.parameter.loanofficer=Select Loan Officer

+collection.sheet.summary.disbursement.due=Due Disbursement

+collection.sheet.table.other.collection.fees=Fees

+collection.sheet.loanofficer.label=Loan Officer   \:

+collection.sheet.branch.label=Branch \:

+collection.sheet.summary.application.taken=Applications Taken

+collection.sheet.table.due=Dues

+collection.sheet.summary.disbursement.total=Total Disbursement

+collection.sheet.table.member.name=Member

+collection.sheet.summary.announcements=Announcements:

+collection.sheet.table.due.loan.total=Total Due

+collection.sheet.summary.collection.other=Other Collection

+collection.sheet.table.balances=Balances

+collection.sheet.summary.amount.taken.back=Amount taken back to Office

+collection.sheet.table.balances.loan=Loan Instance


=Index: BEGIN SVK PATCH BLOCK ====
Version: svk v2.0.2 (MSWin32)

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
=Index: END SVK PATCH BLOCK ====
