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.authorization; 017 018 import java.util.Set; 019 020 import org.apache.commons.lang.StringUtils; 021 import org.kuali.kfs.module.ar.ArAuthorizationConstants; 022 import org.kuali.kfs.module.ar.ArConstants; 023 import org.kuali.kfs.module.ar.document.CustomerCreditMemoDocument; 024 import org.kuali.kfs.module.ar.document.CustomerInvoiceDocument; 025 import org.kuali.kfs.sys.context.SpringContext; 026 import org.kuali.kfs.sys.document.authorization.FinancialSystemTransactionalDocumentPresentationControllerBase; 027 import org.kuali.rice.kns.document.Document; 028 import org.kuali.rice.kns.service.ParameterService; 029 import org.kuali.rice.kns.util.ObjectUtils; 030 import org.kuali.rice.kns.workflow.service.KualiWorkflowDocument; 031 032 public class CustomerCreditMemoDocumentPresentationController extends FinancialSystemTransactionalDocumentPresentationControllerBase { 033 034 @Override 035 public Set<String> getEditModes(Document document) { 036 037 Set<String> editModes = super.getEditModes(document); 038 CustomerCreditMemoDocument customerCreditMemoDocument = (CustomerCreditMemoDocument) document; 039 040 if (StringUtils.equals(customerCreditMemoDocument.getStatusCode(), ArConstants.CustomerCreditMemoStatuses.INITIATE)) { 041 editModes.add(ArAuthorizationConstants.CustomerCreditMemoEditMode.DISPLAY_INIT_TAB); 042 } 043 044 boolean salesTaxInd = SpringContext.getBean(ParameterService.class).getIndicatorParameter("KFS-AR", "Document", ArConstants.ENABLE_SALES_TAX_IND); 045 if (salesTaxInd) { 046 editModes.add(ArAuthorizationConstants.SALES_TAX_ENABLED); 047 } 048 049 String receivableOffsetOption = SpringContext.getBean(ParameterService.class).getParameterValue(CustomerInvoiceDocument.class, ArConstants.GLPE_RECEIVABLE_OFFSET_GENERATION_METHOD); 050 if (ArConstants.GLPE_RECEIVABLE_OFFSET_GENERATION_METHOD_FAU.equals(receivableOffsetOption)){ 051 editModes.add(ArAuthorizationConstants.CustomerInvoiceDocumentEditMode.SHOW_RECEIVABLE_FAU); 052 } 053 054 KualiWorkflowDocument workflowDocument = document.getDocumentHeader().getWorkflowDocument(); 055 if (ObjectUtils.isNotNull(workflowDocument) && (workflowDocument.stateIsApproved() || workflowDocument.stateIsProcessed() || workflowDocument.stateIsFinal())) { 056 editModes.add(ArAuthorizationConstants.CustomerCreditMemoEditMode.DISPLAY_PRINT_BUTTON); 057 } 058 059 return editModes; 060 } 061 062 @Override 063 protected boolean canCancel(Document document) { 064 return !isDocStatusCodeInitiated(document); 065 } 066 067 @Override 068 protected boolean canSave(Document document) { 069 return !isDocStatusCodeInitiated(document); 070 } 071 072 /** 073 * Returns true if the document passed in is in initiated status. 074 */ 075 protected boolean isDocStatusCodeInitiated(Document document) { 076 CustomerCreditMemoDocument creditMemoDoc = (CustomerCreditMemoDocument) document; 077 return (StringUtils.equals(creditMemoDoc.getStatusCode(), ArConstants.CustomerCreditMemoStatuses.INITIATE)); 078 } 079 080 }