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.List;
019    import java.util.Map;
020    
021    import javax.servlet.http.HttpServletRequest;
022    
023    import org.apache.commons.logging.Log;
024    import org.apache.commons.logging.LogFactory;
025    import org.kuali.kfs.module.ld.LaborConstants;
026    import org.kuali.kfs.module.ld.businessobject.ExpenseTransferAccountingLine;
027    import org.kuali.kfs.module.ld.businessobject.LedgerBalance;
028    import org.kuali.kfs.module.ld.document.SalaryExpenseTransferDocument;
029    import org.kuali.kfs.sys.KFSConstants;
030    import org.kuali.kfs.sys.KFSPropertyConstants;
031    import org.kuali.kfs.sys.context.SpringContext;
032    import org.kuali.rice.kim.bo.Person;
033    import org.kuali.rice.kim.service.KIMServiceLocator;
034    import org.kuali.rice.kim.service.PersonService;
035    import org.kuali.rice.kns.service.ParameterService;
036    import org.kuali.rice.kns.util.GlobalVariables;
037    import org.kuali.rice.kns.web.format.CurrencyFormatter;
038    
039    /**
040     * Struts Action Form for the Salary Expense Transfer document. This method extends the parent ExpenseTransferDocumentFormBase class
041     * which contains all of the common form methods and form attributes needed by the Salary Expense Transfer document. It adds a new
042     * method which is a convenience method for getting at the Salary Expense Transfer document easier.
043     */
044    public class SalaryExpenseTransferForm extends ExpenseTransferDocumentFormBase {
045        protected static Log LOG = LogFactory.getLog(SalaryExpenseTransferForm.class);
046    
047        protected String balanceTypeCode;
048    
049        /**
050         * Constructs a SalaryExpenseTransferForm instance and sets up the appropriately casted document.
051         */
052        public SalaryExpenseTransferForm() {
053            super();
054    
055            setFinancialBalanceTypeCode(KFSConstants.BALANCE_TYPE_ACTUAL);
056            setLookupResultsBOClassName(LedgerBalance.class.getName());
057            setFormatterType(KFSPropertyConstants.DOCUMENT + "." + KFSPropertyConstants.APPROVAL_OBJECT_CODE_BALANCES, CurrencyFormatter.class);
058        }
059    
060        @Override
061        protected String getDefaultDocumentTypeName() {
062            return "ST";
063        }
064        
065        /**
066         * Gets the balanceTypeCode attribute.
067         * 
068         * @return Returns the balanceTypeCode.
069         */
070        public String getFinancialBalanceTypeCode() {
071            return balanceTypeCode;
072        }
073    
074        /**
075         * Sets the balanceTypeCode attribute value.
076         * 
077         * @param balanceTypeCode The balanceTypeCode to set.
078         */
079        public void setFinancialBalanceTypeCode(String balanceTypeCode) {
080            this.balanceTypeCode = balanceTypeCode;
081        }
082    
083        /**
084         * @see org.kuali.rice.kns.web.struts.pojo.PojoForm#populate(javax.servlet.http.HttpServletRequest)
085         */
086        @Override
087        public void populate(HttpServletRequest request) {
088            super.populate(request);
089        }
090    
091        /**
092         * This method returns a reference to the Salary Expense Transfer Document
093         * 
094         * @return Returns the SalaryExpenseTransferDocument.
095         */
096        public SalaryExpenseTransferDocument getSalaryExpenseTransferDocument() {
097            return (SalaryExpenseTransferDocument) getDocument();
098        }
099    
100        /**
101         * Removes fields from map if users is allowed to edit.
102         * 
103         * @see org.kuali.kfs.module.ld.document.web.struts.ExpenseTransferDocumentFormBase#getForcedReadOnlyTargetFields()
104         */
105        @Override
106        public Map getForcedReadOnlyTargetFields() {
107            Map map = this.getForcedReadOnlySourceFields();
108            map.remove(KFSPropertyConstants.CHART_OF_ACCOUNTS_CODE);
109            map.remove(KFSPropertyConstants.ACCOUNT_NUMBER);
110            map.remove(KFSPropertyConstants.SUB_ACCOUNT_NUMBER);
111            map.remove(KFSPropertyConstants.FINANCIAL_SUB_OBJECT_CODE);
112            map.remove(KFSPropertyConstants.PROJECT_CODE);
113            map.remove(KFSPropertyConstants.ORGANIZATION_REFERENCE_ID);
114            map.remove(KFSPropertyConstants.AMOUNT);
115    
116            return map;
117        }
118    
119        /**
120         * Populate serach fields (i.e. universal fiscal year and employee ID)
121         * 
122         * @see org.kuali.kfs.module.ld.document.web.struts.ExpenseTransferDocumentFormBase#populateSearchFields()
123         */
124        @Override
125        public void populateSearchFields() {
126            List<ExpenseTransferAccountingLine> sourceAccoutingLines = this.getSalaryExpenseTransferDocument().getSourceAccountingLines();
127            if (sourceAccoutingLines != null && !sourceAccoutingLines.isEmpty()) {
128                ExpenseTransferAccountingLine sourceAccountingLine = sourceAccoutingLines.get(0);
129                this.setUniversityFiscalYear(sourceAccountingLine.getPostingYear());
130            }
131        }
132    }
133