001/* 002 * Copyright 2006-2008 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 */ 016package org.kuali.ole.module.purap.businessobject; 017 018import org.kuali.ole.module.purap.PurapParameterConstants; 019import org.kuali.ole.module.purap.document.ContractManagerAssignmentDocument; 020import org.kuali.ole.module.purap.document.RequisitionDocument; 021import org.kuali.ole.sys.OLEPropertyConstants; 022import org.kuali.ole.sys.context.SpringContext; 023import org.kuali.ole.vnd.businessobject.CommodityContractManager; 024import org.kuali.ole.vnd.businessobject.ContractManager; 025import org.kuali.rice.core.web.format.DateViewDateObjectFormatter; 026import org.kuali.rice.core.web.format.Formatter; 027import org.kuali.rice.coreservice.framework.parameter.ParameterService; 028import org.kuali.rice.kew.api.exception.WorkflowException; 029import org.kuali.rice.krad.bo.PersistableBusinessObjectBase; 030 031import java.util.LinkedHashMap; 032import java.util.List; 033 034/** 035 * Assign Contract Manager Detail Business Object. Defines attributes in Assign Contract Manager tab. 036 */ 037public class ContractManagerAssignmentDetail extends PersistableBusinessObjectBase { 038 039 private String documentNumber; 040 private Integer requisitionIdentifier; 041 private Integer contractManagerCode; 042 private String deliveryCampusCode; 043 private String vendorName; 044 045 private RequisitionDocument requisition; 046 private ContractManager contractManager; 047 private ContractManagerAssignmentDocument contractManagerAssignmentDocument; 048 049 private String createDate; 050 051 /** 052 * Default constructor. 053 */ 054 public ContractManagerAssignmentDetail() { 055 056 } 057 058 /** 059 * Constructs a ContractManagerAssignmentDetail object from an existing ContractManagerAssignmentDocument object. 060 * 061 * @param acmDocument the ContractManagerAssignmentDocument to copy from. 062 * @param requisitionDocument reference to the related requisition document. 063 */ 064 public ContractManagerAssignmentDetail(ContractManagerAssignmentDocument acmDocument, RequisitionDocument requisitionDocument) { 065 this.documentNumber = acmDocument.getDocumentNumber(); 066 this.contractManagerAssignmentDocument = acmDocument; 067 this.requisition = requisitionDocument; 068 this.requisitionIdentifier = requisitionDocument.getPurapDocumentIdentifier(); 069 this.deliveryCampusCode = requisitionDocument.getDeliveryCampusCode(); 070 this.vendorName = requisitionDocument.getVendorName(); 071 } 072 073 public String getDocumentNumber() { 074 return documentNumber; 075 } 076 077 public void setDocumentNumber(String documentNumber) { 078 this.documentNumber = documentNumber; 079 } 080 081 public Integer getRequisitionIdentifier() { 082 return requisitionIdentifier; 083 } 084 085 public void setRequisitionIdentifier(Integer requisitionIdentifier) { 086 this.requisitionIdentifier = requisitionIdentifier; 087 } 088 089 /** 090 * Returns the default contract manager code if the first line item of the 091 * requisition contains commodity codes with one contract manager whose campus 092 * code matches the delivery campus code on the requisition. If there are more 093 * than one contract managers of the same campus code as the delivery code, we'll 094 * return null. If the first line item of the requisition does not contain commodity 095 * code, or contain commodity code that does not have contract manager, we'll 096 * also return null 097 * 098 * @return Integer the default contract manager code if applicable, or null. 099 */ 100 public Integer getContractManagerCode() { 101 String paramName = PurapParameterConstants.ENABLE_DEFAULT_CONTRACT_MANAGER_IND; 102 String paramValue = SpringContext.getBean(ParameterService.class).getParameterValueAsString(ContractManagerAssignmentDocument.class, paramName); 103 if (paramValue.equals("Y") && (contractManagerCode == null) && getFirstLineItem().getCommodityCode() != null) { 104 List<CommodityContractManager> commodityContractManagers = getFirstLineItem().getCommodityCode().getCommodityContractManagers(); 105 if (commodityContractManagers != null && commodityContractManagers.size() > 0) { 106 int count = 0; 107 Integer matchingContractManagerCode = null; 108 for (CommodityContractManager commodityContractManager : commodityContractManagers) { 109 if (this.getRequisition().getDeliveryCampusCode().equals(commodityContractManager.getCampusCode())) { 110 count = count + 1; 111 matchingContractManagerCode = commodityContractManager.getContractManagerCode(); 112 } 113 } 114 if (count == 1) { 115 setContractManagerCode(matchingContractManagerCode); 116 return contractManagerCode; 117 } 118 } 119 } 120 return contractManagerCode; 121 } 122 123 public void setContractManagerCode(Integer contractManagerCode) { 124 this.contractManagerCode = contractManagerCode; 125 } 126 127 public ContractManager getContractManager() { 128 return contractManager; 129 } 130 131 /** 132 * @deprecated 133 */ 134 public void setContractManager(ContractManager contractManager) { 135 this.contractManager = contractManager; 136 } 137 138 public RequisitionDocument getRequisition() { 139 return requisition; 140 } 141 142 /** 143 * @deprecated 144 */ 145 public void setRequisition(RequisitionDocument requisition) { 146 this.requisition = requisition; 147 } 148 149 public ContractManagerAssignmentDocument getContractManagerAssignmentDocument() { 150 return contractManagerAssignmentDocument; 151 } 152 153 public void setContractManagerAssignmentDocument(ContractManagerAssignmentDocument contractManagerAssignmentDocument) { 154 this.contractManagerAssignmentDocument = contractManagerAssignmentDocument; 155 } 156 157 /** 158 * Returns the formatted string of the create date. If the createDate is currently null, we'll 159 * get the createDate from the workflowDocument. 160 * 161 * @return 162 * @throws WorkflowException 163 */ 164 public String getCreateDate() throws WorkflowException { 165 if (createDate == null) { 166 Formatter formatter = new DateViewDateObjectFormatter(); 167 createDate = (String) formatter.format(getRequisition().getFinancialSystemDocumentHeader().getWorkflowDocument().getDateCreated().toDate()); 168 } 169 return createDate; 170 } 171 172 public void setCreateDate(String createDate) { 173 this.createDate = createDate; 174 } 175 176 private PurchasingItemBase getFirstLineItem() { 177 return (PurchasingItemBase) this.getRequisition().getItem(0); 178 } 179 180 public String getDeliveryCampusCode() { 181 return deliveryCampusCode; 182 } 183 184 public void setDeliveryCampusCode(String deliveryCampusCode) { 185 this.deliveryCampusCode = deliveryCampusCode; 186 } 187 188 public String getVendorName() { 189 return vendorName; 190 } 191 192 public void setVendorName(String vendorName) { 193 this.vendorName = vendorName; 194 } 195 196 /** 197 * @see org.kuali.rice.krad.bo.BusinessObjectBase#toStringMapper() 198 */ 199 protected LinkedHashMap toStringMapper_RICE20_REFACTORME() { 200 LinkedHashMap m = new LinkedHashMap(); 201 m.put(OLEPropertyConstants.DOCUMENT_NUMBER, this.documentNumber); 202 if (this.requisitionIdentifier != null) { 203 m.put("requisitionIdentifier", this.requisitionIdentifier.toString()); 204 } 205 return m; 206 } 207 208}