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.module.ar.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.module.ar.document.CustomerInvoiceWriteoffDocument; 025 import org.kuali.kfs.module.ar.document.service.CustomerInvoiceWriteoffDocumentService; 026 import org.kuali.kfs.module.ar.document.service.CustomerService; 027 import org.kuali.kfs.module.ar.document.validation.event.ContinueCustomerInvoiceWriteoffDocumentEvent; 028 import org.kuali.kfs.sys.KFSConstants; 029 import org.kuali.kfs.sys.context.SpringContext; 030 import org.kuali.kfs.sys.document.web.struts.FinancialSystemTransactionalDocumentActionBase; 031 import org.kuali.rice.kew.exception.WorkflowException; 032 import org.kuali.rice.kns.service.KualiRuleService; 033 import org.kuali.rice.kns.web.struts.form.KualiDocumentFormBase; 034 035 public class CustomerInvoiceWriteoffDocumentAction extends FinancialSystemTransactionalDocumentActionBase { 036 037 /** 038 * @see org.kuali.rice.kns.web.struts.action.KualiDocumentActionBase#loadDocument(org.kuali.rice.kns.web.struts.form.KualiDocumentFormBase) 039 */ 040 @Override 041 protected void loadDocument(KualiDocumentFormBase kualiDocumentFormBase) throws WorkflowException { 042 super.loadDocument(kualiDocumentFormBase); 043 044 CustomerInvoiceWriteoffDocumentForm form = (CustomerInvoiceWriteoffDocumentForm) kualiDocumentFormBase; 045 CustomerInvoiceWriteoffDocument document = (CustomerInvoiceWriteoffDocument) form.getDocument(); 046 document.populateCustomerNote(); 047 } 048 049 /** 050 * @see org.kuali.rice.kns.web.struts.action.KualiDocumentActionBase#blanketApprove(org.apache.struts.action.ActionMapping, org.apache.struts.action.ActionForm, javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse) 051 */ 052 @Override 053 public ActionForward blanketApprove(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { 054 ActionForward actionForward = super.blanketApprove(mapping, form, request, response); 055 saveCustomerNote(form); 056 return actionForward; 057 } 058 059 /** 060 * @see org.kuali.rice.kns.web.struts.action.KualiDocumentActionBase#route(org.apache.struts.action.ActionMapping, org.apache.struts.action.ActionForm, javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse) 061 */ 062 @Override 063 public ActionForward route(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { 064 ActionForward actionForward = super.route(mapping, form, request, response); 065 saveCustomerNote(form); 066 return actionForward; 067 } 068 069 /** 070 * @see org.kuali.rice.kns.web.struts.action.KualiDocumentActionBase#save(org.apache.struts.action.ActionMapping, org.apache.struts.action.ActionForm, javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse) 071 */ 072 @Override 073 public ActionForward save(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { 074 ActionForward actionForward = super.save(mapping, form, request, response); 075 saveCustomerNote(form); 076 return actionForward; 077 } 078 079 080 protected void saveCustomerNote(ActionForm form) { 081 CustomerService customerService = SpringContext.getBean(CustomerService.class); 082 083 CustomerInvoiceWriteoffDocumentForm customerInvoiceWriteoffDocumentForm = (CustomerInvoiceWriteoffDocumentForm) form; 084 CustomerInvoiceWriteoffDocument customerInvoiceWriteoffDocument = (CustomerInvoiceWriteoffDocument) customerInvoiceWriteoffDocumentForm.getDocument(); 085 086 String customerNumber = customerInvoiceWriteoffDocument.getCustomerInvoiceDocument().getCustomer().getCustomerNumber(); 087 String customerNote = customerInvoiceWriteoffDocument.getCustomerNote(); 088 089 customerService.createCustomerNote(customerNumber, customerNote); 090 } 091 092 /** 093 * Do initialization for a new customer invoice writeoff document 094 * 095 * TODO This initation stuff does the exact same thing as customer credit memo. this should really be abstracted out... 096 * 097 * @see org.kuali.rice.kns.web.struts.action.KualiDocumentActionBase#createDocument(org.kuali.rice.kns.web.struts.form.KualiDocumentFormBase) 098 */ 099 @Override 100 protected void createDocument(KualiDocumentFormBase kualiDocumentFormBase) throws WorkflowException { 101 super.createDocument(kualiDocumentFormBase); 102 ((CustomerInvoiceWriteoffDocument) kualiDocumentFormBase.getDocument()).initiateDocument(); 103 } 104 105 /** 106 * Clears out init tab. 107 * 108 * @param mapping An ActionMapping 109 * @param form An ActionForm 110 * @param request The HttpServletRequest 111 * @param response The HttpServletResponse 112 * @throws Exception 113 * @return An ActionForward 114 */ 115 public ActionForward clearInitTab(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { 116 117 CustomerInvoiceWriteoffDocumentForm customerInvoiceWriteoffDocumentForm = (CustomerInvoiceWriteoffDocumentForm) form; 118 CustomerInvoiceWriteoffDocument customerInvoiceWriteoffDocument = (CustomerInvoiceWriteoffDocument) customerInvoiceWriteoffDocumentForm.getDocument(); 119 customerInvoiceWriteoffDocument.clearInitFields(); 120 121 return super.refresh(mapping, form, request, response); 122 } 123 124 /** 125 * Handles continue request. This request comes from the initial screen which gives ref. invoice number. 126 * Based on that, the customer credit memo is initially populated. 127 * 128 * @param mapping An ActionMapping 129 * @param form An ActionForm 130 * @param request The HttpServletRequest 131 * @param response The HttpServletResponse 132 * @throws Exception 133 * @return An ActionForward 134 */ 135 public ActionForward continueCustomerInvoiceWriteoff(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { 136 137 CustomerInvoiceWriteoffDocumentForm customerInvoiceWriteoffDocumentForm = (CustomerInvoiceWriteoffDocumentForm) form; 138 CustomerInvoiceWriteoffDocument customerInvoiceWriteoffDocument = (CustomerInvoiceWriteoffDocument) customerInvoiceWriteoffDocumentForm.getDocument(); 139 140 String errorPath = KFSConstants.DOCUMENT_PROPERTY_NAME; 141 boolean rulePassed = SpringContext.getBean(KualiRuleService.class).applyRules(new ContinueCustomerInvoiceWriteoffDocumentEvent(errorPath,customerInvoiceWriteoffDocument)); 142 if (rulePassed){ 143 SpringContext.getBean(CustomerInvoiceWriteoffDocumentService.class).setupDefaultValuesForNewCustomerInvoiceWriteoffDocument(customerInvoiceWriteoffDocument); 144 } 145 146 return mapping.findForward(KFSConstants.MAPPING_BASIC); 147 } 148 149 }