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.fp.businessobject;
017    
018    import java.util.Map;
019    
020    import org.kuali.kfs.sys.businessobject.AccountingLine;
021    import org.kuali.rice.kns.util.KualiDecimal;
022    import org.kuali.rice.kns.util.KualiInteger;
023    
024    
025    /**
026     * This class is a utility class to consolidate budget adjustment accounting line code
027     */
028    public class BudgetAdjustmentAccountingLineUtil {
029        /**
030         * Initialize attributes
031         * 
032         * @param accountingLine
033         */
034        public static void init(BudgetAdjustmentAccountingLine accountingLine) {
035            accountingLine.setCurrentBudgetAdjustmentAmount(KualiDecimal.ZERO);
036            accountingLine.setBaseBudgetAdjustmentAmount(KualiInteger.ZERO);
037            accountingLine.setFinancialDocumentMonth1LineAmount(KualiDecimal.ZERO);
038            accountingLine.setFinancialDocumentMonth2LineAmount(KualiDecimal.ZERO);
039            accountingLine.setFinancialDocumentMonth3LineAmount(KualiDecimal.ZERO);
040            accountingLine.setFinancialDocumentMonth4LineAmount(KualiDecimal.ZERO);
041            accountingLine.setFinancialDocumentMonth5LineAmount(KualiDecimal.ZERO);
042            accountingLine.setFinancialDocumentMonth6LineAmount(KualiDecimal.ZERO);
043            accountingLine.setFinancialDocumentMonth7LineAmount(KualiDecimal.ZERO);
044            accountingLine.setFinancialDocumentMonth8LineAmount(KualiDecimal.ZERO);
045            accountingLine.setFinancialDocumentMonth9LineAmount(KualiDecimal.ZERO);
046            accountingLine.setFinancialDocumentMonth10LineAmount(KualiDecimal.ZERO);
047            accountingLine.setFinancialDocumentMonth11LineAmount(KualiDecimal.ZERO);
048            accountingLine.setFinancialDocumentMonth12LineAmount(KualiDecimal.ZERO);
049            accountingLine.setFringeBenefitIndicator(false);
050        }
051    
052        /**
053         * Adds {@link BudgetAdjustmentAccountingLine} attributes to map
054         * 
055         * @param simpleValues map used to add values to
056         * @param accountingLine accounting line that provides attributes to add to map
057         * @return
058         */
059        public static Map appendToValuesMap(Map simpleValues, BudgetAdjustmentAccountingLine accountingLine) {
060            simpleValues.put("currentBudgetAdjustmentAmount", accountingLine.getCurrentBudgetAdjustmentAmount());
061            simpleValues.put("baseBudgetAdjustmentAmount", accountingLine.getBaseBudgetAdjustmentAmount());
062            simpleValues.put("financialDocumentMonth1LineAmount", accountingLine.getFinancialDocumentMonth1LineAmount());
063            simpleValues.put("financialDocumentMonth2LineAmount", accountingLine.getFinancialDocumentMonth2LineAmount());
064            simpleValues.put("financialDocumentMonth3LineAmount", accountingLine.getFinancialDocumentMonth3LineAmount());
065            simpleValues.put("financialDocumentMonth4LineAmount", accountingLine.getFinancialDocumentMonth4LineAmount());
066            simpleValues.put("financialDocumentMonth5LineAmount", accountingLine.getFinancialDocumentMonth5LineAmount());
067            simpleValues.put("financialDocumentMonth6LineAmount", accountingLine.getFinancialDocumentMonth6LineAmount());
068            simpleValues.put("financialDocumentMonth7LineAmount", accountingLine.getFinancialDocumentMonth7LineAmount());
069            simpleValues.put("financialDocumentMonth8LineAmount", accountingLine.getFinancialDocumentMonth8LineAmount());
070            simpleValues.put("financialDocumentMonth9LineAmount", accountingLine.getFinancialDocumentMonth9LineAmount());
071            simpleValues.put("financialDocumentMonth10LineAmount", accountingLine.getFinancialDocumentMonth10LineAmount());
072            simpleValues.put("financialDocumentMonth11LineAmount", accountingLine.getFinancialDocumentMonth11LineAmount());
073            simpleValues.put("financialDocumentMonth12LineAmount", accountingLine.getFinancialDocumentMonth12LineAmount());
074    
075            return simpleValues;
076        }
077    
078        /**
079         * Copies {@link BudgetAdjustmentAccountingLine} values
080         * 
081         * @param toLine the line to copy values to
082         * @param fromLine the line to take the values to use in writing to the toLine
083         */
084        public static void copyFrom(BudgetAdjustmentAccountingLine toLine, AccountingLine other) {
085            if (BudgetAdjustmentAccountingLine.class.isAssignableFrom(other.getClass())) {
086                BudgetAdjustmentAccountingLine fromLine = (BudgetAdjustmentAccountingLine) other;
087                if (toLine != fromLine) {
088                    toLine.setCurrentBudgetAdjustmentAmount(fromLine.getCurrentBudgetAdjustmentAmount());
089                    toLine.setBaseBudgetAdjustmentAmount(fromLine.getBaseBudgetAdjustmentAmount());
090                    toLine.setFinancialDocumentMonth1LineAmount(fromLine.getFinancialDocumentMonth1LineAmount());
091                    toLine.setFinancialDocumentMonth2LineAmount(fromLine.getFinancialDocumentMonth2LineAmount());
092                    toLine.setFinancialDocumentMonth3LineAmount(fromLine.getFinancialDocumentMonth3LineAmount());
093                    toLine.setFinancialDocumentMonth4LineAmount(fromLine.getFinancialDocumentMonth4LineAmount());
094                    toLine.setFinancialDocumentMonth5LineAmount(fromLine.getFinancialDocumentMonth5LineAmount());
095                    toLine.setFinancialDocumentMonth6LineAmount(fromLine.getFinancialDocumentMonth6LineAmount());
096                    toLine.setFinancialDocumentMonth7LineAmount(fromLine.getFinancialDocumentMonth7LineAmount());
097                    toLine.setFinancialDocumentMonth8LineAmount(fromLine.getFinancialDocumentMonth8LineAmount());
098                    toLine.setFinancialDocumentMonth9LineAmount(fromLine.getFinancialDocumentMonth9LineAmount());
099                    toLine.setFinancialDocumentMonth10LineAmount(fromLine.getFinancialDocumentMonth10LineAmount());
100                    toLine.setFinancialDocumentMonth11LineAmount(fromLine.getFinancialDocumentMonth11LineAmount());
101                    toLine.setFinancialDocumentMonth12LineAmount(fromLine.getFinancialDocumentMonth12LineAmount());
102                    toLine.setFringeBenefitIndicator(fromLine.isFringeBenefitIndicator());
103                }
104            }
105        }
106    
107        /**
108         * Calculates monthlyLines total amount@param accountingLine
109         * 
110         * @return KualiDecimal sum of all monthly line amounts
111         */
112        public static KualiDecimal getMonthlyLinesTotal(BudgetAdjustmentAccountingLine accountingLine) {
113            KualiDecimal total = KualiDecimal.ZERO;
114            if (accountingLine.getFinancialDocumentMonth1LineAmount() != null) {
115                total = total.add(accountingLine.getFinancialDocumentMonth1LineAmount());
116            }
117            if (accountingLine.getFinancialDocumentMonth2LineAmount() != null) {
118                total = total.add(accountingLine.getFinancialDocumentMonth2LineAmount());
119            }
120            if (accountingLine.getFinancialDocumentMonth3LineAmount() != null) {
121                total = total.add(accountingLine.getFinancialDocumentMonth3LineAmount());
122            }
123            if (accountingLine.getFinancialDocumentMonth4LineAmount() != null) {
124                total = total.add(accountingLine.getFinancialDocumentMonth4LineAmount());
125            }
126            if (accountingLine.getFinancialDocumentMonth5LineAmount() != null) {
127                total = total.add(accountingLine.getFinancialDocumentMonth5LineAmount());
128            }
129            if (accountingLine.getFinancialDocumentMonth6LineAmount() != null) {
130                total = total.add(accountingLine.getFinancialDocumentMonth6LineAmount());
131            }
132            if (accountingLine.getFinancialDocumentMonth7LineAmount() != null) {
133                total = total.add(accountingLine.getFinancialDocumentMonth7LineAmount());
134            }
135            if (accountingLine.getFinancialDocumentMonth8LineAmount() != null) {
136                total = total.add(accountingLine.getFinancialDocumentMonth8LineAmount());
137            }
138            if (accountingLine.getFinancialDocumentMonth9LineAmount() != null) {
139                total = total.add(accountingLine.getFinancialDocumentMonth9LineAmount());
140            }
141            if (accountingLine.getFinancialDocumentMonth10LineAmount() != null) {
142                total = total.add(accountingLine.getFinancialDocumentMonth10LineAmount());
143            }
144            if (accountingLine.getFinancialDocumentMonth11LineAmount() != null) {
145                total = total.add(accountingLine.getFinancialDocumentMonth11LineAmount());
146            }
147            if (accountingLine.getFinancialDocumentMonth12LineAmount() != null) {
148                total = total.add(accountingLine.getFinancialDocumentMonth12LineAmount());
149            }
150            return total;
151        }
152    
153    }