001 /* 002 * Copyright 2011 The Kuali Foundation. 003 * 004 * Licensed under the Educational Community License, Version 2.0 (the "License"); 005 * you may not use this file except in compliance with the License. 006 * You may obtain a copy of the License at 007 * 008 * http://www.opensource.org/licenses/ecl2.php 009 * 010 * Unless required by applicable law or agreed to in writing, software 011 * distributed under the License is distributed on an "AS IS" BASIS, 012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 013 * See the License for the specific language governing permissions and 014 * limitations under the License. 015 */ 016 package org.kuali.kfs.gl.batch.service.impl; 017 018 import java.util.Iterator; 019 020 import org.kuali.kfs.gl.businessobject.OriginEntryFull; 021 import org.kuali.kfs.sys.KFSConstants; 022 import org.kuali.rice.kns.util.KualiDecimal; 023 024 /** 025 * This class holds information about the sums of a list of origin entries. This information includes 026 * total credit amount, debit amount, other amount, number of credit entries, number of debit entries, 027 * and number of "other" entries 028 */ 029 public class OriginEntryTotals { 030 031 protected KualiDecimal creditAmount; 032 protected KualiDecimal debitAmount; 033 protected KualiDecimal otherAmount; 034 protected int numCreditEntries; 035 protected int numDebitEntries; 036 protected int numOtherEntries; 037 038 public OriginEntryTotals() { 039 creditAmount = KualiDecimal.ZERO; 040 debitAmount = KualiDecimal.ZERO; 041 otherAmount = KualiDecimal.ZERO; 042 numCreditEntries = 0; 043 numDebitEntries = 0; 044 numOtherEntries = 0; 045 } 046 047 /** 048 * Gets the creditAmount attribute. 049 * 050 * @return Returns the creditAmount. 051 */ 052 public KualiDecimal getCreditAmount() { 053 return creditAmount; 054 } 055 056 /** 057 * Sets the creditAmount attribute value. 058 * 059 * @param creditAmount The creditAmount to set. 060 */ 061 public void setCreditAmount(KualiDecimal creditAmount) { 062 this.creditAmount = creditAmount; 063 } 064 065 /** 066 * Gets the debitAmount attribute. 067 * 068 * @return Returns the debitAmount. 069 */ 070 public KualiDecimal getDebitAmount() { 071 return debitAmount; 072 } 073 074 /** 075 * Sets the debitAmount attribute value. 076 * 077 * @param debitAmount The debitAmount to set. 078 */ 079 public void setDebitAmount(KualiDecimal debitAmount) { 080 this.debitAmount = debitAmount; 081 } 082 083 /** 084 * Gets the numCreditEntries attribute. 085 * 086 * @return Returns the numCreditEntries. 087 */ 088 public int getNumCreditEntries() { 089 return numCreditEntries; 090 } 091 092 /** 093 * Sets the numCreditEntries attribute value. 094 * 095 * @param numCreditEntries The numCreditEntries to set. 096 */ 097 public void setNumCreditEntries(int numCreditEntries) { 098 this.numCreditEntries = numCreditEntries; 099 } 100 101 /** 102 * Gets the numDebitEntries attribute. 103 * 104 * @return Returns the numDebitEntries. 105 */ 106 public int getNumDebitEntries() { 107 return numDebitEntries; 108 } 109 110 /** 111 * Sets the numDebitEntries attribute value. 112 * 113 * @param numDebitEntries The numDebitEntries to set. 114 */ 115 public void setNumDebitEntries(int numDebitEntries) { 116 this.numDebitEntries = numDebitEntries; 117 } 118 119 /** 120 * Gets the numOtherEntries attribute. 121 * 122 * @return Returns the numOtherEntries. 123 */ 124 public int getNumOtherEntries() { 125 return numOtherEntries; 126 } 127 128 /** 129 * Sets the numOtherEntries attribute value. 130 * 131 * @param numOtherEntries The numOtherEntries to set. 132 */ 133 public void setNumOtherEntries(int numOtherEntries) { 134 this.numOtherEntries = numOtherEntries; 135 } 136 137 /** 138 * Gets the otherAmount attribute. 139 * 140 * @return Returns the otherAmount. 141 */ 142 public KualiDecimal getOtherAmount() { 143 return otherAmount; 144 } 145 146 /** 147 * Sets the otherAmount attribute value. 148 * 149 * @param otherAmount The otherAmount to set. 150 */ 151 public void setOtherAmount(KualiDecimal otherAmount) { 152 this.otherAmount = otherAmount; 153 } 154 155 /** 156 * This method adds amount from origin entries and increments number totals for the appropriate type 157 * (i.e. credit, debit, or other). 158 * 159 * @param entries 160 */ 161 public void addToTotals(Iterator<OriginEntryFull> entries) { 162 while (entries.hasNext()) { 163 OriginEntryFull originEntry = entries.next(); 164 if (KFSConstants.GL_CREDIT_CODE.equals(originEntry.getTransactionDebitCreditCode())) { 165 creditAmount = creditAmount.add(originEntry.getTransactionLedgerEntryAmount()); 166 numCreditEntries++; 167 } 168 else if (KFSConstants.GL_DEBIT_CODE.equals(originEntry.getTransactionDebitCreditCode())) { 169 debitAmount = debitAmount.add(originEntry.getTransactionLedgerEntryAmount()); 170 numDebitEntries++; 171 } 172 else { 173 otherAmount = otherAmount.add(originEntry.getTransactionLedgerEntryAmount()); 174 numOtherEntries++; 175 ; 176 } 177 } 178 } 179 180 /** 181 * This method adds amount from origin entry and increments number totals for the appropriate type (i.e. credit, debit, or 182 * other). 183 * 184 * @param entry 185 */ 186 public void addToTotals(OriginEntryFull originEntry) { 187 if (KFSConstants.GL_CREDIT_CODE.equals(originEntry.getTransactionDebitCreditCode())) { 188 creditAmount = creditAmount.add(originEntry.getTransactionLedgerEntryAmount()); 189 numCreditEntries++; 190 } 191 else if (KFSConstants.GL_DEBIT_CODE.equals(originEntry.getTransactionDebitCreditCode())) { 192 debitAmount = debitAmount.add(originEntry.getTransactionLedgerEntryAmount()); 193 numDebitEntries++; 194 } 195 else { 196 otherAmount = otherAmount.add(originEntry.getTransactionLedgerEntryAmount()); 197 numOtherEntries++; 198 } 199 } 200 201 /** 202 * Adds up the values in the parameter totals object to the corresponding fields in this object 203 * 204 * @param anotherTotals another OriginEntryTotals to add to this OriginEntryTotals totals 205 */ 206 public void incorporateTotals(OriginEntryTotals anotherTotals) { 207 creditAmount = creditAmount.add(anotherTotals.creditAmount); 208 debitAmount = debitAmount.add(anotherTotals.debitAmount); 209 otherAmount = otherAmount.add(anotherTotals.otherAmount); 210 numCreditEntries += anotherTotals.numCreditEntries; 211 numDebitEntries += anotherTotals.numDebitEntries; 212 numOtherEntries += anotherTotals.numOtherEntries; 213 } 214 }