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 java.util.List; 019 import java.util.Set; 020 021 import javax.servlet.http.HttpServletRequest; 022 023 import org.apache.commons.lang.StringUtils; 024 import org.kuali.kfs.module.ar.ArAuthorizationConstants; 025 import org.kuali.kfs.module.ar.document.CustomerCreditMemoDocument; 026 import org.kuali.kfs.sys.KFSConstants; 027 import org.kuali.kfs.sys.context.SpringContext; 028 import org.kuali.kfs.sys.document.web.struts.FinancialSystemTransactionalDocumentFormBase; 029 import org.kuali.rice.kns.document.authorization.TransactionalDocumentPresentationController; 030 import org.kuali.rice.kns.service.DocumentHelperService; 031 import org.kuali.rice.kns.service.KualiConfigurationService; 032 import org.kuali.rice.kns.util.KNSConstants; 033 import org.kuali.rice.kns.web.ui.ExtraButton; 034 035 public class CustomerCreditMemoDocumentForm extends FinancialSystemTransactionalDocumentFormBase { 036 037 public CustomerCreditMemoDocumentForm() { 038 super(); 039 } 040 041 @Override 042 protected String getDefaultDocumentTypeName() { 043 return "CRM"; 044 } 045 046 /** 047 * Setup workflow doc in the document. 048 */ 049 @Override 050 public void populate(HttpServletRequest request) { 051 052 //populate document using request 053 super.populate(request); 054 055 CustomerCreditMemoDocument customerCreditMemoDocument = (CustomerCreditMemoDocument)getDocument(); 056 String customerInvoiceNumber = customerCreditMemoDocument.getFinancialDocumentReferenceInvoiceNumber(); 057 058 //this will make sure that every action has fully populated invoice 059 if(StringUtils.isNotEmpty(customerInvoiceNumber) /*&& customerCreditMemoDocument.getInvoice() == null*/){ 060 customerCreditMemoDocument.refreshReferenceObject("invoice"); 061 } 062 } 063 064 /** 065 * Build additional customer credit memo specific buttons and set extraButtons list. 066 * 067 * @return - list of extra buttons to be displayed to the user 068 */ 069 @Override 070 public List<ExtraButton> getExtraButtons() { 071 072 // clear out the extra buttons array 073 extraButtons.clear(); 074 075 CustomerCreditMemoDocument creditMemoDoc = (CustomerCreditMemoDocument) getDocument(); 076 DocumentHelperService docHelperService = SpringContext.getBean(DocumentHelperService.class); 077 TransactionalDocumentPresentationController presoController = 078 (TransactionalDocumentPresentationController) docHelperService.getDocumentPresentationController(creditMemoDoc); 079 Set<String> editModes = presoController.getEditModes(creditMemoDoc); 080 081 // special buttons for the first 'init' screen 082 if (editModes.contains(ArAuthorizationConstants.CustomerCreditMemoEditMode.DISPLAY_INIT_TAB)) { 083 String externalImageURL = SpringContext.getBean(KualiConfigurationService.class).getPropertyString(KFSConstants.RICE_EXTERNALIZABLE_IMAGES_URL_KEY); 084 addExtraButton("methodToCall.continueCreditMemo", externalImageURL + "buttonsmall_continue.gif", "Continue"); 085 addExtraButton("methodToCall.clearInitTab", externalImageURL + "buttonsmall_clear.gif", "Clear"); 086 } 087 088 // show the print button if appropriate 089 if (editModes.contains(ArAuthorizationConstants.CustomerCreditMemoEditMode.DISPLAY_PRINT_BUTTON)) { 090 String printButtonURL = SpringContext.getBean(KualiConfigurationService.class).getPropertyString(KFSConstants.EXTERNALIZABLE_IMAGES_URL_KEY); 091 addExtraButton("methodToCall.print", printButtonURL + "buttonsmall_genprintfile.gif", "Print"); 092 } 093 094 return extraButtons; 095 } 096 097 /** 098 * Adds a new button to the extra buttons collection. 099 * 100 * @param property - property for button 101 * @param source - location of image 102 * @param altText - alternate text for button if images don't appear 103 */ 104 protected void addExtraButton(String property, String source, String altText) { 105 106 ExtraButton newButton = new ExtraButton(); 107 108 newButton.setExtraButtonProperty(property); 109 newButton.setExtraButtonSource(source); 110 newButton.setExtraButtonAltText(altText); 111 112 extraButtons.add(newButton); 113 } 114 115 /** 116 * @see org.kuali.rice.kns.web.struts.form.KualiDocumentFormBase#shouldMethodToCallParameterBeUsed(java.lang.String, java.lang.String, javax.servlet.http.HttpServletRequest) 117 */ 118 @Override 119 public boolean shouldMethodToCallParameterBeUsed(String methodToCallParameterName, String methodToCallParameterValue, HttpServletRequest request) { 120 if (KNSConstants.DISPATCH_REQUEST_PARAMETER.equals(methodToCallParameterName) && "printCreditMemoPDF".equals(methodToCallParameterValue)) { 121 return true; 122 } 123 return super.shouldMethodToCallParameterBeUsed(methodToCallParameterName, methodToCallParameterValue, request); 124 } 125 126 }