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.ArrayList;
020    import java.util.Iterator;
021    import java.util.List;
022    
023    import org.apache.commons.lang.StringUtils;
024    import org.kuali.kfs.coa.businessobject.Account;
025    import org.kuali.kfs.coa.businessobject.Chart;
026    import org.kuali.kfs.coa.businessobject.Organization;
027    import org.kuali.kfs.integration.purap.CapitalAssetLocation;
028    import org.kuali.kfs.integration.purap.CapitalAssetSystem;
029    import org.kuali.kfs.integration.purap.ItemCapitalAsset;
030    import org.kuali.kfs.module.purap.PurapConstants;
031    import org.kuali.kfs.module.purap.PurapPropertyConstants;
032    import org.kuali.kfs.module.purap.businessobject.BillingAddress;
033    import org.kuali.kfs.module.purap.businessobject.CapitalAssetSystemState;
034    import org.kuali.kfs.module.purap.businessobject.CapitalAssetSystemType;
035    import org.kuali.kfs.module.purap.businessobject.DeliveryRequiredDateReason;
036    import org.kuali.kfs.module.purap.businessobject.FundingSource;
037    import org.kuali.kfs.module.purap.businessobject.PurApItem;
038    import org.kuali.kfs.module.purap.businessobject.PurchaseOrderTransmissionMethod;
039    import org.kuali.kfs.module.purap.businessobject.PurchasingCapitalAssetItem;
040    import org.kuali.kfs.module.purap.businessobject.PurchasingItem;
041    import org.kuali.kfs.module.purap.businessobject.PurchasingItemBase;
042    import org.kuali.kfs.module.purap.businessobject.ReceivingAddress;
043    import org.kuali.kfs.module.purap.businessobject.RecurringPaymentType;
044    import org.kuali.kfs.module.purap.businessobject.RequisitionSource;
045    import org.kuali.kfs.module.purap.document.service.PurapService;
046    import org.kuali.kfs.module.purap.document.service.PurchasingDocumentSpecificService;
047    import org.kuali.kfs.module.purap.document.service.PurchasingService;
048    import org.kuali.kfs.module.purap.document.service.ReceivingAddressService;
049    import org.kuali.kfs.module.purap.util.ItemParser;
050    import org.kuali.kfs.module.purap.util.ItemParserBase;
051    import org.kuali.kfs.sys.context.SpringContext;
052    import org.kuali.kfs.vnd.VendorPropertyConstants;
053    import org.kuali.kfs.vnd.businessobject.CampusParameter;
054    import org.kuali.kfs.vnd.businessobject.CommodityCode;
055    import org.kuali.kfs.vnd.businessobject.PurchaseOrderCostSource;
056    import org.kuali.kfs.vnd.businessobject.VendorAddress;
057    import org.kuali.kfs.vnd.businessobject.VendorContract;
058    import org.kuali.kfs.vnd.businessobject.VendorDetail;
059    import org.kuali.kfs.vnd.document.service.VendorService;
060    import org.kuali.rice.kns.bo.Country;
061    import org.kuali.rice.kns.rule.event.ApproveDocumentEvent;
062    import org.kuali.rice.kns.rule.event.KualiDocumentEvent;
063    import org.kuali.rice.kns.rule.event.RouteDocumentEvent;
064    import org.kuali.rice.kns.service.CountryService;
065    import org.kuali.rice.kns.service.DateTimeService;
066    import org.kuali.rice.kns.util.GlobalVariables;
067    import org.kuali.rice.kns.util.KualiDecimal;
068    import org.kuali.rice.kns.util.ObjectUtils;
069    import org.kuali.rice.kns.util.TypedArrayList;
070    
071    /**
072     * Base class for Purchasing Documents.
073     */
074    public abstract class PurchasingDocumentBase extends PurchasingAccountsPayableDocumentBase implements PurchasingDocument {
075        protected static org.apache.log4j.Logger LOG = org.apache.log4j.Logger.getLogger(PurchasingDocumentBase.class);
076    
077        // SHARED FIELDS BETWEEN REQUISITION AND PURCHASE ORDER
078        protected String documentFundingSourceCode;
079        protected String requisitionSourceCode;
080        protected String purchaseOrderTransmissionMethodCode;
081        protected String purchaseOrderCostSourceCode;
082        protected String deliveryRequiredDateReasonCode;
083        protected String recurringPaymentTypeCode;
084        protected String chartOfAccountsCode;
085        protected String organizationCode;
086        protected String deliveryCampusCode;
087        protected KualiDecimal purchaseOrderTotalLimit;
088        protected Boolean vendorRestrictedIndicator;
089        protected String vendorPhoneNumber;
090        protected String vendorFaxNumber;
091        protected Integer vendorContractGeneratedIdentifier;
092        protected String vendorNoteText;
093        protected String requestorPersonName;
094        protected String requestorPersonEmailAddress;
095        protected String requestorPersonPhoneNumber;
096        protected String nonInstitutionFundOrgChartOfAccountsCode;
097        protected String nonInstitutionFundOrganizationCode;
098        protected String nonInstitutionFundChartOfAccountsCode;
099        protected String nonInstitutionFundAccountNumber;
100        protected boolean deliveryBuildingOtherIndicator;
101        protected String deliveryBuildingCode;
102        protected String deliveryBuildingName;
103        protected String deliveryBuildingRoomNumber;
104        protected String deliveryBuildingLine1Address;
105        protected String deliveryBuildingLine2Address;
106        protected String deliveryCityName;
107        protected String deliveryStateCode;
108        protected String deliveryPostalCode;
109        protected String deliveryCountryCode;
110        protected String deliveryToName;
111        protected String deliveryToEmailAddress;
112        protected String deliveryToPhoneNumber;
113        protected Date deliveryRequiredDate;
114        protected String deliveryInstructionText;
115        protected Date purchaseOrderBeginDate;
116        protected Date purchaseOrderEndDate;
117        protected String institutionContactName;
118        protected String institutionContactPhoneNumber;
119        protected String institutionContactEmailAddress;
120        protected String billingName;
121        protected String billingLine1Address;
122        protected String billingLine2Address;
123        protected String billingCityName;
124        protected String billingStateCode;
125        protected String billingPostalCode;
126        protected String billingCountryCode;
127        protected String billingPhoneNumber;
128        protected String receivingName;
129        protected String receivingLine1Address;
130        protected String receivingLine2Address;
131        protected String receivingCityName;
132        protected String receivingStateCode;
133        protected String receivingPostalCode;
134        protected String receivingCountryCode;
135        protected boolean addressToVendorIndicator; // if true, use receiving address
136        protected String externalOrganizationB2bSupplierIdentifier;
137        protected boolean purchaseOrderAutomaticIndicator;
138        protected String vendorPaymentTermsCode;
139        protected String vendorShippingTitleCode;
140        protected String vendorShippingPaymentTermsCode;
141        protected String capitalAssetSystemTypeCode;
142        protected String capitalAssetSystemStateCode;
143    
144        // NOT PERSISTED IN DB
145        protected String supplierDiversityLabel;
146        protected String vendorContactsLabel;
147    
148        // REFERENCE OBJECTS
149        protected FundingSource fundingSource;
150        protected RequisitionSource requisitionSource;
151        protected PurchaseOrderTransmissionMethod purchaseOrderTransmissionMethod;
152        protected PurchaseOrderCostSource purchaseOrderCostSource;
153        protected DeliveryRequiredDateReason deliveryRequiredDateReason;
154        protected RecurringPaymentType recurringPaymentType;
155        protected Organization organization;
156        protected Chart chartOfAccounts;
157        protected CampusParameter deliveryCampus;
158        protected Chart nonInstitutionFundOrgChartOfAccounts;
159        protected Organization nonInstitutionFundOrganization;
160        protected Account nonInstitutionFundAccount;
161        protected Chart nonInstitutionFundChartOfAccounts;
162        protected VendorContract vendorContract;
163        protected CapitalAssetSystemType capitalAssetSystemType;
164        protected CapitalAssetSystemState capitalAssetSystemState;
165        protected List<CapitalAssetSystem> purchasingCapitalAssetSystems;
166        protected List<PurchasingCapitalAssetItem> purchasingCapitalAssetItems;
167        
168        protected boolean receivingDocumentRequiredIndicator;
169        protected boolean paymentRequestPositiveApprovalIndicator;
170    
171        protected List<CommodityCode> commodityCodesForRouting;
172        
173        /**
174         * Default Constructor.
175         */
176        public PurchasingDocumentBase() {
177            super();
178            
179            purchasingCapitalAssetItems = new TypedArrayList(getPurchasingCapitalAssetItemClass());
180            purchasingCapitalAssetSystems = new TypedArrayList(getPurchasingCapitalAssetSystemClass());
181        }
182    
183        public abstract PurchasingDocumentSpecificService getDocumentSpecificService();
184    
185        /**
186         * @see org.kuali.kfs.module.purap.document.PurchasingDocument#templateVendorDetail(org.kuali.kfs.vnd.businessobject.VendorDetail)
187         */
188        public void templateVendorDetail(VendorDetail vendorDetail) {
189            if (ObjectUtils.isNotNull(vendorDetail)) {
190                this.setVendorDetail(vendorDetail);
191                this.setVendorName(vendorDetail.getVendorName());
192                this.setVendorShippingTitleCode(vendorDetail.getVendorShippingTitleCode());
193                this.setVendorPaymentTermsCode(vendorDetail.getVendorPaymentTermsCode());
194                this.setVendorShippingPaymentTermsCode(vendorDetail.getVendorShippingPaymentTermsCode());
195                this.setVendorCustomerNumber("");
196            }
197        } 
198        /**
199         * @see org.kuali.kfs.module.purap.document.PurchasingDocument#templateVendorContract(org.kuali.kfs.vnd.businessobject.VendorContract)
200         */
201        public void templateVendorContract(VendorContract vendorContract) {
202            if (ObjectUtils.isNotNull(vendorContract)) {
203                this.setVendorContract(vendorContract);
204                this.setVendorContractGeneratedIdentifier(vendorContract.getVendorContractGeneratedIdentifier());
205                this.setVendorShippingTitleCode(vendorContract.getVendorShippingTitleCode());
206                this.setVendorPaymentTermsCode(vendorContract.getVendorPaymentTermsCode());
207                this.setVendorShippingPaymentTermsCode(vendorContract.getVendorShippingPaymentTermsCode());
208                this.setPurchaseOrderCostSourceCode(vendorContract.getPurchaseOrderCostSourceCode());
209            }
210        }
211    
212        /**
213         * @see org.kuali.kfs.module.purap.document.PurchasingAccountsPayableDocumentBase#templateVendorAddress(org.kuali.kfs.vnd.businessobject.VendorAddress)
214         */
215        public void templateVendorAddress(VendorAddress vendorAddress) {
216            super.templateVendorAddress(vendorAddress);
217            if (vendorAddress != null) {
218                this.setVendorFaxNumber(vendorAddress.getVendorFaxNumber());
219                this.setVendorAttentionName(vendorAddress.getVendorAttentionName());
220            }
221        }
222    
223        /**
224         * @see org.kuali.kfs.module.purap.document.PurchasingDocumentBase#templateBillingAddress(org.kuali.kfs.module.purap.businessobject.BillingAddress).
225         */
226        public void templateBillingAddress(BillingAddress billingAddress) {
227            if (ObjectUtils.isNotNull(billingAddress)) {
228                this.setBillingName(billingAddress.getBillingName());
229                this.setBillingLine1Address(billingAddress.getBillingLine1Address());
230                this.setBillingLine2Address(billingAddress.getBillingLine2Address());
231                this.setBillingCityName(billingAddress.getBillingCityName());
232                this.setBillingStateCode(billingAddress.getBillingStateCode());
233                this.setBillingPostalCode(billingAddress.getBillingPostalCode());
234                this.setBillingCountryCode(billingAddress.getBillingCountryCode());
235                this.setBillingPhoneNumber(billingAddress.getBillingPhoneNumber());
236            }
237        }
238    
239        /**
240         * @see org.kuali.kfs.module.purap.document.PurchasingDocumentBase#templateReceivingAddress(org.kuali.kfs.module.purap.businessobject.ReceivingAddress).
241         */
242        public void templateReceivingAddress(ReceivingAddress receivingAddress) {
243            if (receivingAddress != null) {
244                this.setReceivingName(receivingAddress.getReceivingName());
245                this.setReceivingLine1Address(receivingAddress.getReceivingLine1Address());
246                this.setReceivingLine2Address(receivingAddress.getReceivingLine2Address());
247                this.setReceivingCityName(receivingAddress.getReceivingCityName());
248                this.setReceivingStateCode(receivingAddress.getReceivingStateCode());
249                this.setReceivingPostalCode(receivingAddress.getReceivingPostalCode());
250                this.setReceivingCountryCode(receivingAddress.getReceivingCountryCode());            
251                this.setAddressToVendorIndicator(receivingAddress.isUseReceivingIndicator());
252            }
253            else {
254                this.setReceivingName(null);
255                this.setReceivingLine1Address(null);
256                this.setReceivingLine2Address(null);
257                this.setReceivingCityName(null);
258                this.setReceivingStateCode(null);
259                this.setReceivingPostalCode(null);
260                this.setReceivingCountryCode(null);            
261                this.setAddressToVendorIndicator(false);            
262            }
263        }
264    
265        /**
266         * Loads the default receiving address from database corresponding to the chart/org of this document.
267         */
268        public void loadReceivingAddress() {
269            /*
270            Map criteria = new HashMap();
271            criteria.put(KFSPropertyConstants.CHART_OF_ACCOUNTS_CODE, this.getChartOfAccountsCode());
272            criteria.put(KFSPropertyConstants.ORGANIZATION_CODE, this.getOrganizationCode());
273            criteria.put(PurapPropertyConstants.RCVNG_ADDR_DFLT_IND, true);        
274            criteria.put(PurapPropertyConstants.RCVNG_ADDR_ACTIVE, true);        
275            List<ReceivingAddress> addresses = (List)SpringContext.getBean(BusinessObjectService.class).findMatching(ReceivingAddress.class, criteria);
276            if (addresses != null && addresses.size()>0 ) 
277                this.templateReceivingAddress(addresses.get(0));        
278            else // if no address is found, fill with null
279                this.templateReceivingAddress(null);
280            */
281            String chartCode = getChartOfAccountsCode();
282            String orgCode = getOrganizationCode();
283            ReceivingAddress address = SpringContext.getBean(ReceivingAddressService.class).findUniqueDefaultByChartOrg(chartCode, orgCode);        
284            // if default address for chart/org not found, look for chart default 
285            if (address == null && orgCode != null) {
286                address = SpringContext.getBean(ReceivingAddressService.class).findUniqueDefaultByChartOrg(chartCode, null);
287            }
288            this.templateReceivingAddress(address);
289        }
290        
291        /**
292         * Iterates through the purchasingCapitalAssetItems of the document and returns the purchasingCapitalAssetItem with the item id equal to the number given, or null if a
293         * match is not found.
294         * 
295         * @param itemIdentifier item id to match on.
296         * @return the PurchasingCapitalAssetItem if a match is found, else null.
297         */
298        public PurchasingCapitalAssetItem getPurchasingCapitalAssetItemByItemIdentifier(int itemIdentifier) {
299            for (Iterator iter = purchasingCapitalAssetItems.iterator(); iter.hasNext();) {
300                PurchasingCapitalAssetItem camsItem = (PurchasingCapitalAssetItem) iter.next();
301                if (camsItem.getItemIdentifier().intValue() == itemIdentifier) {
302                    return camsItem;
303                }
304            }
305            return null;
306        }
307    
308    
309        /**
310         * @see org.kuali.kfs.module.purap.document.PurchasingAccountsPayableDocumentBase#addItem(org.kuali.kfs.module.purap.businessobject.PurApItem)
311         */
312        @Override
313        public void addItem(PurApItem item) {
314            item.refreshReferenceObject(PurapPropertyConstants.COMMODITY_CODE);
315            super.addItem(item);
316        }
317        
318        /**
319         * @see org.kuali.kfs.module.purap.document.PurchasingAccountsPayableDocumentBase#populateDocumentForRouting()
320         */
321        @Override
322        public void populateDocumentForRouting() {
323            commodityCodesForRouting = new ArrayList<CommodityCode>();
324            for (PurchasingItemBase item : (List<PurchasingItemBase>)this.getItems()) {
325                if (item.getCommodityCode() != null && !commodityCodesForRouting.contains(item.getCommodityCode())) {
326                    commodityCodesForRouting.add(item.getCommodityCode());
327                }
328            }
329            super.populateDocumentForRouting();
330        }
331    
332        // GETTERS AND SETTERS
333    
334        /**
335         * @see org.kuali.kfs.module.purap.document.PurchasingDocument.getItemParser().
336         */
337        public ItemParser getItemParser() {
338            return new ItemParserBase();
339        }
340        
341        public String getBillingCityName() {
342            return billingCityName;
343        }
344    
345        public void setBillingCityName(String billingCityName) {
346            this.billingCityName = billingCityName;
347        }
348    
349        public String getBillingCountryCode() {
350            return billingCountryCode;
351        }
352    
353        public void setBillingCountryCode(String billingCountryCode) {
354            this.billingCountryCode = billingCountryCode;
355        }
356    
357        public String getBillingCountryName() {
358            Country country = SpringContext.getBean(CountryService.class).getByPrimaryId(getBillingCountryCode());
359            //if (country == null)
360            //    country = SpringContext.getBean(CountryService.class).getDefaultCountry();
361            if (country != null)
362                return country.getPostalCountryName();
363            return null;
364        }
365       
366        public String getBillingLine1Address() {
367            return billingLine1Address;
368        }
369    
370        public void setBillingLine1Address(String billingLine1Address) {
371            this.billingLine1Address = billingLine1Address;
372        }
373    
374        public String getBillingLine2Address() {
375            return billingLine2Address;
376        }
377    
378        public void setBillingLine2Address(String billingLine2Address) {
379            this.billingLine2Address = billingLine2Address;
380        }
381    
382        public String getBillingName() {
383            return billingName;
384        }
385    
386        public void setBillingName(String billingName) {
387            this.billingName = billingName;
388        }
389    
390        public String getBillingPhoneNumber() {
391            return billingPhoneNumber;
392        }
393    
394        public void setBillingPhoneNumber(String billingPhoneNumber) {
395            this.billingPhoneNumber = billingPhoneNumber;
396        }
397    
398        public String getBillingPostalCode() {
399            return billingPostalCode;
400        }
401    
402        public void setBillingPostalCode(String billingPostalCode) {
403            this.billingPostalCode = billingPostalCode;
404        }
405    
406        public String getBillingStateCode() {
407            return billingStateCode;
408        }
409    
410        public void setBillingStateCode(String billingStateCode) {
411            this.billingStateCode = billingStateCode;
412        }
413    
414        public String getReceivingCityName() {
415            return receivingCityName;
416        }
417    
418        public void setReceivingCityName(String receivingCityName) {
419            this.receivingCityName = receivingCityName;
420        }
421    
422        public String getReceivingCountryCode() {
423            return receivingCountryCode;
424        }
425    
426        public void setReceivingCountryCode(String receivingCountryCode) {
427            this.receivingCountryCode = receivingCountryCode;
428        }
429    
430        public String getReceivingCountryName() {
431            Country country = SpringContext.getBean(CountryService.class).getByPrimaryId(getReceivingCountryCode());
432            //if (country == null)
433            //    country = SpringContext.getBean(CountryService.class).getDefaultCountry();
434            if (country != null)
435                return country.getPostalCountryName();
436            return null;
437        }
438    
439        public String getReceivingLine1Address() {
440            return receivingLine1Address;
441        }
442    
443        public void setReceivingLine1Address(String receivingLine1Address) {
444            this.receivingLine1Address = receivingLine1Address;
445        }
446    
447        public String getReceivingLine2Address() {
448            return receivingLine2Address;
449        }
450    
451        public void setReceivingLine2Address(String receivingLine2Address) {
452            this.receivingLine2Address = receivingLine2Address;
453        }
454    
455        public String getReceivingName() {
456            return receivingName;
457        }
458    
459        public void setReceivingName(String receivingName) {
460            this.receivingName = receivingName;
461        }
462    
463        public String getReceivingPostalCode() {
464            return receivingPostalCode;
465        }
466    
467        public void setReceivingPostalCode(String receivingPostalCode) {
468            this.receivingPostalCode = receivingPostalCode;
469        }
470    
471        public String getReceivingStateCode() {
472            return receivingStateCode;
473        }
474    
475        public void setReceivingStateCode(String receivingStateCode) {
476            this.receivingStateCode = receivingStateCode;
477        }
478    
479        public boolean getAddressToVendorIndicator() {
480            return addressToVendorIndicator;
481        }
482    
483        public void setAddressToVendorIndicator(boolean addressToVendor) {
484            this.addressToVendorIndicator = addressToVendor;
485        }
486        
487        public String getChartOfAccountsCode() {
488            return chartOfAccountsCode;
489        }
490    
491        public void setChartOfAccountsCode(String chartOfAccountsCode) {
492            this.chartOfAccountsCode = chartOfAccountsCode;
493        }
494    
495        public String getDeliveryBuildingCode() {
496            return deliveryBuildingCode;
497        }
498    
499        public void setDeliveryBuildingCode(String deliveryBuildingCode) {
500            this.deliveryBuildingCode = deliveryBuildingCode;
501        }
502    
503        public String getDeliveryBuildingLine1Address() {
504            return deliveryBuildingLine1Address;
505        }
506    
507        public void setDeliveryBuildingLine1Address(String deliveryBuildingLine1Address) {
508            this.deliveryBuildingLine1Address = deliveryBuildingLine1Address;
509        }
510    
511        public String getDeliveryBuildingLine2Address() {
512            return deliveryBuildingLine2Address;
513        }
514    
515        public void setDeliveryBuildingLine2Address(String deliveryBuildingLine2Address) {
516            this.deliveryBuildingLine2Address = deliveryBuildingLine2Address;
517        }
518    
519        public String getDeliveryBuildingName() {
520            return deliveryBuildingName;
521        }
522    
523        public void setDeliveryBuildingName(String deliveryBuildingName) {
524            this.deliveryBuildingName = deliveryBuildingName;
525        }
526    
527        public boolean isDeliveryBuildingOtherIndicator() {
528            return deliveryBuildingOtherIndicator;
529        }
530    
531        public void setDeliveryBuildingOtherIndicator(boolean deliveryBuildingOtherIndicator) {
532            this.deliveryBuildingOtherIndicator = deliveryBuildingOtherIndicator;
533        }
534    
535        public String getDeliveryBuildingRoomNumber() {
536            return deliveryBuildingRoomNumber;
537        }
538    
539        public void setDeliveryBuildingRoomNumber(String deliveryBuildingRoomNumber) {
540            this.deliveryBuildingRoomNumber = deliveryBuildingRoomNumber;
541        }
542    
543        public String getDeliveryCampusCode() {
544            return deliveryCampusCode;
545        }
546    
547        public void setDeliveryCampusCode(String deliveryCampusCode) {
548            this.deliveryCampusCode = deliveryCampusCode;
549        }
550    
551        public String getDeliveryCityName() {
552            return deliveryCityName;
553        }
554    
555        public void setDeliveryCityName(String deliveryCityName) {
556            this.deliveryCityName = deliveryCityName;
557        }
558    
559        public String getDeliveryCountryCode() {
560            return deliveryCountryCode;
561        }
562    
563        public String getDeliveryCountryName() {
564            Country country = SpringContext.getBean(CountryService.class).getByPrimaryId(getDeliveryCountryCode());
565            if (country != null)
566                return country.getPostalCountryName();
567            return null;
568        }
569    
570        public void setDeliveryCountryCode(String deliveryCountryCode) {
571            this.deliveryCountryCode = deliveryCountryCode;
572        }
573    
574        
575        public String getDeliveryInstructionText() {
576            return deliveryInstructionText;
577        }
578    
579        public void setDeliveryInstructionText(String deliveryInstructionText) {
580            this.deliveryInstructionText = deliveryInstructionText;
581        }
582    
583        public String getDeliveryPostalCode() {
584            return deliveryPostalCode;
585        }
586    
587        public void setDeliveryPostalCode(String deliveryPostalCode) {
588            this.deliveryPostalCode = deliveryPostalCode;
589        }
590    
591        public Date getDeliveryRequiredDate() {
592            return deliveryRequiredDate;
593        }
594    
595        public void setDeliveryRequiredDate(Date deliveryRequiredDate) {
596            this.deliveryRequiredDate = deliveryRequiredDate;
597        }
598    
599        public String getDeliveryRequiredDateReasonCode() {
600            return deliveryRequiredDateReasonCode;
601        }
602    
603        public void setDeliveryRequiredDateReasonCode(String deliveryRequiredDateReasonCode) {
604            this.deliveryRequiredDateReasonCode = deliveryRequiredDateReasonCode;
605        }
606    
607        public String getDeliveryStateCode() {
608            return deliveryStateCode;
609        }
610    
611        public void setDeliveryStateCode(String deliveryStateCode) {
612            this.deliveryStateCode = deliveryStateCode;
613        }
614    
615        public String getDeliveryToEmailAddress() {
616            return deliveryToEmailAddress;
617        }
618    
619        public void setDeliveryToEmailAddress(String deliveryToEmailAddress) {
620            this.deliveryToEmailAddress = deliveryToEmailAddress;
621        }
622    
623        public String getDeliveryToName() {
624            return deliveryToName;
625        }
626    
627        public void setDeliveryToName(String deliveryToName) {
628            this.deliveryToName = deliveryToName;
629        }
630    
631        public String getDeliveryToPhoneNumber() {
632            return deliveryToPhoneNumber;
633        }
634    
635        public void setDeliveryToPhoneNumber(String deliveryToPhoneNumber) {
636            this.deliveryToPhoneNumber = deliveryToPhoneNumber;
637        }
638    
639        public String getExternalOrganizationB2bSupplierIdentifier() {
640            return externalOrganizationB2bSupplierIdentifier;
641        }
642    
643        public void setExternalOrganizationB2bSupplierIdentifier(String externalOrganizationB2bSupplierIdentifier) {
644            this.externalOrganizationB2bSupplierIdentifier = externalOrganizationB2bSupplierIdentifier;
645        }
646    
647        public String getDocumentFundingSourceCode() {
648            return documentFundingSourceCode;
649        }
650    
651        public void setDocumentFundingSourceCode(String documentFundingSourceCode) {
652            this.documentFundingSourceCode = documentFundingSourceCode;
653        }
654    
655        public String getInstitutionContactEmailAddress() {
656            return institutionContactEmailAddress;
657        }
658    
659        public void setInstitutionContactEmailAddress(String institutionContactEmailAddress) {
660            this.institutionContactEmailAddress = institutionContactEmailAddress;
661        }
662    
663        public String getInstitutionContactName() {
664            return institutionContactName;
665        }
666    
667        public void setInstitutionContactName(String institutionContactName) {
668            this.institutionContactName = institutionContactName;
669        }
670    
671        public String getInstitutionContactPhoneNumber() {
672            return institutionContactPhoneNumber;
673        }
674    
675        public void setInstitutionContactPhoneNumber(String institutionContactPhoneNumber) {
676            this.institutionContactPhoneNumber = institutionContactPhoneNumber;
677        }
678    
679        public String getNonInstitutionFundAccountNumber() {
680            return nonInstitutionFundAccountNumber;
681        }
682    
683        public void setNonInstitutionFundAccountNumber(String nonInstitutionFundAccountNumber) {
684            this.nonInstitutionFundAccountNumber = nonInstitutionFundAccountNumber;
685        }
686    
687        public String getNonInstitutionFundChartOfAccountsCode() {
688            return nonInstitutionFundChartOfAccountsCode;
689        }
690    
691        public void setNonInstitutionFundChartOfAccountsCode(String nonInstitutionFundChartOfAccountsCode) {
692            this.nonInstitutionFundChartOfAccountsCode = nonInstitutionFundChartOfAccountsCode;
693        }
694    
695        public String getNonInstitutionFundOrganizationCode() {
696            return nonInstitutionFundOrganizationCode;
697        }
698    
699        public void setNonInstitutionFundOrganizationCode(String nonInstitutionFundOrganizationCode) {
700            this.nonInstitutionFundOrganizationCode = nonInstitutionFundOrganizationCode;
701        }
702    
703        public String getNonInstitutionFundOrgChartOfAccountsCode() {
704            return nonInstitutionFundOrgChartOfAccountsCode;
705        }
706    
707        public void setNonInstitutionFundOrgChartOfAccountsCode(String nonInstitutionFundOrgChartOfAccountsCode) {
708            this.nonInstitutionFundOrgChartOfAccountsCode = nonInstitutionFundOrgChartOfAccountsCode;
709        }
710    
711        public String getOrganizationCode() {
712            return organizationCode;
713        }
714    
715        public void setOrganizationCode(String organizationCode) {
716            this.organizationCode = organizationCode;
717        }
718    
719        public boolean getPurchaseOrderAutomaticIndicator() {
720            return purchaseOrderAutomaticIndicator;
721        }
722    
723        public void setPurchaseOrderAutomaticIndicator(boolean purchaseOrderAutomaticIndicator) {
724            this.purchaseOrderAutomaticIndicator = purchaseOrderAutomaticIndicator;
725        }
726    
727        public Date getPurchaseOrderBeginDate() {
728            return purchaseOrderBeginDate;
729        }
730    
731        public void setPurchaseOrderBeginDate(Date purchaseOrderBeginDate) {
732            this.purchaseOrderBeginDate = purchaseOrderBeginDate;
733        }
734    
735        public String getPurchaseOrderCostSourceCode() {
736            return purchaseOrderCostSourceCode;
737        }
738    
739        public void setPurchaseOrderCostSourceCode(String purchaseOrderCostSourceCode) {
740            this.purchaseOrderCostSourceCode = purchaseOrderCostSourceCode;
741        }
742    
743        public Date getPurchaseOrderEndDate() {
744            return purchaseOrderEndDate;
745        }
746    
747        public void setPurchaseOrderEndDate(Date purchaseOrderEndDate) {
748            this.purchaseOrderEndDate = purchaseOrderEndDate;
749        }
750    
751        public KualiDecimal getPurchaseOrderTotalLimit() {
752            return purchaseOrderTotalLimit;
753        }
754    
755        public void setPurchaseOrderTotalLimit(KualiDecimal purchaseOrderTotalLimit) {
756            this.purchaseOrderTotalLimit = purchaseOrderTotalLimit;
757        }
758    
759        public String getPurchaseOrderTransmissionMethodCode() {
760            return purchaseOrderTransmissionMethodCode;
761        }
762    
763        public void setPurchaseOrderTransmissionMethodCode(String purchaseOrderTransmissionMethodCode) {
764            this.purchaseOrderTransmissionMethodCode = purchaseOrderTransmissionMethodCode;
765        }
766    
767        public String getRecurringPaymentTypeCode() {
768            return recurringPaymentTypeCode;
769        }
770    
771        public void setRecurringPaymentTypeCode(String recurringPaymentTypeCode) {
772            this.recurringPaymentTypeCode = recurringPaymentTypeCode;
773        }
774    
775        public String getRequestorPersonEmailAddress() {
776            return requestorPersonEmailAddress;
777        }
778    
779        public void setRequestorPersonEmailAddress(String requestorPersonEmailAddress) {
780            this.requestorPersonEmailAddress = requestorPersonEmailAddress;
781        }
782    
783        public String getRequestorPersonName() {
784            return requestorPersonName;
785        }
786    
787        public void setRequestorPersonName(String requestorPersonName) {
788            this.requestorPersonName = requestorPersonName;
789        }
790    
791        public String getRequestorPersonPhoneNumber() {
792            return requestorPersonPhoneNumber;
793        }
794    
795        public void setRequestorPersonPhoneNumber(String requestorPersonPhoneNumber) {
796            this.requestorPersonPhoneNumber = requestorPersonPhoneNumber;
797        }
798    
799        public String getRequisitionSourceCode() {
800            return requisitionSourceCode;
801        }
802    
803        public void setRequisitionSourceCode(String requisitionSourceCode) {
804            this.requisitionSourceCode = requisitionSourceCode;
805        }
806    
807        public String getVendorContactsLabel() {
808            return vendorContactsLabel;
809        }
810    
811        public void setVendorContactsLabel(String vendorContactsLabel) {
812            this.vendorContactsLabel = vendorContactsLabel;
813        }
814    
815        public VendorContract getVendorContract() {
816            if (ObjectUtils.isNull(vendorContract))
817                refreshReferenceObject(PurapPropertyConstants.VENDOR_CONTRACT);
818            return vendorContract;
819        }
820    
821        public void setVendorContract(VendorContract vendorContract) {
822            this.vendorContract = vendorContract;
823        }
824    
825        public Integer getVendorContractGeneratedIdentifier() {
826            return vendorContractGeneratedIdentifier;
827        }
828    
829        public void setVendorContractGeneratedIdentifier(Integer vendorContractGeneratedIdentifier) {
830            this.vendorContractGeneratedIdentifier = vendorContractGeneratedIdentifier;
831        }
832    
833        public String getVendorContractName() {
834            getVendorContract();
835            if (ObjectUtils.isNull(vendorContract)) {
836                return "";
837            }
838            else {
839                return vendorContract.getVendorContractName();
840            }
841        }
842    
843        public String getVendorFaxNumber() {
844            return vendorFaxNumber;
845        }
846    
847        public void setVendorFaxNumber(String vendorFaxNumber) {
848            this.vendorFaxNumber = vendorFaxNumber;
849        }
850    
851        public String getVendorNoteText() {
852            return vendorNoteText;
853        }
854    
855        public void setVendorNoteText(String vendorNoteText) {
856            this.vendorNoteText = vendorNoteText;
857        }
858    
859        public String getVendorPaymentTermsCode() {
860            return vendorPaymentTermsCode;
861        }
862    
863        public void setVendorPaymentTermsCode(String vendorPaymentTermsCode) {
864            this.vendorPaymentTermsCode = vendorPaymentTermsCode;
865        }
866    
867        public String getVendorPhoneNumber() {
868            return vendorPhoneNumber;
869        }
870    
871        public void setVendorPhoneNumber(String vendorPhoneNumber) {
872            this.vendorPhoneNumber = vendorPhoneNumber;
873        }
874    
875        public Boolean getVendorRestrictedIndicator() {
876            return vendorRestrictedIndicator;
877        }
878    
879        public void setVendorRestrictedIndicator(Boolean vendorRestrictedIndicator) {
880            this.vendorRestrictedIndicator = vendorRestrictedIndicator;
881        }
882    
883        public String getVendorShippingPaymentTermsCode() {
884            return vendorShippingPaymentTermsCode;
885        }
886    
887        public void setVendorShippingPaymentTermsCode(String vendorShippingPaymentTermsCode) {
888            this.vendorShippingPaymentTermsCode = vendorShippingPaymentTermsCode;
889        }
890    
891        public String getVendorShippingTitleCode() {
892            return vendorShippingTitleCode;
893        }
894    
895        public void setVendorShippingTitleCode(String vendorShippingTitleCode) {
896            this.vendorShippingTitleCode = vendorShippingTitleCode;
897        }
898    
899        public Chart getChartOfAccounts() {
900            return chartOfAccounts;
901        }
902    
903        public CampusParameter getDeliveryCampus() {
904            return deliveryCampus;
905        }
906    
907        public DeliveryRequiredDateReason getDeliveryRequiredDateReason() {
908            return deliveryRequiredDateReason;
909        }
910    
911        public FundingSource getFundingSource() {
912            return fundingSource;
913        }
914    
915        public Account getNonInstitutionFundAccount() {
916            return nonInstitutionFundAccount;
917        }
918    
919        public Chart getNonInstitutionFundChartOfAccounts() {
920            return nonInstitutionFundChartOfAccounts;
921        }
922    
923        public Organization getNonInstitutionFundOrganization() {
924            return nonInstitutionFundOrganization;
925        }
926    
927        public Chart getNonInstitutionFundOrgChartOfAccounts() {
928            return nonInstitutionFundOrgChartOfAccounts;
929        }
930    
931        public Organization getOrganization() {
932            return organization;
933        }
934    
935        public PurchaseOrderTransmissionMethod getPurchaseOrderTransmissionMethod() {
936            return purchaseOrderTransmissionMethod;
937        }
938    
939        public RecurringPaymentType getRecurringPaymentType() {
940            return recurringPaymentType;
941        }
942    
943        public RequisitionSource getRequisitionSource() {
944            return requisitionSource;
945        }
946    
947        public String getSupplierDiversityLabel() {
948            return supplierDiversityLabel;
949        }
950    
951        public PurchaseOrderCostSource getPurchaseOrderCostSource() {
952            if (ObjectUtils.isNull(purchaseOrderCostSource))
953                refreshReferenceObject(PurapPropertyConstants.PURCHASE_ORDER_COST_SOURCE);
954            return purchaseOrderCostSource;
955        }
956    
957        /**
958         * @deprecated
959         */
960        public void setChartOfAccounts(Chart chartOfAccounts) {
961            this.chartOfAccounts = chartOfAccounts;
962        }
963    
964        /**
965         * @deprecated
966         */
967        public void setDeliveryCampus(CampusParameter deliveryCampus) {
968            this.deliveryCampus = deliveryCampus;
969        }
970    
971        /**
972         * @deprecated
973         */
974        public void setDeliveryRequiredDateReason(DeliveryRequiredDateReason deliveryRequiredDateReason) {
975            this.deliveryRequiredDateReason = deliveryRequiredDateReason;
976        }
977    
978        /**
979         * @deprecated
980         */
981        public void setFundingSource(FundingSource fundingSource) {
982            this.fundingSource = fundingSource;
983        }
984    
985        /**
986         * @deprecated
987         */
988        public void setNonInstitutionFundAccount(Account nonInstitutionFundAccount) {
989            this.nonInstitutionFundAccount = nonInstitutionFundAccount;
990        }
991    
992        /**
993         * @deprecated
994         */
995        public void setNonInstitutionFundChartOfAccounts(Chart nonInstitutionFundChartOfAccounts) {
996            this.nonInstitutionFundChartOfAccounts = nonInstitutionFundChartOfAccounts;
997        }
998    
999        /**
1000         * @deprecated
1001         */
1002        public void setNonInstitutionFundOrganization(Organization nonInstitutionFundOrganization) {
1003            this.nonInstitutionFundOrganization = nonInstitutionFundOrganization;
1004        }
1005    
1006        /**
1007         * @deprecated
1008         */
1009        public void setNonInstitutionFundOrgChartOfAccounts(Chart nonInstitutionFundOrgChartOfAccounts) {
1010            this.nonInstitutionFundOrgChartOfAccounts = nonInstitutionFundOrgChartOfAccounts;
1011        }
1012    
1013        /**
1014         * @deprecated
1015         */
1016        public void setOrganization(Organization organization) {
1017            this.organization = organization;
1018        }
1019    
1020        /**
1021         * @deprecated
1022         */
1023        public void setPurchaseOrderCostSource(PurchaseOrderCostSource purchaseOrderCostSource) {
1024            this.purchaseOrderCostSource = purchaseOrderCostSource;
1025        }
1026    
1027        /**
1028         * @deprecated
1029         */
1030        public void setPurchaseOrderTransmissionMethod(PurchaseOrderTransmissionMethod purchaseOrderTransmissionMethod) {
1031            this.purchaseOrderTransmissionMethod = purchaseOrderTransmissionMethod;
1032        }
1033    
1034        /**
1035         * @deprecated
1036         */
1037        public void setRecurringPaymentType(RecurringPaymentType recurringPaymentType) {
1038            this.recurringPaymentType = recurringPaymentType;
1039        }
1040    
1041        /**
1042         * @deprecated
1043         */
1044        public void setRequisitionSource(RequisitionSource requisitionSource) {
1045            this.requisitionSource = requisitionSource;
1046        }
1047    
1048        /**
1049         * Gets the receivingDocumentRequiredIndicator attribute. 
1050         * @return Returns the receivingDocumentRequiredIndicator.
1051         */
1052        public boolean isReceivingDocumentRequiredIndicator() {
1053            return receivingDocumentRequiredIndicator;
1054        }
1055        
1056        /**
1057         * Sets the receivingDocumentRequiredIndicator attribute value.
1058         * @param receivingDocumentRequiredIndicator The receivingDocumentRequiredIndicator to set.
1059         */
1060        public void setReceivingDocumentRequiredIndicator(boolean receivingDocumentRequiredIndicator) {
1061            this.receivingDocumentRequiredIndicator = receivingDocumentRequiredIndicator;
1062        }
1063    
1064        public boolean isPaymentRequestPositiveApprovalIndicator() {
1065            return paymentRequestPositiveApprovalIndicator;
1066        }
1067    
1068        public void setPaymentRequestPositiveApprovalIndicator(boolean paymentRequestPositiveApprovalIndicator) {
1069            this.paymentRequestPositiveApprovalIndicator = paymentRequestPositiveApprovalIndicator;
1070        }
1071    
1072        public List<CommodityCode> getCommodityCodesForRouting() {
1073            return commodityCodesForRouting;
1074        }
1075    
1076        public void setCommodityCodesForRouting(List<CommodityCode> commodityCodesForRouting) {
1077            this.commodityCodesForRouting = commodityCodesForRouting;
1078        }
1079    
1080        public String getCapitalAssetSystemTypeCode() {
1081            return capitalAssetSystemTypeCode;
1082        }
1083    
1084        public void setCapitalAssetSystemTypeCode(String capitalAssetSystemTypeCode) {
1085            this.capitalAssetSystemTypeCode = capitalAssetSystemTypeCode;
1086        }
1087    
1088        public String getCapitalAssetSystemStateCode() {
1089            return capitalAssetSystemStateCode;
1090        }
1091    
1092        public void setCapitalAssetSystemStateCode(String capitalAssetSystemStateCode) {
1093            this.capitalAssetSystemStateCode = capitalAssetSystemStateCode;
1094        }
1095    
1096        public CapitalAssetSystemType getCapitalAssetSystemType() {
1097            if(ObjectUtils.isNull(capitalAssetSystemType)){
1098                this.refreshReferenceObject("capitalAssetSystemType");
1099            }
1100            return capitalAssetSystemType;
1101        }
1102    
1103        public void setCapitalAssetSystemType(CapitalAssetSystemType capitalAssetSystemType) {
1104            this.capitalAssetSystemType = capitalAssetSystemType;
1105        }
1106    
1107        public CapitalAssetSystemState getCapitalAssetSystemState() {
1108            if(ObjectUtils.isNull(capitalAssetSystemState)){
1109                this.refreshReferenceObject("capitalAssetSystemState");
1110            }
1111            return capitalAssetSystemState;
1112        }
1113    
1114        public void setCapitalAssetSystemState(CapitalAssetSystemState capitalAssetSystemState) {
1115            this.capitalAssetSystemState = capitalAssetSystemState;
1116        }
1117    
1118        public List<CapitalAssetSystem> getPurchasingCapitalAssetSystems() {
1119            return purchasingCapitalAssetSystems;
1120        }
1121    
1122        public void setPurchasingCapitalAssetSystems(List<CapitalAssetSystem> purchasingCapitalAssetSystems) {
1123            this.purchasingCapitalAssetSystems = purchasingCapitalAssetSystems;
1124        }
1125    
1126        public List<PurchasingCapitalAssetItem> getPurchasingCapitalAssetItems() {
1127            return purchasingCapitalAssetItems;
1128        }
1129    
1130        public void setPurchasingCapitalAssetItems(List<PurchasingCapitalAssetItem> purchasingCapitalAssetItems) {
1131            this.purchasingCapitalAssetItems = purchasingCapitalAssetItems;
1132        }
1133        
1134        public abstract Class getPurchasingCapitalAssetItemClass();
1135    
1136        public abstract Class getPurchasingCapitalAssetSystemClass();
1137        
1138        public PurchasingItem getPurchasingItem(Integer itemIdentifier){
1139            
1140            if(ObjectUtils.isNull(itemIdentifier)) return null;
1141            
1142            PurchasingItem item = null;
1143                    
1144            for(PurchasingItem pi: (List<PurchasingItem>)this.getItems()){
1145                if(itemIdentifier.equals(pi.getItemIdentifier())){
1146                    item = pi;
1147                    break;
1148                }
1149            }
1150            
1151            return item;
1152        }
1153        
1154        public PurchasingCapitalAssetItem getPurchasingCapitalAssetItem(Integer itemIdentifier){
1155    
1156            if(ObjectUtils.isNull(itemIdentifier)) return null;
1157            
1158            PurchasingCapitalAssetItem item = null;
1159            
1160            for(PurchasingCapitalAssetItem pcai: this.getPurchasingCapitalAssetItems()){
1161                if(itemIdentifier.equals(pcai.getItemIdentifier())){
1162                    item = pcai;
1163                    break;
1164                }
1165            }
1166            
1167            return item;
1168        }
1169        
1170        /**
1171         * @see org.kuali.kfs.module.purap.document.PurchasingAccountsPayableDocumentBase#buildListOfDeletionAwareLists()
1172         */
1173        @Override
1174        public List buildListOfDeletionAwareLists() {
1175            List managedLists = super.buildListOfDeletionAwareLists();
1176            if (allowDeleteAwareCollection) {
1177                List<ItemCapitalAsset> assetLists = new ArrayList<ItemCapitalAsset>();
1178                List<CapitalAssetLocation>capitalAssetLocationLists = new ArrayList<CapitalAssetLocation>();
1179                if (StringUtils.equals(this.getCapitalAssetSystemTypeCode(),PurapConstants.CapitalAssetSystemTypes.INDIVIDUAL)) {
1180                    for (PurchasingCapitalAssetItem capitalAssetItem : this.getPurchasingCapitalAssetItems()) {
1181                        //We only need to add the itemCapitalAssets to assetLists if the system is not null, otherwise 
1182                        //just let the assetLists be empty ArrayList.
1183                        if (capitalAssetItem.getPurchasingCapitalAssetSystem() != null) {
1184                            assetLists.addAll(capitalAssetItem.getPurchasingCapitalAssetSystem().getItemCapitalAssets());
1185                            capitalAssetLocationLists.addAll(capitalAssetItem.getPurchasingCapitalAssetSystem().getCapitalAssetLocations());
1186                        }
1187                    }
1188                }
1189                else {
1190                    for (CapitalAssetSystem system : this.getPurchasingCapitalAssetSystems()) {
1191                        assetLists.addAll(system.getItemCapitalAssets());
1192                        capitalAssetLocationLists.addAll(system.getCapitalAssetLocations());
1193                    }
1194                }
1195                managedLists.add(assetLists);
1196                managedLists.add(capitalAssetLocationLists);
1197                managedLists.add(this.getPurchasingCapitalAssetSystems());
1198                managedLists.add(this.getPurchasingCapitalAssetItems());
1199            }
1200            return managedLists;
1201        }
1202        
1203        /**
1204         * Overrides the method in PurchasingAccountsPayableDocumentBase to remove the
1205         * purchasingCapitalAssetSystem when the system type is either ONE or MULT.
1206         * 
1207         * @see org.kuali.kfs.module.purap.document.PurchasingAccountsPayableDocumentBase#prepareForSave(org.kuali.rice.kns.rule.event.KualiDocumentEvent)
1208         */
1209        @Override
1210        public void prepareForSave(KualiDocumentEvent event) {
1211            super.prepareForSave(event);
1212            if (StringUtils.isNotBlank(this.getCapitalAssetSystemTypeCode())) {
1213                if (this.getCapitalAssetSystemTypeCode().equals(PurapConstants.CapitalAssetSystemTypes.ONE_SYSTEM) || this.getCapitalAssetSystemTypeCode().equals(PurapConstants.CapitalAssetSystemTypes.MULTIPLE)) {
1214                    //If the system state is ONE or MULT, we have to remove all the systems on the items because it's not applicable.
1215                    for (PurchasingCapitalAssetItem camsItem : this.getPurchasingCapitalAssetItems()) {
1216                        camsItem.setPurchasingCapitalAssetSystem(null);
1217                    }
1218                }
1219            }
1220            if (event instanceof RouteDocumentEvent || event instanceof ApproveDocumentEvent) {
1221    
1222                boolean defaultUseTaxIndicatorValue = SpringContext.getBean(PurchasingService.class).getDefaultUseTaxIndicatorValue(this);
1223                SpringContext.getBean(PurapService.class).updateUseTaxIndicator(this, defaultUseTaxIndicatorValue);
1224            }
1225        }
1226        
1227        public Date getTransactionTaxDate() {
1228            return SpringContext.getBean(DateTimeService.class).getCurrentSqlDate();
1229        }
1230    
1231        public void clearCapitalAssetFields() {
1232            this.setPurchasingCapitalAssetItems(new TypedArrayList(getPurchasingCapitalAssetItemClass()));
1233            this.setPurchasingCapitalAssetSystems(new TypedArrayList(getPurchasingCapitalAssetSystemClass()));
1234            this.setCapitalAssetSystemStateCode(null);
1235            this.setCapitalAssetSystemTypeCode(null);
1236            this.setCapitalAssetSystemState(null);
1237            this.setCapitalAssetSystemType(null);
1238            
1239        }
1240    
1241        /**
1242         * @return the payment request positive approval indicator
1243         */
1244        public boolean getPaymentRequestPositiveApprovalIndicatorForSearching() {
1245            return paymentRequestPositiveApprovalIndicator;
1246        }
1247        
1248        /**
1249         * @return the receiving document required indicator
1250         */
1251        public boolean getReceivingDocumentRequiredIndicatorForSearching() {
1252            return receivingDocumentRequiredIndicator;
1253        }
1254        
1255        public String getDocumentChartOfAccountsCodeForSearching(){
1256            return chartOfAccountsCode;
1257        }
1258        
1259        public String getDocumentOrganizationCodeForSearching(){
1260            return organizationCode;
1261        }
1262        
1263        public boolean shouldGiveErrorForEmptyAccountsProration() {
1264            return true;
1265        }
1266        
1267        public String getChartAndOrgCodeForResult(){
1268            return getChartOfAccountsCode() + "-" + getOrganizationCode();
1269        }
1270        
1271        public String getDeliveryCampusCodeForSearch(){
1272            return getDeliveryCampusCode();
1273        }
1274        
1275        public boolean getHasB2BVendor() {
1276            if (getVendorHeaderGeneratedIdentifier() != null) {
1277                refreshReferenceObject(VendorPropertyConstants.VENDOR_DETAIL);
1278                String campusCode = GlobalVariables.getUserSession().getPerson().getCampusCode();
1279                VendorDetail vendorDetail = getVendorDetail();
1280                if (vendorDetail == null || StringUtils.isEmpty(campusCode))
1281                    return false; // this should never happen
1282                return SpringContext.getBean(VendorService.class).getVendorB2BContract(vendorDetail, campusCode) != null;
1283            }
1284            return false;
1285        }
1286    }