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.struts.action.ActionForm; 022 import org.apache.struts.action.ActionForward; 023 import org.apache.struts.action.ActionMapping; 024 import org.kuali.kfs.fp.businessobject.CreditCardDetail; 025 import org.kuali.kfs.fp.document.CreditCardReceiptDocument; 026 import org.kuali.kfs.fp.document.validation.impl.CreditCardReceiptDocumentRuleUtil; 027 import org.kuali.kfs.sys.KFSConstants; 028 import org.kuali.kfs.sys.KFSPropertyConstants; 029 import org.kuali.kfs.sys.web.struts.KualiAccountingDocumentActionBase; 030 import org.kuali.rice.kns.util.GlobalVariables; 031 032 /** 033 * This is the action class for the CreditCardReceiptDocument. 034 */ 035 public class CreditCardReceiptAction extends KualiAccountingDocumentActionBase { 036 /** 037 * Adds handling for credit card receipt amount updates. 038 * 039 * @see org.apache.struts.action.Action#execute(org.apache.struts.action.ActionMapping, org.apache.struts.action.ActionForm, 040 * javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse) 041 */ 042 public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { 043 CreditCardReceiptForm ccrForm = (CreditCardReceiptForm) form; 044 045 if (ccrForm.hasDocumentId()) { 046 CreditCardReceiptDocument ccrDoc = ccrForm.getCreditCardReceiptDocument(); 047 048 ccrDoc.setTotalCreditCardAmount(ccrDoc.calculateCreditCardReceiptTotal()); // recalc b/c changes to the amounts could 049 // have happened 050 } 051 052 // proceed as usual 053 return super.execute(mapping, form, request, response); 054 } 055 056 /** 057 * Adds a CreditCardDetail instance created from the current "new creditCardReceipt" line to the document 058 * 059 * @param mapping 060 * @param form 061 * @param request 062 * @param response 063 * @return ActionForward 064 * @throws Exception 065 */ 066 public ActionForward addCreditCardReceipt(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { 067 CreditCardReceiptForm ccrForm = (CreditCardReceiptForm) form; 068 CreditCardReceiptDocument ccrDoc = ccrForm.getCreditCardReceiptDocument(); 069 070 CreditCardDetail newCreditCardReceipt = ccrForm.getNewCreditCardReceipt(); 071 ccrDoc.prepareNewCreditCardReceipt(newCreditCardReceipt); 072 073 // creditCardReceipt business rules 074 boolean rulePassed = validateNewCreditCardReceipt(newCreditCardReceipt); 075 if (rulePassed) { 076 // add creditCardReceipt 077 ccrDoc.addCreditCardReceipt(newCreditCardReceipt); 078 079 // clear the used creditCardReceipt 080 ccrForm.setNewCreditCardReceipt(new CreditCardDetail()); 081 } 082 083 return mapping.findForward(KFSConstants.MAPPING_BASIC); 084 } 085 086 /** 087 * Deletes the selected creditCardReceipt (line) from the document 088 * 089 * @param mapping 090 * @param form 091 * @param request 092 * @param response 093 * @return ActionForward 094 * @throws Exception 095 */ 096 public ActionForward deleteCreditCardReceipt(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { 097 CreditCardReceiptForm ccrForm = (CreditCardReceiptForm) form; 098 CreditCardReceiptDocument ccrDoc = ccrForm.getCreditCardReceiptDocument(); 099 100 int deleteIndex = getLineToDelete(request); 101 // delete creditCardReceipt 102 ccrDoc.removeCreditCardReceipt(deleteIndex); 103 104 return mapping.findForward(KFSConstants.MAPPING_BASIC); 105 } 106 107 /** 108 * This method validates a new credit card receipt detail record. 109 * 110 * @param creditCardReceipt 111 * @return boolean 112 */ 113 protected boolean validateNewCreditCardReceipt(CreditCardDetail creditCardReceipt) { 114 GlobalVariables.getMessageMap().addToErrorPath(KFSPropertyConstants.NEW_CREDIT_CARD_RECEIPT); 115 boolean isValid = CreditCardReceiptDocumentRuleUtil.validateCreditCardReceipt(creditCardReceipt); 116 GlobalVariables.getMessageMap().removeFromErrorPath(KFSPropertyConstants.NEW_CREDIT_CARD_RECEIPT); 117 return isValid; 118 } 119 }