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.sys.businessobject;
017
018 import java.io.Serializable;
019 import java.util.LinkedHashMap;
020
021 import org.kuali.kfs.coa.businessobject.Account;
022 import org.kuali.rice.kns.bo.TransientBusinessObjectBase;
023 import org.kuali.rice.kns.util.KualiDecimal;
024
025 /**
026 * This class holds respnsibility information pertaining to an account specifically whether or not the responsibility is of type
027 * Fiscal Officer, Primary Delegate of Fiscal Officer, or Secondary Delegate of Fiscal Officer, and if it is one of the delegated
028 * responsibility types, then there is additional information about the responsibility such as dollar range and document type
029 */
030 public class AccountResponsibility extends TransientBusinessObjectBase implements Serializable {
031
032 private static final long serialVersionUID = 3101634819409319387L;
033 public static final int FISCAL_OFFICER_RESPONSIBILITY = 1;
034 public static final int DELEGATED_RESPONSIBILITY = 2;
035
036 private Account account;
037 private int accountResponsibilityType;
038 private KualiDecimal minimumDollarAmount;
039 private KualiDecimal maximumDollarAmount;
040 private String documentTypeId;
041
042 public AccountResponsibility() {
043 }
044
045 /**
046 * Constructor that allows us to create and pop on same line in other files
047 *
048 * @param accountResponsibilityType
049 * @param minimumDollarAmount
050 * @param maximumDollarAmount
051 * @param documentTypeId
052 */
053 public AccountResponsibility(int accountResponsibilityType, KualiDecimal minimumDollarAmount, KualiDecimal maximumDollarAmount, String documentTypeId, Account account) {
054 if (!isValidResponsibilityType(accountResponsibilityType)) {
055 throw new IllegalArgumentException("invalid accountResponsibilityType passed in");
056 }
057 this.accountResponsibilityType = accountResponsibilityType;
058 this.minimumDollarAmount = minimumDollarAmount;
059 this.maximumDollarAmount = maximumDollarAmount;
060 this.documentTypeId = documentTypeId;
061 this.account = account;
062 }
063
064 private boolean isValidResponsibilityType(int type) {
065 return type == FISCAL_OFFICER_RESPONSIBILITY || type == DELEGATED_RESPONSIBILITY;
066 }
067
068
069 public Account getAccount() {
070 return account;
071 }
072
073 public void setAccount(Account account) {
074 this.account = account;
075 }
076
077 public int getAccountResponsibilityType() {
078 return accountResponsibilityType;
079 }
080
081 public void setAccountResponsibilityType(int accountResponsibilityType) {
082 this.accountResponsibilityType = accountResponsibilityType;
083 }
084
085 public String getDocumentTypeId() {
086 return documentTypeId;
087 }
088
089 public void setDocumentTypeId(String documentTypeId) {
090 this.documentTypeId = documentTypeId;
091 }
092
093 public KualiDecimal getMaximumDollarAmount() {
094 return maximumDollarAmount;
095 }
096
097 public void setMaximumDollarAmount(KualiDecimal maximumDollarAmount) {
098 this.maximumDollarAmount = maximumDollarAmount;
099 }
100
101 public KualiDecimal getMinimumDollarAmount() {
102 return minimumDollarAmount;
103 }
104
105 public void setMinimumDollarAmount(KualiDecimal minimumDollarAmount) {
106 this.minimumDollarAmount = minimumDollarAmount;
107 }
108
109 /**
110 * @see org.kuali.rice.kns.bo.BusinessObjectBase#toStringMapper()
111 */
112 @Override
113 protected LinkedHashMap toStringMapper() {
114 LinkedHashMap m = new LinkedHashMap();
115 if (account != null) {
116 m.put("accountNumber", this.account.getAccountNumber());
117 }
118 m.put("accountResponsibilityType", this.accountResponsibilityType);
119 m.put("minimumDollarAmount", this.minimumDollarAmount);
120 m.put("maximumDollarAmount", this.maximumDollarAmount);
121 m.put("documentTypeId", this.documentTypeId);
122 return m;
123 }
124
125
126 }