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 org.kuali.kfs.module.ld.document.BenefitExpenseTransferDocument;
022    import org.kuali.kfs.sys.KFSPropertyConstants;
023    import org.kuali.kfs.sys.KFSConstants;
024    import org.kuali.kfs.sys.businessobject.SourceAccountingLine;
025    
026    /**
027     * Struts Action Form for the Benefit Expense Transfer Document.
028     */
029    public class BenefitExpenseTransferForm extends ExpenseTransferDocumentFormBase {
030    
031        protected String chartOfAccountsCode;
032        protected String accountNumber;
033        protected String subAccountNumber;
034    
035        /**
036         * Constructs a BenefitExpenseTransferForm instance and sets up the appropriately casted document.
037         */
038        public BenefitExpenseTransferForm() {
039            super();
040        }
041    
042        @Override
043        protected String getDefaultDocumentTypeName() {
044            return "BT";
045        }
046        
047        /**
048         * Gets the BenefitExpenseTransferDocument attribute.
049         * 
050         * @return Returns the BenefitExpenseTransferDocument
051         */
052        public BenefitExpenseTransferDocument getBenefitExpenseTransferDocument() {
053            return (BenefitExpenseTransferDocument) getDocument();
054        }
055    
056        /**
057         * Gets the accountNumber attribute.
058         * 
059         * @return Returns the accountNumber.
060         */
061        public String getAccountNumber() {
062            return accountNumber;
063        }
064    
065        /**
066         * Sets the accountNumber attribute value.
067         * 
068         * @param accountNumber The accountNumber to set.
069         */
070        public void setAccountNumber(String accountNumber) {
071            this.accountNumber = accountNumber;
072        }
073    
074        /**
075         * Gets the subAccountNumber attribute.
076         * 
077         * @return Return the subAccountNumber.
078         */
079        public String getSubAccountNumber() {
080            return subAccountNumber;
081        }
082    
083        /**
084         * Sets the subAccountNumber attribute value.
085         * 
086         * @param subAccountNumber The subAccountNumber to set.
087         */
088        public void setSubAccountNumber(String subAccountNumber) {
089            this.subAccountNumber = subAccountNumber;
090        }
091    
092        /**
093         * Gets the chartOfAccountsCode attribute.
094         * 
095         * @return Return the chartOfAccountsCode.
096         */
097        public String getChartOfAccountsCode() {
098            return chartOfAccountsCode;
099        }
100    
101        /**
102         * Sets the chartOfAccountsCode attribute value.
103         * 
104         * @param chartOfAccountsCode The chartOfAccountsCode to set.
105         */
106        public void setChartOfAccountsCode(String chartOfAccountsCode) {
107            this.chartOfAccountsCode = chartOfAccountsCode;
108        }
109    
110        /**
111         * Returns forced read only target fields (i.e only source target fields without chart of accounts code, 
112         * account number, sub-account number, financial sub object code, project code, organization reference id, and amount)
113         * 
114         * @see org.kuali.kfs.module.ld.document.web.struts.ExpenseTransferDocumentFormBase#getForcedReadOnlyTargetFields()
115         */
116        @Override
117        public Map getForcedReadOnlyTargetFields() {
118            Map map = this.getForcedReadOnlySourceFields();
119            map.remove(KFSPropertyConstants.CHART_OF_ACCOUNTS_CODE);
120            map.remove(KFSPropertyConstants.ACCOUNT_NUMBER);
121            map.remove(KFSPropertyConstants.SUB_ACCOUNT_NUMBER);
122            map.remove(KFSPropertyConstants.FINANCIAL_SUB_OBJECT_CODE);
123            map.remove(KFSPropertyConstants.PROJECT_CODE);
124            map.remove(KFSPropertyConstants.ORGANIZATION_REFERENCE_ID);
125            map.remove(KFSPropertyConstants.AMOUNT);
126    
127            return map;
128        }
129    
130        /**
131         * Sets university fiscal year, chart of accounts code, account number, sub-account number from first source accounting line
132         * 
133         * @see org.kuali.kfs.module.ld.document.web.struts.ExpenseTransferDocumentFormBase#populateSearchFields()
134         */
135        @Override
136        public void populateSearchFields() {
137            List<SourceAccountingLine> sourceAccoutingLines = this.getBenefitExpenseTransferDocument().getSourceAccountingLines();
138            if (sourceAccoutingLines != null && !sourceAccoutingLines.isEmpty()) {
139                SourceAccountingLine sourceAccountingLine = sourceAccoutingLines.get(0);
140                this.setUniversityFiscalYear(sourceAccountingLine.getPostingYear());
141                this.setChartOfAccountsCode(sourceAccountingLine.getChartOfAccountsCode());
142                this.setAccountNumber(sourceAccountingLine.getAccountNumber());
143                this.setSubAccountNumber(sourceAccountingLine.getSubAccountNumber());
144                if (sourceAccountingLine.getSubAccountNumber() == null) {
145                    this.setSubAccountNumber(KFSConstants.getDashSubAccountNumber());
146                }
147            }
148        }
149    }