/*
* The Kuali Financial System, a comprehensive financial management system for higher education.
*
* Copyright 2005-2014 The Kuali Foundation
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package org.kuali.kfs.module.ar.document.web.struts;
import java.util.List;
import java.util.Set;
import javax.servlet.http.HttpServletRequest;
import org.apache.commons.lang.StringUtils;
import org.kuali.kfs.module.ar.ArAuthorizationConstants;
import org.kuali.kfs.module.ar.document.CustomerInvoiceWriteoffDocument;
import org.kuali.kfs.sys.KFSConstants;
import org.kuali.kfs.sys.context.SpringContext;
import org.kuali.kfs.sys.document.web.struts.FinancialSystemTransactionalDocumentFormBase;
import org.kuali.rice.core.api.config.property.ConfigurationService;
import org.kuali.rice.kns.document.authorization.TransactionalDocumentPresentationController;
import org.kuali.rice.kns.service.DocumentHelperService;
import org.kuali.rice.kns.web.ui.ExtraButton;
public class CustomerInvoiceWriteoffDocumentForm extends FinancialSystemTransactionalDocumentFormBase {
public CustomerInvoiceWriteoffDocumentForm() {
super();
}
@Override
protected String getDefaultDocumentTypeName() {
return "INVW";
}
/**
* Setup workflow doc in the document.
*/
@Override
public void populate(HttpServletRequest request) {
//populate document using request
super.populate(request);
CustomerInvoiceWriteoffDocument customerInvoiceWriteoffDocument = (CustomerInvoiceWriteoffDocument)getDocument();
String customerInvoiceNumber = customerInvoiceWriteoffDocument.getFinancialDocumentReferenceInvoiceNumber();
//this will make sure that every action has fully populated invoice
if(StringUtils.isNotEmpty(customerInvoiceNumber)){
customerInvoiceWriteoffDocument.refreshReferenceObject("customerInvoiceDocument");
}
}
/**
* Build additional customer credit memo specific buttons and set extraButtons list.
*
* @return - list of extra buttons to be displayed to the user
*
* KRAD Conversion: Performs the creation of extra buttons.
* No data dictionary is involved here.
*/
@Override
public List<ExtraButton> getExtraButtons() {
// clear out the extra buttons array
extraButtons.clear();
CustomerInvoiceWriteoffDocument writeoffDoc = (CustomerInvoiceWriteoffDocument) getDocument();
DocumentHelperService documentHelperService = SpringContext.getBean(DocumentHelperService.class);
TransactionalDocumentPresentationController presoController =
(TransactionalDocumentPresentationController) documentHelperService.getDocumentPresentationController(writeoffDoc);
Set<String> editModes = presoController.getEditModes(writeoffDoc);
if (editModes.contains(ArAuthorizationConstants.CustomerCreditMemoEditMode.DISPLAY_INIT_TAB)) {
String externalImageURL = SpringContext.getBean(ConfigurationService.class).getPropertyValueAsString(KFSConstants.RICE_EXTERNALIZABLE_IMAGES_URL_KEY);
addExtraButton("methodToCall.continueCustomerInvoiceWriteoff", externalImageURL + "buttonsmall_continue.gif", "Continue");
addExtraButton("methodToCall.clearInitTab", externalImageURL + "buttonsmall_clear.gif", "Clear");
}
return extraButtons;
}
/**
* Adds a new button to the extra buttons collection.
*
* @param property - property for button
* @param source - location of image
* @param altText - alternate text for button if images don't appear
*/
protected void addExtraButton(String property, String source, String altText) {
ExtraButton newButton = new ExtraButton();
newButton.setExtraButtonProperty(property);
newButton.setExtraButtonSource(source);
newButton.setExtraButtonAltText(altText);
extraButtons.add(newButton);
}
}