/* * 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.web.struts; import java.util.Map; import javax.servlet.http.HttpServletRequest; import org.apache.commons.lang.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.kuali.kfs.module.cam.CamsPropertyConstants; import org.kuali.kfs.module.cam.businessobject.AssetPaymentAllocationType; import org.kuali.kfs.module.cam.businessobject.AssetPaymentAssetDetail; import org.kuali.kfs.module.cam.businessobject.AssetPaymentDetail; import org.kuali.kfs.module.cam.document.AssetPaymentDocument; import org.kuali.kfs.sys.KFSConstants; import org.kuali.kfs.sys.KFSPropertyConstants; import org.kuali.kfs.sys.businessobject.OriginationCode; import org.kuali.kfs.sys.businessobject.SourceAccountingLine; import org.kuali.kfs.sys.context.SpringContext; import org.kuali.kfs.sys.web.struts.KualiAccountingDocumentFormBase; import org.kuali.rice.kew.doctype.bo.DocumentTypeEBO; import org.kuali.rice.krad.bo.DocumentHeader; import org.kuali.rice.krad.service.SessionDocumentService; import org.kuali.rice.krad.util.KRADConstants; import org.kuali.rice.krad.util.ObjectUtils; public class AssetPaymentForm extends KualiAccountingDocumentFormBase { protected static Log LOG = LogFactory.getLog(AssetPaymentForm.class); // Indicates which result set we are using when refreshing/returning from a // multi-value lookup. protected String lookupResultsSequenceNumber; // Type of result returned by the multi-value lookup. ?to be persisted in // the lookup results service instead? protected String lookupResultsBOClassName; // The name of the collection looked up (by a multiple value lookup) protected String lookedUpCollectionName; String capitalAssetNumber = ""; /** * Constructs a AssetPaymentForm.java. */ public AssetPaymentForm() { super(); getAssetPaymentDocument().setAssetPaymentAllocationTypeCode("2"); } @Override protected String getDefaultDocumentTypeName() { return "MPAY"; } /** * This method gets the asset payment document * * @return AssetPaymentDocument */ public AssetPaymentDocument getAssetPaymentDocument() { return (AssetPaymentDocument) getDocument(); } /** * @see org.kuali.kfs.sys.web.struts.KualiAccountingDocumentFormBase#getForcedLookupOptionalFields() */ @Override public Map<String, String> getForcedLookupOptionalFields() { Map<String, String> forcedLookupOptionalFields = super.getForcedLookupOptionalFields(); forcedLookupOptionalFields.put(CamsPropertyConstants.AssetPaymentDetail.DOCUMENT_TYPE_CODE, KFSPropertyConstants.FINANCIAL_DOCUMENT_TYPE_CODE + ";" + DocumentTypeEBO.class.getName()); forcedLookupOptionalFields.put(CamsPropertyConstants.AssetPaymentDetail.ORIGINATION_CODE, KFSPropertyConstants.FINANCIAL_SYSTEM_ORIGINATION_CODE + ";" + OriginationCode.class.getName()); return forcedLookupOptionalFields; } /** * This method sets the asset# selected * * @param capitalAssetNumber */ public void setCapitalAssetNumber(String capitalAssetNumber) { this.capitalAssetNumber = capitalAssetNumber; } /** * gets the asset# that was previously selected * * @return */ public String getCapitalAssetNumber() { return this.capitalAssetNumber; } /** * @see org.kuali.kfs.sys.web.struts.KualiAccountingDocumentFormBase#getNewSourceLine() */ @Override public SourceAccountingLine getNewSourceLine() { // Getting the workflow document number created for the asset payment document. SessionDocumentService sessionService = SpringContext.getBean(SessionDocumentService.class); DocumentHeader documentHeader = this.getAssetPaymentDocument().getDocumentHeader(); String worflowDocumentNumber = ObjectUtils.isNotNull(documentHeader) && !StringUtils.isEmpty(documentHeader.getDocumentNumber()) ? documentHeader.getDocumentNumber() : ""; AssetPaymentDetail newSourceLine = (AssetPaymentDetail) super.getNewSourceLine(); // Setting default document type. if (newSourceLine.getExpenditureFinancialDocumentTypeCode() == null || newSourceLine.getExpenditureFinancialDocumentTypeCode().trim().equals("")) { newSourceLine.setExpenditureFinancialDocumentTypeCode(KFSConstants.FinancialDocumentTypeCodes.ASSET_PAYMENT); } // Setting the default asset payment row document number. if (newSourceLine.getExpenditureFinancialDocumentNumber() == null || newSourceLine.getExpenditureFinancialDocumentNumber().trim().equals("")) { newSourceLine.setExpenditureFinancialDocumentNumber(worflowDocumentNumber); } // Setting the default asset payment row origination code. if (newSourceLine.getExpenditureFinancialSystemOriginationCode() == null || newSourceLine.getExpenditureFinancialSystemOriginationCode().trim().equals("")) { newSourceLine.setExpenditureFinancialSystemOriginationCode(KFSConstants.ORIGIN_CODE_KUALI); } return newSourceLine; } /** * @see org.kuali.rice.kns.web.struts.form.KualiDocumentFormBase#populate(javax.servlet.http.HttpServletRequest) */ @Override public void populate(HttpServletRequest request) { super.populate(request); // Refreshing reference to the asset table. for (AssetPaymentAssetDetail assetPaymentAssetDetail : this.getAssetPaymentDocument().getAssetPaymentAssetDetail()) { assetPaymentAssetDetail.refreshReferenceObject(CamsPropertyConstants.AssetPaymentDocument.ASSET); } } public String getLookupResultsSequenceNumber() { return lookupResultsSequenceNumber; } public void setLookupResultsSequenceNumber(String lookupResultsSequenceNumber) { this.lookupResultsSequenceNumber = lookupResultsSequenceNumber; } public String getLookupResultsBOClassName() { return lookupResultsBOClassName; } public void setLookupResultsBOClassName(String lookupResultsBOClassName) { this.lookupResultsBOClassName = lookupResultsBOClassName; } public String getLookedUpCollectionName() { return lookedUpCollectionName; } public void setLookedUpCollectionName(String lookedUpCollectionName) { this.lookedUpCollectionName = lookedUpCollectionName; } /** * @see org.kuali.rice.kns.web.struts.form.AccountingDocumentFormBase#getRefreshCaller() */ @Override public String getRefreshCaller() { return KFSConstants.MULTIPLE_VALUE; } /** * @see org.kuali.rice.kns.web.struts.form.KualiDocumentFormBase#addRequiredNonEditableProperties() */ @Override public void addRequiredNonEditableProperties() { super.addRequiredNonEditableProperties(); registerRequiredNonEditableProperty(KRADConstants.LOOKUP_RESULTS_SEQUENCE_NUMBER); } /** * Get the distribution (allocation) code in the * {@link AssetPaymentDocument} */ public String getAllocationCode() { return getAssetPaymentDocument().getAssetPaymentAllocationTypeCode(); } /** * Set the distribution (allocation) code in the * {@link AssetPaymentDocument} */ public void setAllocationCode(String distributionCode) { getAssetPaymentDocument().setAssetPaymentAllocationTypeCode(distributionCode); } /** * Get the allocation label that appears on the asset table */ public String getAllocationLabel() { AssetPaymentAllocationType assetPaymentAllocationType = getAssetPaymentDocument().getAssetPaymentAllocationType(); return assetPaymentAllocationType==null ? "" : assetPaymentAllocationType.getAllocationColumnName(); } /** * Returns whether the user can edit allocations. */ public boolean isAllocationEditable() { boolean allocationEditable = false; AssetPaymentAllocationType assetPaymentAllocationType = getAssetPaymentDocument().getAssetPaymentAllocationType(); if (!this.getAssetPaymentDocument().isAllocationFromFPDocuments()) { allocationEditable = assetPaymentAllocationType==null ? false : assetPaymentAllocationType.isAllocationEditable(); } return allocationEditable; } public boolean isAllocationEditablePct() { AssetPaymentAllocationType assetPaymentAllocationType = getAssetPaymentDocument().getAssetPaymentAllocationType(); if (assetPaymentAllocationType==null) { return false; } else { return isAllocationEditable() & (assetPaymentAllocationType.getAllocationCode().equals(CamsPropertyConstants.AssetPaymentAllocation.ASSET_DISTRIBUTION_BY_PERCENTAGE_CODE)); } } /** * Returns the number of source lines in the document */ public int getSourceLineCount() { return getAssetPaymentDocument().getAssetPaymentAssetDetail().size(); } }