/*
* 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.document.service.impl;
import java.util.ArrayList;
import java.util.List;
import org.apache.commons.lang.StringUtils;
import org.apache.log4j.Logger;
import org.kuali.kfs.coa.businessobject.Account;
import org.kuali.kfs.coa.businessobject.ObjectCode;
import org.kuali.kfs.coa.businessobject.OffsetDefinition;
import org.kuali.kfs.coa.service.ObjectCodeService;
import org.kuali.kfs.coa.service.OffsetDefinitionService;
import org.kuali.kfs.module.cam.CamsConstants;
import org.kuali.kfs.module.cam.CamsPropertyConstants;
import org.kuali.kfs.module.cam.businessobject.Asset;
import org.kuali.kfs.module.cam.businessobject.AssetGlpeSourceDetail;
import org.kuali.kfs.module.cam.businessobject.AssetLocation;
import org.kuali.kfs.module.cam.businessobject.AssetObjectCode;
import org.kuali.kfs.module.cam.businessobject.AssetOrganization;
import org.kuali.kfs.module.cam.businessobject.AssetPayment;
import org.kuali.kfs.module.cam.document.AssetTransferDocument;
import org.kuali.kfs.module.cam.document.service.AssetLocationService;
import org.kuali.kfs.module.cam.document.service.AssetObjectCodeService;
import org.kuali.kfs.module.cam.document.service.AssetPaymentService;
import org.kuali.kfs.module.cam.document.service.AssetService;
import org.kuali.kfs.module.cam.document.service.AssetTransferService;
import org.kuali.kfs.module.cam.util.ObjectValueUtils;
import org.kuali.kfs.sys.context.SpringContext;
import org.kuali.kfs.sys.service.UniversityDateService;
import org.kuali.kfs.sys.util.KfsDateUtils;
import org.kuali.rice.core.api.datetime.DateTimeService;
import org.kuali.rice.krad.bo.PersistableBusinessObject;
import org.kuali.rice.krad.service.BusinessObjectService;
import org.kuali.rice.krad.util.ObjectUtils;
public class AssetTransferServiceImpl implements AssetTransferService {
protected static enum AmountCategory {
CAPITALIZATION {
@Override
public void setParams(AssetGlpeSourceDetail postable, AssetPayment assetPayment, AssetObjectCode assetObjectCode, boolean isSource, OffsetDefinition offsetDefinition) {
postable.setFinancialDocumentLineDescription("" + (isSource ? "Reverse" : "Transfer") + " asset cost");
postable.setAmount(assetPayment.getAccountChargeAmount());
postable.setFinancialObjectCode(assetObjectCode.getCapitalizationFinancialObjectCode());
postable.setObjectCode(assetObjectCode.getCapitalizationFinancialObject());
postable.setCapitalization(true);
};
},
ACCUM_DEPRECIATION {
@Override
public void setParams(AssetGlpeSourceDetail postable, AssetPayment assetPayment, AssetObjectCode assetObjectCode, boolean isSource, OffsetDefinition offsetDefinition) {
postable.setFinancialDocumentLineDescription("" + (isSource ? "Reverse" : "Transfer") + " accumulated depreciation");
postable.setAmount(assetPayment.getAccumulatedPrimaryDepreciationAmount());
postable.setFinancialObjectCode(assetObjectCode.getAccumulatedDepreciationFinancialObjectCode());
postable.setObjectCode(assetObjectCode.getAccumulatedDepreciationFinancialObject());
postable.setAccumulatedDepreciation(true);
};
},
OFFSET_AMOUNT {
@Override
public void setParams(AssetGlpeSourceDetail postable, AssetPayment assetPayment, AssetObjectCode assetObjectCode, boolean isSource, OffsetDefinition offsetDefinition) {
postable.setFinancialDocumentLineDescription("" + (isSource ? "Reverse" : "Transfer") + " offset amount");
postable.setAmount(assetPayment.getAccountChargeAmount().subtract(assetPayment.getAccumulatedPrimaryDepreciationAmount()));
postable.setFinancialObjectCode(offsetDefinition.getFinancialObjectCode());
postable.setObjectCode(offsetDefinition.getFinancialObject());
postable.setCapitalizationOffset(true);
};
};
abstract void setParams(AssetGlpeSourceDetail postable, AssetPayment assetPayment, AssetObjectCode assetObjectCode, boolean isSource, OffsetDefinition offsetDefinition);
}
private static final Logger LOG = Logger.getLogger(AssetTransferServiceImpl.class);
private AssetService assetService;
private UniversityDateService universityDateService;
private BusinessObjectService businessObjectService;
private AssetPaymentService assetPaymentService;
private AssetObjectCodeService assetObjectCodeService;
private DateTimeService dateTimeService;
private AssetLocationService assetLocationService;
/**
* Creates an instance of AssetGlpeSourceDetail depending on the source flag
*
* @param universityDateService University Date Service
* @param plantAccount Plant account for the organization
* @param assetPayment Payment record for which postable is created
* @param isSource Indicates if postable is for source organization
* @return GL Postable source detail
*/
protected AssetGlpeSourceDetail createAssetGlpePostable(AssetTransferDocument document, Account plantAccount, AssetPayment assetPayment, boolean isSource, AmountCategory amountCategory) {
if (LOG.isDebugEnabled()) {
LOG.debug("Start - createAssetGlpePostable (" + document.getDocumentNumber() + "-" + plantAccount.getAccountNumber() + ")");
}
AssetGlpeSourceDetail postable = new AssetGlpeSourceDetail();
postable.setSource(isSource);
postable.setAccount(plantAccount);
postable.setAccountNumber(plantAccount.getAccountNumber());
postable.setBalanceTypeCode(CamsConstants.Postable.GL_BALANCE_TYPE_CODE_AC);
String organizationOwnerChartOfAccountsCode = null;
if (isSource) {
organizationOwnerChartOfAccountsCode = document.getAsset().getOrganizationOwnerChartOfAccountsCode();
postable.setSubAccountNumber(assetPayment.getSubAccountNumber());
}
else {
organizationOwnerChartOfAccountsCode = document.getOrganizationOwnerChartOfAccountsCode();
postable.setSubAccountNumber(null);
}
ObjectCodeService objectCodeService = SpringContext.getBean(ObjectCodeService.class);
ObjectCode objectCode = objectCodeService.getByPrimaryIdForCurrentYear(assetPayment.getChartOfAccountsCode(), assetPayment.getFinancialObjectCode());
String plantChartOfAccountsCode = plantAccount.getChartOfAccountsCode();
postable.setChartOfAccountsCode(plantChartOfAccountsCode);
postable.setDocumentNumber(document.getDocumentNumber());
postable.setFinancialSubObjectCode(assetPayment.getFinancialSubObjectCode());
postable.setPostingYear(getUniversityDateService().getCurrentUniversityDate().getUniversityFiscalYear());
postable.setProjectCode(assetPayment.getProjectCode());
postable.setOrganizationReferenceId(assetPayment.getOrganizationReferenceId());
AssetObjectCode assetObjectCode = getAssetObjectCodeService().findAssetObjectCode(organizationOwnerChartOfAccountsCode, objectCode.getFinancialObjectSubTypeCode());
OffsetDefinition offsetDefinition = SpringContext.getBean(OffsetDefinitionService.class).getByPrimaryId(getUniversityDateService().getCurrentFiscalYear(), organizationOwnerChartOfAccountsCode, CamsConstants.AssetTransfer.DOCUMENT_TYPE_CODE, CamsConstants.Postable.GL_BALANCE_TYPE_CODE_AC);
amountCategory.setParams(postable, assetPayment, assetObjectCode, isSource, offsetDefinition);
if (LOG.isDebugEnabled()) {
LOG.debug("End - createAssetGlpePostable(" + document.getDocumentNumber() + "-" + plantAccount.getAccountNumber() + "-" + ")");
}
return postable;
}
@Override
public void createGLPostables(AssetTransferDocument document) {
document.clearGlPostables();
// Create GL entries only for capital assets
ObjectCodeService objectCodeService = SpringContext.getBean(ObjectCodeService.class);
Asset asset = document.getAsset();
if (getAssetService().isCapitalAsset(asset) && !asset.getAssetPayments().isEmpty()) {
asset.refreshReferenceObject(CamsPropertyConstants.Asset.ORGANIZATION_OWNER_ACCOUNT);
document.refreshReferenceObject(CamsPropertyConstants.AssetTransferDocument.ORGANIZATION_OWNER_ACCOUNT);
boolean movableAsset = getAssetService().isAssetMovableCheckByPayment(asset);
if (isGLPostable(document, asset, movableAsset)) {
asset.refreshReferenceObject(CamsPropertyConstants.Asset.ASSET_PAYMENTS);
List<AssetPayment> assetPayments = asset.getAssetPayments();
createSourceGLPostables(document, assetPayments, movableAsset);
createTargetGLPostables(document, assetPayments, movableAsset);
}
}
}
/**
* Creates new payment records for new organization account
*
* @param document Current document
* @param persistableObjects Saved objects list
* @param originalPayments Original payments for the asset
* @param maxSequence Payment sequence number
* @return Incremented sequence number
*/
protected Integer createNewPayments(AssetTransferDocument document, List<PersistableBusinessObject> persistableObjects, List<AssetPayment> originalPayments, Integer maxSequence) {
Integer maxSequenceNo = maxSequence;
for (AssetPayment assetPayment : originalPayments) {
if (!CamsConstants.AssetPayment.TRANSFER_PAYMENT_CODE_Y.equals(assetPayment.getTransferPaymentCode())) {
// copy and create new payment
AssetPayment newPayment;
try {
if (maxSequenceNo == null) {
maxSequenceNo = SpringContext.getBean(AssetPaymentService.class).getMaxSequenceNumber(assetPayment.getCapitalAssetNumber());
}
// create new payment info
// newPayment = (AssetPayment) ObjectUtils.deepCopy(assetPayment);
newPayment = new AssetPayment();
ObjectValueUtils.copySimpleProperties(assetPayment, newPayment);
newPayment.setPaymentSequenceNumber(++maxSequenceNo);
newPayment.setAccountNumber(document.getOrganizationOwnerAccountNumber());
newPayment.setChartOfAccountsCode(document.getOrganizationOwnerChartOfAccountsCode());
newPayment.setSubAccountNumber(null);
newPayment.setDocumentNumber(document.getDocumentNumber());
newPayment.setFinancialDocumentTypeCode(CamsConstants.AssetTransfer.DOCUMENT_TYPE_CODE);
newPayment.setFinancialDocumentPostingDate(KfsDateUtils.convertToSqlDate(dateTimeService.getCurrentDate()));
newPayment.setFinancialDocumentPostingYear(getUniversityDateService().getCurrentUniversityDate().getUniversityFiscalYear());
newPayment.setFinancialDocumentPostingPeriodCode(getUniversityDateService().getCurrentUniversityDate().getUniversityFiscalAccountingPeriod());
getAssetPaymentService().adjustPaymentAmounts(newPayment, false, true);
newPayment.setTransferPaymentCode(CamsConstants.AssetPayment.TRANSFER_PAYMENT_CODE_N);
// add new payment
persistableObjects.add(newPayment);
}
catch (Exception e) {
throw new RuntimeException(e);
}
}
}
return maxSequenceNo;
}
/**
* Creates offset payment copying the details from original payments and reversing the amounts
*
* @param document Current Document
* @param persistableObjects List of update objects
* @param originalPayments Original list of payments
* @return Incremented sequence number
*/
protected Integer createOffsetPayments(AssetTransferDocument document, List<PersistableBusinessObject> persistableObjects, List<AssetPayment> originalPayments) {
Integer maxSequenceNo = null;
for (AssetPayment assetPayment : originalPayments) {
if (!CamsConstants.AssetPayment.TRANSFER_PAYMENT_CODE_Y.equals(assetPayment.getTransferPaymentCode())) {
// copy and create an offset payment
try {
if (maxSequenceNo == null) {
maxSequenceNo = SpringContext.getBean(AssetPaymentService.class).getMaxSequenceNumber(assetPayment.getCapitalAssetNumber());
}
// AssetPayment offsetPayment = (AssetPayment) ObjectUtils.deepCopy(assetPayment);
AssetPayment offsetPayment = new AssetPayment();
ObjectValueUtils.copySimpleProperties(assetPayment, offsetPayment);
offsetPayment.setDocumentNumber(document.getDocumentNumber());
offsetPayment.setFinancialDocumentTypeCode(CamsConstants.AssetTransfer.DOCUMENT_TYPE_CODE);
offsetPayment.setFinancialDocumentPostingDate(KfsDateUtils.convertToSqlDate(dateTimeService.getCurrentDate()));
offsetPayment.setFinancialDocumentPostingYear(getUniversityDateService().getCurrentUniversityDate().getUniversityFiscalYear());
offsetPayment.setFinancialDocumentPostingPeriodCode(getUniversityDateService().getCurrentUniversityDate().getUniversityFiscalAccountingPeriod());
getAssetPaymentService().adjustPaymentAmounts(offsetPayment, true, true);
offsetPayment.setTransferPaymentCode(CamsConstants.AssetPayment.TRANSFER_PAYMENT_CODE_Y);
offsetPayment.setPaymentSequenceNumber(++maxSequenceNo);
persistableObjects.add(offsetPayment);
}
catch (Exception e) {
throw new RuntimeException(e);
}
}
}
return maxSequenceNo;
}
/**
* Creates GL Postables for the source organization
*
* @param universityDateService University Date Service to get the current fiscal year and period
* @param assetPayments Payments for which GL entries needs to be created
*/
protected void createSourceGLPostables(AssetTransferDocument document, List<AssetPayment> assetPayments, boolean movableAsset) {
Account srcPlantAcct = null;
Account paymentSrcPlantAcct = null;
OffsetDefinition offsetDefinition = SpringContext.getBean(OffsetDefinitionService.class).getByPrimaryId(getUniversityDateService().getCurrentFiscalYear(), document.getAsset().getOrganizationOwnerChartOfAccountsCode(), CamsConstants.AssetTransfer.DOCUMENT_TYPE_CODE, CamsConstants.Postable.GL_BALANCE_TYPE_CODE_AC);
if (movableAsset) {
srcPlantAcct = document.getAsset().getOrganizationOwnerAccount().getOrganization().getOrganizationPlantAccount();
}
else {
srcPlantAcct = document.getAsset().getOrganizationOwnerAccount().getOrganization().getCampusPlantAccount();
}
ObjectCodeService objectCodeService = SpringContext.getBean(ObjectCodeService.class);
for (AssetPayment assetPayment : assetPayments) {
if (getAssetPaymentService().isPaymentEligibleForGLPosting(assetPayment)) {
ObjectCode objectCode = objectCodeService.getByPrimaryIdForCurrentYear(assetPayment.getChartOfAccountsCode(), assetPayment.getFinancialObjectCode());
if (ObjectUtils.isNotNull(objectCode)) {
if (movableAsset) {
paymentSrcPlantAcct = assetPayment.getAccount().getOrganization().getOrganizationPlantAccount();
} else {
paymentSrcPlantAcct = assetPayment.getAccount().getOrganization().getCampusPlantAccount();
}
if (getAssetPaymentService().isPaymentEligibleForCapitalizationGLPosting(assetPayment)) {
document.getSourceAssetGlpeSourceDetails().add(createAssetGlpePostable(document, paymentSrcPlantAcct, assetPayment, true, AmountCategory.CAPITALIZATION));
}
if (getAssetPaymentService().isPaymentEligibleForAccumDeprGLPosting(assetPayment)) {
document.getSourceAssetGlpeSourceDetails().add(createAssetGlpePostable(document, paymentSrcPlantAcct, assetPayment, true, AmountCategory.ACCUM_DEPRECIATION));
}
if (getAssetPaymentService().isPaymentEligibleForOffsetGLPosting(assetPayment)) {
document.getSourceAssetGlpeSourceDetails().add(createAssetGlpePostable(document, paymentSrcPlantAcct, assetPayment, true, AmountCategory.OFFSET_AMOUNT));
}
}
}
}
}
/**
* Creates target GL Postable for the receiving organization
*
* @param universityDateService University Date Service to get the current fiscal year and period
* @param assetPayments Payments for which GL entries needs to be created
*/
protected void createTargetGLPostables(AssetTransferDocument document, List<AssetPayment> assetPayments, boolean movableAsset) {
Account targetPlantAcct = null;
if (movableAsset) {
targetPlantAcct = document.getOrganizationOwnerAccount().getOrganization().getOrganizationPlantAccount();
}
else {
targetPlantAcct = document.getOrganizationOwnerAccount().getOrganization().getCampusPlantAccount();
}
for (AssetPayment assetPayment : assetPayments) {
if (getAssetPaymentService().isPaymentEligibleForGLPosting(assetPayment)) {
if (getAssetPaymentService().isPaymentEligibleForCapitalizationGLPosting(assetPayment)) {
document.getTargetAssetGlpeSourceDetails().add(createAssetGlpePostable(document, targetPlantAcct, assetPayment, false, AmountCategory.CAPITALIZATION));
}
if (getAssetPaymentService().isPaymentEligibleForAccumDeprGLPosting(assetPayment)) {
document.getTargetAssetGlpeSourceDetails().add(createAssetGlpePostable(document, targetPlantAcct, assetPayment, false, AmountCategory.ACCUM_DEPRECIATION));
}
if (getAssetPaymentService().isPaymentEligibleForOffsetGLPosting(assetPayment)) {
document.getTargetAssetGlpeSourceDetails().add(createAssetGlpePostable(document, targetPlantAcct, assetPayment, false, AmountCategory.OFFSET_AMOUNT));
}
}
}
}
public AssetPaymentService getAssetPaymentService() {
return assetPaymentService;
}
public AssetService getAssetService() {
return assetService;
}
public BusinessObjectService getBusinessObjectService() {
return businessObjectService;
}
public UniversityDateService getUniversityDateService() {
return universityDateService;
}
/**
* Checks if it is ready for GL Posting by validating the accounts and plant account numbers
*
* @return true if all accounts are valid
*/
protected boolean isGLPostable(AssetTransferDocument document, Asset asset, boolean movableAsset) {
boolean isGLPostable = true;
Account srcPlantAcct = null;
if (ObjectUtils.isNotNull(asset.getOrganizationOwnerAccount())) {
if (movableAsset) {
srcPlantAcct = asset.getOrganizationOwnerAccount().getOrganization().getOrganizationPlantAccount();
}
else {
srcPlantAcct = asset.getOrganizationOwnerAccount().getOrganization().getCampusPlantAccount();
}
}
if (ObjectUtils.isNull(srcPlantAcct)) {
isGLPostable &= false;
}
Account targetPlantAcct = null;
if (ObjectUtils.isNotNull(document.getOrganizationOwnerAccount())) {
if (movableAsset) {
targetPlantAcct = document.getOrganizationOwnerAccount().getOrganization().getOrganizationPlantAccount();
}
else {
targetPlantAcct = document.getOrganizationOwnerAccount().getOrganization().getCampusPlantAccount();
}
}
if (ObjectUtils.isNull(targetPlantAcct)) {
isGLPostable &= false;
}
return isGLPostable;
}
/**
* @see org.kuali.kfs.module.cam.document.service.AssetTransferService#saveApprovedChanges(org.kuali.kfs.module.cam.document.AssetTransferDocument)
*/
@Override
public void saveApprovedChanges(AssetTransferDocument document) {
// save new asset location details to asset table, inventory date
List<PersistableBusinessObject> persistableObjects = new ArrayList<PersistableBusinessObject>();
Asset saveAsset = new Asset();
saveAsset.setCapitalAssetNumber(document.getCapitalAssetNumber());
saveAsset = (Asset) getBusinessObjectService().retrieve(saveAsset);
saveAssetOwnerData(document, saveAsset);
saveLocationChanges(document, saveAsset);
saveOrganizationChanges(document, saveAsset);
if (getAssetService().isCapitalAsset(saveAsset)) {
// for capital assets, create new asset payment records and offset payment records
if (ObjectUtils.isNull(saveAsset.getAssetPayments())) {
saveAsset.refreshReferenceObject(CamsPropertyConstants.Asset.ASSET_PAYMENTS);
}
List<AssetPayment> originalPayments = saveAsset.getAssetPayments();
Integer maxSequence = createOffsetPayments(document, persistableObjects, originalPayments);
maxSequence = createNewPayments(document, persistableObjects, originalPayments, maxSequence);
updateOriginalPayments(persistableObjects, originalPayments);
}
saveAsset.setTransferOfFundsFinancialDocumentNumber(document.getTransferOfFundsFinancialDocumentNumber());
// save asset
persistableObjects.add(saveAsset);
getBusinessObjectService().save(persistableObjects);
}
/**
* Updates organization data for the asset
*
* @param document Current document
* @param saveAsset Asset
*/
protected void saveAssetOwnerData(AssetTransferDocument document, Asset saveAsset) {
saveAsset.setOrganizationOwnerAccountNumber(document.getOrganizationOwnerAccountNumber());
saveAsset.setOrganizationOwnerChartOfAccountsCode(document.getOrganizationOwnerChartOfAccountsCode());
}
/**
* Updates location details to the asset
*
* @param document Current document
* @param saveAsset Asset
*/
protected void saveLocationChanges(AssetTransferDocument document, Asset saveAsset) {
// change inventory date
saveAsset.setLastInventoryDate(SpringContext.getBean(DateTimeService.class).getCurrentTimestamp());
// save asset location details
saveAsset.setCampusCode(document.getCampusCode());
saveAsset.setBuildingCode(document.getBuildingCode());
saveAsset.setBuildingRoomNumber(document.getBuildingRoomNumber());
saveAsset.setBuildingSubRoomNumber(document.getBuildingSubRoomNumber());
AssetLocation offCampusLocation = null;
if (StringUtils.isBlank(saveAsset.getBuildingCode()) && StringUtils.isBlank(saveAsset.getBuildingRoomNumber()) && StringUtils.isBlank(saveAsset.getBuildingSubRoomNumber())) {
// save off campus location details
List<AssetLocation> orginalLocations = saveAsset.getAssetLocations();
for (AssetLocation assetLocation : orginalLocations) {
if (CamsConstants.AssetLocationTypeCode.OFF_CAMPUS.equals(assetLocation.getAssetLocationTypeCode())) {
offCampusLocation = assetLocation;
break;
}
}
if (ObjectUtils.isNull(offCampusLocation)) {
offCampusLocation = new AssetLocation();
offCampusLocation.setCapitalAssetNumber(saveAsset.getCapitalAssetNumber());
offCampusLocation.setAssetLocationTypeCode(CamsConstants.AssetLocationTypeCode.OFF_CAMPUS);
saveAsset.getAssetLocations().add(offCampusLocation);
}
offCampusLocation.setAssetLocationContactName(document.getOffCampusName());
offCampusLocation.setAssetLocationState(document.getOffCampusState());
offCampusLocation.setPostalZipCode(document.getPostalZipCode());
offCampusLocation.setAssetLocationCountryCode(document.getOffCampusCountryCode());
offCampusLocation.setAssetLocationStreetAddress(document.getOffCampusAddress());
offCampusLocation.setAssetLocationCityName(document.getOffCampusCityName());
offCampusLocation.setAssetLocationStateCode(document.getOffCampusStateCode());
offCampusLocation.setAssetLocationZipCode(document.getOffCampusZipCode());
if (getAssetLocationService().isOffCampusLocationEmpty(offCampusLocation)) {
// remove off Campus Location if it's an empty record. When asset transfer from off to on campus, the off campus location will be removed.
saveAsset.getAssetLocations().remove(offCampusLocation);
// getBusinessObjectService().delete(offCampusLocation);
}
} else {
for (AssetLocation assetLocation : saveAsset.getAssetLocations()) {
getBusinessObjectService().delete(assetLocation);
}
saveAsset.getAssetLocations().clear();
saveAsset.setOffCampusLocation(null);
}
}
/**
* Updates organization changes
*
* @param document Current document
* @param saveAsset Asset
*/
protected void saveOrganizationChanges(AssetTransferDocument document, Asset saveAsset) {
if (ObjectUtils.isNull(saveAsset.getAssetOrganization())) {
AssetOrganization assetOrganization = new AssetOrganization();
assetOrganization.setCapitalAssetNumber(saveAsset.getCapitalAssetNumber());
saveAsset.setAssetOrganization(assetOrganization);
}
saveAsset.setOrganizationInventoryName(document.getOrganizationInventoryName());
saveAsset.setRepresentativeUniversalIdentifier(document.getRepresentativeUniversalIdentifier());
saveAsset.getAssetOrganization().setOrganizationTagNumber(document.getOrganizationTagNumber());
saveAsset.getAssetOrganization().setOrganizationText(document.getOrganizationText());
}
public void setAssetPaymentService(AssetPaymentService assetPaymentService) {
this.assetPaymentService = assetPaymentService;
}
public void setAssetService(AssetService assetService) {
this.assetService = assetService;
}
public void setBusinessObjectService(BusinessObjectService businessObjectService) {
this.businessObjectService = businessObjectService;
}
public void setUniversityDateService(UniversityDateService universityDateService) {
this.universityDateService = universityDateService;
}
/**
* Updates original payment records
*
* @param persistableObjects List of saveable objects
* @param originalPayments Original payments list
*/
protected void updateOriginalPayments(List<PersistableBusinessObject> persistableObjects, List<AssetPayment> originalPayments) {
for (AssetPayment assetPayment : originalPayments) {
if (!CamsConstants.AssetPayment.TRANSFER_PAYMENT_CODE_Y.equals(assetPayment.getTransferPaymentCode())) {
// change payment code
assetPayment.setTransferPaymentCode(CamsConstants.AssetPayment.TRANSFER_PAYMENT_CODE_Y);
persistableObjects.add(assetPayment);
}
}
}
public AssetObjectCodeService getAssetObjectCodeService() {
return assetObjectCodeService;
}
public void setAssetObjectCodeService(AssetObjectCodeService assetObjectCodeService) {
this.assetObjectCodeService = assetObjectCodeService;
}
/**
* Gets the dateTimeService attribute.
*
* @return Returns the dateTimeService.
*/
public DateTimeService getDateTimeService() {
return dateTimeService;
}
/**
* Sets the dateTimeService attribute value.
*
* @param dateTimeService The dateTimeService to set.
*/
public void setDateTimeService(DateTimeService dateTimeService) {
this.dateTimeService = dateTimeService;
}
/**
* Gets the assetLocationService attribute.
*
* @return Returns the assetLocationService
*/
public AssetLocationService getAssetLocationService() {
return assetLocationService;
}
/**
* Sets the assetLocationService attribute.
*
* @param assetLocationService The assetLocationService to set
*/
public void setAssetLocationService(AssetLocationService assetLocationService) {
this.assetLocationService = assetLocationService;
}
}