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.businessobject;
017
018 import java.sql.Timestamp;
019 import java.util.List;
020
021 import org.kuali.kfs.module.purap.PurapConstants.PurchaseOrderStatuses;
022 import org.kuali.kfs.module.purap.document.service.PurchaseOrderService;
023 import org.kuali.kfs.sys.context.SpringContext;
024 import org.kuali.rice.kns.bo.Note;
025 import org.kuali.rice.kns.util.TypedArrayList;
026
027 /**
028 * Purchase Order View Business Object.
029 */
030 public class PurchaseOrderView extends AbstractRelatedView {
031
032 private Boolean purchaseOrderCurrentIndicator;
033 private String purchaseOrderStatusCode;
034 private String recurringPaymentTypeCode;
035 private String vendorChoiceCode;
036 private Timestamp recurringPaymentEndDate;
037 private Timestamp purchaseOrderInitialOpenTimestamp;
038
039 private List<Note> notes;
040
041 public boolean isPurchaseOrderCurrentIndicator() {
042 return purchaseOrderCurrentIndicator;
043 }
044
045 public boolean getPurchaseOrderCurrentIndicator() {
046 return purchaseOrderCurrentIndicator;
047 }
048
049 public void setPurchaseOrderCurrentIndicator(boolean purchaseOrderCurrentIndicator) {
050 this.purchaseOrderCurrentIndicator = purchaseOrderCurrentIndicator;
051 }
052
053 public String getPurchaseOrderStatusCode() {
054 return purchaseOrderStatusCode;
055 }
056
057 public void setPurchaseOrderStatusCode(String purchaseOrderStatusCode) {
058 this.purchaseOrderStatusCode = purchaseOrderStatusCode;
059 }
060
061 public String getRecurringPaymentTypeCode() {
062 return recurringPaymentTypeCode;
063 }
064
065 public void setRecurringPaymentTypeCode(String recurringPaymentTypeCode) {
066 this.recurringPaymentTypeCode = recurringPaymentTypeCode;
067 }
068
069 public String getVendorChoiceCode() {
070 return vendorChoiceCode;
071 }
072
073 public void setVendorChoiceCode(String vendorChoiceCode) {
074 this.vendorChoiceCode = vendorChoiceCode;
075 }
076
077 public Timestamp getRecurringPaymentEndDate() {
078 return recurringPaymentEndDate;
079 }
080
081 public void setRecurringPaymentEndDate(Timestamp recurringPaymentEndDate) {
082 this.recurringPaymentEndDate = recurringPaymentEndDate;
083 }
084
085 public Timestamp getPurchaseOrderInitialOpenTimestamp() {
086 return purchaseOrderInitialOpenTimestamp;
087 }
088
089 public void setPurchaseOrderInitialOpenTimestamp(Timestamp purchaseOrderInitialOpenTimestamp) {
090 this.purchaseOrderInitialOpenTimestamp = purchaseOrderInitialOpenTimestamp;
091 }
092
093 /**
094 * @see org.kuali.kfs.module.purap.businessobject.AbstractRelatedView#getNotes()
095 */
096 @Override
097 public List<Note> getNotes() {
098 if (this.isPurchaseOrderCurrentIndicator()) {
099 if (notes == null) {
100 notes = new TypedArrayList(Note.class);
101 List<Note> tmpNotes = SpringContext.getBean(PurchaseOrderService.class).getPurchaseOrderNotes(this.getPurapDocumentIdentifier());
102 //FIXME if NoteService returns notes in descending order (newer ones first) then remove the following
103 // reverse the order of notes retrieved so that newest note is in the front
104 for (int i = tmpNotes.size()-1; i>=0; i--) {
105 Note note = tmpNotes.get(i);
106 notes.add(note);
107 }
108 }
109 }
110 else {
111 notes = null;
112 }
113 return notes;
114 }
115
116 /**
117 * The next four methods are overridden but shouldn't be! If they aren't overridden, they don't show up in the tag, not sure why at
118 * this point! (AAP)
119 *
120 * @see org.kuali.kfs.module.purap.businessobject.AbstractRelatedView#getPurapDocumentIdentifier()
121 */
122 @Override
123 public Integer getPurapDocumentIdentifier() {
124 return super.getPurapDocumentIdentifier();
125 }
126
127 @Override
128 public String getDocumentIdentifierString() {
129 return super.getDocumentIdentifierString();
130 }
131
132 /**
133 * @see org.kuali.kfs.module.purap.businessobject.AbstractRelatedView#getDocumentNumber()
134 */
135 @Override
136 public String getDocumentNumber() {
137 return super.getDocumentNumber();
138 }
139
140 /**
141 * @see org.kuali.kfs.module.purap.businessobject.AbstractRelatedView#getUrl()
142 */
143 @Override
144 public String getUrl() {
145 return super.getUrl();
146 }
147
148 /**
149 * Checks whether the purchase order view needs a warning to be displayed, i.e. it never has been opened.
150 * @return true if the purchase order needs a warning; false otherwise.
151 */
152 public boolean getNeedWarning() {
153 return getPurchaseOrderInitialOpenTimestamp() == null;
154 }
155 }