org.kuali.kfs.module.ar.document.service.impl.CustomerServiceImpl.java Source code

Java tutorial

Introduction

Here is the source code for org.kuali.kfs.module.ar.document.service.impl.CustomerServiceImpl.java

Source

/*
 * The Kuali Financial System, a comprehensive financial management system for higher education.
 * 
 * Copyright 2005-2014 The Kuali Foundation
 * 
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU Affero General Public License as
 * published by the Free Software Foundation, either version 3 of the
 * License, or (at your option) any later version.
 * 
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU Affero General Public License for more details.
 * 
 * You should have received a copy of the GNU Affero General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
package org.kuali.kfs.module.ar.document.service.impl;

import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.apache.commons.lang.StringUtils;
import org.kuali.kfs.module.ar.businessobject.Customer;
import org.kuali.kfs.module.ar.document.CustomerInvoiceDocument;
import org.kuali.kfs.module.ar.document.service.CustomerInvoiceDocumentService;
import org.kuali.kfs.module.ar.document.service.CustomerService;
import org.kuali.kfs.sys.KFSConstants;
import org.kuali.rice.krad.bo.Note;
import org.kuali.rice.krad.service.BusinessObjectService;
import org.kuali.rice.krad.service.NoteService;
import org.kuali.rice.krad.service.SequenceAccessorService;
import org.kuali.rice.krad.util.GlobalVariables;
import org.kuali.rice.krad.util.ObjectUtils;

public class CustomerServiceImpl implements CustomerService {

    protected SequenceAccessorService sequenceAccessorService;
    protected BusinessObjectService businessObjectService;
    protected CustomerInvoiceDocumentService customerInvoiceDocumentService;
    protected NoteService noteService;
    protected static final String CUSTOMER_NUMBER_SEQUENCE = "CUST_NBR_SEQ";

    /**
     * @see org.kuali.kfs.module.ar.document.service.CustomerService#getByPrimaryKey(java.lang.String)
     */
    @Override
    public Customer getByPrimaryKey(String customerNumber) {
        return businessObjectService.findBySinglePrimaryKey(Customer.class, customerNumber);
    }

    @Override
    public Customer getByTaxNumber(String taxNumber) {
        Map<String, Object> fieldValues = new HashMap<String, Object>();
        fieldValues.put("customerTaxNbr", taxNumber);

        Collection<Customer> customers = getBusinessObjectService().findMatching(Customer.class, fieldValues);
        Customer customer = null;
        for (Customer c : customers) {
            customer = c;
        }

        return customer;
    }

    /**
     * @see org.kuali.kfs.module.ar.document.service.CustomerService#getNextCustomerNumber(org.kuali.kfs.module.ar.businessobject.Customer)
     */
    @Override
    public String getNextCustomerNumber(Customer newCustomer) {
        try {
            Long customerNumberSuffix = sequenceAccessorService
                    .getNextAvailableSequenceNumber(CUSTOMER_NUMBER_SEQUENCE, Customer.class);
            String customerNumberPrefix = newCustomer.getCustomerName().substring(0, 3);
            String customerNumber = customerNumberPrefix + String.valueOf(customerNumberSuffix);

            return customerNumber;
        } catch (StringIndexOutOfBoundsException sibe) {
            // The customer number generation expects all customer names to be at least three characters long.
            throw new StringIndexOutOfBoundsException("Customer name is less than three characters in length.");
        }
    }

    /**
     * This method gets the sequenceAccessorService
     *
     * @return the sequenceAccessorService
     */
    public SequenceAccessorService getSequenceAccessorService() {
        return sequenceAccessorService;
    }

    /**
     * This method sets the sequenceAccessorService
     *
     * @param sequenceAccessorService
     */
    public void setSequenceAccessorService(SequenceAccessorService sequenceAccessorService) {
        this.sequenceAccessorService = sequenceAccessorService;
    }

    /**
     * @see org.kuali.kfs.module.ar.document.service.CustomerService#getCustomerByName(java.lang.String)
     */
    @Override
    public Customer getCustomerByName(String customerName) {
        Map<String, Object> fieldValues = new HashMap<String, Object>();
        fieldValues.put("customerName", customerName);

        Collection<Customer> customers = getBusinessObjectService().findMatching(Customer.class, fieldValues);
        Customer customer = null;
        for (Customer c : customers) {
            customer = c;
        }

        return customer;
    }

    public BusinessObjectService getBusinessObjectService() {
        return businessObjectService;
    }

    public void setBusinessObjectService(BusinessObjectService businessObjectService) {
        this.businessObjectService = businessObjectService;
    }

    public CustomerInvoiceDocumentService getCustomerInvoiceDocumentService() {
        return customerInvoiceDocumentService;
    }

    public void setCustomerInvoiceDocumentService(CustomerInvoiceDocumentService customerInvoiceDocumentService) {
        this.customerInvoiceDocumentService = customerInvoiceDocumentService;
    }

    @Override
    public Collection<CustomerInvoiceDocument> getInvoicesForCustomer(Customer customer) {
        Collection<CustomerInvoiceDocument> invoices = null;
        if (null != customer) {
            invoices = getInvoicesForCustomer(customer.getCustomerNumber());
        }
        return invoices;
    }

    @Override
    public Collection<CustomerInvoiceDocument> getInvoicesForCustomer(String customerNumber) {
        return customerInvoiceDocumentService.getCustomerInvoiceDocumentsByCustomerNumber(customerNumber);
    }

    @Override
    public void createCustomerNote(String customerNumber, String customerNote) {
        Customer customer = getByPrimaryKey(customerNumber);
        if (StringUtils.isNotBlank(customerNote)) {
            Note newBONote = new Note();
            newBONote.setNoteText(customerNote);
            newBONote.setNotePostedTimestampToCurrent();
            newBONote.setNoteTypeCode(KFSConstants.NoteTypeEnum.BUSINESS_OBJECT_NOTE_TYPE.getCode());
            Note note = noteService.createNote(newBONote, customer,
                    GlobalVariables.getUserSession().getPrincipalId());
            noteService.save(note);
        }
    }

    @Override
    public List<Note> getCustomerNotes(String customerNumber) {
        Customer customer = getByPrimaryKey(customerNumber);
        List<Note> notes = new ArrayList<Note>();
        if (ObjectUtils.isNotNull(customer)) {
            notes = noteService.getByRemoteObjectId(customer.getObjectId());
        }
        return notes;
    }

    public NoteService getNoteService() {
        return noteService;
    }

    public void setNoteService(NoteService noteService) {
        this.noteService = noteService;
    }

}