/* * 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 org.kuali.kfs.sys.businessobject.PaymentDocumentationLocation; import org.kuali.kfs.sys.businessobject.options.PaymentDocumentationLocationValuesFinder; import org.kuali.kfs.sys.businessobject.options.PaymentMethodValuesFinder; import org.kuali.rice.core.api.util.type.KualiDecimal; import org.kuali.rice.krad.bo.PersistableBusinessObjectBase; /** * BusinessObject which holds fields representing those a travel document needs to make a payment */ public class TravelPayment extends PersistableBusinessObjectBase { private String documentNumber; private KualiDecimal checkTotalAmount; //editable on TA, read only on TR, RELO, ENT private boolean attachmentCode; private boolean specialHandlingCode; private String checkStubText; protected String documentationLocationCode; protected Date dueDate; protected String paymentMethodCode; private boolean immediatePaymentIndicator; private Date extractDate; private Date paidDate; private Date cancelDate; private boolean alienPaymentCode; private String specialHandlingPersonName; private String specialHandlingLine1Addr; private String specialHandlingLine2Addr; private String specialHandlingCityName; private String specialHandlingStateCode; private String specialHandlingZipCode; private String specialHandlingCountryCode; protected boolean editW9W8BENbox; // do we need this? protected boolean payeeW9CompleteCode; private String payeeTypeCode; protected boolean exceptionAttachedIndicator; private PaymentDocumentationLocation paymentDocumentationLocation; /** * @return the document number of the document this travel payment is associated with */ public String getDocumentNumber() { return this.documentNumber; } /** * Sets the document number of the document this travel payment is associated with * @param documentNumber the document number of the associated travel document */ public void setDocumentNumber(String documentNumber) { this.documentNumber = documentNumber; } /** * @return the total payment of the check generated by the associated document */ public KualiDecimal getCheckTotalAmount() { return checkTotalAmount; } /** * Sets the total payment of the check generated by the associated document * @param checkTotalAmount a check amount */ public void setCheckTotalAmount(KualiDecimal disbVchrCheckTotalAmount) { this.checkTotalAmount = disbVchrCheckTotalAmount; } /** * @return true if there is a check attachment, false otherwise */ public boolean isAttachmentCode() { return attachmentCode; } /** * Sets whether this travel payment has a check attachment * @param attachmentCode set to true to mean that there is an attachment with this check; defaults to false */ public void setAttachmentCode(boolean disbVchrAttachmentCode) { this.attachmentCode = disbVchrAttachmentCode; } /** * @return whether this payment includes instructions for special handling */ public boolean isSpecialHandlingCode() { return specialHandlingCode; } /** * Sets whether this payment includes instructions for special handling * @param specialHandlingCode true if payment includes instructions for special handling; defaults to false */ public void setSpecialHandlingCode(boolean disbVchrSpecialHandlingCode) { this.specialHandlingCode = disbVchrSpecialHandlingCode; } /** * @return the text to write on the check */ public String getCheckStubText() { return checkStubText; } /** * Sets the text to write on the check * @param checkStubText the text to write on the check */ public void setCheckStubText(String disbVchrCheckStubText) { this.checkStubText = disbVchrCheckStubText; } /** * @return whether this payment should be made ASAP once the document is approved */ public boolean isImmediatePaymentIndicator() { return immediatePaymentIndicator; } /** * Set if the payment should be made ASAP once the associated document is approved * @param immediatePaymentIndicator true if this payment should be made ASAP once the document is approved; defaults to false */ public void setImmediatePaymentIndicator(boolean immediatePaymentIndicator) { this.immediatePaymentIndicator = immediatePaymentIndicator; } /** * @return the date the payment associated with this document was extracted by PDP */ public Date getExtractDate() { return extractDate; } /** * Sets the date the document associated with this payment was extracted by PDP * @param extractDate the date the document associated with this payment was extracted by PDP */ public void setExtractDate(Date extractDate) { this.extractDate = extractDate; } /** * @return the date the document associated with this payment was paid in PDP */ public Date getPaidDate() { return paidDate; } /** * Sets the date the document associated with this payment was paid in PDP * @param paidDate the date the document associated with this payment was paid in PDP */ public void setPaidDate(Date paidDate) { this.paidDate = paidDate; } /** * @return the date the document associated with this payment was canceled in PDP */ public Date getCancelDate() { return cancelDate; } /** * Sets the date the document associated with this payment was canceled in PDP * @param cancelDate the date the document associated with this payment was canceled in PDP */ public void setCancelDate(Date cancelDate) { this.cancelDate = cancelDate; } /** * @return whether this payment is being made to a non-citizen */ public boolean isAlienPaymentCode() { return alienPaymentCode; } /** * Sets whether this payment is being made to a non-citizen * @param alienPaymentCode true if this payment is being made to a non-citizen; defaults to false */ public void setAlienPaymentCode(boolean disbVchrAlienPaymentCode) { this.alienPaymentCode = disbVchrAlienPaymentCode; } /** * @return the name to send to for special handling */ public String getSpecialHandlingPersonName() { return specialHandlingPersonName; } /** * Sets the name to send to for special handling * @param specialHandlingPersonName the name to send to for special handling */ public void setSpecialHandlingPersonName(String disbVchrSpecialHandlingPersonName) { this.specialHandlingPersonName = disbVchrSpecialHandlingPersonName; } /** * @return the first line of address to send to for special handling */ public String getSpecialHandlingLine1Addr() { return specialHandlingLine1Addr; } /** * Sets the first line of address to send to for special handling * @param specialHandlingLine1Addr the first line of address to send to for special handling */ public void setSpecialHandlingLine1Addr(String disbVchrSpecialHandlingLine1Addr) { this.specialHandlingLine1Addr = disbVchrSpecialHandlingLine1Addr; } /** * @return the second line of address to send to for special handling */ public String getSpecialHandlingLine2Addr() { return specialHandlingLine2Addr; } /** * Sets the second line of address to send to for special handling * @param specialHandlingLine2Addr the second line of address to send to for special handling */ public void setSpecialHandlingLine2Addr(String disbVchrSpecialHandlingLine2Addr) { this.specialHandlingLine2Addr = disbVchrSpecialHandlingLine2Addr; } /** * @return the name of the city to send to for special handling */ public String getSpecialHandlingCityName() { return specialHandlingCityName; } /** * Sets the name of the city to send to for special handling * @param specialHandlingCityName the name of the city to send to for special handling */ public void setSpecialHandlingCityName(String disbVchrSpecialHandlingCityName) { this.specialHandlingCityName = disbVchrSpecialHandlingCityName; } /** * @return the postal abbreviation of the state name to send to for special handling */ public String getSpecialHandlingStateCode() { return specialHandlingStateCode; } /** * Sets the postal abbreviation of the state name to send to for special handling * @param specialHandlingStateCode the postal abbreviation of the state name to send to for special handling */ public void setSpecialHandlingStateCode(String disbVchrSpecialHandlingStateCode) { this.specialHandlingStateCode = disbVchrSpecialHandlingStateCode; } /** * @return the postal code to send to for special handling */ public String getSpecialHandlingZipCode() { return specialHandlingZipCode; } /** * Sets the postal code to send to for special handling * @param specialHandlingZipCode the postal code to send to for special handling */ public void setSpecialHandlingZipCode(String disbVchrSpecialHandlingZipCode) { this.specialHandlingZipCode = disbVchrSpecialHandlingZipCode; } /** * @return the country code to send to for special handling */ public String getSpecialHandlingCountryCode() { return specialHandlingCountryCode; } /** * Sets the country code to send to for special handling * @param specialHandlingCountryCode the country code to send to for special handling */ public void setSpecialHandlingCountryCode(String disbVchrSpecialHandlingCountryCode) { this.specialHandlingCountryCode = disbVchrSpecialHandlingCountryCode; } /** * @return the location of documentation justifying this payment */ public String getDocumentationLocationCode() { return documentationLocationCode; } /** * Sets the location of documentation justifying this payment * @param documentationLocationCode the location of documentation justifying this payment */ public void setDocumentationLocationCode(String disbursementVoucherDocumentationLocationCode) { this.documentationLocationCode = disbursementVoucherDocumentationLocationCode; } /** * @return the date when this payment should ideally be made */ public Date getDueDate() { return dueDate; } /** * Sets the ideal date for this payment * @param dueDate the ideal date for this payment to be complete by */ public void setDueDate(Date disbursementVoucherDueDate) { this.dueDate = disbursementVoucherDueDate; } /** * @return the method of payment - check/ACH, wire transfer, or foreign draft */ public String getPaymentMethodCode() { return paymentMethodCode; } /** * Sets the code for the method of payment * @param paymentMethodCode the code for the method of payment */ public void setPaymentMethodCode(String disbVchrPaymentMethodCode) { this.paymentMethodCode = disbVchrPaymentMethodCode; } /** * @return the full record of the location where documentation justifying this payment exists */ public PaymentDocumentationLocation getPaymentDocumentationLocation() { return paymentDocumentationLocation; } /** * This method is really for the ORM to call. Really, developers should just call refresh. * @param paymentDocumentationLocation don't send a param and avoid calling this method */ public void setPaymentDocumentationLocation(PaymentDocumentationLocation paymentDocumentationLocation) { this.paymentDocumentationLocation = paymentDocumentationLocation; } /** * Returns the name associated with the payment method code * * @return String the name associated with the payment method code */ public String getPaymentMethodName() { return new PaymentMethodValuesFinder().getKeyLabel(this.paymentMethodCode); } /** * Does not set a name of a payment method. The real name is going to come from a standard location. * @param paymentMethodName a payment method name which will be diligently ignored */ public void setPaymentMethodName(String paymentMethodName) { // I'm just here to make bean utils happy, not to actually set values. } /** * Returns the name associated with the documentation location name * * @return String the name associated with the documentation location name */ public String getPaymentDocumentationLocationName() { return new PaymentDocumentationLocationValuesFinder().getKeyLabel(this.documentationLocationCode); } /** * Fails to set the documentation location name * @param paymentDocumentationLocationName a name of a documentation location which will be blithely tossed away */ public void setPaymentDocumentationLocationName(String paymentDocumentationLocationName) { // this setter is here just for the sake of bean utils } /** * Based on which pdp dates are present (extract, paid, canceled), determines a String for the status * @return a String representation of the status */ public String getPaymentPdpStatus() { if (cancelDate != null) { return "Canceled"; } if (paidDate != null) { return "Paid"; } if (extractDate != null) { return "Extracted"; } return "Pre-Extraction"; } /** * Pretends to set the PDP status for this document * * @param status the status to pretend to set */ public void setPaymentPdpStatus(String status) { // don't do nothing, 'cause this ain't a real field } /** * @return */ public boolean isEditW9W8BENbox() { return editW9W8BENbox; } /** * * @param editW9W8BENbox */ public void setEditW9W8BENbox(boolean editW9W8BENbox) { this.editW9W8BENbox = editW9W8BENbox; } /** * @return whether the payee's W9 happy fun time form is complete */ public boolean isPayeeW9CompleteCode() { return payeeW9CompleteCode; } /** * Sets whether the payee's W9 tax form has been completed * @param payeeW9CompleteCode true if the payee's/traveler's W9 was completed; defaults to false */ public void setPayeeW9CompleteCode(boolean payeeW9CompleteCode) { this.payeeW9CompleteCode = payeeW9CompleteCode; } /** * @return the code representing the type of the payee - either E for employee, V for Vendor, or C for Customer */ public String getPayeeTypeCode() { return payeeTypeCode; } /** * Sets the type code for the payee * @param payeeTypeCode the type code for the payee */ public void setPayeeTypeCode(String payeeTypeCode) { this.payeeTypeCode = payeeTypeCode; } /** * @return true if an exception is attached to this payment, false otherwise */ public boolean isExceptionAttachedIndicator() { return exceptionAttachedIndicator; } /** * Sets whether this payment has had an exception attached to it or not * @param exceptionAttachedIndicator true if the payment has had an exception attached to it; defaults to false */ public void setExceptionAttachedIndicator(boolean exceptionAttachedIndicator) { this.exceptionAttachedIndicator = exceptionAttachedIndicator; } }