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    
017    package org.kuali.kfs.module.bc.businessobject;
018    
019    import java.text.MessageFormat;
020    import java.util.List;
021    
022    import org.kuali.kfs.module.bc.document.service.SalarySettingService;
023    import org.kuali.kfs.sys.context.SpringContext;
024    import org.kuali.rice.kns.util.TypedArrayList;
025    
026    
027    public class SalarySettingExpansion extends PendingBudgetConstructionGeneralLedger implements PendingBudgetConstructionAppointmentFundingAware {
028    
029        private List<PendingBudgetConstructionAppointmentFunding> pendingBudgetConstructionAppointmentFunding;
030    
031        /**
032         * Constructs a SalarySettingExpansion.java.
033         */
034        public SalarySettingExpansion() {
035            super();
036    
037            pendingBudgetConstructionAppointmentFunding = new TypedArrayList(PendingBudgetConstructionAppointmentFunding.class);
038        }
039    
040        /**
041         * Gets the pendingBudgetConstructionAppointmentFunding attribute.
042         * 
043         * @return Returns the pendingBudgetConstructionAppointmentFunding.
044         */
045        public List<PendingBudgetConstructionAppointmentFunding> getPendingBudgetConstructionAppointmentFunding() {
046            return pendingBudgetConstructionAppointmentFunding;
047        }
048    
049        /**
050         * Sets the pendingBudgetConstructionAppointmentFunding attribute value.
051         * 
052         * @param pendingBudgetConstructionAppointmentFunding The pendingBudgetConstructionAppointmentFunding to set.
053         */
054        @Deprecated
055        public void setPendingBudgetConstructionAppointmentFunding(List<PendingBudgetConstructionAppointmentFunding> pendingBudgetConstructionAppointmentFunding) {
056            this.pendingBudgetConstructionAppointmentFunding = pendingBudgetConstructionAppointmentFunding;
057        }
058    
059        /**
060         * determine whehter the salary is paid at hourly rate
061         * 
062         * @return true if the salary is paid at hourly rate; otherwise, false
063         */
064        public boolean isHourlyPaid() {
065            Integer fiscalYear = this.getUniversityFiscalYear();
066            String chartOfAccountsCode = this.getChartOfAccountsCode();
067            String objectCode = this.getFinancialObjectCode();
068            
069            return SpringContext.getBean(SalarySettingService.class).isHourlyPaidObject(fiscalYear, chartOfAccountsCode, objectCode);
070        }
071    
072        /**
073         * build the given salary expansion key string
074         */
075        public String getSalarySettingExpansionString() {
076            String pattern = "{0};{1};{2};{3};{4}";
077    
078            return MessageFormat.format(pattern, this.getChartOfAccountsCode(), this.getAccountNumber(), this.getSubAccountNumber(), this.getFinancialObjectCode(), this.getFinancialSubObjectCode());
079        }
080    
081        /**
082         * @see org.kuali.rice.kns.bo.PersistableBusinessObjectBase#buildListOfDeletionAwareLists()
083         */
084        @Override
085        public List buildListOfDeletionAwareLists() {
086            // return super.buildListOfDeletionAwareLists();
087            List managedLists = super.buildListOfDeletionAwareLists();
088            managedLists.add(this.getPendingBudgetConstructionAppointmentFunding());
089            return managedLists;
090        }
091    }