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.purap.document.web.struts; 017 018 import java.math.BigDecimal; 019 import java.util.List; 020 021 import javax.servlet.http.HttpServletRequest; 022 023 import org.kuali.kfs.integration.purap.CapitalAssetLocation; 024 import org.kuali.kfs.module.purap.PurapWorkflowConstants.RequisitionDocument.NodeDetailEnum; 025 import org.kuali.kfs.module.purap.businessobject.PurApItem; 026 import org.kuali.kfs.module.purap.businessobject.RequisitionAccount; 027 import org.kuali.kfs.module.purap.businessobject.RequisitionCapitalAssetLocation; 028 import org.kuali.kfs.module.purap.businessobject.RequisitionItem; 029 import org.kuali.kfs.module.purap.businessobject.RequisitionItemCapitalAsset; 030 import org.kuali.kfs.module.purap.document.RequisitionDocument; 031 import org.kuali.rice.kns.util.KNSConstants; 032 import org.kuali.rice.kns.util.ObjectUtils; 033 import org.kuali.rice.kns.web.ui.ExtraButton; 034 import org.kuali.rice.kns.web.ui.HeaderField; 035 import org.kuali.rice.kns.workflow.service.KualiWorkflowDocument; 036 037 /** 038 * Struts Action Form for Requisition document. 039 */ 040 public class RequisitionForm extends PurchasingFormBase { 041 042 protected String shopUrl; 043 044 /** 045 * Constructs a RequisitionForm instance and sets up the appropriately casted document. 046 */ 047 public RequisitionForm() { 048 super(); 049 } 050 051 @Override 052 protected String getDefaultDocumentTypeName() { 053 return "REQS"; 054 } 055 056 public RequisitionDocument getRequisitionDocument() { 057 return (RequisitionDocument) getDocument(); 058 } 059 060 public void setRequisitionDocument(RequisitionDocument requisitionDocument) { 061 setDocument(requisitionDocument); 062 } 063 064 public void populateHeaderFields(KualiWorkflowDocument workflowDocument) { 065 super.populateHeaderFields(workflowDocument); 066 if (ObjectUtils.isNotNull(this.getRequisitionDocument().getPurapDocumentIdentifier())) { 067 getDocInfo().add(new HeaderField("DataDictionary.RequisitionDocument.attributes.purapDocumentIdentifier", ((RequisitionDocument) this.getDocument()).getPurapDocumentIdentifier().toString())); 068 } 069 else { 070 getDocInfo().add(new HeaderField("DataDictionary.RequisitionDocument.attributes.purapDocumentIdentifier", "Not Available")); 071 } 072 if (ObjectUtils.isNotNull(this.getRequisitionDocument().getStatus())) { 073 getDocInfo().add(new HeaderField("DataDictionary.RequisitionDocument.attributes.statusCode", ((RequisitionDocument) this.getDocument()).getStatus().getStatusDescription())); 074 } 075 else { 076 getDocInfo().add(new HeaderField("DataDictionary.RequisitionDocument.attributes.statusCode", "Not Available")); 077 } 078 } 079 080 /** 081 * @see org.kuali.rice.kns.web.struts.form.KualiDocumentFormBase#shouldMethodToCallParameterBeUsed(java.lang.String, java.lang.String, javax.servlet.http.HttpServletRequest) 082 */ 083 @Override 084 public boolean shouldMethodToCallParameterBeUsed(String methodToCallParameterName, String methodToCallParameterValue, HttpServletRequest request) { 085 if (KNSConstants.DISPATCH_REQUEST_PARAMETER.equals(methodToCallParameterName) && 086 ("displayB2BRequisition".equals(methodToCallParameterValue))) { 087 return true; 088 } 089 return super.shouldMethodToCallParameterBeUsed(methodToCallParameterName, methodToCallParameterValue, request); 090 } 091 092 @Override 093 public Class getCapitalAssetLocationClass() { 094 return RequisitionCapitalAssetLocation.class; 095 } 096 097 @Override 098 public Class getItemCapitalAssetClass() { 099 return RequisitionItemCapitalAsset.class; 100 } 101 102 /** 103 * @see org.kuali.kfs.module.purap.document.web.struts.PurchasingFormBase#setupNewPurchasingItemLine() 104 */ 105 @Override 106 public PurApItem setupNewPurchasingItemLine() { 107 return new RequisitionItem(); 108 } 109 110 /** 111 * @see org.kuali.kfs.module.purap.document.web.struts.PurchasingFormBase#setupNewPurchasingAccountingLine() 112 */ 113 @Override 114 public RequisitionAccount setupNewPurchasingAccountingLine() { 115 return new RequisitionAccount(); 116 } 117 118 /** 119 * @see org.kuali.kfs.module.purap.document.web.struts.PurchasingFormBase#setupNewAccountDistributionAccountingLine() 120 */ 121 @Override 122 public RequisitionAccount setupNewAccountDistributionAccountingLine() { 123 RequisitionAccount account = setupNewPurchasingAccountingLine(); 124 account.setAccountLinePercent(new BigDecimal(100)); 125 return account; 126 } 127 128 @Override 129 public CapitalAssetLocation setupNewPurchasingCapitalAssetLocationLine() { 130 return new RequisitionCapitalAssetLocation(); 131 } 132 133 public String getShopUrl() { 134 return shopUrl; 135 } 136 137 public void setShopUrl(String shopUrl) { 138 this.shopUrl = shopUrl; 139 } 140 141 @Override 142 public List<ExtraButton> getExtraButtons() { 143 super.getExtraButtons(); 144 for (int i = 0; i < extraButtons.size(); i++) { 145 ExtraButton extraButton = extraButtons.get(i); 146 if ("methodToCall.calculate".equalsIgnoreCase(extraButton.getExtraButtonProperty()) ){ 147 if(canUserCalculate() == false){ 148 extraButtons.remove(i); 149 return extraButtons; 150 } 151 } 152 } 153 return extraButtons; 154 } 155 156 @Override 157 public boolean canUserCalculate(){ 158 return documentActions != null && documentActions.containsKey(KNSConstants.KUALI_ACTION_CAN_EDIT) && 159 !getRequisitionDocument().isDocumentStoppedInRouteNode(NodeDetailEnum.ORG_REVIEW); 160 } 161 }