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 }