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.fp.businessobject; 017 018 import java.util.LinkedHashMap; 019 020 import org.apache.commons.lang.StringUtils; 021 import org.kuali.kfs.coa.businessobject.ObjectType; 022 import org.kuali.kfs.sys.KFSConstants; 023 import org.kuali.kfs.sys.KFSPropertyConstants; 024 import org.kuali.kfs.sys.businessobject.SourceAccountingLine; 025 import org.kuali.rice.kns.util.ObjectUtils; 026 027 028 /** 029 * Special case <code>{@link SourceAccountingLine}</code> type for <code>{@link org.kuali.kfs.fp.document.VoucherDocument}</code> 030 */ 031 public class VoucherSourceAccountingLine extends SourceAccountingLine { 032 private String objectTypeCode; 033 private ObjectType objectType; 034 035 /** 036 * Constructs a VoucherSourceAccountingLine.java. 037 */ 038 public VoucherSourceAccountingLine() { 039 super(); 040 041 // default is debit. This is important for single sided accounting lines (example: JV w/BB) so that 042 // totals get calculated correctly 043 this.setDebitCreditCode(KFSConstants.GL_DEBIT_CODE); 044 } 045 046 /** 047 * Gets the objectType attribute. 048 * 049 * @return Returns the objectType. 050 */ 051 @Override 052 public ObjectType getObjectType() { 053 return objectType; 054 } 055 056 /** 057 * Sets the objectType attribute value. 058 * 059 * @param objectType The objectType to set. 060 */ 061 public void setObjectType(ObjectType objectType) { 062 this.objectType = objectType; 063 } 064 065 /** 066 * Gets the objectTypeCode attribute. 067 * 068 * @return Returns the objectTypeCode. 069 */ 070 @Override 071 public String getObjectTypeCode() { 072 return objectTypeCode; 073 } 074 075 /** 076 * Sets the objectTypeCode attribute value. 077 * 078 * @param objectTypeCode The objectTypeCode to set. 079 */ 080 public void setObjectTypeCode(String objectTypeCode) { 081 this.objectTypeCode = objectTypeCode; 082 } 083 084 /** 085 * Overridden to automatically set the object type code on the setting of the object code - if the object type code is blank 086 * 087 * @see org.kuali.kfs.sys.businessobject.AccountingLineBase#setFinancialObjectCode(java.lang.String) 088 */ 089 @Override 090 public void setFinancialObjectCode(String financialObjectCode) { 091 super.setFinancialObjectCode(financialObjectCode); 092 if (StringUtils.isBlank(getObjectTypeCode()) && !StringUtils.isBlank(getFinancialObjectCode())) { 093 refreshReferenceObject("objectCode"); 094 if (!ObjectUtils.isNull(getObjectCode())) { 095 setObjectTypeCode(getObjectCode().getFinancialObjectTypeCode()); 096 } 097 } 098 } 099 100 /** 101 * @see org.kuali.kfs.sys.businessobject.AccountingLineBase#toStringMapper() 102 */ 103 @Override 104 protected LinkedHashMap toStringMapper() { 105 LinkedHashMap<String, Object> map = super.toStringMapper(); 106 map.put(KFSPropertyConstants.OBJECT_TYPE_CODE, this.getObjectTypeCode()); 107 108 return map; 109 } 110 }