/* * 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; import java.util.Collection; import java.util.List; import org.kuali.kfs.module.ar.businessobject.CustomerInvoiceDetail; import org.kuali.kfs.module.ar.document.CustomerInvoiceDocument; /** * This class provides services related to the customer invoice document */ public interface CustomerInvoiceDetailService { /** * This method returns a customer invoice detail for use on the CustomerInvoiceDocumentAction. If corresponding organization * accounting default exists for billing chart and org, then the customer invoice detail is defaulted using the organization * accounting default values. * * @param universityFiscalYear * @param chartOfAccountsCode * @param organizationCode * @return */ public CustomerInvoiceDetail getCustomerInvoiceDetailFromOrganizationAccountingDefault(Integer universityFiscalYear, String chartOfAccountsCode, String organizationCode); /** * This method returns a customer invoice detail for current user and current fiscal year for use on the * CustomerInvoiceDocumentAction. If corresponding organization accounting default exists for billing chart and org, then the * customer invoice detail is defaulted using the organization accounting default values. * * @return */ public CustomerInvoiceDetail getCustomerInvoiceDetailFromOrganizationAccountingDefaultForCurrentYear(); /** * This method returns customer invoice document numbers for a given account number * * @param accountNumber used for the search criteria * @return List<String> of customer invoice document numbers */ public List<String> getCustomerInvoiceDocumentNumbersByAccountNumber(String accountNumber); /** * This method returns a customer invoice detail from a customer invoice item code for a current user * * @param invoiceItemCode * @return */ public CustomerInvoiceDetail getCustomerInvoiceDetailFromCustomerInvoiceItemCodeForCurrentUser(String invoiceItemCode); /** * This method returns a new CustomerInvoiceDetail based on the given invoice item code, chart code and org code. * * @param invoiceItemCode * @param chartOfAccountsCode * @param organizationCode * @return CustomerInvoiceDetail based on the given parameters */ public CustomerInvoiceDetail getCustomerInvoiceDetailFromCustomerInvoiceItemCode(String invoiceItemCode, String chartOfAccountsCode, String organizationCode); /** * This method returns a discount customer invoice detail based on a customer invoice detail, the chart of accounts code * * @param customerInvoiceDetail * @param chartOfAccountsCode * @param organizationCode * @return */ public CustomerInvoiceDetail getDiscountCustomerInvoiceDetail(CustomerInvoiceDetail customerInvoiceDetail, Integer universityFiscalYear, String chartOfAccountsCode, String organizationCode); /** * This method returns a discount customer invoice detail for the current year * * @param customerInvoiceDetail * @param chartOfAccountsCode * @param organizationCode * @return */ public CustomerInvoiceDetail getDiscountCustomerInvoiceDetailForCurrentYear(CustomerInvoiceDetail customerInvoiceDetail, CustomerInvoiceDocument customerInvoiceDocument); /** * This method returns a customer invoice detail based on invoice document number and invoice item sequence number * * @param documentNumber * @param sequenceNumber * @return */ public CustomerInvoiceDetail getCustomerInvoiceDetail(String documentNumber, Integer sequenceNumber); /** * This method is used to recalculate a customer invoice detail based on updated values * * @param document * @param customerInvoiceDetail */ public void recalculateCustomerInvoiceDetail(CustomerInvoiceDocument document, CustomerInvoiceDetail customerInvoiceDetail); /** * This method is used to update account for corresponding discount line based on parent line's account * * @param parentDiscountCustomerInvoiceDetail */ public void updateAccountsForCorrespondingDiscount(CustomerInvoiceDetail parentDiscountCustomerInvoiceDetail); /** * This method is used to update the accounts receivable object code if receivable options 1 or 2 are selected. * * @param customerInvoiceDetail */ public void updateAccountsReceivableObjectCode(CustomerInvoiceDetail customerInvoiceDetail); /** * This method is used to make sure the amounts are calculated correctly and the correct AR object code is in place * * @param customerInvoiceDetail * @param customerInvoiceDocument */ public void prepareCustomerInvoiceDetailForAdd(CustomerInvoiceDetail customerInvoiceDetail, CustomerInvoiceDocument customerInvoiceDocument); /** * This method returns CustomerInvoiceDetails for a given CustomerInvoiceDocument. * * @param customerInvoiceDocument * @return Collection<CustomerInvoiceDetail> matching customer invoice details */ public Collection<CustomerInvoiceDetail> getCustomerInvoiceDetailsForInvoice(CustomerInvoiceDocument customerInvoiceDocument); /** * This method returns CustomerInvoiceDetails for a given customer invoice document number. * * @param customerInvoiceDocumentNumber * @return Collection<CustomerInvoiceDetail> matching customer invoice details */ public Collection<CustomerInvoiceDetail> getCustomerInvoiceDetailsForInvoice(String customerInvoiceDocumentNumber); /** * This method returns CustomerInvoiceDetails for a given customer invoice document number. * Cached for better performance... * * @param customerInvoiceDocumentNumber * @return List of customer invoice details */ public Collection<CustomerInvoiceDetail> getCustomerInvoiceDetailsForInvoiceWithCaching(String customerInvoiceDocumentNumber); }