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 }