View Javadoc
1   /*
2    * Copyright 2005-2006 The Kuali Foundation
3    * 
4    * Licensed under the Educational Community License, Version 2.0 (the "License");
5    * you may not use this file except in compliance with the License.
6    * You may obtain a copy of the License at
7    * 
8    * http://www.opensource.org/licenses/ecl2.php
9    * 
10   * Unless required by applicable law or agreed to in writing, software
11   * distributed under the License is distributed on an "AS IS" BASIS,
12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   * See the License for the specific language governing permissions and
14   * limitations under the License.
15   */
16  package org.kuali.ole.fp.document.web.struts;
17  
18  import javax.servlet.http.HttpServletRequest;
19  import javax.servlet.http.HttpServletResponse;
20  
21  import org.apache.commons.lang.StringUtils;
22  import org.apache.struts.action.ActionForm;
23  import org.apache.struts.action.ActionForward;
24  import org.apache.struts.action.ActionMapping;
25  import org.kuali.ole.fp.document.AuxiliaryVoucherDocument;
26  import org.kuali.ole.sys.OLEConstants;
27  
28  
29  /**
30   * This class piggy backs on all of the functionality in the FinancialSystemTransactionalDocumentActionBase but is necessary for this document
31   * type. The Auxiliary Voucher is unique in that it defines several fields that aren't typically used by the other financial
32   * transaction processing eDocs (i.e. external system fields, object type override, credit and debit amounts).
33   */
34  public class AuxiliaryVoucherAction extends VoucherAction {
35      /**
36       * Overrides the parent and then calls the super method after checking to see if the user just changed the voucher type.
37       * 
38       * @see org.kuali.rice.kns.web.struts.action.KualiAction#execute(ActionMapping mapping, ActionForm form, HttpServletRequest request,
39       *      HttpServletResponse response)
40       */
41      @Override
42      public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
43          AuxiliaryVoucherForm avForm = (AuxiliaryVoucherForm) form;
44  
45          // now check to see if the voucher type was changed and if so, we want to
46          // set the method to call so that the appropriate action can be invoked
47          // did it this way b/c the changing of the type causes the page to re-submit
48          // and we need to process some stuff if it's changed
49          ActionForward returnForward;
50          if (StringUtils.isNotBlank(avForm.getOriginalVoucherType()) && !avForm.getAuxiliaryVoucherDocument().getTypeCode().equals(avForm.getOriginalVoucherType())) {
51              returnForward = super.dispatchMethod(mapping, form, request, response, OLEConstants.AuxiliaryVoucher.CHANGE_VOUCHER_TYPE);
52          }
53          else { // otherwise call the super
54              returnForward = super.execute(mapping, avForm, request, response);
55          }
56          return returnForward;
57      }
58  
59      /**
60       * This action method is responsible for clearing the GLPEs for an AV after the voucher type changes, since a voucher type
61       * change makes any previously generated GLPEs inaccurate.
62       * 
63       * @param mapping
64       * @param form
65       * @param request
66       * @param response
67       * @return ActionForward
68       * @throws Exception
69       */
70      public ActionForward changeVoucherType(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
71          AuxiliaryVoucherForm avForm = (AuxiliaryVoucherForm) form;
72  
73          AuxiliaryVoucherDocument avDoc = avForm.getAuxiliaryVoucherDocument();
74  
75          // clear the glpes now
76          avDoc.getGeneralLedgerPendingEntries().clear();
77  
78          // make sure to set the original type to the new one now
79          avForm.setOriginalVoucherType(avDoc.getTypeCode());
80  
81          return mapping.findForward(OLEConstants.MAPPING_BASIC);
82      }
83  
84      /**
85       * @see org.kuali.rice.kns.web.struts.action.KualiDocumentActionBase#docHandler(org.apache.struts.action.ActionMapping,
86       *      org.apache.struts.action.ActionForm, javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
87       */
88      @Override
89      public ActionForward docHandler(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
90          ActionForward forward = super.docHandler(mapping, form, request, response);
91  
92          // Fix for KULEDOCS-1701, update the original voucher type so that the execute method in
93          // this class will call the right block of code
94          AuxiliaryVoucherForm avForm = (AuxiliaryVoucherForm) form;
95          AuxiliaryVoucherDocument avDoc = avForm.getAuxiliaryVoucherDocument();
96          avForm.setOriginalVoucherType(avDoc.getTypeCode());
97  
98          return forward;
99      }
100 }