/* * 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.tem.businessobject; import java.sql.Date; import java.util.LinkedHashMap; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.Table; import org.apache.commons.lang.StringUtils; import org.kuali.kfs.module.tem.document.service.TravelDocumentService; import org.kuali.kfs.sys.context.SpringContext; import org.kuali.rice.core.api.util.type.KualiDecimal; import org.kuali.rice.krad.bo.PersistableBusinessObjectBase; @Entity @Table(name = "TEM_TRVL_ADV_T") public class TravelAdvance extends PersistableBusinessObjectBase { private String documentNumber; private String travelDocumentIdentifier; private KualiDecimal travelAdvanceRequested = KualiDecimal.ZERO; private KualiDecimal amountDue; private String arCustomerId; private String arInvoiceDocNumber; private Date dueDate; private Date taxRamificationNotificationDate; private String advancePaymentReasonCode; private Boolean travelAdvancePolicy = Boolean.FALSE; private String additionalJustification; private AdvancePaymentReason advancePaymentReason; /** * Gets the documentNumber attribute. * * @return Returns the documentNumber */ @Column(name = "FDOC_NBR") public String getDocumentNumber() { return documentNumber; } /** * Sets the documentNumber attribute. * * @param documentNumber The documentNumber to set. */ public void setDocumentNumber(String documentNumber) { this.documentNumber = documentNumber; } /** * @return the trip id for the travel document this is associated with. We know this breaks normalization, but it will make it much easier for * travel reimbursement to find all related travel advances */ @Column(name="TRVL_ID") public String getTravelDocumentIdentifier() { return travelDocumentIdentifier; } /** * Sets the trip id for the travel document this advance is associated with * @param travelDocumentIdentifier the travel document identifier/travel id/trip id */ public void setTravelDocumentIdentifier(String travelDocumentIdentifier) { this.travelDocumentIdentifier = travelDocumentIdentifier; } /** * This method returns the travel advance request * * @return travel advance requested amount */ @Column(name = "TVL_ADV_REQ", precision = 19, scale = 2) public KualiDecimal getTravelAdvanceRequested() { return travelAdvanceRequested; } /** * This method sets the amount of advance being requested * * @param travelAdvanceRequested */ public void setTravelAdvanceRequested(KualiDecimal travelAdvanceRequested) { this.travelAdvanceRequested = travelAdvanceRequested; } /** * Gets the amountDue attribute. * @return Returns the amountDue. */ public KualiDecimal getAmountDue() { if (arInvoiceDocNumber != null){ amountDue = getTravelDocumentService().getAmountDueFromInvoice(arInvoiceDocNumber,this.getTravelAdvanceRequested()); } else{ amountDue = this.getTravelAdvanceRequested(); } return amountDue; } public void setAmountDue(KualiDecimal amountDue) { this.amountDue = amountDue; } /** * This method returns the Accounts Receivable Customer ID associated with this traveler * * @return customer ID */ @Column(name = "AR_CUST_ID") public String getArCustomerId() { return arCustomerId; } /** * This method sets the Accounts Receivable Customer ID associated with this traveler * * @param arCustomerId */ public void setArCustomerId(String arCustomerId) { this.arCustomerId = arCustomerId; } /** * Gets the arInvoiceDocNumber attribute. * * @return Returns the arInvoiceDocNumber. */ @Column(name = "AR_INV_DOC_NBR") public String getArInvoiceDocNumber() { return arInvoiceDocNumber; } /** * Sets the arInvoiceDocNumber attribute value. * * @param arInvoiceDocNumber The arInvoiceDocNumber to set. */ public void setArInvoiceDocNumber(String arInvoiceDocNumber) { this.arInvoiceDocNumber = arInvoiceDocNumber; } /** * Gets the dueDate attribute. * * @return Returns the dueDate. */ @Column(name = "DUE_DT") public Date getDueDate() { return dueDate; } /** * Sets the dueDate attribute value. * * @param dueDate The dueDate to set. */ public void setDueDate(Date dueDate) { this.dueDate = dueDate; } /** * Gets the advancePaymentReasonCode attribute. * @return Returns the advancePaymentReasonCode. */ public String getAdvancePaymentReasonCode() { return advancePaymentReasonCode; } /** * Sets the advancePaymentReasonCode attribute value. * @param advancePaymentReasonCode The advancePaymentReasonCode to set. */ public void setAdvancePaymentReasonCode(String advancePaymentReasonCode) { this.advancePaymentReasonCode = advancePaymentReasonCode; } /** * Gets the advancePaymentReason attribute. * @return Returns the advancePaymentReason. */ public AdvancePaymentReason getAdvancePaymentReason() { return advancePaymentReason; } /** * Sets the advancePaymentReason attribute value. * @param advancePaymentReason The advancePaymentReason to set. */ public void setAdvancePaymentReason(AdvancePaymentReason advancePaymentReason) { this.advancePaymentReason = advancePaymentReason; } /** * Gets the travelAdvancePolicy attribute. * @return Returns the travelAdvancePolicy. */ public boolean getTravelAdvancePolicy() { return travelAdvancePolicy; } /** * Sets the travelAdvancePolicy attribute value. * @param travelAdvancePolicy The travelAdvancePolicy to set. */ public void setTravelAdvancePolicy(boolean travelAdvancePolicy) { this.travelAdvancePolicy = travelAdvancePolicy; } /** * Gets the additionalJustification attribute. * @return Returns the additionalJustification. */ public String getAdditionalJustification() { return additionalJustification; } /** * Sets the additionalJustification attribute value. * @param additionalJustification The additionalJustification to set. */ public void setAdditionalJustification(String additionalJustification) { this.additionalJustification = additionalJustification; } protected TravelDocumentService getTravelDocumentService() { return SpringContext.getBean(TravelDocumentService.class); } @SuppressWarnings("rawtypes") protected LinkedHashMap toStringMapper_RICE20_REFACTORME() { return null; } /** * Gets the taxRamificationNotificationDate attribute. * @return Returns the taxRamificationNotificationDate. */ @Column(name = "TAX_RAM_NTF_DT") public Date getTaxRamificationNotificationDate() { return taxRamificationNotificationDate; } /** * Sets the taxRamificationNotificationDate attribute value. * @param taxRamificationNotificationDate The taxRamificationNotificationDate to set. */ public void setTaxRamificationNotificationDate(Date taxRamificationNotificationDate) { this.taxRamificationNotificationDate = taxRamificationNotificationDate; } /** * Determines if any user-writable fields on the advance have been filled in * @return true if any user-writable field on the advance has been written to; false otherwise */ public boolean isAtLeastPartiallyFilledIn() { return (this.getTravelAdvanceRequested() != null && !getTravelAdvanceRequested().equals(KualiDecimal.ZERO)) || this.getDueDate() != null || this.getTravelAdvancePolicy() || !StringUtils.isBlank(this.getAdditionalJustification()); } /** * Removes the user-filled in data from this advance, thereby making it blank */ public void clear() { setTravelAdvanceRequested(null); setDueDate(null); setTravelAdvancePolicy(false); setAdditionalJustification(null); } }