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 }