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 javax.servlet.http.HttpServletRequest; 019 import javax.servlet.http.HttpServletResponse; 020 021 import org.apache.commons.lang.StringUtils; 022 import org.apache.struts.action.ActionForm; 023 import org.apache.struts.action.ActionForward; 024 import org.apache.struts.action.ActionMapping; 025 import org.kuali.kfs.fp.document.AuxiliaryVoucherDocument; 026 import org.kuali.kfs.sys.KFSConstants; 027 import org.kuali.kfs.sys.context.SpringContext; 028 import org.kuali.rice.kns.document.Document; 029 import org.kuali.rice.kns.document.authorization.DocumentAuthorizer; 030 import org.kuali.rice.kns.service.DocumentHelperService; 031 032 033 /** 034 * This class piggy backs on all of the functionality in the FinancialSystemTransactionalDocumentActionBase but is necessary for this document 035 * type. The Auxiliary Voucher is unique in that it defines several fields that aren't typically used by the other financial 036 * transaction processing eDocs (i.e. external system fields, object type override, credit and debit amounts). 037 */ 038 public class AuxiliaryVoucherAction extends VoucherAction { 039 /** 040 * Overrides the parent and then calls the super method after checking to see if the user just changed the voucher type. 041 * 042 * @see org.kuali.rice.kns.web.struts.action.KualiAction#execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, 043 * HttpServletResponse response) 044 */ 045 @Override 046 public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { 047 AuxiliaryVoucherForm avForm = (AuxiliaryVoucherForm) form; 048 049 // now check to see if the voucher type was changed and if so, we want to 050 // set the method to call so that the appropriate action can be invoked 051 // did it this way b/c the changing of the type causes the page to re-submit 052 // and we need to process some stuff if it's changed 053 ActionForward returnForward; 054 if (StringUtils.isNotBlank(avForm.getOriginalVoucherType()) && !avForm.getAuxiliaryVoucherDocument().getTypeCode().equals(avForm.getOriginalVoucherType())) { 055 returnForward = super.dispatchMethod(mapping, form, request, response, KFSConstants.AuxiliaryVoucher.CHANGE_VOUCHER_TYPE); 056 } 057 else { // otherwise call the super 058 returnForward = super.execute(mapping, avForm, request, response); 059 } 060 return returnForward; 061 } 062 063 /** 064 * This action method is responsible for clearing the GLPEs for an AV after the voucher type changes, since a voucher type 065 * change makes any previously generated GLPEs inaccurate. 066 * 067 * @param mapping 068 * @param form 069 * @param request 070 * @param response 071 * @return ActionForward 072 * @throws Exception 073 */ 074 public ActionForward changeVoucherType(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { 075 AuxiliaryVoucherForm avForm = (AuxiliaryVoucherForm) form; 076 077 AuxiliaryVoucherDocument avDoc = avForm.getAuxiliaryVoucherDocument(); 078 079 // clear the glpes now 080 avDoc.getGeneralLedgerPendingEntries().clear(); 081 082 // make sure to set the original type to the new one now 083 avForm.setOriginalVoucherType(avDoc.getTypeCode()); 084 085 return mapping.findForward(KFSConstants.MAPPING_BASIC); 086 } 087 088 /** 089 * @see org.kuali.rice.kns.web.struts.action.KualiDocumentActionBase#docHandler(org.apache.struts.action.ActionMapping, 090 * org.apache.struts.action.ActionForm, javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse) 091 */ 092 @Override 093 public ActionForward docHandler(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { 094 ActionForward forward = super.docHandler(mapping, form, request, response); 095 096 // Fix for KULEDOCS-1701, update the original voucher type so that the execute method in 097 // this class will call the right block of code 098 AuxiliaryVoucherForm avForm = (AuxiliaryVoucherForm) form; 099 AuxiliaryVoucherDocument avDoc = avForm.getAuxiliaryVoucherDocument(); 100 avForm.setOriginalVoucherType(avDoc.getTypeCode()); 101 102 return forward; 103 } 104 }