001 /**
002 * Copyright 2004-2013 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.hr.time.assignment.service;
017
018 import org.apache.commons.lang.StringUtils;
019 import org.kuali.hr.job.Job;
020 import org.kuali.hr.time.HrBusinessObject;
021 import org.kuali.hr.time.assignment.Assignment;
022 import org.kuali.hr.time.assignment.AssignmentAccount;
023 import org.kuali.hr.time.paytype.PayType;
024 import org.kuali.hr.time.service.base.TkServiceLocator;
025 import org.kuali.hr.time.util.HrBusinessObjectMaintainableImpl;
026 import org.kuali.kfs.coa.businessobject.Account;
027 import org.kuali.rice.kim.api.identity.principal.EntityNamePrincipalName;
028 import org.kuali.rice.kim.api.services.KimApiServiceLocator;
029 import org.kuali.rice.kns.document.MaintenanceDocument;
030 import org.kuali.rice.krad.bo.PersistableBusinessObject;
031 import org.kuali.rice.krad.service.KRADServiceLocator;
032
033 import java.util.Collection;
034 import java.util.HashMap;
035 import java.util.Map;
036
037 /**
038 * Override the Maintenance page behavior for Assignment object
039 *
040 *
041 */
042 public class AssignmentMaintainableServiceImpl extends HrBusinessObjectMaintainableImpl {
043
044 /**
045 *
046 */
047 private static final long serialVersionUID = 1L;
048
049 @Override
050 public Map populateBusinessObject(Map<String, String> fieldValues,
051 MaintenanceDocument maintenanceDocument, String methodToCall) {
052 if (fieldValues.containsKey("principalId")
053 && StringUtils.isNotEmpty(fieldValues.get("principalId"))) {
054 EntityNamePrincipalName name = KimApiServiceLocator.getIdentityService().getDefaultNamesForPrincipalId(fieldValues.get("principalId"));
055 if (name != null) {
056 fieldValues.put("name", name.getDefaultName().getCompositeName());
057 } else {
058 fieldValues.put("name", "");
059 }
060 }
061
062 // KPME-1139
063 // Commented due to KPME-1226
064 /* if (!fieldValues.containsKey("effectiveDate")) {
065 fieldValues.put("effectiveDate", new DateTime().toString(TkConstants.DT_BASIC_DATE_FORMAT));
066 }*/
067
068 return super.populateBusinessObject(fieldValues, maintenanceDocument,
069 methodToCall);
070 }
071
072 @Override
073 public Map<String, String> populateNewCollectionLines(
074 Map<String, String> fieldValues,
075 MaintenanceDocument maintenanceDocument, String methodToCall) {
076 if (fieldValues.containsKey("assignmentAccounts.accountNbr")
077 && StringUtils.isNotEmpty(fieldValues
078 .get("assignmentAccounts.accountNbr"))) {
079 Map<String, String> fields = new HashMap<String, String>();
080 fields.put("accountNumber", fieldValues
081 .get("assignmentAccounts.accountNbr"));
082 Collection account = KRADServiceLocator.getBusinessObjectService()
083 .findMatching(Account.class, fields);
084 if (account.size() > 0) {
085 Account acc = (Account) account.iterator().next();
086 fieldValues.put("assignmentAccounts.finCoaCd", acc
087 .getChartOfAccountsCode());
088 }
089 }
090 if ( !fieldValues.containsKey("assignmentAccounts.earnCode")
091 || StringUtils.isEmpty(fieldValues.get("assignmentAccounts.earnCode"))) {
092 Assignment assignment = (Assignment) maintenanceDocument.getDocumentBusinessObject();
093 if(assignment != null
094 && assignment.getPrincipalId() != null
095 && assignment.getJobNumber() != null
096 && assignment.getEffectiveDate() != null) {
097 Job job = TkServiceLocator.getJobService().getJob(assignment.getPrincipalId(), assignment.getJobNumber(), assignment.getEffectiveDate(), false);
098 if(job != null) {
099 PayType payType = TkServiceLocator.getPayTypeService().getPayType(job.getHrPayType(), assignment.getEffectiveDate());
100 fieldValues.put("assignmentAccounts.earnCode", (payType != null) ? payType.getRegEarnCode() : "");
101 }
102 }
103 }
104
105 return super.populateNewCollectionLines(fieldValues,
106 maintenanceDocument, methodToCall);
107 }
108
109 @Override
110 public void processAfterEdit(MaintenanceDocument document,
111 Map<String, String[]> parameters) {
112 super.processAfterEdit(document, parameters);
113 }
114
115
116 @Override
117 protected void setNewCollectionLineDefaultValues(String arg0,
118 PersistableBusinessObject arg1) {
119 if(arg1 instanceof AssignmentAccount){
120 AssignmentAccount assignmentAccount = (AssignmentAccount)arg1;
121 Assignment assignment = (Assignment) this.getBusinessObject();
122 assignmentAccount.setActive(assignment.isActive());
123 }
124 super.setNewCollectionLineDefaultValues(arg0, arg1);
125 }
126
127 @Override
128 public HrBusinessObject getObjectById(String id) {
129 return TkServiceLocator.getAssignmentService().getAssignment(id);
130 }
131
132 @Override
133 public void customSaveLogic(HrBusinessObject hrObj) {
134 Assignment assignment = (Assignment)hrObj;
135 for (AssignmentAccount assignAcct : assignment.getAssignmentAccounts()) {
136 if(!isOldBusinessObjectInDocument()){ //prevents duplicate object on edit
137 assignAcct.setTkAssignAcctId(null);
138 }
139 assignAcct.setTkAssignmentId(assignment.getTkAssignmentId());
140 }
141 }
142
143 }