/* * The Kuali Financial System, a comprehensive financial management system for higher education. * * Copyright 2005-2014 The Kuali Foundation * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ package org.kuali.kfs.module.ar.businessobject; import org.kuali.kfs.module.ar.document.ContractsGrantsInvoiceDocument; import org.kuali.kfs.sys.context.SpringContext; import org.kuali.rice.core.api.datetime.DateTimeService; import org.kuali.rice.kew.api.exception.WorkflowException; import org.kuali.rice.kim.api.identity.Person; import org.kuali.rice.kim.api.identity.PersonService; import org.kuali.rice.krad.bo.PersistableBusinessObjectBase; import org.kuali.rice.krad.service.DocumentService; import org.kuali.rice.krad.util.ObjectUtils; import java.sql.Date; import java.sql.Timestamp; import java.util.LinkedHashMap; /** * Collection Event class. */ public class CollectionEvent extends PersistableBusinessObjectBase { private Long id; private String collectionEventCode; private String invoiceNumber; private String activityCode; private Date activityDate; private String activityText; private Date followupDate; private Date completedDate; private Timestamp postedDate; private String userPrincipalId; private boolean completed; private transient Person user; private ContractsGrantsInvoiceDocument invoiceDocument; private CollectionActivityType collectionActivityType; /** * Gets the id attribute. * * @return Returns the id. */ public Long getId() { return id; } /** * Sets the id attribute value. * * @param id The id to set. */ public void setId(Long id) { this.id = id; } /** * Gets the collectionEventCode attribute. * * @return Returns the collectionEventCode. */ public String getCollectionEventCode() { return collectionEventCode; } /** * Sets the collectionEventCode attribute. * * @param collectionEventCode The collectionEventCode to set. */ public void setCollectionEventCode(String collectionEventCode) { this.collectionEventCode = collectionEventCode; } /** * Gets the invoiceNumber attribute. * * @return Returns the invoiceNumber. */ public String getInvoiceNumber() { return invoiceNumber; } /** * Sets the invoiceNumber attribute, * * @param invoiceNumber The invoiceNumber to set. */ public void setInvoiceNumber(String invoiceNumber) { this.invoiceNumber = invoiceNumber; } /** * Gets the activityCode attribute. * * @return Returns the activityCode. */ public String getActivityCode() { return activityCode; } /** * Sets the activityCode attribute. * * @param activityCode The activityCode to set. */ public void setActivityCode(String activityCode) { this.activityCode = activityCode; } /** * Gets the activityDate attribute. * * @return Returns the activityDate. */ public Date getActivityDate() { return activityDate; } /** * Sets the activityDate attribute. * * @param activityDate The activityDate to set. */ public void setActivityDate(Date activityDate) { this.activityDate = activityDate; } /** * Gets the activityText attribute. * * @return Returns the activityText. */ public String getActivityText() { return activityText; } /** * Sets the activityText attribute. * * @param activityText The activityText to set. */ public void setActivityText(String activityText) { this.activityText = activityText; } /** * Gets the followupDate attribute. * * @return Returns the followupDate. */ public Date getFollowupDate() { return followupDate; } /** * Sets the followupDate attribute. * * @param followupDate The followupDate to set. */ public void setFollowupDate(Date followupDate) { this.followupDate = followupDate; } /** * Gets the completedDate attribute. * * @return Returns the completedDate. */ public Date getCompletedDate() { return completedDate; } /** * Sets the completedDate attribute. * * @param completedDate The completedDate to set. */ public void setCompletedDate(Date completedDate) { this.completedDate = completedDate; } /** * Gets the postedDate attribute. * * @return Returns the postedDate. */ public java.util.Date getPostedDate() { return postedDate; } /** * Sets the postedDate attribute. * * @param postedDate The postedDate to set. */ public void setPostedDate(Timestamp postedDate) { this.postedDate = postedDate; } /** * Gets the userPrincipalId attribute. * * @return Returns the userPrincipalId. */ public String getUserPrincipalId() { return userPrincipalId; } /** * Sets the userPrincipalId attribute. * * @param userPrincipalId The userPrincipalId to set. */ public void setUserPrincipalId(String userPrincipalId) { this.userPrincipalId = userPrincipalId; } /** * Gets the user attribute. * * @return Returns the user from userPrincipalId. */ public Person getUser() { if (ObjectUtils.isNotNull(userPrincipalId)) { this.user = SpringContext.getBean(PersonService.class).updatePersonIfNecessary(userPrincipalId, user); } return user; } /** * Sets the user attribute. * * @param user The user to set. */ public void setUser(Person user) { this.user = user; } /** * Gets the invoiceDocument from given invoiceNumber. * * @return Return the invoiceDocument. */ public ContractsGrantsInvoiceDocument getInvoiceDocument() { if (ObjectUtils.isNull(invoiceDocument)) { DocumentService documentService = SpringContext.getBean(DocumentService.class); try { invoiceDocument = (ContractsGrantsInvoiceDocument) documentService.getByDocumentHeaderId(this.invoiceNumber); } catch (WorkflowException e) { throw new RuntimeException("A WorkflowException was thrown when trying to open the details parent document.", e); } } return invoiceDocument; } /** * Sets the invoiceDocument attribute. * * @param invoiceDocument The invoiceDocument attribute to set. */ public void setInvoiceDocument(ContractsGrantsInvoiceDocument invoiceDocument) { this.invoiceDocument = invoiceDocument; } /** * Gets the collectionActivityType attribute. * * @return Returns the collectionActivityType object. */ public CollectionActivityType getCollectionActivityType() { return collectionActivityType; } /** * Sets the collectionActivityType attribute. * * @param collectionActivityType The collectionActivityType object to set. */ public void setCollectionActivityType(CollectionActivityType collectionActivityType) { this.collectionActivityType = collectionActivityType; } public boolean isCompleted() { boolean retVal = false; if (ObjectUtils.isNotNull(getCompletedDate())) { retVal = SpringContext.getBean(DateTimeService.class).getCurrentSqlDate().after(getCompletedDate()); } return retVal; } /** * @see org.kuali.rice.krad.bo.BusinessObjectBase#toStringMapper() */ protected LinkedHashMap toStringMapper_RICE20_REFACTORME() { LinkedHashMap m = new LinkedHashMap(); m.put("id", id); m.put("collectionEventCode", this.collectionEventCode); m.put("invoiceNumber", this.invoiceNumber); m.put("activityCode", this.activityCode); if (ObjectUtils.isNotNull(this.activityText)) { m.put("activityText", this.activityText); } return m; } }