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
017 package org.kuali.kfs.vnd.businessobject;
018
019 import java.sql.Date;
020 import java.util.LinkedHashMap;
021 import java.util.List;
022
023 import org.apache.commons.lang.StringUtils;
024 import org.apache.commons.lang.builder.EqualsBuilder;
025 import org.apache.log4j.Logger;
026 import org.kuali.kfs.sys.context.SpringContext;
027 import org.kuali.kfs.vnd.document.service.VendorService;
028 import org.kuali.rice.kns.bo.Inactivateable;
029 import org.kuali.rice.kns.bo.PersistableBusinessObjectBase;
030 import org.kuali.rice.kns.util.KualiDecimal;
031 import org.kuali.rice.kns.util.ObjectUtils;
032 import org.kuali.rice.kns.util.TypedArrayList;
033
034 /**
035 * Purchasing Contracts with specific Vendors.
036 */
037 public class VendorContract extends PersistableBusinessObjectBase implements VendorRoutingComparable, Inactivateable {
038 private static Logger LOG = Logger.getLogger(VendorContract.class);
039
040 private Integer vendorContractGeneratedIdentifier;
041 private Integer vendorHeaderGeneratedIdentifier;
042 private Integer vendorDetailAssignedIdentifier;
043 private String vendorNumber; // not persisted in db, only for lookup page
044 private String vendorContractName;
045 private String vendorContractDescription;
046 private String vendorCampusCode;
047 private Date vendorContractBeginningDate;
048 private Date vendorContractEndDate;
049 private Integer contractManagerCode;
050 private String purchaseOrderCostSourceCode;
051 private String vendorPaymentTermsCode;
052 private String vendorShippingPaymentTermsCode;
053 private String vendorShippingTitleCode;
054 private Date vendorContractExtensionDate;
055 private Boolean vendorB2bIndicator;
056 private KualiDecimal organizationAutomaticPurchaseOrderLimit;
057 private boolean active;
058
059 private List<VendorContractOrganization> vendorContractOrganizations;
060
061 private VendorDetail vendorDetail;
062 private CampusParameter vendorCampus;
063 private ContractManager contractManager;
064 private PurchaseOrderCostSource purchaseOrderCostSource;
065 private PaymentTermType vendorPaymentTerms;
066 private ShippingPaymentTerms vendorShippingPaymentTerms;
067 private ShippingTitle vendorShippingTitle;
068
069 /**
070 * Default constructor.
071 */
072 public VendorContract() {
073 vendorContractOrganizations = new TypedArrayList(VendorContractOrganization.class);
074 }
075
076 public Integer getVendorContractGeneratedIdentifier() {
077
078 return vendorContractGeneratedIdentifier;
079 }
080
081 public void setVendorContractGeneratedIdentifier(Integer vendorContractGeneratedIdentifier) {
082 this.vendorContractGeneratedIdentifier = vendorContractGeneratedIdentifier;
083 }
084
085 public Integer getVendorHeaderGeneratedIdentifier() {
086
087 return vendorHeaderGeneratedIdentifier;
088 }
089
090 public void setVendorHeaderGeneratedIdentifier(Integer vendorHeaderGeneratedIdentifier) {
091 this.vendorHeaderGeneratedIdentifier = vendorHeaderGeneratedIdentifier;
092 }
093
094 public Integer getVendorDetailAssignedIdentifier() {
095
096 return vendorDetailAssignedIdentifier;
097 }
098
099 public void setVendorDetailAssignedIdentifier(Integer vendorDetailAssignedIdentifier) {
100 this.vendorDetailAssignedIdentifier = vendorDetailAssignedIdentifier;
101 }
102
103 public String getVendorContractName() {
104
105 return vendorContractName;
106 }
107
108 public void setVendorContractName(String vendorContractName) {
109 this.vendorContractName = vendorContractName;
110 }
111
112 public String getVendorContractDescription() {
113
114 return vendorContractDescription;
115 }
116
117 public void setVendorContractDescription(String vendorContractDescription) {
118 this.vendorContractDescription = vendorContractDescription;
119 }
120
121 public String getVendorCampusCode() {
122
123 return vendorCampusCode;
124 }
125
126 public void setVendorCampusCode(String vendorCampusCode) {
127 this.vendorCampusCode = vendorCampusCode;
128 }
129
130 public Date getVendorContractBeginningDate() {
131
132 return vendorContractBeginningDate;
133 }
134
135 public void setVendorContractBeginningDate(Date vendorContractBeginningDate) {
136 this.vendorContractBeginningDate = vendorContractBeginningDate;
137 }
138
139 public Date getVendorContractEndDate() {
140
141 return vendorContractEndDate;
142 }
143
144 public void setVendorContractEndDate(Date vendorContractEndDate) {
145 this.vendorContractEndDate = vendorContractEndDate;
146 }
147
148 public Integer getContractManagerCode() {
149
150 return contractManagerCode;
151 }
152
153 public void setContractManagerCode(Integer contractManagerCode) {
154 this.contractManagerCode = contractManagerCode;
155 }
156
157 public String getPurchaseOrderCostSourceCode() {
158
159 return purchaseOrderCostSourceCode;
160 }
161
162 public void setPurchaseOrderCostSourceCode(String purchaseOrderCostSourceCode) {
163 this.purchaseOrderCostSourceCode = purchaseOrderCostSourceCode;
164 }
165
166 public String getVendorPaymentTermsCode() {
167
168 return vendorPaymentTermsCode;
169 }
170
171 public void setVendorPaymentTermsCode(String vendorPaymentTermsCode) {
172 this.vendorPaymentTermsCode = vendorPaymentTermsCode;
173 }
174
175 public String getVendorShippingPaymentTermsCode() {
176
177 return vendorShippingPaymentTermsCode;
178 }
179
180 public void setVendorShippingPaymentTermsCode(String vendorShippingPaymentTermsCode) {
181 this.vendorShippingPaymentTermsCode = vendorShippingPaymentTermsCode;
182 }
183
184 public String getVendorShippingTitleCode() {
185
186 return vendorShippingTitleCode;
187 }
188
189 public void setVendorShippingTitleCode(String vendorShippingTitleCode) {
190 this.vendorShippingTitleCode = vendorShippingTitleCode;
191 }
192
193 public Date getVendorContractExtensionDate() {
194
195 return vendorContractExtensionDate;
196 }
197
198 public void setVendorContractExtensionDate(Date vendorContractExtensionDate) {
199 this.vendorContractExtensionDate = vendorContractExtensionDate;
200 }
201
202 public Boolean getVendorB2bIndicator() {
203
204 return vendorB2bIndicator;
205 }
206
207 public void setVendorB2bIndicator(Boolean vendorB2bIndicator) {
208 this.vendorB2bIndicator = vendorB2bIndicator;
209 }
210
211 public KualiDecimal getOrganizationAutomaticPurchaseOrderLimit() {
212
213 return organizationAutomaticPurchaseOrderLimit;
214 }
215
216 public void setOrganizationAutomaticPurchaseOrderLimit(KualiDecimal organizationAutomaticPurchaseOrderLimit) {
217 this.organizationAutomaticPurchaseOrderLimit = organizationAutomaticPurchaseOrderLimit;
218 }
219
220 public boolean isActive() {
221
222 return active;
223 }
224
225 public void setActive(boolean active) {
226 this.active = active;
227 }
228
229 public VendorDetail getVendorDetail() {
230
231 return vendorDetail;
232 }
233
234 /**
235 * Sets the vendorDetail attribute.
236 *
237 * @param vendorDetail The vendorDetail to set.
238 * @deprecated
239 */
240 public void setVendorDetail(VendorDetail vendorDetail) {
241 this.vendorDetail = vendorDetail;
242 }
243
244
245 public CampusParameter getVendorCampus() {
246 return vendorCampus;
247 }
248
249 /**
250 * Sets the vendorCampus attribute.
251 *
252 * @param vendorCampus The vendorCampus to set.
253 * @deprecated
254 */
255 public void setVendorCampus(CampusParameter vendorCampus) {
256 this.vendorCampus = vendorCampus;
257 }
258
259 public ContractManager getContractManager() {
260
261 return contractManager;
262 }
263
264 /**
265 * Sets the contractManager attribute.
266 *
267 * @param contractManager The contractManager to set.
268 * @deprecated
269 */
270 public void setContractManager(ContractManager contractManager) {
271 this.contractManager = contractManager;
272 }
273
274 public PurchaseOrderCostSource getPurchaseOrderCostSource() {
275
276 return purchaseOrderCostSource;
277 }
278
279 /**
280 * Sets the purchaseOrderCostSource attribute.
281 *
282 * @param purchaseOrderCostSource The purchaseOrderCostSource to set.
283 * @deprecated
284 */
285 public void setPurchaseOrderCostSource(PurchaseOrderCostSource purchaseOrderCostSource) {
286 this.purchaseOrderCostSource = purchaseOrderCostSource;
287 }
288
289 public PaymentTermType getVendorPaymentTerms() {
290
291 return vendorPaymentTerms;
292 }
293
294 /**
295 * Sets the vendorPaymentTerms attribute.
296 *
297 * @param vendorPaymentTerms The vendorPaymentTerms to set.
298 * @deprecated
299 */
300 public void setVendorPaymentTerms(PaymentTermType vendorPaymentTerms) {
301 this.vendorPaymentTerms = vendorPaymentTerms;
302 }
303
304 public ShippingPaymentTerms getVendorShippingPaymentTerms() {
305
306 return vendorShippingPaymentTerms;
307 }
308
309 /**
310 * Sets the vendorShippingPaymentTerms attribute.
311 *
312 * @param vendorShippingPaymentTerms The vendorShippingPaymentTerms to set.
313 * @deprecated
314 */
315 public void setVendorShippingPaymentTerms(ShippingPaymentTerms vendorShippingPaymentTerms) {
316 this.vendorShippingPaymentTerms = vendorShippingPaymentTerms;
317 }
318
319 public ShippingTitle getVendorShippingTitle() {
320
321 return vendorShippingTitle;
322 }
323
324 /**
325 * Sets the vendorShippingTitle attribute.
326 *
327 * @param vendorShippingTitle The vendorShippingTitle to set.
328 * @deprecated
329 */
330 public void setVendorShippingTitle(ShippingTitle vendorShippingTitle) {
331 this.vendorShippingTitle = vendorShippingTitle;
332 }
333
334 public List<VendorContractOrganization> getVendorContractOrganizations() {
335
336 return vendorContractOrganizations;
337 }
338
339 public void setVendorContractOrganizations(List<VendorContractOrganization> vendorContractOrganizations) {
340 this.vendorContractOrganizations = vendorContractOrganizations;
341 }
342
343 /**
344 * A concatenation of the vendorHeaderGeneratedIdentifier, a dash, and the vendorDetailAssignedIdentifier
345 *
346 * @return Returns the vendorNumber.
347 */
348 public String getVendorNumber() {
349 String headerId = "";
350 String detailId = "";
351 String vendorNumber = "";
352 if (ObjectUtils.isNotNull(this.vendorHeaderGeneratedIdentifier)) {
353 headerId = this.vendorHeaderGeneratedIdentifier.toString();
354 }
355 if (ObjectUtils.isNotNull(this.vendorDetailAssignedIdentifier)) {
356 detailId = this.vendorDetailAssignedIdentifier.toString();
357 }
358 if (!StringUtils.isEmpty(headerId) && !StringUtils.isEmpty(detailId)) {
359 vendorNumber = headerId + "-" + detailId;
360 }
361
362 return vendorNumber;
363 }
364
365 /**
366 * Sets the vendorNumber attribute value.
367 *
368 * @param vendorNumber The vendorNumber to set.
369 */
370 public void setVendorNumber(String vendorNumber) {
371 if (!StringUtils.isEmpty(vendorNumber)) {
372 int dashInd = vendorNumber.indexOf("-");
373 if (vendorNumber.length() >= dashInd) {
374 String vndrHdrGenId = vendorNumber.substring(0, dashInd);
375 String vndrDetailAssgnedId = vendorNumber.substring(dashInd + 1);
376 if (!StringUtils.isEmpty(vndrHdrGenId) && !StringUtils.isEmpty(vndrDetailAssgnedId)) {
377 this.vendorHeaderGeneratedIdentifier = new Integer(vndrHdrGenId);
378 this.vendorDetailAssignedIdentifier = new Integer(vndrDetailAssgnedId);
379 }
380 }
381 }
382 else {
383 this.vendorNumber = vendorNumber;
384 }
385 }
386
387 /**
388 * @see org.kuali.kfs.vnd.document.routing.VendorRoutingComparable#isEqualForRouting(java.lang.Object)
389 */
390 public boolean isEqualForRouting(Object toCompare) {
391 if ((ObjectUtils.isNull(toCompare)) || !(toCompare instanceof VendorContract)) {
392 return false;
393 }
394 else {
395 VendorContract vc = (VendorContract) toCompare;
396 boolean eq = new EqualsBuilder().append(this.getVendorContractGeneratedIdentifier(), vc.getVendorContractGeneratedIdentifier()).append(this.getVendorHeaderGeneratedIdentifier(), vc.getVendorHeaderGeneratedIdentifier()).append(this.getVendorDetailAssignedIdentifier(), vc.getVendorDetailAssignedIdentifier()).append(this.getVendorContractName(), vc.getVendorContractName()).append(this.getVendorContractDescription(), vc.getVendorContractDescription()).append(this.getVendorCampusCode(), vc.getVendorCampusCode()).append(this.getVendorContractBeginningDate(), vc.getVendorContractBeginningDate()).append(this.getVendorContractEndDate(), vc.getVendorContractEndDate()).append(this.getContractManagerCode(), vc.getContractManagerCode()).append(this.getPurchaseOrderCostSourceCode(), vc.getPurchaseOrderCostSourceCode()).append(this.getVendorPaymentTermsCode(), vc.getVendorPaymentTermsCode()).append(this.getVendorShippingPaymentTermsCode(), vc.getVendorShippingPaymentTermsCode()).append(
397 this.getVendorShippingTitleCode(), vc.getVendorShippingTitleCode()).append(this.getVendorContractExtensionDate(), vc.getVendorContractExtensionDate()).append(this.getVendorB2bIndicator(), vc.getVendorB2bIndicator()).append(this.getOrganizationAutomaticPurchaseOrderLimit(), vc.getOrganizationAutomaticPurchaseOrderLimit()).isEquals();
398 eq &= SpringContext.getBean(VendorService.class).equalMemberLists(this.getVendorContractOrganizations(), vc.getVendorContractOrganizations());
399
400 return eq;
401 }
402 }
403
404 /**
405 * @see org.kuali.rice.kns.bo.BusinessObjectBase#toStringMapper()
406 */
407 protected LinkedHashMap toStringMapper() {
408 LinkedHashMap m = new LinkedHashMap();
409 if (this.vendorContractGeneratedIdentifier != null) {
410 m.put("vendorContractGeneratedIdentifier", this.vendorContractGeneratedIdentifier.toString());
411 }
412
413 return m;
414 }
415
416
417 }