/*
* 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.cam.businessobject;
import java.sql.Date;
import java.sql.Timestamp;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Collection;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Locale;
import org.apache.commons.lang.StringUtils;
import org.kuali.kfs.coa.businessobject.Account;
import org.kuali.kfs.coa.businessobject.AccountingPeriod;
import org.kuali.kfs.coa.businessobject.Chart;
import org.kuali.kfs.coa.service.AccountingPeriodService;
import org.kuali.kfs.integration.cg.ContractsAndGrantsAgency;
import org.kuali.kfs.module.cam.CamsKeyConstants;
import org.kuali.kfs.module.cam.CamsPropertyConstants;
import org.kuali.kfs.module.cam.document.service.AssetGlobalService;
import org.kuali.kfs.sys.businessobject.FinancialSystemDocumentHeader;
import org.kuali.kfs.sys.businessobject.GeneralLedgerPendingEntry;
import org.kuali.kfs.sys.context.SpringContext;
import org.kuali.kfs.sys.document.validation.impl.KfsMaintenanceDocumentRuleBase;
import org.kuali.rice.core.api.datetime.DateTimeService;
import org.kuali.rice.core.api.util.type.KualiDecimal;
import org.kuali.rice.kew.api.WorkflowDocument;
import org.kuali.rice.kew.api.WorkflowDocumentFactory;
import org.kuali.rice.kim.api.identity.Person;
import org.kuali.rice.krad.bo.GlobalBusinessObject;
import org.kuali.rice.krad.bo.GlobalBusinessObjectDetail;
import org.kuali.rice.krad.bo.PersistableBusinessObject;
import org.kuali.rice.krad.bo.PersistableBusinessObjectBase;
import org.kuali.rice.krad.service.KualiModuleService;
import org.kuali.rice.krad.util.GlobalVariables;
import org.kuali.rice.krad.util.ObjectUtils;
/**
* @author Kuali Nervous System Team (kualidev@oncourse.iu.edu)
*/
public class AssetGlobal extends PersistableBusinessObjectBase implements GlobalBusinessObject {
private static org.apache.log4j.Logger LOG = org.apache.log4j.Logger.getLogger(AssetGlobal.class);
private String documentNumber;
private String acquisitionTypeCode;
private String capitalAssetDescription;
private String inventoryStatusCode;
private String conditionCode;
private String capitalAssetTypeCode;
private String manufacturerName;
private String manufacturerModelNumber;
private KualiDecimal totalCostAmount;
private String landCountyName;
private Integer landAcreageSize;
private String landParcelNumber;
private String vendorName;
private String organizationText;
private Date createDate;
private Date capitalAssetInServiceDate;
private Date capitalAssetDepreciationDate;
private String representativeUniversalIdentifier;
private String organizationOwnerChartOfAccountsCode;
private String organizationOwnerAccountNumber;
private String agencyNumber;
private Integer financialDocumentNextLineNumber;
private Asset separateSourceCapitalAsset;
private Integer separateSourcePaymentSequenceNumber;
private boolean capitalAssetBuilderOriginIndicator;
protected String financialDocumentPostingPeriodCode;
protected Integer financialDocumentPostingYear;
// CSU 6702 END
protected String universityFiscalPeriodName;
// CSU 6702 END
// Not Persisted
private AccountingPeriod accountingPeriod;
private Date lastInventoryDate;
private ContractsAndGrantsAgency agency;
private Person assetRepresentative;
private AssetType capitalAssetType;
private AssetCondition assetCondition;
private AssetStatus inventoryStatus;
private List<AssetGlobalDetail> assetGlobalDetails;
private List<AssetGlobalDetail> assetSharedDetails;
private List<AssetPaymentDetail> assetPaymentDetails;
private AssetAcquisitionType acquisitionType;
private Chart organizationOwnerChartOfAccounts;
private Account organizationOwnerAccount;
// field is here so that AssetLookupableHelperServiceImpl can pass action information
private String financialDocumentTypeCode;
private Long separateSourceCapitalAssetNumber;
// Calculate Equal Source Amounts button
private String calculateEqualSourceAmountsButton;
// calculate remaining source amount
private KualiDecimal separateSourceRemainingAmount;
private KualiDecimal separateSourceTotalAmount;
private String calculateSeparateSourceRemainingAmountButton;
private List<GeneralLedgerPendingEntry> generalLedgerPendingEntries;
private FinancialSystemDocumentHeader documentHeader;
private KualiDecimal totalAssetPaymentAmount;
//
private KualiDecimal minAssetTotalAmount;
private KualiDecimal maxAssetTotalAmount;
// CSU 6702 BEGIN
static protected transient AccountingPeriodService accountingPeriodService;
// CSU 6702 END
/**
* Default constructor.
*/
public AssetGlobal() {
assetGlobalDetails = new ArrayList<AssetGlobalDetail>();
assetSharedDetails = new ArrayList<AssetGlobalDetail>();
assetPaymentDetails = new ArrayList<AssetPaymentDetail>();
this.generalLedgerPendingEntries = new ArrayList<GeneralLedgerPendingEntry>();
}
/**
* 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 acquisitionTypeCode attribute.
*
* @return Returns the acquisitionTypeCode
*/
public String getAcquisitionTypeCode() {
return acquisitionTypeCode;
}
/**
* Sets the acquisitionTypeCode attribute.
*
* @param acquisitionTypeCode The acquisitionTypeCode to set.
*/
public void setAcquisitionTypeCode(String acquisitionTypeCode) {
this.acquisitionTypeCode = acquisitionTypeCode;
}
/**
* Gets the capitalAssetDescription attribute.
*
* @return Returns the capitalAssetDescription
*/
public String getCapitalAssetDescription() {
return capitalAssetDescription;
}
/**
* Sets the capitalAssetDescription attribute.
*
* @param capitalAssetDescription The capitalAssetDescription to set.
*/
public void setCapitalAssetDescription(String capitalAssetDescription) {
this.capitalAssetDescription = capitalAssetDescription;
}
/**
* Gets the inventoryStatusCode attribute.
*
* @return Returns the inventoryStatusCode
*/
public String getInventoryStatusCode() {
return inventoryStatusCode;
}
/**
* Sets the inventoryStatusCode attribute.
*
* @param inventoryStatusCode The inventoryStatusCode to set.
*/
public void setInventoryStatusCode(String inventoryStatusCode) {
this.inventoryStatusCode = inventoryStatusCode;
}
/**
* Gets the conditionCode attribute.
*
* @return Returns the conditionCode
*/
public String getConditionCode() {
return conditionCode;
}
/**
* Sets the conditionCode attribute.
*
* @param conditionCode The conditionCode to set.
*/
public void setConditionCode(String conditionCode) {
this.conditionCode = conditionCode;
}
/**
* Gets the capitalAssetTypeCode attribute.
*
* @return Returns the capitalAssetTypeCode
*/
public String getCapitalAssetTypeCode() {
return capitalAssetTypeCode;
}
/**
* Sets the capitalAssetTypeCode attribute.
*
* @param capitalAssetTypeCode The capitalAssetTypeCode to set.
*/
public void setCapitalAssetTypeCode(String capitalAssetTypeCode) {
this.capitalAssetTypeCode = capitalAssetTypeCode;
}
/**
* Gets the manufacturerName attribute.
*
* @return Returns the manufacturerName
*/
public String getManufacturerName() {
return manufacturerName;
}
/**
* Sets the manufacturerName attribute.
*
* @param manufacturerName The manufacturerName to set.
*/
public void setManufacturerName(String manufacturerName) {
this.manufacturerName = manufacturerName;
}
/**
* Gets the manufacturerModelNumber attribute.
*
* @return Returns the manufacturerModelNumber
*/
public String getManufacturerModelNumber() {
return manufacturerModelNumber;
}
/**
* Sets the manufacturerModelNumber attribute.
*
* @param manufacturerModelNumber The manufacturerModelNumber to set.
*/
public void setManufacturerModelNumber(String manufacturerModelNumber) {
this.manufacturerModelNumber = manufacturerModelNumber;
}
/**
* Gets the totalCostAmount attribute.
*
* @return Returns the totalCostAmount
*/
public KualiDecimal getTotalCostAmount() {
return totalCostAmount;
}
/**
* Sets the totalCostAmount attribute.
*
* @param totalCostAmount The totalCostAmount to set.
*/
public void setTotalCostAmount(KualiDecimal totalCostAmount) {
this.totalCostAmount = totalCostAmount;
}
/**
* Gets the landCountyName attribute.
*
* @return Returns the landCountyName
*/
public String getLandCountyName() {
return landCountyName;
}
/**
* Sets the landCountyName attribute.
*
* @param landCountyName The landCountyName to set.
*/
public void setLandCountyName(String landCountyName) {
this.landCountyName = landCountyName;
}
/**
* Gets the landAcreageSize attribute.
*
* @return Returns the landAcreageSize
*/
public Integer getLandAcreageSize() {
return landAcreageSize;
}
/**
* Sets the landAcreageSize attribute.
*
* @param landAcreageSize The landAcreageSize to set.
*/
public void setLandAcreageSize(Integer landAcreageSize) {
this.landAcreageSize = landAcreageSize;
}
/**
* Gets the landParcelNumber attribute.
*
* @return Returns the landParcelNumber
*/
public String getLandParcelNumber() {
return landParcelNumber;
}
/**
* Sets the landParcelNumber attribute.
*
* @param landParcelNumber The landParcelNumber to set.
*/
public void setLandParcelNumber(String landParcelNumber) {
this.landParcelNumber = landParcelNumber;
}
/**
* Gets the vendorName attribute.
*
* @return Returns the vendorName
*/
public String getVendorName() {
return vendorName;
}
/**
* Sets the vendorName attribute.
*
* @param vendorName The vendorName to set.
*/
public void setVendorName(String vendorName) {
this.vendorName = vendorName;
}
/**
* Gets the organizationText attribute.
*
* @return Returns the organizationText
*/
public String getOrganizationText() {
return organizationText;
}
/**
* Sets the organizationText attribute.
*
* @param organizationText The organizationText to set.
*/
public void setOrganizationText(String organizationText) {
this.organizationText = organizationText;
}
/**
* Gets the createDate attribute.
*
* @return Returns the createDate
*/
public Date getCreateDate() {
if (createDate != null) {
return createDate;
}
else {
return SpringContext.getBean(DateTimeService.class).getCurrentSqlDate();
}
}
/**
* Sets the createDate attribute.
*
* @param createDate The createDate to set.
*/
public void setCreateDate(Date createDate) {
this.createDate = createDate;
}
/**
* Gets the capitalAssetInServiceDate attribute.
*
* @return Returns the capitalAssetInServiceDate
*/
public Date getCapitalAssetInServiceDate() {
return capitalAssetInServiceDate;
}
/**
* Sets the capitalAssetInServiceDate attribute.
*
* @param capitalAssetInServiceDate The capitalAssetInServiceDate to set.
*/
public void setCapitalAssetInServiceDate(Date capitalAssetInServiceDate) {
this.capitalAssetInServiceDate = capitalAssetInServiceDate;
}
/**
* Gets the capitalAssetDepreciationDate attribute.
*
* @return Returns the capitalAssetDepreciationDate
*/
public Date getCapitalAssetDepreciationDate() {
return capitalAssetDepreciationDate;
}
/**
* Sets the capitalAssetDepreciationDate attribute.
*
* @param capitalAssetDepreciationDate The capitalAssetDepreciationDate to set.
*/
public void setCapitalAssetDepreciationDate(Date capitalAssetDepreciationDate) {
this.capitalAssetDepreciationDate = capitalAssetDepreciationDate;
}
/**
* Gets the agencyNumber attribute.
*
* @return Returns the agencyNumber.
*/
public String getAgencyNumber() {
return agencyNumber;
}
/**
* Sets the agencyNumber attribute value.
*
* @param agencyNumber The agencyNumber to set.
*/
public void setAgencyNumber(String agencyNumber) {
this.agencyNumber = agencyNumber;
}
/**
* Gets the organizationOwnerAccountNumber attribute.
*
* @return Returns the organizationOwnerAccountNumber.
*/
public String getOrganizationOwnerAccountNumber() {
return organizationOwnerAccountNumber;
}
/**
* Sets the organizationOwnerAccountNumber attribute value.
*
* @param organizationOwnerAccountNumber The organizationOwnerAccountNumber to set.
*/
public void setOrganizationOwnerAccountNumber(String organizationOwnerAccountNumber) {
this.organizationOwnerAccountNumber = organizationOwnerAccountNumber;
}
/**
* Gets the organizationOwnerChartOfAccountsCode attribute.
*
* @return Returns the organizationOwnerChartOfAccountsCode.
*/
public String getOrganizationOwnerChartOfAccountsCode() {
return organizationOwnerChartOfAccountsCode;
}
/**
* Sets the organizationOwnerChartOfAccountsCode attribute value.
*
* @param organizationOwnerChartOfAccountsCode The organizationOwnerChartOfAccountsCode to set.
*/
public void setOrganizationOwnerChartOfAccountsCode(String organizationOwnerChartOfAccountsCode) {
this.organizationOwnerChartOfAccountsCode = organizationOwnerChartOfAccountsCode;
}
/**
* Gets the representativeUniversalIdentifier attribute.
*
* @return Returns the representativeUniversalIdentifier.
*/
public String getRepresentativeUniversalIdentifier() {
return representativeUniversalIdentifier;
}
/**
* Sets the representativeUniversalIdentifier attribute value.
*
* @param representativeUniversalIdentifier The representativeUniversalIdentifier to set.
*/
public void setRepresentativeUniversalIdentifier(String representativeUniversalIdentifier) {
this.representativeUniversalIdentifier = representativeUniversalIdentifier;
}
/**
* Gets the assetCondition attribute.
*
* @return Returns the assetCondition.
*/
public AssetCondition getAssetCondition() {
return assetCondition;
}
/**
* Sets the assetCondition attribute value.
*
* @param assetCondition The assetCondition to set.
* @deprecated
*/
public void setAssetCondition(AssetCondition assetCondition) {
this.assetCondition = assetCondition;
}
/**
* Gets the capitalAssetType attribute.
*
* @return Returns the capitalAssetType.
*/
public AssetType getCapitalAssetType() {
return capitalAssetType;
}
/**
* Sets the capitalAssetType attribute value.
*
* @param capitalAssetType The capitalAssetType to set.
* @deprecated
*/
public void setCapitalAssetType(AssetType capitalAssetType) {
this.capitalAssetType = capitalAssetType;
}
/**
* Gets the inventoryStatus attribute.
*
* @return Returns the inventoryStatus.
*/
public AssetStatus getInventoryStatus() {
return inventoryStatus;
}
/**
* Sets the inventoryStatus attribute value.
*
* @param inventoryStatus The inventoryStatus to set.
* @deprecated
*/
public void setInventoryStatus(AssetStatus inventoryStatus) {
this.inventoryStatus = inventoryStatus;
}
/**
* Gets the organizationOwnerAccount attribute.
*
* @return Returns the organizationOwnerAccount.
*/
public Account getOrganizationOwnerAccount() {
return organizationOwnerAccount;
}
/**
* Sets the organizationOwnerAccount attribute value.
*
* @param organizationOwnerAccount The organizationOwnerAccount to set.
* @deprecated
*/
public void setOrganizationOwnerAccount(Account organizationOwnerAccount) {
this.organizationOwnerAccount = organizationOwnerAccount;
}
/**
* Gets the organizationOwnerChartOfAccounts attribute.
*
* @return Returns the organizationOwnerChartOfAccounts.
*/
public Chart getOrganizationOwnerChartOfAccounts() {
return organizationOwnerChartOfAccounts;
}
/**
* Sets the organizationOwnerChartOfAccounts attribute value.
*
* @param organizationOwnerChartOfAccounts The organizationOwnerChartOfAccounts to set.
* @deprecated
*/
public void setOrganizationOwnerChartOfAccounts(Chart organizationOwnerChartOfAccounts) {
this.organizationOwnerChartOfAccounts = organizationOwnerChartOfAccounts;
}
/**
* Gets the assetGlobalDetails attribute.
*
* @return Returns the assetGlobalDetails.
*/
public List<AssetGlobalDetail> getAssetGlobalDetails() {
return assetGlobalDetails;
}
/**
* Sets the assetGlobalDetails attribute value.
*
* @param assetGlobalDetails The assetGlobalDetails to set.
*/
public void setAssetGlobalDetails(List<AssetGlobalDetail> assetGlobalDetails) {
this.assetGlobalDetails = assetGlobalDetails;
}
/**
* Gets the assetPaymentDetails attribute.
*
* @return Returns the assetPaymentDetails.
*/
public List<AssetPaymentDetail> getAssetPaymentDetails() {
return assetPaymentDetails;
}
/**
* Sets the assetPaymentDetails attribute value.
*
* @param assetPaymentDetails The assetPaymentDetails to set.
*/
public void setAssetPaymentDetails(List<AssetPaymentDetail> assetPaymentDetails) {
this.assetPaymentDetails = assetPaymentDetails;
}
/**
* @see org.kuali.rice.kns.document.GlobalBusinessObject#getGlobalChangesToDelete()
*/
public List<PersistableBusinessObject> generateDeactivationsToPersist() {
return null;
}
/**
* This returns a list of Assets to Update and/or Add. Applicable to both create new and separate.
*
* @see org.kuali.rice.kns.bo.GlobalBusinessObject#generateGlobalChangesToPersist()
*/
public List<PersistableBusinessObject> generateGlobalChangesToPersist() {
List<PersistableBusinessObject> persistables = new ArrayList<PersistableBusinessObject>();
AssetGlobalService assetGlobalService = SpringContext.getBean(AssetGlobalService.class);
if (assetGlobalService.isAssetSeparate(this)) {
persistables = assetGlobalService.getSeparateAssets(this);
}
else {
persistables = assetGlobalService.getCreateNewAssets(this);
}
return persistables;
}
public boolean isPersistable() {
// This is needed because otherwise we could get DB Constraint violation error if user tries
// to save Asset Global document with a non existing, inactive or expired account.
this.refreshReferenceObject(CamsPropertyConstants.AssetGlobal.ORGANIZATION_OWNER_ACCOUNT);
AssetGlobalService assetGlobalService = SpringContext.getBean(AssetGlobalService.class);
if (!assetGlobalService.isAssetSeparate(this)) {
Account organizationOwnerAccount = this.getOrganizationOwnerAccount();
if (ObjectUtils.isNull(organizationOwnerAccount) || !organizationOwnerAccount.isActive() || organizationOwnerAccount.isExpired()) {
GlobalVariables.getMessageMap().putErrorWithoutFullErrorPath(KfsMaintenanceDocumentRuleBase.MAINTAINABLE_ERROR_PREFIX + CamsPropertyConstants.AssetGlobal.ORGANIZATION_OWNER_ACCOUNT_NUMBER, CamsKeyConstants.ORGANIZATION_OWNER_ACCOUNT_INVALID);
return false;
}
}
return true;
}
public List<? extends GlobalBusinessObjectDetail> getAllDetailObjects() {
return getAssetGlobalDetails();
}
/**
* Gets the lastInventoryDate attribute.
*
* @return Returns the lastInventoryDate.
*/
public Date getLastInventoryDate() {
return lastInventoryDate;
}
/**
* Sets the lastInventoryDate attribute value.
*
* @param lastInventoryDate The lastInventoryDate to set.
*/
public void setLastInventoryDate(Date lastInventoryDate) {
this.lastInventoryDate = lastInventoryDate;
}
/**
* Gets the financialDocumentPostingPeriodCode attribute.
*
* @return Returns the financialDocumentPostingPeriodCode
*/
public String getFinancialDocumentPostingPeriodCode() {
return financialDocumentPostingPeriodCode;
}
/**
* Sets the financialDocumentPostingPeriodCode attribute.
*
* @param financialDocumentPostingPeriodCode The financialDocumentPostingPeriodCode to set.
*/
public void setFinancialDocumentPostingPeriodCode(String financialDocumentPostingPeriodCode) {
this.financialDocumentPostingPeriodCode = financialDocumentPostingPeriodCode;
}
/**
* Gets the financialDocumentPostingYear attribute.
*
* @return Returns the financialDocumentPostingYear
*/
public Integer getFinancialDocumentPostingYear() {
return financialDocumentPostingYear;
}
/**
* Sets the financialDocumentPostingYear attribute.
*
* @param financialDocumentPostingYear The financialDocumentPostingYear to set.
*/
public void setFinancialDocumentPostingYear(Integer financialDocumentPostingYear) {
this.financialDocumentPostingYear = financialDocumentPostingYear;
}
/**
* @see org.kuali.rice.kns.bo.BusinessObjectBase#toStringMapper()
*/
protected LinkedHashMap toStringMapper_RICE20_REFACTORME() {
LinkedHashMap<String, String> m = new LinkedHashMap<String, String>();
m.put("documentNumber", this.documentNumber);
return m;
}
/**
* Gets the financialDocumentNextLineNumber attribute.
*
* @return Returns the financialDocumentNextLineNumber.
*/
public Integer getFinancialDocumentNextLineNumber() {
return financialDocumentNextLineNumber;
}
/**
* Sets the financialDocumentNextLineNumber attribute value.
*
* @param financialDocumentNextLineNumber The financialDocumentNextLineNumber to set.
*/
public void setFinancialDocumentNextLineNumber(Integer financialDocumentNextLineNumber) {
this.financialDocumentNextLineNumber = financialDocumentNextLineNumber;
}
public Integer incrementFinancialDocumentLineNumber() {
if (this.financialDocumentNextLineNumber == null) {
this.financialDocumentNextLineNumber = 0;
}
this.financialDocumentNextLineNumber += 1;
return financialDocumentNextLineNumber;
}
public List<AssetGlobalDetail> getAssetSharedDetails() {
return assetSharedDetails;
}
public void setAssetSharedDetails(List<AssetGlobalDetail> assetSharedDetails) {
this.assetSharedDetails = assetSharedDetails;
}
public AssetAcquisitionType getAcquisitionType() {
return acquisitionType;
}
public void setAcquisitionType(AssetAcquisitionType acquisitionType) {
this.acquisitionType = acquisitionType;
}
/**
* Gets the financialDocumentTypeCode attribute.
*
* @return Returns the financialDocumentTypeCode.
*/
public String getFinancialDocumentTypeCode() {
return financialDocumentTypeCode;
}
/**
* Sets the financialDocumentTypeCode attribute value.
*
* @param financialDocumentTypeCode The financialDocumentTypeCode to set.
*/
public void setFinancialDocumentTypeCode(String financialDocumentTypeCode) {
this.financialDocumentTypeCode = financialDocumentTypeCode;
}
/**
* Gets the assetRepresentative attribute.
*
* @return Returns the assetRepresentative.
*/
public Person getAssetRepresentative() {
assetRepresentative = SpringContext.getBean(org.kuali.rice.kim.api.identity.PersonService.class).updatePersonIfNecessary(representativeUniversalIdentifier, assetRepresentative);
return assetRepresentative;
}
/**
* Sets the assetRepresentative attribute value.
*
* @param assetRepresentative The assetRepresentative to set.
*/
public void setAssetRepresentative(Person assetRepresentative) {
this.assetRepresentative = assetRepresentative;
}
/**
* Gets the agency attribute.
*
* @return Returns the agency.
*/
public ContractsAndGrantsAgency getAgency() {
return agency = (ContractsAndGrantsAgency) SpringContext.getBean(KualiModuleService.class).getResponsibleModuleService(ContractsAndGrantsAgency.class).retrieveExternalizableBusinessObjectIfNecessary(this, agency, "agency");
}
/**
* Technically this is obsolete but necessary because MaintenanceDocumentBase.populateXmlDocumentContentsFromMaintainables has
* the following hack:<br>
* ObjectUtils.materializeAllSubObjects(oldBo); // hack to resolve XStream not dealing well with Proxies<br>
* so as long as that is there we need this setter otherwise a NoSuchMethodException occurs.
*
* @deprecated
*/
public void setAgency(ContractsAndGrantsAgency agency) {
this.agency = agency;
}
/**
* Gets the generalLedgerPendingEntries attribute.
*
* @return Returns the generalLedgerPendingEntries.
*/
public List<GeneralLedgerPendingEntry> getGeneralLedgerPendingEntries() {
return generalLedgerPendingEntries;
}
/**
* Sets the generalLedgerPendingEntries attribute value.
*
* @param generalLedgerPendingEntries The generalLedgerPendingEntries to set.
*/
public void setGeneralLedgerPendingEntries(List<GeneralLedgerPendingEntry> generalLedgerPendingEntries) {
this.generalLedgerPendingEntries = generalLedgerPendingEntries;
}
/**
* Gets the separateSourceCapitalAsset attribute.
*
* @return Returns the separateSourceCapitalAsset.
*/
public Asset getSeparateSourceCapitalAsset() {
return separateSourceCapitalAsset;
}
/**
* Sets the separateSourceCapitalAsset attribute value.
*
* @param separateSourceCapitalAsset The separateSourceCapitalAsset to set.
*/
public void setSeparateSourceCapitalAsset(Asset separateSourceCapitalAsset) {
this.separateSourceCapitalAsset = separateSourceCapitalAsset;
}
/**
* Gets the separateSourceCapitalAssetNumber attribute.
*
* @return Returns the separateSourceCapitalAssetNumber.
*/
public Long getSeparateSourceCapitalAssetNumber() {
return separateSourceCapitalAssetNumber;
}
/**
* Sets the separateSourceCapitalAssetNumber attribute value.
*
* @param separateSourceCapitalAssetNumber The separateSourceCapitalAssetNumber to set.
*/
public void setSeparateSourceCapitalAssetNumber(Long separateSourceCapitalAssetNumber) {
this.separateSourceCapitalAssetNumber = separateSourceCapitalAssetNumber;
}
public Integer getSeparateSourcePaymentSequenceNumber() {
return separateSourcePaymentSequenceNumber;
}
public void setSeparateSourcePaymentSequenceNumber(Integer separateSourcePaymentSequenceNumber) {
this.separateSourcePaymentSequenceNumber = separateSourcePaymentSequenceNumber;
}
public FinancialSystemDocumentHeader getDocumentHeader() {
return documentHeader;
}
public void setDocumentHeader(FinancialSystemDocumentHeader documentHeader) {
this.documentHeader = documentHeader;
}
/**
* Small workaround to avoid KualiInquirableImpl.getInquiryUrl having think it needs to construct an inquiry url for this date.
* This only returns a date if this is a separate.
*
* @return
*/
public Date getSeparateDocumentHeaderFinalDate() {
if (this.documentNumber == null || !SpringContext.getBean(AssetGlobalService.class).isAssetSeparate(this)) {
return null;
}
// DocumentRouteHeaderValue routeHeader = SpringContext.getBean(RouteHeaderService.class).getRouteHeader(this.documentNumber);
// if (routeHeader != null && routeHeader.getApprovedDate() != null) {
// return new Date(routeHeader.getApprovedDate().getTime());
// }
//
String userId = GlobalVariables.getUserSession().getPrincipalId();
WorkflowDocument workflowDocument = WorkflowDocumentFactory.loadDocument(userId, getDocumentNumber());
// do not display not approved documents
if (ObjectUtils.isNotNull(workflowDocument.getDateApproved())) {
return getSqlDate(workflowDocument.getDateApproved().toCalendar(Locale.getDefault()));
}
return null;
}
protected Date getSqlDate(Calendar cal) {
Date sqlDueDate = null;
if (ObjectUtils.isNull(cal))
return sqlDueDate;
try {
sqlDueDate = SpringContext.getBean(DateTimeService.class).convertToSqlDate(new Timestamp(cal.getTime().getTime()));
}
catch (ParseException e) {
// TODO: throw an error here, but don't die
}
return sqlDueDate;
}
public boolean isCapitalAssetBuilderOriginIndicator() {
return capitalAssetBuilderOriginIndicator;
}
public void setCapitalAssetBuilderOriginIndicator(boolean capitalAssetBuilderOriginIndicator) {
this.capitalAssetBuilderOriginIndicator = capitalAssetBuilderOriginIndicator;
}
/**
* Gets the calculate equal source amounts button
*
* @return
*/
public String getCalculateEqualSourceAmountsButton() {
return calculateEqualSourceAmountsButton;
}
/**
* Gets the calculate equal source amounts button
*
* @param calculateEqualSourceAmountsButton
*/
public void setCalculateEqualSourceAmountsButton(String calculateEqualSourceAmountsButton) {
this.calculateEqualSourceAmountsButton = calculateEqualSourceAmountsButton;
}
public String getCalculateSeparateSourceRemainingAmountButton() {
return calculateSeparateSourceRemainingAmountButton;
}
public void setCalculateSeparateSourceRemainingAmountButton(String calculateSeparateSourceRemainingAmountButton) {
this.calculateSeparateSourceRemainingAmountButton = calculateSeparateSourceRemainingAmountButton;
}
public KualiDecimal getSeparateSourceRemainingAmount() {
if (separateSourceRemainingAmount == null && getTotalCostAmount() != null) {
return getTotalCostAmount().subtract(getSeparateSourceTotalAmount());
}
return separateSourceRemainingAmount;
}
public void setSeparateSourceRemainingAmount(KualiDecimal separateSourceRemainingAmount) {
this.separateSourceRemainingAmount = separateSourceRemainingAmount;
}
@Override
public List<Collection<PersistableBusinessObject>> buildListOfDeletionAwareLists() {
List<Collection<PersistableBusinessObject>> managedLists = super.buildListOfDeletionAwareLists();
managedLists.add( new ArrayList<PersistableBusinessObject>(getAssetGlobalDetails()));
managedLists.add( new ArrayList<PersistableBusinessObject>(getAssetPaymentDetails()));
return managedLists;
}
/**
* Gets the totalAssetPaymentAmount attribute.
*
* @return Returns the totalAssetPaymentAmount.
*/
public KualiDecimal getTotalAssetPaymentAmount() {
KualiDecimal totalAmount = KualiDecimal.ZERO;
List<AssetPaymentDetail> assetPaymentList = getAssetPaymentDetails();
if (assetPaymentList != null && !assetPaymentList.isEmpty()) {
for (AssetPaymentDetail assetPaymentDetail : assetPaymentList) {
totalAmount = totalAmount.add(assetPaymentDetail.getAmount());
}
}
return totalAmount;
}
/**
* Sets the totalAssetPaymentAmount attribute value.
*
* @param totalAssetPaymentAmount The totalAssetPaymentAmount to set.
*/
public void setTotalAssetPaymentAmount(KualiDecimal totalAssetPaymentAmount) {
this.totalAssetPaymentAmount = totalAssetPaymentAmount;
}
/**
* Gets the separateSourceTotalAmount attribute value.
*
* @return separateSourceTotalAmount
*/
public KualiDecimal getSeparateSourceTotalAmount() {
if (separateSourceTotalAmount == null) {
this.separateSourceTotalAmount = KualiDecimal.ZERO;
for (AssetGlobalDetail detail : this.assetGlobalDetails) {
KualiDecimal separateSourceAmount = detail.getSeparateSourceAmount();
if (separateSourceAmount != null) {
this.separateSourceTotalAmount = this.separateSourceTotalAmount.add(separateSourceAmount);
}
}
}
return separateSourceTotalAmount;
}
/**
* Sets the separateSourceTotalAmount attribute value.
*
* @param separateSourceTotalAmount
*/
public void setSeparateSourceTotalAmount(KualiDecimal separateSourceTotalAmount) {
this.separateSourceTotalAmount = separateSourceTotalAmount;
}
/**
* Gets the minAssetTotalAmount attribute.
*
* @return Returns the minAssetTotalAmount.
*/
public KualiDecimal getMinAssetTotalAmount() {
return minAssetTotalAmount;
}
/**
* Sets the minAssetTotalAmount attribute value.
*
* @param minAssetTotalAmount The minAssetTotalAmount to set.
*/
public void setMinAssetTotalAmount(KualiDecimal minAssetTotalAmount) {
this.minAssetTotalAmount = minAssetTotalAmount;
}
/**
* Gets the maxAssetTotalAmount attribute.
*
* @return Returns the maxAssetTotalAmount.
*/
public KualiDecimal getMaxAssetTotalAmount() {
return maxAssetTotalAmount;
}
/**
* Sets the maxAssetTotalAmount attribute value.
*
* @param maxAssetTotalAmount The maxAssetTotalAmount to set.
*/
public void setMaxAssetTotalAmount(KualiDecimal maxAssetTotalAmount) {
this.maxAssetTotalAmount = maxAssetTotalAmount;
}
/**
* Get the {@link AccountingPeriodService}
* @return {@link AccountingPeriodService}
*/
public static AccountingPeriodService getAccountingPeriodService() {
if ( accountingPeriodService == null ) {
accountingPeriodService = SpringContext.getBean(AccountingPeriodService.class);
}
return accountingPeriodService;
}
/**
* Set postingYear and postingPeriodCode
* @param accountingPeriod
*/
public void setAccountingPeriod(AccountingPeriod accountingPeriod) {
this.accountingPeriod = accountingPeriod;
// if(ObjectUtils.isNotNull(accountingPeriod)) {
// setFinancialDocumentPostingYear(accountingPeriod.getUniversityFiscalYear());
// setFinancialDocumentPostingPeriodCode(accountingPeriod.getUniversityFiscalPeriodCode());
// }
}
/**
* get the accountingPeriod
* @return accountingPeriod
*/
public AccountingPeriod getAccountingPeriod() {
return accountingPeriod;
}
// CSU 6702 END
/**
* Gets the universityFiscalPeriodName attribute.
*
* @return Returns the universityFiscalPeriodName
*/
public String getUniversityFiscalPeriodName() {
if (StringUtils.isNotBlank(universityFiscalPeriodName)) {
this.setFinancialDocumentPostingPeriodCode(StringUtils.left(universityFiscalPeriodName, 2));
this.setFinancialDocumentPostingYear(new Integer(StringUtils.right(universityFiscalPeriodName, 4)));
}
if (StringUtils.isBlank(universityFiscalPeriodName)) {
if (this.financialDocumentPostingPeriodCode != null && this.financialDocumentPostingYear != null) {
universityFiscalPeriodName = this.financialDocumentPostingPeriodCode + this.financialDocumentPostingYear;
}
}
return universityFiscalPeriodName;
}
/**
* Sets the universityFiscalPeriodName attribute.
*
* @param universityFiscalPeriodName The universityFiscalPeriodName to set.
*/
public void setUniversityFiscalPeriodName(String universityFiscalPeriodName) {
if (StringUtils.isBlank(universityFiscalPeriodName)) {
if (this.financialDocumentPostingPeriodCode != null && this.financialDocumentPostingYear != null) {
universityFiscalPeriodName = this.financialDocumentPostingPeriodCode + this.financialDocumentPostingYear;
}
}
String THIRTEEN = "13";
if (StringUtils.isNotBlank(universityFiscalPeriodName) && StringUtils.left(universityFiscalPeriodName, 2).equals(THIRTEEN)) {
String period = StringUtils.left(universityFiscalPeriodName, 2);
Integer year = new Integer(StringUtils.right(universityFiscalPeriodName, 4));
AccountingPeriod accountingPeriod = getAccountingPeriodService().getByPeriod(period, year);
setAccountingPeriod(accountingPeriod);
}
this.universityFiscalPeriodName = universityFiscalPeriodName;
}
//this was the code from contribution 6702.....
//needs to be refactored...seriously..
/**
* Creates a composite of postingPeriodCode and postingyear.
* @return composite or an empty string if either postingPeriodCode or postingYear is null
*/
public String getAccountingPeriodCompositeString() {
if (financialDocumentPostingPeriodCode== null || financialDocumentPostingYear == null ) {
return "";
}
return financialDocumentPostingPeriodCode + financialDocumentPostingYear;
}
/**
* Sets the accountingPeriod if in period 13
* @param accountingPeriodString
* TODO remove hardcoding
*/
public void setAccountingPeriodCompositeString(String accountingPeriodString) {
String THIRTEEN = "13";
if (StringUtils.isNotBlank(accountingPeriodString) && StringUtils.left(accountingPeriodString, 2).equals(THIRTEEN)) {
String period = StringUtils.left(accountingPeriodString, 2);
Integer year = new Integer(StringUtils.right(accountingPeriodString, 4));
AccountingPeriod accountingPeriod = getAccountingPeriodService().getByPeriod(period, year);
setAccountingPeriod(accountingPeriod);
}
}
}