View Javadoc
1   /**
2    * Copyright 2004-2015 The Kuali Foundation
3    *
4    * Licensed under the Educational Community License, Version 2.0 (the "License");
5    * you may not use this file except in compliance with the License.
6    * You may obtain a copy of the License at
7    *
8    * http://www.opensource.org/licenses/ecl2.php
9    *
10   * Unless required by applicable law or agreed to in writing, software
11   * distributed under the License is distributed on an "AS IS" BASIS,
12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   * See the License for the specific language governing permissions and
14   * limitations under the License.
15   */
16  package org.kuali.kpme.core.assignment.account;
17  
18  import org.apache.commons.lang.StringUtils;
19  import org.kuali.kpme.core.api.assignment.account.AssignmentAccount;
20  import org.kuali.kpme.core.api.assignment.account.AssignmentAccountContract;
21  import org.kuali.kpme.core.api.workarea.WorkArea;
22  import org.kuali.kpme.core.assignment.AssignmentBo;
23  import org.kuali.kpme.core.earncode.EarnCodeBo;
24  import org.kuali.kpme.core.job.JobBo;
25  import org.kuali.kpme.core.kfs.coa.businessobject.*;
26  import org.kuali.kpme.core.service.HrServiceLocator;
27  import org.kuali.rice.core.api.mo.ModelObjectUtils;
28  import org.kuali.rice.krad.bo.PersistableBusinessObjectBase;
29  import org.kuali.rice.krad.service.KRADServiceLocator;
30  
31  import java.math.BigDecimal;
32  import java.sql.Timestamp;
33  import java.util.HashMap;
34  import java.util.Map;
35  
36  public class AssignmentAccountBo extends PersistableBusinessObjectBase implements AssignmentAccountContract {
37  
38  	private static final long serialVersionUID = 2414818440020234952L;
39      public static final ModelObjectUtils.Transformer<AssignmentAccount, AssignmentAccountBo> toAssignmentAccountBo =
40              new ModelObjectUtils.Transformer<AssignmentAccount, AssignmentAccountBo>() {
41                  public AssignmentAccountBo transform(AssignmentAccount input) {
42                      return AssignmentAccountBo.from(input);
43                  };
44              };
45  	
46  	private String tkAssignAcctId;
47  	private String finCoaCd;
48  	private String accountNbr;
49  	private String subAcctNbr;
50  	private String finObjectCd;
51  	private String finSubObjCd;
52  	private String projectCd;
53  	private String orgRefId;
54  	private BigDecimal percent;
55  	private String earnCode;
56  	private String tkAssignmentId;
57      private String userPrincipalId;
58      private boolean active=true;
59  	private AssignmentBo assignmentObj;
60  	
61  	private Account accountObj;
62  	private SubAccount subAccountObj;
63  	private ObjectCode objectCodeObj;
64  	private SubObjectCode subObjectCodeObj;
65  	private ProjectCode projectCodeObj;
66  	private EarnCodeBo earnCodeObj;
67  	
68  	// TODO returning an empty map for the time-being, until the BK is finalized
69  	/*@Override
70  	public ImmutableMap<String, Object> getBusinessKeyValuesMap() {
71  		return new ImmutableMap.Builder<String, Object>()
72  				.build();
73  	}*/
74  	
75  	public AssignmentBo getAssignmentObj() {
76  		if(assignmentObj == null && StringUtils.isNotBlank(this.getTkAssignmentId())) {
77  			this.setAssignmentObj(AssignmentBo.from(HrServiceLocator.getAssignmentService().getAssignment(this.getTkAssignmentId())));
78  		}
79  		return assignmentObj;
80  	}
81  
82  	public void setAssignmentObj(AssignmentBo assignmentObj) {
83  		this.assignmentObj = assignmentObj;
84  	}
85  
86  	public String getFinCoaCd() {
87  		Map<String, String> fields = new HashMap<String, String>();
88  		fields.put("accountNumber", this.accountNbr);
89  		fields.put("active", "true");
90  		Account account = (Account) KRADServiceLocator.getBusinessObjectService().findByPrimaryKey(Account.class, fields);
91  		if(account != null && !account.isClosed()) {
92  			this.setFinCoaCd(account.getChartOfAccountsCode());
93  		} else {
94  			this.setFinCoaCd(null);
95  		}
96  		return finCoaCd;
97  	}
98  
99  	public void setFinCoaCd(String finCoaCd) {
100 		this.finCoaCd = finCoaCd;
101 	}
102 
103 	public String getAccountNbr() {
104 		return accountNbr;
105 	}
106 
107 	public void setAccountNbr(String accountNbr) {
108 		this.accountNbr = accountNbr;
109 	}
110 
111 	public String getSubAcctNbr() {
112 		return subAcctNbr;
113 	}
114 
115 	public void setSubAcctNbr(String subAcctNbr) {
116 		this.subAcctNbr = subAcctNbr;
117 	}
118 
119 	public String getFinObjectCd() {
120 		return finObjectCd;
121 	}
122 
123 	public void setFinObjectCd(String finObjectCd) {
124 		this.finObjectCd = finObjectCd;
125 	}
126 
127 	public String getFinSubObjCd() {
128 		return finSubObjCd;
129 	}
130 
131 	public void setFinSubObjCd(String finSubObjCd) {
132 		this.finSubObjCd = finSubObjCd;
133 	}
134 
135 	public String getProjectCd() {
136 		return projectCd;
137 	}
138 
139 	public void setProjectCd(String projectCd) {
140 		this.projectCd = projectCd;
141 	}
142 
143 	public String getOrgRefId() {
144 		return orgRefId;
145 	}
146 
147 	public void setOrgRefId(String orgRefId) {
148 		this.orgRefId = orgRefId;
149 	}
150 
151 	public BigDecimal getPercent() {
152 		return percent;
153 	}
154 
155 	public void setPercent(BigDecimal percent) {
156 		this.percent = percent;
157 	}
158 
159 	public String getTkAssignAcctId() {
160 		return tkAssignAcctId;
161 	}
162 
163 	public void setTkAssignAcctId(String tkAssignAcctId) {
164 		this.tkAssignAcctId = tkAssignAcctId;
165 	}
166 
167 	public String getTkAssignmentId() {
168 		return tkAssignmentId;
169 	}
170 
171 	public void setTkAssignmentId(String tkAssignmentId) {
172 		this.tkAssignmentId = tkAssignmentId;
173 	}
174 
175 	public String getEarnCode() {
176 		return earnCode;
177 	}
178 
179 	public void setEarnCode(String earnCode) {
180 		this.earnCode = earnCode;
181 	}
182 
183 	public Account getAccountObj() {
184 		return accountObj;
185 	}
186 
187 	public void setAccountObj(Account accountObj) {
188 		this.accountObj = accountObj;
189 	}
190 
191 	public SubAccount getSubAccountObj() {
192 		return subAccountObj;
193 	}
194 
195 	public void setSubAccountObj(SubAccount subAccountObj) {
196 		this.subAccountObj = subAccountObj;
197 	}
198 
199 	public ObjectCode getObjectCodeObj() {
200 		return objectCodeObj;
201 	}
202 
203 	public void setObjectCodeObj(ObjectCode objectCodeObj) {
204 		this.objectCodeObj = objectCodeObj;
205 	}
206 
207 	public SubObjectCode getSubObjectCodeObj() {
208 		return subObjectCodeObj;
209 	}
210 
211 	public void setSubObjectCodeObj(SubObjectCode subObjectCodeObj) {
212 		this.subObjectCodeObj = subObjectCodeObj;
213 	}
214 
215 	public ProjectCode getProjectCodeObj() {
216 		return projectCodeObj;
217 	}
218 
219 	public void setProjectCodeObj(ProjectCode projectCodeObj) {
220 		this.projectCodeObj = projectCodeObj;
221 	}
222 
223 	public EarnCodeBo getEarnCodeObj() {
224 		return earnCodeObj;
225 	}
226 
227 	public void setEarnCodeObj(EarnCodeBo earnCodeObj) {
228 		this.earnCodeObj = earnCodeObj;
229 	}
230 
231 	//@Override
232 	public String getUniqueKey() {
233 		return earnCode +"_"+accountNbr+"_"+subAcctNbr;
234 	}
235 
236 	@Override
237 	public String getId() {
238 		return tkAssignAcctId;
239 	}
240 
241 	public void setId(String id) {
242 		setTkAssignAcctId(id);
243 	}
244 
245     public String getUserPrincipalId() {
246         return userPrincipalId;
247     }
248 
249     public void setUserPrincipalId(String userPrincipalId) {
250         this.userPrincipalId = userPrincipalId;
251     }
252 
253     public boolean isActive() {
254         return active;
255     }
256 
257     public void setActive(boolean active) {
258         this.active = active;
259     }
260 
261     public static AssignmentAccountBo from(AssignmentAccount im) {
262         if (im == null) {
263             return null;
264         }
265         AssignmentAccountBo acct = new AssignmentAccountBo();
266 
267         acct.setTkAssignAcctId(im.getTkAssignAcctId());
268         acct.setFinCoaCd(im.getFinCoaCd());
269         acct.setAccountNbr(im.getAccountNbr());
270         acct.setSubAcctNbr(im.getSubAcctNbr());
271         acct.setFinObjectCd(im.getFinObjectCd());
272         acct.setFinSubObjCd(im.getFinSubObjCd());
273         acct.setProjectCd(im.getProjectCd());
274         acct.setOrgRefId(im.getOrgRefId());
275         acct.setEarnCode(im.getEarnCode());
276         acct.setTkAssignmentId(im.getTkAssignmentId());
277         acct.setUserPrincipalId(im.getUserPrincipalId());
278         acct.setPercent(im.getPercent());
279         acct.setActive(im.isActive());
280 
281         acct.setUserPrincipalId(im.getUserPrincipalId());
282         acct.setVersionNumber(im.getVersionNumber());
283         acct.setObjectId(im.getObjectId());
284 
285         return acct;
286     }
287 
288     public static AssignmentAccount to(AssignmentAccountBo bo) {
289         if (bo == null) {
290             return null;
291         }
292 
293         return AssignmentAccount.Builder.create(bo).build();
294     }
295 }