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.ar.document;
017    
018    import java.util.ArrayList;
019    import java.util.Collection;
020    import java.util.Iterator;
021    import java.util.List;
022    
023    import org.kuali.kfs.module.ar.ArConstants;
024    import org.kuali.kfs.sys.businessobject.inquiry.KfsInquirableImpl;
025    import org.kuali.kfs.sys.context.SpringContext;
026    import org.kuali.rice.kns.bo.BusinessObject;
027    import org.kuali.rice.kns.datadictionary.InquirySectionDefinition;
028    import org.kuali.rice.kns.inquiry.InquiryRestrictions;
029    import org.kuali.rice.kns.service.BusinessObjectAuthorizationService;
030    import org.kuali.rice.kns.service.BusinessObjectDictionaryService;
031    import org.kuali.rice.kns.service.ParameterService;
032    import org.kuali.rice.kns.util.GlobalVariables;
033    import org.kuali.rice.kns.web.ui.Section;
034    import org.kuali.rice.kns.web.ui.SectionBridge;
035    
036    public class OrganizationAccountingDefaultInquirable extends KfsInquirableImpl {
037        
038        protected static org.apache.log4j.Logger LOG = org.apache.log4j.Logger.getLogger(OrganizationAccountingDefaultInquirable.class);
039        
040        /**
041         * @see org.kuali.rice.kns.inquiry.KualiInquirableImpl#getSections(org.kuali.rice.kns.bo.BusinessObject)
042         */
043        @Override
044        @SuppressWarnings("unchecked")
045        public List<Section> getSections(BusinessObject bo) {
046    
047            List<Section> sections = new ArrayList<Section>();
048            if (getBusinessObjectClass() == null) {
049                LOG.error("Business object class not set in inquirable.");
050                throw new RuntimeException("Business object class not set in inquirable.");
051            }
052            
053            InquiryRestrictions inquiryRestrictions = SpringContext.getBean(BusinessObjectAuthorizationService.class).getInquiryRestrictions(bo, GlobalVariables.getUserSession().getPerson());
054            
055            String receivableOffsetOption = SpringContext.getBean(ParameterService.class).getParameterValue(CustomerInvoiceDocument.class, ArConstants.GLPE_RECEIVABLE_OFFSET_GENERATION_METHOD);
056            boolean showReceivableInfo = ArConstants.OrganizationAccountingOptionsConstants.SHOW_EDIT_PAYMENTS_DEFAULTS_TAB.equals(receivableOffsetOption);        
057    
058            Collection inquirySections = SpringContext.getBean(BusinessObjectDictionaryService.class).getInquirySections(getBusinessObjectClass());
059            for (Iterator iter = inquirySections.iterator(); iter.hasNext();) {
060    
061                InquirySectionDefinition inquirySection = (InquirySectionDefinition) iter.next();
062                Section section = SectionBridge.toSection(this, inquirySection, bo, inquiryRestrictions);
063                
064                if (inquirySection.getTitle().equals(ArConstants.ORGANIZATION_RECEIVABLE_ACCOUNT_DEFAULTS)){
065                    if( showReceivableInfo ){
066                        sections.add(section);
067                    }
068                } else {
069                    sections.add(section);  
070                }
071            }
072    
073            return sections;
074        }    
075    
076    }