/* * The Kuali Financial System, a comprehensive financial management system for higher education. * * Copyright 2005-2014 The Kuali Foundation * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ package org.kuali.kfs.module.purap.businessobject; import java.sql.Timestamp; import java.util.ArrayList; import java.util.List; import org.kuali.kfs.module.purap.document.service.PurchaseOrderService; import org.kuali.kfs.sys.KFSConstants; import org.kuali.kfs.sys.context.SpringContext; import org.kuali.rice.krad.bo.Note; import org.kuali.rice.krad.util.ObjectUtils; /** * Purchase Order View Business Object. */ public class PurchaseOrderView extends AbstractRelatedView { private Boolean purchaseOrderCurrentIndicator; private String recurringPaymentTypeCode; private String vendorChoiceCode; private Timestamp recurringPaymentEndDate; private Timestamp purchaseOrderInitialOpenTimestamp; private List<Note> notes; public boolean isPurchaseOrderCurrentIndicator() { return purchaseOrderCurrentIndicator; } public boolean getPurchaseOrderCurrentIndicator() { return purchaseOrderCurrentIndicator; } public void setPurchaseOrderCurrentIndicator(boolean purchaseOrderCurrentIndicator) { this.purchaseOrderCurrentIndicator = purchaseOrderCurrentIndicator; } public String getRecurringPaymentTypeCode() { return recurringPaymentTypeCode; } public void setRecurringPaymentTypeCode(String recurringPaymentTypeCode) { this.recurringPaymentTypeCode = recurringPaymentTypeCode; } public String getVendorChoiceCode() { return vendorChoiceCode; } public void setVendorChoiceCode(String vendorChoiceCode) { this.vendorChoiceCode = vendorChoiceCode; } public Timestamp getRecurringPaymentEndDate() { return recurringPaymentEndDate; } public void setRecurringPaymentEndDate(Timestamp recurringPaymentEndDate) { this.recurringPaymentEndDate = recurringPaymentEndDate; } public Timestamp getPurchaseOrderInitialOpenTimestamp() { return purchaseOrderInitialOpenTimestamp; } public void setPurchaseOrderInitialOpenTimestamp(Timestamp purchaseOrderInitialOpenTimestamp) { this.purchaseOrderInitialOpenTimestamp = purchaseOrderInitialOpenTimestamp; } /** * @see org.kuali.kfs.module.purap.businessobject.AbstractRelatedView#getNotes() */ @Override public List<Note> getNotes() { if (this.isPurchaseOrderCurrentIndicator()) { if (notes == null) { notes = new ArrayList<Note>(); List<Note> tmpNotes = SpringContext.getBean(PurchaseOrderService.class).getPurchaseOrderNotes(this.getPurapDocumentIdentifier()); //FIXME if NoteService returns notes in descending order (newer ones first) then remove the following // reverse the order of notes retrieved so that newest note is in the front for (int i = tmpNotes.size()-1; i>=0; i--) { Note note = tmpNotes.get(i); notes.add(note); } } } else { notes = null; } return notes; } /** * 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 * this point! (AAP) * * @see org.kuali.kfs.module.purap.businessobject.AbstractRelatedView#getPurapDocumentIdentifier() */ @Override public Integer getPurapDocumentIdentifier() { return super.getPurapDocumentIdentifier(); } @Override public String getDocumentIdentifierString() { return super.getDocumentIdentifierString(); } /** * @see org.kuali.kfs.module.purap.businessobject.AbstractRelatedView#getDocumentNumber() */ @Override public String getDocumentNumber() { return super.getDocumentNumber(); } /** * @see org.kuali.kfs.module.purap.businessobject.AbstractRelatedView#getUrl() */ @Override public String getUrl() { return super.getUrl(); } /** * Checks whether the purchase order view needs a warning to be displayed, i.e. it never has been opened. * @return true if the purchase order needs a warning; false otherwise. */ public boolean getNeedWarning() { return getPurchaseOrderInitialOpenTimestamp() == null; } /** * @see org.kuali.kfs.module.purap.businessobject.AbstractRelatedView#getDocumentTypeName() */ @Override public String getDocumentTypeName() { org.kuali.rice.kew.api.document.Document document = findWorkflowDocument(this.getDocumentNumber()); if (ObjectUtils.isNotNull(document)) { return document.getDocumentTypeName(); } return KFSConstants.FinancialDocumentTypeCodes.PURCHASE_ORDER; } }