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 }