001 /* 002 * Copyright 2011 The Kuali Foundation. 003 * 004 * Licensed under the Educational Community License, Version 2.0 (the "License"); 005 * you may not use this file except in compliance with the License. 006 * You may obtain a copy of the License at 007 * 008 * http://www.opensource.org/licenses/ecl2.php 009 * 010 * Unless required by applicable law or agreed to in writing, software 011 * distributed under the License is distributed on an "AS IS" BASIS, 012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 013 * See the License for the specific language governing permissions and 014 * limitations under the License. 015 */ 016 package org.kuali.kfs.module.cam.document.web.struts; 017 018 import java.util.Map; 019 020 import javax.servlet.http.HttpServletRequest; 021 022 import org.apache.commons.logging.Log; 023 import org.apache.commons.logging.LogFactory; 024 import org.kuali.kfs.module.cam.CamsPropertyConstants; 025 import org.kuali.kfs.module.cam.businessobject.AssetPaymentAssetDetail; 026 import org.kuali.kfs.module.cam.businessobject.AssetPaymentDetail; 027 import org.kuali.kfs.module.cam.document.AssetPaymentDocument; 028 import org.kuali.kfs.sys.KFSConstants; 029 import org.kuali.kfs.sys.KFSPropertyConstants; 030 import org.kuali.kfs.sys.businessobject.OriginationCode; 031 import org.kuali.kfs.sys.businessobject.SourceAccountingLine; 032 import org.kuali.kfs.sys.context.SpringContext; 033 import org.kuali.kfs.sys.web.struts.KualiAccountingDocumentFormBase; 034 import org.kuali.rice.kew.doctype.bo.DocumentTypeEBO; 035 import org.kuali.rice.kns.service.DataDictionaryService; 036 import org.kuali.rice.kns.util.GlobalVariables; 037 import org.kuali.rice.kns.util.KNSConstants; 038 039 public class AssetPaymentForm extends KualiAccountingDocumentFormBase { 040 protected static Log LOG = LogFactory.getLog(AssetPaymentForm.class); 041 042 // Indicates which result set we are using when refreshing/returning from a multi-value lookup. 043 protected String lookupResultsSequenceNumber; 044 045 // Type of result returned by the multi-value lookup. ?to be persisted in the lookup results service instead? 046 protected String lookupResultsBOClassName; 047 048 // The name of the collection looked up (by a multiple value lookup) 049 protected String lookedUpCollectionName; 050 051 String capitalAssetNumber = ""; 052 053 /** 054 * Constructs a AssetPaymentForm.java. 055 */ 056 public AssetPaymentForm() { 057 super(); 058 } 059 060 @Override 061 protected String getDefaultDocumentTypeName() { 062 return "MPAY"; 063 } 064 065 /** 066 * This method gets the asset payment document 067 * 068 * @return AssetPaymentDocument 069 */ 070 public AssetPaymentDocument getAssetPaymentDocument() { 071 return (AssetPaymentDocument) getDocument(); 072 } 073 074 /** 075 * @see org.kuali.kfs.sys.web.struts.KualiAccountingDocumentFormBase#getForcedLookupOptionalFields() 076 */ 077 @Override 078 public Map<String, String> getForcedLookupOptionalFields() { 079 Map<String, String> forcedLookupOptionalFields = super.getForcedLookupOptionalFields(); 080 forcedLookupOptionalFields.put(CamsPropertyConstants.AssetPaymentDetail.DOCUMENT_TYPE_CODE, KFSPropertyConstants.FINANCIAL_DOCUMENT_TYPE_CODE + ";" + DocumentTypeEBO.class.getName()); 081 forcedLookupOptionalFields.put(CamsPropertyConstants.AssetPaymentDetail.ORIGINATION_CODE, KFSPropertyConstants.FINANCIAL_SYSTEM_ORIGINATION_CODE + ";" + OriginationCode.class.getName()); 082 083 return forcedLookupOptionalFields; 084 } 085 086 /** 087 * This method sets the asset# selected 088 * 089 * @param capitalAssetNumber 090 */ 091 public void setCapitalAssetNumber(String capitalAssetNumber) { 092 this.capitalAssetNumber = capitalAssetNumber; 093 } 094 095 /** 096 * gets the asset# that was previously selected 097 * 098 * @return 099 */ 100 public String getCapitalAssetNumber() { 101 return this.capitalAssetNumber; 102 } 103 104 105 /** 106 * @see org.kuali.kfs.sys.web.struts.KualiAccountingDocumentFormBase#getNewSourceLine() 107 */ 108 @Override 109 public SourceAccountingLine getNewSourceLine() { 110 // Getting the workflow document number created for the asset payment document. 111 String worflowDocumentNumber = ""; 112 try { 113 if (GlobalVariables.getUserSession().getWorkflowDocument(this.getAssetPaymentDocument().getDocumentNumber()) != null) 114 worflowDocumentNumber = GlobalVariables.getUserSession().getWorkflowDocument(this.getAssetPaymentDocument().getDocumentNumber()).getRouteHeaderId().toString(); 115 } 116 catch (Exception e) { 117 throw new RuntimeException("Error converting workflow document number to string:" + e.getMessage()); 118 } 119 120 AssetPaymentDetail newSourceLine = (AssetPaymentDetail) super.getNewSourceLine(); 121 122 // Setting default document type. 123 if (newSourceLine.getExpenditureFinancialDocumentTypeCode() == null || newSourceLine.getExpenditureFinancialDocumentTypeCode().trim().equals("")) { 124 newSourceLine.setExpenditureFinancialDocumentTypeCode(KFSConstants.FinancialDocumentTypeCodes.ASSET_PAYMENT); 125 } 126 127 // Setting the default asset payment row document number. 128 if (newSourceLine.getExpenditureFinancialDocumentNumber() == null || newSourceLine.getExpenditureFinancialDocumentNumber().trim().equals("")) { 129 newSourceLine.setExpenditureFinancialDocumentNumber(worflowDocumentNumber); 130 } 131 132 // Setting the default asset payment row origination code. 133 if (newSourceLine.getExpenditureFinancialSystemOriginationCode() == null || newSourceLine.getExpenditureFinancialSystemOriginationCode().trim().equals("")) { 134 newSourceLine.setExpenditureFinancialSystemOriginationCode(KFSConstants.ORIGIN_CODE_KUALI); 135 } 136 137 return (SourceAccountingLine) newSourceLine; 138 } 139 140 /** 141 * @see org.kuali.rice.kns.web.struts.form.KualiDocumentFormBase#populate(javax.servlet.http.HttpServletRequest) 142 */ 143 @Override 144 public void populate(HttpServletRequest request) { 145 super.populate(request); 146 147 // Refreshing reference to the asset table. 148 for (AssetPaymentAssetDetail assetPaymentAssetDetail : this.getAssetPaymentDocument().getAssetPaymentAssetDetail()) { 149 assetPaymentAssetDetail.refreshReferenceObject(CamsPropertyConstants.AssetPaymentDocument.ASSET); 150 } 151 } 152 153 public String getLookupResultsSequenceNumber() { 154 return lookupResultsSequenceNumber; 155 } 156 157 public void setLookupResultsSequenceNumber(String lookupResultsSequenceNumber) { 158 this.lookupResultsSequenceNumber = lookupResultsSequenceNumber; 159 } 160 161 public String getLookupResultsBOClassName() { 162 return lookupResultsBOClassName; 163 } 164 165 public void setLookupResultsBOClassName(String lookupResultsBOClassName) { 166 this.lookupResultsBOClassName = lookupResultsBOClassName; 167 } 168 169 public String getLookedUpCollectionName() { 170 return lookedUpCollectionName; 171 } 172 173 public void setLookedUpCollectionName(String lookedUpCollectionName) { 174 this.lookedUpCollectionName = lookedUpCollectionName; 175 } 176 177 /** 178 * @see org.kuali.rice.kns.web.struts.form.AccountingDocumentFormBase#getRefreshCaller() 179 */ 180 @Override 181 public String getRefreshCaller() { 182 return KFSConstants.MULTIPLE_VALUE; 183 } 184 185 /** 186 * @see org.kuali.rice.kns.web.struts.form.KualiDocumentFormBase#addRequiredNonEditableProperties() 187 */ 188 @Override 189 public void addRequiredNonEditableProperties() { 190 super.addRequiredNonEditableProperties(); 191 registerRequiredNonEditableProperty(KNSConstants.LOOKUP_RESULTS_SEQUENCE_NUMBER); 192 } 193 }