001/*
002 * Copyright 2005 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
017package org.kuali.ole.coa.businessobject;
018
019import java.util.ArrayList;
020import java.util.LinkedHashMap;
021import java.util.List;
022
023import org.kuali.ole.sys.businessobject.FiscalYearBasedBusinessObject;
024import org.kuali.ole.sys.businessobject.SystemOptions;
025import org.kuali.rice.core.api.mo.common.active.MutableInactivatable;
026import org.kuali.rice.krad.bo.PersistableBusinessObjectBase;
027import org.kuali.rice.krad.util.ObjectUtils;
028
029/**
030 * 
031 */
032public class OrganizationReversion extends PersistableBusinessObjectBase implements MutableInactivatable, CarryForwardReversionProcessOrganizationInfo, FiscalYearBasedBusinessObject {
033
034    private Integer universityFiscalYear;
035    private String chartOfAccountsCode;
036    private String organizationCode;
037    private String budgetReversionChartOfAccountsCode;
038    private String budgetReversionAccountNumber;
039    private boolean carryForwardByObjectCodeIndicator;
040    private String cashReversionFinancialChartOfAccountsCode;
041    private String cashReversionAccountNumber;
042    private Chart chartOfAccounts;
043    private Account cashReversionAccount;
044    private Account budgetReversionAccount;
045    private Chart budgetReversionChartOfAccounts;
046    private Chart cashReversionFinancialChartOfAccounts;
047    private SystemOptions universityFiscal;
048    private Organization organization;
049    private List<Organization> organizations; // This is only used by the "global" document
050    private List<OrganizationReversionDetail> organizationReversionDetail;
051    private boolean active;
052
053    /**
054     * Default constructor.
055     */
056    public OrganizationReversion() {
057        organizations = new ArrayList<Organization>();
058        organizationReversionDetail = new ArrayList<OrganizationReversionDetail>();
059    }   
060
061    public List<OrganizationReversionDetail> getOrganizationReversionDetail() {
062        return organizationReversionDetail;
063    }
064
065    public void addOrganizationReversionDetail(OrganizationReversionDetail ord) {
066        organizationReversionDetail.add(ord);
067    }
068
069    public void setOrganizationReversionDetail(List<OrganizationReversionDetail> organizationReversionDetail) {
070        this.organizationReversionDetail = organizationReversionDetail;
071    }
072
073    public OrganizationReversionCategoryInfo getOrganizationReversionDetail(String categoryCode) {
074        for (OrganizationReversionDetail element : organizationReversionDetail) {
075            if (element.getOrganizationReversionCategoryCode().equals(categoryCode)) {
076                if (!element.isActive()) {
077                    return null; // don't send back inactive details
078                } else {
079                    return element;
080                }
081            }
082        }
083        return null;
084    }
085
086    /**
087     * Gets the universityFiscalYear attribute.
088     * 
089     * @return Returns the universityFiscalYear
090     */
091    public Integer getUniversityFiscalYear() {
092        return universityFiscalYear;
093    }
094
095    /**
096     * Sets the universityFiscalYear attribute.
097     * 
098     * @param universityFiscalYear The universityFiscalYear to set.
099     */
100    public void setUniversityFiscalYear(Integer universityFiscalYear) {
101        this.universityFiscalYear = universityFiscalYear;
102    }
103
104
105    /**
106     * Gets the chartOfAccountsCode attribute.
107     * 
108     * @return Returns the chartOfAccountsCode
109     */
110    public String getChartOfAccountsCode() {
111        return chartOfAccountsCode;
112    }
113
114    /**
115     * Sets the chartOfAccountsCode attribute.
116     * 
117     * @param chartOfAccountsCode The chartOfAccountsCode to set.
118     */
119    public void setChartOfAccountsCode(String chartOfAccountsCode) {
120        this.chartOfAccountsCode = chartOfAccountsCode;
121    }
122
123
124    /**
125     * Gets the organizationCode attribute.
126     * 
127     * @return Returns the organizationCode
128     */
129    public String getOrganizationCode() {
130        return organizationCode;
131    }
132
133    /**
134     * Sets the organizationCode attribute.
135     * 
136     * @param organizationCode The organizationCode to set.
137     */
138    public void setOrganizationCode(String organizationCode) {
139        this.organizationCode = organizationCode;
140    }
141
142
143    /**
144     * Gets the budgetReversionChartOfAccountsCode attribute.
145     * 
146     * @return Returns the budgetReversionChartOfAccountsCode
147     */
148    public String getBudgetReversionChartOfAccountsCode() {
149        return budgetReversionChartOfAccountsCode;
150    }
151
152    /**
153     * Sets the budgetReversionChartOfAccountsCode attribute.
154     * 
155     * @param budgetReversionChartOfAccountsCode The budgetReversionChartOfAccountsCode to set.
156     */
157    public void setBudgetReversionChartOfAccountsCode(String budgetReversionChartOfAccountsCode) {
158        this.budgetReversionChartOfAccountsCode = budgetReversionChartOfAccountsCode;
159    }
160
161
162    /**
163     * Gets the budgetReversionAccountNumber attribute.
164     * 
165     * @return Returns the budgetReversionAccountNumber
166     */
167    public String getBudgetReversionAccountNumber() {
168        return budgetReversionAccountNumber;
169    }
170
171    /**
172     * Sets the budgetReversionAccountNumber attribute.
173     * 
174     * @param budgetReversionAccountNumber The budgetReversionAccountNumber to set.
175     */
176    public void setBudgetReversionAccountNumber(String budgetReversionAccountNumber) {
177        this.budgetReversionAccountNumber = budgetReversionAccountNumber;
178    }
179
180
181    /**
182     * Gets the carryForwardByObjectCodeIndicator attribute.
183     * 
184     * @return Returns the carryForwardByObjectCodeIndicator
185     */
186    public boolean isCarryForwardByObjectCodeIndicator() {
187        return carryForwardByObjectCodeIndicator;
188    }
189
190
191    /**
192     * Sets the carryForwardByObjectCodeIndicator attribute.
193     * 
194     * @param carryForwardByObjectCodeIndicator The carryForwardByObjectCodeIndicator to set.
195     */
196    public void setCarryForwardByObjectCodeIndicator(boolean carryForwardByObjectCodeIndicator) {
197        this.carryForwardByObjectCodeIndicator = carryForwardByObjectCodeIndicator;
198    }
199
200
201    /**
202     * Gets the cashReversionFinancialChartOfAccountsCode attribute.
203     * 
204     * @return Returns the cashReversionFinancialChartOfAccountsCode
205     */
206    public String getCashReversionFinancialChartOfAccountsCode() {
207        return cashReversionFinancialChartOfAccountsCode;
208    }
209
210    /**
211     * Sets the cashReversionFinancialChartOfAccountsCode attribute.
212     * 
213     * @param cashReversionFinancialChartOfAccountsCode The cashReversionFinancialChartOfAccountsCode to set.
214     */
215    public void setCashReversionFinancialChartOfAccountsCode(String cashReversionFinancialChartOfAccountsCode) {
216        this.cashReversionFinancialChartOfAccountsCode = cashReversionFinancialChartOfAccountsCode;
217    }
218
219
220    /**
221     * Gets the cashReversionAccountNumber attribute.
222     * 
223     * @return Returns the cashReversionAccountNumber
224     */
225    public String getCashReversionAccountNumber() {
226        return cashReversionAccountNumber;
227    }
228
229    /**
230     * Sets the cashReversionAccountNumber attribute.
231     * 
232     * @param cashReversionAccountNumber The cashReversionAccountNumber to set.
233     */
234    public void setCashReversionAccountNumber(String cashReversionAccountNumber) {
235        this.cashReversionAccountNumber = cashReversionAccountNumber;
236    }
237
238
239    /**
240     * Gets the chartOfAccounts attribute.
241     * 
242     * @return Returns the chartOfAccounts
243     */
244    public Chart getChartOfAccounts() {
245        return chartOfAccounts;
246    }
247
248    /**
249     * Sets the chartOfAccounts attribute.
250     * 
251     * @param chartOfAccounts The chartOfAccounts to set.
252     * @deprecated
253     */
254    public void setChartOfAccounts(Chart chartOfAccounts) {
255        this.chartOfAccounts = chartOfAccounts;
256    }
257
258    /**
259     * Gets the organization attribute.
260     * 
261     * @return Returns the organization
262     */
263    public List<Organization> getOrganizations() {
264        return organizations;
265    }
266
267    /**
268     * Sets the organization attribute.
269     * 
270     * @param organization The organization to set.
271     * @deprecated
272     */
273    public void setOrganizations(List<Organization> organization) {
274        this.organizations = organization;
275    }
276
277    /**
278     * Gets the cashReversionAccount attribute.
279     * 
280     * @return Returns the cashReversionAccount
281     */
282    public Account getCashReversionAccount() {
283        return cashReversionAccount;
284    }
285
286    /**
287     * Sets the cashReversionAccount attribute.
288     * 
289     * @param cashReversionAccount The cashReversionAccount to set.
290     * @deprecated
291     */
292    public void setCashReversionAccount(Account cashReversionAccount) {
293        this.cashReversionAccount = cashReversionAccount;
294    }
295
296    /**
297     * Gets the budgetReversionAccount attribute.
298     * 
299     * @return Returns the budgetReversionAccount
300     */
301    public Account getBudgetReversionAccount() {
302        return budgetReversionAccount;
303    }
304
305    /**
306     * Sets the budgetReversionAccount attribute.
307     * 
308     * @param budgetReversionAccount The budgetReversionAccount to set.
309     * @deprecated
310     */
311    public void setBudgetReversionAccount(Account budgetReversionAccount) {
312        this.budgetReversionAccount = budgetReversionAccount;
313    }
314
315    /**
316     * Gets the budgetReversionChartOfAccounts attribute.
317     * 
318     * @return Returns the budgetReversionChartOfAccounts
319     */
320    public Chart getBudgetReversionChartOfAccounts() {
321        return budgetReversionChartOfAccounts;
322    }
323
324    /**
325     * Sets the budgetReversionChartOfAccounts attribute.
326     * 
327     * @param budgetReversionChartOfAccounts The budgetReversionChartOfAccounts to set.
328     * @deprecated
329     */
330    public void setBudgetReversionChartOfAccounts(Chart budgetReversionChartOfAccounts) {
331        this.budgetReversionChartOfAccounts = budgetReversionChartOfAccounts;
332    }
333
334    /**
335     * Gets the cashReversionFinancialChartOfAccounts attribute.
336     * 
337     * @return Returns the cashReversionFinancialChartOfAccounts
338     */
339    public Chart getCashReversionFinancialChartOfAccounts() {
340        return cashReversionFinancialChartOfAccounts;
341    }
342
343    /**
344     * Sets the cashReversionFinancialChartOfAccounts attribute.
345     * 
346     * @param cashReversionFinancialChartOfAccounts The cashReversionFinancialChartOfAccounts to set.
347     * @deprecated
348     */
349    public void setCashReversionFinancialChartOfAccounts(Chart cashReversionFinancialChartOfAccounts) {
350        this.cashReversionFinancialChartOfAccounts = cashReversionFinancialChartOfAccounts;
351    }
352
353
354    /**
355     * Gets the universityFiscal attribute.
356     * 
357     * @return Returns the universityFiscal.
358     */
359    public SystemOptions getUniversityFiscal() {
360        return universityFiscal;
361    }
362
363    /**
364     * Sets the universityFiscal attribute value.
365     * 
366     * @param universityFiscal The universityFiscal to set.
367     */
368    public void setUniversityFiscal(SystemOptions universityFiscal) {
369        this.universityFiscal = universityFiscal;
370    }
371
372    /**
373     * @see org.kuali.rice.krad.bo.BusinessObjectBase#toStringMapper()
374     */
375    protected LinkedHashMap toStringMapper_RICE20_REFACTORME() {
376        LinkedHashMap m = new LinkedHashMap();
377        if (this.universityFiscalYear != null) {
378            m.put("universityFiscalYear", this.universityFiscalYear.toString());
379        }
380        m.put("chartOfAccountsCode", this.chartOfAccountsCode);
381        m.put("organizationCode", this.organizationCode);
382        return m;
383    }
384
385    public Organization getOrganization() {
386        return organization;
387    }
388
389    public void setOrganization(Organization organization) {
390        this.organization = organization;
391    }
392
393    /**
394     * This method (a hack by any other name...) returns a string so that an organization reversion can have a link to view its own
395     * inquiry page after a look up
396     * 
397     * @return the String "View Organization Reversion"
398     */
399    public String getOrganizationReversionViewer() {
400        return "View Organization Reversion";
401    }
402
403    /**
404     * Gets the active attribute. 
405     * @return Returns the active.
406     */
407    public boolean isActive() {
408        return active;
409    }
410
411    /**
412     * Sets the active attribute value.
413     * @param active The active to set.
414     */
415    public void setActive(boolean active) {
416        this.active = active;
417    }
418
419    /**
420     * @see org.kuali.ole.coa.businessobject.CarryForwardReversionProcessOrganizationInfo#getCashReversionChartCashObjectCode()
421     */
422    public String getCashReversionChartCashObjectCode() {
423        if (ObjectUtils.isNull(getCashReversionFinancialChartOfAccounts())) {
424            this.refreshReferenceObject("cashReversionFinancialChartOfAccounts");
425        }
426        if (!ObjectUtils.isNull(getCashReversionFinancialChartOfAccounts())) {
427            return getCashReversionFinancialChartOfAccounts().getFinancialCashObjectCode();
428        } else {
429            return null;
430        }
431    }
432
433    /**
434     * @see org.kuali.ole.coa.businessobject.CarryForwardReversionProcessOrganizationInfo#getOrganizationChartCashObjectCode()
435     */
436    public String getOrganizationChartCashObjectCode() {
437        if (ObjectUtils.isNull(getChartOfAccounts())) {
438            this.refreshReferenceObject("chartOfAccounts");
439        }
440        if (!ObjectUtils.isNull(getChartOfAccounts())) {
441            return getChartOfAccounts().getFinancialCashObjectCode();
442        } else {
443            return null;
444        }
445    }
446}