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.sys.web.struts;
017    
018    import java.util.ArrayList;
019    import java.util.List;
020    
021    import org.apache.commons.lang.StringUtils;
022    import org.kuali.kfs.sys.KFSConstants;
023    import org.kuali.kfs.sys.KFSKeyConstants;
024    import org.kuali.kfs.sys.businessobject.ElectronicPaymentClaim;
025    import org.kuali.kfs.sys.context.SpringContext;
026    import org.kuali.kfs.sys.service.ElectronicPaymentClaimingDocumentGenerationStrategy;
027    import org.kuali.kfs.sys.service.ElectronicPaymentClaimingService;
028    import org.kuali.rice.kim.bo.Person;
029    import org.kuali.rice.kns.util.GlobalVariables;
030    import org.kuali.rice.kns.web.struts.form.KualiForm;
031    
032    public class ElectronicFundTransferForm extends KualiForm {
033        private List<ElectronicPaymentClaim> claims;
034        private List<ElectronicPaymentClaimingDocumentGenerationStrategy> availableClaimingDocumentStrategies;
035        private List<ElectronicPaymentClaimClaimedHelper> claimedByCheckboxHelpers;
036        private String chosenElectronicPaymentClaimingDocumentCode;
037        private String hasDocumentation;
038        
039        /**
040         * Constructs a ElectronicFundTransferForm
041         */
042        public ElectronicFundTransferForm() {
043            claims = new ArrayList<ElectronicPaymentClaim>();
044            claimedByCheckboxHelpers = new ArrayList<ElectronicPaymentClaimClaimedHelper>();
045        }
046        
047        /**
048         * Gets the availableClaimingDocumentStrategies attribute. 
049         * @return Returns the availableClaimingDocumentStrategies.
050         */
051        public List<ElectronicPaymentClaimingDocumentGenerationStrategy> getAvailableClaimingDocumentStrategies() {
052            return availableClaimingDocumentStrategies;
053        }
054        /**
055         * Sets the availableClaimingDocumentStrategies attribute value.
056         * @param availableClaimingDocumentStrategies The availableClaimingDocumentStrategies to set.
057         */
058        public void setAvailableClaimingDocumentStrategies(List<ElectronicPaymentClaimingDocumentGenerationStrategy> availableClaimingDocuments) {
059            this.availableClaimingDocumentStrategies = availableClaimingDocuments;
060        }
061        
062        public boolean hasAvailableClaimingDocumentStrategies() {
063            return availableClaimingDocumentStrategies !=null && !availableClaimingDocumentStrategies.isEmpty();
064        }
065        /**
066         * Gets the chosenElectronicPaymentClaimingDocumentCode attribute. 
067         * @return Returns the chosenElectronicPaymentClaimingDocumentCode.
068         */
069        public String getChosenElectronicPaymentClaimingDocumentCode() {
070            return chosenElectronicPaymentClaimingDocumentCode;
071        }
072        /**
073         * Sets the chosenElectronicPaymentClaimingDocumentCode attribute value.
074         * @param chosenElectronicPaymentClaimingDocumentCode The chosenElectronicPaymentClaimingDocumentCode to set.
075         */
076        public void setChosenElectronicPaymentClaimingDocumentCode(String chosenElectronicPaymentClaimingDocumentCode) {
077            this.chosenElectronicPaymentClaimingDocumentCode = chosenElectronicPaymentClaimingDocumentCode;
078        }
079        /**
080         * Gets the claims attribute. 
081         * @return Returns the claims.
082         */
083        public List<ElectronicPaymentClaim> getClaims() {
084            return claims;
085        }
086        /**
087         * Returns the claim at the specified index in the list of claims.
088         * @param i index of the claim to return
089         * @return the claim at the index
090         */
091        public ElectronicPaymentClaim getClaim(int i) {
092            while (claims.size() <= i) {
093                claims.add(new ElectronicPaymentClaim());
094            }
095            return claims.get(i);
096        }
097        /**
098         * Puts an ElectronicPaymentClaim record in the claims array at a specified point
099         * @param claim the claim to add
100         * @param i the index in the list to add the record at
101         */
102        public void setClaim(ElectronicPaymentClaim claim, int i) {
103            while (claims.size() <= i) {
104                claims.add(new ElectronicPaymentClaim());
105            }
106            claims.add(i, claim);
107        }
108        /**
109         * Sets the claims attribute value.
110         * @param claims The claims to set.
111         */
112        public void setClaims(List<ElectronicPaymentClaim> claims) {
113            this.claims = claims;
114        }
115    
116        /**
117         * Gets the hasDocumentation attribute. 
118         * @return Returns the hasDocumentation.
119         */
120        public String getHasDocumentation() {
121            return hasDocumentation;
122        }
123    
124        /**
125         * Sets the hasDocumentation attribute value.
126         * @param hasDocumentation The hasDocumentation to set.
127         */
128        public void setHasDocumentation(String hasDocumentation) {
129            this.hasDocumentation = hasDocumentation;
130        }
131        
132        /**
133         * Returns a boolean whether the user has stated that documentation exists for the claims about to be made or not
134         * @return true if has documentation, false otherwise
135         */
136        public boolean isProperlyDocumented() {
137            return StringUtils.isNotBlank(this.hasDocumentation) && this.hasDocumentation.equals("Yep");
138        }
139        
140        /**
141         * Returns whether the current user has administrative powers for Electronic Funds Transfer or not
142         * @return true if administrative powers exist, false otherwise
143         */
144        public boolean isAllowElectronicFundsTransferAdministration() {
145            Person currentUser = GlobalVariables.getUserSession().getPerson();        
146            
147            return SpringContext.getBean(ElectronicPaymentClaimingService.class).isAuthorizedForClaimingElectronicPayment(currentUser, null);
148        }
149        
150        /**
151         * @return the key to the EFT documentation message
152         */
153        public String getDocumentationMessageKey() {
154            return KFSKeyConstants.ElectronicPaymentClaim.MESSAGE_EFT_CLAIMING_DOCUMENTATION;
155        }
156        
157        /**
158         * @return the key to the EFT document choice message
159         */
160        public String getDocumentChoiceMessageKey() {
161            return KFSKeyConstants.ElectronicPaymentClaim.MESSAGE_EFT_DOCUMENT_CHOICE;
162        }
163        
164        /**
165         * @return the key to the EFT "previously claimed" message for the table header
166         */
167        public String getPreviouslyClaimedHeaderKey() {
168            return KFSKeyConstants.ElectronicPaymentClaim.MESSAGE_EFT_PREVIOUSLY_CLAIMED_HEADER;
169        }
170        
171        /**
172         * @return the key to the EFT "claiming document number" message for the table header
173         */
174        public String getClaimingDocumentNumberHeaderKey() {
175            return KFSKeyConstants.ElectronicPaymentClaim.MESSAGE_EFT_CLAIMING_DOCUMENT_NUMBER_HEADER;
176        }
177    
178        /**
179         * Gets the claimedByCheckboxHelpers attribute. 
180         * @return Returns the claimedByCheckboxHelpers.
181         */
182        public List<ElectronicPaymentClaimClaimedHelper> getClaimedByCheckboxHelpers() {
183            return claimedByCheckboxHelpers;
184        }
185    
186        /**
187         * Sets the claimedByCheckboxHelpers attribute value.
188         * @param claimedByCheckboxHelpers The claimedByCheckboxHelpers to set.
189         */
190        public void setClaimedByCheckboxHelpers(List<ElectronicPaymentClaimClaimedHelper> claimedByCheckboxHelpers) {
191            this.claimedByCheckboxHelpers = claimedByCheckboxHelpers;
192        }
193        
194        /**
195         * Sets the claimedHelper at the given index
196         * @param claimedHelper the claimedCheckboxHelper to set
197         * @param index where in the list it belongs
198         */
199        public void setClaimedByCheckboxHelper(ElectronicPaymentClaimClaimedHelper claimedHelper, int index) {
200            while (claimedByCheckboxHelpers.size() <= index) {
201                claimedByCheckboxHelpers.add(new ElectronicPaymentClaimClaimedHelper());
202            }
203            claimedByCheckboxHelpers.set(index, claimedHelper);
204        }
205        
206        /**
207         * @param index location in the list of ElectronicPaymentClaimClaimedHelpers to return the helper at
208         * @return the ElectronicPaymentClaimClaimedHelper at the given location
209         */
210        public ElectronicPaymentClaimClaimedHelper getClaimedByCheckboxHelper(int index) {
211            while (claimedByCheckboxHelpers.size() <= index) {
212                claimedByCheckboxHelpers.add(new ElectronicPaymentClaimClaimedHelper());
213            }
214            return claimedByCheckboxHelpers.get(index);
215        }
216    }
217