/*
* 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.Timestamp;
import org.apache.commons.lang.StringUtils;
import org.kuali.kfs.coa.businessobject.Account;
import org.kuali.kfs.coa.businessobject.BalanceType;
import org.kuali.kfs.coa.businessobject.Chart;
import org.kuali.kfs.coa.businessobject.ObjectCode;
import org.kuali.kfs.coa.businessobject.ProjectCode;
import org.kuali.kfs.coa.businessobject.SubAccount;
import org.kuali.kfs.coa.businessobject.SubObjectCode;
import org.kuali.kfs.sys.context.SpringContext;
import org.kuali.kfs.sys.document.validation.impl.AccountingDocumentRuleBaseConstants.GENERAL_LEDGER_PENDING_ENTRY_CODE;
import org.kuali.rice.core.api.util.type.KualiDecimal;
import org.kuali.rice.kew.api.doctype.DocumentTypeService;
import org.kuali.rice.kew.doctype.bo.DocumentType;
import org.kuali.rice.kew.doctype.bo.DocumentTypeEBO;
import org.kuali.rice.krad.bo.PersistableBusinessObjectBase;
/**
* Table which holds travel encumbrances waiting for the next fiscal year to be created
*/
public class HeldEncumbranceEntry extends PersistableBusinessObjectBase {
private String documentNumber;
private Integer transactionLedgerEntrySequenceNumber;
private String travelDocumentIdentifier;
private String chartOfAccountsCode;
private String accountNumber;
private String subAccountNumber;
private String financialObjectCode;
private String financialSubObjectCode;
private String financialBalanceTypeCode;
private String transactionLedgerEntryDescription;
private KualiDecimal transactionLedgerEntryAmount;
private String transactionDebitCreditCode;
private String projectCode;
private String financialDocumentTypeCode;
private String organizationReferenceId;
private String acctSufficientFundsFinObjCd;
private boolean transactionEntryOffsetIndicator;
private Timestamp transactionEntryProcessedTs;
private DocumentTypeEBO financialSystemDocumentTypeCode;
private Chart chart;
private Account account;
private SubAccount subAccount;
private ObjectCode financialObject;
private SubObjectCode financialSubObject;
private BalanceType balanceType;
private ProjectCode project;
public ProjectCode getProject() {
return project;
}
public void setProject(ProjectCode project) {
this.project = project;
}
/**
* Gets the documentNumber attribute.
*
* @return Returns the documentNumber
*/
public String getDocumentNumber() {
return documentNumber;
}
/**
* Sets the documentNumber attribute.
*
* @param documentNumber The documentNumber to set.
*/
public void setDocumentNumber(String documentNumber) {
this.documentNumber = documentNumber;
}
/**
* Gets the transactionLedgerEntrySequenceNumber attribute.
*
* @return Returns the transactionLedgerEntrySequenceNumber
*/
public Integer getTransactionLedgerEntrySequenceNumber() {
return transactionLedgerEntrySequenceNumber;
}
/**
* Sets the transactionLedgerEntrySequenceNumber attribute.
*
* @param transactionLedgerEntrySequenceNumber The transactionLedgerEntrySequenceNumber to set.
*/
public void setTransactionLedgerEntrySequenceNumber(Integer transactionLedgerEntrySequenceNumber) {
this.transactionLedgerEntrySequenceNumber = transactionLedgerEntrySequenceNumber;
}
/**
* Gets the chartOfAccountsCode attribute.
*
* @return Returns the chartOfAccountsCode
*/
public String getChartOfAccountsCode() {
return chartOfAccountsCode;
}
/**
* Sets the chartOfAccountsCode attribute.
*
* @param chartOfAccountsCode The chartOfAccountsCode to set.
*/
public void setChartOfAccountsCode(String chartOfAccountsCode) {
this.chartOfAccountsCode = chartOfAccountsCode;
}
/**
* Gets the accountNumber attribute.
*
* @return Returns the accountNumber
*/
public String getAccountNumber() {
return accountNumber;
}
/**
* Sets the accountNumber attribute.
*
* @param accountNumber The accountNumber to set.
*/
public void setAccountNumber(String accountNumber) {
this.accountNumber = accountNumber;
}
/**
* Gets the subAccountNumber attribute.
*
* @return Returns the subAccountNumber
*/
public String getSubAccountNumber() {
return subAccountNumber;
}
/**
* Sets the subAccountNumber attribute.
*
* @param subAccountNumber The subAccountNumber to set.
*/
public void setSubAccountNumber(String subAccountNumber) {
this.subAccountNumber = subAccountNumber;
}
/**
* Gets the financialObjectCode attribute.
*
* @return Returns the financialObjectCode
*/
public String getFinancialObjectCode() {
return financialObjectCode;
}
/**
* Sets the financialObjectCode attribute.
*
* @param financialObjectCode The financialObjectCode to set.
*/
public void setFinancialObjectCode(String financialObjectCode) {
this.financialObjectCode = financialObjectCode;
}
/**
* Gets the financialSubObjectCode attribute.
*
* @return Returns the financialSubObjectCode
*/
public String getFinancialSubObjectCode() {
return financialSubObjectCode;
}
/**
* Sets the financialSubObjectCode attribute.
*
* @param financialSubObjectCode The financialSubObjectCode to set.
*/
public void setFinancialSubObjectCode(String financialSubObjectCode) {
this.financialSubObjectCode = financialSubObjectCode;
}
/**
* Gets the financialBalanceTypeCode attribute.
*
* @return Returns the financialBalanceTypeCode
*/
public String getFinancialBalanceTypeCode() {
return financialBalanceTypeCode;
}
/**
* Sets the financialBalanceTypeCode attribute.
*
* @param financialBalanceTypeCode The financialBalanceTypeCode to set.
*/
public void setFinancialBalanceTypeCode(String financialBalanceTypeCode) {
this.financialBalanceTypeCode = financialBalanceTypeCode;
}
/**
* Gets the transactionLedgerEntryDescription attribute.
*
* @return Returns the transactionLedgerEntryDescription
*/
public String getTransactionLedgerEntryDescription() {
return transactionLedgerEntryDescription;
}
/**
* Sets the transactionLedgerEntryDescription attribute.
*
* @param transactionLedgerEntryDescription The transactionLedgerEntryDescription to set.
*/
public void setTransactionLedgerEntryDescription(String transactionLedgerEntryDescription) {
this.transactionLedgerEntryDescription = transactionLedgerEntryDescription;
}
/**
* Gets the transactionLedgerEntryAmount attribute.
*
* @return Returns the transactionLedgerEntryAmount
*/
public KualiDecimal getTransactionLedgerEntryAmount() {
return transactionLedgerEntryAmount;
}
/**
* Sets the transactionLedgerEntryAmount attribute.
*
* @param transactionLedgerEntryAmount The transactionLedgerEntryAmount to set.
*/
public void setTransactionLedgerEntryAmount(KualiDecimal transactionLedgerEntryAmount) {
this.transactionLedgerEntryAmount = transactionLedgerEntryAmount;
}
/**
* Gets the transactionDebitCreditCode attribute.
*
* @return Returns the transactionDebitCreditCode
*/
public String getTransactionDebitCreditCode() {
return transactionDebitCreditCode;
}
/**
* Sets the transactionDebitCreditCode attribute.
*
* @param transactionDebitCreditCode The transactionDebitCreditCode to set.
*/
public void setTransactionDebitCreditCode(String transactionDebitCreditCode) {
this.transactionDebitCreditCode = transactionDebitCreditCode;
}
/**
* Gets the projectCode attribute.
*
* @return Returns the projectCode
*/
public String getProjectCode() {
return projectCode;
}
/**
* Sets the projectCode attribute.
*
* @param projectCode The projectCode to set.
*/
public void setProjectCode(String projectCode) {
this.projectCode = projectCode;
}
public String getFinancialDocumentTypeCode() {
return financialDocumentTypeCode;
}
public void setFinancialDocumentTypeCode(String financialDocumentTypeCode) {
this.financialDocumentTypeCode = financialDocumentTypeCode;
}
/**
* Gets the organizationReferenceId attribute.
*
* @return Returns the organizationReferenceId
*/
public String getOrganizationReferenceId() {
return organizationReferenceId;
}
/**
* Sets the organizationReferenceId attribute.
*
* @param organizationReferenceId The organizationReferenceId to set.
*/
public void setOrganizationReferenceId(String organizationReferenceId) {
this.organizationReferenceId = organizationReferenceId;
}
/**
* Gets the acctSufficientFundsFinObjCd attribute.
*
* @return Returns the acctSufficientFundsFinObjCd
*/
public String getAcctSufficientFundsFinObjCd() {
return acctSufficientFundsFinObjCd;
}
/**
* Sets the acctSufficientFundsFinObjCd attribute.
*
* @param acctSufficientFundsFinObjCd The acctSufficientFundsFinObjCd to set.
*/
public void setAcctSufficientFundsFinObjCd(String acctSufficientFundsFinObjCd) {
this.acctSufficientFundsFinObjCd = acctSufficientFundsFinObjCd;
}
/**
* Gets the transactionEntryOffsetIndicator attribute.
*
* @return Returns the transactionEntryOffsetIndicator
*/
public boolean isTransactionEntryOffsetIndicator() {
return transactionEntryOffsetIndicator;
}
/**
* Sets the transactionEntryOffsetIndicator attribute.
*
* @param transactionEntryOffsetIndicator The transactionEntryOffsetIndicator to set.
*/
public void setTransactionEntryOffsetIndicator(boolean transactionEntryOffsetIndicator) {
this.transactionEntryOffsetIndicator = transactionEntryOffsetIndicator;
}
/**
* Gets the transactionEntryProcessedTs attribute.
*
* @return Returns the transactionEntryProcessedTs
*/
public Timestamp getTransactionEntryProcessedTs() {
return transactionEntryProcessedTs;
}
/**
* Sets the transactionEntryProcessedTs attribute.
*
* @param transactionEntryProcessedTs The transactionEntryProcessedTs to set.
*/
public void setTransactionEntryProcessedTs(Timestamp transactionEntryProcessedTs) {
this.transactionEntryProcessedTs = transactionEntryProcessedTs;
}
public String getTravelDocumentIdentifier() {
return travelDocumentIdentifier;
}
public void setTravelDocumentIdentifier(String travelDocumentIdentifier) {
this.travelDocumentIdentifier = travelDocumentIdentifier;
}
/**
* Gets the account attribute.
*
* @return Returns the account.
*/
public Account getAccount() {
return account;
}
/**
* Sets the account attribute value.
*
* @param account The account to set.
*/
public void setAccount(Account account) {
this.account = account;
}
/**
* Gets the balanceType attribute.
*
* @return Returns the balanceType.
*/
public BalanceType getBalanceType() {
return balanceType;
}
/**
* Sets the balanceType attribute value.
*
* @param balanceType The balanceType to set.
*/
public void setBalanceType(BalanceType balanceType) {
this.balanceType = balanceType;
}
/**
* Gets the chart attribute.
*
* @return Returns the chart.
*/
public Chart getChart() {
return chart;
}
/**
* Sets the chart attribute value.
*
* @param chart The chart to set.
*/
public void setChart(Chart chart) {
this.chart = chart;
}
/**
* Gets the financialObject attribute.
*
* @return Returns the financialObject.
*/
public ObjectCode getFinancialObject() {
return financialObject;
}
/**
* Sets the financialObject attribute value.
*
* @param financialObject The financialObject to set.
*/
public void setFinancialObject(ObjectCode financialObject) {
this.financialObject = financialObject;
}
public SubAccount getSubAccount() {
return subAccount;
}
public void setSubAccount(SubAccount subAccount) {
this.subAccount = subAccount;
}
public SubObjectCode getFinancialSubObject() {
return financialSubObject;
}
public void setFinancialSubObject(SubObjectCode financialSubObject) {
this.financialSubObject = financialSubObject;
}
public boolean isSubAccountNumberBlank() {
return subAccountNumber == null || GENERAL_LEDGER_PENDING_ENTRY_CODE.getBlankSubAccountNumber().equals(subAccountNumber);
}
public boolean isFinancialObjectCodeBlank() {
return financialObjectCode == null || GENERAL_LEDGER_PENDING_ENTRY_CODE.getBlankFinancialObjectCode().equals(financialObjectCode);
}
public boolean isFinancialSubObjectCodeBlank() {
return financialSubObjectCode == null || GENERAL_LEDGER_PENDING_ENTRY_CODE.getBlankFinancialSubObjectCode().equals(financialSubObjectCode);
}
public boolean isProjectCodeBlank() {
return projectCode == null || GENERAL_LEDGER_PENDING_ENTRY_CODE.getBlankProjectCode().equals(projectCode);
}
/**
* Gets the financialSystemDocumentTypeCode attribute.
* @return Returns the financialSystemDocumentTypeCode.
*/
public DocumentTypeEBO getFinancialSystemDocumentTypeCode() {
if ( StringUtils.isBlank( financialDocumentTypeCode ) ) {
financialSystemDocumentTypeCode = null;
} else {
if ( financialSystemDocumentTypeCode == null || !StringUtils.equals(financialDocumentTypeCode, financialSystemDocumentTypeCode.getName() ) ) {
org.kuali.rice.kew.api.doctype.DocumentType temp = SpringContext.getBean(DocumentTypeService.class).getDocumentTypeByName(financialDocumentTypeCode);
if ( temp != null ) {
financialSystemDocumentTypeCode = DocumentType.from( temp );
} else {
financialSystemDocumentTypeCode = null;
}
}
}
return financialSystemDocumentTypeCode;
}
}