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.ArrayList;
021 import java.util.HashMap;
022 import java.util.LinkedHashMap;
023 import java.util.List;
024 import java.util.Map;
025
026 import org.apache.commons.lang.StringUtils;
027 import org.apache.commons.lang.builder.EqualsBuilder;
028 import org.apache.log4j.Logger;
029 import org.kuali.kfs.sys.context.SpringContext;
030 import org.kuali.kfs.vnd.VendorPropertyConstants;
031 import org.kuali.rice.kim.bo.Person;
032 import org.kuali.rice.kns.bo.PersistableBusinessObjectBase;
033 import org.kuali.rice.kns.service.LookupService;
034 import org.kuali.rice.kns.util.KualiDecimal;
035 import org.kuali.rice.kns.util.ObjectUtils;
036 import org.kuali.rice.kns.util.TypedArrayList;
037
038 /**
039 * Contains all data for a specific parent or division Vendor, including a link to the <code>VendorHeader</code>, which only
040 * contains information about the parent company, but can be shared between division Vendors.
041 *
042 * @see org.kuali.kfs.vnd.businessobject.VendorHeader
043 */
044 public class VendorDetail extends PersistableBusinessObjectBase implements VendorRoutingComparable {
045 private static Logger LOG = Logger.getLogger(VendorDetail.class);
046
047 private Integer vendorHeaderGeneratedIdentifier;
048 private Integer vendorDetailAssignedIdentifier;
049 private String vendorNumber; // not persisted in the db
050 private boolean vendorParentIndicator;
051 private String vendorName;
052 private String vendorFirstName; // not persisted in the db
053 private String vendorLastName; // not persisted in the db
054 private String vendorStateForLookup; // not persisted in the db
055
056 private boolean activeIndicator;
057 private String vendorInactiveReasonCode;
058 private String vendorDunsNumber;
059 private String vendorPaymentTermsCode;
060 private String vendorShippingTitleCode;
061 private String vendorShippingPaymentTermsCode;
062 private Boolean vendorConfirmationIndicator;
063 private Boolean vendorPrepaymentIndicator;
064 private Boolean vendorCreditCardIndicator;
065 private KualiDecimal vendorMinimumOrderAmount;
066 private String vendorUrlAddress;
067 private String vendorRemitName;
068 private Boolean vendorRestrictedIndicator;
069 private String vendorRestrictedReasonText;
070 private Date vendorRestrictedDate;
071 private String vendorRestrictedPersonIdentifier;
072 private String vendorSoldToNumber; // not persisted in the db
073 private Integer vendorSoldToGeneratedIdentifier;
074 private Integer vendorSoldToAssignedIdentifier;
075 private String vendorSoldToName;
076 private boolean vendorFirstLastNameIndicator;
077 private boolean taxableIndicator;
078
079 private List<VendorAddress> vendorAddresses;
080 private List<VendorAlias> vendorAliases;
081 private List<VendorContact> vendorContacts;
082 private List<VendorContract> vendorContracts;
083 private List<VendorCustomerNumber> vendorCustomerNumbers;
084 private List<VendorPhoneNumber> vendorPhoneNumbers;
085 private List<VendorShippingSpecialCondition> vendorShippingSpecialConditions;
086 private List<VendorCommodityCode> vendorCommodities;
087
088 private VendorHeader vendorHeader;
089 private VendorInactiveReason vendorInactiveReason;
090 private PaymentTermType vendorPaymentTerms;
091 private ShippingTitle vendorShippingTitle;
092 private ShippingPaymentTerms vendorShippingPaymentTerms;
093 private VendorDetail soldToVendorDetail;
094 private Person vendorRestrictedPerson;
095
096 private String vendorParentName; // not persisted in the db
097 private String defaultAddressLine1; // not persisted in the db
098 private String defaultAddressLine2; // not persisted in the db
099 private String defaultAddressCity; // not persisted in the db
100 private String defaultAddressStateCode; // not persisted in the db
101 private String defaultAddressInternationalProvince; // not persisted in the db
102 private String defaultAddressPostalCode; // not persisted in the db
103 private String defaultAddressCountryCode; // not persisted in the db
104 private String defaultFaxNumber; // not persisted in the db
105
106 /**
107 * Default constructor.
108 */
109 public VendorDetail() {
110 vendorHeader = new VendorHeader();
111 vendorAddresses = new TypedArrayList(VendorAddress.class);
112 vendorAliases = new TypedArrayList(VendorAlias.class);
113 vendorContacts = new TypedArrayList(VendorContact.class);
114 vendorContracts = new TypedArrayList(VendorContract.class);
115 vendorCustomerNumbers = new TypedArrayList(VendorCustomerNumber.class);
116 vendorPhoneNumbers = new TypedArrayList(VendorPhoneNumber.class);
117 vendorShippingSpecialConditions = new TypedArrayList(VendorShippingSpecialCondition.class);
118 vendorCommodities = new TypedArrayList(VendorCommodityCode.class);
119 vendorParentIndicator = true;
120
121 }
122
123 public Integer getVendorHeaderGeneratedIdentifier() {
124 return vendorHeaderGeneratedIdentifier;
125 }
126
127 public void setVendorHeaderGeneratedIdentifier(Integer vendorHeaderGeneratedIdentifier) {
128 this.vendorHeaderGeneratedIdentifier = vendorHeaderGeneratedIdentifier;
129 }
130
131 public Integer getVendorDetailAssignedIdentifier() {
132 return vendorDetailAssignedIdentifier;
133 }
134
135 public void setVendorDetailAssignedIdentifier(Integer vendorDetailAssignedIdentifier) {
136 this.vendorDetailAssignedIdentifier = vendorDetailAssignedIdentifier;
137 }
138
139 /**
140 * A concatenation of the vendorHeaderGeneratedIdentifier, a dash, and the vendorDetailAssignedIdentifier
141 *
142 * @return Returns the vendorNumber.
143 */
144 public String getVendorNumber() {
145 String headerId = "";
146 String detailId = "";
147 String vendorNumber = "";
148 if (ObjectUtils.isNotNull(this.vendorHeaderGeneratedIdentifier)) {
149 headerId = this.vendorHeaderGeneratedIdentifier.toString();
150 }
151 if (ObjectUtils.isNotNull(this.vendorDetailAssignedIdentifier)) {
152 detailId = this.vendorDetailAssignedIdentifier.toString();
153 }
154 if (!StringUtils.isEmpty(headerId) && !StringUtils.isEmpty(detailId)) {
155 vendorNumber = headerId + "-" + detailId;
156 }
157
158 return vendorNumber;
159 }
160
161 /**
162 * Sets the vendorNumber attribute value.
163 * If vendorNumber is empty, clears header and detail IDs.
164 * If vendorNumber is invalid, leaves header and detail IDs as were.
165 *
166 * @param vendorNumber The vendorNumber to set.
167 */
168 public void setVendorNumber(String vendorNumber) {
169 this.vendorNumber = vendorNumber;
170
171 if (StringUtils.isEmpty(vendorNumber)) {
172 vendorHeaderGeneratedIdentifier = null;
173 vendorDetailAssignedIdentifier = null;
174 return;
175 }
176
177 int dashInd = vendorNumber.indexOf('-');
178 // make sure there's at least one char before and after '-'
179 if (dashInd > 0 && dashInd < vendorNumber.length() - 1) {
180 try {
181 vendorHeaderGeneratedIdentifier = new Integer(vendorNumber.substring(0, dashInd));
182 vendorDetailAssignedIdentifier = new Integer(vendorNumber.substring(dashInd + 1));
183 }
184 catch (NumberFormatException e) {
185 // in case of invalid number format
186 }
187 }
188 }
189
190 public String getVendorName() {
191 return vendorName;
192 }
193
194 public void setVendorName(String vendorName) {
195 this.vendorName = vendorName;
196 }
197
198 public Integer getVendorSoldToGeneratedIdentifier() {
199 return vendorSoldToGeneratedIdentifier;
200 }
201
202 public void setVendorSoldToGeneratedIdentifier(Integer vendorSoldToGeneratedIdentifier) {
203 this.vendorSoldToGeneratedIdentifier = vendorSoldToGeneratedIdentifier;
204 }
205
206 public Integer getVendorSoldToAssignedIdentifier() {
207 return vendorSoldToAssignedIdentifier;
208 }
209
210 public void setVendorSoldToAssignedIdentifier(Integer vendorSoldToAssignedIdentifier) {
211 this.vendorSoldToAssignedIdentifier = vendorSoldToAssignedIdentifier;
212 }
213
214 /**
215 * Gets the vendorSoldToNumber attribute.
216 *
217 * @return Returns the vendorSoldToNumber.
218 */
219 public String getVendorSoldToNumber() {
220 String headerId = "";
221 String detailId = "";
222 String vendorSoldToNumber = "";
223
224 if (this.vendorSoldToGeneratedIdentifier != null) {
225 headerId = this.vendorSoldToGeneratedIdentifier.toString();
226 }
227 if (this.vendorSoldToAssignedIdentifier != null) {
228 detailId = this.vendorSoldToAssignedIdentifier.toString();
229 }
230 if (!StringUtils.isEmpty(headerId) && !StringUtils.isEmpty(detailId)) {
231 vendorSoldToNumber = headerId + "-" + detailId;
232 }
233
234 return vendorSoldToNumber;
235 }
236
237 /**
238 * Sets the vendorSoldToNumber attribute value.
239 * If vendorSoldToNumber is empty, clears soldToVendor header and detail IDs.
240 * If vendorSoldToNumber is invalid, leaves soldToVendor header and detail IDs as were.
241 *
242 * @param vendorSoldToNumber The vendorSoldToNumber to set.
243 */
244 public void setVendorSoldToNumber(String vendorSoldToNumber) {
245 this.vendorSoldToNumber = vendorSoldToNumber;
246
247 if (StringUtils.isEmpty(vendorSoldToNumber)) {
248 vendorSoldToGeneratedIdentifier = null;
249 vendorSoldToAssignedIdentifier = null;
250 return;
251 }
252
253 int dashInd = vendorSoldToNumber.indexOf('-');
254 // make sure there's at least one char before and after '-'
255 if (dashInd > 0 && dashInd < vendorSoldToNumber.length() - 1) {
256 try {
257 vendorSoldToGeneratedIdentifier = new Integer(vendorSoldToNumber.substring(0, dashInd));
258 vendorSoldToAssignedIdentifier = new Integer(vendorSoldToNumber.substring(dashInd + 1));
259 }
260 catch (NumberFormatException e) {
261 // in case of invalid number format
262 }
263 }
264 }
265
266 /**
267 * Gets the vendorSoldToName attribute.
268 *
269 * @return Returns the vendorSoldToName
270 */
271 public String getVendorSoldToName() {
272 return this.vendorSoldToName;
273 }
274
275 public void setVendorSoldToName(String vendorSoldToName) {
276 this.vendorSoldToName = vendorSoldToName;
277 }
278
279 public String getAltVendorName() {
280 return vendorName;
281 }
282
283 public void setAltVendorName(String altVendorName) {
284 this.vendorName = altVendorName;
285 }
286
287 public String getVendorRemitName() {
288 return vendorRemitName;
289 }
290
291 public void setVendorRemitName(String vendorRemitName) {
292 this.vendorRemitName = vendorRemitName;
293 }
294
295 public boolean isVendorParentIndicator() {
296 return vendorParentIndicator;
297 }
298
299 public void setVendorParentIndicator(boolean vendorParentIndicator) {
300 this.vendorParentIndicator = vendorParentIndicator;
301 }
302
303 public boolean isTaxableIndicator() {
304 return taxableIndicator;
305 }
306
307 public void setTaxableIndicator(boolean taxableIndicator) {
308 this.taxableIndicator = taxableIndicator;
309 }
310
311 public boolean isVendorDebarred() {
312 return (ObjectUtils.isNotNull(getVendorHeader().getVendorDebarredIndicator()) && getVendorHeader().getVendorDebarredIndicator());
313 }
314
315 public boolean isActiveIndicator() {
316 return activeIndicator;
317 }
318
319 public void setActiveIndicator(boolean activeIndicator) {
320 this.activeIndicator = activeIndicator;
321 }
322
323 public String getVendorInactiveReasonCode() {
324 return vendorInactiveReasonCode;
325 }
326
327 public void setVendorInactiveReasonCode(String vendorInactiveReasonCode) {
328 this.vendorInactiveReasonCode = vendorInactiveReasonCode;
329 }
330
331 public String getVendorPaymentTermsCode() {
332 return vendorPaymentTermsCode;
333 }
334
335 public void setVendorPaymentTermsCode(String vendorPaymentTermsCode) {
336 this.vendorPaymentTermsCode = vendorPaymentTermsCode;
337 }
338
339 public String getVendorShippingTitleCode() {
340 return vendorShippingTitleCode;
341 }
342
343 public void setVendorShippingTitleCode(String vendorShippingTitleCode) {
344 this.vendorShippingTitleCode = vendorShippingTitleCode;
345 }
346
347 public String getVendorShippingPaymentTermsCode() {
348 return vendorShippingPaymentTermsCode;
349 }
350
351 public void setVendorShippingPaymentTermsCode(String vendorShippingPaymentTermsCode) {
352 this.vendorShippingPaymentTermsCode = vendorShippingPaymentTermsCode;
353 }
354
355 public Boolean getVendorConfirmationIndicator() {
356 return vendorConfirmationIndicator;
357 }
358
359 public void setVendorConfirmationIndicator(Boolean vendorConfirmationIndicator) {
360 this.vendorConfirmationIndicator = vendorConfirmationIndicator;
361 }
362
363 public Boolean getVendorPrepaymentIndicator() {
364 return vendorPrepaymentIndicator;
365 }
366
367 public void setVendorPrepaymentIndicator(Boolean vendorPrepaymentIndicator) {
368 this.vendorPrepaymentIndicator = vendorPrepaymentIndicator;
369 }
370
371 public Boolean getVendorCreditCardIndicator() {
372 return vendorCreditCardIndicator;
373 }
374
375 public void setVendorCreditCardIndicator(Boolean vendorCreditCardIndicator) {
376 this.vendorCreditCardIndicator = vendorCreditCardIndicator;
377 }
378
379 public KualiDecimal getVendorMinimumOrderAmount() {
380 return vendorMinimumOrderAmount;
381 }
382
383 public void setVendorMinimumOrderAmount(KualiDecimal vendorMinimumOrderAmount) {
384 this.vendorMinimumOrderAmount = vendorMinimumOrderAmount;
385 }
386
387 public String getVendorUrlAddress() {
388 return vendorUrlAddress;
389 }
390
391 public void setVendorUrlAddress(String vendorUrlAddress) {
392 this.vendorUrlAddress = vendorUrlAddress;
393 }
394
395 public Boolean getVendorRestrictedIndicator() {
396 return vendorRestrictedIndicator;
397 }
398
399 public void setVendorRestrictedIndicator(Boolean vendorRestrictedIndicator) {
400 this.vendorRestrictedIndicator = vendorRestrictedIndicator;
401 }
402
403 public String getVendorRestrictedReasonText() {
404 return vendorRestrictedReasonText;
405 }
406
407 public void setVendorRestrictedReasonText(String vendorRestrictedReasonText) {
408 this.vendorRestrictedReasonText = vendorRestrictedReasonText;
409 }
410
411 public Date getVendorRestrictedDate() {
412 return vendorRestrictedDate;
413 }
414
415 public void setVendorRestrictedDate(Date vendorRestrictedDate) {
416 this.vendorRestrictedDate = vendorRestrictedDate;
417 }
418
419 public String getVendorRestrictedPersonIdentifier() {
420 return vendorRestrictedPersonIdentifier;
421 }
422
423 public void setVendorRestrictedPersonIdentifier(String vendorRestrictedPersonIdentifier) {
424 this.vendorRestrictedPersonIdentifier = vendorRestrictedPersonIdentifier;
425 }
426
427 public String getVendorDunsNumber() {
428 return vendorDunsNumber;
429 }
430
431 public void setVendorDunsNumber(String vendorDunsNumber) {
432 this.vendorDunsNumber = vendorDunsNumber;
433 }
434
435 public VendorHeader getVendorHeader() {
436 return vendorHeader;
437 }
438
439 public void setVendorHeader(VendorHeader vendorHeader) {
440 this.vendorHeader = vendorHeader;
441 }
442
443 public PaymentTermType getVendorPaymentTerms() {
444 return vendorPaymentTerms;
445 }
446
447 /**
448 * Sets the vendorPaymentTerms attribute.
449 *
450 * @param vendorPaymentTerms The vendorPaymentTerms to set.
451 * @deprecated
452 */
453 public void setVendorPaymentTerms(PaymentTermType vendorPaymentTerms) {
454 this.vendorPaymentTerms = vendorPaymentTerms;
455 }
456
457 public ShippingTitle getVendorShippingTitle() {
458 return vendorShippingTitle;
459 }
460
461 /**
462 * Sets the vendorShippingTitle attribute.
463 *
464 * @param vendorShippingTitle The vendorShippingTitle to set.
465 * @deprecated
466 */
467 public void setVendorShippingTitle(ShippingTitle vendorShippingTitle) {
468 this.vendorShippingTitle = vendorShippingTitle;
469 }
470
471 public ShippingPaymentTerms getVendorShippingPaymentTerms() {
472 return vendorShippingPaymentTerms;
473 }
474
475 /**
476 * Sets the vendorShippingPaymentTerms attribute.
477 *
478 * @param vendorShippingPaymentTerms The vendorShippingPaymentTerms to set.
479 * @deprecated
480 */
481 public void setVendorShippingPaymentTerms(ShippingPaymentTerms vendorShippingPaymentTerms) {
482 this.vendorShippingPaymentTerms = vendorShippingPaymentTerms;
483 }
484
485 public VendorInactiveReason getVendorInactiveReason() {
486 return vendorInactiveReason;
487 }
488
489 /**
490 * Sets the vendorInactiveReason attribute value.
491 *
492 * @param vendorInactiveReason The vendorInactiveReason to set.
493 * @deprecated
494 */
495 public void setVendorInactiveReason(VendorInactiveReason vendorInactiveReason) {
496 this.vendorInactiveReason = vendorInactiveReason;
497 }
498
499 public List<VendorAddress> getVendorAddresses() {
500 return vendorAddresses;
501 }
502
503 public void setVendorAddresses(List<VendorAddress> vendorAddresses) {
504 this.vendorAddresses = vendorAddresses;
505 }
506
507 public List<VendorContact> getVendorContacts() {
508 return vendorContacts;
509 }
510
511 public void setVendorContacts(List<VendorContact> vendorContacts) {
512 this.vendorContacts = vendorContacts;
513 }
514
515 public List<VendorContract> getVendorContracts() {
516 return vendorContracts;
517 }
518
519 public void setVendorContracts(List<VendorContract> vendorContracts) {
520 this.vendorContracts = vendorContracts;
521 }
522
523 public List<VendorCustomerNumber> getVendorCustomerNumbers() {
524 return vendorCustomerNumbers;
525 }
526
527 public void setVendorCustomerNumbers(List<VendorCustomerNumber> vendorCustomerNumbers) {
528 this.vendorCustomerNumbers = vendorCustomerNumbers;
529 }
530
531 public List<VendorShippingSpecialCondition> getVendorShippingSpecialConditions() {
532 return vendorShippingSpecialConditions;
533 }
534
535 public void setVendorShippingSpecialConditions(List<VendorShippingSpecialCondition> vendorShippingSpecialConditions) {
536 this.vendorShippingSpecialConditions = vendorShippingSpecialConditions;
537 }
538
539 public List<VendorCommodityCode> getVendorCommodities() {
540 return vendorCommodities;
541 }
542
543 public void setVendorCommodities(List<VendorCommodityCode> vendorCommodities) {
544 this.vendorCommodities = vendorCommodities;
545 }
546
547 public List<VendorAlias> getVendorAliases() {
548 return vendorAliases;
549 }
550
551 public void setVendorAliases(List<VendorAlias> vendorAliases) {
552 this.vendorAliases = vendorAliases;
553 }
554
555 public List<VendorPhoneNumber> getVendorPhoneNumbers() {
556 return vendorPhoneNumbers;
557 }
558
559 public void setVendorPhoneNumbers(List<VendorPhoneNumber> vendorPhoneNumbers) {
560 this.vendorPhoneNumbers = vendorPhoneNumbers;
561 }
562
563 public String getVendorFirstName() {
564 return vendorFirstName;
565 }
566
567 public void setVendorFirstName(String vendorFirstName) {
568 this.vendorFirstName = vendorFirstName;
569 }
570
571 public String getVendorLastName() {
572 return vendorLastName;
573 }
574
575 public void setVendorLastName(String vendorLastName) {
576 this.vendorLastName = vendorLastName;
577 }
578
579 public VendorDetail getSoldToVendorDetail() {
580 return soldToVendorDetail;
581 }
582
583 public void setSoldToVendorDetail(VendorDetail soldToVendorDetail) {
584 this.soldToVendorDetail = soldToVendorDetail;
585 }
586
587 public boolean isVendorFirstLastNameIndicator() {
588 return vendorFirstLastNameIndicator;
589 }
590
591 public void setVendorFirstLastNameIndicator(boolean vendorFirstLastNameIndicator) {
592 this.vendorFirstLastNameIndicator = vendorFirstLastNameIndicator;
593 }
594
595 public String getVendorStateForLookup() {
596 return vendorStateForLookup;
597 }
598
599 public void setVendorStateForLookup(String vendorStateForLookup) {
600 this.vendorStateForLookup = vendorStateForLookup;
601 }
602
603 public Person getVendorRestrictedPerson() {
604 vendorRestrictedPerson = SpringContext.getBean(org.kuali.rice.kim.service.PersonService.class).updatePersonIfNecessary(vendorRestrictedPersonIdentifier, vendorRestrictedPerson);
605 return vendorRestrictedPerson;
606 }
607
608 /**
609 * Sets the vendorRestrictedPerson attribute.
610 *
611 * @param vendorRestrictedPerson The vendorRestrictedPerson to set.
612 * @deprecated
613 */
614 public void setVendorRestrictedPerson(Person vendorRestrictedPerson) {
615 this.vendorRestrictedPerson = vendorRestrictedPerson;
616 }
617
618 public String getDefaultAddressLine1() {
619 return defaultAddressLine1;
620 }
621
622 public void setDefaultAddressLine1(String defaultAddressLine1) {
623 this.defaultAddressLine1 = defaultAddressLine1;
624 }
625
626 public String getDefaultAddressCity() {
627 return defaultAddressCity;
628 }
629
630 public void setDefaultAddressCity(String defaultAddressCity) {
631 this.defaultAddressCity = defaultAddressCity;
632 }
633
634 public String getDefaultAddressLine2() {
635 return defaultAddressLine2;
636 }
637
638 public void setDefaultAddressLine2(String defaultAddressLine2) {
639 this.defaultAddressLine2 = defaultAddressLine2;
640 }
641
642 public String getDefaultAddressPostalCode() {
643 return defaultAddressPostalCode;
644 }
645
646 public void setDefaultAddressPostalCode(String defaultAddressPostalCode) {
647 this.defaultAddressPostalCode = defaultAddressPostalCode;
648 }
649
650 public String getDefaultAddressStateCode() {
651 return defaultAddressStateCode;
652 }
653
654 public void setDefaultAddressStateCode(String defaultAddressStateCode) {
655 this.defaultAddressStateCode = defaultAddressStateCode;
656 }
657
658 public String getDefaultAddressInternationalProvince() {
659 return defaultAddressInternationalProvince;
660 }
661
662 public void setDefaultAddressInternationalProvince(String defaultAddressInternationalProvince) {
663 this.defaultAddressInternationalProvince = defaultAddressInternationalProvince;
664 }
665
666 public String getDefaultAddressCountryCode() {
667 return defaultAddressCountryCode;
668 }
669
670 public void setDefaultAddressCountryCode(String defaultAddressCountryCode) {
671 this.defaultAddressCountryCode = defaultAddressCountryCode;
672 }
673
674 public String getDefaultFaxNumber() {
675 return defaultFaxNumber;
676 }
677
678 public void setDefaultFaxNumber(String defaultFaxNumber) {
679 this.defaultFaxNumber = defaultFaxNumber;
680 }
681
682 /**
683 * @see org.kuali.kfs.vnd.document.routing.VendorRoutingComparable#isEqualForRouting(java.lang.Object)
684 */
685 public boolean isEqualForRouting(Object toCompare) {
686 LOG.debug("Entering isEqualForRouting.");
687 if ((ObjectUtils.isNull(toCompare)) || !(toCompare instanceof VendorDetail)) {
688 return false;
689 }
690 else {
691 VendorDetail detail = (VendorDetail) toCompare;
692 return new EqualsBuilder().append(
693 this.getVendorHeaderGeneratedIdentifier(), detail.getVendorHeaderGeneratedIdentifier()).append(
694 this.getVendorDetailAssignedIdentifier(), detail.getVendorDetailAssignedIdentifier()).append(
695 this.isVendorParentIndicator(), detail.isVendorParentIndicator()).append(
696 this.getVendorName(), detail.getVendorName()).append(
697 this.isActiveIndicator(), detail.isActiveIndicator()).append(
698 this.getVendorInactiveReasonCode(), detail.getVendorInactiveReasonCode()).append(
699 this.getVendorDunsNumber(), detail.getVendorDunsNumber()).append(
700 this.getVendorPaymentTermsCode(), detail.getVendorPaymentTermsCode()).append(
701 this.getVendorShippingTitleCode(), detail.getVendorShippingTitleCode()).append(
702 this.getVendorShippingPaymentTermsCode(), detail.getVendorShippingPaymentTermsCode()).append(
703 this.getVendorConfirmationIndicator(), detail.getVendorConfirmationIndicator()).append(
704 this.getVendorPrepaymentIndicator(), detail.getVendorPrepaymentIndicator()).append(
705 this.getVendorCreditCardIndicator(), detail.getVendorCreditCardIndicator()).append(
706 this.getVendorMinimumOrderAmount(), detail.getVendorMinimumOrderAmount()).append(
707 this.getVendorUrlAddress(), detail.getVendorUrlAddress()).append(
708 this.getVendorRemitName(), detail.getVendorRemitName()).append(
709 this.getVendorRestrictedIndicator(), detail.getVendorRestrictedIndicator()).append(
710 this.getVendorRestrictedReasonText(), detail.getVendorRestrictedReasonText()).append(
711 this.getVendorRestrictedDate(), detail.getVendorRestrictedDate()).append(
712 this.getVendorRestrictedPersonIdentifier(), detail.getVendorRestrictedPersonIdentifier()).append(
713 this.getVendorSoldToGeneratedIdentifier(), detail.getVendorSoldToGeneratedIdentifier()).append(
714 this.getVendorSoldToAssignedIdentifier(), detail.getVendorSoldToAssignedIdentifier()).append(
715 this.getVendorSoldToName(), detail.getVendorSoldToName()).append(
716 this.isVendorFirstLastNameIndicator(), detail.isVendorFirstLastNameIndicator()).isEquals();
717 }
718 }
719
720 /**
721 * The vendor is B2B if they have a contract that has the B2B
722 * indicator set to Yes. This method returns true if this vendor
723 * is a B2B vendor and false otherwise.
724 *
725 * @return true if this vendor is a B2B vendor and false otherwise.
726 *
727 */
728 public boolean isB2BVendor() {
729 for (VendorContract contract : this.getVendorContracts()) {
730 if (contract.getVendorB2bIndicator()) {
731 return true;
732 }
733 }
734 return false;
735 }
736
737 public VendorDetail getVendorParent() {
738 Map<String, String> tmpValues = new HashMap<String, String>();
739 List<VendorDetail> relatedVendors = new ArrayList<VendorDetail>();
740 tmpValues.put(VendorPropertyConstants.VENDOR_HEADER_GENERATED_ID, getVendorHeaderGeneratedIdentifier().toString());
741 tmpValues.put(VendorPropertyConstants.VENDOR_PARENT_INDICATOR, "Y");
742 VendorDetail parentVendor = (VendorDetail) SpringContext.getBean(LookupService.class).findObjectBySearch(VendorDetail.class, tmpValues);
743 return parentVendor;
744 }
745
746 public String getVendorParentName() {
747 if (StringUtils.isNotBlank(this.vendorParentName)) {
748 return vendorParentName;
749 }
750 else if (isVendorParentIndicator()) {
751 setVendorParentName(this.getVendorName());
752 return vendorParentName;
753 }
754 else {
755 this.setVendorParentName(getVendorParent().getVendorName());
756 return vendorParentName;
757 }
758 }
759
760 public void setVendorParentName(String vendorParentName) {
761 this.vendorParentName = vendorParentName;
762 }
763
764
765 /**
766 * @see org.kuali.rice.kns.bo.BusinessObjectBase#toStringMapper()
767 */
768 protected LinkedHashMap toStringMapper() {
769 LinkedHashMap m = new LinkedHashMap();
770 if (this.vendorHeaderGeneratedIdentifier != null) {
771 m.put("vendorHeaderGeneratedIdentifier", this.vendorHeaderGeneratedIdentifier.toString());
772 }
773 if (this.vendorDetailAssignedIdentifier != null) {
774 m.put("vendorDetailAssignedIdentifier", this.vendorDetailAssignedIdentifier.toString());
775 }
776
777 return m;
778 }
779
780 }
781