001/*
002 * Copyright 2006 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 */
016package org.kuali.ole.fp.businessobject;
017
018import java.util.Map;
019
020import org.kuali.ole.sys.businessobject.AccountingLine;
021import org.kuali.rice.core.api.util.type.KualiDecimal;
022import org.kuali.rice.core.api.util.type.KualiInteger;
023
024
025/**
026 * This class is a utility class to consolidate budget adjustment accounting line code
027 */
028public 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}