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.service.impl;
017    
018    import java.util.HashMap;
019    import java.util.Map;
020    
021    import org.kuali.kfs.module.ar.ArConstants;
022    import org.kuali.kfs.module.ar.businessobject.OrganizationAccountingDefault;
023    import org.kuali.kfs.module.ar.document.CustomerInvoiceDocument;
024    import org.kuali.kfs.sys.businessobject.ChartOrgHolder;
025    import org.kuali.kfs.sys.context.SpringContext;
026    import org.kuali.kfs.sys.service.FinancialSystemUserService;
027    import org.kuali.kfs.sys.service.UniversityDateService;
028    import org.kuali.rice.kns.service.BusinessObjectService;
029    import org.kuali.rice.kns.util.GlobalVariables;
030    import org.kuali.rice.kns.util.ObjectUtils;
031    
032    public class ReceivableAccountingLineServiceImpl implements ReceivableAccountingLineService {
033        
034        private UniversityDateService universityDateService;
035        private BusinessObjectService businessObjectService;
036    
037        /**
038         * @see org.kuali.kfs.module.ar.document.service.impl.ReceivableAccountingLineService#setReceivableAccountingLineForCustomerInvoiceDocument(org.kuali.kfs.module.ar.document.CustomerInvoiceDocument)
039         */
040        @SuppressWarnings("unchecked")
041        public void setReceivableAccountingLineForCustomerInvoiceDocument(CustomerInvoiceDocument customerInvoiceDocument) {
042    
043            Integer currentUniverisityFiscalYear = universityDateService.getCurrentFiscalYear();
044            ChartOrgHolder currentUser = SpringContext.getBean(FinancialSystemUserService.class).getPrimaryOrganization(GlobalVariables.getUserSession().getPerson(), ArConstants.AR_NAMESPACE_CODE);
045            
046            Map criteria = new HashMap();
047            criteria.put("universityFiscalYear", currentUniverisityFiscalYear);
048            criteria.put("chartOfAccountsCode", currentUser.getChartOfAccountsCode());
049            criteria.put("organizationCode", currentUser.getOrganizationCode());
050            
051            OrganizationAccountingDefault organizationAccountingDefault = (OrganizationAccountingDefault)businessObjectService.findByPrimaryKey(OrganizationAccountingDefault.class, criteria);
052            if( ObjectUtils.isNotNull( organizationAccountingDefault) ){
053                customerInvoiceDocument.setPaymentChartOfAccountsCode(organizationAccountingDefault.getDefaultPaymentChartOfAccountsCode());
054                customerInvoiceDocument.setPaymentAccountNumber(organizationAccountingDefault.getDefaultPaymentAccountNumber());
055                customerInvoiceDocument.setPaymentSubAccountNumber(organizationAccountingDefault.getDefaultPaymentSubAccountNumber());
056                customerInvoiceDocument.setPaymentFinancialObjectCode(organizationAccountingDefault.getDefaultPaymentFinancialObjectCode());
057                customerInvoiceDocument.setPaymentFinancialSubObjectCode(organizationAccountingDefault.getDefaultPaymentFinancialSubObjectCode());
058                customerInvoiceDocument.setPaymentProjectCode(organizationAccountingDefault.getDefaultPaymentProjectCode());
059                customerInvoiceDocument.setPaymentOrganizationReferenceIdentifier(organizationAccountingDefault.getDefaultPaymentOrganizationReferenceIdentifier());
060            }
061        }
062    
063        public UniversityDateService getUniversityDateService() {
064            return universityDateService;
065        }
066    
067        public void setUniversityDateService(UniversityDateService universityDateService) {
068            this.universityDateService = universityDateService;
069        }
070    
071        public BusinessObjectService getBusinessObjectService() {
072            return businessObjectService;
073        }
074    
075        public void setBusinessObjectService(BusinessObjectService businessObjectService) {
076            this.businessObjectService = businessObjectService;
077        }
078    
079    }
080