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 }