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.cam.businessobject;
017
018 import java.sql.Date;
019 import java.util.ArrayList;
020 import java.util.LinkedHashMap;
021 import java.util.List;
022
023 import org.kuali.kfs.coa.businessobject.Account;
024 import org.kuali.kfs.coa.businessobject.Chart;
025 import org.kuali.kfs.integration.cg.ContractsAndGrantsAgency;
026 import org.kuali.kfs.module.cam.document.service.AssetGlobalService;
027 import org.kuali.kfs.sys.businessobject.FinancialSystemDocumentHeader;
028 import org.kuali.kfs.sys.businessobject.GeneralLedgerPendingEntry;
029 import org.kuali.kfs.sys.context.SpringContext;
030 import org.kuali.rice.kew.routeheader.DocumentRouteHeaderValue;
031 import org.kuali.rice.kew.routeheader.service.RouteHeaderService;
032 import org.kuali.rice.kim.bo.Person;
033 import org.kuali.rice.kns.bo.GlobalBusinessObject;
034 import org.kuali.rice.kns.bo.GlobalBusinessObjectDetail;
035 import org.kuali.rice.kns.bo.PersistableBusinessObject;
036 import org.kuali.rice.kns.bo.PersistableBusinessObjectBase;
037 import org.kuali.rice.kns.service.DateTimeService;
038 import org.kuali.rice.kns.service.KualiModuleService;
039 import org.kuali.rice.kns.util.KualiDecimal;
040 import org.kuali.rice.kns.util.TypedArrayList;
041
042 /**
043 * @author Kuali Nervous System Team (kualidev@oncourse.iu.edu)
044 */
045 public class AssetGlobal extends PersistableBusinessObjectBase implements GlobalBusinessObject {
046
047 private static org.apache.log4j.Logger LOG = org.apache.log4j.Logger.getLogger(AssetGlobal.class);
048
049 private String documentNumber;
050 private String acquisitionTypeCode;
051 private String capitalAssetDescription;
052 private String inventoryStatusCode;
053 private String conditionCode;
054 private String capitalAssetTypeCode;
055 private String manufacturerName;
056 private String manufacturerModelNumber;
057 private KualiDecimal totalCostAmount;
058 private String landCountyName;
059 private Integer landAcreageSize;
060 private String landParcelNumber;
061 private String vendorName;
062 private String organizationText;
063 private Date createDate;
064 private Date capitalAssetInServiceDate;
065 private Date capitalAssetDepreciationDate;
066 private String representativeUniversalIdentifier;
067 private String organizationOwnerChartOfAccountsCode;
068 private String organizationOwnerAccountNumber;
069 private String agencyNumber;
070 private Integer financialDocumentNextLineNumber;
071 private Asset separateSourceCapitalAsset;
072 private Integer separateSourcePaymentSequenceNumber;
073 private boolean capitalAssetBuilderOriginIndicator;
074
075 // Not Persisted
076 private Date lastInventoryDate;
077 private ContractsAndGrantsAgency agency;
078 private Person assetRepresentative;
079 private AssetType capitalAssetType;
080 private AssetCondition assetCondition;
081 private AssetStatus inventoryStatus;
082 private List<AssetGlobalDetail> assetGlobalDetails;
083 private List<AssetGlobalDetail> assetSharedDetails;
084 private List<AssetPaymentDetail> assetPaymentDetails;
085 private AssetAcquisitionType acquisitionType;
086 private Chart organizationOwnerChartOfAccounts;
087 private Account organizationOwnerAccount;
088
089 // field is here so that AssetLookupableHelperServiceImpl can pass action information
090 private String financialDocumentTypeCode;
091 private Long separateSourceCapitalAssetNumber;
092
093 // Calculate Equal Source Amounts button
094 private String calculateEqualSourceAmountsButton;
095
096 // calculate remaining source amount
097 private KualiDecimal separateSourceRemainingAmount;
098 private KualiDecimal separateSourceTotalAmount;
099 private String calculateSeparateSourceRemainingAmountButton;
100
101 private List<GeneralLedgerPendingEntry> generalLedgerPendingEntries;
102 private FinancialSystemDocumentHeader documentHeader;
103 private KualiDecimal totalAssetPaymentAmount;
104
105 //
106 private KualiDecimal minAssetTotalAmount;
107 private KualiDecimal maxAssetTotalAmount;
108
109 /**
110 * Default constructor.
111 */
112 public AssetGlobal() {
113 assetGlobalDetails = new TypedArrayList(AssetGlobalDetail.class);
114 assetSharedDetails = new TypedArrayList(AssetGlobalDetail.class);
115 assetPaymentDetails = new TypedArrayList(AssetPaymentDetail.class);
116 this.generalLedgerPendingEntries = new TypedArrayList(GeneralLedgerPendingEntry.class);
117 }
118
119 /**
120 * Gets the documentNumber attribute.
121 *
122 * @return Returns the documentNumber
123 */
124 public String getDocumentNumber() {
125 return documentNumber;
126 }
127
128 /**
129 * Sets the documentNumber attribute.
130 *
131 * @param documentNumber The documentNumber to set.
132 */
133 public void setDocumentNumber(String documentNumber) {
134 this.documentNumber = documentNumber;
135 }
136
137
138 /**
139 * Gets the acquisitionTypeCode attribute.
140 *
141 * @return Returns the acquisitionTypeCode
142 */
143 public String getAcquisitionTypeCode() {
144 return acquisitionTypeCode;
145 }
146
147 /**
148 * Sets the acquisitionTypeCode attribute.
149 *
150 * @param acquisitionTypeCode The acquisitionTypeCode to set.
151 */
152 public void setAcquisitionTypeCode(String acquisitionTypeCode) {
153 this.acquisitionTypeCode = acquisitionTypeCode;
154 }
155
156
157 /**
158 * Gets the capitalAssetDescription attribute.
159 *
160 * @return Returns the capitalAssetDescription
161 */
162 public String getCapitalAssetDescription() {
163 return capitalAssetDescription;
164 }
165
166 /**
167 * Sets the capitalAssetDescription attribute.
168 *
169 * @param capitalAssetDescription The capitalAssetDescription to set.
170 */
171 public void setCapitalAssetDescription(String capitalAssetDescription) {
172 this.capitalAssetDescription = capitalAssetDescription;
173 }
174
175
176 /**
177 * Gets the inventoryStatusCode attribute.
178 *
179 * @return Returns the inventoryStatusCode
180 */
181 public String getInventoryStatusCode() {
182 return inventoryStatusCode;
183 }
184
185 /**
186 * Sets the inventoryStatusCode attribute.
187 *
188 * @param inventoryStatusCode The inventoryStatusCode to set.
189 */
190 public void setInventoryStatusCode(String inventoryStatusCode) {
191 this.inventoryStatusCode = inventoryStatusCode;
192 }
193
194
195 /**
196 * Gets the conditionCode attribute.
197 *
198 * @return Returns the conditionCode
199 */
200 public String getConditionCode() {
201 return conditionCode;
202 }
203
204 /**
205 * Sets the conditionCode attribute.
206 *
207 * @param conditionCode The conditionCode to set.
208 */
209 public void setConditionCode(String conditionCode) {
210 this.conditionCode = conditionCode;
211 }
212
213
214 /**
215 * Gets the capitalAssetTypeCode attribute.
216 *
217 * @return Returns the capitalAssetTypeCode
218 */
219 public String getCapitalAssetTypeCode() {
220 return capitalAssetTypeCode;
221 }
222
223 /**
224 * Sets the capitalAssetTypeCode attribute.
225 *
226 * @param capitalAssetTypeCode The capitalAssetTypeCode to set.
227 */
228 public void setCapitalAssetTypeCode(String capitalAssetTypeCode) {
229 this.capitalAssetTypeCode = capitalAssetTypeCode;
230 }
231
232
233 /**
234 * Gets the manufacturerName attribute.
235 *
236 * @return Returns the manufacturerName
237 */
238 public String getManufacturerName() {
239 return manufacturerName;
240 }
241
242 /**
243 * Sets the manufacturerName attribute.
244 *
245 * @param manufacturerName The manufacturerName to set.
246 */
247 public void setManufacturerName(String manufacturerName) {
248 this.manufacturerName = manufacturerName;
249 }
250
251
252 /**
253 * Gets the manufacturerModelNumber attribute.
254 *
255 * @return Returns the manufacturerModelNumber
256 */
257 public String getManufacturerModelNumber() {
258 return manufacturerModelNumber;
259 }
260
261 /**
262 * Sets the manufacturerModelNumber attribute.
263 *
264 * @param manufacturerModelNumber The manufacturerModelNumber to set.
265 */
266 public void setManufacturerModelNumber(String manufacturerModelNumber) {
267 this.manufacturerModelNumber = manufacturerModelNumber;
268 }
269
270
271 /**
272 * Gets the totalCostAmount attribute.
273 *
274 * @return Returns the totalCostAmount
275 */
276 public KualiDecimal getTotalCostAmount() {
277 return totalCostAmount;
278 }
279
280 /**
281 * Sets the totalCostAmount attribute.
282 *
283 * @param totalCostAmount The totalCostAmount to set.
284 */
285 public void setTotalCostAmount(KualiDecimal totalCostAmount) {
286 this.totalCostAmount = totalCostAmount;
287 }
288
289
290 /**
291 * Gets the landCountyName attribute.
292 *
293 * @return Returns the landCountyName
294 */
295 public String getLandCountyName() {
296 return landCountyName;
297 }
298
299 /**
300 * Sets the landCountyName attribute.
301 *
302 * @param landCountyName The landCountyName to set.
303 */
304 public void setLandCountyName(String landCountyName) {
305 this.landCountyName = landCountyName;
306 }
307
308
309 /**
310 * Gets the landAcreageSize attribute.
311 *
312 * @return Returns the landAcreageSize
313 */
314 public Integer getLandAcreageSize() {
315 return landAcreageSize;
316 }
317
318 /**
319 * Sets the landAcreageSize attribute.
320 *
321 * @param landAcreageSize The landAcreageSize to set.
322 */
323 public void setLandAcreageSize(Integer landAcreageSize) {
324 this.landAcreageSize = landAcreageSize;
325 }
326
327
328 /**
329 * Gets the landParcelNumber attribute.
330 *
331 * @return Returns the landParcelNumber
332 */
333 public String getLandParcelNumber() {
334 return landParcelNumber;
335 }
336
337 /**
338 * Sets the landParcelNumber attribute.
339 *
340 * @param landParcelNumber The landParcelNumber to set.
341 */
342 public void setLandParcelNumber(String landParcelNumber) {
343 this.landParcelNumber = landParcelNumber;
344 }
345
346
347 /**
348 * Gets the vendorName attribute.
349 *
350 * @return Returns the vendorName
351 */
352 public String getVendorName() {
353 return vendorName;
354 }
355
356 /**
357 * Sets the vendorName attribute.
358 *
359 * @param vendorName The vendorName to set.
360 */
361 public void setVendorName(String vendorName) {
362 this.vendorName = vendorName;
363 }
364
365
366 /**
367 * Gets the organizationText attribute.
368 *
369 * @return Returns the organizationText
370 */
371 public String getOrganizationText() {
372 return organizationText;
373 }
374
375 /**
376 * Sets the organizationText attribute.
377 *
378 * @param organizationText The organizationText to set.
379 */
380 public void setOrganizationText(String organizationText) {
381 this.organizationText = organizationText;
382 }
383
384
385 /**
386 * Gets the createDate attribute.
387 *
388 * @return Returns the createDate
389 */
390 public Date getCreateDate() {
391 if (createDate != null) {
392 return createDate;
393 }
394 else {
395 return SpringContext.getBean(DateTimeService.class).getCurrentSqlDate();
396 }
397 }
398
399 /**
400 * Sets the createDate attribute.
401 *
402 * @param createDate The createDate to set.
403 */
404 public void setCreateDate(Date createDate) {
405 this.createDate = createDate;
406 }
407
408
409 /**
410 * Gets the capitalAssetInServiceDate attribute.
411 *
412 * @return Returns the capitalAssetInServiceDate
413 */
414 public Date getCapitalAssetInServiceDate() {
415 return capitalAssetInServiceDate;
416 }
417
418 /**
419 * Sets the capitalAssetInServiceDate attribute.
420 *
421 * @param capitalAssetInServiceDate The capitalAssetInServiceDate to set.
422 */
423 public void setCapitalAssetInServiceDate(Date capitalAssetInServiceDate) {
424 this.capitalAssetInServiceDate = capitalAssetInServiceDate;
425 }
426
427
428 /**
429 * Gets the capitalAssetDepreciationDate attribute.
430 *
431 * @return Returns the capitalAssetDepreciationDate
432 */
433 public Date getCapitalAssetDepreciationDate() {
434 return capitalAssetDepreciationDate;
435 }
436
437 /**
438 * Sets the capitalAssetDepreciationDate attribute.
439 *
440 * @param capitalAssetDepreciationDate The capitalAssetDepreciationDate to set.
441 */
442 public void setCapitalAssetDepreciationDate(Date capitalAssetDepreciationDate) {
443 this.capitalAssetDepreciationDate = capitalAssetDepreciationDate;
444 }
445
446 /**
447 * Gets the agencyNumber attribute.
448 *
449 * @return Returns the agencyNumber.
450 */
451 public String getAgencyNumber() {
452 return agencyNumber;
453 }
454
455 /**
456 * Sets the agencyNumber attribute value.
457 *
458 * @param agencyNumber The agencyNumber to set.
459 */
460 public void setAgencyNumber(String agencyNumber) {
461 this.agencyNumber = agencyNumber;
462 }
463
464 /**
465 * Gets the organizationOwnerAccountNumber attribute.
466 *
467 * @return Returns the organizationOwnerAccountNumber.
468 */
469 public String getOrganizationOwnerAccountNumber() {
470 return organizationOwnerAccountNumber;
471 }
472
473 /**
474 * Sets the organizationOwnerAccountNumber attribute value.
475 *
476 * @param organizationOwnerAccountNumber The organizationOwnerAccountNumber to set.
477 */
478 public void setOrganizationOwnerAccountNumber(String organizationOwnerAccountNumber) {
479 this.organizationOwnerAccountNumber = organizationOwnerAccountNumber;
480 }
481
482 /**
483 * Gets the organizationOwnerChartOfAccountsCode attribute.
484 *
485 * @return Returns the organizationOwnerChartOfAccountsCode.
486 */
487 public String getOrganizationOwnerChartOfAccountsCode() {
488 return organizationOwnerChartOfAccountsCode;
489 }
490
491 /**
492 * Sets the organizationOwnerChartOfAccountsCode attribute value.
493 *
494 * @param organizationOwnerChartOfAccountsCode The organizationOwnerChartOfAccountsCode to set.
495 */
496 public void setOrganizationOwnerChartOfAccountsCode(String organizationOwnerChartOfAccountsCode) {
497 this.organizationOwnerChartOfAccountsCode = organizationOwnerChartOfAccountsCode;
498 }
499
500 /**
501 * Gets the representativeUniversalIdentifier attribute.
502 *
503 * @return Returns the representativeUniversalIdentifier.
504 */
505 public String getRepresentativeUniversalIdentifier() {
506 return representativeUniversalIdentifier;
507 }
508
509 /**
510 * Sets the representativeUniversalIdentifier attribute value.
511 *
512 * @param representativeUniversalIdentifier The representativeUniversalIdentifier to set.
513 */
514 public void setRepresentativeUniversalIdentifier(String representativeUniversalIdentifier) {
515 this.representativeUniversalIdentifier = representativeUniversalIdentifier;
516 }
517
518 /**
519 * Gets the assetCondition attribute.
520 *
521 * @return Returns the assetCondition.
522 */
523 public AssetCondition getAssetCondition() {
524 return assetCondition;
525 }
526
527 /**
528 * Sets the assetCondition attribute value.
529 *
530 * @param assetCondition The assetCondition to set.
531 * @deprecated
532 */
533 public void setAssetCondition(AssetCondition assetCondition) {
534 this.assetCondition = assetCondition;
535 }
536
537 /**
538 * Gets the capitalAssetType attribute.
539 *
540 * @return Returns the capitalAssetType.
541 */
542 public AssetType getCapitalAssetType() {
543 return capitalAssetType;
544 }
545
546 /**
547 * Sets the capitalAssetType attribute value.
548 *
549 * @param capitalAssetType The capitalAssetType to set.
550 * @deprecated
551 */
552 public void setCapitalAssetType(AssetType capitalAssetType) {
553 this.capitalAssetType = capitalAssetType;
554 }
555
556 /**
557 * Gets the inventoryStatus attribute.
558 *
559 * @return Returns the inventoryStatus.
560 */
561 public AssetStatus getInventoryStatus() {
562 return inventoryStatus;
563 }
564
565 /**
566 * Sets the inventoryStatus attribute value.
567 *
568 * @param inventoryStatus The inventoryStatus to set.
569 * @deprecated
570 */
571 public void setInventoryStatus(AssetStatus inventoryStatus) {
572 this.inventoryStatus = inventoryStatus;
573 }
574
575 /**
576 * Gets the organizationOwnerAccount attribute.
577 *
578 * @return Returns the organizationOwnerAccount.
579 */
580 public Account getOrganizationOwnerAccount() {
581 return organizationOwnerAccount;
582 }
583
584 /**
585 * Sets the organizationOwnerAccount attribute value.
586 *
587 * @param organizationOwnerAccount The organizationOwnerAccount to set.
588 * @deprecated
589 */
590 public void setOrganizationOwnerAccount(Account organizationOwnerAccount) {
591 this.organizationOwnerAccount = organizationOwnerAccount;
592 }
593
594 /**
595 * Gets the organizationOwnerChartOfAccounts attribute.
596 *
597 * @return Returns the organizationOwnerChartOfAccounts.
598 */
599 public Chart getOrganizationOwnerChartOfAccounts() {
600 return organizationOwnerChartOfAccounts;
601 }
602
603 /**
604 * Sets the organizationOwnerChartOfAccounts attribute value.
605 *
606 * @param organizationOwnerChartOfAccounts The organizationOwnerChartOfAccounts to set.
607 * @deprecated
608 */
609 public void setOrganizationOwnerChartOfAccounts(Chart organizationOwnerChartOfAccounts) {
610 this.organizationOwnerChartOfAccounts = organizationOwnerChartOfAccounts;
611 }
612
613 /**
614 * Gets the assetGlobalDetails attribute.
615 *
616 * @return Returns the assetGlobalDetails.
617 */
618 public List<AssetGlobalDetail> getAssetGlobalDetails() {
619 return assetGlobalDetails;
620 }
621
622 /**
623 * Sets the assetGlobalDetails attribute value.
624 *
625 * @param assetGlobalDetails The assetGlobalDetails to set.
626 */
627 public void setAssetGlobalDetails(List<AssetGlobalDetail> assetGlobalDetails) {
628 this.assetGlobalDetails = assetGlobalDetails;
629 }
630
631 /**
632 * Gets the assetPaymentDetails attribute.
633 *
634 * @return Returns the assetPaymentDetails.
635 */
636 public List<AssetPaymentDetail> getAssetPaymentDetails() {
637 return assetPaymentDetails;
638 }
639
640 /**
641 * Sets the assetPaymentDetails attribute value.
642 *
643 * @param assetPaymentDetails The assetPaymentDetails to set.
644 */
645 public void setAssetPaymentDetails(List<AssetPaymentDetail> assetPaymentDetails) {
646 this.assetPaymentDetails = assetPaymentDetails;
647 }
648
649 /**
650 * @see org.kuali.rice.kns.document.GlobalBusinessObject#getGlobalChangesToDelete()
651 */
652 public List<PersistableBusinessObject> generateDeactivationsToPersist() {
653 return null;
654 }
655
656 /**
657 * This returns a list of Assets to Update and/or Add. Applicable to both create new and separate.
658 *
659 * @see org.kuali.rice.kns.bo.GlobalBusinessObject#generateGlobalChangesToPersist()
660 */
661 public List<PersistableBusinessObject> generateGlobalChangesToPersist() {
662 List<PersistableBusinessObject> persistables = new ArrayList<PersistableBusinessObject>();
663
664 AssetGlobalService assetGlobalService = SpringContext.getBean(AssetGlobalService.class);
665
666 if (assetGlobalService.isAssetSeparate(this)) {
667 persistables = assetGlobalService.getSeparateAssets(this);
668 }
669 else {
670 persistables = assetGlobalService.getCreateNewAssets(this);
671 }
672
673 return persistables;
674 }
675
676 public boolean isPersistable() {
677 return true;
678 }
679
680
681 public List<? extends GlobalBusinessObjectDetail> getAllDetailObjects() {
682 return getAssetGlobalDetails();
683 }
684
685 /**
686 * Gets the lastInventoryDate attribute.
687 *
688 * @return Returns the lastInventoryDate.
689 */
690 public Date getLastInventoryDate() {
691 return lastInventoryDate;
692 }
693
694 /**
695 * Sets the lastInventoryDate attribute value.
696 *
697 * @param lastInventoryDate The lastInventoryDate to set.
698 */
699 public void setLastInventoryDate(Date lastInventoryDate) {
700 this.lastInventoryDate = lastInventoryDate;
701 }
702
703 /**
704 * @see org.kuali.rice.kns.bo.BusinessObjectBase#toStringMapper()
705 */
706 protected LinkedHashMap<String, String> toStringMapper() {
707 LinkedHashMap<String, String> m = new LinkedHashMap<String, String>();
708 m.put("documentNumber", this.documentNumber);
709 return m;
710 }
711
712 /**
713 * Gets the financialDocumentNextLineNumber attribute.
714 *
715 * @return Returns the financialDocumentNextLineNumber.
716 */
717 public Integer getFinancialDocumentNextLineNumber() {
718 return financialDocumentNextLineNumber;
719 }
720
721 /**
722 * Sets the financialDocumentNextLineNumber attribute value.
723 *
724 * @param financialDocumentNextLineNumber The financialDocumentNextLineNumber to set.
725 */
726 public void setFinancialDocumentNextLineNumber(Integer financialDocumentNextLineNumber) {
727 this.financialDocumentNextLineNumber = financialDocumentNextLineNumber;
728 }
729
730 public Integer incrementFinancialDocumentLineNumber() {
731 if (this.financialDocumentNextLineNumber == null) {
732 this.financialDocumentNextLineNumber = 0;
733 }
734 this.financialDocumentNextLineNumber += 1;
735 return financialDocumentNextLineNumber;
736 }
737
738 public List<AssetGlobalDetail> getAssetSharedDetails() {
739 return assetSharedDetails;
740 }
741
742 public void setAssetSharedDetails(List<AssetGlobalDetail> assetSharedDetails) {
743 this.assetSharedDetails = assetSharedDetails;
744 }
745
746 public AssetAcquisitionType getAcquisitionType() {
747 return acquisitionType;
748 }
749
750 public void setAcquisitionType(AssetAcquisitionType acquisitionType) {
751 this.acquisitionType = acquisitionType;
752 }
753
754 /**
755 * Gets the financialDocumentTypeCode attribute.
756 *
757 * @return Returns the financialDocumentTypeCode.
758 */
759 public String getFinancialDocumentTypeCode() {
760 return financialDocumentTypeCode;
761 }
762
763 /**
764 * Sets the financialDocumentTypeCode attribute value.
765 *
766 * @param financialDocumentTypeCode The financialDocumentTypeCode to set.
767 */
768 public void setFinancialDocumentTypeCode(String financialDocumentTypeCode) {
769 this.financialDocumentTypeCode = financialDocumentTypeCode;
770 }
771
772 /**
773 * Gets the assetRepresentative attribute.
774 *
775 * @return Returns the assetRepresentative.
776 */
777 public Person getAssetRepresentative() {
778 assetRepresentative = SpringContext.getBean(org.kuali.rice.kim.service.PersonService.class).updatePersonIfNecessary(representativeUniversalIdentifier, assetRepresentative);
779 return assetRepresentative;
780 }
781
782 /**
783 * Sets the assetRepresentative attribute value.
784 *
785 * @param assetRepresentative The assetRepresentative to set.
786 */
787 public void setAssetRepresentative(Person assetRepresentative) {
788 this.assetRepresentative = assetRepresentative;
789 }
790
791 /**
792 * Gets the agency attribute.
793 *
794 * @return Returns the agency.
795 */
796 public ContractsAndGrantsAgency getAgency() {
797 return agency = (ContractsAndGrantsAgency) SpringContext.getBean(KualiModuleService.class).getResponsibleModuleService(ContractsAndGrantsAgency.class).retrieveExternalizableBusinessObjectIfNecessary(this, agency, "agency");
798 }
799
800 /**
801 * Technically this is obsolete but necessary because MaintenanceDocumentBase.populateXmlDocumentContentsFromMaintainables has
802 * the following hack:<br>
803 * ObjectUtils.materializeAllSubObjects(oldBo); // hack to resolve XStream not dealing well with Proxies<br>
804 * so as long as that is there we need this setter otherwise a NoSuchMethodException occurs.
805 *
806 * @deprecated
807 */
808 public void setAgency(ContractsAndGrantsAgency agency) {
809 this.agency = agency;
810 }
811
812 /**
813 * Gets the generalLedgerPendingEntries attribute.
814 *
815 * @return Returns the generalLedgerPendingEntries.
816 */
817 public List<GeneralLedgerPendingEntry> getGeneralLedgerPendingEntries() {
818 return generalLedgerPendingEntries;
819 }
820
821 /**
822 * Sets the generalLedgerPendingEntries attribute value.
823 *
824 * @param generalLedgerPendingEntries The generalLedgerPendingEntries to set.
825 */
826 public void setGeneralLedgerPendingEntries(List<GeneralLedgerPendingEntry> generalLedgerPendingEntries) {
827 this.generalLedgerPendingEntries = generalLedgerPendingEntries;
828 }
829
830 /**
831 * Gets the separateSourceCapitalAsset attribute.
832 *
833 * @return Returns the separateSourceCapitalAsset.
834 */
835 public Asset getSeparateSourceCapitalAsset() {
836 return separateSourceCapitalAsset;
837 }
838
839 /**
840 * Sets the separateSourceCapitalAsset attribute value.
841 *
842 * @param separateSourceCapitalAsset The separateSourceCapitalAsset to set.
843 */
844 public void setSeparateSourceCapitalAsset(Asset separateSourceCapitalAsset) {
845 this.separateSourceCapitalAsset = separateSourceCapitalAsset;
846 }
847
848 /**
849 * Gets the separateSourceCapitalAssetNumber attribute.
850 *
851 * @return Returns the separateSourceCapitalAssetNumber.
852 */
853 public Long getSeparateSourceCapitalAssetNumber() {
854 return separateSourceCapitalAssetNumber;
855 }
856
857 /**
858 * Sets the separateSourceCapitalAssetNumber attribute value.
859 *
860 * @param separateSourceCapitalAssetNumber The separateSourceCapitalAssetNumber to set.
861 */
862 public void setSeparateSourceCapitalAssetNumber(Long separateSourceCapitalAssetNumber) {
863 this.separateSourceCapitalAssetNumber = separateSourceCapitalAssetNumber;
864 }
865
866 public Integer getSeparateSourcePaymentSequenceNumber() {
867 return separateSourcePaymentSequenceNumber;
868 }
869
870 public void setSeparateSourcePaymentSequenceNumber(Integer separateSourcePaymentSequenceNumber) {
871 this.separateSourcePaymentSequenceNumber = separateSourcePaymentSequenceNumber;
872 }
873
874 public FinancialSystemDocumentHeader getDocumentHeader() {
875 return documentHeader;
876 }
877
878 public void setDocumentHeader(FinancialSystemDocumentHeader documentHeader) {
879 this.documentHeader = documentHeader;
880 }
881
882 /**
883 * Small workaround to avoid KualiInquirableImpl.getInquiryUrl having think it needs to construct an inquiry url for this date.
884 * This only returns a date if this is a separate.
885 *
886 * @return
887 */
888 public Date getSeparateDocumentHeaderFinalDate() {
889 if (this.documentNumber == null || !SpringContext.getBean(AssetGlobalService.class).isAssetSeparate(this)) {
890 return null;
891 }
892 DocumentRouteHeaderValue routeHeader = SpringContext.getBean(RouteHeaderService.class).getRouteHeader(Long.valueOf(this.documentNumber));
893 if (routeHeader != null && routeHeader.getApprovedDate() != null) {
894 return new Date(routeHeader.getApprovedDate().getTime());
895 }
896 return null;
897 }
898
899 public boolean isCapitalAssetBuilderOriginIndicator() {
900 return capitalAssetBuilderOriginIndicator;
901 }
902
903 public void setCapitalAssetBuilderOriginIndicator(boolean capitalAssetBuilderOriginIndicator) {
904 this.capitalAssetBuilderOriginIndicator = capitalAssetBuilderOriginIndicator;
905 }
906
907 /**
908 * Gets the calculate equal source amounts button
909 *
910 * @return
911 */
912 public String getCalculateEqualSourceAmountsButton() {
913 return calculateEqualSourceAmountsButton;
914 }
915
916 /**
917 * Gets the calculate equal source amounts button
918 *
919 * @param calculateEqualSourceAmountsButton
920 */
921 public void setCalculateEqualSourceAmountsButton(String calculateEqualSourceAmountsButton) {
922 this.calculateEqualSourceAmountsButton = calculateEqualSourceAmountsButton;
923 }
924
925 public String getCalculateSeparateSourceRemainingAmountButton() {
926 return calculateSeparateSourceRemainingAmountButton;
927 }
928
929 public void setCalculateSeparateSourceRemainingAmountButton(String calculateSeparateSourceRemainingAmountButton) {
930 this.calculateSeparateSourceRemainingAmountButton = calculateSeparateSourceRemainingAmountButton;
931 }
932
933 public KualiDecimal getSeparateSourceRemainingAmount() {
934 if (separateSourceRemainingAmount == null && getTotalCostAmount() != null) {
935 return getTotalCostAmount().subtract(getSeparateSourceTotalAmount());
936 }
937 return separateSourceRemainingAmount;
938 }
939
940 public void setSeparateSourceRemainingAmount(KualiDecimal separateSourceRemainingAmount) {
941 this.separateSourceRemainingAmount = separateSourceRemainingAmount;
942 }
943
944 @Override
945 public List buildListOfDeletionAwareLists() {
946 List<List> managedLists = super.buildListOfDeletionAwareLists();
947 managedLists.add(getAssetGlobalDetails());
948 managedLists.add(getAssetPaymentDetails());
949 return managedLists;
950 }
951
952 /**
953 * Gets the totalAssetPaymentAmount attribute.
954 *
955 * @return Returns the totalAssetPaymentAmount.
956 */
957 public KualiDecimal getTotalAssetPaymentAmount() {
958 KualiDecimal totalAmount = KualiDecimal.ZERO;
959 List<AssetPaymentDetail> assetPaymentList = getAssetPaymentDetails();
960 if (assetPaymentList != null && !assetPaymentList.isEmpty()) {
961 for (AssetPaymentDetail assetPaymentDetail : assetPaymentList) {
962 totalAmount = totalAmount.add(assetPaymentDetail.getAmount());
963 }
964 }
965 return totalAmount;
966 }
967
968 /**
969 * Sets the totalAssetPaymentAmount attribute value.
970 *
971 * @param totalAssetPaymentAmount The totalAssetPaymentAmount to set.
972 */
973 public void setTotalAssetPaymentAmount(KualiDecimal totalAssetPaymentAmount) {
974 this.totalAssetPaymentAmount = totalAssetPaymentAmount;
975 }
976
977 /**
978 * Gets the separateSourceTotalAmount attribute value.
979 *
980 * @return separateSourceTotalAmount
981 */
982 public KualiDecimal getSeparateSourceTotalAmount() {
983 if (separateSourceTotalAmount == null) {
984 this.separateSourceTotalAmount = KualiDecimal.ZERO;
985 for (AssetGlobalDetail detail : this.assetGlobalDetails) {
986 KualiDecimal separateSourceAmount = detail.getSeparateSourceAmount();
987 if (separateSourceAmount != null) {
988 this.separateSourceTotalAmount = this.separateSourceTotalAmount.add(separateSourceAmount);
989 }
990 }
991 }
992 return separateSourceTotalAmount;
993 }
994
995 /**
996 * Sets the separateSourceTotalAmount attribute value.
997 *
998 * @param separateSourceTotalAmount
999 */
1000 public void setSeparateSourceTotalAmount(KualiDecimal separateSourceTotalAmount) {
1001 this.separateSourceTotalAmount = separateSourceTotalAmount;
1002 }
1003
1004 /**
1005 * Gets the minAssetTotalAmount attribute.
1006 *
1007 * @return Returns the minAssetTotalAmount.
1008 */
1009 public KualiDecimal getMinAssetTotalAmount() {
1010 return minAssetTotalAmount;
1011 }
1012
1013 /**
1014 * Sets the minAssetTotalAmount attribute value.
1015 *
1016 * @param minAssetTotalAmount The minAssetTotalAmount to set.
1017 */
1018 public void setMinAssetTotalAmount(KualiDecimal minAssetTotalAmount) {
1019 this.minAssetTotalAmount = minAssetTotalAmount;
1020 }
1021
1022 /**
1023 * Gets the maxAssetTotalAmount attribute.
1024 *
1025 * @return Returns the maxAssetTotalAmount.
1026 */
1027 public KualiDecimal getMaxAssetTotalAmount() {
1028 return maxAssetTotalAmount;
1029 }
1030
1031 /**
1032 * Sets the maxAssetTotalAmount attribute value.
1033 *
1034 * @param maxAssetTotalAmount The maxAssetTotalAmount to set.
1035 */
1036 public void setMaxAssetTotalAmount(KualiDecimal maxAssetTotalAmount) {
1037 this.maxAssetTotalAmount = maxAssetTotalAmount;
1038 }
1039
1040 }