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.module.ar.businessobject; 017 018 import java.sql.Date; 019 import java.util.LinkedHashMap; 020 021 import org.kuali.kfs.module.ar.document.CashControlDocument; 022 import org.kuali.kfs.module.ar.document.PaymentApplicationDocument; 023 import org.kuali.kfs.sys.context.SpringContext; 024 import org.kuali.rice.kew.exception.WorkflowException; 025 import org.kuali.rice.kns.bo.PersistableBusinessObjectBase; 026 import org.kuali.rice.kns.service.DocumentService; 027 import org.kuali.rice.kns.util.KualiDecimal; 028 029 /** 030 * @author Kuali Nervous System Team (kualidev@oncourse.iu.edu) 031 */ 032 public class CashControlDetail extends PersistableBusinessObjectBase { 033 034 private String documentNumber; 035 private String referenceFinancialDocumentNumber; 036 private String customerPaymentMediumIdentifier; 037 private KualiDecimal financialDocumentLineAmount; 038 private String customerPaymentDescription; 039 private String customerNumber; 040 private Date customerPaymentDate; 041 042 private transient PaymentApplicationDocument referenceFinancialDocument; 043 private transient CashControlDocument cashControlDocument; 044 private Customer customer; 045 046 private String status; 047 048 /** 049 * Default constructor. 050 */ 051 public CashControlDetail() { 052 financialDocumentLineAmount = new KualiDecimal(0); 053 } 054 055 /** 056 * Gets the documentNumber attribute. 057 * 058 * @return Returns the documentNumber 059 * 060 */ 061 public String getDocumentNumber() { 062 return documentNumber; 063 } 064 065 /** 066 * Sets the documentNumber attribute. 067 * 068 * @param documentNumber The documentNumber to set. 069 * 070 */ 071 public void setDocumentNumber(String documentNumber) { 072 this.documentNumber = documentNumber; 073 } 074 075 076 /** 077 * Gets the referenceFinancialDocumentNumber attribute. 078 * 079 * @return Returns the referenceFinancialDocumentNumber 080 * 081 */ 082 public String getReferenceFinancialDocumentNumber() { 083 return referenceFinancialDocumentNumber; 084 } 085 086 /** 087 * Sets the referenceFinancialDocumentNumber attribute. 088 * 089 * @param referenceFinancialDocumentNumber The referenceFinancialDocumentNumber to set. 090 */ 091 public void setReferenceFinancialDocumentNumber(String referenceFinancialDocumentNumber) { 092 this.referenceFinancialDocumentNumber = referenceFinancialDocumentNumber; 093 } 094 095 096 /** 097 * Gets the customerPaymentMediumIdentifier attribute. 098 * 099 * @return Returns the customerPaymentMediumIdentifier 100 * 101 */ 102 public String getCustomerPaymentMediumIdentifier() { 103 return customerPaymentMediumIdentifier; 104 } 105 106 /** 107 * Sets the customerPaymentMediumIdentifier attribute. 108 * 109 * @param customerPaymentMediumIdentifier The customerPaymentMediumIdentifier to set. 110 * 111 */ 112 public void setCustomerPaymentMediumIdentifier(String customerPaymentMediumIdentifier) { 113 this.customerPaymentMediumIdentifier = customerPaymentMediumIdentifier; 114 } 115 116 117 /** 118 * Gets the financialDocumentLineAmount attribute. 119 * 120 * @return Returns the financialDocumentLineAmount 121 * 122 */ 123 public KualiDecimal getFinancialDocumentLineAmount() { 124 return financialDocumentLineAmount; 125 } 126 127 /** 128 * Sets the financialDocumentLineAmount attribute. 129 * 130 * @param financialDocumentLineAmount The financialDocumentLineAmount to set. 131 * 132 */ 133 public void setFinancialDocumentLineAmount(KualiDecimal financialDocumentLineAmount) { 134 this.financialDocumentLineAmount = financialDocumentLineAmount; 135 } 136 137 138 /** 139 * Gets the customerPaymentDescription attribute. 140 * 141 * @return Returns the customerPaymentDescription 142 * 143 */ 144 public String getCustomerPaymentDescription() { 145 return customerPaymentDescription; 146 } 147 148 /** 149 * Sets the customerPaymentDescription attribute. 150 * 151 * @param customerPaymentDescription The customerPaymentDescription to set. 152 * 153 */ 154 public void setCustomerPaymentDescription(String customerPaymentDescription) { 155 this.customerPaymentDescription = customerPaymentDescription; 156 } 157 158 159 /** 160 * Gets the customerNumber attribute. 161 * 162 * @return Returns the customerNumber 163 * 164 */ 165 public String getCustomerNumber() { 166 return customerNumber; 167 } 168 169 /** 170 * Sets the customerNumber attribute. 171 * 172 * @param customerNumber The customerNumber to set. 173 * 174 */ 175 public void setCustomerNumber(String customerNumber) { 176 this.customerNumber = customerNumber; 177 } 178 179 180 /** 181 * Gets the customerPaymentDate attribute. 182 * 183 * @return Returns the customerPaymentDate 184 * 185 */ 186 public Date getCustomerPaymentDate() { 187 return customerPaymentDate; 188 } 189 190 /** 191 * Sets the customerPaymentDate attribute. 192 * 193 * @param customerPaymentDate The customerPaymentDate to set. 194 * 195 */ 196 public void setCustomerPaymentDate(Date customerPaymentDate) { 197 this.customerPaymentDate = customerPaymentDate; 198 } 199 200 201 /** 202 * Gets the referenceFinancialDocument attribute. 203 * 204 * @return Returns the referenceFinancialDocument 205 * 206 */ 207 public PaymentApplicationDocument getReferenceFinancialDocument() { 208 if (referenceFinancialDocument == null) { 209 try { 210 referenceFinancialDocument = (PaymentApplicationDocument) SpringContext.getBean(DocumentService.class).getByDocumentHeaderId(this.referenceFinancialDocumentNumber); 211 } 212 catch (WorkflowException e) { 213 throw new RuntimeException("WorkflowException caught while trying to load PayApp Document #" + referenceFinancialDocumentNumber + ".", e); 214 } 215 } 216 return referenceFinancialDocument; 217 } 218 219 /** 220 * Sets the referenceFinancialDocument attribute. 221 * 222 * @param referenceFinancialDocument The referenceFinancialDocument to set. 223 * 224 */ 225 public void setReferenceFinancialDocument(PaymentApplicationDocument referenceFinancialDocument) { 226 this.referenceFinancialDocument = referenceFinancialDocument; 227 } 228 229 /** 230 * Gets the customer attribute. 231 * 232 * @return Returns the customer 233 * 234 */ 235 public Customer getCustomer() { 236 return customer; 237 } 238 239 /** 240 * Sets the customer attribute. 241 * 242 * @param customer The customer to set. 243 * @deprecated 244 */ 245 public void setCustomer(Customer customer) { 246 this.customer = customer; 247 } 248 249 /** 250 * @see org.kuali.rice.kns.bo.BusinessObjectBase#toStringMapper() 251 */ 252 @SuppressWarnings("unchecked") 253 protected LinkedHashMap toStringMapper() { 254 LinkedHashMap m = new LinkedHashMap(); 255 m.put("documentNumber", this.documentNumber); 256 m.put("referenceFinancialDocumentNumber", this.referenceFinancialDocumentNumber); 257 return m; 258 } 259 260 public CashControlDocument getCashControlDocument() { 261 if (cashControlDocument == null) { 262 try { 263 String n = getDocumentNumber(); 264 if(null == n) { 265 return null; 266 } 267 cashControlDocument = (CashControlDocument) SpringContext.getBean(DocumentService.class).getByDocumentHeaderId(n); 268 } 269 //TODO Andrew - this probably shouldnt throw an exception, because sometimes its okay for there not 270 // to be a document ... but how can a detail ever exist without a parent document? 271 catch (WorkflowException e) { 272 throw new RuntimeException("WorkflowException caught while trying to load CashControl Document #" + referenceFinancialDocumentNumber + ".", e); 273 } 274 } 275 return cashControlDocument; 276 } 277 278 public void setCashControlDocument(CashControlDocument cashControlDocument) { 279 this.cashControlDocument = cashControlDocument; 280 } 281 282 /** 283 * This method gets cash control detail status 284 * @return cash control detail status 285 */ 286 public String getStatus() { 287 return status; 288 } 289 290 /** 291 * This method sets cash control detail status 292 * @param status 293 */ 294 public void setStatus(String status) { 295 this.status = status; 296 } 297 298 }