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.document;
017    
018    import java.sql.Date;
019    import java.util.List;
020    
021    import org.kuali.kfs.coa.businessobject.Account;
022    import org.kuali.kfs.coa.businessobject.Chart;
023    import org.kuali.kfs.coa.businessobject.Organization;
024    import org.kuali.kfs.integration.purap.CapitalAssetSystem;
025    import org.kuali.kfs.module.purap.businessobject.BillingAddress;
026    import org.kuali.kfs.module.purap.businessobject.CapitalAssetSystemState;
027    import org.kuali.kfs.module.purap.businessobject.CapitalAssetSystemType;
028    import org.kuali.kfs.module.purap.businessobject.DeliveryRequiredDateReason;
029    import org.kuali.kfs.module.purap.businessobject.FundingSource;
030    import org.kuali.kfs.module.purap.businessobject.PurApItem;
031    import org.kuali.kfs.module.purap.businessobject.PurchaseOrderTransmissionMethod;
032    import org.kuali.kfs.module.purap.businessobject.PurchasingCapitalAssetItem;
033    import org.kuali.kfs.module.purap.businessobject.PurchasingItem;
034    import org.kuali.kfs.module.purap.businessobject.ReceivingAddress;
035    import org.kuali.kfs.module.purap.businessobject.RecurringPaymentType;
036    import org.kuali.kfs.module.purap.businessobject.RequisitionSource;
037    import org.kuali.kfs.module.purap.document.service.PurchasingDocumentSpecificService;
038    import org.kuali.kfs.module.purap.util.ItemParser;
039    import org.kuali.kfs.vnd.businessobject.CampusParameter;
040    import org.kuali.kfs.vnd.businessobject.PurchaseOrderCostSource;
041    import org.kuali.kfs.vnd.businessobject.VendorContract;
042    import org.kuali.kfs.vnd.businessobject.VendorDetail;
043    import org.kuali.rice.kns.util.KualiDecimal;
044    
045    
046    /**
047     * Interface for Purchasing Documents.
048     */
049    public interface PurchasingDocument extends PurchasingAccountsPayableDocument {
050    
051        /**
052         * Gets the appropriate <code>{@link ItemParser}</code> for the <code>PurchasingDocument</code>
053         * 
054         * @return an ItemParser instance
055         */
056        public ItemParser getItemParser();
057    
058        public String getDocumentFundingSourceCode();
059    
060        public void setDocumentFundingSourceCode(String fundingSourceCode);
061    
062        public String getRequisitionSourceCode();
063    
064        public void setRequisitionSourceCode(String requisitionSourceCode);
065    
066        public String getPurchaseOrderTransmissionMethodCode();
067    
068        public void setPurchaseOrderTransmissionMethodCode(String purchaseOrderTransmissionMethodCode);
069    
070        public String getPurchaseOrderCostSourceCode();
071    
072        public void setPurchaseOrderCostSourceCode(String purchaseOrderCostSourceCode);
073    
074        public String getDeliveryRequiredDateReasonCode();
075    
076        public void setDeliveryRequiredDateReasonCode(String deliveryRequiredDateReasonCode);
077    
078        public String getRecurringPaymentTypeCode();
079    
080        public void setRecurringPaymentTypeCode(String recurringPaymentTypeCode);
081    
082        public String getChartOfAccountsCode();
083    
084        public void setChartOfAccountsCode(String chartOfAccountsCode);
085    
086        public String getOrganizationCode();
087    
088        public void setOrganizationCode(String organizationCode);
089    
090        public String getDeliveryCampusCode();
091    
092        public void setDeliveryCampusCode(String deliveryCampusCode);
093    
094        public KualiDecimal getPurchaseOrderTotalLimit();
095    
096        public void setPurchaseOrderTotalLimit(KualiDecimal purchaseOrderTotalLimit);
097    
098        public String getVendorName();
099    
100        public void setVendorName(String vendorName);
101    
102        public String getVendorLine1Address();
103    
104        public void setVendorLine1Address(String vendorLine1Address);
105    
106        public String getVendorLine2Address();
107    
108        public void setVendorLine2Address(String vendorLine2Address);
109    
110        public String getVendorCityName();
111    
112        public void setVendorCityName(String vendorCityName);
113    
114        public String getVendorStateCode();
115    
116        public void setVendorStateCode(String vendorStateCode);
117    
118        public String getVendorPostalCode();
119    
120        public void setVendorPostalCode(String vendorPostalCode);
121    
122        public String getVendorCountryCode();
123    
124        public void setVendorCountryCode(String vendorCountryCode);
125    
126        public Boolean getVendorRestrictedIndicator();
127    
128        public void setVendorRestrictedIndicator(Boolean vendorRestrictedIndicator);
129    
130        public String getVendorPhoneNumber();
131    
132        public void setVendorPhoneNumber(String vendorPhoneNumber);
133    
134        public String getVendorFaxNumber();
135    
136        public void setVendorFaxNumber(String vendorFaxNumber);
137    
138        public Integer getVendorContractGeneratedIdentifier();
139    
140        public void setVendorContractGeneratedIdentifier(Integer vendorContractGeneratedIdentifier);
141    
142        public String getVendorNoteText();
143    
144        public void setVendorNoteText(String vendorNoteText);
145    
146        public String getRequestorPersonName();
147    
148        public void setRequestorPersonName(String requestorPersonName);
149    
150        public String getRequestorPersonEmailAddress();
151    
152        public void setRequestorPersonEmailAddress(String requestorPersonEmailAddress);
153    
154        public String getRequestorPersonPhoneNumber();
155    
156        public void setRequestorPersonPhoneNumber(String requestorPersonPhoneNumber);
157    
158        public String getNonInstitutionFundOrgChartOfAccountsCode();
159    
160        public void setNonInstitutionFundOrgChartOfAccountsCode(String nonInstitutionFundOrgChartOfAccountsCode);
161    
162        public String getNonInstitutionFundOrganizationCode();
163    
164        public void setNonInstitutionFundOrganizationCode(String nonInstitutionFundOrganizationCode);
165    
166        public String getNonInstitutionFundChartOfAccountsCode();
167    
168        public void setNonInstitutionFundChartOfAccountsCode(String nonInstitutionFundChartOfAccountsCode);
169    
170        public String getNonInstitutionFundAccountNumber();
171    
172        public void setNonInstitutionFundAccountNumber(String nonInstitutionFundAccountNumber);
173    
174        public String getDeliveryBuildingCode();
175    
176        public void setDeliveryBuildingCode(String deliveryBuildingCode);
177    
178        public String getDeliveryBuildingName();
179    
180        public void setDeliveryBuildingName(String deliveryBuildingName);
181    
182        public String getDeliveryBuildingRoomNumber();
183    
184        public void setDeliveryBuildingRoomNumber(String deliveryBuildingRoomNumber);
185    
186        public String getDeliveryBuildingLine1Address();
187    
188        public void setDeliveryBuildingLine1Address(String deliveryBuildingLine1Address);
189    
190        public String getDeliveryBuildingLine2Address();
191    
192        public void setDeliveryBuildingLine2Address(String deliveryBuildingLine2Address);
193    
194        public String getDeliveryCityName();
195    
196        public void setDeliveryCityName(String deliveryCityName);
197    
198        public String getDeliveryStateCode();
199    
200        public void setDeliveryStateCode(String deliveryStateCode);
201    
202        public String getDeliveryPostalCode();
203    
204        public void setDeliveryPostalCode(String deliveryPostalCode);
205    
206        public String getDeliveryCountryCode();
207        
208        public String getDeliveryCountryName();
209    
210        public void setDeliveryCountryCode(String deliveryCountryCode);
211    
212        public String getDeliveryToName();
213    
214        public void setDeliveryToName(String deliveryToName);
215    
216        public String getDeliveryToEmailAddress();
217    
218        public void setDeliveryToEmailAddress(String deliveryToEmailAddress);
219    
220        public String getDeliveryToPhoneNumber();
221    
222        public void setDeliveryToPhoneNumber(String deliveryToPhoneNumber);
223    
224        public Date getDeliveryRequiredDate();
225    
226        public void setDeliveryRequiredDate(Date deliveryRequiredDate);
227    
228        public String getDeliveryInstructionText();
229    
230        public void setDeliveryInstructionText(String deliveryInstructionText);
231    
232        public Date getPurchaseOrderBeginDate();
233    
234        public void setPurchaseOrderBeginDate(Date purchaseOrderBeginDate);
235    
236        public Date getPurchaseOrderEndDate();
237    
238        public void setPurchaseOrderEndDate(Date purchaseOrderEndDate);
239    
240        public String getInstitutionContactName();
241    
242        public void setInstitutionContactName(String institutionContactName);
243    
244        public String getInstitutionContactPhoneNumber();
245    
246        public void setInstitutionContactPhoneNumber(String institutionContactPhoneNumber);
247    
248        public String getInstitutionContactEmailAddress();
249    
250        public void setInstitutionContactEmailAddress(String institutionContactEmailAddress);
251    
252        public String getBillingName();
253    
254        public void setBillingName(String billingName);
255    
256        public String getBillingLine1Address();
257    
258        public void setBillingLine1Address(String billingLine1Address);
259    
260        public String getBillingLine2Address();
261    
262        public void setBillingLine2Address(String billingLine2Address);
263    
264        public String getBillingCityName();
265    
266        public void setBillingCityName(String billingCityName);
267    
268        public String getBillingStateCode();
269    
270        public void setBillingStateCode(String billingStateCode);
271    
272        public String getBillingPostalCode();
273    
274        public void setBillingPostalCode(String billingPostalCode);
275    
276        public String getBillingCountryCode();
277    
278        public void setBillingCountryCode(String billingCountryCode);
279    
280        public String getBillingCountryName();
281        
282        public String getBillingPhoneNumber();
283    
284        public void setBillingPhoneNumber(String receivingPhoneNumber);
285    
286        public String getReceivingName();
287    
288        public void setReceivingName(String receivingName);
289    
290        public String getReceivingLine1Address();
291    
292        public void setReceivingLine1Address(String receivingLine1Address);
293    
294        public String getReceivingLine2Address();
295    
296        public void setReceivingLine2Address(String receivingLine2Address);
297    
298        public String getReceivingCityName();
299    
300        public void setReceivingCityName(String receivingCityName);
301    
302        public String getReceivingStateCode();
303    
304        public void setReceivingStateCode(String receivingStateCode);
305    
306        public String getReceivingPostalCode();
307    
308        public void setReceivingPostalCode(String receivingPostalCode);
309    
310        public String getReceivingCountryCode();
311    
312        public String getReceivingCountryName();
313    
314        public void setReceivingCountryCode(String receivingCountryCode);
315    
316        public boolean getAddressToVendorIndicator();
317    
318        public void setAddressToVendorIndicator(boolean addressToVendorIndicator);
319    
320        public String getExternalOrganizationB2bSupplierIdentifier();
321    
322        public void setExternalOrganizationB2bSupplierIdentifier(String externalOrganizationB2bSupplierIdentifier);
323    
324        public boolean getPurchaseOrderAutomaticIndicator();
325    
326        public void setPurchaseOrderAutomaticIndicator(boolean purchaseOrderAutomaticIndicator);
327    
328        public FundingSource getFundingSource();
329    
330        public void setFundingSource(FundingSource fundingSource);
331    
332        public RequisitionSource getRequisitionSource();
333    
334        /**
335         * @deprecated
336         */
337        public void setRequisitionSource(RequisitionSource requisitionSource);
338    
339        public PurchaseOrderTransmissionMethod getPurchaseOrderTransmissionMethod();
340    
341        /**
342         * @deprecated
343         */
344        public void setPurchaseOrderTransmissionMethod(PurchaseOrderTransmissionMethod purchaseOrderTransmissionMethod);
345    
346        public PurchaseOrderCostSource getPurchaseOrderCostSource();
347    
348        /**
349         * @deprecated
350         */
351        public void setPurchaseOrderCostSource(PurchaseOrderCostSource purchaseOrderCostSource);
352    
353        public DeliveryRequiredDateReason getDeliveryRequiredDateReason();
354    
355        /**
356         * @deprecated
357         */
358        public void setDeliveryRequiredDateReason(DeliveryRequiredDateReason deliveryRequiredDateReason);
359    
360        public RecurringPaymentType getRecurringPaymentType();
361    
362        /**
363         * @deprecated
364         */
365        public void setRecurringPaymentType(RecurringPaymentType recurringPaymentType);
366    
367        public Organization getOrganization();
368    
369        /**
370         * @deprecated
371         */
372        public void setOrganization(Organization organization);
373    
374        public Chart getChartOfAccounts();
375    
376        /**
377         * @deprecated
378         */
379        public void setChartOfAccounts(Chart chartOfAccounts);
380    
381        public CampusParameter getDeliveryCampus();
382    
383        /**
384         * @deprecated
385         */
386        public void setDeliveryCampus(CampusParameter deliveryCampus);
387    
388        public Chart getNonInstitutionFundOrgChartOfAccounts();
389    
390        /**
391         * @deprecated
392         */
393        public void setNonInstitutionFundOrgChartOfAccounts(Chart nonInstitutionFundOrgChartOfAccounts);
394    
395        public Organization getNonInstitutionFundOrganization();
396    
397        /**
398         * @deprecated
399         */
400        public void setNonInstitutionFundOrganization(Organization nonInstitutionFundOrganization);
401    
402        public Account getNonInstitutionFundAccount();
403    
404        /**
405         * @deprecated
406         */
407        public void setNonInstitutionFundAccount(Account nonInstitutionFundAccount);
408    
409        public Chart getNonInstitutionFundChartOfAccounts();
410    
411        /**
412         * @deprecated
413         */
414        public void setNonInstitutionFundChartOfAccounts(Chart nonInstitutionFundChartOfAccounts);
415    
416        public String getVendorPaymentTermsCode();
417    
418        public void setVendorPaymentTermsCode(String vendorPaymentTermsCode);
419    
420        public String getVendorShippingPaymentTermsCode();
421    
422        public void setVendorShippingPaymentTermsCode(String vendorShippingPaymentTermsCode);
423    
424        public String getVendorShippingTitleCode();
425    
426        public void setVendorShippingTitleCode(String vendorShippingTitleCode);
427    
428        public boolean isDeliveryBuildingOtherIndicator();
429        
430        public void setDeliveryBuildingOtherIndicator(boolean deliveryBuildingOtherIndicator);
431    
432        public List<PurApItem> getItems();
433    
434        public void setItems(List<PurApItem> items);
435    
436        /**
437         * @see org.kuali.kfs.module.purap.document.PurchasingAccountsPayableDocument#getItem(int)
438         */
439        public PurApItem getItem(int pos);
440    
441        /**
442         * @see org.kuali.kfs.module.purap.document.PurchasingAccountsPayableDocument#addItem(PurApItem item)
443         */
444        public void addItem(PurApItem item);
445    
446        /**
447         * @see org.kuali.kfs.module.purap.document.PurchasingAccountsPayableDocument#deleteItem(int lineNum)
448         */
449        public void deleteItem(int lineNum);
450    
451        /**
452         * @see org.kuali.kfs.sys.document.AccountingDocumentBase#getTotalDollarAmount()
453         */
454        public KualiDecimal getTotalDollarAmount();
455    
456        /**
457         * Sets vendor detail fields based on the specified Vendor Detail.
458         * 
459         * @param vendorDetail the specified Vendor Detail.
460         */
461        public void templateVendorDetail(VendorDetail vendorDetail);
462    
463        /**
464         * Sets vendor contract fields based on the specified Vendor Contract.
465         * 
466         * @param vendorContract the specified Vendor Contract.
467         */
468        public void templateVendorContract(VendorContract vendorContract);
469    
470        /**
471         * Sets billing address fields based on the specified Billing Address.
472         * 
473         * @param billingAddress the specified Billing Address.
474         */
475        public void templateBillingAddress(BillingAddress billingAddress);
476        
477        /**
478         * Sets receiving address fields based on the specified Receiving Address.
479         * 
480         * @param receivingAddress the specified Receiving Address.
481         */
482        public void templateReceivingAddress(ReceivingAddress receivingAddress);
483        
484        /**
485         * Loads the default receiving address from database corresponding to the chart/org of this document.
486         */
487        public void loadReceivingAddress();
488        
489        public boolean isReceivingDocumentRequiredIndicator() ;
490    
491        public void setReceivingDocumentRequiredIndicator(boolean receivingDocumentRequiredIndicator);
492        
493        public boolean isPaymentRequestPositiveApprovalIndicator();
494        
495        public void setPaymentRequestPositiveApprovalIndicator(boolean paymentRequestPositiveApprovalIndicator);
496    
497        public String getCapitalAssetSystemTypeCode();
498       
499        public void setCapitalAssetSystemTypeCode(String capitalAssetSystemTypeCode);
500      
501        public String getCapitalAssetSystemStateCode();
502       
503        public void setCapitalAssetSystemStateCode(String capitalAssetSystemStateCode);
504    
505        public CapitalAssetSystemType getCapitalAssetSystemType();
506    
507        public void setCapitalAssetSystemType(CapitalAssetSystemType capitalAssetSystemType);
508    
509        public CapitalAssetSystemState getCapitalAssetSystemState();
510    
511        public void setCapitalAssetSystemState(CapitalAssetSystemState capitalAssetSystemState);
512    
513        public List<CapitalAssetSystem> getPurchasingCapitalAssetSystems();
514        
515        public void setPurchasingCapitalAssetSystems(List<CapitalAssetSystem> purchasingCapitalAssetSystems);
516    
517        public List<PurchasingCapitalAssetItem> getPurchasingCapitalAssetItems();
518    
519        public void setPurchasingCapitalAssetItems(List<PurchasingCapitalAssetItem> purchasingCapitalAssetItems);
520    
521        public abstract Class getPurchasingCapitalAssetItemClass();
522        
523        public abstract Class getPurchasingCapitalAssetSystemClass();
524        
525        public PurchasingItem getPurchasingItem(Integer itemIdentifier);
526        
527        public PurchasingCapitalAssetItem getPurchasingCapitalAssetItem(Integer itemIdentifier);
528        
529        public abstract PurchasingDocumentSpecificService getDocumentSpecificService();
530    
531        public void clearCapitalAssetFields();
532        
533        public boolean shouldGiveErrorForEmptyAccountsProration();
534    }