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.CustomerInvoiceWriteoffDocument;
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.web.ui.ExtraButton;
033
034 public class CustomerInvoiceWriteoffDocumentForm extends FinancialSystemTransactionalDocumentFormBase {
035
036 public CustomerInvoiceWriteoffDocumentForm() {
037 super();
038 }
039
040 @Override
041 protected String getDefaultDocumentTypeName() {
042 return "INVW";
043 }
044
045 /**
046 * Setup workflow doc in the document.
047 */
048 @Override
049 public void populate(HttpServletRequest request) {
050
051 //populate document using request
052 super.populate(request);
053
054 CustomerInvoiceWriteoffDocument customerInvoiceWriteoffDocument = (CustomerInvoiceWriteoffDocument)getDocument();
055 String customerInvoiceNumber = customerInvoiceWriteoffDocument.getFinancialDocumentReferenceInvoiceNumber();
056
057 //this will make sure that every action has fully populated invoice
058 if(StringUtils.isNotEmpty(customerInvoiceNumber)){
059 customerInvoiceWriteoffDocument.refreshReferenceObject("customerInvoiceDocument");
060 }
061 }
062
063 /**
064 * Build additional customer credit memo specific buttons and set extraButtons list.
065 *
066 * @return - list of extra buttons to be displayed to the user
067 */
068 @Override
069 public List<ExtraButton> getExtraButtons() {
070
071 // clear out the extra buttons array
072 extraButtons.clear();
073
074 CustomerInvoiceWriteoffDocument writeoffDoc = (CustomerInvoiceWriteoffDocument) getDocument();
075 DocumentHelperService documentHelperService = SpringContext.getBean(DocumentHelperService.class);
076 TransactionalDocumentPresentationController presoController =
077 (TransactionalDocumentPresentationController) documentHelperService.getDocumentPresentationController(writeoffDoc);
078 Set<String> editModes = presoController.getEditModes(writeoffDoc);
079
080 if (editModes.contains(ArAuthorizationConstants.CustomerCreditMemoEditMode.DISPLAY_INIT_TAB)) {
081 String externalImageURL = SpringContext.getBean(KualiConfigurationService.class).getPropertyString(KFSConstants.RICE_EXTERNALIZABLE_IMAGES_URL_KEY);
082 addExtraButton("methodToCall.continueCustomerInvoiceWriteoff", externalImageURL + "buttonsmall_continue.gif", "Continue");
083 addExtraButton("methodToCall.clearInitTab", externalImageURL + "buttonsmall_clear.gif", "Clear");
084 }
085 return extraButtons;
086 }
087
088 /**
089 * Adds a new button to the extra buttons collection.
090 *
091 * @param property - property for button
092 * @param source - location of image
093 * @param altText - alternate text for button if images don't appear
094 */
095 protected void addExtraButton(String property, String source, String altText) {
096
097 ExtraButton newButton = new ExtraButton();
098
099 newButton.setExtraButtonProperty(property);
100 newButton.setExtraButtonSource(source);
101 newButton.setExtraButtonAltText(altText);
102
103 extraButtons.add(newButton);
104 }
105 }