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.fp.document.web.struts;
017
018 import java.util.HashMap;
019 import java.util.List;
020 import java.util.Map;
021
022 import javax.servlet.http.HttpServletRequest;
023
024 import org.apache.commons.beanutils.PropertyUtils;
025 import org.apache.commons.lang.StringUtils;
026 import org.apache.struts.action.ActionMapping;
027 import org.kuali.kfs.fp.businessobject.DisbursementVoucherNonEmployeeExpense;
028 import org.kuali.kfs.fp.businessobject.DisbursementVoucherPreConferenceRegistrant;
029 import org.kuali.kfs.fp.businessobject.TravelPerDiem;
030 import org.kuali.kfs.fp.document.DisbursementVoucherConstants;
031 import org.kuali.kfs.fp.document.DisbursementVoucherDocument;
032 import org.kuali.kfs.fp.document.service.DisbursementVoucherCoverSheetService;
033 import org.kuali.kfs.sys.KFSPropertyConstants;
034 import org.kuali.kfs.sys.context.SpringContext;
035 import org.kuali.kfs.sys.service.UniversityDateService;
036 import org.kuali.kfs.sys.web.struts.KualiAccountingDocumentFormBase;
037 import org.kuali.rice.kns.service.KeyValuesService;
038 import org.kuali.rice.kns.service.ParameterService;
039 import org.kuali.rice.kns.util.KNSConstants;
040 import org.kuali.rice.kns.web.format.SimpleBooleanFormatter;
041
042 /**
043 * This class is the action form for the Disbursement Voucher.
044 */
045 public class DisbursementVoucherForm extends KualiAccountingDocumentFormBase {
046 protected static org.apache.log4j.Logger LOG = org.apache.log4j.Logger.getLogger(DisbursementVoucherForm.class);
047
048 protected static final long serialVersionUID = 1L;
049
050 protected String payeeIdNumber;
051 protected String vendorHeaderGeneratedIdentifier = StringUtils.EMPTY;
052 protected String vendorDetailAssignedIdentifier = StringUtils.EMPTY;
053 protected String vendorAddressGeneratedIdentifier;
054
055 protected String tempPayeeIdNumber;
056 protected String tempVendorHeaderGeneratedIdentifier = StringUtils.EMPTY;
057 protected String tempVendorDetailAssignedIdentifier = StringUtils.EMPTY;
058 protected String tempVendorAddressGeneratedIdentifier;
059 protected String oldPayeeType = StringUtils.EMPTY;
060
061 protected boolean hasMultipleAddresses = false;
062
063 protected DisbursementVoucherNonEmployeeExpense newNonEmployeeExpenseLine;
064 protected DisbursementVoucherNonEmployeeExpense newPrePaidNonEmployeeExpenseLine;
065 protected DisbursementVoucherPreConferenceRegistrant newPreConferenceRegistrantLine;
066 protected String wireChargeMessage;
067
068 protected boolean canExport = false;
069
070 /**
071 * Constructs a DisbursementVoucherForm.java.
072 */
073 public DisbursementVoucherForm() {
074 super();
075 setFormatterType("canPrintCoverSheet", SimpleBooleanFormatter.class);
076 }
077
078 @Override
079 protected String getDefaultDocumentTypeName() {
080 return "DV";
081 }
082
083 /**
084 * @return Returns the newNonEmployeeExpenseLine.
085 */
086 public DisbursementVoucherNonEmployeeExpense getNewNonEmployeeExpenseLine() {
087 return newNonEmployeeExpenseLine;
088 }
089
090 /**
091 * @param newNonEmployeeExpenseLine The newNonEmployeeExpenseLine to set.
092 */
093 public void setNewNonEmployeeExpenseLine(DisbursementVoucherNonEmployeeExpense newNonEmployeeExpenseLine) {
094 this.newNonEmployeeExpenseLine = newNonEmployeeExpenseLine;
095 }
096
097 /**
098 * @return Returns the newPreConferenceRegistrantLine.
099 */
100 public DisbursementVoucherPreConferenceRegistrant getNewPreConferenceRegistrantLine() {
101 return newPreConferenceRegistrantLine;
102 }
103
104 /**
105 * @param newPreConferenceRegistrantLine The newPreConferenceRegistrantLine to set.
106 */
107 public void setNewPreConferenceRegistrantLine(DisbursementVoucherPreConferenceRegistrant newPreConferenceRegistrantLine) {
108 this.newPreConferenceRegistrantLine = newPreConferenceRegistrantLine;
109 }
110
111 /**
112 * @return Returns the newPrePaidNonEmployeeExpenseLine.
113 */
114 public DisbursementVoucherNonEmployeeExpense getNewPrePaidNonEmployeeExpenseLine() {
115 return newPrePaidNonEmployeeExpenseLine;
116 }
117
118 /**
119 * @param newPrePaidNonEmployeeExpenseLine The newPrePaidNonEmployeeExpenseLine to set.
120 */
121 public void setNewPrePaidNonEmployeeExpenseLine(DisbursementVoucherNonEmployeeExpense newPrePaidNonEmployeeExpenseLine) {
122 this.newPrePaidNonEmployeeExpenseLine = newPrePaidNonEmployeeExpenseLine;
123 }
124
125 /**
126 * @return Returns the wireChargeMessage.
127 */
128 public String getWireChargeMessage() {
129 return wireChargeMessage;
130 }
131
132 /**
133 * @param wireChargeMessage The wireChargeMessage to set.
134 */
135 public void setWireChargeMessage(String wireChargeMessage) {
136 this.wireChargeMessage = wireChargeMessage;
137 }
138
139 /**
140 * determines if the DV document is in a state that allows printing of the cover sheet
141 *
142 * @return true if the DV document is in a state that allows printing of the cover sheet; otherwise, return false
143 */
144 public boolean getCanPrintCoverSheet() {
145 DisbursementVoucherDocument disbursementVoucherDocument = (DisbursementVoucherDocument) this.getDocument();
146 return SpringContext.getBean(DisbursementVoucherCoverSheetService.class).isCoverSheetPrintable(disbursementVoucherDocument);
147 }
148
149 /**
150 * @return a list of available travel expense type codes for rendering per diem link page.
151 */
152 public List<TravelPerDiem> getTravelPerDiemCategoryCodes() {
153 Map<String, Object> criteria = new HashMap<String, Object>();
154 criteria.put(KFSPropertyConstants.UNIVERSITY_FISCAL_YEAR, SpringContext.getBean(UniversityDateService.class).getCurrentFiscalYear());
155
156 return (List<TravelPerDiem>) SpringContext.getBean(KeyValuesService.class).findMatching(TravelPerDiem.class, criteria);
157 }
158
159 /**
160 * @return the per diem link message from the parameters table.
161 */
162 public String getTravelPerDiemLinkPageMessage() {
163 return SpringContext.getBean(ParameterService.class).getParameterValue(DisbursementVoucherDocument.class, DisbursementVoucherConstants.TRAVEL_PER_DIEM_MESSAGE_PARM_NM);
164 }
165
166 /**
167 * Gets the payeeIdNumber attribute.
168 *
169 * @return Returns the payeeIdNumber.
170 */
171 public String getPayeeIdNumber() {
172 return payeeIdNumber;
173 }
174
175 /**
176 * Sets the payeeIdNumber attribute value.
177 *
178 * @param payeeIdNumber The payeeIdNumber to set.
179 */
180 public void setPayeeIdNumber(String payeeIdNumber) {
181 String separator = "-";
182 if (this.isVendor() && StringUtils.contains(payeeIdNumber, separator)) {
183 this.vendorHeaderGeneratedIdentifier = StringUtils.substringBefore(payeeIdNumber, separator);
184 this.vendorDetailAssignedIdentifier = StringUtils.substringAfter(payeeIdNumber, separator);
185 }
186
187 this.payeeIdNumber = payeeIdNumber;
188 }
189
190 /**
191 * Gets the payeeIdNumber attribute.
192 *
193 * @return Returns the payeeIdNumber.
194 */
195 public String getTempPayeeIdNumber() {
196 return tempPayeeIdNumber;
197 }
198
199 /**
200 * Sets the payeeIdNumber attribute value.
201 *
202 * @param payeeIdNumber The payeeIdNumber to set.
203 */
204 public void setTempPayeeIdNumber(String payeeIdNumber) {
205 String separator = "-";
206 if (this.isVendor() && StringUtils.contains(payeeIdNumber, separator)) {
207 this.tempVendorHeaderGeneratedIdentifier = StringUtils.substringBefore(payeeIdNumber, separator);
208 this.tempVendorDetailAssignedIdentifier = StringUtils.substringAfter(payeeIdNumber, separator);
209 }
210
211 this.tempPayeeIdNumber = payeeIdNumber;
212 }
213
214
215 /**
216 * Gets the hasMultipleAddresses attribute.
217 *
218 * @return Returns the hasMultipleAddresses.
219 */
220 public boolean hasMultipleAddresses() {
221 return hasMultipleAddresses;
222 }
223
224 /**
225 * Gets the hasMultipleAddresses attribute.
226 *
227 * @return Returns the hasMultipleAddresses.
228 */
229 public boolean getHasMultipleAddresses() {
230 return hasMultipleAddresses;
231 }
232
233 /**
234 * Sets the hasMultipleAddresses attribute value.
235 *
236 * @param hasMultipleAddresses The hasMultipleAddresses to set.
237 */
238 public void setHasMultipleAddresses(boolean hasMultipleAddresses) {
239 this.hasMultipleAddresses = hasMultipleAddresses;
240 }
241
242 /**
243 * Gets the vendorHeaderGeneratedIdentifier attribute.
244 *
245 * @return Returns the vendorHeaderGeneratedIdentifier.
246 */
247 public String getVendorHeaderGeneratedIdentifier() {
248 return vendorHeaderGeneratedIdentifier;
249 }
250
251 /**
252 * Sets the vendorHeaderGeneratedIdentifier attribute value.
253 *
254 * @param vendorHeaderGeneratedIdentifier The vendorHeaderGeneratedIdentifier to set.
255 */
256 public void setVendorHeaderGeneratedIdentifier(String vendorHeaderGeneratedIdentifier) {
257 this.vendorHeaderGeneratedIdentifier = vendorHeaderGeneratedIdentifier;
258 }
259
260 /**
261 * Gets the vendorDetailAssignedIdentifier attribute.
262 *
263 * @return Returns the vendorDetailAssignedIdentifier.
264 */
265 public String getVendorDetailAssignedIdentifier() {
266 return vendorDetailAssignedIdentifier;
267 }
268
269 /**
270 * Sets the vendorDetailAssignedIdentifier attribute value.
271 *
272 * @param vendorDetailAssignedIdentifier The vendorDetailAssignedIdentifier to set.
273 */
274 public void setVendorDetailAssignedIdentifier(String vendorDetailAssignedIdentifier) {
275 this.vendorDetailAssignedIdentifier = vendorDetailAssignedIdentifier;
276 }
277
278 /**
279 * Gets the vendorAddressGeneratedIdentifier attribute.
280 *
281 * @return Returns the vendorAddressGeneratedIdentifier.
282 */
283 public String getVendorAddressGeneratedIdentifier() {
284 return vendorAddressGeneratedIdentifier;
285 }
286
287 /**
288 * Sets the vendorAddressGeneratedIdentifier attribute value.
289 *
290 * @param vendorAddressGeneratedIdentifier The vendorAddressGeneratedIdentifier to set.
291 */
292 public void setVendorAddressGeneratedIdentifier(String vendorAddressGeneratedIdentifier) {
293 this.vendorAddressGeneratedIdentifier = vendorAddressGeneratedIdentifier;
294 }
295
296
297
298 /**
299 * Gets the tempVendorHeaderGeneratedIdentifier attribute.
300 * @return Returns the tempVendorHeaderGeneratedIdentifier.
301 */
302 public String getTempVendorHeaderGeneratedIdentifier() {
303 return tempVendorHeaderGeneratedIdentifier;
304 }
305
306 /**
307 * Sets the tempVendorHeaderGeneratedIdentifier attribute value.
308 * @param tempVendorHeaderGeneratedIdentifier The tempVendorHeaderGeneratedIdentifier to set.
309 */
310 public void setTempVendorHeaderGeneratedIdentifier(String tempVendorHeaderGeneratedIdentifier) {
311 this.tempVendorHeaderGeneratedIdentifier = tempVendorHeaderGeneratedIdentifier;
312 }
313
314 /**
315 * Gets the tempVendorDetailAssignedIdentifier attribute.
316 * @return Returns the tempVendorDetailAssignedIdentifier.
317 */
318 public String getTempVendorDetailAssignedIdentifier() {
319 return tempVendorDetailAssignedIdentifier;
320 }
321
322 /**
323 * Sets the tempVendorDetailAssignedIdentifier attribute value.
324 * @param tempVendorDetailAssignedIdentifier The tempVendorDetailAssignedIdentifier to set.
325 */
326 public void setTempVendorDetailAssignedIdentifier(String tempVendorDetailAssignedIdentifier) {
327 this.tempVendorDetailAssignedIdentifier = tempVendorDetailAssignedIdentifier;
328 }
329
330 /**
331 * Gets the tempVendorAddressGeneratedIdentifier attribute.
332 * @return Returns the tempVendorAddressGeneratedIdentifier.
333 */
334 public String getTempVendorAddressGeneratedIdentifier() {
335 return tempVendorAddressGeneratedIdentifier;
336 }
337
338 /**
339 * Sets the tempVendorAddressGeneratedIdentifier attribute value.
340 * @param tempVendorAddressGeneratedIdentifier The tempVendorAddressGeneratedIdentifier to set.
341 */
342 public void setTempVendorAddressGeneratedIdentifier(String tempVendorAddressGeneratedIdentifier) {
343 this.tempVendorAddressGeneratedIdentifier = tempVendorAddressGeneratedIdentifier;
344 }
345
346
347
348 /**
349 * Gets the oldPayeeType attribute.
350 * @return Returns the oldPayeeType.
351 */
352 public String getOldPayeeType() {
353 return oldPayeeType;
354 }
355
356 /**
357 * Sets the oldPayeeType attribute value.
358 * @param oldPayeeType The oldPayeeType to set.
359 */
360 public void setOldPayeeType(String oldPayeeType) {
361 this.oldPayeeType = oldPayeeType;
362 }
363
364 /**
365 * determine whether the selected payee is an employee
366 */
367 public boolean isEmployee() {
368 DisbursementVoucherDocument disbursementVoucherDocument = (DisbursementVoucherDocument) this.getDocument();
369 return disbursementVoucherDocument.getDvPayeeDetail().isEmployee();
370 }
371
372 /**
373 * determine whether the selected payee is a vendor
374 */
375 public boolean isVendor() {
376 DisbursementVoucherDocument disbursementVoucherDocument = (DisbursementVoucherDocument) this.getDocument();
377 return disbursementVoucherDocument.getDvPayeeDetail().isVendor();
378 }
379
380 /**
381 * @see org.kuali.rice.kns.web.struts.form.KualiDocumentFormBase#shouldMethodToCallParameterBeUsed(java.lang.String,
382 * java.lang.String, javax.servlet.http.HttpServletRequest)
383 */
384 @Override
385 public boolean shouldMethodToCallParameterBeUsed(String methodToCallParameterName, String methodToCallParameterValue, HttpServletRequest request) {
386 if (StringUtils.equals(methodToCallParameterName, KNSConstants.DISPATCH_REQUEST_PARAMETER)) {
387 if (this.getExcludedmethodToCall().contains(methodToCallParameterValue)) {
388 return true;
389 }
390 }
391 return super.shouldMethodToCallParameterBeUsed(methodToCallParameterName, methodToCallParameterValue, request);
392 }
393
394 /**
395 * @see org.kuali.kfs.sys.web.struts.KualiAccountingDocumentFormBase#getExcludedmethodToCall()
396 */
397 protected List<String> getExcludedmethodToCall() {
398 List<String> execludedMethodToCall = super.getExcludedmethodToCall();
399 execludedMethodToCall.add("printDisbursementVoucherCoverSheet");
400 execludedMethodToCall.add("showTravelPerDiemLinks");
401
402 return execludedMethodToCall;
403 }
404
405 /**
406 * Gets the canExport attribute.
407 * @return Returns the canExport.
408 */
409 public boolean isCanExport() {
410 return canExport;
411 }
412
413 /**
414 * Sets the canExport attribute value.
415 * @param canExport The canExport to set.
416 */
417 public void setCanExport(boolean canExport) {
418 this.canExport = canExport;
419 }
420 }