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.LinkedHashMap; 020 import java.util.Map; 021 022 import org.apache.log4j.Logger; 023 import org.kuali.kfs.coa.businessobject.AccountingPeriod; 024 import org.kuali.kfs.module.cam.CamsPropertyConstants; 025 import org.kuali.kfs.sys.businessobject.OriginationCode; 026 import org.kuali.kfs.sys.businessobject.SourceAccountingLine; 027 import org.kuali.kfs.sys.context.SpringContext; 028 import org.kuali.rice.kew.doctype.bo.DocumentTypeEBO; 029 import org.kuali.rice.kew.service.impl.KEWModuleService; 030 import org.kuali.rice.kns.util.KualiDecimal; 031 032 /** 033 * Accounting line for the asset payment document. 034 */ 035 public class AssetPaymentDetail extends SourceAccountingLine { 036 private static Logger LOG = Logger.getLogger(AssetPaymentDetail.class); 037 038 private String expenditureFinancialSystemOriginationCode; 039 private Date expenditureFinancialDocumentPostedDate; 040 private boolean transferPaymentIndicator; 041 042 private String expenditureFinancialDocumentNumber; 043 private String expenditureFinancialDocumentTypeCode; 044 private String postingPeriodCode; 045 private String purchaseOrderNumber; 046 private String requisitionNumber; 047 private KualiDecimal amount; 048 049 // bo references 050 private AccountingPeriod financialDocumentPostingPeriod; 051 private DocumentTypeEBO expenditureFinancialSystemDocumentTypeCode; 052 private OriginationCode expenditureFinancialSystemOrigination; 053 054 055 056 /** 057 * Default constructor. 058 */ 059 public AssetPaymentDetail() { 060 super(); 061 } 062 063 public AssetPaymentDetail(AssetPayment assetPayment) { 064 // populate AssetPaymentDetail with AssetPayment data 065 this.setSequenceNumber(assetPayment.getPaymentSequenceNumber()); 066 this.setChartOfAccountsCode(assetPayment.getChartOfAccountsCode()); 067 this.setAccountNumber(assetPayment.getAccountNumber()); 068 this.setSubAccountNumber(assetPayment.getSubAccountNumber()); 069 this.setFinancialObjectCode(assetPayment.getFinancialObjectCode()); 070 this.setFinancialSubObjectCode(assetPayment.getFinancialSubObjectCode()); 071 this.setProjectCode(assetPayment.getProjectCode()); 072 this.setOrganizationReferenceId(assetPayment.getOrganizationReferenceId()); 073 this.setExpenditureFinancialSystemOriginationCode(assetPayment.getFinancialSystemOriginationCode()); 074 this.setExpenditureFinancialDocumentNumber(assetPayment.getDocumentNumber()); 075 this.setExpenditureFinancialDocumentTypeCode(assetPayment.getFinancialDocumentTypeCode()); 076 this.setPurchaseOrderNumber(assetPayment.getPurchaseOrderNumber()); 077 this.setRequisitionNumber(assetPayment.getRequisitionNumber()); 078 this.setExpenditureFinancialDocumentPostedDate(assetPayment.getFinancialDocumentPostingDate()); 079 this.setPostingYear(assetPayment.getFinancialDocumentPostingYear()); 080 this.setPostingPeriodCode(assetPayment.getFinancialDocumentPostingPeriodCode()); 081 this.setAmount(assetPayment.getAccountChargeAmount()); 082 } 083 084 /** 085 * @see org.kuali.rice.kns.bo.BusinessObjectBase#toStringMapper() 086 */ 087 protected LinkedHashMap<String,String> toStringMapper() { 088 LinkedHashMap<String,String> m = new LinkedHashMap<String,String>(); 089 m.put("documentNumber", this.getDocumentNumber()); 090 m.put("sequenceNumber", this.getSequenceNumber() == null ? "" : this.getSequenceNumber().toString()); 091 m.put("chartOfAccountsCode",getChartOfAccountsCode()); 092 m.put("accountNumber",getAccountNumber()); 093 m.put("subAccountNumber",getSubAccountNumber()); 094 m.put("financialObjectCode",getFinancialObjectCode()); 095 m.put("financialSubObjectCode",getFinancialSubObjectCode()); 096 m.put("projectCode",getProjectCode()); 097 m.put("postingYear",this.getPostingYear().toString()); 098 return m; 099 } 100 101 /** 102 * Create a key including the 103 * <li><b>expenditureFinancialDocumentNumber</b></li> 104 * <li><b>expenditureFinancialDocumentTypeCode</b></li> 105 * with accounting information for asset payment distribution 106 * 107 * Make sure the full accounting line information is part of the key 108 * chartOfAccount, accountNumber, subAccountNumber, objectCode, subObjectCode, projectCode 109 * 110 * @return 111 */ 112 public String getAssetPaymentDetailKey() { 113 LinkedHashMap<String,String> m = toStringMapper(); 114 m.put("expenditureFinancialDocumentTypeCode",this.getExpenditureFinancialDocumentTypeCode()); 115 m.put("expenditureFinancialDocumentNumber",this.getExpenditureFinancialDocumentNumber()); 116 return toStringBuilder(m); 117 } 118 119 public String getExpenditureFinancialSystemOriginationCode() { 120 return expenditureFinancialSystemOriginationCode; 121 } 122 123 124 public void setExpenditureFinancialSystemOriginationCode(String expenditureFinancialSystemOriginationCode) { 125 this.expenditureFinancialSystemOriginationCode = expenditureFinancialSystemOriginationCode; 126 } 127 128 129 public Date getExpenditureFinancialDocumentPostedDate() { 130 return expenditureFinancialDocumentPostedDate; 131 } 132 133 134 public void setExpenditureFinancialDocumentPostedDate(Date expenditureFinancialDocumentPostedDate) { 135 this.expenditureFinancialDocumentPostedDate = expenditureFinancialDocumentPostedDate; 136 } 137 138 139 public boolean isTransferPaymentIndicator() { 140 return transferPaymentIndicator; 141 } 142 143 144 public void setTransferPaymentIndicator(boolean transferPaymentIndicator) { 145 this.transferPaymentIndicator = transferPaymentIndicator; 146 } 147 148 149 public String getExpenditureFinancialDocumentNumber() { 150 return expenditureFinancialDocumentNumber; 151 } 152 153 154 public void setExpenditureFinancialDocumentNumber(String expenditureFinancialDocumentNumber) { 155 this.expenditureFinancialDocumentNumber = expenditureFinancialDocumentNumber; 156 } 157 158 159 public String getExpenditureFinancialDocumentTypeCode() { 160 return expenditureFinancialDocumentTypeCode; 161 } 162 163 164 public void setExpenditureFinancialDocumentTypeCode(String expenditureFinancialDocumentTypeCode) { 165 this.expenditureFinancialDocumentTypeCode = expenditureFinancialDocumentTypeCode; 166 } 167 168 169 public String getPostingPeriodCode() { 170 return postingPeriodCode; 171 } 172 173 174 public void setPostingPeriodCode(String postingPeriodCode) { 175 this.postingPeriodCode = postingPeriodCode; 176 } 177 178 179 public String getPurchaseOrderNumber() { 180 return purchaseOrderNumber; 181 } 182 183 184 public void setPurchaseOrderNumber(String purchaseOrderNumber) { 185 this.purchaseOrderNumber = purchaseOrderNumber; 186 } 187 188 189 public String getRequisitionNumber() { 190 return requisitionNumber; 191 } 192 193 194 public void setRequisitionNumber(String requisitionNumber) { 195 this.requisitionNumber = requisitionNumber; 196 } 197 198 199 public AccountingPeriod getFinancialDocumentPostingPeriod() { 200 return financialDocumentPostingPeriod; 201 } 202 203 204 public void setFinancialDocumentPostingPeriod(AccountingPeriod financialDocumentPostingPeriod) { 205 this.financialDocumentPostingPeriod = financialDocumentPostingPeriod; 206 } 207 208 public DocumentTypeEBO getExpenditureFinancialSystemDocumentTypeCode() { 209 return expenditureFinancialSystemDocumentTypeCode = SpringContext.getBean(KEWModuleService.class).retrieveExternalizableBusinessObjectIfNecessary(this, expenditureFinancialSystemDocumentTypeCode, "expenditureFinancialSystemDocumentTypeCode"); 210 } 211 212 public OriginationCode getExpenditureFinancialSystemOrigination() { 213 return expenditureFinancialSystemOrigination; 214 } 215 216 217 public void setExpenditureFinancialSystemOrigination(OriginationCode expenditureFinancialSystemOrigination) { 218 this.expenditureFinancialSystemOrigination = expenditureFinancialSystemOrigination; 219 } 220 221 public KualiDecimal getAmount() { 222 return amount; 223 } 224 225 226 public void setAmount(KualiDecimal amount) { 227 this.amount = amount; 228 } 229 230 /** 231 * 232 * @see org.kuali.kfs.sys.businessobject.AccountingLineBase#getValuesMap() 233 */ 234 @Override 235 public Map getValuesMap() { 236 Map simpleValues = super.getValuesMap(); 237 simpleValues.put(CamsPropertyConstants.AssetPaymentDetail.ORIGINATION_CODE, getExpenditureFinancialSystemOriginationCode()); 238 simpleValues.put(CamsPropertyConstants.AssetPaymentDetail.DOCUMENT_POSTING_DATE,getExpenditureFinancialDocumentPostedDate()); 239 240 return simpleValues; 241 } 242 }