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.apache.commons.lang.StringUtils;
022    import org.kuali.kfs.module.purap.PurapPropertyConstants;
023    import org.kuali.kfs.sys.KFSConstants;
024    import org.kuali.kfs.sys.businessobject.FinancialSystemDocumentHeader;
025    import org.kuali.rice.kns.bo.Note;
026    import org.kuali.rice.kns.util.ObjectUtils;
027    import org.kuali.rice.kns.web.format.CurrencyFormatter;
028    import org.kuali.rice.kns.web.format.DateFormatter;
029    
030    
031    /**
032     * Credit Memo View Business Object.
033     */
034    public class CreditMemoView extends AbstractRelatedView {
035        private String creditMemoNumber;
036        private Integer paymentRequestIdentifier;
037        private Integer purchaseOrderIdentifier;
038        private String creditMemoStatusCode;
039        private boolean creditHoldIndicator;
040        private String vendorCustomerNumber;
041        private Timestamp accountsPayableApprovalTimestamp;
042        private Timestamp creditMemoExtractedTimestamp;
043        private Timestamp creditMemoPaidTimestamp;
044        private String vendorName;
045        
046        // REFERENCE OBJECTS
047        private Status status;
048        private FinancialSystemDocumentHeader documentHeader;
049    
050    
051        // GETTERS & SETTERS
052        public Object getTotalAmount() {
053            return (new CurrencyFormatter()).format(documentHeader.getFinancialDocumentTotalAmount());
054        }
055    
056        public Object getAccountsPayableApprovalTimestamp() {
057            return (new DateFormatter()).format(accountsPayableApprovalTimestamp);
058        }
059    
060        public void setAccountsPayableApprovalTimestamp(Timestamp accountsPayableApprovalTimestamp) {
061            this.accountsPayableApprovalTimestamp = accountsPayableApprovalTimestamp;
062        }
063    
064        public boolean isCreditHoldIndicator() {
065            return creditHoldIndicator;
066        }
067    
068        public void setCreditHoldIndicator(boolean creditHoldIndicator) {
069            this.creditHoldIndicator = creditHoldIndicator;
070        }
071    
072        public Timestamp getCreditMemoExtractedTimestamp() {
073            return creditMemoExtractedTimestamp;
074        }
075    
076        public void setCreditMemoExtractedTimestamp(Timestamp creditMemoExtractedTimestamp) {
077            this.creditMemoExtractedTimestamp = creditMemoExtractedTimestamp;
078        }
079    
080        public String getCreditMemoNumber() {
081            return creditMemoNumber;
082        }
083    
084        public void setCreditMemoNumber(String creditMemoNumber) {
085            this.creditMemoNumber = creditMemoNumber;
086        }
087    
088        public Timestamp getCreditMemoPaidTimestamp() {
089            return creditMemoPaidTimestamp;
090        }
091    
092        public void setCreditMemoPaidTimestamp(Timestamp creditMemoPaidTimestamp) {
093            this.creditMemoPaidTimestamp = creditMemoPaidTimestamp;
094        }
095    
096        public String getCreditMemoStatusCode() {
097            return creditMemoStatusCode;
098        }
099    
100        public void setCreditMemoStatusCode(String creditMemoStatusCode) {
101            this.creditMemoStatusCode = creditMemoStatusCode;
102        }
103        
104        public Status getStatus() {
105            if (ObjectUtils.isNull(this.status) && StringUtils.isNotEmpty(this.getCreditMemoStatusCode())) {
106                this.refreshReferenceObject(PurapPropertyConstants.STATUS);
107            }
108            return status;
109        }
110        
111        public void setStatus(Status status) {
112            this.status = status;
113        }    
114    
115        public Integer getPaymentRequestIdentifier() {
116            return paymentRequestIdentifier;
117        }
118    
119        public void setPaymentRequestIdentifier(Integer paymentRequestIdentifier) {
120            this.paymentRequestIdentifier = paymentRequestIdentifier;
121        }
122    
123        public Integer getPurchaseOrderIdentifier() {
124            return purchaseOrderIdentifier;
125        }
126    
127        public void setPurchaseOrderIdentifier(Integer purchaseOrderIdentifier) {
128            this.purchaseOrderIdentifier = purchaseOrderIdentifier;
129        }
130    
131        public String getVendorCustomerNumber() {
132            return vendorCustomerNumber;
133        }
134    
135        public void setVendorCustomerNumber(String vendorCustomerNumber) {
136            this.vendorCustomerNumber = vendorCustomerNumber;
137        }
138    
139        public String getVendorName() {
140            return vendorName;
141        }
142    
143        public void setVendorName(String vendorName) {
144            this.vendorName = vendorName;
145        }
146        
147        /**
148         * @return workflow document type for the VendorCreditMemoDocument
149         */
150        public String getDocumentType() {
151            return KFSConstants.FinancialDocumentTypeCodes.VENDOR_CREDIT_MEMO;
152        }
153    
154        /**
155         * The next three methods are overridden but shouldnt be! If they arent overridden, they dont show up in the tag, not sure why
156         * at this point! (AAP)
157         */
158        @Override
159        public Integer getPurapDocumentIdentifier() {
160            return super.getPurapDocumentIdentifier();
161        }
162    
163        @Override
164        public String getDocumentIdentifierString() {
165            return super.getDocumentIdentifierString();
166        }
167    
168        @Override
169        public List<Note> getNotes() {
170            return super.getNotes();
171        }
172    
173        @Override
174        public String getUrl() {
175            return super.getUrl();
176        }
177    }