/*
* 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.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
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.module.cam.CamsConstants;
import org.kuali.kfs.module.cam.CamsPropertyConstants;
import org.kuali.kfs.module.cam.document.service.AssetPaymentService;
import org.kuali.kfs.module.cam.document.service.AssetRetirementService;
import org.kuali.kfs.module.cam.document.service.PaymentSummaryService;
import org.kuali.kfs.sys.KFSConstants;
import org.kuali.kfs.sys.businessobject.FinancialSystemDocumentHeader;
import org.kuali.kfs.sys.businessobject.GeneralLedgerPendingEntry;
import org.kuali.kfs.sys.businessobject.UniversityDate;
import org.kuali.kfs.sys.context.SpringContext;
import org.kuali.kfs.sys.service.UniversityDateService;
import org.kuali.rice.core.api.datetime.DateTimeService;
import org.kuali.rice.core.api.util.type.KualiDecimal;
import org.kuali.rice.krad.bo.DocumentHeader;
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.BusinessObjectService;
import org.kuali.rice.krad.service.KualiModuleService;
import org.kuali.rice.krad.service.ModuleService;
import org.kuali.rice.krad.util.ObjectUtils;
import org.kuali.rice.location.api.LocationConstants;
import org.kuali.rice.location.framework.country.CountryEbo;
import org.kuali.rice.location.framework.postalcode.PostalCodeEbo;
import org.kuali.rice.location.framework.state.StateEbo;
/**
* @author Kuali Nervous System Team (kualidev@oncourse.iu.edu)
*/
public class AssetRetirementGlobal extends PersistableBusinessObjectBase implements GlobalBusinessObject {
protected String documentNumber;
protected Long mergedTargetCapitalAssetNumber;
protected String mergedTargetCapitalAssetDescription;
protected String retirementReasonCode;
protected String retirementChartOfAccountsCode;
protected String retirementAccountNumber;
protected String retirementContactName;
protected String retirementInstitutionName;
protected String retirementStreetAddress;
protected String retirementCityName;
protected String retirementStateCode;
protected String retirementZipCode;
protected String retirementCountryCode;
protected String retirementPhoneNumber;
protected KualiDecimal estimatedSellingPrice;
protected KualiDecimal salePrice;
protected String cashReceiptFinancialDocumentNumber;
protected KualiDecimal handlingFeeAmount;
protected KualiDecimal preventiveMaintenanceAmount;
protected String buyerDescription;
protected String paidCaseNumber;
// persistent relationship
protected Date retirementDate;
protected Asset mergedTargetCapitalAsset;
protected AssetRetirementReason retirementReason;
protected FinancialSystemDocumentHeader documentHeader;
protected List<AssetRetirementGlobalDetail> assetRetirementGlobalDetails;
protected Account retirementAccount;
protected Chart retirementChartOfAccounts;
protected DocumentHeader cashReceiptFinancialDocument;
protected StateEbo retirementState;
protected CountryEbo retirementCountry;
protected PostalCodeEbo postalZipCode;
protected List<GeneralLedgerPendingEntry> generalLedgerPendingEntries;
protected Integer postingYear;
protected String postingPeriodCode;
protected AccountingPeriod accountingPeriod;
static protected transient AccountingPeriodService accountingPeriodService;
// Non-persistent
protected KualiDecimal calculatedTotal;
/**
* Default constructor.
*/
public AssetRetirementGlobal() {
this.assetRetirementGlobalDetails = new ArrayList<AssetRetirementGlobalDetail>();
this.generalLedgerPendingEntries = new ArrayList<GeneralLedgerPendingEntry>();
}
@Override
public List<PersistableBusinessObject> generateDeactivationsToPersist() {
return null;
}
/**
* @see org.kuali.rice.krad.bo.GlobalBusinessObject#generateGlobalChangesToPersist()
*/
@Override
public List<PersistableBusinessObject> generateGlobalChangesToPersist() {
AssetRetirementService retirementService = SpringContext.getBean(AssetRetirementService.class);
List<PersistableBusinessObject> persistables = new ArrayList<PersistableBusinessObject>();
if (retirementService.isAssetRetiredByMerged(this) && mergedTargetCapitalAsset != null) {
setMergeObjectsForPersist(persistables, retirementService);
}
for (AssetRetirementGlobalDetail detail : assetRetirementGlobalDetails) {
setAssetForPersist(detail.getAsset(), persistables, retirementService);
}
return persistables;
}
@Override
public List<Collection<PersistableBusinessObject>> buildListOfDeletionAwareLists() {
List<Collection<PersistableBusinessObject>> managedList = super.buildListOfDeletionAwareLists();
managedList.add(new ArrayList<PersistableBusinessObject>(getAssetRetirementGlobalDetails()));
return managedList;
}
/**
* This method set asset fields for update
*
* @param detail
* @param persistables
*/
protected void setAssetForPersist(Asset asset, List<PersistableBusinessObject> persistables, AssetRetirementService retirementService) {
UniversityDateService universityDateService = SpringContext.getBean(UniversityDateService.class);
// load the object by key
asset.setInventoryStatusCode(CamsConstants.InventoryStatusCode.CAPITAL_ASSET_RETIRED);
asset.setRetirementReasonCode(retirementReasonCode);
// set retirement fiscal year and period code into asset
UniversityDate currentUniversityDate = universityDateService.getCurrentUniversityDate();
if (ObjectUtils.isNotNull(currentUniversityDate)) {
asset.setRetirementFiscalYear(universityDateService.getCurrentUniversityDate().getUniversityFiscalYear());
asset.setRetirementPeriodCode(universityDateService.getCurrentUniversityDate().getUniversityFiscalAccountingPeriod());
}
if (retirementService.isAssetRetiredByTheft(this) && StringUtils.isNotBlank(this.getPaidCaseNumber())) {
asset.setCampusPoliceDepartmentCaseNumber(this.getPaidCaseNumber());
}
else if (retirementService.isAssetRetiredBySold(this) || retirementService.isAssetRetiredByAuction(this)) {
asset.setRetirementChartOfAccountsCode(this.getRetirementChartOfAccountsCode());
asset.setRetirementAccountNumber(this.getRetirementAccountNumber());
asset.setCashReceiptFinancialDocumentNumber(this.getCashReceiptFinancialDocumentNumber());
asset.setSalePrice(this.getSalePrice());
asset.setEstimatedSellingPrice(this.getEstimatedSellingPrice());
}
else if (retirementService.isAssetRetiredByMerged(this)) {
asset.setTotalCostAmount(KualiDecimal.ZERO);
asset.setSalvageAmount(KualiDecimal.ZERO);
}
else if (retirementService.isAssetRetiredByExternalTransferOrGift(this)) {
persistables.add(setOffCampusLocationObjectsForPersist(asset));
}
asset.setLastInventoryDate(new Timestamp(SpringContext.getBean(DateTimeService.class).getCurrentSqlDate().getTime()));
persistables.add(asset);
}
/**
* This method set off campus location for persist
*
* @param AssetGlobalDetail and Asset to populate AssetLocation
* @return Returns the AssetLocation.
*/
protected AssetLocation setOffCampusLocationObjectsForPersist(Asset asset) {
AssetLocation offCampusLocation = new AssetLocation();
offCampusLocation.setCapitalAssetNumber(asset.getCapitalAssetNumber());
offCampusLocation.setAssetLocationTypeCode(CamsConstants.AssetLocationTypeCode.RETIREMENT);
offCampusLocation = (AssetLocation) SpringContext.getBean(BusinessObjectService.class).retrieve(offCampusLocation);
if (offCampusLocation == null) {
offCampusLocation = new AssetLocation();
offCampusLocation.setCapitalAssetNumber(asset.getCapitalAssetNumber());
offCampusLocation.setAssetLocationTypeCode(CamsConstants.AssetLocationTypeCode.RETIREMENT);
asset.getAssetLocations().add(offCampusLocation);
}
offCampusLocation.setAssetLocationContactName(this.getRetirementContactName());
offCampusLocation.setAssetLocationInstitutionName(this.getRetirementInstitutionName());
offCampusLocation.setAssetLocationPhoneNumber(this.getRetirementPhoneNumber());
offCampusLocation.setAssetLocationStreetAddress(this.getRetirementStreetAddress());
offCampusLocation.setAssetLocationCityName(this.getRetirementCityName());
offCampusLocation.setAssetLocationStateCode(this.getRetirementStateCode());
offCampusLocation.setAssetLocationCountryCode(this.getRetirementCountryCode());
offCampusLocation.setAssetLocationZipCode(this.getRetirementZipCode());
return offCampusLocation;
}
/**
* This method set target payment and source payment; set target/source asset salvageAmount/totalCostAmount
*
* @param persistables
*/
protected void setMergeObjectsForPersist(List<PersistableBusinessObject> persistables, AssetRetirementService retirementService) {
PaymentSummaryService paymentSummaryService = SpringContext.getBean(PaymentSummaryService.class);
AssetPaymentService assetPaymentService = SpringContext.getBean(AssetPaymentService.class);
Integer maxTargetSequenceNo = assetPaymentService.getMaxSequenceNumber(mergedTargetCapitalAssetNumber);
KualiDecimal salvageAmount = KualiDecimal.ZERO;
KualiDecimal totalCostAmount = KualiDecimal.ZERO;
Asset sourceAsset;
// update for each merge source asset
for (AssetRetirementGlobalDetail detail : getAssetRetirementGlobalDetails()) {
detail.refreshReferenceObject(CamsPropertyConstants.AssetRetirementGlobalDetail.ASSET);
sourceAsset = detail.getAsset();
totalCostAmount = totalCostAmount.add(paymentSummaryService.calculatePaymentTotalCost(sourceAsset));
salvageAmount = salvageAmount.add(sourceAsset.getSalvageAmount());
retirementService.generateOffsetPaymentsForEachSource(sourceAsset, persistables, detail.getDocumentNumber());
maxTargetSequenceNo = retirementService.generateNewPaymentForTarget(mergedTargetCapitalAsset, sourceAsset, persistables, maxTargetSequenceNo, detail.getDocumentNumber());
}
KualiDecimal mergedTargetSalvageAmount = (mergedTargetCapitalAsset.getSalvageAmount() != null ? mergedTargetCapitalAsset.getSalvageAmount() : KualiDecimal.ZERO);
// update merget target asset
mergedTargetCapitalAsset.setTotalCostAmount(totalCostAmount.add(paymentSummaryService.calculatePaymentTotalCost(mergedTargetCapitalAsset)));
mergedTargetCapitalAsset.setSalvageAmount(salvageAmount.add(mergedTargetSalvageAmount));
mergedTargetCapitalAsset.setLastInventoryDate(new Timestamp(SpringContext.getBean(DateTimeService.class).getCurrentSqlDate().getTime()));
mergedTargetCapitalAsset.setCapitalAssetDescription(this.getMergedTargetCapitalAssetDescription());
persistables.add(mergedTargetCapitalAsset);
}
@Override
public List<? extends GlobalBusinessObjectDetail> getAllDetailObjects() {
return getAssetRetirementGlobalDetails();
}
@Override
public boolean isPersistable() {
return true;
}
/**
* Gets the documentNumber attribute.
*
* @return Returns the documentNumber
*/
@Override
public String getDocumentNumber() {
return documentNumber;
}
/**
* Sets the documentNumber attribute.
*
* @param documentNumber The documentNumber to set.
*/
@Override
public void setDocumentNumber(String documentNumber) {
this.documentNumber = documentNumber;
}
/**
* Gets the mergedTargetCapitalAssetNumber attribute.
*
* @return Returns the mergedTargetCapitalAssetNumber
*/
public Long getMergedTargetCapitalAssetNumber() {
return mergedTargetCapitalAssetNumber;
}
/**
* Sets the mergedTargetCapitalAssetNumber attribute.
*
* @param mergedTargetCapitalAssetNumber The mergedTargetCapitalAssetNumber to set.
*/
public void setMergedTargetCapitalAssetNumber(Long mergedTargetCapitalAssetNumber) {
this.mergedTargetCapitalAssetNumber = mergedTargetCapitalAssetNumber;
}
/**
* Gets the retirementReasonCode attribute.
*
* @return Returns the retirementReasonCode
*/
public String getRetirementReasonCode() {
return retirementReasonCode;
}
/**
* Sets the retirementReasonCode attribute.
*
* @param retirementReasonCode The retirementReasonCode to set.
*/
public void setRetirementReasonCode(String retirementReasonCode) {
this.retirementReasonCode = retirementReasonCode;
}
/**
* Gets the retirementDate attribute.
*
* @return Returns the retirementDate
*/
public Date getRetirementDate() {
return retirementDate;
}
/**
* Sets the retirementDate attribute.
*
* @param retirementDate The retirementDate to set.
*/
public void setRetirementDate(Date remeretirementDatentDate) {
this.retirementDate = remeretirementDatentDate;
}
/**
* Gets the mergedTargetCapitalAsset attribute.
*
* @return Returns the mergedTargetCapitalAsset.
*/
public Asset getMergedTargetCapitalAsset() {
return mergedTargetCapitalAsset;
}
/**
* Sets the mergedTargetCapitalAsset attribute value.
*
* @param mergedTargetCapitalAsset The mergedTargetCapitalAsset to set.
* @deprecated
*/
public void setMergedTargetCapitalAsset(Asset mergedTargetCapitalAsset) {
this.mergedTargetCapitalAsset = mergedTargetCapitalAsset;
}
/**
* Gets the retirementReason attribute.
*
* @return Returns the retirementReason.
*/
public AssetRetirementReason getRetirementReason() {
return retirementReason;
}
/**
* Sets the retirementReason attribute value.
*
* @param retirementReason The retirementReason to set.
* @deprecated
*/
public void setRetirementReason(AssetRetirementReason retirementReason) {
this.retirementReason = retirementReason;
}
public FinancialSystemDocumentHeader getDocumentHeader() {
return documentHeader;
}
public void setDocumentHeader(FinancialSystemDocumentHeader documentHeader) {
this.documentHeader = documentHeader;
}
public List<AssetRetirementGlobalDetail> getAssetRetirementGlobalDetails() {
return assetRetirementGlobalDetails;
}
public void setAssetRetirementGlobalDetails(List<AssetRetirementGlobalDetail> assetRetirementGlobalDetails) {
this.assetRetirementGlobalDetails = assetRetirementGlobalDetails;
}
public List<GeneralLedgerPendingEntry> getGeneralLedgerPendingEntries() {
return generalLedgerPendingEntries;
}
public void setGeneralLedgerPendingEntries(List<GeneralLedgerPendingEntry> glPendingEntries) {
this.generalLedgerPendingEntries = glPendingEntries;
}
/**
* @see org.kuali.rice.krad.bo.BusinessObjectBase#toStringMapper()
*/
protected LinkedHashMap toStringMapper_RICE20_REFACTORME() {
LinkedHashMap m = new LinkedHashMap();
m.put("documentNumber", this.documentNumber);
return m;
}
public String getMergedTargetCapitalAssetDescription() {
return mergedTargetCapitalAssetDescription;
}
public void setMergedTargetCapitalAssetDescription(String mergedTargetCapitalAssetDescription) {
this.mergedTargetCapitalAssetDescription = mergedTargetCapitalAssetDescription;
}
/**
* Gets the retirementChartOfAccountsCode attribute.
*
* @return Returns the retirementChartOfAccountsCode
*/
public String getRetirementChartOfAccountsCode() {
return retirementChartOfAccountsCode;
}
/**
* Sets the retirementChartOfAccountsCode attribute.
*
* @param retirementChartOfAccountsCode The retirementChartOfAccountsCode to set.
*/
public void setRetirementChartOfAccountsCode(String retirementChartOfAccountsCode) {
this.retirementChartOfAccountsCode = retirementChartOfAccountsCode;
}
/**
* Gets the retirementAccountNumber attribute.
*
* @return Returns the retirementAccountNumber
*/
public String getRetirementAccountNumber() {
return retirementAccountNumber;
}
/**
* Sets the retirementAccountNumber attribute.
*
* @param retirementAccountNumber The retirementAccountNumber to set.
*/
public void setRetirementAccountNumber(String retirementAccountNumber) {
this.retirementAccountNumber = retirementAccountNumber;
}
/**
* Gets the retirementContactName attribute.
*
* @return Returns the retirementContactName
*/
public String getRetirementContactName() {
return retirementContactName;
}
/**
* Sets the retirementContactName attribute.
*
* @param retirementContactName The retirementContactName to set.
*/
public void setRetirementContactName(String retirementContactName) {
this.retirementContactName = retirementContactName;
}
/**
* Gets the retirementInstitutionName attribute.
*
* @return Returns the retirementInstitutionName
*/
public String getRetirementInstitutionName() {
return retirementInstitutionName;
}
/**
* Sets the retirementInstitutionName attribute.
*
* @param retirementInstitutionName The retirementInstitutionName to set.
*/
public void setRetirementInstitutionName(String retirementInstitutionName) {
this.retirementInstitutionName = retirementInstitutionName;
}
/**
* Gets the retirementStreetAddress attribute.
*
* @return Returns the retirementStreetAddress
*/
public String getRetirementStreetAddress() {
return retirementStreetAddress;
}
/**
* Sets the retirementStreetAddress attribute.
*
* @param retirementStreetAddress The retirementStreetAddress to set.
*/
public void setRetirementStreetAddress(String retirementStreetAddress) {
this.retirementStreetAddress = retirementStreetAddress;
}
/**
* Gets the retirementCityName attribute.
*
* @return Returns the retirementCityName
*/
public String getRetirementCityName() {
return retirementCityName;
}
/**
* Sets the retirementCityName attribute.
*
* @param retirementCityName The retirementCityName to set.
*/
public void setRetirementCityName(String retirementCityName) {
this.retirementCityName = retirementCityName;
}
/**
* Gets the retirementStateCode attribute.
*
* @return Returns the retirementStateCode
*/
public String getRetirementStateCode() {
return retirementStateCode;
}
/**
* Sets the retirementStateCode attribute.
*
* @param retirementStateCode The retirementStateCode to set.
*/
public void setRetirementStateCode(String retirementStateCode) {
this.retirementStateCode = retirementStateCode;
}
/**
* Gets the retirementZipCode attribute.
*
* @return Returns the retirementZipCode
*/
public String getRetirementZipCode() {
return retirementZipCode;
}
/**
* Sets the retirementZipCode attribute.
*
* @param retirementZipCode The retirementZipCode to set.
*/
public void setRetirementZipCode(String retirementZipCode) {
this.retirementZipCode = retirementZipCode;
}
/**
* Gets the postalZipCode attribute.
*
* @return Returns the postalZipCode
*/
public PostalCodeEbo getPostalZipCode() {
if ( StringUtils.isBlank(retirementCountryCode) || StringUtils.isBlank(retirementZipCode) ) {
postalZipCode = null;
} else {
if ( postalZipCode == null || !StringUtils.equals( postalZipCode.getCode(), retirementZipCode) || !StringUtils.equals(postalZipCode.getCountyCode(), KFSConstants.COUNTRY_CODE_UNITED_STATES ) ) {
ModuleService moduleService = SpringContext.getBean(KualiModuleService.class).getResponsibleModuleService(PostalCodeEbo.class);
if ( moduleService != null ) {
Map<String,Object> keys = new HashMap<String, Object>(2);
keys.put(LocationConstants.PrimaryKeyConstants.COUNTRY_CODE, retirementCountryCode);
keys.put(LocationConstants.PrimaryKeyConstants.CODE, retirementZipCode);
postalZipCode = moduleService.getExternalizableBusinessObject(PostalCodeEbo.class, keys);
} else {
throw new RuntimeException( "CONFIGURATION ERROR: No responsible module found for EBO class. Unable to proceed." );
}
}
}
return postalZipCode;
}
/**
* Sets the postalZipCode attribute.
*
* @param postalZipCode The postalZipCode to set.
*/
public void setPostalZipCode(PostalCodeEbo postalZipCode) {
this.postalZipCode = postalZipCode;
}
/**
* Gets the retirementCountryCode attribute.
*
* @return Returns the retirementCountryCode
*/
public String getRetirementCountryCode() {
return retirementCountryCode;
}
/**
* Sets the retirementCountryCode attribute.
*
* @param retirementCountryCode The retirementCountryCode to set.
*/
public void setRetirementCountryCode(String retirementCountryCode) {
this.retirementCountryCode = retirementCountryCode;
}
/**
* Gets the retirementPhoneNumber attribute.
*
* @return Returns the retirementPhoneNumber
*/
public String getRetirementPhoneNumber() {
return retirementPhoneNumber;
}
/**
* Sets the retirementPhoneNumber attribute.
*
* @param retirementPhoneNumber The retirementPhoneNumber to set.
*/
public void setRetirementPhoneNumber(String retirementPhoneNumber) {
this.retirementPhoneNumber = retirementPhoneNumber;
}
/**
* Gets the estimatedSellingPrice attribute.
*
* @return Returns the estimatedSellingPrice
*/
public KualiDecimal getEstimatedSellingPrice() {
return estimatedSellingPrice;
}
/**
* Sets the estimatedSellingPrice attribute.
*
* @param estimatedSellingPrice The estimatedSellingPrice to set.
*/
public void setEstimatedSellingPrice(KualiDecimal estimatedSellingPrice) {
this.estimatedSellingPrice = estimatedSellingPrice;
}
/**
* Gets the salePrice attribute.
*
* @return Returns the salePrice
*/
public KualiDecimal getSalePrice() {
return salePrice;
}
/**
* Sets the salePrice attribute.
*
* @param salePrice The salePrice to set.
*/
public void setSalePrice(KualiDecimal salePrice) {
this.salePrice = salePrice;
}
/**
* Gets the cashReceiptFinancialDocumentNumber attribute.
*
* @return Returns the cashReceiptFinancialDocumentNumber
*/
public String getCashReceiptFinancialDocumentNumber() {
return cashReceiptFinancialDocumentNumber;
}
/**
* Sets the cashReceiptFinancialDocumentNumber attribute.
*
* @param cashReceiptFinancialDocumentNumber The cashReceiptFinancialDocumentNumber to set.
*/
public void setCashReceiptFinancialDocumentNumber(String cashReceiptFinancialDocumentNumber) {
this.cashReceiptFinancialDocumentNumber = cashReceiptFinancialDocumentNumber;
}
/**
* Gets the handlingFeeAmount attribute.
*
* @return Returns the handlingFeeAmount
*/
public KualiDecimal getHandlingFeeAmount() {
return handlingFeeAmount;
}
/**
* Sets the handlingFeeAmount attribute.
*
* @param handlingFeeAmount The handlingFeeAmount to set.
*/
public void setHandlingFeeAmount(KualiDecimal handlingFeeAmount) {
this.handlingFeeAmount = handlingFeeAmount;
}
/**
* Gets the preventiveMaintenanceAmount attribute.
*
* @return Returns the preventiveMaintenanceAmount
*/
public KualiDecimal getPreventiveMaintenanceAmount() {
return preventiveMaintenanceAmount;
}
/**
* Sets the preventiveMaintenanceAmount attribute.
*
* @param preventiveMaintenanceAmount The preventiveMaintenanceAmount to set.
*/
public void setPreventiveMaintenanceAmount(KualiDecimal preventiveMaintenanceAmount) {
this.preventiveMaintenanceAmount = preventiveMaintenanceAmount;
}
/**
* Gets the buyerDescription attribute.
*
* @return Returns the buyerDescription
*/
public String getBuyerDescription() {
return buyerDescription;
}
/**
* Sets the buyerDescription attribute.
*
* @param buyerDescription The buyerDescription to set.
*/
public void setBuyerDescription(String buyerDescription) {
this.buyerDescription = buyerDescription;
}
/**
* Gets the paidCaseNumber attribute.
*
* @return Returns the paidCaseNumber
*/
public String getPaidCaseNumber() {
return paidCaseNumber;
}
/**
* Sets the paidCaseNumber attribute.
*
* @param paidCaseNumber The paidCaseNumber to set.
*/
public void setPaidCaseNumber(String paidCaseNumber) {
this.paidCaseNumber = paidCaseNumber;
}
/**
* Gets the retirementChartOfAccounts attribute.
*
* @return Returns the retirementChartOfAccounts
*/
public Chart getRetirementChartOfAccounts() {
return retirementChartOfAccounts;
}
/**
* Sets the retirementChartOfAccounts attribute.
*
* @param retirementChartOfAccounts The retirementChartOfAccounts to set.
* @deprecated
*/
public void setRetirementChartOfAccounts(Chart retirementChartOfAccounts) {
this.retirementChartOfAccounts = retirementChartOfAccounts;
}
/**
* Gets the retirementAccount attribute.
*
* @return Returns the retirementAccount
*/
public Account getRetirementAccount() {
return retirementAccount;
}
/**
* Sets the retirementAccount attribute.
*
* @param retirementAccount The retirementAccount to set.
* @deprecated
*/
public void setRetirementAccount(Account retirementAccount) {
this.retirementAccount = retirementAccount;
}
/**
* Gets the cashReceiptFinancialDocument attribute.
*
* @return Returns the cashReceiptFinancialDocument.
*/
public DocumentHeader getCashReceiptFinancialDocument() {
return cashReceiptFinancialDocument;
}
/**
* Sets the cashReceiptFinancialDocument attribute value.
*
* @param cashReceiptFinancialDocument The cashReceiptFinancialDocument to set.
* @deprecated
*/
public void setCashReceiptFinancialDocument(DocumentHeader cashReceiptFinancialDocument) {
this.cashReceiptFinancialDocument = cashReceiptFinancialDocument;
}
/**
* Gets the retirementCountry attribute.
*
* @return Returns the retirementCountry.
*/
public CountryEbo getRetirementCountry() {
if ( StringUtils.isBlank(retirementCountryCode) ) {
retirementCountry = null;
} else {
if ( retirementCountry == null || !StringUtils.equals( retirementCountry.getCode(), retirementCountryCode) ) {
ModuleService moduleService = SpringContext.getBean(KualiModuleService.class).getResponsibleModuleService(CountryEbo.class);
if ( moduleService != null ) {
Map<String,Object> keys = new HashMap<String, Object>(1);
keys.put(LocationConstants.PrimaryKeyConstants.CODE, retirementCountryCode);
retirementCountry = moduleService.getExternalizableBusinessObject(CountryEbo.class, keys);
} else {
throw new RuntimeException( "CONFIGURATION ERROR: No responsible module found for EBO class. Unable to proceed." );
}
}
}
return retirementCountry;
}
/**
* Sets the retirementCountry attribute value.
*
* @param retirementCountry The retirementCountry to set.
* @deprecated
*/
public void setRetirementCountry(CountryEbo retirementCountry) {
this.retirementCountry = retirementCountry;
}
/**
* Gets the retirementState attribute.
*
* @return Returns the retirementState.
*/
public StateEbo getRetirementState() {
if ( StringUtils.isBlank(retirementStateCode) || StringUtils.isBlank(KFSConstants.COUNTRY_CODE_UNITED_STATES ) ) {
retirementState = null;
} else {
if ( retirementState == null || !StringUtils.equals( retirementState.getCode(), retirementStateCode) || !StringUtils.equals(retirementState.getCountryCode(), KFSConstants.COUNTRY_CODE_UNITED_STATES ) ) {
ModuleService moduleService = SpringContext.getBean(KualiModuleService.class).getResponsibleModuleService(StateEbo.class);
if ( moduleService != null ) {
Map<String,Object> keys = new HashMap<String, Object>(2);
keys.put(LocationConstants.PrimaryKeyConstants.COUNTRY_CODE, KFSConstants.COUNTRY_CODE_UNITED_STATES);/*RICE20_REFACTORME*/
keys.put(LocationConstants.PrimaryKeyConstants.CODE, retirementStateCode);
retirementState = moduleService.getExternalizableBusinessObject(StateEbo.class, keys);
} else {
throw new RuntimeException( "CONFIGURATION ERROR: No responsible module found for EBO class. Unable to proceed." );
}
}
}
return retirementState;
}
/**
* Sets the retirementState attribute value.
*
* @param retirementState The retirementState to set.
* @deprecated
*/
public void setRetirementState(StateEbo retirementState) {
this.retirementState = retirementState;
}
/**
* Gets the calculatedTotal attribute.
*
* @return Returns the calculatedTotal.
*/
public KualiDecimal getCalculatedTotal() {
this.calculatedTotal = KualiDecimal.ZERO;
if (this.handlingFeeAmount != null) {
this.calculatedTotal = calculatedTotal.add(this.handlingFeeAmount);
}
if (this.preventiveMaintenanceAmount != null) {
this.calculatedTotal = calculatedTotal.add(this.preventiveMaintenanceAmount);
}
if (this.salePrice != null) {
this.calculatedTotal = calculatedTotal.add(this.salePrice);
}
return calculatedTotal;
}
/**
* Get Posting Year
* @return postingYear
*/
public Integer getPostingYear() {
return postingYear;
}
/**
* Set Posting year
* @param postingYear
*/
public void setPostingYear(Integer postingYear) {
this.postingYear = postingYear;
}
/**
* Get the {@link AccountingPeriodService}
* @return {@link AccountingPeriodService}
*/
public static AccountingPeriodService getAccountingPeriodService() {
if ( accountingPeriodService == null ) {
accountingPeriodService = SpringContext.getBean(AccountingPeriodService.class);
}
return accountingPeriodService;
}
/**
* Creates a composite of postingPeriodCode and postingyear.
* @return composite or an empty string if either postingPeriodCode or postingYear is null
*/
public String getAccountingPeriodCompositeString() {
if (postingPeriodCode== null || postingYear == null ) {
return "";
}
return postingPeriodCode + postingYear;
}
/**
* 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);
}
}
/**
* Get the posting period code
* @return postingPeriodCode
*/
public String getPostingPeriodCode() {
return postingPeriodCode;
}
/**
* Set the posting period code
* @param postingPeriodCode
*/
public void setPostingPeriodCode(String postingPeriodCode) {
this.postingPeriodCode = postingPeriodCode;
}
/**
* Set postingYear and postingPeriodCode
* @param accountingPeriod
*/
public void setAccountingPeriod(AccountingPeriod accountingPeriod) {
this.accountingPeriod = accountingPeriod;
if(ObjectUtils.isNotNull(accountingPeriod)) {
setPostingYear(accountingPeriod.getUniversityFiscalYear());
setPostingPeriodCode(accountingPeriod.getUniversityFiscalPeriodCode());
}
}
/**
* get the accountingPeriod
* @return accountingPeriod
*/
public AccountingPeriod getAccountingPeriod() {
return accountingPeriod;
}
}