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.ld.document.web.struts; 017 018 import java.util.ArrayList; 019 020 import javax.servlet.http.HttpServletRequest; 021 import javax.servlet.http.HttpServletResponse; 022 import org.kuali.kfs.module.ld.document.web.struts.BenefitExpenseTransferForm; 023 import org.apache.commons.lang.StringUtils; 024 import org.apache.struts.action.ActionForm; 025 import org.apache.struts.action.ActionForward; 026 import org.apache.struts.action.ActionMapping; 027 import org.kuali.kfs.module.ld.LaborConstants; 028 import org.kuali.kfs.module.ld.businessobject.ExpenseTransferAccountingLine; 029 import org.kuali.kfs.module.ld.businessobject.LaborLedgerPendingEntry; 030 import org.kuali.kfs.module.ld.businessobject.LedgerBalance; 031 import org.kuali.kfs.sys.KFSConstants; 032 import org.kuali.kfs.sys.ObjectUtil; 033 import org.kuali.rice.kns.util.KualiDecimal; 034 035 /** 036 * Struts Action class for the Benefit Expense Transfer Document. 037 */ 038 public class BenefitExpenseTransferAction extends ExpenseTransferDocumentActionBase { 039 private static final org.apache.log4j.Logger LOG = org.apache.log4j.Logger.getLogger(BenefitExpenseTransferAction.class); 040 041 /** 042 * Gets the Business object class name 043 * 044 * @param expenseTransferDocumentFormBase ExpenseTransferDocumentForm type 045 * @return String classname 046 * @see org.kuali.kfs.module.ld.document.web.struts.ExpenseTransferDocumentActionBase#getLookupResultsBOClassName(org.kuali.kfs.module.ld.document.web.struts.ExpenseTransferDocumentFormBase) 047 */ 048 @Override 049 protected String getLookupResultsBOClassName(ExpenseTransferDocumentFormBase expenseTransferDocumentForm) { 050 return LedgerBalance.class.getName(); 051 } 052 053 /** 054 * @param expenseTransferDocumentFormBase ExpenseTransferDocumentForm type 055 * @param balance LedgerBalance type 056 * @return none 057 * @see org.kuali.kfs.module.ld.document.web.struts.ExpenseTransferDocumentActionBase#resetLookupFields(org.kuali.kfs.module.ld.document.web.struts.ExpenseTransferDocumentFormBase, 058 * org.kuali.kfs.module.ld.businessobject.LedgerBalance) 059 */ 060 @Override 061 protected void resetLookupFields(ExpenseTransferDocumentFormBase expenseTransferDocumentForm, LedgerBalance balance) { 062 BenefitExpenseTransferForm benefitExpenseTransferForm = (BenefitExpenseTransferForm) expenseTransferDocumentForm; 063 ObjectUtil.buildObject(benefitExpenseTransferForm, balance); 064 } 065 066 /** 067 * @param mapping ActionMapping 068 * @param form ActionForm 069 * @param request HttpServletRequest 070 * @param response HttpServletResponse 071 * @see org.kuali.rice.kns.web.struts.action.KualiAction#performLookup(org.apache.struts.action.ActionMapping, 072 * org.apache.struts.action.ActionForm, javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse) 073 */ 074 @Override 075 public ActionForward performLookup(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { 076 // parse out the business object name from our methodToCall parameter 077 String fullParameter = (String) request.getAttribute(KFSConstants.METHOD_TO_CALL_ATTRIBUTE); 078 String boClassName = StringUtils.substringBetween(fullParameter, KFSConstants.METHOD_TO_CALL_BOPARM_LEFT_DEL, KFSConstants.METHOD_TO_CALL_BOPARM_RIGHT_DEL); 079 080 if (!StringUtils.equals(boClassName, LaborLedgerPendingEntry.class.getName())) { 081 return super.performLookup(mapping, form, request, response); 082 } 083 084 String path = super.performLookup(mapping, form, request, response).getPath(); 085 path = path.replaceFirst(KFSConstants.LOOKUP_ACTION, LaborConstants.LONG_ROW_TABLE_INRUIRY_ACTION); 086 return new ActionForward(path, true); 087 } 088 089 /** 090 * Delete all source accounting lines 091 * 092 * @param mapping 093 * @param form 094 * @param request 095 * @param response 096 * @return ActionMapping 097 * @throws Exception 098 */ 099 @Override 100 public ActionForward deleteAllSourceAccountingLines(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { 101 BenefitExpenseTransferForm financialDocumentForm = (BenefitExpenseTransferForm) form; 102 financialDocumentForm.getBenefitExpenseTransferDocument().setNextSourceLineNumber(KFSConstants.ONE.intValue()); 103 104 return super.deleteAllSourceAccountingLines(mapping, form, request, response); 105 } 106 107 /** 108 * Delete all target accounting lines 109 * 110 * @param mapping 111 * @param form 112 * @param request 113 * @param response 114 * @return ActionMapping 115 * @throws Exception 116 */ 117 @Override 118 public ActionForward deleteAllTargetAccountingLines(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { 119 BenefitExpenseTransferForm financialDocumentForm = (BenefitExpenseTransferForm) form; 120 financialDocumentForm.getBenefitExpenseTransferDocument().setNextTargetLineNumber(KFSConstants.ONE.intValue()); 121 122 return super.deleteAllTargetAccountingLines(mapping, form, request, response); 123 } 124 125 /** 126 * @see org.kuali.kfs.module.ld.document.web.struts.ExpenseTransferDocumentActionBase#buildAccountingLineFromLedgerBalance(org.kuali.kfs.module.ld.businessobject.LedgerBalance, org.kuali.kfs.module.ld.businessobject.ExpenseTransferAccountingLine, org.kuali.rice.kns.util.KualiDecimal, java.lang.String) 127 */ 128 @Override 129 protected void buildAccountingLineFromLedgerBalance(LedgerBalance ledgerBalance, ExpenseTransferAccountingLine line, KualiDecimal amount, String periodCode) { 130 super.buildAccountingLineFromLedgerBalance(ledgerBalance, line, amount, periodCode); 131 line.setEmplid(LaborConstants.getDashEmplId()); 132 line.setPositionNumber(LaborConstants.getDashPositionNumber()); 133 134 } 135 }