/*
* eGov suite of products aim to improve the internal efficiency,transparency,
* accountability and the service delivery of the government organizations.
*
* Copyright (C) <2015> eGovernments Foundation
*
* The updated version of eGov suite of products as by eGovernments Foundation
* is available at http://www.egovernments.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see http://www.gnu.org/licenses/ or
* http://www.gnu.org/licenses/gpl.html .
*
* In addition to the terms of the GPL license to be adhered to in using this
* program, the following additional terms are to be complied with:
*
* 1) All versions of this program, verbatim or modified must carry this
* Legal Notice.
*
* 2) Any misrepresentation of the origin of the material is prohibited. It
* is required that all modified versions of this material be marked in
* reasonable ways as different from the original version.
*
* 3) This license does not grant any rights to any user of the program
* with regards to rights under trademark law for use of the trade names
* or trademarks of eGovernments Foundation.
*
* In case of any queries, you can reach eGovernments Foundation at contact@egovernments.org.
*/
package org.egov.egf.web.actions.budget;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;
import java.util.List;
import javax.script.ScriptContext;
import org.apache.log4j.Logger;
import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.ParentPackage;
import org.apache.struts2.convention.annotation.Result;
import org.apache.struts2.convention.annotation.Results;
import org.egov.commons.CFinancialYear;
import org.egov.commons.CFunction;
import org.egov.commons.Functionary;
import org.egov.commons.Fund;
import org.egov.commons.Scheme;
import org.egov.commons.SubScheme;
import org.egov.egf.model.BudgetReAppropriationView;
import org.egov.eis.service.EisCommonService;
import org.egov.infra.admin.master.entity.Boundary;
import org.egov.infra.admin.master.entity.Department;
import org.egov.infra.admin.master.service.AppConfigValueService;
import org.egov.infra.config.core.ApplicationThreadLocals;
import org.egov.infra.exception.ApplicationRuntimeException;
import org.egov.infra.script.entity.Script;
import org.egov.infra.script.service.ScriptService;
import org.egov.infra.web.struts.actions.BaseFormAction;
import org.egov.infra.workflow.entity.State;
import org.egov.infra.workflow.service.WorkflowService;
import org.egov.infstr.utils.EgovMasterDataCaching;
import org.egov.model.budget.Budget;
import org.egov.model.budget.BudgetDetail;
import org.egov.model.budget.BudgetGroup;
import org.egov.model.budget.BudgetReAppropriation;
import org.egov.model.budget.BudgetReAppropriationMisc;
import org.egov.pims.commons.Position;
import org.egov.pims.service.EisUtilService;
import org.egov.services.budget.BudgetDetailService;
import org.egov.services.budget.BudgetReAppropriationService;
import org.egov.services.budget.BudgetService;
import org.egov.utils.BudgetDetailConfig;
import org.egov.utils.BudgetDetailHelper;
import org.egov.utils.Constants;
import org.springframework.beans.factory.annotation.Autowired;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.util.ValueStack;
@ParentPackage("egov")
@Results({
@Result(name = "approvalList", location = "budgetReAppropriationModify-approvalList.jsp"),
@Result(name = "modify", location = "budgetReAppropriationModify-modify.jsp")
})
public class BudgetReAppropriationModifyAction extends BaseFormAction {
private static final long serialVersionUID = 1L;
private static final Logger LOGGER = Logger.getLogger(BudgetReAppropriationModifyAction.class);
@Autowired
protected BudgetDetailConfig budgetDetailConfig;
BudgetDetail budgetDetail;
protected Budget budget;
protected List<String> headerFields = new ArrayList<String>();
protected List<String> gridFields = new ArrayList<String>();
protected List<String> mandatoryFields = new ArrayList<String>();
BudgetDetailHelper budgetDetailHelper;
BudgetDetailService budgetDetailService;
BudgetReAppropriationService budgetReAppropriationService;
WorkflowService<BudgetReAppropriation> budgetReAppropriationWorkflowService;
CFinancialYear financialYear;
BudgetService budgetService;
String isBeRe = Constants.BE;
List<BudgetReAppropriationView> savedBudgetReAppropriationList = new ArrayList<BudgetReAppropriationView>();
@Autowired
AppConfigValueService appConfigValuesService;
String message = "";
boolean deleted = false;
BudgetReAppropriation budgetReAppropriation;
EisCommonService eisCommonService;
Long miscId;
WorkflowService<BudgetReAppropriationMisc> miscWorkflowService;
private List<Action> validActions = new ArrayList<Action>();
private String comment = "";
private BudgetReAppropriationMisc workFlowItem;
private String actionName = "";
private boolean enableApprovedAmount = false;
private boolean enableOriginalAmount = false;
protected EisUtilService eisService;
private ScriptService scriptService;
@Autowired
private EgovMasterDataCaching masterDataCache;
public void setMiscWorkflowService(final WorkflowService<BudgetReAppropriationMisc> miscWorkflowService) {
this.miscWorkflowService = miscWorkflowService;
}
public Long getMiscId() {
return miscId;
}
public void setMiscId(final Long miscId) {
this.miscId = miscId;
}
public void setEisCommonService(final EisCommonService eisCommonService) {
this.eisCommonService = eisCommonService;
}
public BudgetReAppropriation getBudgetReAppropriation() {
return budgetReAppropriation;
}
public void setBudgetReAppropriation(final BudgetReAppropriation budgetReAppropriation) {
this.budgetReAppropriation = budgetReAppropriation;
}
public String getMessage() {
return message;
}
public void setBudgetDetailService(final BudgetDetailService budgetDetailService) {
this.budgetDetailService = budgetDetailService;
}
public List<BudgetReAppropriationView> getSavedBudgetReAppropriationList() {
return savedBudgetReAppropriationList;
}
public String getIsBeRe() {
return isBeRe;
}
public void setBudgetReAppropriationService(final BudgetReAppropriationService budgetReAppropriationService) {
this.budgetReAppropriationService = budgetReAppropriationService;
}
public void setIsBeRe(final String beRe) {
isBeRe = beRe;
}
public void setBudgetService(final BudgetService budgetService) {
this.budgetService = budgetService;
}
public void setBudgetDetailHelper(final BudgetDetailHelper budgetDetailHelper) {
this.budgetDetailHelper = budgetDetailHelper;
}
public void setFinancialYear(final CFinancialYear financialYear) {
this.financialYear = financialYear;
}
public BudgetDetail getBudgetDetail() {
return budgetDetail;
}
public void setBudgetDetail(final BudgetDetail budgetDetail) {
this.budgetDetail = budgetDetail;
}
public CFinancialYear getFinancialYear() {
return financialYear;
}
public Budget getBudget() {
return budget;
}
public List<String> getHeaderFields() {
return headerFields;
}
public List<String> getGridFields() {
return gridFields;
}
public List<String> getMandatoryFields() {
return mandatoryFields;
}
public BudgetReAppropriationModifyAction() {
}
protected void setupDropdownsInHeader() {
setupDropdownDataExcluding(Constants.SUB_SCHEME);
dropdownData.put("finYearList",
getPersistenceService().findAllBy("from CFinancialYear where isActive=true order by finYearRange desc "));
dropdownData.put("budgetGroupList", masterDataCache.get("egf-budgetGroup"));
if (shouldShowField(Constants.SUB_SCHEME))
dropdownData.put("subSchemeList", Collections.EMPTY_LIST);
if (shouldShowField(Constants.FUNCTIONARY))
dropdownData.put("functionaryList", masterDataCache.get("egi-functionary"));
if (shouldShowField(Constants.FUNCTION))
dropdownData.put("functionList", masterDataCache.get("egi-function"));
if (shouldShowField(Constants.SCHEME))
dropdownData.put("schemeList", persistenceService.findAllBy("from Scheme where isActive=true order by name"));
if (shouldShowField(Constants.EXECUTING_DEPARTMENT))
dropdownData.put("executingDepartmentList", masterDataCache.get("egi-department"));
if (shouldShowField(Constants.FUND))
dropdownData
.put("fundList", persistenceService.findAllBy("from Fund where isNotLeaf=0 and isActive=true order by name"));
if (shouldShowField(Constants.BOUNDARY))
dropdownData.put("boundaryList", persistenceService.findAllBy("from Boundary order by name"));
}
public final boolean shouldShowField(final String fieldName) {
if (headerFields.isEmpty() && gridFields.isEmpty())
return true;
return budgetDetailConfig.shouldShowField(headerFields, fieldName)
|| budgetDetailConfig.shouldShowField(gridFields, fieldName);
}
public boolean shouldShowHeaderField(final String fieldName) {
return budgetDetailConfig.shouldShowField(headerFields, fieldName);
}
public boolean shouldShowGridField(final String fieldName) {
return budgetDetailConfig.shouldShowField(gridFields, fieldName);
}
@Override
public String execute() throws Exception {
return "modify";
}
@Override
public void prepare() {
super.prepare();
headerFields = budgetDetailConfig.getHeaderFields();
gridFields = budgetDetailConfig.getGridFields();
mandatoryFields = budgetDetailConfig.getMandatoryFields();
addRelatedEntity("budgetGroup", BudgetGroup.class);
if (shouldShowField(Constants.FUNCTIONARY))
addRelatedEntity(Constants.FUNCTIONARY, Functionary.class);
if (shouldShowField(Constants.FUNCTION))
addRelatedEntity(Constants.FUNCTION, CFunction.class);
if (shouldShowField(Constants.SCHEME))
addRelatedEntity(Constants.SCHEME, Scheme.class);
if (shouldShowField(Constants.SUB_SCHEME))
addRelatedEntity(Constants.SUB_SCHEME, SubScheme.class);
if (shouldShowField(Constants.FUND))
addRelatedEntity(Constants.FUND, Fund.class);
if (shouldShowField(Constants.EXECUTING_DEPARTMENT))
addRelatedEntity(Constants.EXECUTING_DEPARTMENT, Department.class);
if (shouldShowField(Constants.BOUNDARY))
addRelatedEntity(Constants.BOUNDARY, Boundary.class);
setupDropdownsInHeader();
addDropdownData("departmentList", masterDataCache.get("egi-department"));
addDropdownData("designationList", Collections.EMPTY_LIST);
addDropdownData("userList", Collections.EMPTY_LIST);
}
@Override
public Object getModel() {
return budgetDetail;
}
@Action(value = "/budget/budgetReAppropriationModify-update")
public String update() {
for (final BudgetReAppropriationView entry : savedBudgetReAppropriationList) {
final BudgetReAppropriation reApp = budgetReAppropriationService.findBySequenceNumberAndBudgetDetail(
entry.getSequenceNumber(), entry.getBudgetDetail().getId());
if ("Addition".equalsIgnoreCase(entry.changeRequestType)) {
reApp.setOriginalAdditionAmount(entry.getDeltaAmount());
reApp.setAdditionAmount(entry.getApprovedDeltaAmount());
} else {
reApp.setOriginalDeductionAmount(entry.getDeltaAmount());
reApp.setDeductionAmount(entry.getApprovedDeltaAmount());
}
budgetReAppropriationService.persist(reApp);
}
if (!savedBudgetReAppropriationList.isEmpty())
addActionMessage(getText("reapp.modified.successfully"));
savedBudgetReAppropriationList = Collections.EMPTY_LIST;
return "modify";
}
public String list() {
savedBudgetReAppropriationList.clear();
budgetDetail = budgetReAppropriationService.setRelatedValues(budgetDetail);
final List<BudgetReAppropriation> results = budgetReAppropriationService.getNonApprovedReAppByUser(
ApplicationThreadLocals.getUserId(), budgetDetail, financialYear);
for (final BudgetReAppropriation row : results) {
final BudgetReAppropriationView budgetReAppropriationView = new BudgetReAppropriationView();
budgetReAppropriationView.setBudgetDetail(row.getBudgetDetail());
final BigDecimal approvedReAppropriationsTotal = row.getBudgetDetail().getApprovedReAppropriationsTotal();
budgetReAppropriationView.setAppropriatedAmount(approvedReAppropriationsTotal == null ? BigDecimal.ZERO.setScale(2)
: approvedReAppropriationsTotal.setScale(2));
final BigDecimal actuals = budgetDetailHelper.getTotalActualsFor(
budgetDetailHelper.constructParamMap(getValueStack(), budgetReAppropriationView.getBudgetDetail()),
new Date());
budgetReAppropriationView.setActuals(actuals.setScale(2));
budgetReAppropriationView.setApprovedAmount(budgetDetail.getApprovedAmount().setScale(2));
budgetReAppropriationView.setAvailableAmount(budgetReAppropriationView.getApprovedAmount()
.add(budgetReAppropriationView.getAppropriatedAmount()).subtract(budgetReAppropriationView.getActuals())
.setScale(2));
budgetReAppropriationView.setSequenceNumber(row.getReAppropriationMisc().getSequenceNumber());
if (row.getOriginalAdditionAmount() == null || BigDecimal.ZERO.compareTo(row.getOriginalAdditionAmount()) == 0) {
budgetReAppropriationView.setChangeRequestType("Deduction");
budgetReAppropriationView.setDeltaAmount(row.getOriginalDeductionAmount());
if (row.getDeductionAmount() == null || BigDecimal.ZERO.compareTo(row.getDeductionAmount()) == 0)
budgetReAppropriationView.setApprovedDeltaAmount(row.getOriginalDeductionAmount() == null ? BigDecimal.ZERO
: row.getOriginalDeductionAmount());
else
budgetReAppropriationView.setApprovedDeltaAmount(row.getDeductionAmount());
} else {
budgetReAppropriationView.setChangeRequestType("Addition");
budgetReAppropriationView.setDeltaAmount(row.getOriginalAdditionAmount() == null ? BigDecimal.ZERO.setScale(2)
: row.getOriginalAdditionAmount().setScale(2));
if (row.getAdditionAmount() == null || BigDecimal.ZERO.compareTo(row.getAdditionAmount()) == 0)
budgetReAppropriationView.setApprovedDeltaAmount(row.getOriginalAdditionAmount() == null ? BigDecimal.ZERO
.setScale(2) : row.getOriginalAdditionAmount().setScale(2));
else
budgetReAppropriationView.setApprovedDeltaAmount(row.getAdditionAmount().setScale(2));
}
savedBudgetReAppropriationList.add(budgetReAppropriationView);
}
if (savedBudgetReAppropriationList.isEmpty())
message = getText("no.data.found");
return "modify";
}
protected ValueStack getValueStack() {
return ActionContext.getContext().getValueStack();
}
public String ajaxDeleteBudgetReAppropriation() {
final Long budgetDetailId = Long.valueOf(parameters.get("id")[0]);
final String sequenceNumber = String.valueOf(parameters.get("sequenceNumber")[0]);
final BudgetReAppropriation reApp = budgetReAppropriationService.findBySequenceNumberAndBudgetDetail(sequenceNumber,
budgetDetailId);
if (reApp != null) {
budgetReAppropriationService.delete(reApp);
deleted = true;
}
return "deleted";
}
public boolean isDeleted() {
return deleted;
}
@Action(value = "/budget/budgetReAppropriationModify-approvalList")
public String approvalList() {
if (budgetReAppropriation == null)
return "approvalList";
miscId = budgetReAppropriation.getReAppropriationMisc().getId();
final BudgetReAppropriationMisc misc = (BudgetReAppropriationMisc) persistenceService.find(
"from BudgetReAppropriationMisc where id=?", budgetReAppropriation.getReAppropriationMisc().getId());
if (!validateOwner(misc.getState()))
throw new ApplicationRuntimeException("Invalid Access");
workFlowItem = misc;
setEnablingAmounts(misc);
comment = misc.getCurrentState().getComments();
// This fix is for Phoenix Migration.setValidActions(miscWorkflowService.getValidActions(misc));
final List<BudgetReAppropriation> nonApprovedReAppropriations = misc.getNonApprovedReAppropriations();
for (final BudgetReAppropriation row : nonApprovedReAppropriations) {
final BudgetReAppropriationView budgetReAppropriationView = new BudgetReAppropriationView();
budgetReAppropriationView.setId(row.getId());
budgetReAppropriationView.setBudgetDetail(row.getBudgetDetail());
final String actuals = budgetDetailHelper.getActualsFor(
budgetDetailHelper.constructParamMap(getValueStack(), budgetReAppropriationView.getBudgetDetail()),
new Date());
budgetReAppropriationView.setActuals(new BigDecimal(actuals));
budgetReAppropriationView.setApprovedAmount(row.getBudgetDetail().getApprovedAmount());
budgetReAppropriationView
.setAddedReleased(row.getBudgetDetail().getApprovedReAppropriationsTotal() == null ? BigDecimal.ZERO : row
.getBudgetDetail().getApprovedReAppropriationsTotal());
budgetReAppropriationView.setAvailableAmount(budgetReAppropriationView.getApprovedAmount()
.add(budgetReAppropriationView.getAddedReleased())
.subtract(budgetReAppropriationView.getActuals()));
budgetReAppropriationView.setSequenceNumber(row.getReAppropriationMisc().getSequenceNumber());
if (row.getOriginalAdditionAmount() == null || BigDecimal.ZERO.compareTo(row.getOriginalAdditionAmount()) == 0) {
budgetReAppropriationView.setChangeRequestType("Deduction");
budgetReAppropriationView.setDeltaAmount(row.getOriginalDeductionAmount());
if (row.getDeductionAmount() == null || BigDecimal.ZERO.compareTo(row.getDeductionAmount()) == 0)
budgetReAppropriationView.setApprovedDeltaAmount(row.getOriginalDeductionAmount() == null ? BigDecimal.ZERO
: row.getOriginalDeductionAmount());
else
budgetReAppropriationView.setApprovedDeltaAmount(row.getDeductionAmount());
} else {
budgetReAppropriationView.setChangeRequestType("Addition");
budgetReAppropriationView.setDeltaAmount(row.getOriginalAdditionAmount() == null ? BigDecimal.ZERO.setScale(2)
: row.getOriginalAdditionAmount().setScale(2));
if (row.getAdditionAmount() == null || BigDecimal.ZERO.compareTo(row.getAdditionAmount()) == 0)
budgetReAppropriationView.setApprovedDeltaAmount(row.getOriginalAdditionAmount() == null ? BigDecimal.ZERO
.setScale(2) : row.getOriginalAdditionAmount().setScale(2));
else
budgetReAppropriationView.setApprovedDeltaAmount(row.getAdditionAmount().setScale(2));
}
savedBudgetReAppropriationList.add(budgetReAppropriationView);
budgetDetail = row.getBudgetDetail();
financialYear = row.getBudgetDetail().getBudget().getFinancialYear();
}
return "approvalList";
}
public boolean enableApprovedAmount() {
return enableApprovedAmount;
}
public boolean enableOriginalAmount() {
return enableOriginalAmount;
}
public String forward() {
actionName = actionName.replace(",", "").replace(" ", "").trim();
BudgetReAppropriationMisc misc = null;
for (final BudgetReAppropriationView detail : savedBudgetReAppropriationList) {
final BudgetReAppropriation reApp = budgetReAppropriationService.findBySequenceNumberAndBudgetDetail(
detail.getSequenceNumber(), detail.getBudgetDetail().getId());
misc = approveReApp(reApp.getReAppropriationMisc(), reApp);
}
setEnablingAmounts(misc);
update();
return "success";
}
public String performAction() {
if (miscId != null) {
BudgetReAppropriationMisc misc = (BudgetReAppropriationMisc) persistenceService.find(
"from BudgetReAppropriationMisc where id=?", miscId);
if (misc != null) {
final List<BudgetReAppropriation> reApps = budgetReAppropriationService.findAllBy(
"from BudgetReAppropriation where reAppropriationMisc.id=?", misc.getId());
actionName = actionName.replace(",", "").replace(" ", "").trim();
setEnablingAmounts(misc);
if (actionName != null && "forward".equalsIgnoreCase(actionName.trim()) || actionName.contains("approv")
|| actionName.contains("eject") || actionName.contains("ancel")) { // if mode is approve move the object
for (final BudgetReAppropriation detail : reApps)
setAmounts(detail, getReAppById(detail.getId(), savedBudgetReAppropriationList));
misc = approve(misc, reApps);
} else {
for (final BudgetReAppropriation detail : reApps) {
setAmounts(detail, getReAppById(detail.getId(), savedBudgetReAppropriationList));
budgetReAppropriationService.persist(detail);
}
addActionMessage(getText("budget.reapp.saved"));
}
}
if ("END".equalsIgnoreCase(misc.getCurrentState().getValue()))
for (final BudgetReAppropriation entry : misc.getBudgetReAppropriations())
budgetReAppropriationService.updatePlanningBudget(entry);
}
savedBudgetReAppropriationList = Collections.EMPTY_LIST;
return "success";
}
private void setAmounts(final BudgetReAppropriation detail, final BudgetReAppropriationView reAppById) {
if (reAppById != null) {
if (enableOriginalAmount)
if ("Addition".equalsIgnoreCase(reAppById.getChangeRequestType()))
detail.setOriginalAdditionAmount(reAppById.getDeltaAmount());
else
detail.setOriginalDeductionAmount(reAppById.getDeltaAmount());
if (enableApprovedAmount)
if ("Addition".equalsIgnoreCase(reAppById.getChangeRequestType()))
detail.setAdditionAmount(reAppById.getApprovedDeltaAmount());
else
detail.setDeductionAmount(reAppById.getApprovedDeltaAmount());
}
}
private BudgetReAppropriationView getReAppById(final Long id,
final List<BudgetReAppropriationView> savedBudgetReAppropriationList2) {
for (final BudgetReAppropriationView budgetReAppropriationView : savedBudgetReAppropriationList2)
if (id != null && id.equals(budgetReAppropriationView.getId()))
return budgetReAppropriationView;
return null;
}
private void setEnablingAmounts(final BudgetReAppropriationMisc misc) {
final Script script = (Script) persistenceService.findAllByNamedQuery(Script.BY_NAME, "BudgetDetail.enable.amounts").get(
0);
final ScriptContext scriptContext = ScriptService.createContext("wfItem", misc, "persistenceService", budgetService);
final String value = (String) scriptService.executeScript(script, scriptContext);
if ("approved".equalsIgnoreCase(value))
enableApprovedAmount = true;
else if ("original".equalsIgnoreCase(value))
enableOriginalAmount = true;
}
private BudgetReAppropriationMisc approve(BudgetReAppropriationMisc misc, final List<BudgetReAppropriation> reApps) {
final Integer userId = fetchUserId();
for (final BudgetReAppropriation detail : reApps)
budgetReAppropriationWorkflowService.transition(actionName + "|" + userId, detail, comment);
misc = transformAndSetActionMessage(misc, userId);
return misc;
}
private BudgetReAppropriationMisc approveReApp(BudgetReAppropriationMisc misc, final BudgetReAppropriation reApp) {
final Integer userId = fetchUserId();
budgetReAppropriationWorkflowService.transition(actionName + "|" + userId, reApp, comment);
misc = transformAndSetActionMessage(misc, userId);
return misc;
}
private BudgetReAppropriationMisc transformAndSetActionMessage(BudgetReAppropriationMisc misc, final Integer userId) {
misc = budgetReAppropriationService.performActionOnMisc(actionName + "|" + userId, misc, comment);
final Position owner = misc.getState().getOwnerPosition();
if (actionName.contains("approv")) {
if ("END".equalsIgnoreCase(misc.getCurrentState().getValue()))
addActionMessage(getText("budget.reapp.approved.end"));
else
addActionMessage(
getText("budget.reapp.approved") + budgetService.getEmployeeNameAndDesignationForPosition(owner));
} else if (actionName.contains("eject"))
addActionMessage(getText("budget.reapp.rejected") + budgetService.getEmployeeNameAndDesignationForPosition(owner));
else if (actionName.contains("ancel"))
addActionMessage(getText("budget.reapp.cancelled") + " "
+ budgetService.getEmployeeNameAndDesignationForPosition(owner));
else
addActionMessage(getText("budget.reapp.forwarded") + budgetService.getEmployeeNameAndDesignationForPosition(owner));
return misc;
}
private Integer fetchUserId() {
Integer userId = null;
if (null != parameters.get("approverUserId") && Integer.valueOf(parameters.get("approverUserId")[0]) != -1)
userId = Integer.valueOf(parameters.get("approverUserId")[0]);
else
userId = ApplicationThreadLocals.getUserId().intValue();
return userId;
}
public void setValidActions(final List<Action> validActions) {
this.validActions = validActions;
}
public List<Action> getValidActions() {
return validActions;
}
public void setComment(final String comment) {
this.comment = comment;
}
public String getComment() {
return comment;
}
public void setWorkFlowItem(final BudgetReAppropriationMisc workFlowItem) {
this.workFlowItem = workFlowItem;
}
public BudgetReAppropriationMisc getWorkFlowItem() {
return workFlowItem;
}
public void setActionName(final String actionName) {
this.actionName = actionName;
}
public String getActionName() {
return actionName;
}
public void setEnableApprovedAmount(final boolean enableApprovedAmount) {
this.enableApprovedAmount = enableApprovedAmount;
}
public void setEnableOriginalAmount(final boolean enableOriginalAmount) {
this.enableOriginalAmount = enableOriginalAmount;
}
public String capitalize(final String value) {
if (value == null || value.length() == 0)
return value;
return value.substring(0, 1).toUpperCase() + value.substring(1).toLowerCase();
}
protected Boolean validateOwner(final State state) {
if (LOGGER.isDebugEnabled())
LOGGER.debug("validating owner for user " + ApplicationThreadLocals.getUserId());
List<Position> positionsForUser = null;
positionsForUser = eisService.getPositionsForUser(ApplicationThreadLocals.getUserId(), new Date());
if (positionsForUser.contains(state.getOwnerPosition())) {
if (LOGGER.isDebugEnabled())
LOGGER.debug("Valid Owner :return true");
return true;
} else {
if (LOGGER.isDebugEnabled())
LOGGER.debug("Invalid Owner :return false");
return false;
}
}
public void setEisService(final EisUtilService eisService) {
this.eisService = eisService;
}
public void setBudgetReAppropriationWorkflowService(
final WorkflowService<BudgetReAppropriation> budgetReAppropriationWorkflowService) {
this.budgetReAppropriationWorkflowService = budgetReAppropriationWorkflowService;
}
public ScriptService getScriptService() {
return scriptService;
}
public void setScriptService(final ScriptService scriptService) {
this.scriptService = scriptService;
}
}