001/*
002 * Copyright 2009 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.gl.businessobject;
017
018import java.util.LinkedHashMap;
019
020import org.apache.commons.lang.StringUtils;
021import org.kuali.ole.sys.OLEConstants;
022import org.kuali.rice.core.api.util.type.KualiDecimal;
023import org.kuali.rice.krad.bo.TransientBusinessObjectBase;
024
025/**
026 * An OriginEntryInformation wrapper which helpfully summarizes data for the pending entry report
027 */
028public class PendingEntrySummary extends TransientBusinessObjectBase {
029    private OriginEntryInformation originEntry;
030    private boolean suppress;
031    
032    /**
033     * @return the document number of the wrapped entry
034     */
035    public String getDocumentNumber() {
036        return (!suppress) ? getConstantDocumentNumber() : "";
037    }
038    
039    /**
040     * @return the document number of the wrapped entry - even if suppressed
041     */
042    public String getConstantDocumentNumber() {
043        return StringUtils.join(new String[] { originEntry.getFinancialSystemOriginationCode(),originEntry.getDocumentNumber()}, '-');
044    }
045    
046    /**
047     * @return the document type code of the wrapped entry
048     */
049    public String getDocumentTypeCode() {
050        return (!suppress) ? getConstantDocumentTypeCode() : "";
051    }
052    
053    /**
054     * @return the document type code, even if suppressed
055     */
056    public String getConstantDocumentTypeCode() {
057        return originEntry.getFinancialDocumentTypeCode();
058    }
059    
060    /**
061     * @return the balance type code of the wrapped entry
062     */
063    public String getBalanceTypeCode() {
064        return (!suppress) ? getConstantBalanceTypeCode() : "";
065    }
066    
067    /**
068     * @return the balance type code, even if suppressed
069     */
070    public String getConstantBalanceTypeCode() {
071        return originEntry.getFinancialBalanceTypeCode();
072    }
073    
074    /**
075     * @return the chart of accounts code of the wrapped entry
076     */
077    public String getChartOfAccountsCode() {
078        return originEntry.getChartOfAccountsCode();
079    }
080    
081    /**
082     * @return the account number of the wrapped entry
083     */
084    public String getAccountNumber() {
085        return originEntry.getAccountNumber();
086    }
087    
088    /**
089     * @return the financial object code of the wrapped entry
090     */
091    public String getFinancialObjectCode() {
092        return originEntry.getFinancialObjectCode();
093    }
094    
095    /**
096     * @return the amount of the wrapped entry, or null if the entry does not represent a credit
097     */
098    public KualiDecimal getCreditAmount() {
099        if (!StringUtils.isBlank(originEntry.getTransactionDebitCreditCode())) {
100            if (originEntry.getTransactionDebitCreditCode().equals(OLEConstants.GL_CREDIT_CODE)) {
101                return originEntry.getTransactionLedgerEntryAmount(); 
102            }
103        }
104        return null;
105    }
106
107    /**
108     * @return the amount of the wrapped entry, or null if the entry does not represent a debit
109     */
110    public KualiDecimal getDebitAmount() {
111        if (!StringUtils.isBlank(originEntry.getTransactionDebitCreditCode())) { 
112            if (originEntry.getTransactionDebitCreditCode().equals(OLEConstants.GL_DEBIT_CODE)) {
113                return originEntry.getTransactionLedgerEntryAmount();
114            }
115        }
116        return null;
117    }
118
119    /**
120     * @return the amount for the wrapped entry, or null if the entry represents either a debit or a credt
121     */
122    public KualiDecimal getBudgetAmount() {
123        return (originEntry.getTransactionDebitCreditCode() == null || originEntry.getTransactionDebitCreditCode().equals(OLEConstants.GL_BUDGET_CODE) || originEntry.getTransactionDebitCreditCode().equals(OLEConstants.EMPTY_STRING)) ? originEntry.getTransactionLedgerEntryAmount() : null;
124    }
125
126    /**
127     * @see org.kuali.rice.krad.bo.BusinessObjectBase#toStringMapper()
128     */
129    
130    protected LinkedHashMap toStringMapper_RICE20_REFACTORME() {
131        LinkedHashMap<String, String> pkHashMap = new LinkedHashMap<String, String>();
132        pkHashMap.put("documentTypeCode", this.getDocumentTypeCode());
133        pkHashMap.put("documentNumber", this.getDocumentNumber());
134        pkHashMap.put("chartOfAccountsCode", this.getChartOfAccountsCode());
135        pkHashMap.put("accountNumber", this.getAccountNumber());
136        pkHashMap.put("balanceTypeCode", this.getBalanceTypeCode());
137        pkHashMap.put("financialObjectCode", this.getFinancialObjectCode());
138        return pkHashMap;
139    }
140    
141    /**
142     * @param originEntry sets the origin entry
143     */
144    public void setOriginEntry(OriginEntryInformation originEntry) {
145        this.originEntry = originEntry;
146        this.suppress = false;
147    }
148
149    /**
150     * Sets the suppress attribute value.
151     * @param suppress The suppress to set.
152     */
153    public void suppressCommonFields(boolean suppress) {
154        this.suppress = suppress;
155    }
156
157    /**
158     * @return a String representation of suppressable fields
159     */
160    public String getSuppressableFieldsAsKey() {
161        return StringUtils.join(new String[] {originEntry.getFinancialDocumentTypeCode(),originEntry.getFinancialSystemOriginationCode(),originEntry.getDocumentNumber(),originEntry.getFinancialBalanceTypeCode()}, ':');
162    }
163}